Browse Source

1.精简 user-service 中的数据模型
2.更新 user-service 的 dto 和 po 数据约束, 以及 po 的数据库表结构

reghao 6 months ago
parent
commit
cdbf12243d
25 changed files with 129 additions and 202 deletions
  1. 6 7
      user/user-service/src/main/java/cn/reghao/tnb/user/app/controller/UserWalletController.java
  2. 0 16
      user/user-service/src/main/java/cn/reghao/tnb/user/app/db/mapper/UserRecommendMapper.java
  3. 2 0
      user/user-service/src/main/java/cn/reghao/tnb/user/app/db/mapper/UserVipMapper.java
  4. 1 2
      user/user-service/src/main/java/cn/reghao/tnb/user/app/db/mapper/WalletBillMapper.java
  5. 3 0
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/dto/WalletDto.java
  6. 8 0
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserContact.java
  7. 11 2
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserContactRecord.java
  8. 0 24
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserMeasurements.java
  9. 11 2
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserProfile.java
  10. 0 18
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserRecommend.java
  11. 4 0
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserRelation.java
  12. 6 0
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserVip.java
  13. 8 0
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/WalletBill.java
  14. 6 0
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/WalletCharge.java
  15. 0 21
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/vo/BillRecord.java
  16. 5 3
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/vo/MyVip.java
  17. 3 8
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/vo/MyWallet.java
  18. 0 14
      user/user-service/src/main/java/cn/reghao/tnb/user/app/model/vo/WalletDetail.java
  19. 12 18
      user/user-service/src/main/java/cn/reghao/tnb/user/app/rpc/UserServiceImpl.java
  20. 6 17
      user/user-service/src/main/java/cn/reghao/tnb/user/app/rpc/UserWalletServiceImpl.java
  21. 8 3
      user/user-service/src/main/java/cn/reghao/tnb/user/app/service/UserVipService.java
  22. 20 21
      user/user-service/src/main/java/cn/reghao/tnb/user/app/service/WalletService.java
  23. 0 22
      user/user-service/src/main/resources/mapper/UserRecommendMapper.xml
  24. 7 2
      user/user-service/src/main/resources/mapper/UserVipMapper.xml
  25. 2 2
      user/user-service/src/main/resources/mapper/WalletBillMapper.xml

+ 6 - 7
user/user-service/src/main/java/cn/reghao/tnb/user/app/controller/UserWalletController.java

@@ -6,8 +6,8 @@ import cn.reghao.tnb.common.auth.UserContext;
 import cn.reghao.tnb.user.api.dto.ChargeReq;
 import cn.reghao.tnb.user.api.iface.UserWalletService;
 import cn.reghao.tnb.user.app.model.dto.WalletDto;
-import cn.reghao.tnb.user.app.model.po.Wallet;
-import cn.reghao.tnb.user.app.model.vo.BillRecord;
+import cn.reghao.tnb.user.app.model.po.WalletBill;
+import cn.reghao.tnb.user.app.model.vo.MyWallet;
 import cn.reghao.tnb.user.app.service.WalletService;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Operation;
@@ -37,17 +37,16 @@ public class UserWalletController {
     @AuthUser
     @GetMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getUserWallet() {
-        long loginUser = UserContext.getUserId();
-        Wallet wallet = walletService.getUserWallet(loginUser);
-        return WebResult.success(wallet);
+        MyWallet myWallet = walletService.getMyWallet();
+        return WebResult.success(myWallet);
     }
 
     @Operation(summary = "获取钱包账单", description = "N")
     @AuthUser
     @GetMapping(value = "/bill", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getWalletBill() {
-        long loginUser = UserContext.getUserId();
-        List<BillRecord> list = walletService.getWalletBill(loginUser);
+        int pageNumber = 1;
+        List<WalletBill> list = walletService.getWalletBillList(pageNumber);
         return WebResult.success(list);
     }
 

+ 0 - 16
user/user-service/src/main/java/cn/reghao/tnb/user/app/db/mapper/UserRecommendMapper.java

@@ -1,16 +0,0 @@
-package cn.reghao.tnb.user.app.db.mapper;
-
-import cn.reghao.jutil.jdk.db.BaseMapper;
-import cn.reghao.tnb.user.app.model.po.UserRecommend;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-/**
- * @author reghao
- * @date 2025-03-31 16:00:40
- */
-@Mapper
-public interface UserRecommendMapper extends BaseMapper<UserRecommend> {
-    void updateMode(@Param("userId") long userId, @Param("mode") int mode);
-    Integer findByUserId(long userId);
-}

+ 2 - 0
user/user-service/src/main/java/cn/reghao/tnb/user/app/db/mapper/UserVipMapper.java

@@ -12,5 +12,7 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface UserVipMapper extends BaseMapper<UserVip> {
     void updateUserVip(@Param("userId") long userId, @Param("expireAt") long expireAt);
+    void updateRcmdMode(@Param("userId") long userId, @Param("rcmdMode") int rcmdMode);
+
     UserVip findByUserId(long userId);
 }

+ 1 - 2
user/user-service/src/main/java/cn/reghao/tnb/user/app/db/mapper/WalletBillMapper.java

@@ -2,7 +2,6 @@ package cn.reghao.tnb.user.app.db.mapper;
 
 import cn.reghao.jutil.jdk.db.BaseMapper;
 import cn.reghao.tnb.user.app.model.po.WalletBill;
-import cn.reghao.tnb.user.app.model.vo.WalletDetail;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -15,5 +14,5 @@ import java.util.List;
 @Mapper
 public interface WalletBillMapper extends BaseMapper<WalletBill> {
     List<WalletBill> findByOwner(@Param("pageSize") int pageSize, @Param("owner") long owner);
-    WalletDetail findByTypeAndOwner(@Param("type") int type, @Param("owner") long owner);
+    double findSumByTypeAndOwner(@Param("type") int type, @Param("owner") long owner);
 }

+ 3 - 0
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/dto/WalletDto.java

@@ -2,11 +2,14 @@ package cn.reghao.tnb.user.app.model.dto;
 
 import lombok.Getter;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * @author reghao
  * @date 2024-04-16 16:35:49
  */
 @Getter
 public class WalletDto {
+    @NotNull
     private Double quantity;
 }

+ 8 - 0
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserContact.java

@@ -5,6 +5,9 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
 /**
  * @author reghao
  * @date 2022-04-18 10:59:35
@@ -13,9 +16,14 @@ import lombok.Setter;
 @Getter
 @Setter
 public class UserContact extends BaseObject<Integer> {
+    @NotNull
     private Long friendId;
+    @NotNull
+    @Size(max = 255, message = "remarkName 不能超过 255 个字符")
     private String remarkName;
+    @NotNull
     private Integer status;
+    @NotNull
     private Long owner;
 
     public UserContact(Long friendId, long owner) {

+ 11 - 2
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserContactRecord.java

@@ -4,6 +4,9 @@ import cn.reghao.jutil.jdk.db.BaseObject;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
 /**
  * @author reghao
  * @date 2022-04-18 15:31:53
@@ -11,11 +14,17 @@ import lombok.Setter;
 @Getter
 @Setter
 public class UserContactRecord extends BaseObject<Integer> {
+    @NotNull
     private Long applyUser;
+    @NotNull
     private Long appliedUser;
     // 1- 非好友, 2 - 已是好友
-    private int friendStatus;
+    @NotNull
+    private Integer friendStatus;
     // 0 - 添加联系人, 1 - 已发送添加申请, 2 - 已通过添加申请
-    private int applyStatus;
+    @NotNull
+    private Integer applyStatus;
+    @NotNull
+    @Size(max = 255, message = "remarkName 不能超过 255 个字符")
     private String remark;
 }

+ 0 - 24
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserMeasurements.java

@@ -1,24 +0,0 @@
-package cn.reghao.tnb.user.app.model.po;
-
-import cn.reghao.jutil.jdk.db.BaseObject;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-/**
- * @author reghao
- * @date 2025-08-05 16:17:11
- */
-@AllArgsConstructor
-@NoArgsConstructor
-@Setter
-@Getter
-public class UserMeasurements extends BaseObject<Integer> {
-    private double height;
-    private double weight;
-    private double bust;
-    private double waist;
-    private double hips;
-    private double thigh;
-}

+ 11 - 2
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserProfile.java

@@ -4,6 +4,9 @@ import cn.reghao.jutil.jdk.db.BaseObject;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
 /**
  * @author reghao
  * @date 2024-02-14 14:58:31
@@ -11,11 +14,17 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 @Getter
 public class UserProfile extends BaseObject<Integer> {
+    @NotNull
     private Long userId;
+    @NotNull
     private Integer gender;
+    @NotNull
+    @Size(max = 255, message = "signature 不能超过 255 个字符")
     private String signature;
-    private int following;
-    private int follower;
+    @NotNull
+    private Integer following;
+    @NotNull
+    private Integer follower;
 
     public UserProfile(long userId) {
         this.userId = userId;

+ 0 - 18
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserRecommend.java

@@ -1,18 +0,0 @@
-package cn.reghao.tnb.user.app.model.po;
-
-import cn.reghao.jutil.jdk.db.BaseObject;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-/**
- * @author reghao
- * @date 2025-03-31 15:59:55
- */
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-public class UserRecommend extends BaseObject<Integer> {
-    private long userId;
-    private int mode;
-}

+ 4 - 0
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserRelation.java

@@ -6,6 +6,8 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * @author reghao
  * @date 2022-02-28 13:33:09
@@ -15,6 +17,8 @@ import lombok.Setter;
 @Setter
 @Getter
 public class UserRelation extends BaseObject<Integer> {
+    @NotNull
     private Long userId;
+    @NotNull
     private Long followingId;
 }

+ 6 - 0
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/UserVip.java

@@ -5,6 +5,8 @@ import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * @author reghao
  * @date 2022-09-05 02:51:45
@@ -13,6 +15,10 @@ import lombok.NoArgsConstructor;
 @AllArgsConstructor
 @Getter
 public class UserVip extends BaseObject<Integer> {
+    @NotNull
     private Long userId;
+    @NotNull
     private Long expireAt;
+    @NotNull
+    private Integer rcmdMode;
 }

+ 8 - 0
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/WalletBill.java

@@ -6,6 +6,7 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
 
 /**
@@ -17,11 +18,18 @@ import java.time.LocalDateTime;
 @Setter
 @Getter
 public class WalletBill extends BaseObject<Integer> {
+    @NotNull
     private Integer type;
+    @NotNull
     private Double quantity;
+    @NotNull
     private LocalDateTime createAt;
+    @NotNull
     private Long owner;
 
+    private String typeStr;
+    private String createAtStr;
+
     public WalletBill(int type, double quantity, long owner) {
         this.type = type;
         this.quantity = quantity;

+ 6 - 0
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/WalletCharge.java

@@ -7,6 +7,8 @@ import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * @author reghao
  * @date 2024-07-06 11:25:29
@@ -15,9 +17,13 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 @Getter
 public class WalletCharge extends BaseObject<Integer> {
+    @NotNull
     private Long chargeId;
+    @NotNull
     private Double quantity;
+    @NotNull
     private Long owner;
+    @NotNull
     private Integer status;
 
     public WalletCharge(long chargeId, ChargeReq chargeReq) {

+ 0 - 21
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/vo/BillRecord.java

@@ -1,21 +0,0 @@
-package cn.reghao.tnb.user.app.model.vo;
-
-import cn.reghao.jutil.jdk.converter.DateTimeConverter;
-import cn.reghao.tnb.user.app.model.constant.BillType;
-import cn.reghao.tnb.user.app.model.po.WalletBill;
-
-/**
- * @author reghao
- * @date 2024-09-13 15:33:25
- */
-public class BillRecord {
-    private String type;
-    private Double quantity;
-    private String createAt;
-
-    public BillRecord(WalletBill walletBill) {
-        this.type = BillType.getDescByCode(walletBill.getType());
-        this.quantity = walletBill.getQuantity();
-        this.createAt = DateTimeConverter.format(walletBill.getCreateAt());
-    }
-}

+ 5 - 3
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/vo/MyVip.java

@@ -10,13 +10,15 @@ import lombok.Getter;
 @AllArgsConstructor
 @Getter
 public class MyVip {
-    private Boolean isVip;
-    private Boolean expired;
-    private Integer expireIn;
+    private boolean isVip;
+    private boolean expired;
+    private int expireIn;
+    private int rcmdMode;
 
     public MyVip() {
         this.isVip = false;
         this.expired = true;
         this.expireIn = 0;
+        this.rcmdMode = 0;
     }
 }

+ 3 - 8
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/po/Wallet.java → user/user-service/src/main/java/cn/reghao/tnb/user/app/model/vo/MyWallet.java

@@ -1,4 +1,4 @@
-package cn.reghao.tnb.user.app.model.po;
+package cn.reghao.tnb.user.app.model.vo;
 
 import cn.reghao.jutil.jdk.db.BaseObject;
 import lombok.Getter;
@@ -10,16 +10,11 @@ import lombok.NoArgsConstructor;
  */
 @NoArgsConstructor
 @Getter
-public class Wallet extends BaseObject<Integer> {
+public class MyWallet extends BaseObject<Integer> {
     private Double balance;
     private Long owner;
 
-    public Wallet(long owner) {
-        this.owner = owner;
-        this.balance = 0.0;
-    }
-
-    public Wallet(long owner, double balance) {
+    public MyWallet(long owner, double balance) {
         this.owner = owner;
         this.balance = balance;
     }

+ 0 - 14
user/user-service/src/main/java/cn/reghao/tnb/user/app/model/vo/WalletDetail.java

@@ -1,14 +0,0 @@
-package cn.reghao.tnb.user.app.model.vo;
-
-import lombok.Getter;
-
-/**
- * @author reghao
- * @date 2024-09-13 09:24:50
- */
-@Getter
-public class WalletDetail {
-    private int type;
-    private double total;
-    private long owner;
-}

+ 12 - 18
user/user-service/src/main/java/cn/reghao/tnb/user/app/rpc/UserServiceImpl.java

@@ -4,8 +4,7 @@ import cn.reghao.tnb.account.api.iface.AccountQuery;
 import cn.reghao.tnb.user.api.dto.UserCard;
 import cn.reghao.tnb.user.api.iface.UserService;
 import cn.reghao.tnb.user.app.db.mapper.UserContactMapper;
-import cn.reghao.tnb.user.app.db.mapper.UserRecommendMapper;
-import cn.reghao.tnb.user.app.model.po.UserRecommend;
+import cn.reghao.tnb.user.app.model.vo.MyVip;
 import cn.reghao.tnb.user.app.service.UserRelationService;
 import cn.reghao.tnb.user.app.service.UserProfileService;
 import cn.reghao.tnb.user.app.service.UserVipService;
@@ -29,16 +28,13 @@ public class UserServiceImpl implements UserService {
     private final UserRelationService userRelationService;
     private final UserVipService userVipService;
     private final UserProfileService userProfileService;
-    private final UserRecommendMapper userRecommendMapper;
     private final UserContactMapper userContactMapper;
 
     public UserServiceImpl(UserRelationService userRelationService, UserVipService userVipService,
-                           UserProfileService userProfileService, UserRecommendMapper userRecommendMapper,
-                           UserContactMapper userContactMapper) {
+                           UserProfileService userProfileService, UserContactMapper userContactMapper) {
         this.userRelationService = userRelationService;
         this.userVipService = userVipService;
         this.userProfileService = userProfileService;
-        this.userRecommendMapper = userRecommendMapper;
         this.userContactMapper = userContactMapper;
     }
 
@@ -64,23 +60,21 @@ public class UserServiceImpl implements UserService {
 
     @Override
     public int getRecommendMode(long userId) {
-        Integer mode = userRecommendMapper.findByUserId(userId);
-        if (mode == null) {
-            return 0;
-        }
-
-        return mode;
+        MyVip myVip = userVipService.getMyVip();
+        return myVip != null ? myVip.getRcmdMode() : 0;
     }
 
     @Override
     public boolean setRecommendMode(long userId, int mode) {
         boolean changed = true;
-        Integer currentMode = userRecommendMapper.findByUserId(userId);
-        if (currentMode == null) {
-            UserRecommend userRecommend = new UserRecommend(userId, mode);
-            userRecommendMapper.save(userRecommend);
-        } else if (currentMode != mode) {
-            userRecommendMapper.updateMode(userId, mode);
+        MyVip myVip = userVipService.getMyVip();
+        if (!myVip.isVip()) {
+            return false;
+        }
+
+        int currentMode = myVip.getRcmdMode();
+        if (currentMode != mode) {
+            userVipService.updateRcmdMode(userId, mode);
         } else {
             changed = false;
         }

+ 6 - 17
user/user-service/src/main/java/cn/reghao/tnb/user/app/rpc/UserWalletServiceImpl.java

@@ -14,7 +14,7 @@ import cn.reghao.tnb.user.app.db.mapper.WalletChargeMapper;
 import cn.reghao.tnb.user.app.model.constant.BillType;
 import cn.reghao.tnb.user.app.model.po.WalletBill;
 import cn.reghao.tnb.user.app.model.po.WalletCharge;
-import cn.reghao.tnb.user.app.model.vo.WalletDetail;
+import cn.reghao.tnb.user.app.service.WalletService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -37,11 +37,14 @@ public class UserWalletServiceImpl implements UserWalletService {
     private final SnowFlake idGenerator;
     private final WalletChargeMapper walletChargeMapper;
     private final WalletBillMapper walletBillMapper;
+    private WalletService walletService;
 
-    public UserWalletServiceImpl(WalletChargeMapper walletChargeMapper, WalletBillMapper walletBillMapper) {
+    public UserWalletServiceImpl(WalletChargeMapper walletChargeMapper, WalletBillMapper walletBillMapper,
+                                 WalletService walletService) {
         this.idGenerator = new SnowFlake(1L, 1L);
         this.walletChargeMapper = walletChargeMapper;
         this.walletBillMapper = walletBillMapper;
+        this.walletService = walletService;
     }
 
     @Override
@@ -112,7 +115,7 @@ public class UserWalletServiceImpl implements UserWalletService {
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Result pay(long fromUserId, double amount, long toUserId) {
-        double balance = getBalance(fromUserId);
+        double balance = walletService.getBalance(fromUserId);
         if (balance < amount) {
             return Result.fail("余额不足");
         }
@@ -122,18 +125,4 @@ public class UserWalletServiceImpl implements UserWalletService {
         walletBillMapper.saveAll(List.of(walletBill1, walletBill2));
         return Result.success();
     }
-
-    private double getBalance(long owner) {
-        WalletDetail income = walletBillMapper.findByTypeAndOwner(BillType.InCome.getCode(), owner);
-        if (income == null) {
-            return 0;
-        }
-
-        WalletDetail expenditure = walletBillMapper.findByTypeAndOwner(BillType.Expenditure.getCode(), owner);
-        if (expenditure == null) {
-            return income.getTotal();
-        }
-
-        return income.getTotal() - expenditure.getTotal();
-    }
 }

+ 8 - 3
user/user-service/src/main/java/cn/reghao/tnb/user/app/service/UserVipService.java

@@ -38,14 +38,15 @@ public class UserVipService {
             return new MyVip();
         }
 
+        int rcmdMode = userVip.getRcmdMode();
         long expireAt = userVip.getExpireAt();
         if (expireAt < System.currentTimeMillis()) {
-            return new MyVip(false, true, 0);
+            return new MyVip(false, true, 0, rcmdMode);
         }
 
         LocalDateTime futureDay = DateTimeConverter.localDateTime(expireAt);
         long days = Duration.between(LocalDateTime.now(), futureDay).toDays();
-        return new MyVip(true, false, (int) days);
+        return new MyVip(true, false, (int) days, rcmdMode);
     }
 
     public boolean isVip(long userId) {
@@ -75,7 +76,7 @@ public class UserVipService {
             long expireAt = System.currentTimeMillis() + 1000L *3600*24*duration;
             UserVip userVip = userVipMapper.findByUserId(userId);
             if (userVip == null) {
-                userVip = new UserVip(userId, expireAt);
+                userVip = new UserVip(userId, expireAt, 0);
                 userVipMapper.save(userVip);
             } else {
                 long expireAt1 = userVip.getExpireAt();
@@ -92,4 +93,8 @@ public class UserVipService {
             throw e;
         }
     }
+
+    public void updateRcmdMode(long userId, int rcmdMode) {
+        userVipMapper.updateRcmdMode(userId, rcmdMode);
+    }
 }

+ 20 - 21
user/user-service/src/main/java/cn/reghao/tnb/user/app/service/WalletService.java

@@ -1,21 +1,20 @@
 package cn.reghao.tnb.user.app.service;
 
+import cn.reghao.jutil.jdk.converter.DateTimeConverter;
+import cn.reghao.tnb.common.auth.UserContext;
 import cn.reghao.tnb.user.app.db.mapper.WalletBillMapper;
 import cn.reghao.tnb.user.app.model.constant.BillType;
-import cn.reghao.tnb.user.app.model.po.Wallet;
+import cn.reghao.tnb.user.app.model.vo.MyWallet;
 import cn.reghao.tnb.user.app.model.po.WalletBill;
-import cn.reghao.tnb.user.app.model.vo.BillRecord;
-import cn.reghao.tnb.user.app.model.vo.WalletDetail;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
-import java.util.stream.Collectors;
 
-@Service
 /**
  * @author reghao
  * @date 2024-04-16 16:13:30
  */
+@Service
 public class WalletService {
     private final WalletBillMapper walletBillMapper;
 
@@ -34,28 +33,28 @@ public class WalletService {
         walletBillMapper.save(walletBill);
     }
 
-    public Wallet getUserWallet(long owner) {
-        double balance = getBalance(owner);
-        return new Wallet(owner, balance);
+    public MyWallet getMyWallet() {
+        long loginUser = UserContext.getUserId();
+        double balance = getBalance(loginUser);
+        return new MyWallet(loginUser, balance);
     }
 
-    public List<BillRecord> getWalletBill(long owner) {
+    public List<WalletBill> getWalletBillList(int pageNumber) {
+        long owner = UserContext.getUserId();
         int pageSize = 10;
         List<WalletBill> list = walletBillMapper.findByOwner(pageSize, owner);
-        return list.stream().map(BillRecord::new).collect(Collectors.toList());
+        list.forEach(walletBill -> {
+            String typeStr = BillType.getDescByCode(walletBill.getType());
+            walletBill.setTypeStr(typeStr);
+            String createAtStr = DateTimeConverter.format(walletBill.getCreateAt());
+            walletBill.setCreateAtStr(createAtStr);
+        });
+        return list;
     }
 
     public double getBalance(long owner) {
-        WalletDetail income = walletBillMapper.findByTypeAndOwner(BillType.InCome.getCode(), owner);
-        if (income == null) {
-            return 0;
-        }
-
-        WalletDetail expenditure = walletBillMapper.findByTypeAndOwner(BillType.Expenditure.getCode(), owner);
-        if (expenditure == null) {
-            return income.getTotal();
-        }
-
-        return income.getTotal() - expenditure.getTotal();
+        double incomeSum = walletBillMapper.findSumByTypeAndOwner(BillType.InCome.getCode(), owner);
+        double expenditureSum = walletBillMapper.findSumByTypeAndOwner(BillType.Expenditure.getCode(), owner);
+        return incomeSum - expenditureSum;
     }
 }

+ 0 - 22
user/user-service/src/main/resources/mapper/UserRecommendMapper.xml

@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="cn.reghao.tnb.user.app.db.mapper.UserRecommendMapper">
-    <insert id="save">
-        insert into user_recommend
-        (`user_id`,`mode`,`id`,`deleted`,`create_time`,`update_time`)
-        values
-        (#{userId},#{mode},#{id},#{deleted},#{createTime},#{updateTime})
-    </insert>
-    <update id="updateMode">
-        update user_recommend
-        set `mode`=#{mode}
-        where user_id=#{userId}
-    </update>
-
-    <select id="findByUserId" resultType="java.lang.Integer">
-        select `mode`
-        from user_recommend
-        where user_id=#{userId}
-    </select>
-</mapper>

+ 7 - 2
user/user-service/src/main/resources/mapper/UserVipMapper.xml

@@ -4,9 +4,9 @@
 <mapper namespace="cn.reghao.tnb.user.app.db.mapper.UserVipMapper">
     <insert id="save">
         insert into user_vip
-        (`user_id`,`expire_at`)
+        (`user_id`,`expire_at`,`rcmd_mode`)
         values
-        (#{userId},#{expireAt})
+        (#{userId},#{expireAt},#{rcmd_mode})
     </insert>
 
     <select id="updateUserVip">
@@ -14,6 +14,11 @@
         set expire_at=#{expireAt}
         where user_id=#{userId}
     </select>
+    <select id="updateRcmdMode">
+        update user_vip
+        set rcmd_mode=#{rcmdMode}
+        where user_id=#{userId}
+    </select>
 
     <select id="findByUserId" resultType="cn.reghao.tnb.user.app.model.po.UserVip">
         select *

+ 2 - 2
user/user-service/src/main/resources/mapper/WalletBillMapper.xml

@@ -24,8 +24,8 @@
         order by create_at desc
         limit #{pageSize}
     </select>
-    <select id="findByTypeAndOwner" resultType="cn.reghao.tnb.user.app.model.vo.WalletDetail">
-        select `type`,`owner`, sum(quantity) as total
+    <select id="findSumByTypeAndOwner" resultType="java.lang.Double">
+        select sum(quantity) as total
         from user_wallet_bill
         where type=#{type} and `owner`=#{owner}
     </select>