Browse Source

加入用户积分表及接口

zc 2 months ago
parent
commit
a5632784d1

+ 46 - 0
alien-entity/src/main/java/shop/alien/entity/store/UserPoint.java

@@ -0,0 +1,46 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+@Data
+@JsonInclude
+@TableName("user_point")
+@ApiModel(value = "UserPoint", description = "用户积分表")
+public class UserPoint {
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "用户ID")
+    private Integer userId;
+
+    @ApiModelProperty(value = "用户积分")
+    private Integer userPoint;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    private Integer updatedUserId;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+}

+ 13 - 0
alien-entity/src/main/java/shop/alien/mapper/UserPointMapper.java

@@ -0,0 +1,13 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import shop.alien.entity.store.UserPoint;
+
+/**
+ * 用户积分mapper
+ */
+@Mapper
+public interface UserPointMapper extends BaseMapper<UserPoint> {
+
+}

+ 15 - 3
alien-store/src/main/java/shop/alien/store/controller/ActivityConfigController.java

@@ -8,12 +8,12 @@ import org.apache.commons.lang.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.ActivitySignInConfig;
+import shop.alien.entity.store.UserPoint;
 import shop.alien.entity.store.vo.ActivityConfigVo;
 import shop.alien.entity.store.vo.ActivityPeriodVo;
 import shop.alien.store.service.ActivityConfigService;
-
+import shop.alien.store.service.UserPointService;
 import java.util.List;
-
 @Api(tags = {"二期-签到活动"})
 @Slf4j
 @CrossOrigin
@@ -21,8 +21,8 @@ import java.util.List;
 @RequestMapping("/activity")
 @RequiredArgsConstructor
 public class ActivityConfigController {
-
     private final ActivityConfigService activityConfigService;
+    private final UserPointService userPointService;
 
     /**
      * 创建签到活动
@@ -118,4 +118,16 @@ public class ActivityConfigController {
         List<ActivityPeriodVo> activityPeriodVoList = activityConfigService.checkOverlapTime(startTime, endTime);
         return R.data(activityPeriodVoList);
     }
+
+    @ApiOperation("获取用户积分")
+    @ApiOperationSupport(order = 5)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "Integer", paramType = "query")
+    })
+    @GetMapping("/getUserPoint")
+    public R<UserPoint> getUserPoint(@RequestParam(required = true) Integer userId) {
+        log.info("ActivityConfigController.getUserPoint");
+        UserPoint userPoint = userPointService.getPoint(userId);
+        return R.data(userPoint);
+    }
 }

+ 15 - 0
alien-store/src/main/java/shop/alien/store/service/UserPointService.java

@@ -0,0 +1,15 @@
+package shop.alien.store.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.store.UserPoint;
+
+/**
+ * @author zhangchen
+ * @version 1.0
+ * @date 2025/09/05 10:00
+ */
+public interface UserPointService extends IService<UserPoint> {
+    UserPoint getPoint(Integer userId);
+
+    UserPoint addPoint(Integer userId, Integer point);
+}

+ 11 - 1
alien-store/src/main/java/shop/alien/store/service/impl/ActivityInviteConfigServiceImpl.java

@@ -19,6 +19,7 @@ import shop.alien.mapper.ActivityInviteConfigMapper;
 import shop.alien.mapper.ActivityInviteLogMapper;
 import shop.alien.mapper.LifeUserMapper;
 import shop.alien.store.service.ActivityInviteConfigService;
+import shop.alien.store.service.UserPointService;
 import shop.alien.util.common.RandomCreateUtil;
 
 import java.time.Instant;
@@ -31,6 +32,8 @@ import java.util.List;
 @RequiredArgsConstructor
 public class ActivityInviteConfigServiceImpl extends ServiceImpl<ActivityInviteConfigMapper, ActivityInviteConfig> implements ActivityInviteConfigService {
 
+   private final UserPointService userPointService;
+
    private final ActivityInviteConfigMapper activityInviteConfigMapper;
 
    private final LifeUserMapper lifeUserMapper;
@@ -232,7 +235,7 @@ public class ActivityInviteConfigServiceImpl extends ServiceImpl<ActivityInviteC
                return "被邀请用户异常";
            } else if (StringUtils.isNotBlank(invitedLifeUser.getBindInviteCode())){
                return "已经绑定邀请码不能重复绑定";
-           } else if (invitedLifeUser.getBindInviteCode().equals(inviteCode)){
+           } else if (StringUtils.isNotBlank(invitedLifeUser.getInviteCode()) && invitedLifeUser.getInviteCode().equals(inviteCode)){
                return "不能绑定自己的邀请码";
            }else {
                LambdaQueryWrapper<ActivityInviteConfig> activityInviteConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -274,6 +277,13 @@ public class ActivityInviteConfigServiceImpl extends ServiceImpl<ActivityInviteC
                    activityInviteLog.setInviteTime(Date.from(Instant.now()));
                    activityInviteLogMapper.insert(activityInviteLog);
 
+                   if(activityInviteConfig.getInviteRewardType() == 2){
+                       userPointService.addPoint(inviteUserId, activityInviteConfig.getInviteRewardPoint());
+                   }
+                   if(activityInviteConfig.getInvitedRewardType() == 2){
+                       userPointService.addPoint(invitedUserId, activityInviteConfig.getInvitedRewardPoint());
+                   }
+
                    LifeUser updateLifeUser = new LifeUser();
                    updateLifeUser.setId(invitedLifeUser.getId());
                    updateLifeUser.setBindInviteCode(inviteCode);

+ 3 - 1
alien-store/src/main/java/shop/alien/store/service/impl/SignInServiceImpl.java

@@ -20,6 +20,7 @@ import shop.alien.mapper.ActivitySignRewardMapper;
 import shop.alien.mapper.UserSignInRecordMapper;
 import shop.alien.mapper.system.SignInActivityMapper;
 import shop.alien.store.service.SignInService;
+import shop.alien.store.service.UserPointService;
 
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
@@ -45,6 +46,7 @@ public class SignInServiceImpl extends ServiceImpl<UserSignInRecordMapper, UserS
     private final ActivityPeriodMapper activityPeriodMapper;
     private final UserSignInRecordMapper userSignInRecordMapper;
     private final SignInActivityMapper signInActivityMapper;
+    private final UserPointService userPointService;
 
     @Override
     public UserSignInRecordVo signIn(int userId) {
@@ -181,7 +183,7 @@ public class SignInServiceImpl extends ServiceImpl<UserSignInRecordMapper, UserS
         record.setUserId(userId);
         record.setDeleteFlag(0);
         userSignInRecordMapper.insert(record);
-
+        userPointService.addPoint(userId, basePoints + specialPoints);
         if(!CollectionUtils.isEmpty(activityPoint)){
             activityPoint.forEach((key, value) -> {
                 if(value == 0 ){

+ 109 - 0
alien-store/src/main/java/shop/alien/store/service/impl/UserPointServiceImpl.java

@@ -0,0 +1,109 @@
+package shop.alien.store.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import shop.alien.entity.store.*;
+import shop.alien.entity.store.vo.ActivityConfigVo;
+import shop.alien.entity.store.vo.ActivityPeriodVo;
+import shop.alien.mapper.*;
+import shop.alien.store.service.ActivityConfigService;
+import shop.alien.store.service.UserPointService;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+
+/**
+ *
+ * 签到类型活动服务
+ * @author zhangchen
+ * @since 2025-9-8
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class UserPointServiceImpl extends ServiceImpl<UserPointMapper, UserPoint> implements UserPointService {
+    private final UserPointMapper userPointMapper;
+    private final ActivityInviteLogMapper activityInviteLogMapper;
+    private final UserSignInRecordMapper userSignInRecordMapper;
+
+    @Override
+    public UserPoint getPoint(Integer userId) {
+        LambdaQueryWrapper<UserPoint> userPointLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        userPointLambdaQueryWrapper.eq(UserPoint::getUserId, userId);
+        userPointLambdaQueryWrapper.eq(UserPoint::getDeleteFlag,0);
+        List<UserPoint> userPointList = userPointMapper.selectList(userPointLambdaQueryWrapper);
+        UserPoint userPoint = new UserPoint();
+        if(!CollectionUtils.isEmpty(userPointList)){
+            userPoint = userPointList.get(0);
+        } else {
+            userPoint.setUserId(userId);
+            userPoint.setUserPoint(0);
+            userPointMapper.insert(userPoint);
+        }
+
+//        int point = 0;
+//        LambdaQueryWrapper<ActivityInviteLog> activityInviteLogLambdaQueryWrapper = new LambdaQueryWrapper<>();
+//        activityInviteLogLambdaQueryWrapper.eq(ActivityInviteLog::getInviteUserId, userId);
+//        activityInviteLogLambdaQueryWrapper.eq(ActivityInviteLog::getDeleteFlag, 0);
+//        List<ActivityInviteLog> activityInviteLogList = activityInviteLogMapper.selectList(activityInviteLogLambdaQueryWrapper);
+//        int invitePoint = 0;
+//        if(com.alibaba.nacos.common.utils.CollectionUtils.isNotEmpty(activityInviteLogList)){
+//            for(ActivityInviteLog activityInviteLog : activityInviteLogList){
+//                int inviteRewardType = activityInviteLog.getInviteRewardType();
+//                if(inviteRewardType == 2 && activityInviteLog.getInviteRewardPoint() != null){
+//                    invitePoint = activityInviteLog.getInviteRewardPoint() + invitePoint;
+//                }
+//            }
+//        }
+//        point = point + invitePoint;
+//
+//        int totalPoint = 0;
+//        LambdaQueryWrapper<UserSignInRecord> userSignInRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
+//        userSignInRecordLambdaQueryWrapper.eq(UserSignInRecord::getUserId, userId);
+//        userSignInRecordLambdaQueryWrapper.eq(UserSignInRecord::getDeleteFlag, 0);
+//        userSignInRecordLambdaQueryWrapper.orderByDesc(UserSignInRecord::getSignInDate);
+//        List<UserSignInRecord> userSignInRecordList =  userSignInRecordMapper.selectList(userSignInRecordLambdaQueryWrapper);
+//        if(!CollectionUtils.isEmpty(userSignInRecordList)){
+//            totalPoint = userSignInRecordList.stream()
+//                    .mapToInt(UserSignInRecord::getPointsObtained)
+//                    .sum();
+//        }
+//        point = point + totalPoint;
+//
+//        UserPoint userPoint = new UserPoint();
+//        userPoint.setUserPoint(point);
+//        userPoint.setUserId(userId);
+        return userPoint;
+    }
+
+    @Override
+    public UserPoint addPoint(Integer userId, Integer point) {
+        UserPoint userPoint = new UserPoint();
+        if(userId!=null && point!=null){
+            LambdaQueryWrapper<UserPoint> userPointLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            userPointLambdaQueryWrapper.eq(UserPoint::getUserId, userId);
+            userPointLambdaQueryWrapper.eq(UserPoint::getDeleteFlag,0);
+            List<UserPoint> userPointList = userPointMapper.selectList(userPointLambdaQueryWrapper);
+            if(!CollectionUtils.isEmpty(userPointList)){
+                userPoint = userPointList.get(0);
+                int totalPoint = point + userPoint.getUserPoint();
+                userPoint.setUserPoint(totalPoint);
+                userPointMapper.updateById(userPoint);
+            } else {
+                userPoint.setUserId(userId);
+                userPoint.setUserPoint(point);
+                userPointMapper.insert(userPoint);
+            }
+        }
+        return userPoint;
+    }
+}