package com.ydtech.modules.admin.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.core.page.HttpResult; import com.ydtech.exception.SystemException; import com.ydtech.modules.admin.dao.*; import com.ydtech.modules.admin.model.*; import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalAddDto; import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalDto; import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalEditDto; import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalPageDto; import com.ydtech.modules.admin.model.vo.AgencyExtractFee; import com.ydtech.modules.admin.model.vo.SysAgencyFeeApprovalRecordVo; import com.ydtech.modules.admin.service.SysAgencyFeeApprovalService; import com.ydtech.modules.admin.service.SysAgencyLeaderService; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.order.entity.BasePageResult; import com.ydtech.utils.StringUtils; import com.ydtech.utils.idgen.IdGenerate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; /** * 机构保费抽成审批表(SysAgencyFeeApproval)表服务实现类 * * @author makejava * @since 2024-07-25 11:33:55 */ @Service("sysAgencyFeeApprovalService") public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl implements SysAgencyFeeApprovalService { @Resource private SysAgencyFeeApprovalMapper sysAgencyFeeApprovalMapper; @Resource private SysAgencyFeeApprovalRecordMapper sysAgencyFeeApprovalRecordMapper; @Resource private SysAgencyLeaderService sysAgencyLeaderService; @Resource private SysDeptMapper sysDeptMapper; @Resource private SysPartnerAccountMapper sysPartnerAccountMapper; @Resource private SysUserMapper sysUserMapper; @Override @Transactional(rollbackFor = Exception.class) public HttpResult insert(SysAgencyFeeApprovalAddDto sysAgencyFeeApprovalAddDto) { BigDecimal actualFee = sysAgencyFeeApprovalAddDto.getActualFee(); if (actualFee == null || actualFee.equals(new BigDecimal("0.00"))) { throw new SystemException("请输入提现金额"); } //当前登录用户 SysUser user = BaseController.getUser(); //查询当前用户可提现金额 //AgencyExtractFee agencyExtractFee = sysAgencyLeaderService.queryExtractFee(user.getId()); SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartnerAccount::getUserId,user.getId())); BigDecimal cashFee = sysPartnerAccount.getCashFee(); int compare = cashFee.compareTo(actualFee); if (compare < 0) { throw new SystemException("提现金额不能超过可提现金额"); } SysAgencyFeeApproval sysAgencyFeeApproval = BeanUtil.copyProperties(sysAgencyFeeApprovalAddDto, SysAgencyFeeApproval.class); sysAgencyFeeApproval.setUserId(user.getId()); sysAgencyFeeApproval.setUserName(user.getName()); sysAgencyFeeApproval.setDeptId(user.getDeptId()); SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper().eq(SysDept::getId, user.getDeptId()).eq(SysDept::getDelFlag, 0)); if (sysDept != null) { sysAgencyFeeApproval.setDeptName(sysDept.getName()); } sysAgencyFeeApproval.setNumber(IdGenerate.nextId()); //总保费 sysAgencyFeeApproval.setSumpremium(sysPartnerAccount.getSumPremium()); //总保费抽成费用 sysAgencyFeeApproval.setExtractFee(sysPartnerAccount.getExtractFee()); //已提现抽成费用 // sysAgencyFeeApproval.setHistoryFee(null); //可提现抽成费用 sysAgencyFeeApproval.setCashFee(actualFee); // sysAgencyFeeApproval.setStartTime(agencyExtractFee.getStartTime()); // sysAgencyFeeApproval.setProportional(agencyExtractFee.getProportional()); sysAgencyFeeApproval.setCreateBy(user.getName()); sysAgencyFeeApproval.setCreateTime(new Date()); sysAgencyFeeApproval.setStatus("0"); //提交审核信息 this.save(sysAgencyFeeApproval); sysPartnerAccount.setCashFee(sysPartnerAccount.getCashFee().subtract(actualFee)); BigDecimal historyFee = sysPartnerAccount.getHistoryFee(); if (historyFee == null) { sysPartnerAccount.setHistoryFee(actualFee); }else { sysPartnerAccount.setHistoryFee(sysPartnerAccount.getHistoryFee().add(actualFee)); } sysPartnerAccountMapper.updateById(sysPartnerAccount); //保存添加记录 SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord = BeanUtil.copyProperties(sysAgencyFeeApproval, SysAgencyFeeApprovalRecord.class); sysAgencyFeeApprovalRecord.setApprovalId(sysAgencyFeeApproval.getId()); sysAgencyFeeApprovalRecord.setId(null); boolean i = sysAgencyFeeApprovalRecordMapper.insert(sysAgencyFeeApprovalRecord)>0; if (i) { return HttpResult.ok("提现申请提交成功"); } return HttpResult.error("提现申请提交失败"); } @Override @Transactional(rollbackFor = Exception.class) public HttpResult edit(SysAgencyFeeApprovalEditDto sysAgencyFeeApprovalEditDto) { SysAgencyFeeApproval sysAgencyFeeApproval1 = sysAgencyFeeApprovalMapper.queryById(sysAgencyFeeApprovalEditDto.getId()); if (sysAgencyFeeApproval1.getStatus().equals("1") && sysAgencyFeeApproval1.getStatus().equals("2")) { throw new SystemException("已审批,不允许重复操作"); } SysAgencyFeeApproval sysAgencyFeeApproval =BeanUtil.copyProperties(sysAgencyFeeApproval1,SysAgencyFeeApproval.class); String status = sysAgencyFeeApprovalEditDto.getStatus(); if (StringUtils.isNotEmpty(status) && status.equals("1")) { //审批通过 sysAgencyFeeApproval.setHistoryFee(sysAgencyFeeApproval.getCashFee()); sysAgencyFeeApproval.setPicture(sysAgencyFeeApprovalEditDto.getPicture()); }else { SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartnerAccount::getUserId,sysAgencyFeeApproval1.getUserId())); sysPartnerAccount.setCashFee(sysPartnerAccount.getCashFee().add(sysAgencyFeeApproval1.getCashFee())); sysPartnerAccount.setHistoryFee(sysPartnerAccount.getHistoryFee().subtract(sysAgencyFeeApproval1.getCashFee())); sysPartnerAccountMapper.updateById(sysPartnerAccount); } sysAgencyFeeApproval.setId(sysAgencyFeeApprovalEditDto.getId()); sysAgencyFeeApproval.setAuditTime(new Date()); sysAgencyFeeApproval.setRemark(sysAgencyFeeApprovalEditDto.getRemark()); sysAgencyFeeApproval.setStatus(status); sysAgencyFeeApproval.setAuditUser(BaseController.getUser().getName()); //保存审批信息 sysAgencyFeeApprovalMapper.updateById(sysAgencyFeeApproval); //保存审批记录 SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord = BeanUtil.copyProperties(sysAgencyFeeApproval, SysAgencyFeeApprovalRecord.class); sysAgencyFeeApprovalRecord.setApprovalId(sysAgencyFeeApproval.getId()); sysAgencyFeeApprovalRecord.setId(null); sysAgencyFeeApprovalRecord.setCreateTime(new Date()); sysAgencyFeeApprovalRecord.setCreateBy(BaseController.getUser().getName()); boolean i = sysAgencyFeeApprovalRecordMapper.insert(sysAgencyFeeApprovalRecord)>0; if (i) { return HttpResult.ok("审核成功"); } return HttpResult.error("审核失败"); } @Override public BasePageResult queryPage(SysAgencyFeeApprovalPageDto sysAgencyFeeApprovalPageDto) { Page page = new Page<>(sysAgencyFeeApprovalPageDto.getPageNum(), sysAgencyFeeApprovalPageDto.getPageSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(!StringUtils.isNullOrEmpty(sysAgencyFeeApprovalPageDto.getStatus()),SysAgencyFeeApproval::getStatus,sysAgencyFeeApprovalPageDto.getStatus()); wrapper.eq(!StringUtils.isNullOrEmpty(sysAgencyFeeApprovalPageDto.getUserId()),SysAgencyFeeApproval::getUserId,sysAgencyFeeApprovalPageDto.getUserId()); wrapper.orderByDesc(SysAgencyFeeApproval::getId); Page insOrdersPage = page(page, wrapper); return new BasePageResult<>(sysAgencyFeeApprovalPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(), insOrdersPage.getRecords()); } @Override public List queryOperate(Integer id) { return sysAgencyFeeApprovalRecordMapper.selectList(new LambdaQueryWrapper() .eq(SysAgencyFeeApprovalRecord::getApprovalId, id).orderByDesc(SysAgencyFeeApprovalRecord::getId)); } @Override public List queryOperateInfo(SysAgencyFeeApprovalDto sysAgencyFeeApprovalDto) { List feeApprovalList = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper() .eq(SysAgencyFeeApproval::getUserId, BaseController.getUserId()) .ge(StringUtils.isNotEmpty(sysAgencyFeeApprovalDto.getBeginTime()), SysAgencyFeeApproval::getAuditTime,sysAgencyFeeApprovalDto.getBeginTime()) .le(StringUtils.isNotEmpty(sysAgencyFeeApprovalDto.getEndTime()),SysAgencyFeeApproval::getAuditTime,sysAgencyFeeApprovalDto.getEndTime()) .orderByDesc(SysAgencyFeeApproval::getId)); return feeApprovalList; } @Override public SysAgencyFeeApprovalRecordVo operateInfo(Integer id) { SysAgencyFeeApproval sysAgencyFeeApproval = sysAgencyFeeApprovalMapper.selectOne(new LambdaQueryWrapper().eq(SysAgencyFeeApproval::getId, id)); SysAgencyFeeApprovalRecordVo sysAgencyFeeApprovalRecordVo = new SysAgencyFeeApprovalRecordVo(); sysAgencyFeeApprovalRecordVo.setId(sysAgencyFeeApproval.getId()); sysAgencyFeeApprovalRecordVo.setCashFee(sysAgencyFeeApproval.getCashFee()); sysAgencyFeeApprovalRecordVo.setCreateTime(sysAgencyFeeApproval.getCreateTime()); sysAgencyFeeApprovalRecordVo.setNumber(sysAgencyFeeApproval.getNumber()); sysAgencyFeeApprovalRecordVo.setRemark(sysAgencyFeeApproval.getRemark()); sysAgencyFeeApprovalRecordVo.setBankAccount(sysAgencyFeeApproval.getBankAccount()); sysAgencyFeeApprovalRecordVo.setBankNumber(sysAgencyFeeApproval.getBankNumber()); List sysAgencyFeeApprovalRecords = sysAgencyFeeApprovalRecordMapper.selectList(new LambdaQueryWrapper() .eq(SysAgencyFeeApprovalRecord::getApprovalId, id).orderByAsc(SysAgencyFeeApprovalRecord::getId)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List list = new ArrayList<>(); if (sysAgencyFeeApprovalRecords.size()>0) { for (SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord : sysAgencyFeeApprovalRecords) { StatusInfo statusInfo = new StatusInfo(); String format; Date auditTime = sysAgencyFeeApprovalRecord.getAuditTime(); if (auditTime != null) { format = sdf.format(auditTime); }else { Date createTime = sysAgencyFeeApprovalRecord.getCreateTime(); format = sdf.format(createTime); } statusInfo.setProcessingStatusName(sysAgencyFeeApprovalRecord.getStatus()); statusInfo.setProcessingDate(format); list.add(statusInfo); if (sysAgencyFeeApprovalRecord.getStatus().equals("1")) { sysAgencyFeeApprovalRecordVo.setAuditTime(sysAgencyFeeApprovalRecord.getAuditTime()); } } } sysAgencyFeeApprovalRecordVo.setStatusList(list); return sysAgencyFeeApprovalRecordVo; } }