SysAgencyFeeApprovalServiceImpl.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. package com.ydtech.modules.admin.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import com.ydtech.core.page.HttpResult;
  7. import com.ydtech.exception.SystemException;
  8. import com.ydtech.modules.admin.dao.*;
  9. import com.ydtech.modules.admin.model.*;
  10. import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalAddDto;
  11. import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalDto;
  12. import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalEditDto;
  13. import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalPageDto;
  14. import com.ydtech.modules.admin.model.vo.AgencyExtractFee;
  15. import com.ydtech.modules.admin.model.vo.SysAgencyFeeApprovalRecordVo;
  16. import com.ydtech.modules.admin.service.SysAgencyFeeApprovalService;
  17. import com.ydtech.modules.admin.service.SysAgencyLeaderService;
  18. import com.ydtech.modules.base.controller.BaseController;
  19. import com.ydtech.modules.order.entity.BasePageResult;
  20. import com.ydtech.modules.partner.dao.PartnerPartnerAccountMapper;
  21. import com.ydtech.modules.partner.model.PartnerPartnerAccount;
  22. import com.ydtech.utils.StringUtils;
  23. import com.ydtech.utils.idgen.IdGenerate;
  24. import org.springframework.stereotype.Service;
  25. import org.springframework.transaction.annotation.Transactional;
  26. import javax.annotation.Resource;
  27. import java.math.BigDecimal;
  28. import java.text.SimpleDateFormat;
  29. import java.util.*;
  30. /**
  31. * 机构保费抽成审批表(SysAgencyFeeApproval)表服务实现类
  32. *
  33. * @author makejava
  34. * @since 2024-07-25 11:33:55
  35. */
  36. @Service("sysAgencyFeeApprovalService")
  37. public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl<SysAgencyFeeApprovalMapper, SysAgencyFeeApproval> implements SysAgencyFeeApprovalService {
  38. @Resource
  39. private SysAgencyFeeApprovalMapper sysAgencyFeeApprovalMapper;
  40. @Resource
  41. private SysAgencyFeeApprovalRecordMapper sysAgencyFeeApprovalRecordMapper;
  42. @Resource
  43. private SysAgencyLeaderService sysAgencyLeaderService;
  44. @Resource
  45. private SysDeptMapper sysDeptMapper;
  46. @Resource
  47. private SysPartnerAccountMapper sysPartnerAccountMapper;
  48. @Resource
  49. private SysUserMapper sysUserMapper;
  50. @Resource
  51. private PartnerPartnerAccountMapper partnerAccountMapper;
  52. @Override
  53. @Transactional(rollbackFor = Exception.class)
  54. public HttpResult insert(SysAgencyFeeApprovalAddDto sysAgencyFeeApprovalAddDto) {
  55. BigDecimal actualFee = sysAgencyFeeApprovalAddDto.getActualFee();
  56. if (actualFee == null || actualFee.equals(new BigDecimal("0.00"))) {
  57. throw new SystemException("请输入提现金额");
  58. }
  59. //当前登录用户
  60. SysUser user = BaseController.getUser();
  61. //查询当前用户可提现金额
  62. //AgencyExtractFee agencyExtractFee = sysAgencyLeaderService.queryExtractFee(user.getId());
  63. SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
  64. .eq(SysPartnerAccount::getUserId,user.getId()));
  65. BigDecimal cashFee = sysPartnerAccount.getCashFee();
  66. int compare = cashFee.compareTo(actualFee);
  67. if (compare < 0) {
  68. throw new SystemException("提现金额不能超过可提现金额");
  69. }
  70. SysAgencyFeeApproval sysAgencyFeeApproval = BeanUtil.copyProperties(sysAgencyFeeApprovalAddDto, SysAgencyFeeApproval.class);
  71. sysAgencyFeeApproval.setUserId(user.getId());
  72. sysAgencyFeeApproval.setUserName(user.getName());
  73. sysAgencyFeeApproval.setDeptId(user.getDeptId());
  74. SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getId, user.getDeptId()).eq(SysDept::getDelFlag, 0));
  75. if (sysDept != null) {
  76. sysAgencyFeeApproval.setDeptName(sysDept.getName());
  77. }
  78. sysAgencyFeeApproval.setNumber(IdGenerate.nextId());
  79. //总保费
  80. sysAgencyFeeApproval.setSumpremium(sysPartnerAccount.getSumPremium());
  81. //总保费抽成费用
  82. sysAgencyFeeApproval.setExtractFee(sysPartnerAccount.getExtractFee());
  83. //已提现抽成费用
  84. // sysAgencyFeeApproval.setHistoryFee(null);
  85. //可提现抽成费用
  86. sysAgencyFeeApproval.setCashFee(actualFee);
  87. // sysAgencyFeeApproval.setStartTime(agencyExtractFee.getStartTime());
  88. // sysAgencyFeeApproval.setProportional(agencyExtractFee.getProportional());
  89. sysAgencyFeeApproval.setCreateBy(user.getName());
  90. sysAgencyFeeApproval.setCreateTime(new Date());
  91. sysAgencyFeeApproval.setStatus("0");
  92. //提交审核信息
  93. this.save(sysAgencyFeeApproval);
  94. sysPartnerAccount.setCashFee(sysPartnerAccount.getCashFee().subtract(actualFee));
  95. BigDecimal historyFee = sysPartnerAccount.getHistoryFee();
  96. if (historyFee == null) {
  97. sysPartnerAccount.setHistoryFee(actualFee);
  98. }else {
  99. sysPartnerAccount.setHistoryFee(sysPartnerAccount.getHistoryFee().add(actualFee));
  100. }
  101. sysPartnerAccountMapper.updateById(sysPartnerAccount);
  102. //保存添加记录
  103. SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord = BeanUtil.copyProperties(sysAgencyFeeApproval, SysAgencyFeeApprovalRecord.class);
  104. sysAgencyFeeApprovalRecord.setApprovalId(sysAgencyFeeApproval.getId());
  105. sysAgencyFeeApprovalRecord.setId(null);
  106. boolean i = sysAgencyFeeApprovalRecordMapper.insert(sysAgencyFeeApprovalRecord)>0;
  107. if (i) {
  108. return HttpResult.ok("提现申请提交成功");
  109. }
  110. return HttpResult.error("提现申请提交失败");
  111. }
  112. @Override
  113. @Transactional(rollbackFor = Exception.class)
  114. public HttpResult edit(SysAgencyFeeApprovalEditDto sysAgencyFeeApprovalEditDto) {
  115. SysAgencyFeeApproval sysAgencyFeeApproval1 = sysAgencyFeeApprovalMapper.queryById(sysAgencyFeeApprovalEditDto.getId());
  116. if (sysAgencyFeeApproval1.getStatus().equals("1") && sysAgencyFeeApproval1.getStatus().equals("2")) {
  117. throw new SystemException("已审批,不允许重复操作");
  118. }
  119. SysAgencyFeeApproval sysAgencyFeeApproval =BeanUtil.copyProperties(sysAgencyFeeApproval1,SysAgencyFeeApproval.class);
  120. String status = sysAgencyFeeApprovalEditDto.getStatus();
  121. if (StringUtils.isNotEmpty(status) && status.equals("1")) {
  122. //审批通过
  123. sysAgencyFeeApproval.setHistoryFee(sysAgencyFeeApproval.getCashFee());
  124. sysAgencyFeeApproval.setPicture(sysAgencyFeeApprovalEditDto.getPicture());
  125. }else {
  126. SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
  127. .eq(SysPartnerAccount::getUserId,sysAgencyFeeApproval1.getUserId()));
  128. sysPartnerAccount.setCashFee(sysPartnerAccount.getCashFee().add(sysAgencyFeeApproval1.getCashFee()));
  129. sysPartnerAccount.setHistoryFee(sysPartnerAccount.getHistoryFee().subtract(sysAgencyFeeApproval1.getCashFee()));
  130. sysPartnerAccountMapper.updateById(sysPartnerAccount);
  131. }
  132. sysAgencyFeeApproval.setId(sysAgencyFeeApprovalEditDto.getId());
  133. sysAgencyFeeApproval.setAuditTime(new Date());
  134. sysAgencyFeeApproval.setRemark(sysAgencyFeeApprovalEditDto.getRemark());
  135. sysAgencyFeeApproval.setStatus(status);
  136. sysAgencyFeeApproval.setAuditUser(BaseController.getUser().getName());
  137. //保存审批信息
  138. sysAgencyFeeApprovalMapper.updateById(sysAgencyFeeApproval);
  139. //保存审批记录
  140. SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord = BeanUtil.copyProperties(sysAgencyFeeApproval, SysAgencyFeeApprovalRecord.class);
  141. sysAgencyFeeApprovalRecord.setApprovalId(sysAgencyFeeApproval.getId());
  142. sysAgencyFeeApprovalRecord.setId(null);
  143. sysAgencyFeeApprovalRecord.setCreateTime(new Date());
  144. sysAgencyFeeApprovalRecord.setCreateBy(BaseController.getUser().getName());
  145. boolean i = sysAgencyFeeApprovalRecordMapper.insert(sysAgencyFeeApprovalRecord)>0;
  146. if (i) {
  147. return HttpResult.ok("审核成功");
  148. }
  149. return HttpResult.error("审核失败");
  150. }
  151. @Override
  152. public BasePageResult<SysAgencyFeeApproval> queryPage(SysAgencyFeeApprovalPageDto sysAgencyFeeApprovalPageDto) {
  153. Page<SysAgencyFeeApproval> page = new Page<>(sysAgencyFeeApprovalPageDto.getPageNum(), sysAgencyFeeApprovalPageDto.getPageSize());
  154. LambdaQueryWrapper<SysAgencyFeeApproval> wrapper = new LambdaQueryWrapper<>();
  155. wrapper.eq(!StringUtils.isNullOrEmpty(sysAgencyFeeApprovalPageDto.getStatus()),SysAgencyFeeApproval::getStatus,sysAgencyFeeApprovalPageDto.getStatus());
  156. wrapper.eq(!StringUtils.isNullOrEmpty(sysAgencyFeeApprovalPageDto.getUserId()),SysAgencyFeeApproval::getUserId,sysAgencyFeeApprovalPageDto.getUserId());
  157. wrapper.orderByDesc(SysAgencyFeeApproval::getId);
  158. Page<SysAgencyFeeApproval> insOrdersPage = page(page, wrapper);
  159. return new BasePageResult<>(sysAgencyFeeApprovalPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  160. insOrdersPage.getRecords());
  161. }
  162. @Override
  163. public List<SysAgencyFeeApprovalRecord> queryOperate(Integer id) {
  164. return sysAgencyFeeApprovalRecordMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApprovalRecord>()
  165. .eq(SysAgencyFeeApprovalRecord::getApprovalId, id).orderByDesc(SysAgencyFeeApprovalRecord::getId));
  166. }
  167. @Override
  168. public List<SysAgencyFeeApproval> queryOperateInfo(SysAgencyFeeApprovalDto sysAgencyFeeApprovalDto) {
  169. List<SysAgencyFeeApproval> feeApprovalList = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
  170. .eq(SysAgencyFeeApproval::getUserId, BaseController.getUserId())
  171. .ge(StringUtils.isNotEmpty(sysAgencyFeeApprovalDto.getBeginTime()), SysAgencyFeeApproval::getAuditTime,sysAgencyFeeApprovalDto.getBeginTime())
  172. .le(StringUtils.isNotEmpty(sysAgencyFeeApprovalDto.getEndTime()),SysAgencyFeeApproval::getAuditTime,sysAgencyFeeApprovalDto.getEndTime())
  173. .orderByDesc(SysAgencyFeeApproval::getId));
  174. return feeApprovalList;
  175. }
  176. @Override
  177. public SysAgencyFeeApprovalRecordVo operateInfo(Integer id) {
  178. SysAgencyFeeApproval sysAgencyFeeApproval = sysAgencyFeeApprovalMapper.selectOne(new LambdaQueryWrapper<SysAgencyFeeApproval>().eq(SysAgencyFeeApproval::getId, id));
  179. SysAgencyFeeApprovalRecordVo sysAgencyFeeApprovalRecordVo = new SysAgencyFeeApprovalRecordVo();
  180. sysAgencyFeeApprovalRecordVo.setId(sysAgencyFeeApproval.getId());
  181. sysAgencyFeeApprovalRecordVo.setCashFee(sysAgencyFeeApproval.getCashFee());
  182. sysAgencyFeeApprovalRecordVo.setCreateTime(sysAgencyFeeApproval.getCreateTime());
  183. sysAgencyFeeApprovalRecordVo.setNumber(sysAgencyFeeApproval.getNumber());
  184. sysAgencyFeeApprovalRecordVo.setRemark(sysAgencyFeeApproval.getRemark());
  185. sysAgencyFeeApprovalRecordVo.setBankAccount(sysAgencyFeeApproval.getBankAccount());
  186. sysAgencyFeeApprovalRecordVo.setBankNumber(sysAgencyFeeApproval.getBankNumber());
  187. List<SysAgencyFeeApprovalRecord> sysAgencyFeeApprovalRecords = sysAgencyFeeApprovalRecordMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApprovalRecord>()
  188. .eq(SysAgencyFeeApprovalRecord::getApprovalId, id).orderByAsc(SysAgencyFeeApprovalRecord::getId));
  189. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  190. List<StatusInfo> list = new ArrayList<>();
  191. if (sysAgencyFeeApprovalRecords.size()>0) {
  192. for (SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord : sysAgencyFeeApprovalRecords) {
  193. StatusInfo statusInfo = new StatusInfo();
  194. String format;
  195. Date auditTime = sysAgencyFeeApprovalRecord.getAuditTime();
  196. if (auditTime != null) {
  197. format = sdf.format(auditTime);
  198. }else {
  199. Date createTime = sysAgencyFeeApprovalRecord.getCreateTime();
  200. format = sdf.format(createTime);
  201. }
  202. statusInfo.setProcessingStatusName(sysAgencyFeeApprovalRecord.getStatus());
  203. statusInfo.setProcessingDate(format);
  204. list.add(statusInfo);
  205. if (sysAgencyFeeApprovalRecord.getStatus().equals("1")) {
  206. sysAgencyFeeApprovalRecordVo.setAuditTime(sysAgencyFeeApprovalRecord.getAuditTime());
  207. }
  208. }
  209. }
  210. sysAgencyFeeApprovalRecordVo.setStatusList(list);
  211. return sysAgencyFeeApprovalRecordVo;
  212. }
  213. @Override
  214. public HttpResult partnerAccount(SysAgencyFeeApprovalAddDto sysAgencyFeeApprovalAddDto) {
  215. BigDecimal actualFee = sysAgencyFeeApprovalAddDto.getActualFee();
  216. if (actualFee == null || actualFee.equals(new BigDecimal("0.00"))) {
  217. throw new SystemException("请输入提现金额");
  218. }
  219. //当前登录用户
  220. SysUser user = BaseController.getUser();
  221. PartnerPartnerAccount account = partnerAccountMapper.selectOne(new LambdaQueryWrapper<>(PartnerPartnerAccount.class).eq(PartnerPartnerAccount::getUserId,user.getId()));
  222. BigDecimal cashFee = account.getCashFee();
  223. int compare = cashFee.compareTo(actualFee);
  224. if (compare < 0) {
  225. throw new SystemException("提现金额不能超过可提现金额");
  226. }
  227. SysAgencyFeeApproval sysAgencyFeeApproval = BeanUtil.copyProperties(sysAgencyFeeApprovalAddDto, SysAgencyFeeApproval.class);
  228. sysAgencyFeeApproval.setUserId(user.getId());
  229. sysAgencyFeeApproval.setUserName(user.getName());
  230. sysAgencyFeeApproval.setDeptId(user.getDeptId());
  231. SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getId, user.getDeptId()).eq(SysDept::getDelFlag, 0));
  232. if (sysDept != null) {
  233. sysAgencyFeeApproval.setDeptName(sysDept.getName());
  234. }
  235. sysAgencyFeeApproval.setNumber(IdGenerate.nextId());
  236. //总保费
  237. sysAgencyFeeApproval.setSumpremium(account.getSumPremium());
  238. //总保费抽成费用
  239. sysAgencyFeeApproval.setExtractFee(account.getExtractFee());
  240. //已提现抽成费用
  241. // sysAgencyFeeApproval.setHistoryFee(null);
  242. //可提现抽成费用
  243. sysAgencyFeeApproval.setCashFee(actualFee);
  244. // sysAgencyFeeApproval.setStartTime(agencyExtractFee.getStartTime());
  245. // sysAgencyFeeApproval.setProportional(agencyExtractFee.getProportional());
  246. sysAgencyFeeApproval.setCreateBy(user.getName());
  247. sysAgencyFeeApproval.setCreateTime(new Date());
  248. sysAgencyFeeApproval.setStatus("0");
  249. sysAgencyFeeApprovalMapper.insert(sysAgencyFeeApproval);
  250. account.setCashFee(account.getCashFee().subtract(actualFee));
  251. BigDecimal historyFee = account.getHistoryFee();
  252. if (historyFee == null) {
  253. account.setHistoryFee(actualFee);
  254. }else {
  255. account.setHistoryFee(account.getHistoryFee().add(actualFee));
  256. }
  257. partnerAccountMapper.updateById(account);
  258. //保存添加记录
  259. SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord = BeanUtil.copyProperties(sysAgencyFeeApproval, SysAgencyFeeApprovalRecord.class);
  260. sysAgencyFeeApprovalRecord.setApprovalId(sysAgencyFeeApproval.getId());
  261. sysAgencyFeeApprovalRecord.setId(null);
  262. boolean i = sysAgencyFeeApprovalRecordMapper.insert(sysAgencyFeeApprovalRecord)>0;
  263. if (i) {
  264. return HttpResult.ok("提现申请提交成功");
  265. }
  266. return HttpResult.error("提现申请提交失败");
  267. }
  268. }