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.

267 lines
14 KiB

5 months ago
4 months ago
5 months ago
5 months ago
3 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
3 months ago
3 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
  1. package com.example.demo.serviceImpl.coin;
  2. import com.example.demo.Util.GoldTistV2;
  3. import com.example.demo.domain.entity.User;
  4. import com.example.demo.domain.entity.UserGoldRecord;
  5. import com.example.demo.domain.vo.coin.ConsumeUser;
  6. import com.example.demo.domain.vo.coin.Gold;
  7. import com.example.demo.domain.vo.coin.GoldUser;
  8. import com.example.demo.domain.vo.coin.Result;
  9. import com.example.demo.mapper.coin.ConsumeMapper;
  10. import com.example.demo.mapper.coin.MarketMapper;
  11. import com.example.demo.mapper.coin.UserMapper;
  12. import com.example.demo.service.coin.ConsumeService;
  13. import com.example.demo.service.coin.MarketService;
  14. import com.github.pagehelper.PageHelper;
  15. import com.github.pagehelper.PageInfo;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import java.math.BigDecimal;
  20. import java.time.LocalDate;
  21. import java.time.LocalDateTime;
  22. import java.time.format.DateTimeFormatter;
  23. import java.util.Date;
  24. import java.util.List;
  25. import java.util.Random;
  26. import java.util.UUID;
  27. /**
  28. * @program: gold-java
  29. * @ClassName ConsumeServiceImpl
  30. * @description: 消费模块
  31. * @author: Double
  32. * @create: 202506-23 13:58
  33. * @Version 1.0
  34. **/
  35. @Service
  36. public class ConsumeServiceImpl implements ConsumeService {
  37. @Autowired
  38. private ConsumeMapper consumeMapper;
  39. @Autowired
  40. private UserMapper userMapper;
  41. @Autowired
  42. private MarketMapper marketMapper;
  43. //消耗明细
  44. @Override
  45. public PageInfo<ConsumeUser> selectAll(Integer pageNum, Integer pageSize, ConsumeUser consumeUser){
  46. //获取市场id
  47. List<String> markets = marketMapper.getMarketIds(consumeUser.getMarkets());
  48. consumeUser.setMarkets(markets);
  49. PageHelper.startPage(pageNum, pageSize);
  50. List<ConsumeUser> consumeUsers = consumeMapper.selectAll(consumeUser);
  51. return new PageInfo<>(consumeUsers);
  52. }
  53. //消耗金币统计
  54. @Override
  55. public Gold statsGold(ConsumeUser consumeUser) {
  56. //获取市场id
  57. List<String> markets = marketMapper.getMarketIds(consumeUser.getMarkets());
  58. if (markets.contains("9") || markets.contains("9999")){
  59. markets=null;
  60. }
  61. consumeUser.setMarkets(markets);
  62. Gold gold = consumeMapper.sumGold(consumeUser);
  63. return gold;
  64. }
  65. //消耗明细筛选
  66. @Override
  67. public PageInfo<ConsumeUser> selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser) {
  68. //获取市场id
  69. List<String> markets = marketMapper.getMarketIds(consumeUser.getMarkets());
  70. if (markets.contains("9") || markets.contains("9999")){
  71. markets=null;
  72. }
  73. consumeUser.setMarkets(markets);
  74. PageHelper.startPage(pageNum, pageSize);
  75. List<ConsumeUser> consumeUsers = consumeMapper.selectBy(consumeUser);
  76. return new PageInfo<>(consumeUsers);
  77. }
  78. //新增消耗
  79. @Transactional
  80. @Override
  81. public Result add(ConsumeUser consumeUser) {
  82. if (consumeUser.getTaskGold() == null || consumeUser.getFreeGold() == null || consumeUser.getPermanentGold() == null) {
  83. return Result.error("金币数量不能为空");
  84. }
  85. if (consumeUser.getTaskGold().compareTo(BigDecimal.ZERO) < 0 || consumeUser.getFreeGold().compareTo(BigDecimal.ZERO) < 0 || consumeUser.getPermanentGold().compareTo(BigDecimal.ZERO) < 0) {
  86. return Result.error("金币不能为负数");
  87. }
  88. if(consumeUser.getJwcode()<10000000||consumeUser.getJwcode()>99999999)
  89. {
  90. return Result.error("精网号位数小于8位或大于8位");
  91. }
  92. if(consumeUser.getAdminName()==null){
  93. return Result.error("管理员不能为空");
  94. }
  95. GoldUser goldUser = userMapper.selectUser(consumeUser.getJwcode().toString());
  96. if (goldUser == null) {
  97. return Result.error("用户不存在");
  98. }
  99. UserGoldRecord userGoldRecord = new UserGoldRecord();
  100. String orderNumber = UUID.randomUUID().toString().replaceAll("-", "");
  101. //订单号生成
  102. userGoldRecord.setOrderCode("XF_" + orderNumber);
  103. userGoldRecord.setJwcode(consumeUser.getJwcode());
  104. userGoldRecord.setGoodsName(consumeUser.getGoodsName());
  105. userGoldRecord.setSumGold(-consumeUser.getSumGold().intValue());
  106. userGoldRecord.setPermanentGold(-consumeUser.getPermanentGold().intValue());
  107. // 获取当前月份(1-12)
  108. int currentMonth = LocalDate.now().getMonthValue();
  109. GoldUser gold = userMapper.selectGold(consumeUser.getJwcode().toString());
  110. if (consumeUser.getFreeGold().compareTo(gold.getNowFreeDecember().add(gold.getNowFreeJune())) > 0
  111. || consumeUser.getPermanentGold().compareTo(gold.getNowPermanentGold()) > 0
  112. || consumeUser.getTaskGold().compareTo(gold.getNowTaskGold()) > 0) {
  113. return Result.error("金币数量不足");
  114. }
  115. // 根据当前月份设置对应字段
  116. if (currentMonth >= 1 && currentMonth <= 6) {
  117. // 1-6月:设置6月额度,12月保持默认值
  118. if (consumeUser.getFreeGold().compareTo(gold.getNowFreeJune()) > 0) {
  119. userGoldRecord.setFreeJune(-gold.getNowFreeJune().intValue());
  120. userGoldRecord.setFreeDecember(-(consumeUser.getFreeGold().subtract(gold.getNowFreeJune())).intValue());
  121. } else {
  122. userGoldRecord.setFreeJune(-consumeUser.getFreeGold().intValue());
  123. userGoldRecord.setFreeDecember(0);
  124. }
  125. } else {
  126. // 7-12月:设置12月额度,6月保持默认值
  127. if (consumeUser.getFreeGold().compareTo(gold.getNowFreeDecember()) > 0) {
  128. userGoldRecord.setFreeDecember(-gold.getNowFreeDecember().intValue());
  129. userGoldRecord.setFreeJune(-(consumeUser.getFreeGold().subtract(gold.getNowFreeDecember())).intValue());
  130. } else {
  131. userGoldRecord.setFreeDecember(-consumeUser.getFreeGold().intValue());
  132. userGoldRecord.setFreeJune(0);
  133. }
  134. }
  135. //信息输入
  136. userGoldRecord.setTaskGold(-consumeUser.getTaskGold().intValue());
  137. userGoldRecord.setRemark(consumeUser.getRemark());
  138. userGoldRecord.setType((byte) 1);
  139. userGoldRecord.setIsRefund((byte) 0);
  140. userGoldRecord.setPayPlatform("金币系统");
  141. userGoldRecord.setAdminId(consumeUser.getAdminId());
  142. userGoldRecord.setAuditStatus(1);
  143. userGoldRecord.setCreateTime(new Date());
  144. userGoldRecord.setPayTime(new Date());
  145. consumeMapper.add(userGoldRecord);
  146. consumeMapper.updateUserGold(userGoldRecord);
  147. User user = new User();
  148. user.setJwcode(userGoldRecord.getJwcode());
  149. user.setCurrentPermanentGold(BigDecimal.valueOf(gold.getNowPermanentGold().intValue() - consumeUser.getPermanentGold().intValue()));
  150. user.setCurrentFreeJune(BigDecimal.valueOf(gold.getNowFreeJune().intValue() + userGoldRecord.getFreeJune()));
  151. user.setCurrentFreeDecember(BigDecimal.valueOf(gold.getNowFreeDecember().intValue() + userGoldRecord.getFreeDecember()));
  152. user.setCurrentTaskGold(BigDecimal.valueOf(gold.getNowTaskGold().intValue() - consumeUser.getTaskGold().intValue()));
  153. user.setConsumeNum(gold.getConsumeNum().intValue() + 1);
  154. user.setSumConsumePermanent(BigDecimal.valueOf(-consumeUser.getPermanentGold().intValue()));
  155. user.setSumConsumeFree(BigDecimal.valueOf(-consumeUser.getFreeGold().intValue()));
  156. user.setSumConsumeTask(BigDecimal.valueOf(-consumeUser.getTaskGold().intValue()));
  157. userMapper.updateGold(user);
  158. // if(consumeUser.getJwcode().equals(94226013)){
  159. GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65,
  160. (double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) / 100,
  161. userGoldRecord.getRemark(), ((double) userGoldRecord.getPermanentGold() / 100), consumeUser.getAdminName(), userGoldRecord.getGoodsName());
  162. // }
  163. return Result.success();
  164. }
  165. //
  166. // @Transactional
  167. // @Override
  168. // public Result addRefund(ConsumeUser consumeUser) {
  169. // if (consumeUser.getTaskGold() == null || consumeUser.getFreeGold() == null || consumeUser.getPermanentGold() == null) {
  170. // return Result.error("金币数量不能为空");
  171. // }
  172. // if (consumeUser.getTaskGold().compareTo(BigDecimal.ZERO) < 0 || consumeUser.getFreeGold().compareTo(BigDecimal.ZERO) < 0 || consumeUser.getPermanentGold().compareTo(BigDecimal.ZERO) < 0) {
  173. // return Result.error("金币不能为负数");
  174. // }
  175. // if(consumeUser.getJwcode()<10000000||consumeUser.getJwcode()>99999999)
  176. // {
  177. // return Result.error("精网号位数小于8位或大于8位");
  178. // }
  179. // if(consumeUser.getAdminName()==null){
  180. // return Result.error("管理员不能为空");
  181. // }
  182. // GoldUser goldUser = userMapper.selectUser(consumeUser.getJwcode().toString());
  183. // if (goldUser == null) {
  184. // return Result.error("用户不存在");
  185. // }
  186. // UserGoldRecord userGoldRecord = new UserGoldRecord();
  187. //
  188. // String orderNumber = UUID.randomUUID().toString().replaceAll("-", "");
  189. // //订单号生成
  190. // userGoldRecord.setOrderCode("TKCZ_" + orderNumber);
  191. // userGoldRecord.setJwcode(consumeUser.getJwcode());
  192. // userGoldRecord.setGoodsName(consumeUser.getGoodsName());
  193. // userGoldRecord.setSumGold(-consumeUser.getSumGold().intValue());
  194. // userGoldRecord.setPermanentGold(-consumeUser.getPermanentGold().intValue());
  195. // // 获取当前月份(1-12)
  196. // int currentMonth = LocalDate.now().getMonthValue();
  197. // GoldUser gold = userMapper.selectGold(consumeUser.getJwcode().toString());
  198. // if (consumeUser.getFreeGold().compareTo(gold.getNowFreeDecember().add(gold.getNowFreeJune())) > 0
  199. // || consumeUser.getPermanentGold().compareTo(gold.getNowPermanentGold()) > 0
  200. // || consumeUser.getTaskGold().compareTo(gold.getNowTaskGold()) > 0) {
  201. // return Result.error("金币数量不足");
  202. // }
  203. // // 根据当前月份设置对应字段
  204. // if (currentMonth >= 1 && currentMonth <= 6) {
  205. // // 1-6月:设置6月额度,12月保持默认值
  206. // if (consumeUser.getFreeGold().compareTo(gold.getNowFreeJune()) > 0) {
  207. // userGoldRecord.setFreeJune(-gold.getNowFreeJune().intValue());
  208. // userGoldRecord.setFreeDecember(-(consumeUser.getFreeGold().subtract(gold.getNowFreeJune())).intValue());
  209. // } else {
  210. // userGoldRecord.setFreeJune(-consumeUser.getFreeGold().intValue());
  211. // userGoldRecord.setFreeDecember(0);
  212. // }
  213. // } else {
  214. // // 7-12月:设置12月额度,6月保持默认值
  215. // if (consumeUser.getFreeGold().compareTo(gold.getNowFreeDecember()) > 0) {
  216. // userGoldRecord.setFreeDecember(-gold.getNowFreeDecember().intValue());
  217. // userGoldRecord.setFreeJune(-(consumeUser.getFreeGold().subtract(gold.getNowFreeDecember())).intValue());
  218. // } else {
  219. // userGoldRecord.setFreeDecember(-consumeUser.getFreeGold().intValue());
  220. // userGoldRecord.setFreeJune(0);
  221. // }
  222. // }
  223. // //信息输入
  224. // userGoldRecord.setTaskGold(-consumeUser.getTaskGold().intValue());
  225. // userGoldRecord.setRemark(consumeUser.getRemark());
  226. // userGoldRecord.setType((byte) 2);
  227. // userGoldRecord.setAuditStatus(0);
  228. // userGoldRecord.setPayPlatform("金币系统");
  229. // userGoldRecord.setRefundType("金币退款");
  230. // userGoldRecord.setGoodsName("金币退款");
  231. // userGoldRecord.setRefundModel((byte) 0);
  232. // userGoldRecord.setAdminId(consumeUser.getAdminId());
  233. // userGoldRecord.setCreateTime(new Date());
  234. // userGoldRecord.setPayTime(new Date());
  235. // consumeMapper.addRefund(userGoldRecord);
  236. // consumeMapper.updateUserGold(userGoldRecord);
  237. // User user = new User();
  238. // user.setJwcode(userGoldRecord.getJwcode());
  239. // user.setCurrentPermanentGold(BigDecimal.valueOf(gold.getNowPermanentGold().intValue() - consumeUser.getPermanentGold().intValue()));
  240. // user.setCurrentFreeJune(BigDecimal.valueOf(gold.getNowFreeJune().intValue() + userGoldRecord.getFreeJune()));
  241. // user.setCurrentFreeDecember(BigDecimal.valueOf(gold.getNowFreeDecember().intValue() + userGoldRecord.getFreeDecember()));
  242. // user.setCurrentTaskGold(BigDecimal.valueOf(gold.getNowTaskGold().intValue() - consumeUser.getTaskGold().intValue()));
  243. // user.setConsumeNum(gold.getConsumeNum().intValue() + 1);
  244. // user.setSumConsumePermanent(BigDecimal.valueOf(-consumeUser.getPermanentGold().intValue()));
  245. // user.setSumConsumeFree(BigDecimal.valueOf(-consumeUser.getFreeGold().intValue()));
  246. // user.setSumConsumeTask(BigDecimal.valueOf(-consumeUser.getTaskGold().intValue()));
  247. // userMapper.updateGold(user);
  248. // // if(consumeUser.getJwcode().equals(94226013)){
  249. // GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65,
  250. // (double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) / 100,
  251. // userGoldRecord.getRemark(), ((double) userGoldRecord.getPermanentGold() / 100), consumeUser.getAdminName(), userGoldRecord.getGoodsName());
  252. // // }
  253. // return Result.success();
  254. // }
  255. }