From 339410fc7c2498208f1dc32e3f2aaebe312738d1 Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Wed, 25 Jun 2025 15:55:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B6=88=E8=80=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/controller/ConsumeController.java | 5 +- .../com/example/demo/domain/vo/ConsumeUser.java | 1 + .../java/com/example/demo/domain/vo/GoldUser.java | 2 + .../com/example/demo/mapper/ConsumeMapper.java | 3 ++ .../java/com/example/demo/mapper/UserMapper.java | 6 +++ .../com/example/demo/service/ConsumeService.java | 2 +- .../java/com/example/demo/service/UserService.java | 2 + .../demo/serviceImpl/ConsumeServiceImpl.java | 55 +++++++++++++++++++++- .../example/demo/serviceImpl/UserServiceImpl.java | 7 +++ src/main/resources/mapper/ConsumeMapper.xml | 37 +++++++++++++++ src/main/resources/mapper/UserMapper.xml | 26 ++++++++++ 11 files changed, 141 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/example/demo/controller/ConsumeController.java b/src/main/java/com/example/demo/controller/ConsumeController.java index 05518b5..4f150fd 100644 --- a/src/main/java/com/example/demo/controller/ConsumeController.java +++ b/src/main/java/com/example/demo/controller/ConsumeController.java @@ -1,6 +1,7 @@ package com.example.demo.controller; import com.example.demo.domain.entity.UserGoldRecord; +import com.example.demo.domain.vo.ConsumeUser; import com.example.demo.domain.vo.Gold; import com.example.demo.domain.vo.Page; import com.example.demo.domain.vo.Result; @@ -67,8 +68,8 @@ public class ConsumeController { //消耗金币统计 @PostMapping("/add") - public Result add(@RequestBody UserGoldRecord userGoldRecord) { - consumeService.add(userGoldRecord); + public Result add(@RequestBody ConsumeUser consumeUser) { + consumeService.add(consumeUser); return Result.success(); } diff --git a/src/main/java/com/example/demo/domain/vo/ConsumeUser.java b/src/main/java/com/example/demo/domain/vo/ConsumeUser.java index 9b62405..6e7de4b 100644 --- a/src/main/java/com/example/demo/domain/vo/ConsumeUser.java +++ b/src/main/java/com/example/demo/domain/vo/ConsumeUser.java @@ -34,6 +34,7 @@ public class ConsumeUser implements Serializable { private Integer freeGold; // 免费金币 private Integer taskGold; // 任务金币 private String remark; // 备注 + private Integer adminId; //提交人Id private String adminName; //提交人姓名 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") diff --git a/src/main/java/com/example/demo/domain/vo/GoldUser.java b/src/main/java/com/example/demo/domain/vo/GoldUser.java index 474ca4b..bf84eae 100644 --- a/src/main/java/com/example/demo/domain/vo/GoldUser.java +++ b/src/main/java/com/example/demo/domain/vo/GoldUser.java @@ -26,6 +26,8 @@ public class GoldUser { private Integer NowSumGold; // 当前金币总数 private Integer NowPermanentGold; // 当前永久金币 private Integer NowFreeGold; // 当前免费金币 + private Integer NowFreeJune; // 免费金币6月 + private Integer NowFreeDecember; // 免费金币12月 private Integer NowTaskGold; // 当前任务金币 private Integer historySumGold; // 历史金币总数 private Integer historyPermanentGold; // 历史永久金币 diff --git a/src/main/java/com/example/demo/mapper/ConsumeMapper.java b/src/main/java/com/example/demo/mapper/ConsumeMapper.java index f0d9d63..31d0355 100644 --- a/src/main/java/com/example/demo/mapper/ConsumeMapper.java +++ b/src/main/java/com/example/demo/mapper/ConsumeMapper.java @@ -1,5 +1,6 @@ package com.example.demo.mapper; +import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.domain.vo.ConsumeUser; import org.apache.ibatis.annotations.Mapper; @@ -20,4 +21,6 @@ public interface ConsumeMapper { List selectAll(); List selectBy(ConsumeUser consumeUser); + + void add(UserGoldRecord userGoldRecord); } diff --git a/src/main/java/com/example/demo/mapper/UserMapper.java b/src/main/java/com/example/demo/mapper/UserMapper.java index b348ae8..6368553 100644 --- a/src/main/java/com/example/demo/mapper/UserMapper.java +++ b/src/main/java/com/example/demo/mapper/UserMapper.java @@ -1,5 +1,7 @@ package com.example.demo.mapper; +import com.example.demo.domain.entity.User; +import com.example.demo.domain.vo.Gold; import com.example.demo.domain.vo.GoldUser; import org.apache.ibatis.annotations.Mapper; @@ -16,4 +18,8 @@ import org.apache.ibatis.annotations.Mapper; public interface UserMapper { GoldUser selectUser(String jwcode); + + GoldUser selectGold(String jwcode); + + void updateGold(User user); } diff --git a/src/main/java/com/example/demo/service/ConsumeService.java b/src/main/java/com/example/demo/service/ConsumeService.java index 0323b8d..e0013d9 100644 --- a/src/main/java/com/example/demo/service/ConsumeService.java +++ b/src/main/java/com/example/demo/service/ConsumeService.java @@ -23,5 +23,5 @@ public interface ConsumeService { PageInfo selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser); - void add(UserGoldRecord userGoldRecord); + void add(ConsumeUser consumeUser); } diff --git a/src/main/java/com/example/demo/service/UserService.java b/src/main/java/com/example/demo/service/UserService.java index 8b3c4c4..63516e7 100644 --- a/src/main/java/com/example/demo/service/UserService.java +++ b/src/main/java/com/example/demo/service/UserService.java @@ -1,5 +1,6 @@ package com.example.demo.service; +import com.example.demo.domain.vo.Gold; import com.example.demo.domain.vo.GoldUser; /** @@ -14,4 +15,5 @@ import com.example.demo.domain.vo.GoldUser; public interface UserService { GoldUser selectUser(String jwcode); + GoldUser selectgold(String jwcode); } diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index 8c160a6..e039544 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -1,17 +1,22 @@ package com.example.demo.serviceImpl; +import com.example.demo.domain.entity.User; import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.domain.vo.ConsumeUser; import com.example.demo.domain.vo.Gold; +import com.example.demo.domain.vo.GoldUser; import com.example.demo.mapper.ConsumeMapper; +import com.example.demo.mapper.UserMapper; import com.example.demo.service.ConsumeService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Date; import java.util.List; import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; @@ -31,6 +36,9 @@ public class ConsumeServiceImpl implements ConsumeService { @Autowired private ConsumeMapper consumeMapper; + @Autowired + private UserMapper userMapper; + //消耗明细 @Override public PageInfo selectAll(Integer pageNum, Integer pageSize) { @@ -84,7 +92,8 @@ public class ConsumeServiceImpl implements ConsumeService { //新增消耗 @Override - public void add(UserGoldRecord userGoldRecord) { + public void add(ConsumeUser consumeUser) { + UserGoldRecord userGoldRecord = new UserGoldRecord(); // 获取当前时间戳部分 String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); @@ -101,6 +110,48 @@ public class ConsumeServiceImpl implements ConsumeService { //订单号生成 userGoldRecord.setOrderCode(timestampPart + counterPart + randomNum); - + userGoldRecord.setJwcode(consumeUser.getJwcode()); + userGoldRecord.setGoodsName(consumeUser.getGoodsName()); + userGoldRecord.setSumGold(consumeUser.getSumGold()); + userGoldRecord.setPermanentGold(consumeUser.getPermanentGold()); + // 获取当前月份(1-12) + int currentMonth = LocalDate.now().getMonthValue(); + GoldUser gold = userMapper.selectGold(consumeUser.getJwcode().toString()); + // 根据当前月份设置对应字段 + if (currentMonth >= 1 && currentMonth <= 6) { + // 1-6月:设置6月额度,12月保持默认值 + if(consumeUser.getFreeGold()>gold.getNowFreeJune()) { + userGoldRecord.setFreeJune(gold.getNowFreeJune()); + userGoldRecord.setFreeDecember(consumeUser.getFreeGold()-gold.getNowFreeJune()); + }else { + userGoldRecord.setFreeJune(consumeUser.getFreeGold()); + userGoldRecord.setFreeDecember(0); + } + } else { + // 7-12月:设置12月额度,6月保持默认值 + if(consumeUser.getFreeGold()>gold.getNowFreeDecember()) { + userGoldRecord.setFreeDecember(gold.getNowFreeDecember()); + userGoldRecord.setFreeJune(consumeUser.getFreeGold()-gold.getNowFreeDecember()); + }else { + userGoldRecord.setFreeDecember(consumeUser.getFreeGold()); + userGoldRecord.setFreeJune(0); + } + } + userGoldRecord.setTaskGold(consumeUser.getTaskGold()); + userGoldRecord.setRemark(consumeUser.getRemark()); + userGoldRecord.setType((byte) 1); + userGoldRecord.setIsRefund((byte) 0); + userGoldRecord.setAdminId(consumeUser.getAdminId()); + userGoldRecord.setCreateTime(new Date()); + userGoldRecord.setPayTime(new Date()); + consumeMapper.add(userGoldRecord); + User user = new User(); + user.setJwcode(userGoldRecord.getJwcode()); + user.setCurrentPermanentGold(gold.getNowPermanentGold()-consumeUser.getPermanentGold()); + user.setCurrentFreeJune(gold.getNowFreeJune()-userGoldRecord.getFreeJune()); + user.setCurrentFreeDecember(gold.getNowFreeDecember()-userGoldRecord.getFreeDecember()); + user.setCurrentTaskGold(gold.getNowTaskGold()-consumeUser.getTaskGold()); + user.setConsumeNum(gold.getConsumeNum()-1); + userMapper.updateGold(user); } } diff --git a/src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java index a0b4651..29f2997 100644 --- a/src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java @@ -1,5 +1,6 @@ package com.example.demo.serviceImpl; +import com.example.demo.domain.vo.Gold; import com.example.demo.domain.vo.GoldUser; import com.example.demo.mapper.ConsumeMapper; import com.example.demo.mapper.UserMapper; @@ -28,4 +29,10 @@ public class UserServiceImpl implements UserService { GoldUser user = userMapper.selectUser(jwcode); return user; } + + @Override + public GoldUser selectgold(String jwcode) { + GoldUser gold = userMapper.selectGold(jwcode); + return gold; + } } diff --git a/src/main/resources/mapper/ConsumeMapper.xml b/src/main/resources/mapper/ConsumeMapper.xml index d18e382..db1984f 100644 --- a/src/main/resources/mapper/ConsumeMapper.xml +++ b/src/main/resources/mapper/ConsumeMapper.xml @@ -59,4 +59,41 @@ + + + INSERT INTO user_gold_record + + order_code, + jwcode, + sum_gold, + permanent_gold, + free_june, + free_december, + task_gold, + goods_name, + remark, + type, + is_refund, + admin_id, + create_time, + pay_time + + VALUES + + #{orderCode}, + #{jwcode}, + #{sumGold}, + #{permanentGold}, + #{freeJune}, + #{freeDecember}, + #{taskGold}, + #{goodsName}, + #{remark}, + #{type}, + #{isRefund}, + #{adminId}, + #{createTime}, + #{payTime} + + \ No newline at end of file diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index 8a66507..70596af 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/src/main/resources/mapper/UserMapper.xml @@ -22,4 +22,30 @@ FROM user WHERE jwcode = #{jwcode} + + + + + + + UPDATE user + SET + current_permanent_gold = #{currentPermanentGold}, + current_free_june = #{currentFreeJune}, + current_free_december = #{currentFreeDecember}, + current_task_gold = #{currentTaskGold}, + consume_num = #{consumeNum}, + update_time = NOW() + WHERE jwcode = #{jwcode} + \ No newline at end of file