Przeglądaj źródła

20240624 会员管理

lwhhszx 1 rok temu
rodzic
commit
4b151eabb6
37 zmienionych plików z 443 dodań i 81 usunięć
  1. 1 1
      src/main/java/com/example/xiaoshiweixinback/business/exception/BusinessException.java
  2. 12 3
      src/main/java/com/example/xiaoshiweixinback/business/exception/ExceptionEnum.java
  3. 18 0
      src/main/java/com/example/xiaoshiweixinback/business/utils/DateUtils.java
  4. 9 2
      src/main/java/com/example/xiaoshiweixinback/controller/UserManageController.java
  5. 41 0
      src/main/java/com/example/xiaoshiweixinback/domain/InviteMessage.java
  6. 1 0
      src/main/java/com/example/xiaoshiweixinback/entity/dto/person/LoginByWxDTO.java
  7. 1 0
      src/main/java/com/example/xiaoshiweixinback/entity/dto/person/LoginDTO.java
  8. 12 0
      src/main/java/com/example/xiaoshiweixinback/entity/invite/InvitedPersonQueryDTO.java
  9. 21 0
      src/main/java/com/example/xiaoshiweixinback/entity/invite/InvitedPersonVO.java
  10. 2 1
      src/main/java/com/example/xiaoshiweixinback/factorys/goodFactory/GoodTicketService.java
  11. 2 1
      src/main/java/com/example/xiaoshiweixinback/factorys/goodFactory/GoodVipService.java
  12. 3 2
      src/main/java/com/example/xiaoshiweixinback/factorys/goodFactory/GoodVoucherService.java
  13. 7 2
      src/main/java/com/example/xiaoshiweixinback/factorys/useFunctionFactory/CheckConcernProduct.java
  14. 12 4
      src/main/java/com/example/xiaoshiweixinback/factorys/useFunctionFactory/CheckExportPatent.java
  15. 6 2
      src/main/java/com/example/xiaoshiweixinback/factorys/useFunctionFactory/CheckQueryPatent.java
  16. 24 0
      src/main/java/com/example/xiaoshiweixinback/mapper/InviteMessageMapper.java
  17. 3 2
      src/main/java/com/example/xiaoshiweixinback/service/AssoPersonFunctionService.java
  18. 5 1
      src/main/java/com/example/xiaoshiweixinback/service/AssoPersonProductService.java
  19. 20 4
      src/main/java/com/example/xiaoshiweixinback/service/AssoPersonVipService.java
  20. 6 5
      src/main/java/com/example/xiaoshiweixinback/service/AssoPersonVoucherService.java
  21. 1 1
      src/main/java/com/example/xiaoshiweixinback/service/AssoProductFileService.java
  22. 3 2
      src/main/java/com/example/xiaoshiweixinback/service/ImportTaskService.java
  23. 105 0
      src/main/java/com/example/xiaoshiweixinback/service/InviteMessageService.java
  24. 17 5
      src/main/java/com/example/xiaoshiweixinback/service/LoginService.java
  25. 6 2
      src/main/java/com/example/xiaoshiweixinback/service/MonitorService.java
  26. 2 1
      src/main/java/com/example/xiaoshiweixinback/service/OrderService.java
  27. 5 0
      src/main/java/com/example/xiaoshiweixinback/service/PersonService.java
  28. 5 4
      src/main/java/com/example/xiaoshiweixinback/service/ProductService.java
  29. 5 4
      src/main/java/com/example/xiaoshiweixinback/service/TicketService.java
  30. 2 1
      src/main/java/com/example/xiaoshiweixinback/service/UserFeedbackService.java
  31. 23 18
      src/main/java/com/example/xiaoshiweixinback/service/VipService.java
  32. 13 8
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/EsDenseVectorService.java
  33. 2 1
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/excel/ImportProductCategoryService.java
  34. 2 1
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/excel/ImportProductService.java
  35. 2 1
      src/main/java/com/example/xiaoshiweixinback/service/quartzService/JobService.java
  36. 3 2
      src/main/java/com/example/xiaoshiweixinback/service/quartzService/QuartzTaskService.java
  37. 41 0
      src/main/resources/mapper/InviteMessageMapper.xml

+ 1 - 1
src/main/java/com/example/xiaoshiweixinback/business/exception/BusinessException.java

@@ -15,7 +15,7 @@ public class BusinessException extends RuntimeException {
 	private String errorCode;// 异常代码
 	private String errorMessage;// 异常信息
 
-	public BusinessException(String errorCode, String errorMessage) {
+	public BusinessException(ExceptionEnum e, String errorMessage) {
 		super(errorMessage);
 		this.errorCode = errorCode;
 		this.errorMessage = errorMessage;

+ 12 - 3
src/main/java/com/example/xiaoshiweixinback/business/exception/ExceptionEnum.java

@@ -4,7 +4,18 @@ import lombok.Getter;
 
 @Getter
 public enum ExceptionEnum {
-
+    LOGIN_NO_LOGIN("401","未登录"),
+    LOGIN_ACCOUNT_MISTAKE("402","账号错误"),
+    LOGIN_PASWORD_MISTAKE("403","密码错误"),
+    LOGIN_ERROR("405","登录错误"),
+    LOGIN_INVITE_ERROR("406","邀请码错误"),
+
+    PERMISSION_ERROR("601","无权限"),
+    PERMISSION_NO_VIP("606","未开会员"),
+    PERMISSION_BEYOND_USETIME("607","超过使用次数"),
+
+    BUSINESS_ERROR("608","业务错误"),
+    BUSINESS_CHECK("609","参数校验错误"),
     /*APP端 100000-300000*/
     SUCCESS("000000", "调用成功"),
     PARAMETER_VERIFICATION_ERROR("000001", "数据参数校验异常"),
@@ -34,8 +45,6 @@ public enum ExceptionEnum {
 
 
 
-
-
     SYSTEM_ERROR("999999", "系统异常");
 
     private String code;// 异常代码

+ 18 - 0
src/main/java/com/example/xiaoshiweixinback/business/utils/DateUtils.java

@@ -739,6 +739,24 @@ public class DateUtils {
     }
 
 
+    /**
+     * 获取几天之后的日期
+     *
+     * @param date  yyyy-MM-dd HH:mm:ss
+     * @param
+     */
+    public static Date getPlusDayDate(Date date, int day) {
+        Calendar cal = Calendar.getInstance();
+        try {
+            cal.setTime(date);
+            cal.add(Calendar.DAY_OF_MONTH,day);
+            return cal.getTime();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
     public static void main(String[] args) {
         System.out.println(12 % 50);
     }

+ 9 - 2
src/main/java/com/example/xiaoshiweixinback/controller/UserManageController.java

@@ -4,11 +4,13 @@ import com.example.xiaoshiweixinback.business.common.Constants;
 import com.example.xiaoshiweixinback.business.common.Response;
 import com.example.xiaoshiweixinback.business.common.base.Records;
 import com.example.xiaoshiweixinback.checkLogin.checkLogin;
+import com.example.xiaoshiweixinback.entity.invite.InvitedPersonQueryDTO;
 import com.example.xiaoshiweixinback.entity.person.PersonQueryDTO;
 import com.example.xiaoshiweixinback.entity.person.PersonQueryVO;
 import com.example.xiaoshiweixinback.entity.vip.ActiveVipDTO;
 import com.example.xiaoshiweixinback.entity.vip.PersonFunctionVO;
 import com.example.xiaoshiweixinback.entity.weixinPay.FunctionRightVO;
+import com.example.xiaoshiweixinback.service.InviteMessageService;
 import com.example.xiaoshiweixinback.service.PersonService;
 import com.example.xiaoshiweixinback.service.VipService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -27,7 +29,7 @@ import java.util.List;
 @RequiredArgsConstructor
 public class UserManageController {
     private final PersonService personService;
-
+    private final InviteMessageService inviteMessageService;
     @Operation(summary = "查询用户信息")
     @PostMapping("/queryUser")
     public Response queryUser(@RequestBody PersonQueryDTO personQueryDTO) {
@@ -36,6 +38,11 @@ public class UserManageController {
         return Response.success(records);
     }
 
-
+    @Operation(summary = "查询邀请的用户")
+    @PostMapping("/queryInvitedPerson")
+    public Response queryInvitedPerson (@RequestBody InvitedPersonQueryDTO invitedPersonQueryDTO) {
+        Records records =  inviteMessageService.queryInvitedPerson(invitedPersonQueryDTO);
+        return Response.success(records);
+    }
 
 }

+ 41 - 0
src/main/java/com/example/xiaoshiweixinback/domain/InviteMessage.java

@@ -0,0 +1,41 @@
+package com.example.xiaoshiweixinback.domain;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+
+import lombok.Data;
+
+/**
+ * 邀请信息表
+ * @TableName invite_message
+ */
+@TableName(value ="invite_message")
+@Data
+public class InviteMessage extends BaseEntity<InviteMessage> {
+    /**
+     * ID
+     */
+    private Integer id;
+
+    /**
+     * 邀请人uuid
+     */
+    private String invitePersonUuid;
+
+    /**
+     * 被邀请人uuid
+     */
+    private String invitedPersonUuid;
+
+    /**
+     * 是否购买vip
+     */
+    private Boolean ifBuyVip;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+}

+ 1 - 0
src/main/java/com/example/xiaoshiweixinback/entity/dto/person/LoginByWxDTO.java

@@ -13,4 +13,5 @@ public class LoginByWxDTO {
 
     //加密算法的初始向量
     private String iv;
+    private String inviteCode;
 }

+ 1 - 0
src/main/java/com/example/xiaoshiweixinback/entity/dto/person/LoginDTO.java

@@ -17,5 +17,6 @@ public class LoginDTO {
 
     //密码
     private String password;
+    private String inviteCode;
 
 }

+ 12 - 0
src/main/java/com/example/xiaoshiweixinback/entity/invite/InvitedPersonQueryDTO.java

@@ -0,0 +1,12 @@
+package com.example.xiaoshiweixinback.entity.invite;
+
+import lombok.Data;
+
+@Data
+public class InvitedPersonQueryDTO {
+    private Long current;
+    private Long size;
+    private String name;
+    private String personUuid;
+    private String phoneNum;
+}

+ 21 - 0
src/main/java/com/example/xiaoshiweixinback/entity/invite/InvitedPersonVO.java

@@ -0,0 +1,21 @@
+package com.example.xiaoshiweixinback.entity.invite;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class InvitedPersonVO {
+
+   private String name;
+    private  String fileGuid;
+    private String phoneNum;
+    private  String email;
+    private String userName;
+    private String uuid;
+    private  Integer vipType;
+   private String vipName;
+   private  String vipUuid;
+   private Boolean ifBuyVip;
+   private Date createTime;
+}

+ 2 - 1
src/main/java/com/example/xiaoshiweixinback/factorys/goodFactory/GoodTicketService.java

@@ -2,6 +2,7 @@ package com.example.xiaoshiweixinback.factorys.goodFactory;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.FormatUtil;
 import com.example.xiaoshiweixinback.domain.AssoPayOrderGood;
 import com.example.xiaoshiweixinback.domain.Order;
@@ -39,7 +40,7 @@ public class GoodTicketService implements GoodImp {
         queryWrapper.in(Ticket::getId, ids);
         List<Ticket> tickets =ticketService.list(queryWrapper);
         if(tickets.size()!=ids.size()){
-            throw new BusinessException("608","工单信息错误");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR,"工单信息错误");
         }
         for (Ticket ticket:tickets){
             totalPrice+=ticket.getPrice();

+ 2 - 1
src/main/java/com/example/xiaoshiweixinback/factorys/goodFactory/GoodVipService.java

@@ -2,6 +2,7 @@ package com.example.xiaoshiweixinback.factorys.goodFactory;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.FormatUtil;
 import com.example.xiaoshiweixinback.domain.*;
 import com.example.xiaoshiweixinback.entity.weixinPay.GoodVO;
@@ -30,7 +31,7 @@ vipService.activateVIP(order,assoPayOrderGood.getGoodUuid());
     String idStr =goodVOs.get(0).getId();
     Vip vip =vipService.getVipByUuId(idStr);
      if(vip==null){
-         throw  new BusinessException("608","会员不存在");
+         throw  new BusinessException(ExceptionEnum.BUSINESS_ERROR,"会员不存在");
      }
      totalPrice+=vip.getPrice();
         return totalPrice;

+ 3 - 2
src/main/java/com/example/xiaoshiweixinback/factorys/goodFactory/GoodVoucherService.java

@@ -2,6 +2,7 @@ package com.example.xiaoshiweixinback.factorys.goodFactory;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.FormatUtil;
 import com.example.xiaoshiweixinback.domain.AssoPayOrderGood;
 import com.example.xiaoshiweixinback.domain.Order;
@@ -57,13 +58,13 @@ public class GoodVoucherService implements GoodImp {
 
         List<Voucher> vouchers = voucherService.list(queryWrapper);
         if (vouchers.size() != ids.size()) {
-            throw new BusinessException("608", "优惠券使用错误");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "优惠券使用错误");
         }
         for (GoodVO goodVO : goodVOs) {
             Integer id = Integer.parseInt(goodVO.getId().toString());
             Voucher voucher = vouchers.stream().filter(item -> item.getId().equals(id)).findFirst().orElse(null);
             if (voucher == null) {
-                throw new BusinessException("608", "优惠券使用错误");
+                throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "优惠券使用错误");
             }
             Double price = voucher.getSellingPrice();
             Integer num = goodVO.getNum();

+ 7 - 2
src/main/java/com/example/xiaoshiweixinback/factorys/useFunctionFactory/CheckConcernProduct.java

@@ -3,6 +3,7 @@ package com.example.xiaoshiweixinback.factorys.useFunctionFactory;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.CacheUtil;
 import com.example.xiaoshiweixinback.business.utils.LoginUtils;
 import com.example.xiaoshiweixinback.domain.AssoPersonProduct;
@@ -29,12 +30,13 @@ public class CheckConcernProduct implements UseFunctionImp {
     private final UseFunctionRecordService useFunctionRecordService;
     private final AssoPersonProductService assoPersonProductService;
     private final CacheUtil cacheUtil;
+
     @Override
     public AssoVipFunction checkFunction(String functionUuid, Object o) {
         PersonnelVO personnelVO = cacheUtil.getLoginUser(LoginUtils.getToken());
         AssoVipFunction assoVipFunction = vipService.getVipFunctionMessage(functionUuid);
         if (assoVipFunction == null) {
-            throw new BusinessException("608", "不可使用此功能");
+            throw new BusinessException(ExceptionEnum.PERMISSION_NO_VIP);
         }
         FunctionConfig functionConfig = JSON.parseObject(assoVipFunction.getFunctionParameter(), FunctionConfig.class);
         Integer canGetNum = functionConfig.getCanGetNum();
@@ -44,7 +46,10 @@ public class CheckConcernProduct implements UseFunctionImp {
         Long total = assoPersonProductService.count(queryWrapper);
 
         if (total >= canGetNum) {
-            throw new BusinessException("606", "已超过可关注数量");
+            if (assoVipFunction.getVipType().equals(0)) {
+                throw new BusinessException(ExceptionEnum.PERMISSION_NO_VIP);
+            }
+            throw new BusinessException(ExceptionEnum.PERMISSION_BEYOND_USETIME, "已超过可关注数量");
         }
         return assoVipFunction;
     }

+ 12 - 4
src/main/java/com/example/xiaoshiweixinback/factorys/useFunctionFactory/CheckExportPatent.java

@@ -2,6 +2,7 @@ package com.example.xiaoshiweixinback.factorys.useFunctionFactory;
 
 import com.alibaba.fastjson.JSON;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.domain.AssoVipFunction;
 import com.example.xiaoshiweixinback.domain.UseFunctionRecord;
 import com.example.xiaoshiweixinback.entity.sysFuctionRights.FunctionConfig;
@@ -26,18 +27,22 @@ public class CheckExportPatent implements UseFunctionImp {
     @Override
     public AssoVipFunction checkFunction(String functionUuid, Object o) {
         if (o == null) {
-            throw new BusinessException("608", "请至少选择一个专利进行导出");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "请至少选择一个专利进行导出");
         }
         List<String> patentNos = (List<String>) o;
         AssoVipFunction assoVipFunction = vipService.getVipFunctionMessage(functionUuid);
         if (assoVipFunction == null) {
-            throw new BusinessException("608", "不可使用此功能");
+            throw new BusinessException(ExceptionEnum.PERMISSION_NO_VIP);
         }
         FunctionConfig functionConfig = JSON.parseObject(assoVipFunction.getFunctionParameter(), FunctionConfig.class);
         Integer canGetNum = functionConfig.getCanGetNum();
         Integer size =functionConfig.getSize();
         if(size<patentNos.size()){
-            throw new BusinessException("608", "超过最大导出数量");
+            if(assoVipFunction.getVipType().equals(0)){
+                throw new BusinessException(ExceptionEnum.PERMISSION_NO_VIP);
+
+            }
+            throw new BusinessException(ExceptionEnum.PERMISSION_BEYOND_USETIME, "超过最大导出数量");
         }
         //从操作记录中查询次数
         List<UseFunctionRecord> useFunctionRecordList = useFunctionRecordService.queryUseFunctionRecordByTime(functionUuid, 0);
@@ -47,7 +52,10 @@ public class CheckExportPatent implements UseFunctionImp {
             totalExportNum+=exportNum;
         }
         if (canGetNum != -1 && canGetNum <= totalExportNum) {
-            throw new BusinessException("608", "今日可导入量已用完");
+            if(assoVipFunction.getVipType().equals(0)){
+                throw new BusinessException(ExceptionEnum.PERMISSION_NO_VIP);
+            }
+            throw new BusinessException(ExceptionEnum.PERMISSION_BEYOND_USETIME, "今日可导入量已用完");
         }
         return assoVipFunction;
     }

+ 6 - 2
src/main/java/com/example/xiaoshiweixinback/factorys/useFunctionFactory/CheckQueryPatent.java

@@ -2,6 +2,7 @@ package com.example.xiaoshiweixinback.factorys.useFunctionFactory;
 
 import com.alibaba.fastjson.JSON;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.domain.AssoVipFunction;
 import com.example.xiaoshiweixinback.domain.UseFunctionRecord;
 import com.example.xiaoshiweixinback.entity.sysFuctionRights.FunctionConfig;
@@ -26,14 +27,17 @@ public class CheckQueryPatent implements UseFunctionImp {
     public AssoVipFunction checkFunction(String functionUuid,Object o) {
         AssoVipFunction assoVipFunction=vipService.getVipFunctionMessage(functionUuid);
         if(assoVipFunction ==null){
-            throw new BusinessException("608","不可使用此功能");
+            throw new BusinessException(ExceptionEnum.PERMISSION_NO_VIP);
         }
         FunctionConfig functionConfig = JSON.parseObject(assoVipFunction.getFunctionParameter(), FunctionConfig.class);
        Integer canGetNum =functionConfig.getCanGetNum();
        //从操作记录中查询次数
       List<UseFunctionRecord> useFunctionRecordList =useFunctionRecordService.queryUseFunctionRecordByTime(functionUuid,0);
         if(canGetNum!=-1&&canGetNum<=useFunctionRecordList.size()){
-            throw new BusinessException("608","功能次数已用完");
+            if (assoVipFunction.getVipType().equals(0)) {
+                throw new BusinessException(ExceptionEnum.PERMISSION_NO_VIP);
+            }
+            throw new BusinessException(ExceptionEnum.PERMISSION_BEYOND_USETIME,"功能次数已用完");
         }
         return  assoVipFunction;
     }

+ 24 - 0
src/main/java/com/example/xiaoshiweixinback/mapper/InviteMessageMapper.java

@@ -0,0 +1,24 @@
+package com.example.xiaoshiweixinback.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.xiaoshiweixinback.domain.InviteMessage;
+import com.example.xiaoshiweixinback.entity.invite.InvitedPersonQueryDTO;
+import com.example.xiaoshiweixinback.entity.invite.InvitedPersonVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @author admin
+* @description 针对表【invite_message(邀请信息表)】的数据库操作Mapper
+* @createDate 2024-07-02 21:25:55
+* @Entity com/example/xiaoshiweixinback.domain.InviteMessage
+*/
+public interface InviteMessageMapper extends BaseMapper<InviteMessage> {
+   public List<InvitedPersonVO> queryInvitedPerson(@Param("invitedPersonQueryDTO")InvitedPersonQueryDTO invitedPersonQueryDTO);
+    public Long queryInvitedPersonTotal(@Param("invitedPersonQueryDTO")InvitedPersonQueryDTO invitedPersonQueryDTO);
+}
+
+
+
+

+ 3 - 2
src/main/java/com/example/xiaoshiweixinback/service/AssoPersonFunctionService.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.example.xiaoshiweixinback.business.common.base.RedisConf;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.redis.RedisService;
 import com.example.xiaoshiweixinback.business.utils.*;
 import com.example.xiaoshiweixinback.domain.AssoPersonFunction;
@@ -84,10 +85,10 @@ public class AssoPersonFunctionService extends ServiceImpl<AssoPersonFunctionMap
             functionConfig = JSON.parseObject(String.valueOf(o), FunctionConfig.class);
         }
         if (functionConfig == null) {
-            throw new BusinessException("402", "无权限");
+            throw new BusinessException(ExceptionEnum.PERMISSION_ERROR, "无权限");
         } else {
             if (functionConfig.getCanGetNum() == 0) {
-                throw new BusinessException("402", "超过可使用次数");
+                throw new BusinessException(ExceptionEnum.PERMISSION_BEYOND_USETIME, "超过可使用次数");
             }
         }
         return functionConfig;

+ 5 - 1
src/main/java/com/example/xiaoshiweixinback/service/AssoPersonProductService.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.exception.XiaoShiException;
 import com.example.xiaoshiweixinback.business.utils.CacheUtil;
 import com.example.xiaoshiweixinback.business.utils.LoginUtils;
@@ -109,7 +110,10 @@ public class AssoPersonProductService extends ServiceImpl<AssoPersonProductMappe
         Long total = this.count(queryWrapper);
 
         if (total >= totalNum) {
-            throw new BusinessException("606", "已超过可关注数量");
+            if(assoVipFunction.getVipType().equals(0)){
+                throw new BusinessException(ExceptionEnum.PERMISSION_NO_VIP);
+            }
+            throw new BusinessException(ExceptionEnum.PERMISSION_BEYOND_USETIME, "已超过可关注数量");
         }
 
        return assoPersonProduct;

+ 20 - 4
src/main/java/com/example/xiaoshiweixinback/service/AssoPersonVipService.java

@@ -26,7 +26,6 @@ public class AssoPersonVipService extends ServiceImpl<AssoPersonVipMapper, AssoP
                 .eq(AssoPersonVip::getVipType, vip.getVipType())
                 .orderByDesc(AssoPersonVip::getExpiryTime);
         assoPersonVip = this.getOne(queryWrapper, false);
-
         if (assoPersonVip != null) {
           this.updateAssoPersonVip(assoPersonVip,personUuid,vip);
         }
@@ -35,7 +34,9 @@ public class AssoPersonVipService extends ServiceImpl<AssoPersonVipMapper, AssoP
         return assoPersonVip;
     }
 
+
     public AssoPersonVip addAssoPersonVip(String personUuid, Vip vip) {
+        //判断是否被邀请过
         Date date = new Date();
         AssoPersonVip assoPersonVip = new AssoPersonVip();
         assoPersonVip.setCreateTime(date);
@@ -58,9 +59,7 @@ public class AssoPersonVipService extends ServiceImpl<AssoPersonVipMapper, AssoP
             expiryDate = DateUtils.getPlusMonthDate(orgExpiry, lastTime);
         } else {
             expiryDate = DateUtils.getPlusMonthDate(date, lastTime);
-
         }
-
         assoPersonVip.setExpiryTime(expiryDate);
         assoPersonVip.setVipUuid(vip.getVipUuid());
         assoPersonVip.setVipType(vip.getVipType());
@@ -69,7 +68,24 @@ public class AssoPersonVipService extends ServiceImpl<AssoPersonVipMapper, AssoP
         return assoPersonVip;
     }
 
-
+    /**
+     *
+     * @param personUuid
+     * @param dateType 0天 1月 2年
+     * @param lastTime
+     * @return
+     */
+    public AssoPersonVip addAssoPersonVipByTime(String personUuid,Integer dateType,Integer lastTime) {
+        Date date = new Date();
+        AssoPersonVip assoPersonVip = new AssoPersonVip();
+        assoPersonVip.setCreateTime(date);
+        Date expiryDate = DateUtils.getPlusDayDate(date, lastTime);
+        assoPersonVip.setExpiryTime(expiryDate);
+        assoPersonVip.setPersonUuid(personUuid);
+        assoPersonVip.setVipType(1);
+        assoPersonVip.insert();
+        return assoPersonVip;
+    }
 
 }
 

+ 6 - 5
src/main/java/com/example/xiaoshiweixinback/service/AssoPersonVoucherService.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.example.xiaoshiweixinback.business.common.base.Records;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.exception.XiaoShiException;
 import com.example.xiaoshiweixinback.business.utils.CacheUtil;
 import com.example.xiaoshiweixinback.business.utils.FormatUtil;
@@ -47,7 +48,7 @@ public class AssoPersonVoucherService extends ServiceImpl<AssoPersonVoucherMappe
 
         //校验
         if (sendVoucherToPersonVO == null || personUuids == null || personUuids.size() == 0 || sendVoucherToPersonVO.getInAddVoucherVOS() == null) {
-            throw new BusinessException("608", "请校验参数");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "请校验参数");
         }
 
         List<AssoPersonVoucher> assoPersonVouchers = new ArrayList<>();
@@ -59,7 +60,7 @@ public class AssoPersonVoucherService extends ServiceImpl<AssoPersonVoucherMappe
             //根据voucherId查询优惠券
             Voucher voucher = voucherService.getById(voucherId);
             if (voucher == null) {
-                throw new BusinessException("608", "优惠券不存在");
+                throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "优惠券不存在");
             }
             for (int t = 0; t < num; t++) {
                 for (String personUuid : personUuids) {
@@ -149,14 +150,14 @@ public class AssoPersonVoucherService extends ServiceImpl<AssoPersonVoucherMappe
         } else if (state == 2) {
             useState = 0;
         } else {
-            throw new BusinessException("608", "非法修改优惠券状态");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "非法修改优惠券状态");
         }
         LambdaQueryWrapper<AssoPersonVoucher> assoPersonVoucherLambdaQueryWrapper = new LambdaQueryWrapper<>();
         assoPersonVoucherLambdaQueryWrapper.in(AssoPersonVoucher::getId, assoIds)
                 .eq(AssoPersonVoucher::getUseState, useState);
         List<AssoPersonVoucher> assoPersonVouchers = this.list(assoPersonVoucherLambdaQueryWrapper);
         if (assoPersonVouchers.size() < assoIds.size()) {
-            throw new BusinessException("608", "伪造的优惠券");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "伪造的优惠券");
         }
 
         //更新状态
@@ -180,7 +181,7 @@ public class AssoPersonVoucherService extends ServiceImpl<AssoPersonVoucherMappe
                 .eq(AssoPersonVoucher::getPersonUuid, personId);
         List<AssoPersonVoucher> assoPersonVouchers = this.list(assoPersonVoucherLambdaQueryWrapper);
         if (assoPersonVouchers.size() != assoVoucherIds.size()) {
-            throw new BusinessException("608", "伪造的优惠券");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "伪造的优惠券");
         }
 
         for (AssoPersonVoucher voucher : assoPersonVouchers) {

+ 1 - 1
src/main/java/com/example/xiaoshiweixinback/service/AssoProductFileService.java

@@ -24,7 +24,7 @@ import java.util.stream.Collectors;
 @Service
 public class AssoProductFileService extends ServiceImpl<AssoProductFileMapper, AssoProductFile> {
 
-   @Autowired
+     @Autowired
     private CacheUtil cacheUtil;
     @Transactional
     public void addOrUpdateProductFile(Integer productId, List<String> guids) {

+ 3 - 2
src/main/java/com/example/xiaoshiweixinback/service/ImportTaskService.java

@@ -2,6 +2,7 @@ package com.example.xiaoshiweixinback.service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.CacheUtil;
 import com.example.xiaoshiweixinback.business.utils.LoginUtils;
 import com.example.xiaoshiweixinback.business.utils.ReadExcelUtils;
@@ -36,7 +37,7 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         try {
              total = ReadExcelUtils.getExcelTotal(sheet);
         }catch (Exception e ){
-            throw new BusinessException("607","获取文件错误");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR,"获取文件错误");
         }
 
         String name = names[0] + "导入任务";
@@ -45,7 +46,7 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
             List<String> ids =   fileManagerService.uploadFileGetGuid2(Arrays.asList(file));
      importTask.setFileGuid(ids.get(0));
         } catch (Exception e) {
-            throw  new BusinessException("607","上传文件错误");
+            throw  new BusinessException(ExceptionEnum.BUSINESS_ERROR,"上传文件错误");
         }
         importTask.setTaskName(name);
         importTask.setImportType(type);

+ 105 - 0
src/main/java/com/example/xiaoshiweixinback/service/InviteMessageService.java

@@ -0,0 +1,105 @@
+package com.example.xiaoshiweixinback.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.xiaoshiweixinback.business.common.base.Records;
+import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
+import com.example.xiaoshiweixinback.business.utils.CacheUtil;
+import com.example.xiaoshiweixinback.business.utils.LoginUtils;
+import com.example.xiaoshiweixinback.domain.InviteMessage;
+import com.example.xiaoshiweixinback.domain.Person;
+import com.example.xiaoshiweixinback.entity.invite.InvitedPersonQueryDTO;
+import com.example.xiaoshiweixinback.entity.invite.InvitedPersonVO;
+import com.example.xiaoshiweixinback.entity.person.PersonQueryVO;
+import com.example.xiaoshiweixinback.entity.person.PersonVO;
+import com.example.xiaoshiweixinback.entity.vo.PersonnelVO;
+import com.example.xiaoshiweixinback.mapper.InviteMessageMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author admin
+ * @description 针对表【invite_message(邀请信息表)】的数据库操作Service实现
+ * @createDate 2024-07-02 21:25:55
+ */
+@Service
+@RequiredArgsConstructor
+public class InviteMessageService extends ServiceImpl<InviteMessageMapper, InviteMessage> {
+    private final PersonService personService;
+    public  final CacheUtil cacheUtil;
+    private final  AssoPersonVipService assoPersonVipService;
+    public void checkInvite(String inviteNode) {
+        if(inviteNode==null){
+            return;
+        }
+        LambdaQueryWrapper<Person> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Person::getUuid, inviteNode);
+        Person person = personService.getOne(queryWrapper, false);
+        if (person == null) {
+            throw new BusinessException(ExceptionEnum.LOGIN_INVITE_ERROR, "邀请码错误");
+        }
+
+    }
+
+
+    public void addInviteMessage(String inviteNode, String personUuid) {
+        if(inviteNode==null){
+            return;
+        }
+        InviteMessage inviteMessage = new InviteMessage();
+        inviteMessage.setInvitePersonUuid(inviteNode);
+        inviteMessage.setIfBuyVip(false);
+        inviteMessage.setInvitedPersonUuid(personUuid);
+        inviteMessage.insert();
+        assoPersonVipService.addAssoPersonVipByTime(personUuid,0,3);
+    }
+
+    public Integer getInviteGiveVoucher(String personUuid) {
+        //查询人员是否被邀请
+        LambdaQueryWrapper<InviteMessage> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(InviteMessage::getInvitedPersonUuid, personUuid)
+                .eq(InviteMessage::getIfBuyVip, false);
+        InviteMessage inviteMessage = this.getOne(queryWrapper, false);
+
+        if (inviteMessage == null) {
+            return 0;
+        } else {
+            String inviteId = inviteMessage.getInvitePersonUuid();
+            LambdaQueryWrapper<InviteMessage> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.eq(InviteMessage::getInvitePersonUuid, inviteId)
+                    .eq(InviteMessage::getIfBuyVip, true);
+            Long count = this.count(queryWrapper1);
+            if (count >= 5) {
+                return 0;
+            } else {
+                //TODO 给邀请人赠送优惠券
+                inviteMessage.setIfBuyVip(true);
+                inviteMessage.updateById();
+                return 3;
+            }
+        }
+    }
+
+
+    public Records queryInvitedPerson(InvitedPersonQueryDTO invitedPersonQueryDTO) {
+        Long current = invitedPersonQueryDTO.getCurrent();
+        Long size = invitedPersonQueryDTO.getSize();
+       PersonnelVO personVO =cacheUtil.getLoginUser(LoginUtils.getToken());
+         invitedPersonQueryDTO.setPersonUuid(personVO.getUuid());
+        List<InvitedPersonVO> invitedPersonVOS = this.getBaseMapper().queryInvitedPerson(invitedPersonQueryDTO);
+        Long total = this.getBaseMapper().queryInvitedPersonTotal(invitedPersonQueryDTO);
+        Records records = new Records();
+        records.setData(invitedPersonVOS);
+        records.setTotal(total);
+        records.setSize(size);
+        records.setCurrent(current);
+        return records;
+    }
+}
+
+
+
+

+ 17 - 5
src/main/java/com/example/xiaoshiweixinback/service/LoginService.java

@@ -81,7 +81,10 @@ public class LoginService {
     private AssoPersonVipMapper assoPersonVipMapper;
     @Autowired
     private PersonService personService;
-
+    @Autowired
+    private InviteMessageService inviteMessageService;
+    @Autowired
+    private AssoPersonVipService assoPersonVipService;
     /**
      * 手机号/账号登录
      *
@@ -90,6 +93,7 @@ public class LoginService {
      */
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
     public LoginVO loginByPhone(LoginDTO dto) throws Exception {
+       String inviteCode =dto.getInviteCode();
         //获取缓存中验证码
         Object codeObj = redisService.get(AppCacheKeyUtil.getLoginMessageCode(dto.getPhoneNum()));
         if (ToolUtil.isEmpty(codeObj)) {
@@ -114,12 +118,14 @@ public class LoginService {
         Person person = personMapper.selectOne(queryWrapper);
         LoginVO loginVO = new LoginVO();
         if (ToolUtil.isEmpty(person)) {
+            inviteMessageService.checkInvite(inviteCode);
             person = new Person();
             person.setPhoneNum(dto.getPhoneNum());
             String uid = IdUtil.simpleUUID();
             person.setUuid(uid);
 
             personMapper.insert(person);
+            inviteMessageService.addInviteMessage(inviteCode, person.getUuid());
 
             loginVO.setId(person.getId());
             loginVO.setPhone(person.getPhoneNum());
@@ -146,10 +152,13 @@ public class LoginService {
      * @date: 2024/04/01
      * @return: LoginByWxVO
      */
+    @Transactional(rollbackFor = Exception.class)
     public LoginByWxVO loginByWeChat(LoginByWxDTO wxDTO) throws Exception {
+
         String code = wxDTO.getCode();
         String encryptedData = wxDTO.getEncryptedData();
         String iv = wxDTO.getIv();
+        String inviteCode = wxDTO.getInviteCode();
 
         //返回数据
         LoginByWxVO wxVO = new LoginByWxVO();
@@ -180,6 +189,7 @@ public class LoginService {
                     person.setOpenId(jscode2SessionWo.getOpenid());
                     person.updateById();
                 } else {
+                    inviteMessageService.checkInvite(inviteCode);
                     person = new Person();
                     person.setPhoneNum(phoneNumber);
                     person.setOpenId(jscode2SessionWo.getOpenid());
@@ -188,9 +198,11 @@ public class LoginService {
                     person.insert();
                     wxVO.setId(person.getId());
                     wxVO.setIfFirst(true);
+                    inviteMessageService.addInviteMessage(inviteCode, person.getUuid());
                 }
                 wxVO.setPhoneNum(phoneNumber);
             }
+
             wxVO.setToken(jwtTokenUtil.createToken());
             wxVO.setOpenId(jscode2SessionWo.getOpenid());
 //            redisService.set(AppCacheKeyUtil.getUserIdToken(wxVO.getId()), AppCacheKeyUtil.getTokenUserInfo(wxVO.getToken()));
@@ -428,13 +440,13 @@ public class LoginService {
                 .or().eq(Person::getEmail, account);
         Person person = personService.getOne(queryWrapper, false);
         if (person == null) {
-            throw new BusinessException("606", "账号错误");
+            throw new BusinessException(ExceptionEnum.LOGIN_ACCOUNT_MISTAKE, "账号错误");
         }
         if (person.getUserPassword() == null) {
-            throw new BusinessException("606", "非账号登录用户");
+            throw new BusinessException(ExceptionEnum.LOGIN_PASWORD_MISTAKE, "非账号登录用户");
         }
         if (!person.getUserPassword().equals(password)) {
-            throw new BusinessException("606", "密码错误");
+            throw new BusinessException(ExceptionEnum.LOGIN_PASWORD_MISTAKE, "密码错误");
         }
 
         //将用户信息数据存入Redis
@@ -445,7 +457,7 @@ public class LoginService {
             token = jwtTokenUtil.createToken();
 
         } catch (Exception e) {
-            throw new BusinessException("606", "生成token错误");
+            throw new BusinessException(ExceptionEnum.LOGIN_ERROR, "生成token错误");
         }
         BeanUtil.copy(person, loginVO);
         loginVO.setToken(token);

+ 6 - 2
src/main/java/com/example/xiaoshiweixinback/service/MonitorService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.example.xiaoshiweixinback.business.common.base.Records;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.CacheUtil;
 import com.example.xiaoshiweixinback.business.utils.LoginUtils;
 import com.example.xiaoshiweixinback.domain.AssoPersonProduct;
@@ -160,7 +161,7 @@ public class MonitorService extends ServiceImpl<MonitorMapper, Monitor> {
             productService.loadProduct(productVOS, false);
 
         } catch (Exception e) {
-            throw new BusinessException("607", "装载错误");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "装载错误");
         }
         Records records = new Records();
         records.setTotal(total);
@@ -208,7 +209,10 @@ public class MonitorService extends ServiceImpl<MonitorMapper, Monitor> {
         Long total = this.count(queryWrapper);
 
         if (total >= totalNum) {
-            throw new BusinessException("606", "已超过可监控数量");
+            if(assoVipFunction.getVipType().equals(0)){
+                throw new BusinessException(ExceptionEnum.PERMISSION_NO_VIP);
+            }
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "已超过可监控数量");
         }
 
         return org;

+ 2 - 1
src/main/java/com/example/xiaoshiweixinback/service/OrderService.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.BatchNoUtil;
 import com.example.xiaoshiweixinback.domain.*;
 
@@ -126,7 +127,7 @@ public class OrderService extends ServiceImpl<OrderMapper, Order> {
         // 计算价格 (商品总价格-优惠券) *折扣
         Double truePrice =withVocherPrice*discount;
         if(!truePrice.equals(price)){
-            throw new BusinessException("608","价格错误");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR,"价格错误");
         }
     }
 }

+ 5 - 0
src/main/java/com/example/xiaoshiweixinback/service/PersonService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.example.xiaoshiweixinback.business.common.base.Records;
 import com.example.xiaoshiweixinback.domain.Person;
+import com.example.xiaoshiweixinback.entity.invite.InvitedPersonQueryDTO;
 import com.example.xiaoshiweixinback.entity.person.PersonQueryDTO;
 import com.example.xiaoshiweixinback.entity.person.PersonQueryVO;
 import com.example.xiaoshiweixinback.entity.person.PersonVO;
@@ -69,6 +70,10 @@ public class PersonService extends ServiceImpl<PersonMapper, Person> {
         });
  return personVOS;
     }
+
+
+
+
 }
 
 

+ 5 - 4
src/main/java/com/example/xiaoshiweixinback/service/ProductService.java

@@ -7,6 +7,7 @@ import com.example.xiaoshiweixinback.business.common.Response;
 import com.example.xiaoshiweixinback.business.common.base.Records;
 import com.example.xiaoshiweixinback.business.common.base.SystemFile;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.CacheUtil;
 import com.example.xiaoshiweixinback.business.utils.LoginUtils;
 import com.example.xiaoshiweixinback.business.utils.StringUtils;
@@ -303,7 +304,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> {
         String name = hotProductAddDTO.getName();
         Integer categoryId = hotProductAddDTO.getProductCategoryId();
         if (name == null) {
-            throw new BusinessException("608", "产品名称不可为空");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "产品名称不可为空");
         }
         LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Product::getName, name)
@@ -313,7 +314,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> {
         }
         Product orgProject = this.getOne(queryWrapper, false);
         if (orgProject != null) {
-            throw new BusinessException("607", "产品名称不可重复");
+            throw new BusinessException(ExceptionEnum.BUSINESS_CHECK, "产品名称不可重复");
         }
 
         if (hotProductAddDTO.getId() == null) {
@@ -403,11 +404,11 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> {
         try {
             List<String> guids = fileManagerService.uploadFileGetGuid(Arrays.asList(multipartFile));
             if (guids == null | guids.size() == 0) {
-                throw new BusinessException("607", "上传文件错误");
+                throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "上传文件错误");
             }
             guid = guids.get(0);
         } catch (Exception e) {
-            throw new BusinessException("607", "上传文件错误");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "上传文件错误");
         }
 
         //创建导入产品任务

+ 5 - 4
src/main/java/com/example/xiaoshiweixinback/service/TicketService.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.example.xiaoshiweixinback.business.common.base.Records;
 import com.example.xiaoshiweixinback.business.common.base.SystemFile;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.BatchNoUtil;
 import com.example.xiaoshiweixinback.business.utils.CacheUtil;
 import com.example.xiaoshiweixinback.business.utils.LoginUtils;
@@ -369,10 +370,10 @@ public class TicketService extends ServiceImpl<TicketMapper, Ticket> {
         //根据id查询工单
         Ticket ticket = this.getById(id);
         if (ticket == null) {
-            throw new BusinessException("607", "未查询到工单");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "未查询到工单");
         }
         if (ticket.getTicketProgress() > 2) {
-            throw new BusinessException("607", "此工单不可进行操作");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "此工单不可进行操作");
         }
 
         ticket.setPrice(price);
@@ -404,10 +405,10 @@ public class TicketService extends ServiceImpl<TicketMapper, Ticket> {
         //根据id查询工单
         Ticket ticket = this.getById(id);
         if (ticket == null) {
-            throw new BusinessException("607", "未查询到工单");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "未查询到工单");
         }
         if (ticket.getTicketProgress() > 3) {
-            throw new BusinessException("607", "此工单不可进行操作");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "此工单不可进行操作");
         }
 
         //添加工单流程

+ 2 - 1
src/main/java/com/example/xiaoshiweixinback/service/UserFeedbackService.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.example.xiaoshiweixinback.business.common.base.Records;
 import com.example.xiaoshiweixinback.business.common.base.SystemFile;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.CacheUtil;
 import com.example.xiaoshiweixinback.business.utils.LoginUtils;
 import com.example.xiaoshiweixinback.domain.AssoFeedbackFile;
@@ -66,7 +67,7 @@ public class UserFeedbackService extends ServiceImpl<UserFeedbackMapper, UserFee
         Long current = userFeedbackQueryDTO.getCurrent();
         Long size = userFeedbackQueryDTO.getSize();
         if (current == null || size == null) {
-            throw new BusinessException("608", "请输入分页信息");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "请输入分页信息");
         }
         LambdaQueryWrapper<UserFeedback> queryWrapper = new LambdaQueryWrapper<>();
         Page<UserFeedback> page = this.page(new Page<>(current, size), queryWrapper);

+ 23 - 18
src/main/java/com/example/xiaoshiweixinback/service/VipService.java

@@ -48,6 +48,8 @@ public class VipService extends ServiceImpl<VipMapper, Vip> {
     private SysFunctionService sysFunctionService;
     @Autowired
     private CacheUtil cacheUtil;
+    @Autowired
+    private InviteMessageService inviteMessageService;
 
     /**
      * 查询会员
@@ -76,25 +78,25 @@ public class VipService extends ServiceImpl<VipMapper, Vip> {
         String personUuId = order.getPersonUuid();
         Vip vip = this.getVipByUuId(uuid);
         AssoPersonVip assoPersonVip = assoPersonVipService.getAsso(personUuId, vip);
-        //查询vip相关权益
-        List<AssoVipFunction> assoVipFunctions = assoVipFunctionService.getVipFunctionByVipUuid(uuid);
-        //将权益赋值给人员
-        List<AssoPersonFunction> assoPersonFunctions = new ArrayList<>();
-        assoVipFunctions.forEach(item -> {
-            AssoPersonFunction assoPersonFunction = new AssoPersonFunction();
-            assoPersonFunction.setFunctionUuid(item.getFunctionUuid());
-            assoPersonFunction.setExpiryTime(assoPersonVip.getExpiryTime());
-            assoPersonFunction.setCreateTime(assoPersonVip.getCreateTime());
-            assoPersonFunction.setFunctionParameter(item.getFunctionParameter());
-            assoPersonFunction.setVipType(vip.getVipType());
-            assoPersonFunction.setVipUuid(vip.getVipUuid());
-            assoPersonFunction.setPersonUuid(personUuId);
-            assoPersonFunctions.add(assoPersonFunction);
-        });
-        assoPersonFunctionService.saveBatch(assoPersonFunctions);
+    //    //查询vip相关权益
+  //     List<AssoVipFunction> assoVipFunctions = assoVipFunctionService.getVipFunctionByVipUuid(uuid);
+//        //将权益赋值给人员
+//        List<AssoPersonFunction> assoPersonFunctions = new ArrayList<>();
+//        assoVipFunctions.forEach(item -> {
+//            AssoPersonFunction assoPersonFunction = new AssoPersonFunction();
+//            assoPersonFunction.setFunctionUuid(item.getFunctionUuid());
+//            assoPersonFunction.setExpiryTime(assoPersonVip.getExpiryTime());
+//            assoPersonFunction.setCreateTime(assoPersonVip.getCreateTime());
+//            assoPersonFunction.setFunctionParameter(item.getFunctionParameter());
+//            assoPersonFunction.setVipType(vip.getVipType());
+//            assoPersonFunction.setVipUuid(vip.getVipUuid());
+//            assoPersonFunction.setPersonUuid(personUuId);
+//            assoPersonFunctions.add(assoPersonFunction);
+//        });
+//        assoPersonFunctionService.saveBatch(assoPersonFunctions);
 
         //添加优惠券
-
+        inviteMessageService.getInviteGiveVoucher(personUuId);
     }
 
 
@@ -249,8 +251,11 @@ public class VipService extends ServiceImpl<VipMapper, Vip> {
       queryWrapper1.eq(AssoVipFunction::getVipType,vipType)
                 .eq(AssoVipFunction::getFunctionUuid,functionUuid);
       AssoVipFunction assoVipFunction =assoVipFunctionService.getOne(queryWrapper1);
-      return assoVipFunction;
+       return  assoVipFunction;
     }
+
+
+
 }
 
 

+ 13 - 8
src/main/java/com/example/xiaoshiweixinback/service/importPatent/EsDenseVectorService.java

@@ -19,6 +19,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.example.xiaoshiweixinback.business.common.base.Records;
 import com.example.xiaoshiweixinback.business.common.base.SystemFile;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.redis.RedisService;
 import com.example.xiaoshiweixinback.business.utils.BeanUtil;
 import com.example.xiaoshiweixinback.business.utils.FileUtils;
@@ -107,7 +108,7 @@ public class EsDenseVectorService {
     private final UseFunctionFactory useFunctionFactory;
     private final UseFunctionRecordService useFunctionRecordService;
     private static String FACTORY_CLASS = "checkQueryPatent";
-    private static String FUNCTION_UUID= "3";
+    private static String FUNCTION_UUID = "3";
 
     /**
      * R
@@ -125,15 +126,19 @@ public class EsDenseVectorService {
         Long allNum = pageNum * pageSize;
 
         UseFunctionImp useFunctionImpMap = useFunctionFactory.getClass(FACTORY_CLASS);
-    AssoVipFunction assoVipFunction= useFunctionImpMap.checkFunction(FUNCTION_UUID,null);
-        Long size = null;
+        AssoVipFunction assoVipFunction = useFunctionImpMap.checkFunction(FUNCTION_UUID, null);
+        Long size = -2L;
         if (assoVipFunction != null) {
             FunctionConfig functionConfig = JSON.parseObject(assoVipFunction.getFunctionParameter(), FunctionConfig.class);
-            size  = Long.parseLong(functionConfig.getSize().toString());
+            size = Long.parseLong(functionConfig.getSize().toString());
         }
 
         if (size != -1L && allNum > size) {
-            throw new BusinessException("607", "超过可查看专利数量");
+            if (assoVipFunction==null||assoVipFunction.getVipType()==null||assoVipFunction.getVipType().equals(0)) {
+                throw new BusinessException(ExceptionEnum.PERMISSION_NO_VIP, "未开通vip");
+            } else {
+                throw new BusinessException(ExceptionEnum.PERMISSION_BEYOND_USETIME, "超过可查看专利数量");
+            }
         }
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
@@ -164,12 +169,12 @@ public class EsDenseVectorService {
                         .query(org.springframework.data.elasticsearch.client.elc.QueryBuilders.matchAllQueryAsQuery()));
             }
             if (query == null) {
-                throw new BusinessException("608", "检索式错误,请重新输入");
+                throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "检索式错误,请重新输入");
             }
             builder.query(query);
         } else {
             if (q == null) {
-                throw new BusinessException("608", "检索式错误,请重新输入");
+                throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "检索式错误,请重新输入");
             }
             builder.query(q);
         }
@@ -415,7 +420,7 @@ public class EsDenseVectorService {
         }
 
         if (q == null) {
-            throw new BusinessException("608", "检索式错误,请重新输入");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "检索式错误,请重新输入");
         }
 
         builder.query(q);

+ 2 - 1
src/main/java/com/example/xiaoshiweixinback/service/importPatent/excel/ImportProductCategoryService.java

@@ -2,6 +2,7 @@ package com.example.xiaoshiweixinback.service.importPatent.excel;
 
 import cn.hutool.core.util.IdUtil;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.CacheUtil;
 import com.example.xiaoshiweixinback.business.utils.FileUtils;
 import com.example.xiaoshiweixinback.business.utils.ReadExcelUtils;
@@ -113,7 +114,7 @@ public class ImportProductCategoryService {
                 List<String> guids = fileManagerService.uploadFileGetGuid2(Arrays.asList(file));
                 fileIds.add(guids.get(0));
             } catch (Exception e) {
-                throw new BusinessException("607", "上传错误");
+                throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "上传错误");
             }
 
         }

+ 2 - 1
src/main/java/com/example/xiaoshiweixinback/service/importPatent/excel/ImportProductService.java

@@ -3,6 +3,7 @@ package com.example.xiaoshiweixinback.service.importPatent.excel;
 import cn.hutool.core.util.IdUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.*;
 import com.example.xiaoshiweixinback.domain.AssoProductFile;
 import com.example.xiaoshiweixinback.domain.ImportTask;
@@ -120,7 +121,7 @@ public class ImportProductService {
                 List<String> guids = fileManagerService.uploadFileGetGuid2(Arrays.asList(file));
                 fileIds.add(guids.get(0));
             } catch (Exception e) {
-                throw new BusinessException("607", "上传错误");
+                throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "上传错误");
             }
 
         }

+ 2 - 1
src/main/java/com/example/xiaoshiweixinback/service/quartzService/JobService.java

@@ -2,6 +2,7 @@ package com.example.xiaoshiweixinback.service.quartzService;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.entity.quartz.QrtzTaskDTO;
 import com.example.xiaoshiweixinback.entity.quartz.QuartzVO;
 import lombok.RequiredArgsConstructor;
@@ -92,7 +93,7 @@ public class JobService {
 
         }
         catch (Exception e){
-            throw new BusinessException("607","未找到类");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR,"未找到类");
         }
         QuartzVO quartzVO = this.generateQuartzVO(qrtzTask.getId());
         JobDataMap jobDataMap = new JobDataMap();

+ 3 - 2
src/main/java/com/example/xiaoshiweixinback/service/quartzService/QuartzTaskService.java

@@ -2,6 +2,7 @@ package com.example.xiaoshiweixinback.service.quartzService;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.domain.QuartzTask;
 import com.example.xiaoshiweixinback.entity.quartz.QrtzTaskDTO;
 import com.example.xiaoshiweixinback.mapper.QuartzTaskMapper;
@@ -30,7 +31,7 @@ public class QuartzTaskService extends ServiceImpl<QuartzTaskMapper, QuartzTask>
             jobService.addJob(qrtzTaskDTO);
 
         } catch (Exception e) {
-            throw new BusinessException("607", "添加定时任务失败");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "添加定时任务失败");
         }
     }
 
@@ -40,7 +41,7 @@ public class QuartzTaskService extends ServiceImpl<QuartzTaskMapper, QuartzTask>
         try {
             jobService.deleteJob(taskId);
         } catch (Exception e) {
-            throw new BusinessException("607", "删除失败");
+            throw new BusinessException(ExceptionEnum.BUSINESS_ERROR, "删除失败");
         }
 
     }

+ 41 - 0
src/main/resources/mapper/InviteMessageMapper.xml

@@ -0,0 +1,41 @@
+<?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="com.example.xiaoshiweixinback.mapper.InviteMessageMapper">
+
+    <select id="queryInvitedPerson" resultType="com.example.xiaoshiweixinback.entity.invite.InvitedPersonVO">
+        select p.uuid     as uuid,
+        p.name     as name,
+        p.file_guid as fileGuid,
+        p.phone_num as phoneNum,
+        p.email    as email,
+        p.user_name as userName,
+        p.create_time as createTime
+        from invite_message im left join  ecs.person as p
+             on im.invited_person_uuid = p.uuid
+
+        <where>
+             and im.invite_person_uuid=#{invitedPersonQueryDTO.personUuid}
+            <if test="invitedPersonQueryDTO.phoneNum!=null">
+                and p.phone_num like CONCAT('%',#{invitedPersonQueryDTO.phoneNum},'%')
+            </if>
+
+        </where>
+        <if test="invitedPersonQueryDTO.current!=null and invitedPersonQueryDTO.size!=null">
+            limit ${(invitedPersonQueryDTO.current -1)*invitedPersonQueryDTO.size},${invitedPersonQueryDTO.size}
+        </if>
+    </select>
+
+    <select id="queryInvitedPersonTotal" resultType="java.lang.Long">
+        select count(*)
+        from invite_message im left join  ecs.person as p
+        on im.invited_person_uuid = p.uuid
+
+        <where>
+            and im.invite_person_uuid=#{invitedPersonQueryDTO.personUuid}
+            <if test="invitedPersonQueryDTO.phoneNum!=null">
+                and p.phone_num like CONCAT('%',#{invitedPersonQueryDTO.phoneNum},'%')
+            </if>
+
+        </where>
+    </select>
+</mapper>