package com.ydtech.modules.admin.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ydtech.core.page.HttpResult; import com.ydtech.exception.SystemException; import com.ydtech.modules.admin.dao.SysAmountAuditingMapper; import com.ydtech.modules.admin.dao.SysUserAccountHistoryMapper; import com.ydtech.modules.admin.model.dto.MyCollectInAdvanceDto; import com.ydtech.modules.admin.model.dto.MyIncomeAndExpensesQueryDto; import com.ydtech.modules.admin.model.dto.SysAmountAuditingDto; import com.ydtech.modules.admin.model.po.SysAmountAuditingEntity; import com.ydtech.modules.admin.model.po.SysAmountAuditingHistory; import com.ydtech.modules.admin.model.po.SysUserAccount; import com.ydtech.modules.admin.model.po.SysUserAccountHistory; import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo; import com.ydtech.modules.admin.model.vo.SysAmountRejectVo; import com.ydtech.modules.admin.service.SysAmountAuditingHistoryService; import com.ydtech.modules.admin.service.SysAmountAuditingService; import com.ydtech.modules.admin.service.SysUserAccountService; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.fnc.entity.InsPlyIncome; import com.ydtech.modules.order.entity.BasePageResult; import com.ydtech.utils.StringUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.List; @Service public class SysAmountAuditingServiceImpl extends ServiceImpl implements SysAmountAuditingService { @Autowired private SysUserAccountService sysUserAccountService; @Autowired private SysAmountAuditingService sysAmountAuditingService; @Autowired private SysAmountAuditingHistoryService sysAmountAuditingHistoryService; @Autowired private SysUserAccountHistoryMapper sysUserAccountHistoryMapper; /** * @version * @author: hxl * @Date: 2024/6/19 8:46 * @Description: 审核提现 */ @Override @Transactional public void AmountReview(SysAmountAuditingVo sysAmountAuditingVo) { //审核 if(sysAmountAuditingVo.getId()==null || "".equals(sysAmountAuditingVo.getId())){ throw new SystemException("提现审核记录id不能为空"); } //添加验证非空的判断 if(sysAmountAuditingVo.getAccountId()==null || "".equals(sysAmountAuditingVo.getAccountId())){ throw new SystemException("未绑定银行卡信息"); } if(sysAmountAuditingVo.getAccountName()==null || "".equals(sysAmountAuditingVo.getAccountName())){ throw new SystemException("内部账户名称不能为空"); } if(sysAmountAuditingVo.getBankCardNum()==null || "".equals(sysAmountAuditingVo.getBankCardNum())){ throw new SystemException("内部银行卡号不能为空"); } if(sysAmountAuditingVo.getBankName()==null || "".equals(sysAmountAuditingVo.getBankName())){ throw new SystemException("内部开户行名称不能为空"); } if(sysAmountAuditingVo.getBankNum()==null || "".equals(sysAmountAuditingVo.getBankNum())){ throw new SystemException("内部银行卡开户行号不能为空"); } SysAmountAuditingEntity sysAmountAuditingEntity = sysAmountAuditingService.getById(sysAmountAuditingVo.getId()); //提现审核金额 BigDecimal amount = sysAmountAuditingVo.getAmount(); //提现人 String userId = sysAmountAuditingVo.getUserId(); // SysUserAccount sysUserAccountEntity = new SysUserAccount(); // 用户扣减金额 if (StringUtils.isNotEmpty(userId)) { // sysUserAccountEntity.setUserId(userId); //提现人账户 SysUserAccount sysUserAccount = sysUserAccountService.getById(userId); if (ObjectUtils.isNotEmpty(sysUserAccount)) { //注释掉原先按类型提现的逻辑 ,改为不区分类型 add by hxl 2024-06-18 /** String amountStatus = sysAmountAuditingVo.getAmountStatus(); if (StringUtils.isNotEmpty(amountStatus)) { if ("1".equals(amountStatus)) { sysUserAccount.setHandlingAmountAccount(amount); sysUserAccount.setHandlingAmountPayment(sysUserAccount.getHandlingAmountPayment().subtract(amount)); // sysUserAccountEntity.setHandlingFee(afterAmount); } else if ("2".equals(amountStatus)) { sysUserAccount.setDocumentaryAmountAccount(amount); sysUserAccount.setDocumentaryAmountpayment(sysUserAccount.getDocumentaryAmountpayment().subtract(amount)); // sysUserAccountEntity.setDocumentary(afterAmount); } else { sysUserAccount.setPromotionAmountAccount(amount); sysUserAccount.setPromotionAmountPayment(sysUserAccount.getPromotionAmountPayment().subtract(amount)); // sysUserAccountEntity.setPromotion(afterAmount); } } **/ //已到账金额 = 原先的到账金额+ 已到账的金额 sysUserAccount.setSumAmountAccount((sysUserAccount.getSumAmountAccount()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountAccount()).add(amount)); //支付中的金额 = 原先的支付金额 -去提现的金额 sysUserAccount.setSumAmountPayment((sysUserAccount.getSumAmountPayment()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountPayment()).subtract(amount)); sysUserAccountService.updateById(sysUserAccount); } sysAmountAuditingVo.setAuditingStatus("3"); sysAmountAuditingVo.setAuditingUserId(BaseController.getUser().getId()); sysAmountAuditingVo.setAuditingTime(new Date()); BeanUtils.copyProperties(sysAmountAuditingVo, sysAmountAuditingEntity); sysAmountAuditingEntity.setCreateTime(null); baseMapper.updateById(sysAmountAuditingEntity); //通过审核表id查询历史记录表 LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(SysUserAccountHistory::getAuditiingId, sysAmountAuditingEntity.getId()); lqw.eq(SysUserAccountHistory::getUserId, userId); //插入轨迹表审核成功数据 SysUserAccountHistory sysUserAccountHistory = sysUserAccountHistoryMapper.selectOne(lqw); //插入轨迹表 SysAmountAuditingHistory sysAmountAuditingHistory =new SysAmountAuditingHistory(null, sysAmountAuditingEntity.getId(), amount, userId,new Date(),"4", "1",sysUserAccountHistory.getId()); sysAmountAuditingHistoryService.save(sysAmountAuditingHistory); } } @Override public SysAmountAuditingEntity getByUserId(String userId,String amountStatus) { return baseMapper.getByUserId(userId,amountStatus); } @Override public HttpResult> queryByVo(SysAmountAuditingVo sysAmountAuditingVo) { try{ HashMap params = new HashMap<>(); PageInfo> pageHelper = null; PageHelper.startPage(sysAmountAuditingVo.getPageNum(),sysAmountAuditingVo.getPageSize()); params.put("pageNum",sysAmountAuditingVo.getPageNum()); params.put("pageSize",sysAmountAuditingVo.getPageSize()); if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getStartTime())){ params.put("startDate",sysAmountAuditingVo.getStartTime()); } if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getEndTime())){ params.put("endDate",sysAmountAuditingVo.getEndTime()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getAuditingStatus())){ params.put("auditingStatus",sysAmountAuditingVo.getAuditingStatus()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getUserId())){ params.put("userId",sysAmountAuditingVo.getUserId()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getId())){ params.put("id",sysAmountAuditingVo.getId()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getAmountStatus())){ // params.put("amountStatus",sysAmountAuditingVo.getAmountStatus()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getMobile())){ params.put("mobile",sysAmountAuditingVo.getMobile()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getUserName())){ params.put("userName",sysAmountAuditingVo.getUserName()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getLeaderId())){ params.put("leaderId",sysAmountAuditingVo.getLeaderId()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getLeaderName())){ params.put("leaderName",sysAmountAuditingVo.getLeaderName()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getStartAuditingTime())){ params.put("startAuditingTime",sysAmountAuditingVo.getStartAuditingTime()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getEndAuditingTime())){ params.put("endAuditingTime",sysAmountAuditingVo.getEndAuditingTime()); } List list = baseMapper.queryPageOrderNew(params); pageHelper=new PageInfo(list); BasePageResult pageResult=new BasePageResult(sysAmountAuditingVo.getPageNum(), sysAmountAuditingVo.getPageSize(), pageHelper.getTotal(), pageHelper.getPages(), list); return HttpResult.ok(pageResult); }catch (Exception e){ e.printStackTrace(); return HttpResult.error("查询异常"); } } @Override public BasePageResult queryAppPage(SysAmountAuditingVo sysAmountAuditingVo) { String id = BaseController.getUser().getId(); sysAmountAuditingVo.setUserId(id); Page page = new Page<>(sysAmountAuditingVo.getPageNum(), sysAmountAuditingVo.getPageSize()); QueryWrapper wrapper = new QueryWrapper<>(); Page sysUserAccountHistoryPage = baseMapper.queryPageOrder(sysAmountAuditingVo, page); return new BasePageResult<>(sysAmountAuditingVo.getPageNum(), page.getSize(), sysUserAccountHistoryPage.getTotal(), page.getPages(), sysUserAccountHistoryPage.getRecords()); } @Override public List getProgressIng(HashMap params) { return baseMapper.getProgressIng(params); } /** * @version * @author: hxl * @Date: 2024/6/19 16:35 * @Description: 提现中、已提现数据查询 */ @Override public BasePageResult queryAmountPage(MyIncomeAndExpensesQueryDto myIncomeAndExpensesQueryDto) { Page page = new Page<>(myIncomeAndExpensesQueryDto.getPageNum(), myIncomeAndExpensesQueryDto.getPageSize()); Page recordPage = baseMapper.queryAmountPage(myIncomeAndExpensesQueryDto, page); return new BasePageResult<>(myIncomeAndExpensesQueryDto.getPageNum(), page.getSize(), recordPage.getTotal(), page.getPages(), recordPage.getRecords()); } /** * @version * @author: hxl * @Date: 2024/6/19 17:16 * @Description: 查询总金额 */ @Override public BigDecimal findSumAmount(MyIncomeAndExpensesQueryDto myIncomeAndExpensesQueryDto) { return baseMapper.findSumAmount(myIncomeAndExpensesQueryDto); } /** * @version * @author: hxl * @Date: 2024/6/19 19:23 * @Description: 驳回 修改状态为 4 驳回状态 冲正金额 */ @Override public void rejectAmount(SysAmountRejectVo sysAmountRejectVo) { //审核 if(sysAmountRejectVo.getId()==null || "".equals(sysAmountRejectVo.getId())){ throw new SystemException("提现审核记录id不能为空"); } if(sysAmountRejectVo.getRejectReason()==null || "".equals(sysAmountRejectVo.getRejectReason())){ throw new SystemException("驳回原因不能为空"); } SysAmountAuditingEntity sysAmountAuditingEntity = sysAmountAuditingService.getById(sysAmountRejectVo.getId()); //提现审核金额 BigDecimal amount = sysAmountAuditingEntity.getAmount(); //提现人 String userId = sysAmountAuditingEntity.getUserId(); // 用户回退金额 BigDecimal beforeAmount; BigDecimal afterAmount; if (StringUtils.isNotEmpty(userId)) { //提现人账户 SysUserAccount sysUserAccount = sysUserAccountService.getById(userId); if (ObjectUtils.isNotEmpty(sysUserAccount)) { //提现前的金额 beforeAmount = sysUserAccount.getSumAmount()==null?BigDecimal.ZERO:sysUserAccount.getSumAmount(); //提现后的金额 afterAmount = beforeAmount.add(amount); sysUserAccount.setSumAmount(afterAmount); //提现的总金额 = 原先的提现总金额 - 提现的金额 sysUserAccount.setSumAmountWithdrawal((sysUserAccount.getSumAmountWithdrawal()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountWithdrawal().subtract(amount))); //支付中的金额 = 原先的支付金额 -去提现的金额 sysUserAccount.setSumAmountPayment((sysUserAccount.getSumAmountPayment()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountPayment()).subtract(amount)); //已到账金额 = 原先的到账金额- 已到账的金额 // sysUserAccount.setSumAmountAccount((sysUserAccount.getSumAmountAccount()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountAccount()).subtract(amount)); sysUserAccountService.updateById(sysUserAccount); } sysAmountAuditingEntity.setAuditingStatus("4"); sysAmountAuditingEntity.setRejectReason(sysAmountRejectVo.getRejectReason()); sysAmountAuditingEntity.setRejectUserId(BaseController.getUser().getId()); sysAmountAuditingEntity.setRejectTime(new Date()); baseMapper.updateById(sysAmountAuditingEntity); //更新轨迹表 //通过审核表id查询历史记录表 LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(SysUserAccountHistory::getAuditiingId, sysAmountAuditingEntity.getId()); lqw.eq(SysUserAccountHistory::getUserId, userId); //插入轨迹表审核成功数据 SysUserAccountHistory sysUserAccountHistory = sysUserAccountHistoryMapper.selectOne(lqw); //插入轨迹表驳回数据 SysAmountAuditingHistory sysAmountAuditingHistory =new SysAmountAuditingHistory(null, sysAmountAuditingEntity.getId(), amount, userId,new Date(),"3", "3",sysUserAccountHistory.getId()); sysAmountAuditingHistoryService.save(sysAmountAuditingHistory); //将收入支出状态台改为收入 2插入历史表中历史表 sysUserAccountHistory.setId(null); sysUserAccountHistory.setDocumentary(2); sysUserAccountHistory.setProperty(5); sysUserAccountHistory.setBusinessSegmentsType(2); //赋值退款 sysUserAccountHistory.setCreateTime(new Date()); sysUserAccountHistoryMapper.insert(sysUserAccountHistory); } } /** * @version * @author: hxl * @Date: 2024/6/19 20:18 * @Description: 通过用户id查询数据 */ @Override public BigDecimal findSumAmountByUserId(String userId) { return baseMapper.findSumAmountByUserId(userId); } /** * @version * @author: hxl * @Date: 2024/6/27 16:24 * @Description: 查询已提现、未提现的总金额 */ @Override public BigDecimal querySumAmount(SysAmountAuditingVo sysAmountAuditingVo) { return baseMapper.querySumAmount(sysAmountAuditingVo); } /** * @version * @author: hxl * @Date: 2024/7/8 11:18 * @Description: 补充内部银行卡信息 */ @Override public HttpResult addInvAccountBackCardMsg(SysAmountAuditingDto sysAmountAuditingDto) { try{ //通过审核id查询对象赋值 SysAmountAuditingEntity sysAmountAuditingEntity = sysAmountAuditingService.getById(sysAmountAuditingDto.getId()); sysAmountAuditingEntity.setAccountName(sysAmountAuditingDto.getAccountName()); sysAmountAuditingEntity.setAccountId(sysAmountAuditingDto.getAccountId()); sysAmountAuditingEntity.setBankCardNum(sysAmountAuditingDto.getBankCardNum()); sysAmountAuditingEntity.setBankName(sysAmountAuditingDto.getBankName()); sysAmountAuditingEntity.setBankNum(sysAmountAuditingDto.getBankNum()); baseMapper.updateById(sysAmountAuditingEntity); return HttpResult.ok("添加成功"); }catch(Exception e){ } return HttpResult.error("添加失败"); } /** * @version * @author: hxl * @Date: 2024/7/9 9:56 * @Description: 导出已提现的费用表 */ @Override public List expeortData(SysAmountAuditingVo sysAmountAuditingVo) { HashMap params = new HashMap<>(); if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getStartTime())){ params.put("startDate",sysAmountAuditingVo.getStartTime()); } if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getEndTime())){ params.put("endDate",sysAmountAuditingVo.getEndTime()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getAuditingStatus())){ params.put("auditingStatus",sysAmountAuditingVo.getAuditingStatus()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getUserId())){ params.put("userId",sysAmountAuditingVo.getUserId()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getId())){ params.put("id",sysAmountAuditingVo.getId()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getMobile())){ params.put("mobile",sysAmountAuditingVo.getMobile()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getUserName())){ params.put("userName",sysAmountAuditingVo.getUserName()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getLeaderId())){ params.put("leaderId",sysAmountAuditingVo.getLeaderId()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getLeaderName())){ params.put("leaderName",sysAmountAuditingVo.getLeaderName()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getStartAuditingTime())){ params.put("startAuditingTime",sysAmountAuditingVo.getStartAuditingTime()); } if(StringUtils.isNotEmpty(sysAmountAuditingVo.getEndAuditingTime())){ params.put("endAuditingTime",sysAmountAuditingVo.getEndAuditingTime()); } List list = baseMapper.queryPageOrderNew(params); return list; } }