金币系统后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

204 lines
7.4 KiB

4 months ago
  1. package com.example.demo.serviceImpl;
  2. import com.example.demo.domain.entity.Audit;
  3. import com.example.demo.domain.entity.Detail;
  4. import com.example.demo.domain.entity.Recharge;
  5. import com.example.demo.domain.entity.User;
  6. import com.example.demo.domain.vo.RechargeVo;
  7. import com.example.demo.domain.vo.Result;
  8. import com.example.demo.mapper.AuditMapper;
  9. import com.example.demo.mapper.DetailMapper;
  10. import com.example.demo.mapper.RechargeMapper;
  11. import com.example.demo.mapper.UserMapper;
  12. import com.example.demo.sevice.RechargeService;
  13. import com.github.pagehelper.PageHelper;
  14. import com.github.pagehelper.PageInfo;
  15. import lombok.RequiredArgsConstructor;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.cache.annotation.CacheConfig;
  18. import org.springframework.cache.annotation.CacheEvict;
  19. import org.springframework.cache.annotation.CachePut;
  20. import org.springframework.cache.annotation.Cacheable;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import java.math.BigDecimal;
  24. import java.time.LocalDate;
  25. import java.time.Month;
  26. import java.util.List;
  27. import java.util.UUID;
  28. @Transactional
  29. @Service
  30. @RequiredArgsConstructor
  31. @CacheConfig(cacheNames = "recharge")
  32. public class RechargeServiceImpl implements RechargeService {
  33. @Autowired
  34. private RechargeMapper rechargeMapper;
  35. @Autowired
  36. private AuditMapper auditMapper;
  37. @Autowired
  38. private DetailMapper detailMapper;
  39. @Autowired
  40. private UserMapper userMapper;
  41. @Override
  42. @Transactional
  43. @CacheEvict(value = "recharge",allEntries = true)
  44. public int add(Recharge recharge) throws Exception {
  45. // return rechargeMapper.insert(recharge);
  46. String uuid = UUID.randomUUID().toString().replace("-", ""); // 去掉UUID中的'-'
  47. recharge.setOrderCode(uuid);
  48. int result = rechargeMapper.insert(recharge);
  49. if (result != 1) {
  50. throw new Exception("Failed to insert recharge data");
  51. }
  52. System.out.println(recharge);
  53. // 检查充值金额是否在有效范围内
  54. BigDecimal RechargeGold = recharge.getRechargeGold();
  55. BigDecimal PaidGold = recharge.getPaidGold();
  56. BigDecimal FreeGold = recharge.getFreeGold();
  57. if (RechargeGold.compareTo(BigDecimal.ZERO) < 0 || RechargeGold.compareTo(new BigDecimal("999999")) > 0 ||
  58. PaidGold.compareTo(BigDecimal.ZERO) < 0 || PaidGold.compareTo(new BigDecimal("999999")) > 0 ||
  59. FreeGold.compareTo(BigDecimal.ZERO) < 0 || FreeGold.compareTo(new BigDecimal("999999")) > 0) {
  60. throw new Exception("充值金额有误,金额必须在0到999999之间!");
  61. }
  62. int rechargeId = recharge.getRechargeId();
  63. String jwCode= recharge.getJwcode();
  64. String JwCode = recharge.getJwcode();
  65. int activityId = recharge.getActivityId();
  66. BigDecimal paidGold =recharge.getPaidGold();
  67. BigDecimal freeGold =recharge.getFreeGold();
  68. BigDecimal rechargeGold =recharge.getRechargeGold();
  69. String rechargeWay =recharge.getRechargeWay();
  70. String remark =recharge.getRemark();
  71. int adminId =recharge.getAdminId();
  72. Detail detail = new Detail();
  73. //根据jwcode和充值类型判断detail有没有,有首充标识设为0,否者设为1
  74. String jwcode= recharge.getJwcode();
  75. Integer count=rechargeMapper.getAllByjwAndup(jwcode);
  76. System.out.println("count:-----"+count);
  77. if(count==0){
  78. detail.setFirstRecharge(1);
  79. }else{
  80. detail.setFirstRecharge(0);
  81. }
  82. detail.setJwcode(JwCode);
  83. detail.setActivityId(activityId);
  84. detail.setRechargeCoin(rechargeGold);
  85. detail.setFreeCoin(freeGold);
  86. detail.setRechargeWay(rechargeWay);
  87. detail.setRemark(remark);
  88. detail.setUpdateType(0);
  89. detail.setAdminId(adminId);
  90. detail.setConsumePlatform("金币系统");
  91. System.out.println(uuid+"/*/*/*-/-*/-/*-/-*/-/*-/*-/-*");
  92. detail.setOrderCode(uuid);
  93. System.out.println(detail);
  94. result = detailMapper.add(detail);
  95. if (result != 1) {
  96. throw new Exception("Failed to insert another entity");
  97. }
  98. // BigDecimal paidGold1 =recharge.getPaidGold();
  99. // BigDecimal freeGold1 =recharge.getFreeGold();
  100. // User user = userMapper.select(jwcode);
  101. // BigDecimal buyJb =user.getBuyJb();
  102. //
  103. // buyJb = buyJb.add(paidGold1);
  104. //
  105. //// 设置更新后的Sumgold回到user对象
  106. // user.setBuyJb(buyJb);
  107. // LocalDate now = LocalDate.now();
  108. //
  109. //// 判断当前日期是在六月之前还是之后
  110. // Month currentMonth = now.getMonth();
  111. // boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue();
  112. // boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue();
  113. //
  114. //// 根据月份更新 free6 或 free12
  115. // if (isBeforeJune) {
  116. // // 如果是六月前,更新 free6
  117. // BigDecimal free6 = user.getFree6().add(freeGold1);
  118. // user.setFree6(free6);
  119. // } else if (isAfterJune) {
  120. // // 如果是六月后,更新 free12
  121. // BigDecimal free12 = user.getFree12().add(freeGold1);
  122. // user.setFree12(free12);
  123. // }
  124. //
  125. // System.out.println(user+"----------------------------------------------------------");
  126. // result = userMapper.update(user);
  127. if (result != 1) {
  128. throw new Exception("Failed to insert another entity");
  129. }
  130. int detailId = detail.getDetailId();
  131. System.out.println(detailId);
  132. Audit audit = new Audit();
  133. audit.setRechargeId(rechargeId);
  134. audit.setJwcode(jwCode);
  135. audit.setDetailId(detailId);
  136. System.out.println(audit+"---------------------------------------");
  137. result = auditMapper.insert(audit);
  138. if (result != 1) {
  139. throw new Exception("Failed to insert another entity");
  140. }
  141. return result;
  142. }
  143. @CacheEvict(value = "recharge",allEntries = true)
  144. @Override
  145. public int edit(Recharge recharge) throws Exception {
  146. recharge.setFlag(0);
  147. return rechargeMapper.update(recharge);
  148. }
  149. @Override
  150. public Recharge findById(int id) throws Exception {
  151. return null;
  152. }
  153. @Cacheable(key="#root.method.name")
  154. @Override
  155. public List<RechargeVo> search(RechargeVo rechargeVo) {
  156. return rechargeMapper.select(rechargeVo);
  157. }
  158. @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #rechargeVo.hashCode() ")
  159. @Override
  160. public PageInfo<RechargeVo> searchForPage(Integer pageNum, Integer pageSize, RechargeVo rechargeVo) {
  161. PageHelper.startPage(pageNum, pageSize);
  162. List<RechargeVo> list= rechargeMapper.select(rechargeVo);
  163. return new PageInfo<>(list);
  164. }
  165. @Cacheable(key="#root.method.name")
  166. @Override
  167. public int getAllByjwAndup(String jwcode) {
  168. return rechargeMapper.getAllByjwAndup(jwcode);
  169. }
  170. @CacheEvict(value = "recharge",allEntries = true)
  171. @Override
  172. public Result addRecharges(List<Recharge> recharges) {
  173. try {
  174. for (Recharge recharge : recharges) {
  175. add(recharge); // 调用add方法处理每个Recharge对象
  176. }
  177. return Result.success("批量添加成功");
  178. } catch (Exception e) {
  179. return Result.error("批量添加失败: " + e.getMessage());
  180. }
  181. }
  182. }