SysAmountAuditingServiceImpl.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  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.po.SysAmountAuditingEntity;
  15. import com.ydtech.modules.admin.model.po.SysAmountAuditingHistory;
  16. import com.ydtech.modules.admin.model.po.SysUserAccount;
  17. import com.ydtech.modules.admin.model.po.SysUserAccountHistory;
  18. import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
  19. import com.ydtech.modules.admin.model.vo.SysAmountRejectVo;
  20. import com.ydtech.modules.admin.service.SysAmountAuditingHistoryService;
  21. import com.ydtech.modules.admin.service.SysAmountAuditingService;
  22. import com.ydtech.modules.admin.service.SysUserAccountService;
  23. import com.ydtech.modules.base.controller.BaseController;
  24. import com.ydtech.modules.fnc.entity.InsPlyIncome;
  25. import com.ydtech.modules.order.entity.BasePageResult;
  26. import com.ydtech.utils.StringUtils;
  27. import org.apache.commons.lang3.ObjectUtils;
  28. import org.springframework.beans.BeanUtils;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.stereotype.Service;
  31. import org.springframework.transaction.annotation.Transactional;
  32. import java.math.BigDecimal;
  33. import java.util.Date;
  34. import java.util.HashMap;
  35. import java.util.List;
  36. @Service
  37. public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingMapper, SysAmountAuditingEntity> implements SysAmountAuditingService {
  38. @Autowired
  39. private SysUserAccountService sysUserAccountService;
  40. @Autowired
  41. private SysAmountAuditingService sysAmountAuditingService;
  42. @Autowired
  43. private SysAmountAuditingHistoryService sysAmountAuditingHistoryService;
  44. @Autowired
  45. private SysUserAccountHistoryMapper sysUserAccountHistoryMapper;
  46. /**
  47. * @version
  48. * @author: hxl
  49. * @Date: 2024/6/19 8:46
  50. * @Description: 审核提现
  51. */
  52. @Override
  53. @Transactional
  54. public void AmountReview(SysAmountAuditingVo sysAmountAuditingVo) {
  55. //审核
  56. if(sysAmountAuditingVo.getId()==null || "".equals(sysAmountAuditingVo.getId())){
  57. throw new SystemException("提现审核记录id不能为空");
  58. }
  59. SysAmountAuditingEntity sysAmountAuditingEntity = sysAmountAuditingService.getById(sysAmountAuditingVo.getId());
  60. //提现审核金额
  61. BigDecimal amount = sysAmountAuditingVo.getAmount();
  62. //提现人
  63. String userId = sysAmountAuditingVo.getUserId();
  64. // SysUserAccount sysUserAccountEntity = new SysUserAccount();
  65. // 用户扣减金额
  66. if (StringUtils.isNotEmpty(userId)) {
  67. // sysUserAccountEntity.setUserId(userId);
  68. //提现人账户
  69. SysUserAccount sysUserAccount = sysUserAccountService.getById(userId);
  70. if (ObjectUtils.isNotEmpty(sysUserAccount)) {
  71. //注释掉原先按类型提现的逻辑 ,改为不区分类型 add by hxl 2024-06-18
  72. /**
  73. String amountStatus = sysAmountAuditingVo.getAmountStatus();
  74. if (StringUtils.isNotEmpty(amountStatus)) {
  75. if ("1".equals(amountStatus)) {
  76. sysUserAccount.setHandlingAmountAccount(amount);
  77. sysUserAccount.setHandlingAmountPayment(sysUserAccount.getHandlingAmountPayment().subtract(amount));
  78. // sysUserAccountEntity.setHandlingFee(afterAmount);
  79. } else if ("2".equals(amountStatus)) {
  80. sysUserAccount.setDocumentaryAmountAccount(amount);
  81. sysUserAccount.setDocumentaryAmountpayment(sysUserAccount.getDocumentaryAmountpayment().subtract(amount));
  82. // sysUserAccountEntity.setDocumentary(afterAmount);
  83. } else {
  84. sysUserAccount.setPromotionAmountAccount(amount);
  85. sysUserAccount.setPromotionAmountPayment(sysUserAccount.getPromotionAmountPayment().subtract(amount));
  86. // sysUserAccountEntity.setPromotion(afterAmount);
  87. }
  88. }
  89. **/
  90. //已到账金额 = 原先的到账金额+ 已到账的金额
  91. sysUserAccount.setSumAmountAccount((sysUserAccount.getSumAmountAccount()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountAccount()).add(amount));
  92. //支付中的金额 = 原先的支付金额 -去提现的金额
  93. sysUserAccount.setSumAmountPayment((sysUserAccount.getSumAmountPayment()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountPayment()).subtract(amount));
  94. sysUserAccountService.updateById(sysUserAccount);
  95. }
  96. sysAmountAuditingVo.setAuditingStatus("3");
  97. sysAmountAuditingVo.setAuditingUserId(BaseController.getUser().getId());
  98. sysAmountAuditingVo.setAuditingTime(new Date());
  99. BeanUtils.copyProperties(sysAmountAuditingVo, sysAmountAuditingEntity);
  100. sysAmountAuditingEntity.setCreateTime(null);
  101. baseMapper.updateById(sysAmountAuditingEntity);
  102. //通过审核表id查询历史记录表
  103. LambdaQueryWrapper<SysUserAccountHistory> lqw = new LambdaQueryWrapper<>();
  104. lqw.eq(SysUserAccountHistory::getAuditiingId, sysAmountAuditingEntity.getId());
  105. lqw.eq(SysUserAccountHistory::getUserId, userId);
  106. //插入轨迹表审核成功数据
  107. SysUserAccountHistory sysUserAccountHistory = sysUserAccountHistoryMapper.selectOne(lqw);
  108. //插入轨迹表
  109. SysAmountAuditingHistory sysAmountAuditingHistory =new SysAmountAuditingHistory(null, sysAmountAuditingEntity.getId(), amount, userId,new Date(),"4", "1",sysUserAccountHistory.getId());
  110. sysAmountAuditingHistoryService.save(sysAmountAuditingHistory);
  111. }
  112. }
  113. @Override
  114. public SysAmountAuditingEntity getByUserId(String userId,String amountStatus) {
  115. return baseMapper.getByUserId(userId,amountStatus);
  116. }
  117. @Override
  118. public HttpResult<BasePageResult<SysAmountAuditingEntity>> queryByVo(SysAmountAuditingVo sysAmountAuditingVo) {
  119. try{
  120. HashMap<String, Object> params = new HashMap<>();
  121. PageInfo<List<InsPlyIncome>> pageHelper = null;
  122. PageHelper.startPage(sysAmountAuditingVo.getPageNum(),sysAmountAuditingVo.getPageSize());
  123. params.put("pageNum",sysAmountAuditingVo.getPageNum());
  124. params.put("pageSize",sysAmountAuditingVo.getPageSize());
  125. if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getStartTime())){
  126. params.put("startDate",sysAmountAuditingVo.getStartTime());
  127. }
  128. if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getEndTime())){
  129. params.put("endDate",sysAmountAuditingVo.getEndTime());
  130. }
  131. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getAuditingStatus())){
  132. params.put("auditingStatus",sysAmountAuditingVo.getAuditingStatus());
  133. }
  134. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getUserId())){
  135. params.put("userId",sysAmountAuditingVo.getUserId());
  136. }
  137. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getId())){
  138. params.put("id",sysAmountAuditingVo.getId());
  139. }
  140. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getAmountStatus())){
  141. // params.put("amountStatus",sysAmountAuditingVo.getAmountStatus());
  142. }
  143. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getMobile())){
  144. params.put("mobile",sysAmountAuditingVo.getMobile());
  145. }
  146. if(StringUtils.isNotEmpty(sysAmountAuditingVo.getUserName())){
  147. params.put("userName",sysAmountAuditingVo.getUserName());
  148. }
  149. List<SysAmountAuditingEntity> list = baseMapper.queryPageOrderNew(params);
  150. pageHelper=new PageInfo(list);
  151. BasePageResult<SysAmountAuditingEntity> pageResult=new BasePageResult<SysAmountAuditingEntity>(sysAmountAuditingVo.getPageNum(), sysAmountAuditingVo.getPageSize(), pageHelper.getTotal(), pageHelper.getPages(), list);
  152. return HttpResult.ok(pageResult);
  153. }catch (Exception e){
  154. e.printStackTrace();
  155. return HttpResult.error("查询异常");
  156. }
  157. }
  158. @Override
  159. public BasePageResult<SysAmountAuditingEntity> queryAppPage(SysAmountAuditingVo sysAmountAuditingVo) {
  160. String id = BaseController.getUser().getId();
  161. sysAmountAuditingVo.setUserId(id);
  162. Page<SysAmountAuditingEntity> page = new Page<>(sysAmountAuditingVo.getPageNum(), sysAmountAuditingVo.getPageSize());
  163. QueryWrapper<SysAmountAuditingEntity> wrapper = new QueryWrapper<>();
  164. Page<SysAmountAuditingEntity> sysUserAccountHistoryPage = baseMapper.queryPageOrder(sysAmountAuditingVo, page);
  165. return new BasePageResult<>(sysAmountAuditingVo.getPageNum(), page.getSize(), sysUserAccountHistoryPage.getTotal(), page.getPages(),
  166. sysUserAccountHistoryPage.getRecords());
  167. }
  168. @Override
  169. public List<SysAmountAuditingEntity> getProgressIng(HashMap<String, Object> params) {
  170. return baseMapper.getProgressIng(params);
  171. }
  172. /**
  173. * @version
  174. * @author: hxl
  175. * @Date: 2024/6/19 16:35
  176. * @Description: 提现中、已提现数据查询
  177. */
  178. @Override
  179. public BasePageResult<MyCollectInAdvanceDto> queryAmountPage(MyIncomeAndExpensesQueryDto myIncomeAndExpensesQueryDto) {
  180. Page<MyCollectInAdvanceDto> page = new Page<>(myIncomeAndExpensesQueryDto.getPageNum(), myIncomeAndExpensesQueryDto.getPageSize());
  181. Page<MyCollectInAdvanceDto> recordPage = baseMapper.queryAmountPage(myIncomeAndExpensesQueryDto, page);
  182. return new BasePageResult<>(myIncomeAndExpensesQueryDto.getPageNum(), page.getSize(), recordPage.getTotal(), page.getPages(),
  183. recordPage.getRecords());
  184. }
  185. /**
  186. * @version
  187. * @author: hxl
  188. * @Date: 2024/6/19 17:16
  189. * @Description: 查询总金额
  190. */
  191. @Override
  192. public BigDecimal findSumAmount(MyIncomeAndExpensesQueryDto myIncomeAndExpensesQueryDto) {
  193. return baseMapper.findSumAmount(myIncomeAndExpensesQueryDto);
  194. }
  195. /**
  196. * @version
  197. * @author: hxl
  198. * @Date: 2024/6/19 19:23
  199. * @Description: 驳回 修改状态为 4 驳回状态 冲正金额
  200. */
  201. @Override
  202. public void rejectAmount(SysAmountRejectVo sysAmountRejectVo) {
  203. //审核
  204. if(sysAmountRejectVo.getId()==null || "".equals(sysAmountRejectVo.getId())){
  205. throw new SystemException("提现审核记录id不能为空");
  206. }
  207. if(sysAmountRejectVo.getRejectReason()==null || "".equals(sysAmountRejectVo.getRejectReason())){
  208. throw new SystemException("驳回原因不能为空");
  209. }
  210. SysAmountAuditingEntity sysAmountAuditingEntity = sysAmountAuditingService.getById(sysAmountRejectVo.getId());
  211. //提现审核金额
  212. BigDecimal amount = sysAmountAuditingEntity.getAmount();
  213. //提现人
  214. String userId = sysAmountAuditingEntity.getUserId();
  215. // 用户回退金额
  216. BigDecimal beforeAmount;
  217. BigDecimal afterAmount;
  218. if (StringUtils.isNotEmpty(userId)) {
  219. //提现人账户
  220. SysUserAccount sysUserAccount = sysUserAccountService.getById(userId);
  221. if (ObjectUtils.isNotEmpty(sysUserAccount)) {
  222. //提现前的金额
  223. beforeAmount = sysUserAccount.getSumAmount()==null?BigDecimal.ZERO:sysUserAccount.getSumAmount();
  224. //提现后的金额
  225. afterAmount = beforeAmount.add(amount);
  226. sysUserAccount.setSumAmount(afterAmount);
  227. //提现的总金额 = 原先的提现总金额 - 提现的金额
  228. sysUserAccount.setSumAmountWithdrawal((sysUserAccount.getSumAmountWithdrawal()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountWithdrawal().subtract(amount)));
  229. //支付中的金额 = 原先的支付金额 -去提现的金额
  230. sysUserAccount.setSumAmountPayment((sysUserAccount.getSumAmountPayment()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountPayment()).subtract(amount));
  231. //已到账金额 = 原先的到账金额- 已到账的金额
  232. sysUserAccount.setSumAmountAccount((sysUserAccount.getSumAmountAccount()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountAccount()).subtract(amount));
  233. sysUserAccountService.updateById(sysUserAccount);
  234. }
  235. sysAmountAuditingEntity.setAuditingStatus("4");
  236. sysAmountAuditingEntity.setRejectReason(sysAmountRejectVo.getRejectReason());
  237. sysAmountAuditingEntity.setRejectUserId(BaseController.getUser().getId());
  238. sysAmountAuditingEntity.setRejectTime(new Date());
  239. baseMapper.updateById(sysAmountAuditingEntity);
  240. //更新轨迹表
  241. //通过审核表id查询历史记录表
  242. LambdaQueryWrapper<SysUserAccountHistory> lqw = new LambdaQueryWrapper<>();
  243. lqw.eq(SysUserAccountHistory::getAuditiingId, sysAmountAuditingEntity.getId());
  244. lqw.eq(SysUserAccountHistory::getUserId, userId);
  245. //插入轨迹表审核成功数据
  246. SysUserAccountHistory sysUserAccountHistory = sysUserAccountHistoryMapper.selectOne(lqw);
  247. //插入轨迹表驳回数据
  248. SysAmountAuditingHistory sysAmountAuditingHistory =new SysAmountAuditingHistory(null, sysAmountAuditingEntity.getId(), amount, userId,new Date(),"3", "3",sysUserAccountHistory.getId());
  249. sysAmountAuditingHistoryService.save(sysAmountAuditingHistory);
  250. //将收入支出状态台改为收入 2插入历史表中历史表
  251. sysUserAccountHistory.setId(null);
  252. sysUserAccountHistory.setDocumentary(2);
  253. sysUserAccountHistory.setProperty(5);
  254. sysUserAccountHistory.setBusinessSegmentsType(2); //赋值退款
  255. sysUserAccountHistory.setCreateTime(new Date());
  256. sysUserAccountHistoryMapper.insert(sysUserAccountHistory);
  257. }
  258. }
  259. /**
  260. * @version
  261. * @author: hxl
  262. * @Date: 2024/6/19 20:18
  263. * @Description: 通过用户id查询数据
  264. */
  265. @Override
  266. public BigDecimal findSumAmountByUserId(String userId) {
  267. return baseMapper.findSumAmountByUserId(userId);
  268. }
  269. /**
  270. * @version
  271. * @author: hxl
  272. * @Date: 2024/6/27 16:24
  273. * @Description: 查询已提现、未提现的总金额
  274. */
  275. @Override
  276. public BigDecimal querySumAmount(SysAmountAuditingVo sysAmountAuditingVo) {
  277. return baseMapper.querySumAmount(sysAmountAuditingVo);
  278. }
  279. }