From 0a492b64ca1a4e40cc9ea56eddd1afe2c09a12b3 Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期四, 05 六月 2025 16:27:11 +0800 Subject: [PATCH] 财务管理 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AppUserServiceImpl.java | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 110 insertions(+), 4 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AppUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AppUserServiceImpl.java index 49bf2ad..e1f73aa 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AppUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AppUserServiceImpl.java @@ -4,28 +4,134 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.system.domain.Agreement; -import com.ruoyi.system.domain.User; -import com.ruoyi.system.mapper.AgreementMapper; -import com.ruoyi.system.mapper.AppUserMapper; +import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.system.domain.*; +import com.ruoyi.system.mapper.*; import com.ruoyi.system.pojo.dto.AddAgreementDTO; import com.ruoyi.system.pojo.dto.AppUserPageDTO; +import com.ruoyi.system.pojo.dto.UpdateBalanceDTO; +import com.ruoyi.system.pojo.model.BuyerInfoAndOrder; import com.ruoyi.system.pojo.vo.AppUserPageVO; +import com.ruoyi.system.pojo.vo.AppUserVO; +import com.ruoyi.system.pojo.vo.InviteUser; import com.ruoyi.system.pojo.vo.SysDeptPageVO; import com.ruoyi.system.service.AgreementService; import com.ruoyi.system.service.AppUserService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.Duration; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.List; +import java.util.stream.Collectors; + +import static com.ruoyi.common.utils.SecurityUtils.getLoginUser; @Service public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, User> implements AppUserService { + @Resource + private OrderMapper orderMapper; + + @Resource + private CompanyMapper companyMapper; + + @Resource + private AccountDetailMapper accountDetailMapper; @Override public IPage<AppUserPageVO> getAppUserPage(AppUserPageDTO dto) { IPage<SysDeptPageVO> iPage = new Page<>(dto.getPageNum(), dto.getPageSize()); return this.baseMapper.getAppUserPage(iPage,dto); } + + @Override + public AppUserVO detail(String id) { + //1.基础信息 + AppUserVO vo=this.baseMapper.getDetailInfoById(id); + //2.计算待入账金额 + BigDecimal recorded=new BigDecimal("0.00"); + //2.1查询待处理中的订单 + List<BuyerInfoAndOrder> orders=companyMapper.getProcessingOrdersByUserId(id); + + //2.2计算订单金额 扣减超时订单金额 + for(BuyerInfoAndOrder order :orders) { + BigDecimal total = new BigDecimal("0.00"); + total = total.add(order.getPrice()).subtract(order.getCommissionPrice()).subtract(order.getCommissionPlatform()); + System.out.println(total); + //扣减超时订单 + //到期时间 支付时间 + 预计时间 + 新增时间 + LocalDateTime end = order.getPayTime().plusDays(order.getEstimatedDays()).plusDays(order.getAddDay()); + LocalDateTime now = LocalDateTime.now();//计算扣费时间 + if (!now.isAfter(end)) { + recorded = recorded.add(total); + break; + } + // 计算两个时间点的差值(精确到秒) + long seconds = ChronoUnit.SECONDS.between(end, now); + // 向上取整:超过时间不满24小时按一天计算 + long days= (seconds + 86399) / 86400;//24小时 + //计算天数差 + BigDecimal dailyAmount = new BigDecimal("100.00"); + total = total.subtract((dailyAmount.multiply(BigDecimal.valueOf(days)))); + recorded = recorded.add(total); + } + + //2.3查询待处理中的分佣订单 + BigDecimal commissionPrice = orderMapper.getProcessingCommissionPriceByShareUserId(id); + //2.4累计 + recorded = recorded.add(commissionPrice); + vo.setRecorded(recorded); + //3.下级用户 + List<InviteUser> list = this.baseMapper.getInviteUserListByInviteId(id); + vo.setInviteUserList(list); + return vo; + } + + @Override + public void frozen(String id) { + //查看用户是否存在 + User user = this.baseMapper.selectById(id); + if (null == user|| user.getIsDelete() != 0|| user.getStatus() == 3) { + throw new ServiceException("用户不存在"); + } + user.setStatus(user.getStatus()==1?2:1); + user.setUpdateTime(LocalDateTime.now()); + LoginUser loginUser = getLoginUser(); + user.setUpdateBy(loginUser.getUserId()); + this.baseMapper.updateById(user); + + } + + @Transactional + @Override + public void balance(UpdateBalanceDTO dto) { + User user = this.baseMapper.selectById(dto.getId()); + if (null == user|| user.getIsDelete() != 0|| user.getStatus() == 3) { + throw new ServiceException("用户不存在"); + } + //添加明细表 + AccountDetail accountDetail = new AccountDetail(); + accountDetail.setUserId(dto.getId()); + accountDetail.setType(dto.getType()); + accountDetail.setMoney(dto.getMoney()); + accountDetail.setRemark(dto.getRemark()); + accountDetailMapper.insert(accountDetail); + //修改用户余额 + if (dto.getType()==1){ + //加余额 + user.setBalance(user.getBalance().add(accountDetail.getMoney())); + }else { + //减余额 + user.setBalance(user.getBalance().subtract(accountDetail.getMoney())); + } + user.setUpdateTime(LocalDateTime.now()); + user.setUpdateBy(getLoginUser().getUserId()); + this.baseMapper.updateById(user); + } } -- Gitblit v1.7.1