Просмотр исходного кода

用户预设职级接口新增

mac 2 лет назад
Родитель
Сommit
20ed67e82a

+ 15 - 5
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/feign/RemoteKxsProductService.java

@@ -103,12 +103,11 @@ public interface RemoteKxsProductService {
 
 	/**
 	 * 校验用户名下劵大于等于3或下单过指定商品或激活数大于等于3
-	 * @param userId
-	 * @param from
-	 * @return
+	 * @param userId 用户 ID
 	 */
-	@GetExchange("/ticket/verifyUserTickteCountAndShopAndActivite")
-	Boolean verifyUserTickteCountAndShopAndActivite(@RequestParam("userId") Long userId, @RequestHeader(SecurityConstants.FROM) String from);
+	@GetExchange("/ticket/verifyUserTicketCountAndShopAndAct")
+	Boolean verifyUserTicketCountAndShopAndAct(@RequestParam("userId") Long userId, @RequestHeader(SecurityConstants.FROM) String from);
+
 	/**
 	 * 可回收机具数量
 	 *
@@ -138,6 +137,17 @@ public interface RemoteKxsProductService {
 	@GetExchange("/shop/getDateBetweenOrders")
 	R<List<ShopOrderGoodsUserVO>> getDateBetweenOrders(@RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime, @RequestHeader(SecurityConstants.FROM) String from);
 
+	/**
+	 * 预设职级调用
+	 * 检查用户是否满足预设职级条件
+	 *
+	 * @param userId 用户 ID
+	 * @param level  职级
+	 * @return {@link R}<{@link Boolean}>
+	 */
+	@GetExchange("/ticket/checkUserPreLevelTicket")
+	R<Boolean> checkUserPreLevelTicket(@RequestParam("userId") Integer userId, @RequestParam("level") Integer level, @RequestHeader(SecurityConstants.FROM) String from);
+
 
 	/**
 	 * 更改为 商户型创客 用户

+ 9 - 2
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/constant/enums/TicketTypeEnum.java

@@ -13,8 +13,15 @@ import lombok.Getter;
 @AllArgsConstructor
 public enum TicketTypeEnum {
 
-    DIANQIAN(0, "电签兑换券"),
-    DAJI(1, "大机兑换券");
+    /**
+     * 券类型
+     */
+    CODE_DQ(0, "电签兑换券"),
+    CODE_DJ(1, "大机兑换券"),
+    CODE_UNUSED(0, "未使用"),
+    CODE_USED(1, "已使用"),
+    CODE_FREEZE(2, "已申请冻结");
+
 
     //状态码
     private final Integer type;

+ 18 - 3
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/kxsapp/TicketController.java

@@ -32,14 +32,29 @@ public class TicketController {
      */
     private final KxsTicketService kxsTicketService;
     private final KxsTicketTransferService kxsTicketTransferService;
+
+
+    /**
+     * 检查用户是否满足预设职级条件
+     *
+     * @param userId 用户 ID
+     * @param level  职级
+     * @return {@link R}
+     */
+    @GetMapping("checkUserPreLevelTicket")
+    public R checkUserPreLevelTicket(@RequestParam("userId") Long userId, @RequestParam("level") Long level){
+
+        return R.ok(kxsTicketService.checkUserPreLevelTicket(userId, level));
+    }
+
     /**
      * 校验用户名下劵大于等于3或下单过指定商品
      */
     @Inner
-    @GetMapping("/verifyUserTickteCountAndShopAndActivite")
-    public Boolean verifyUserTickteCountAndShopAndActivite(@RequestParam("userId") Long userId) {
+    @GetMapping("/verifyUserTicketCountAndShopAndAct")
+    public Boolean verifyUserTicketCountAndShopAndAct(@RequestParam("userId") Long userId) {
 
-        return kxsTicketService.verifyUserTickteCountAndShopAndActivite(userId);
+        return kxsTicketService.verifyUserTicketCountAndShopAndAct(userId);
     }
 
     /**

+ 11 - 1
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsTicketService.java

@@ -3,6 +3,7 @@ package com.kxs.product.biz.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
 import com.kxs.product.api.model.KxsTicket;
 import com.kxs.product.api.vo.kxsapp.ticket.TicketListVO;
 
@@ -25,6 +26,15 @@ public interface KxsTicketService extends IService<KxsTicket> {
     /**
      * 校验用户名下劵大于等于3或下单过指定商品
      */
-    Boolean verifyUserTickteCountAndShopAndActivite(Long userId);
+    Boolean verifyUserTicketCountAndShopAndAct(Long userId);
+
+    /**
+     * 检查用户是否满足预设职级条件
+     *
+     * @param userId 用户 ID
+     * @param level  水平
+     * @return {@link R}
+     */
+    Boolean checkUserPreLevelTicket(Long userId, Long level);
 }
 

+ 22 - 7
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsTicketServiceImpl.java

@@ -8,12 +8,13 @@ import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.product.api.model.KxsBrand;
 import com.kxs.product.api.model.KxsMachine;
 import com.kxs.product.api.model.KxsShopOrder;
+import com.kxs.product.api.model.KxsTicket;
 import com.kxs.product.api.vo.kxsapp.ticket.TicketListVO;
+import com.kxs.product.biz.constant.enums.TicketTypeEnum;
 import com.kxs.product.biz.mapper.KxsBrandMapper;
 import com.kxs.product.biz.mapper.KxsMachineMapper;
 import com.kxs.product.biz.mapper.KxsShopOrderMapper;
 import com.kxs.product.biz.mapper.KxsTicketMapper;
-import com.kxs.product.api.model.KxsTicket;
 import com.kxs.product.biz.service.KxsTicketService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -52,9 +53,9 @@ public class KxsTicketServiceImpl extends ServiceImpl<KxsTicketMapper, KxsTicket
     }
 
     @Override
-    public Boolean verifyUserTickteCountAndShopAndActivite(Long userId) {
+    public Boolean verifyUserTicketCountAndShopAndAct(Long userId) {
         //券码数量
-        Long ticketCount = baseMapper.selectCount(Wrappers.<KxsTicket>query().lambda().eq(KxsTicket::getUserId, userId).eq(KxsTicket::getStatus, 0));
+        Long ticketCount = baseMapper.selectCount(Wrappers.<KxsTicket>query().lambda().eq(KxsTicket::getUserId, userId).eq(KxsTicket::getStatus, TicketTypeEnum.CODE_UNUSED.getType()));
         if (ticketCount >= 3){
             return true;
         }
@@ -66,11 +67,25 @@ public class KxsTicketServiceImpl extends ServiceImpl<KxsTicketMapper, KxsTicket
             return true;
         }
         //查询激活数 条件为用户名下已激活已绑定的机具
-        Long aLong = kxsMachineMapper.selectCount(Wrappers.<KxsMachine>query().lambda().eq(KxsMachine::getUserId, userId).eq(KxsMachine::getIsAct, 1).eq(KxsMachine::getBindStatus,1));
-        if (aLong >= 3){
-            return true;
+        Long count = kxsMachineMapper.selectCount(Wrappers.<KxsMachine>query().lambda().eq(KxsMachine::getUserId, userId).eq(KxsMachine::getIsAct, 1).eq(KxsMachine::getBindStatus,1));
+        return count >= 3;
+    }
+
+    @Override
+    public Boolean checkUserPreLevelTicket(Long userId, Long level) {
+
+        Long ticketCount = baseMapper.selectCount(Wrappers.<KxsTicket>query().lambda().eq(KxsTicket::getUserId, userId).eq(KxsTicket::getStatus, TicketTypeEnum.CODE_UNUSED.getType()));
+
+        if(level <= 4){
+            return ticketCount >= 3;
+        } else if (level <= 6) {
+            return ticketCount >= 6;
+        } else if (level <= 8){
+            return ticketCount >= 9;
+        }else {
+            return ticketCount >= 15;
         }
-        return false;
+
     }
 }
 

+ 1 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/controller/KxsStatUserController.java

@@ -117,6 +117,7 @@ public class KxsStatUserController {
     public R getMyTrade(@ParameterObject StatUserGetMyTradeDTO param) {
         return kxsUserTradeService.getMyTrade(param);
     }
+
     /**
      * 计奖交易-交易统计页面-交易明细
      *

+ 16 - 3
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/UserLevelController.java

@@ -1,13 +1,14 @@
 package com.kxs.user.biz.controller.kxsapp;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.kxs.common.core.util.R;
+import com.kxs.user.api.model.KxsUserPresetLog;
 import com.kxs.user.biz.service.KxsUserEquityService;
+import com.kxs.user.biz.service.KxsUserPresetLogService;
 import com.kxs.user.biz.service.KxsUserService;
 import com.kxs.user.biz.service.TradeDaySummaryService;
 import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 用户相关(UserLevel)控制层
@@ -24,9 +25,21 @@ public class UserLevelController {
      * 服务对象
      */
     private final KxsUserService kxsUserService;
+    private final KxsUserPresetLogService kxsUserPresetLogService;
     private final KxsUserEquityService kxsUserEquityService;
     private final TradeDaySummaryService tradeDaySummaryService;
 
+    @PostMapping("preUserLevel")
+    public R preUserLevel(@RequestBody KxsUserPresetLog param){
+
+        return kxsUserPresetLogService.preUserLevel(param);
+    }
+
+    @GetMapping("preUserLevelDetail")
+    public R preUserLevelDetail(@RequestParam("userId") Long userId){
+
+        return R.ok(kxsUserPresetLogService.getOne(Wrappers.<KxsUserPresetLog>lambdaQuery().eq(KxsUserPresetLog::getUserId, userId)));
+    }
 
 
     /**

+ 9 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserPresetLogService.java

@@ -3,6 +3,7 @@ package com.kxs.user.biz.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
 import com.kxs.user.api.model.KxsUserPresetLog;
 import com.kxs.user.api.vo.kxsapp.userPresetLevel.UserPresetLogVO;
 
@@ -21,5 +22,13 @@ public interface KxsUserPresetLogService extends IService<KxsUserPresetLog> {
      * @return {@link Page}<{@link UserPresetLogVO}>
      */
     IPage<UserPresetLogVO> logList(Page<UserPresetLogVO> page);
+
+    /**
+     * 预设用户级别
+     *
+     * @param param 参数
+     * @return {@link R}
+     */
+    R preUserLevel(KxsUserPresetLog param);
 }
 

+ 45 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserPresetLogServiceImpl.java

@@ -3,12 +3,21 @@ package com.kxs.user.biz.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.common.core.util.R;
 import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.product.api.feign.RemoteKxsProductService;
+import com.kxs.user.api.model.KxsUserLevelLog;
 import com.kxs.user.api.vo.kxsapp.userPresetLevel.UserPresetLogVO;
+import com.kxs.user.biz.constant.enums.UserErrorTypeEnum;
+import com.kxs.user.biz.mapper.KxsUserLevelLogMapper;
 import com.kxs.user.biz.mapper.KxsUserPresetLogMapper;
 import com.kxs.user.api.model.KxsUserPresetLog;
 import com.kxs.user.biz.service.KxsUserPresetLogService;
+import com.kxs.user.biz.service.KxsUserService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 用户预设职级日志表(KxsUserPresetLog)表服务实现类
@@ -17,8 +26,14 @@ import org.springframework.stereotype.Service;
  * @since 2024-01-03 09:39:56
  */
 @Service("kxsUserPresetLogService")
+@RequiredArgsConstructor
 public class KxsUserPresetLogServiceImpl extends ServiceImpl<KxsUserPresetLogMapper, KxsUserPresetLog> implements KxsUserPresetLogService {
 
+    private final RemoteKxsProductService remoteKxsProductService;
+
+    private final KxsUserLevelLogMapper kxsUserLevelLogMapper;
+
+    private final KxsUserService userService;
     @Override
     public IPage<UserPresetLogVO> logList(Page<UserPresetLogVO> page) {
 
@@ -26,5 +41,35 @@ public class KxsUserPresetLogServiceImpl extends ServiceImpl<KxsUserPresetLogMap
 
         return baseMapper.logList(page, userId);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R preUserLevel(KxsUserPresetLog param) {
+        if(param.getStartTime() == null || param.getEndTime() == null || param.getPresetLevel() == null){
+            return R.failed("参数不能为空");
+        }
+        //判断是否符合条件
+        R<Boolean> booleanR = remoteKxsProductService.checkUserPreLevelTicket(param.getUserId(), param.getPresetLevel(), SecurityConstants.FROM_IN);
+        if(!booleanR.getData()){
+            return R.failed("用户未达标");
+        }
+        Long userId = SecurityUtils.getUser().getId();
+        //查询用户是否在其伞下
+        if(!userService.checkUserIsChildren(userId.intValue(), param.getUserId())){
+            return R.failed(UserErrorTypeEnum.USER_NOT_EXIST.getDescription());
+        }
+
+        param.setCreateById(userId.intValue());
+        baseMapper.insert(param);
+        //添加日志
+        KxsUserLevelLog kxsUserLevelLog = new KxsUserLevelLog();
+        kxsUserLevelLog.setUserId(param.getUserId());
+        kxsUserLevelLog.setPresetLevel(param.getPresetLevel());
+        kxsUserLevelLog.setEndTime(param.getEndTime());
+        kxsUserLevelLog.setStartTime(param.getStartTime());
+        kxsUserLevelLog.setCreateById(userId.intValue());
+        kxsUserLevelLogMapper.insert(kxsUserLevelLog);
+        return R.ok();
+    }
 }
 

+ 1 - 1
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserServiceImpl.java

@@ -544,7 +544,7 @@ public class KxsUserServiceImpl extends ServiceImpl<KxsUserMapper, KxsUser> impl
             return true;
         }
         //查询个人名下电签兑换劵+大机兑换券>=3 或 激活POS机数量+激活来客吧商户数量+激活广电卡数量 >3 或 商城下单过指定商品(10-电签机具/广电卡通兑券,11-大POS兑换券,77-来客吧产品组合包A.78-来客吧产品组合包B.79-来客产品组合包C)
-        return remoteKxsProductService.verifyUserTickteCountAndShopAndActivite(userId, SecurityConstants.FROM_IN);
+        return remoteKxsProductService.verifyUserTicketCountAndShopAndAct(userId, SecurityConstants.FROM_IN);
 
     }