SysAmountAuditingServiceImpl.java 20 KB

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