CmUserBalanceWithdrawalsService.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.caimei.modules.user.service;
  2. import com.caimei.modules.user.dao.CmUserBalanceWithdrawalsDao;
  3. import com.caimei.modules.user.entity.CmUserBalanceWithdrawals;
  4. import com.caimei.modules.user.dao.CmUserBalanceRecordDao;
  5. import com.caimei.modules.user.dao.CmUserDao;
  6. import com.caimei.modules.user.entity.CmUser;
  7. import com.caimei.modules.user.entity.CmUserBalanceRecord;
  8. import com.caimei.utils.MathUtil;
  9. import com.thinkgem.jeesite.common.persistence.Page;
  10. import com.thinkgem.jeesite.common.service.CrudService;
  11. import com.thinkgem.jeesite.common.utils.StringUtils;
  12. import com.thinkgem.jeesite.modules.sys.entity.User;
  13. import com.thinkgem.jeesite.modules.sys.utils.UserUtils;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import javax.annotation.Resource;
  17. import java.math.BigDecimal;
  18. import java.util.Date;
  19. import java.util.List;
  20. /**
  21. * 会所余额提现Service
  22. *
  23. * @author lijun
  24. * @version 2019-11-12
  25. */
  26. @Service
  27. @Transactional(readOnly = true)
  28. public class CmUserBalanceWithdrawalsService extends CrudService<CmUserBalanceWithdrawalsDao, CmUserBalanceWithdrawals> {
  29. @Resource
  30. CmUserBalanceWithdrawalsDao cmUserBalanceWithdrawalsDao;
  31. @Resource
  32. private CmUserDao cmUserDao;
  33. @Resource
  34. private CmUserBalanceRecordDao cmUserBalanceRecordDao;
  35. public CmUserBalanceWithdrawals get(String id) {
  36. CmUserBalanceWithdrawals withdrawals = super.get(id);
  37. setUserName(withdrawals);
  38. return withdrawals;
  39. }
  40. private void setUserName(CmUserBalanceWithdrawals withdrawals) {
  41. if (withdrawals != null) {
  42. if (StringUtils.isNotBlank(withdrawals.getApplicant())) {
  43. User user = UserUtils.get(withdrawals.getApplicant());
  44. if (user != null) {
  45. withdrawals.setApplicantName(user.getName());
  46. }
  47. }
  48. if (StringUtils.isNotBlank(withdrawals.getReviewer())) {
  49. User user = UserUtils.get(withdrawals.getReviewer());
  50. if (user != null) {
  51. withdrawals.setReviewerName(user.getName());
  52. }
  53. }
  54. }
  55. }
  56. public List<CmUserBalanceWithdrawals> findList(CmUserBalanceWithdrawals cmUserBalanceWithdrawals) {
  57. return super.findList(cmUserBalanceWithdrawals);
  58. }
  59. public Page<CmUserBalanceWithdrawals> findPage(Page<CmUserBalanceWithdrawals> page, CmUserBalanceWithdrawals cmUserBalanceWithdrawals) {
  60. Page<CmUserBalanceWithdrawals> withdrawalsPage = super.findPage(page, cmUserBalanceWithdrawals);
  61. List<CmUserBalanceWithdrawals> withdrawalsList = withdrawalsPage.getList();
  62. if (withdrawalsList != null && withdrawalsList.size() > 0) {
  63. for (CmUserBalanceWithdrawals withdrawals : withdrawalsList) {
  64. setUserName(withdrawals);
  65. }
  66. }
  67. return withdrawalsPage;
  68. }
  69. @Transactional(readOnly = false)
  70. public void save(CmUserBalanceWithdrawals cmUserBalanceWithdrawals) {
  71. CmUser cmUser = cmUserDao.get(String.valueOf(cmUserBalanceWithdrawals.getUserID()));
  72. if (MathUtil.compare(cmUser.getAbleUserMoney(), cmUserBalanceWithdrawals.getWithdrawalsFee()) > -1) {
  73. //余额必须大于等于提现金额
  74. User user = UserUtils.getUser();
  75. Date date = new Date();
  76. cmUserBalanceWithdrawals.setAddDate(date);
  77. cmUserBalanceWithdrawals.setApplicant(user.getId());
  78. cmUserBalanceWithdrawals.setStatus("0");
  79. cmUserBalanceWithdrawals.setDelFlag("0");
  80. cmUserBalanceWithdrawalsDao.insert(cmUserBalanceWithdrawals);
  81. }
  82. }
  83. @Transactional(readOnly = false)
  84. public void delete(CmUserBalanceWithdrawals cmUserBalanceWithdrawals) {
  85. cmUserBalanceWithdrawalsDao.deleteById(Integer.valueOf(cmUserBalanceWithdrawals.getId()));
  86. }
  87. @Transactional(readOnly = false)
  88. public void deleteById(Integer id) {
  89. cmUserBalanceWithdrawalsDao.deleteById(id);
  90. }
  91. @Transactional(readOnly = false)
  92. public void withdrawalReviewData(CmUserBalanceWithdrawals cmUserBalanceWithdrawals) {
  93. User user = UserUtils.getUser();
  94. Date time = new Date();
  95. if (StringUtils.isNotBlank(cmUserBalanceWithdrawals.getReason())) {
  96. //审核不通过
  97. cmUserBalanceWithdrawals.setStatus("2");
  98. cmUserBalanceWithdrawals.setReviewer(user.getId());
  99. cmUserBalanceWithdrawals.setReviewTime(time);
  100. cmUserBalanceWithdrawalsDao.update(cmUserBalanceWithdrawals);
  101. } else {
  102. //审核通过
  103. cmUserBalanceWithdrawals.setStatus("1");
  104. cmUserBalanceWithdrawals.setReviewer(user.getId());
  105. cmUserBalanceWithdrawals.setReviewTime(time);
  106. cmUserBalanceWithdrawals.setPayTime(time);
  107. cmUserBalanceWithdrawalsDao.update(cmUserBalanceWithdrawals);
  108. //添加余额收支记录
  109. CmUserBalanceRecord cmUserBalanceRecord = new CmUserBalanceRecord();
  110. cmUserBalanceRecord.setUserId(cmUserBalanceWithdrawals.getUserID().intValue());
  111. cmUserBalanceRecord.setType("2");
  112. cmUserBalanceRecord.setBalanceType("5");
  113. cmUserBalanceRecord.setAddDate(time);
  114. //提现金额
  115. BigDecimal withdrawalsFee = cmUserBalanceWithdrawals.getWithdrawalsFee();
  116. cmUserBalanceRecord.setAmount(String.valueOf(withdrawalsFee));
  117. cmUserBalanceRecord.setWithdrawalsId(Integer.parseInt(cmUserBalanceWithdrawals.getId()));//提现信息ID
  118. cmUserBalanceRecord.setDelFlag("0");
  119. cmUserBalanceRecordDao.insertUserBalanceRecord(cmUserBalanceRecord);
  120. //更新用户余额总金额
  121. CmUser cmUser = cmUserDao.get(String.valueOf(cmUserBalanceWithdrawals.getUserID()));
  122. cmUser.setUserID(cmUserBalanceWithdrawals.getUserID().intValue());
  123. BigDecimal sub = MathUtil.sub(cmUser.getAbleUserMoney(), withdrawalsFee);
  124. cmUser.setAbleUserMoney(sub.doubleValue());
  125. cmUser.setUserMoney(sub.doubleValue());
  126. cmUserDao.updateMoney(cmUser);
  127. }
  128. }
  129. @Transactional(readOnly = false)
  130. public void withdrawalEditSave(CmUserBalanceWithdrawals cmUserBalanceWithdrawals) {
  131. cmUserBalanceWithdrawalsDao.update(cmUserBalanceWithdrawals);
  132. }
  133. @Transactional(readOnly = false)
  134. public void rollBackApply(CmUserBalanceWithdrawals cmUserBalanceWithdrawals) {
  135. //撤销提现记录
  136. cmUserBalanceRecordDao.updateByWithdrawalsId(cmUserBalanceWithdrawals.getId());
  137. //撤销用户余额金额
  138. CmUser cmUser = cmUserDao.get(String.valueOf(cmUserBalanceWithdrawals.getUserID()));
  139. BigDecimal userMoney = MathUtil.add(cmUser.getAbleUserMoney(), cmUserBalanceWithdrawals.getWithdrawalsFee());
  140. cmUser.setAbleUserMoney(userMoney.doubleValue());
  141. cmUser.setUserMoney(userMoney.doubleValue());
  142. cmUserDao.updateMoney(cmUser);
  143. //撤销提现记录
  144. cmUserBalanceWithdrawals.setStatus("0");
  145. cmUserBalanceWithdrawals.setReviewTime(null);
  146. cmUserBalanceWithdrawals.setReviewer(null);
  147. cmUserBalanceWithdrawals.setPayTime(null);
  148. cmUserBalanceWithdrawalsDao.update(cmUserBalanceWithdrawals);
  149. }
  150. }