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.aop.exception.DescribeException; import com.ydtech.core.page.HttpResult; import com.ydtech.exception.SystemException; import com.ydtech.modules.admin.dao.SysAgencyFeeApprovalMapper; import com.ydtech.modules.admin.dao.SysAgencyFeeApprovalRecordMapper; import com.ydtech.modules.admin.dao.SysDeptMapper; import com.ydtech.modules.admin.model.SysAgencyFeeApproval; import com.ydtech.modules.admin.model.SysAgencyFeeApprovalRecord; import com.ydtech.modules.admin.model.SysDept; import com.ydtech.modules.admin.model.SysUser; 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.service.SysAgencyFeeApprovalService; import com.ydtech.modules.admin.service.SysAgencyLeaderService; import com.ydtech.modules.admin.service.SysDeptService; import com.ydtech.modules.admin.service.SysUserService; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.order.entity.BasePageResult; import com.ydtech.modules.order.entity.InsOrders; 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.util.Date; import java.util.List; /** * 机构保费抽成审批表(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; @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()); BigDecimal cashFee = agencyExtractFee.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(agencyExtractFee.getSumpremium()); //总保费抽成费用 sysAgencyFeeApproval.setExtractFee(agencyExtractFee.getExtractFee()); //已提现抽成费用 sysAgencyFeeApproval.setHistoryFee(agencyExtractFee.getHistoryFee()); //可提现抽成费用 sysAgencyFeeApproval.setCashFee(actualFee); sysAgencyFeeApproval.setStartTime(agencyExtractFee.getStartTime()); sysAgencyFeeApproval.setProportional(agencyExtractFee.getProportional()); sysAgencyFeeApproval.setCreateBy(user.getName()); sysAgencyFeeApproval.setCreateTime(new Date()); //提交审核信息 save(sysAgencyFeeApproval); //保存添加记录 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 sysAgencyFeeApproval = sysAgencyFeeApprovalMapper.selectById(sysAgencyFeeApprovalEditDto.getId()); String status = sysAgencyFeeApproval.getStatus(); if (status.equals("1") || status.equals("2")) { throw new DescribeException("已审批,不可重复操作"); } sysAgencyFeeApproval.setAuditTime(new Date()); sysAgencyFeeApproval.setRemark(sysAgencyFeeApprovalEditDto.getRemark()); sysAgencyFeeApproval.setStatus(sysAgencyFeeApprovalEditDto.getStatus()); 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)); } @Override public boolean confirmAccounts(SysAgencyFeeApprovalEditDto sysAgencyFeeApprovalEditDto) { SysAgencyFeeApproval sysAgencyFeeApproval = sysAgencyFeeApprovalMapper.selectById(sysAgencyFeeApprovalEditDto.getId()); if (sysAgencyFeeApproval.getStatus().equals("0") || sysAgencyFeeApproval.getStatus().equals("2")) { throw new DescribeException("未审批或审批未通,不可确认转账"); } sysAgencyFeeApproval.setHistoryFee(sysAgencyFeeApproval.getCashFee()); sysAgencyFeeApproval.setPicture(sysAgencyFeeApprovalEditDto.getPicture()); 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()); return sysAgencyFeeApprovalRecordMapper.insert(sysAgencyFeeApprovalRecord)>0; } @Override public List queryOperateInfo(SysAgencyFeeApprovalDto sysAgencyFeeApprovalDto) { List feeApprovalList = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper() .eq(SysAgencyFeeApproval::getUserId, BaseController.getUserId()).eq(SysAgencyFeeApproval::getStatus, 1) .ge(StringUtils.isNotEmpty(sysAgencyFeeApprovalDto.getBeginTime()), SysAgencyFeeApproval::getAuditTime,sysAgencyFeeApprovalDto.getBeginTime()) .le(StringUtils.isNotEmpty(sysAgencyFeeApprovalDto.getEndTime()),SysAgencyFeeApproval::getAuditTime,sysAgencyFeeApprovalDto.getEndTime())); return feeApprovalList; } }