SysUserBillServiceImpl.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package beilv.userbill.service.impl;
  2. import beilv.common.core.text.Convert;
  3. import beilv.common.utils.DateUtils;
  4. import beilv.system.domain.SysMember;
  5. import beilv.system.domain.dto.SysMemberDTO;
  6. import beilv.system.mapper.SysMemberMapper;
  7. import beilv.userbill.domain.SysUserBill;
  8. import beilv.userbill.mapper.SysUserBillMapper;
  9. import beilv.userbill.service.ISysUserBillService;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.transaction.annotation.Transactional;
  13. import java.math.BigDecimal;
  14. import java.text.SimpleDateFormat;
  15. import java.util.Date;
  16. import java.util.List;
  17. /**
  18. * 用户积分流水Service业务层处理
  19. *
  20. * @author ruoyi
  21. * @date 2024-12-31
  22. */
  23. @Service
  24. public class SysUserBillServiceImpl implements ISysUserBillService {
  25. @Autowired
  26. private SysUserBillMapper sysUserBillMapper;
  27. @Autowired
  28. private SysMemberMapper sysMemberMapper;
  29. /**
  30. * 查询用户积分流水
  31. *
  32. * @param id 用户积分流水主键
  33. * @return 用户积分流水
  34. */
  35. @Override
  36. public SysUserBill selectSysUserBillById(Long id) {
  37. return sysUserBillMapper.selectSysUserBillById(id);
  38. }
  39. /**
  40. * 查询用户积分流水列表
  41. *
  42. * @param sysUserBill 用户积分流水
  43. * @return 用户积分流水
  44. */
  45. @Override
  46. public List<SysUserBill> selectSysUserBillList(SysUserBill sysUserBill) {
  47. return sysUserBillMapper.selectSysUserBillList(sysUserBill);
  48. }
  49. /**
  50. * 新增用户积分流水
  51. *
  52. * @param sysUserBill 用户积分流水
  53. * @return 结果
  54. */
  55. @Override
  56. public int insertSysUserBill(SysUserBill sysUserBill) {
  57. sysUserBill.setCreateTime(DateUtils.getNowDate());
  58. return sysUserBillMapper.insertSysUserBill(sysUserBill);
  59. }
  60. /**
  61. * 修改用户积分流水
  62. *
  63. * @param sysUserBill 用户积分流水
  64. * @return 结果
  65. */
  66. @Override
  67. public int updateSysUserBill(SysUserBill sysUserBill) {
  68. sysUserBill.setUpdateTime(DateUtils.getNowDate());
  69. return sysUserBillMapper.updateSysUserBill(sysUserBill);
  70. }
  71. /**
  72. * 批量删除用户积分流水
  73. *
  74. * @param ids 需要删除的用户积分流水主键
  75. * @return 结果
  76. */
  77. @Override
  78. public int deleteSysUserBillByIds(String ids) {
  79. return sysUserBillMapper.deleteSysUserBillByIds(Convert.toStrArray(ids));
  80. }
  81. /**
  82. * 删除用户积分流水信息
  83. *
  84. * @param id 用户积分流水主键
  85. * @return 结果
  86. */
  87. @Override
  88. public int deleteSysUserBillById(Long id) {
  89. return sysUserBillMapper.deleteSysUserBillById(id);
  90. }
  91. /**
  92. * 增加收入流水
  93. *
  94. * @param userId userId
  95. * @param title 账单标题
  96. * @param number 明细数字
  97. * @param balance 剩余
  98. * @param remark 备注
  99. */
  100. @Override
  101. @Transactional(rollbackFor = Exception.class)
  102. public void income(Long userId, String title, BigDecimal number, BigDecimal balance, String remark) {
  103. SysUserBill userBill = SysUserBill.builder()
  104. .userId(userId)
  105. .title(title)
  106. .number(number)
  107. .balance(balance)
  108. .pm(1)
  109. .remark(remark)
  110. .build();
  111. sysUserBillMapper.insertSysUserBill(userBill);
  112. }
  113. /**
  114. * 增加支出流水
  115. *
  116. * @param userId userId
  117. * @param title 账单标题
  118. * @param number 明细数字
  119. * @param balance 剩余
  120. * @param remark 备注
  121. */
  122. @Override
  123. @Transactional(rollbackFor = Exception.class)
  124. public void expend(Long userId, String title, BigDecimal number, BigDecimal balance, String remark) {
  125. SysUserBill userBill = SysUserBill.builder()
  126. .userId(userId)
  127. .title(title)
  128. .number(number)
  129. .balance(balance)
  130. .pm(0)
  131. .remark(remark)
  132. .build();
  133. sysUserBillMapper.insertSysUserBill(userBill);
  134. }
  135. @Override
  136. public int exchange(SysMemberDTO dto) {
  137. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  138. Date date = new Date();
  139. SysMember sysMember = sysMemberMapper.selectSysMemberById(dto.getId());
  140. if (sysMember.getIntegral().compareTo(dto.getIntegral()) < 0) {
  141. throw new RuntimeException("积分不足");
  142. }
  143. BigDecimal surplusIntegral = sysMember.getIntegral().subtract(dto.getIntegral());
  144. expend(dto.getId(), "会员兑换", dto.getIntegral(), surplusIntegral, sdf.format(date) + "消耗" + dto.getIntegral() + "积分," + "兑换" + dto.getGiftName() + "成功");
  145. sysMember.setIntegral(surplusIntegral);
  146. return sysMemberMapper.updateSysMember(sysMember);
  147. }
  148. @Override
  149. public List<SysUserBill> listByUserId(Long userId) {
  150. return sysUserBillMapper.listByUserId(userId);
  151. }
  152. }