SysAmountAuditingServiceImpl.java 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. package com.ydtech.modules.admin.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import com.github.pagehelper.PageHelper;
  7. import com.github.pagehelper.PageInfo;
  8. import com.ydtech.core.page.HttpResult;
  9. import com.ydtech.exception.SystemException;
  10. import com.ydtech.modules.admin.dao.SysAmountAuditingMapper;
  11. import com.ydtech.modules.admin.dao.SysUserAccountHistoryMapper;
  12. import com.ydtech.modules.admin.model.dto.MyCollectInAdvanceDto;
  13. import com.ydtech.modules.admin.model.dto.MyIncomeAndExpensesQueryDto;
  14. import com.ydtech.modules.admin.model.dto.SysAmountAuditingDto;
  15. import com.ydtech.modules.admin.model.po.SysAmountAuditingEntity;
  16. import com.ydtech.modules.admin.model.po.SysAmountAuditingHistory;
  17. import com.ydtech.modules.admin.model.po.SysUserAccount;
  18. import com.ydtech.modules.admin.model.po.SysUserAccountHistory;
  19. import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
  20. import com.ydtech.modules.admin.model.vo.SysAmountRejectVo;
  21. import com.ydtech.modules.admin.service.SysAmountAuditingHistoryService;
  22. import com.ydtech.modules.admin.service.SysAmountAuditingService;
  23. import com.ydtech.modules.admin.service.SysUserAccountService;
  24. import com.ydtech.modules.base.controller.BaseController;
  25. import com.ydtech.modules.fnc.entity.InsPlyIncome;
  26. import com.ydtech.modules.order.entity.BasePageResult;
  27. import com.ydtech.utils.StringUtils;
  28. import com.ydtech.utils.sendCollectUtils.SendCollectUtils;
  29. import org.apache.commons.lang3.ObjectUtils;
  30. import org.springframework.beans.BeanUtils;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import org.springframework.stereotype.Service;
  33. import org.springframework.transaction.annotation.Transactional;
  34. import java.math.BigDecimal;
  35. import java.util.Date;
  36. import java.util.HashMap;
  37. import java.util.List;
  38. @Service
  39. public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingMapper, SysAmountAuditingEntity> implements SysAmountAuditingService {
  40. @Autowired
  41. private SysUserAccountService sysUserAccountService;
  42. @Autowired
  43. private SysAmountAuditingService sysAmountAuditingService;
  44. @Autowired
  45. private SysAmountAuditingHistoryService sysAmountAuditingHistoryService;
  46. @Autowired
  47. private SysUserAccountHistoryMapper sysUserAccountHistoryMapper;
  48. @Autowired
  49. private SendCollectUtils sendCollectUtils;
  50. /**
  51. * @version
  52. * @author: hxl
  53. * @Date: 2024/6/19 8:46
  54. * @Description: 审核提现
  55. */
  56. @Override
  57. @Transactional
  58. public void AmountReview(SysAmountAuditingVo sysAmountAuditingVo) {
  59. //审核
  60. if(sysAmountAuditingVo.getId()==null || "".equals(sysAmountAuditingVo.getId())){
  61. throw new SystemException("提现审核记录id不能为空");
  62. }
  63. //添加验证非空的判断
  64. if(sysAmountAuditingVo.getAccountId()==null || "".equals(sysAmountAuditingVo.getAccountId())){
  65. throw new SystemException("未绑定银行卡信息");
  66. }
  67. if(sysAmountAuditingVo.getAccountName()==null || "".equals(sysAmountAuditingVo.getAccountName())){
  68. throw new SystemException("内部账户名称不能为空");
  69. }
  70. if(sysAmountAuditingVo.getBankCardNum()==null || "".equals(sysAmountAuditingVo.getBankCardNum())){
  71. throw new SystemException("内部银行卡号不能为空");
  72. }
  73. if(sysAmountAuditingVo.getBankName()==null || "".equals(sysAmountAuditingVo.getBankName())){
  74. throw new SystemException("内部开户行名称不能为空");
  75. }
  76. if(sysAmountAuditingVo.getBankNum()==null || "".equals(sysAmountAuditingVo.getBankNum())){
  77. throw new SystemException("内部银行卡开户行号不能为空");
  78. }
  79. SysAmountAuditingEntity sysAmountAuditingEntity = sysAmountAuditingService.getById(sysAmountAuditingVo.getId());
  80. //提现审核金额
  81. BigDecimal amount = sysAmountAuditingVo.getAmount();
  82. //提现人
  83. String userId = sysAmountAuditingVo.getUserId();
  84. // SysUserAccount sysUserAccountEntity = new SysUserAccount();
  85. // 用户扣减金额
  86. if (StringUtils.isNotEmpty(userId)) {
  87. // sysUserAccountEntity.setUserId(userId);
  88. //提现人账户
  89. SysUserAccount sysUserAccount = sysUserAccountService.getById(userId);
  90. if (ObjectUtils.isNotEmpty(sysUserAccount)) {
  91. //注释掉原先按类型提现的逻辑 ,改为不区分类型 add by hxl 2024-06-18
  92. /**
  93. String amountStatus = sysAmountAuditingVo.getAmountStatus();
  94. if (StringUtils.isNotEmpty(amountStatus)) {
  95. if ("1".equals(amountStatus)) {
  96. sysUserAccount.setHandlingAmountAccount(amount);
  97. sysUserAccount.setHandlingAmountPayment(sysUserAccount.getHandlingAmountPayment().subtract(amount));
  98. // sysUserAccountEntity.setHandlingFee(afterAmount);
  99. } else if ("2".equals(amountStatus)) {
  100. sysUserAccount.setDocumentaryAmountAccount(amount);
  101. sysUserAccount.setDocumentaryAmountpayment(sysUserAccount.getDocumentaryAmountpayment().subtract(amount));
  102. // sysUserAccountEntity.setDocumentary(afterAmount);
  103. } else {
  104. sysUserAccount.setPromotionAmountAccount(amount);
  105. sysUserAccount.setPromotionAmountPayment(sysUserAccount.getPromotionAmountPayment().subtract(amount));
  106. // sysUserAccountEntity.setPromotion(afterAmount);
  107. }
  108. }
  109. **/
  110. //已到账金额 = 原先的到账金额+ 已到账的金额
  111. sysUserAccount.setSumAmountAccount((sysUserAccount.getSumAmountAccount()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountAccount()).add(amount));
  112. //支付中的金额 = 原先的支付金额 -去提现的金额
  113. sysUserAccount.setSumAmountPayment((sysUserAccount.getSumAmountPayment()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountPayment()).subtract(amount));
  114. sysUserAccountService.updateById(sysUserAccount);
  115. }
  116. sysAmountAuditingVo.setAuditingStatus("3");
  117. sysAmountAuditingVo.setAuditingUserId(BaseController.getUser().getId());
  118. sysAmountAuditingVo.setAuditingTime(new Date());
  119. BeanUtils.copyProperties(sysAmountAuditingVo, sysAmountAuditingEntity);
  120. sysAmountAuditingEntity.setCreateTime(null);
  121. baseMapper.updateById(sysAmountAuditingEntity);
  122. //推送提现记录
  123. // sendCollectUtils.sendCollect(sysAmountAuditingVo);
  124. //通过审核表id查询历史记录表
  125. LambdaQueryWrapper<SysUserAccountHistory> lqw = new LambdaQueryWrapper<>();
  126. lqw.eq(SysUserAccountHistory::getAuditiingId, sysAmountAuditingEntity.getId());
  127. lqw.eq(SysUserAccountHistory::getUserId, userId);
  128. //插入轨迹表审核成功数据
  129. SysUserAccountHistory sysUserAccountHistory = sysUserAccountHistoryMapper.selectOne(lqw);
  130. //插入轨迹表
  131. SysAmountAuditingHistory sysAmountAuditingHistory =new SysAmountAuditingHistory(null, sysAmountAuditingEntity.getId(), amount, userId,new Date(),"4", "1",sysUserAccountHistory.getId());
  132. sysAmountAuditingHistoryService.save(sysAmountAuditingHistory);
  133. }
  134. }
  135. @Override
  136. public SysAmountAuditingEntity getByUserId(String userId,String amountStatus) {
  137. return baseMapper.getByUserId(userId,amountStatus);
  138. }
  139. @Override
  140. public HttpResult<BasePageResult<SysAmountAuditingEntity>> queryByVo(SysAmountAuditingVo sysAmountAuditingVo) {
  141. try{
  142. HashMap<String, Object> params = new HashMap<>();
  143. PageInfo<List<InsPlyIncome>> pageHelper = null;
  144. PageHelper.startPage(sysAmountAuditingVo.getPageNum(),sysAmountAuditingVo.getPageSize());
  145. params.put("pageNum",sysAmountAuditingVo.getPageNum());
  146. params.put("pageSize",sysAmountAuditingVo.getPageSize());
  147. if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getStartTime())){
  148. params.put("startDate",sysAmountAuditingVo.getStartTime());
  149. }
  150. if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getEndTime())){
  151. params.put("endDate",sysAmountAuditingVo.getEndTime());
  152. }
  153. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getAuditingStatus())){
  154. params.put("auditingStatus",sysAmountAuditingVo.getAuditingStatus());
  155. }
  156. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getUserId())){
  157. params.put("userId",sysAmountAuditingVo.getUserId());
  158. }
  159. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getId())){
  160. params.put("id",sysAmountAuditingVo.getId());
  161. }
  162. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getAmountStatus())){
  163. // params.put("amountStatus",sysAmountAuditingVo.getAmountStatus());
  164. }
  165. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getMobile())){
  166. params.put("mobile",sysAmountAuditingVo.getMobile());
  167. }
  168. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getUserName())){
  169. params.put("userName",sysAmountAuditingVo.getUserName());
  170. }
  171. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getLeaderId())){
  172. params.put("leaderId",sysAmountAuditingVo.getLeaderId());
  173. }
  174. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getLeaderName())){
  175. params.put("leaderName",sysAmountAuditingVo.getLeaderName());
  176. }
  177. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getStartAuditingTime())){
  178. params.put("startAuditingTime",sysAmountAuditingVo.getStartAuditingTime());
  179. }
  180. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getEndAuditingTime())){
  181. params.put("endAuditingTime",sysAmountAuditingVo.getEndAuditingTime());
  182. }
  183. if(StringUtils.isNotBlank(sysAmountAuditingVo.getSource())){
  184. params.put("source",sysAmountAuditingVo.getSource());
  185. }
  186. List<SysAmountAuditingEntity> list = baseMapper.queryPageOrderNew(params);
  187. pageHelper=new PageInfo(list);
  188. BasePageResult<SysAmountAuditingEntity> pageResult=new BasePageResult<SysAmountAuditingEntity>(sysAmountAuditingVo.getPageNum(), sysAmountAuditingVo.getPageSize(), pageHelper.getTotal(), pageHelper.getPages(), list);
  189. return HttpResult.ok(pageResult);
  190. }catch (Exception e){
  191. e.printStackTrace();
  192. return HttpResult.error("查询异常");
  193. }
  194. }
  195. @Override
  196. public BasePageResult<SysAmountAuditingEntity> queryAppPage(SysAmountAuditingVo sysAmountAuditingVo) {
  197. String id = BaseController.getUser().getId();
  198. sysAmountAuditingVo.setUserId(id);
  199. Page<SysAmountAuditingEntity> page = new Page<>(sysAmountAuditingVo.getPageNum(), sysAmountAuditingVo.getPageSize());
  200. QueryWrapper<SysAmountAuditingEntity> wrapper = new QueryWrapper<>();
  201. Page<SysAmountAuditingEntity> sysUserAccountHistoryPage = baseMapper.queryPageOrder(sysAmountAuditingVo, page);
  202. return new BasePageResult<>(sysAmountAuditingVo.getPageNum(), page.getSize(), sysUserAccountHistoryPage.getTotal(), page.getPages(),
  203. sysUserAccountHistoryPage.getRecords());
  204. }
  205. @Override
  206. public List<SysAmountAuditingEntity> getProgressIng(HashMap<String, Object> params) {
  207. return baseMapper.getProgressIng(params);
  208. }
  209. /**
  210. * @version
  211. * @author: hxl
  212. * @Date: 2024/6/19 16:35
  213. * @Description: 提现中、已提现数据查询
  214. */
  215. @Override
  216. public BasePageResult<MyCollectInAdvanceDto> queryAmountPage(MyIncomeAndExpensesQueryDto myIncomeAndExpensesQueryDto) {
  217. Page<MyCollectInAdvanceDto> page = new Page<>(myIncomeAndExpensesQueryDto.getPageNum(), myIncomeAndExpensesQueryDto.getPageSize());
  218. Page<MyCollectInAdvanceDto> recordPage = baseMapper.queryAmountPage(myIncomeAndExpensesQueryDto, page);
  219. return new BasePageResult<>(myIncomeAndExpensesQueryDto.getPageNum(), page.getSize(), recordPage.getTotal(), page.getPages(),
  220. recordPage.getRecords());
  221. }
  222. /**
  223. * @version
  224. * @author: hxl
  225. * @Date: 2024/6/19 17:16
  226. * @Description: 查询总金额
  227. */
  228. @Override
  229. public BigDecimal findSumAmount(MyIncomeAndExpensesQueryDto myIncomeAndExpensesQueryDto) {
  230. return baseMapper.findSumAmount(myIncomeAndExpensesQueryDto);
  231. }
  232. /**
  233. * @version
  234. * @author: hxl
  235. * @Date: 2024/6/19 19:23
  236. * @Description: 驳回 修改状态为 4 驳回状态 冲正金额
  237. */
  238. @Override
  239. public void rejectAmount(SysAmountRejectVo sysAmountRejectVo) {
  240. //审核
  241. if(sysAmountRejectVo.getId()==null || "".equals(sysAmountRejectVo.getId())){
  242. throw new SystemException("提现审核记录id不能为空");
  243. }
  244. if(sysAmountRejectVo.getRejectReason()==null || "".equals(sysAmountRejectVo.getRejectReason())){
  245. throw new SystemException("驳回原因不能为空");
  246. }
  247. SysAmountAuditingEntity sysAmountAuditingEntity = sysAmountAuditingService.getById(sysAmountRejectVo.getId());
  248. //提现审核金额
  249. BigDecimal amount = sysAmountAuditingEntity.getAmount();
  250. //提现人
  251. String userId = sysAmountAuditingEntity.getUserId();
  252. // 用户回退金额
  253. BigDecimal beforeAmount;
  254. BigDecimal afterAmount;
  255. if (StringUtils.isNotEmpty(userId)) {
  256. //提现人账户
  257. SysUserAccount sysUserAccount = sysUserAccountService.getById(userId);
  258. if (ObjectUtils.isNotEmpty(sysUserAccount)) {
  259. //提现前的金额
  260. beforeAmount = sysUserAccount.getSumAmount()==null?BigDecimal.ZERO:sysUserAccount.getSumAmount();
  261. //提现后的金额
  262. afterAmount = beforeAmount.add(amount);
  263. sysUserAccount.setSumAmount(afterAmount);
  264. //提现的总金额 = 原先的提现总金额 - 提现的金额
  265. sysUserAccount.setSumAmountWithdrawal((sysUserAccount.getSumAmountWithdrawal()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountWithdrawal().subtract(amount)));
  266. //支付中的金额 = 原先的支付金额 -去提现的金额
  267. sysUserAccount.setSumAmountPayment((sysUserAccount.getSumAmountPayment()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountPayment()).subtract(amount));
  268. //已到账金额 = 原先的到账金额- 已到账的金额
  269. // sysUserAccount.setSumAmountAccount((sysUserAccount.getSumAmountAccount()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountAccount()).subtract(amount));
  270. sysUserAccountService.updateById(sysUserAccount);
  271. }
  272. sysAmountAuditingEntity.setAuditingStatus("4");
  273. sysAmountAuditingEntity.setRejectReason(sysAmountRejectVo.getRejectReason());
  274. sysAmountAuditingEntity.setRejectUserId(BaseController.getUser().getId());
  275. sysAmountAuditingEntity.setRejectTime(new Date());
  276. baseMapper.updateById(sysAmountAuditingEntity);
  277. //更新轨迹表
  278. //通过审核表id查询历史记录表
  279. LambdaQueryWrapper<SysUserAccountHistory> lqw = new LambdaQueryWrapper<>();
  280. lqw.eq(SysUserAccountHistory::getAuditiingId, sysAmountAuditingEntity.getId());
  281. lqw.eq(SysUserAccountHistory::getUserId, userId);
  282. //插入轨迹表审核成功数据
  283. SysUserAccountHistory sysUserAccountHistory = sysUserAccountHistoryMapper.selectOne(lqw);
  284. //插入轨迹表驳回数据
  285. SysAmountAuditingHistory sysAmountAuditingHistory =new SysAmountAuditingHistory(null, sysAmountAuditingEntity.getId(), amount, userId,new Date(),"3", "3",sysUserAccountHistory.getId());
  286. sysAmountAuditingHistoryService.save(sysAmountAuditingHistory);
  287. //将收入支出状态台改为收入 2插入历史表中历史表
  288. sysUserAccountHistory.setId(null);
  289. sysUserAccountHistory.setDocumentary(2);
  290. sysUserAccountHistory.setProperty(5);
  291. sysUserAccountHistory.setBusinessSegmentsType(2); //赋值退款
  292. sysUserAccountHistory.setCreateTime(new Date());
  293. sysUserAccountHistoryMapper.insert(sysUserAccountHistory);
  294. }
  295. }
  296. /**
  297. * @version
  298. * @author: hxl
  299. * @Date: 2024/6/19 20:18
  300. * @Description: 通过用户id查询数据
  301. */
  302. @Override
  303. public BigDecimal findSumAmountByUserId(String userId) {
  304. return baseMapper.findSumAmountByUserId(userId);
  305. }
  306. /**
  307. * @version
  308. * @author: hxl
  309. * @Date: 2024/6/27 16:24
  310. * @Description: 查询已提现、未提现的总金额
  311. */
  312. @Override
  313. public BigDecimal querySumAmount(SysAmountAuditingVo sysAmountAuditingVo) {
  314. return baseMapper.querySumAmount(sysAmountAuditingVo);
  315. }
  316. /**
  317. * @version
  318. * @author: hxl
  319. * @Date: 2024/7/8 11:18
  320. * @Description: 补充内部银行卡信息
  321. */
  322. @Override
  323. public HttpResult addInvAccountBackCardMsg(SysAmountAuditingDto sysAmountAuditingDto) {
  324. try{
  325. //通过审核id查询对象赋值
  326. SysAmountAuditingEntity sysAmountAuditingEntity = sysAmountAuditingService.getById(sysAmountAuditingDto.getId());
  327. sysAmountAuditingEntity.setAccountName(sysAmountAuditingDto.getAccountName());
  328. sysAmountAuditingEntity.setAccountId(sysAmountAuditingDto.getAccountId());
  329. sysAmountAuditingEntity.setBankCardNum(sysAmountAuditingDto.getBankCardNum());
  330. sysAmountAuditingEntity.setBankName(sysAmountAuditingDto.getBankName());
  331. sysAmountAuditingEntity.setBankNum(sysAmountAuditingDto.getBankNum());
  332. baseMapper.updateById(sysAmountAuditingEntity);
  333. return HttpResult.ok("添加成功");
  334. }catch(Exception e){
  335. }
  336. return HttpResult.error("添加失败");
  337. }
  338. /**
  339. * @version
  340. * @author: hxl
  341. * @Date: 2024/7/9 9:56
  342. * @Description: 导出已提现的费用表
  343. */
  344. @Override
  345. public List<SysAmountAuditingEntity> expeortData(SysAmountAuditingVo sysAmountAuditingVo) {
  346. HashMap<String, Object> params = new HashMap<>();
  347. if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getStartTime())){
  348. params.put("startDate",sysAmountAuditingVo.getStartTime());
  349. }
  350. if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getEndTime())){
  351. params.put("endDate",sysAmountAuditingVo.getEndTime());
  352. }
  353. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getAuditingStatus())){
  354. params.put("auditingStatus",sysAmountAuditingVo.getAuditingStatus());
  355. }
  356. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getUserId())){
  357. params.put("userId",sysAmountAuditingVo.getUserId());
  358. }
  359. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getId())){
  360. params.put("id",sysAmountAuditingVo.getId());
  361. }
  362. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getMobile())){
  363. params.put("mobile",sysAmountAuditingVo.getMobile());
  364. }
  365. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getUserName())){
  366. params.put("userName",sysAmountAuditingVo.getUserName());
  367. }
  368. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getLeaderId())){
  369. params.put("leaderId",sysAmountAuditingVo.getLeaderId());
  370. }
  371. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getLeaderName())){
  372. params.put("leaderName",sysAmountAuditingVo.getLeaderName());
  373. }
  374. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getStartAuditingTime())){
  375. params.put("startAuditingTime",sysAmountAuditingVo.getStartAuditingTime());
  376. }
  377. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getEndAuditingTime())){
  378. params.put("endAuditingTime",sysAmountAuditingVo.getEndAuditingTime());
  379. }
  380. List<SysAmountAuditingEntity> list = baseMapper.queryPageOrderNew(params);
  381. return list;
  382. }
  383. }