Browse Source

20241220 付费码管理

lrj 9 months ago
parent
commit
a4d82189b6
44 changed files with 890 additions and 235 deletions
  1. 37 0
      PCS/src/main/java/cn/cslg/permission/common/core/business/SmsService.java
  2. 3 1
      PCS/src/main/java/cn/cslg/permission/common/model/common/SystemDictDTO.java
  3. 27 0
      PCS/src/main/java/cn/cslg/permission/common/model/dto/PersonnelDTO.java
  4. 1 0
      PCS/src/main/java/cn/cslg/permission/common/model/dto/VersionDTO.java
  5. 4 0
      PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/GetQiaoBiPersonDTO.java
  6. 1 0
      PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/QiaoBiPersonSignUpDTO.java
  7. 1 0
      PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/businessTask/QueryAuditTaskDTO.java
  8. 20 17
      PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/businessTask/QueryAuditTaskVO.java
  9. 2 0
      PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/paidCode/AddTenantByPaidCodeDTO.java
  10. 1 0
      PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/tenant/CompanyPersonSignUpDTO.java
  11. 1 0
      PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/tenant/QiaoBiTenantVO.java
  12. 1 0
      PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/version/QiaoBiVersionVO.java
  13. 11 1
      PCS/src/main/java/cn/cslg/permission/common/utils/DateUtils.java
  14. 27 0
      PCS/src/main/java/cn/cslg/permission/common/utils/MqUtils/MailConstants.java
  15. 23 0
      PCS/src/main/java/cn/cslg/permission/common/utils/MqUtils/RabbitMQUtils.java
  16. 6 4
      PCS/src/main/java/cn/cslg/permission/controller/PersonnelController.java
  17. 6 2
      PCS/src/main/java/cn/cslg/permission/controller/qiaobi/QiaoBiPersonController.java
  18. 3 2
      PCS/src/main/java/cn/cslg/permission/controller/qiaobi/VersionController.java
  19. 1 1
      PCS/src/main/java/cn/cslg/permission/domain/Role.java
  20. 2 0
      PCS/src/main/java/cn/cslg/permission/domain/Version.java
  21. 1 0
      PCS/src/main/java/cn/cslg/permission/domain/qiaobi/BusinessTask.java
  22. 2 0
      PCS/src/main/java/cn/cslg/permission/domain/qiaobi/RegistInformation.java
  23. 4 1
      PCS/src/main/java/cn/cslg/permission/mapper/PersonnelMapper.java
  24. 19 12
      PCS/src/main/java/cn/cslg/permission/service/DepartmentService.java
  25. 74 74
      PCS/src/main/java/cn/cslg/permission/service/PersonnelService.java
  26. 69 0
      PCS/src/main/java/cn/cslg/permission/service/RoleService.java
  27. 1 1
      PCS/src/main/java/cn/cslg/permission/service/SysDictService.java
  28. 2 2
      PCS/src/main/java/cn/cslg/permission/service/SystemService.java
  29. 1 0
      PCS/src/main/java/cn/cslg/permission/service/TenantService.java
  30. 5 5
      PCS/src/main/java/cn/cslg/permission/service/VersionService.java
  31. 55 0
      PCS/src/main/java/cn/cslg/permission/service/email/MailSendService.java
  32. 14 2
      PCS/src/main/java/cn/cslg/permission/service/qiaobi/AssoPaidCodeVipTypeService.java
  33. 6 0
      PCS/src/main/java/cn/cslg/permission/service/qiaobi/AssoPersonVipTypeService.java
  34. 36 4
      PCS/src/main/java/cn/cslg/permission/service/qiaobi/AssoTenantVipTypeService.java
  35. 63 10
      PCS/src/main/java/cn/cslg/permission/service/qiaobi/BusinessTaskService.java
  36. 34 11
      PCS/src/main/java/cn/cslg/permission/service/qiaobi/EnterpriseCodeService.java
  37. 65 19
      PCS/src/main/java/cn/cslg/permission/service/qiaobi/PaidCodeService.java
  38. 67 2
      PCS/src/main/java/cn/cslg/permission/service/qiaobi/QiaoBiPersonService.java
  39. 9 3
      PCS/src/main/java/cn/cslg/permission/service/qiaobi/QiaoBiTenantService.java
  40. 1 1
      PCS/src/main/resources/mapper/AssoBusinessTaskVersionMapper.xml
  41. 47 32
      PCS/src/main/resources/mapper/BusinessTaskMapper.xml
  42. 101 24
      PCS/src/main/resources/mapper/PersonnelMapper.xml
  43. 32 0
      PCS/src/test/java/cn/cslg/permission/qiaobi/MailSendTest.java
  44. 4 4
      PCS/src/test/java/cn/cslg/permission/qiaobi/QiaobiPersonTest.java

+ 37 - 0
PCS/src/main/java/cn/cslg/permission/common/core/business/SmsService.java

@@ -62,6 +62,25 @@ public class SmsService {
         request.setTemplateParam(templateParam);//短信模板变量对应的实际值
         try {
             SendSmsResponse response = client.getAcsResponse(request);
+            System.out.println(new Gson().toJson(response));
+        } catch (ClientException e) {
+            System.out.println("ErrCode:" + e.getErrCode());
+            System.out.println("ErrMsg:" + e.getErrMsg());
+            System.out.println("RequestId:" + e.getRequestId());
+        }
+    }
+
+
+    public void sendQiaoBiAccountNotPass(String phoneNum){
+
+        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, secret);
+        IAcsClient client = new DefaultAcsClient(profile);
+        SendSmsRequest request = new SendSmsRequest();
+        request.setPhoneNumbers(phoneNum);//接收短信的手机号码
+        request.setSignName("小世数字科技");//短信签名名称
+        request.setTemplateCode("SMS_476375293 ");//短信模板CODE
+        try {
+            SendSmsResponse response = client.getAcsResponse(request);
             if (!StringUtils.equals(response.getCode(), "OK")) {
                 throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "短信发送过于频繁,请一小时后重试");
             }
@@ -72,4 +91,22 @@ public class SmsService {
             System.out.println("RequestId:" + e.getRequestId());
         }
     }
+
+    public void sendQiaoBiAccountPass(String phoneNum,String password){
+        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, secret);
+        IAcsClient client = new DefaultAcsClient(profile);
+        SendSmsRequest request = new SendSmsRequest();
+        request.setPhoneNumbers(phoneNum);//接收短信的手机号码
+        request.setSignName("小世数字科技");//短信签名名称
+        request.setTemplateCode("SMS_476490344 ");//短信模板CODE
+        String templateParam = "{\"password\":\"" + password + "\"}";
+        request.setTemplateParam(templateParam);//短信模板变量对应的实际值
+        try {
+            SendSmsResponse response = client.getAcsResponse(request);
+        } catch (ClientException e) {
+            System.out.println("ErrCode:" + e.getErrCode());
+            System.out.println("ErrMsg:" + e.getErrMsg());
+            System.out.println("RequestId:" + e.getRequestId());
+        }
+    }
 }

+ 3 - 1
PCS/src/main/java/cn/cslg/permission/common/model/common/SystemDictDTO.java

@@ -2,7 +2,9 @@ package cn.cslg.permission.common.model.common;
 
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class SystemDictDTO {
-    private String type;
+    private List<String> types;
 }

+ 27 - 0
PCS/src/main/java/cn/cslg/permission/common/model/dto/PersonnelDTO.java

@@ -0,0 +1,27 @@
+package cn.cslg.permission.common.model.dto;
+
+import cn.cslg.permission.common.model.BaseVO;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class PersonnelDTO {
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date expitrTime;
+    private Integer tenant;
+    private String vipTypeName;
+    private String name;
+    private Date endExpitrTime;
+    private Date startExpitrTime;
+    private Integer expitrDays;
+    private Integer id;
+    private Long size;
+
+    /**
+     * 当前页数
+     */
+    private Long  current;
+
+}

+ 1 - 0
PCS/src/main/java/cn/cslg/permission/common/model/dto/VersionDTO.java

@@ -47,4 +47,5 @@ public class VersionDTO {
      * 版本状态,1已保存,2调试,3已发布
      */
     private Integer status;
+    private Integer updateType;
 }

+ 4 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/GetQiaoBiPersonDTO.java

@@ -1,10 +1,14 @@
 package cn.cslg.permission.common.model.qiaobi;
 
+
 import lombok.Data;
 
 import java.util.Date;
 
+
 @Data
 public class GetQiaoBiPersonDTO {
     private Date expitrTime;
+    private Integer tenantId;
+    private Date startTime;
 }

+ 1 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/QiaoBiPersonSignUpDTO.java

@@ -13,4 +13,5 @@ public class QiaoBiPersonSignUpDTO {
     private String password;
     private String inviteCode;
     private Integer id;
+    private Integer tenantId;
 }

+ 1 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/businessTask/QueryAuditTaskDTO.java

@@ -10,4 +10,5 @@ public class QueryAuditTaskDTO {
    private Integer tenantId;
    private Long size;
    private Long current;
+    private Boolean ifSys;
 }

+ 20 - 17
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/businessTask/QueryAuditTaskVO.java

@@ -8,23 +8,26 @@ import java.util.Date;
 @Data
 public class QueryAuditTaskVO {
     private Integer id;
-   private Integer departmentId;
-   private String  departmentName;
-   private Integer positionId;
-   private String  positionName;
-   private String personnelName;
-   private String personnelPhone;
-   private String personnelEmail;
-   private String personnelUserName;
-   private String  personnelPassword;
-   private Integer status;
-   private String auditResult;
-   private Integer handleId;
-   private String handleName;
-   private Date createTime;
-   private Integer createId;
-   private String createName;
-   private Integer type;
+    private Integer departmentId;
+    private String departmentName;
+    private Integer positionId;
+    private String positionName;
+    private String personnelName;
+    private String personnelPhone;
+    private String personnelEmail;
+    private String personnelUserName;
+    private String personnelPassword;
+    private Integer status;
+    private String auditResult;
+    private Integer handleId;
+    private String handleName;
+    private Date createTime;
+    private Integer createId;
+    private String createName;
+    private Integer type;
     private String versionName;
     private String versionNum;
+    private Integer versionId;
+    private Date handleTime;
+
 }

+ 2 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/paidCode/AddTenantByPaidCodeDTO.java

@@ -15,4 +15,6 @@ public class AddTenantByPaidCodeDTO {
     private Integer id;
     private String remark;
     private String token;
+    private String paidCode;
+    private String phoneCode;
 }

+ 1 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/tenant/CompanyPersonSignUpDTO.java

@@ -15,4 +15,5 @@ public class CompanyPersonSignUpDTO {
     private String personnelPassword;
     private String phoneCode;
     private Integer vipTypeId;
+    private Integer tenantId;
 }

+ 1 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/tenant/QiaoBiTenantVO.java

@@ -17,4 +17,5 @@ public class QiaoBiTenantVO {
     private String userName;
     private String email;
    private List<QiaoBiVIPTypeVO> vipTypes;
+   private String enterpriseCode;
 }

+ 1 - 0
PCS/src/main/java/cn/cslg/permission/common/model/qiaobi/version/QiaoBiVersionVO.java

@@ -38,4 +38,5 @@ public class QiaoBiVersionVO {
     private Date publishTime;
     private String createName;
     private SystemFile systemFile;
+    private Integer updateType;
 }

+ 11 - 1
PCS/src/main/java/cn/cslg/permission/common/utils/DateUtils.java

@@ -784,5 +784,15 @@ public class DateUtils {
         }
         return null;
     }
-
+    public static Date getPlusDayDate(Date date, int day) {
+        Calendar cal = Calendar.getInstance();
+        try {
+            cal.setTime(date);
+            cal.add(Calendar.DATE, day);
+            return cal.getTime();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
 }

+ 27 - 0
PCS/src/main/java/cn/cslg/permission/common/utils/MqUtils/MailConstants.java

@@ -0,0 +1,27 @@
+package cn.cslg.permission.common.utils.MqUtils;
+
+public class MailConstants {
+    //消息投递中
+    public static final Integer DELIVERING = 0;
+
+    //消息投成功
+    public static final Integer SUCCESS = 1;
+
+    //消息投递失败
+    public static final Integer FAILURE = 2;
+
+    //最大重试次数
+    public static final Integer MAX_TRY_COUNT = 2;
+
+    //消息超时时间
+    public static final Integer MSG_TIMEOUT = 1;
+
+    //队列
+
+    //交换机
+    public static final String MAIL_EXCHANGE_NAME = "mail.exchange";
+
+    //路由键
+    public static final String MAIL_ROUTING_KEY_NAME = "mail.routing.key";
+
+}

+ 23 - 0
PCS/src/main/java/cn/cslg/permission/common/utils/MqUtils/RabbitMQUtils.java

@@ -0,0 +1,23 @@
+package cn.cslg.permission.common.utils.MqUtils;
+
+import org.springframework.amqp.rabbit.connection.CorrelationData;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+@Component
+public class RabbitMQUtils {
+    @Autowired
+    private RabbitTemplate rabbitTemplate;
+    /**
+     * 向用户邮箱发送短信
+     *
+     * @param map 所需参数
+     */
+    public void sendEmailMessage(Map<String, Object> map) {
+        rabbitTemplate.convertAndSend(MailConstants.MAIL_EXCHANGE_NAME, MailConstants.MAIL_ROUTING_KEY_NAME, map, new CorrelationData("1"));
+    }
+}

+ 6 - 4
PCS/src/main/java/cn/cslg/permission/controller/PersonnelController.java

@@ -1,6 +1,8 @@
 package cn.cslg.permission.controller;
 
 import cn.cslg.permission.common.core.base.Constants;
+import cn.cslg.permission.common.model.Records;
+import cn.cslg.permission.common.model.dto.PersonnelDTO;
 import cn.cslg.permission.common.model.personnel.UploadPersonnelConfigDTO;
 import cn.cslg.permission.common.model.qiaobi.GetQiaoBiPersonDTO;
 import cn.cslg.permission.common.model.vo.PersonnelUpdateVO;
@@ -83,8 +85,8 @@ public class PersonnelController {
     @checkAuth(FunId = "/admin/user/check")
     @PostMapping("/queryPageList2")
     @Operation(summary = "分页查询人员")
-    public String queryPageList2(@RequestBody PersonnelVO personnelVO) {
-        return personnelService.queryPageList2(personnelVO);
+    public String queryPageList2(@RequestBody PersonnelDTO personnelDTO) {
+        return personnelService.queryPageList2(personnelDTO);
     }
 
 
@@ -162,8 +164,8 @@ public class PersonnelController {
     @Operation(summary = "查询过期人员")
     public String getExpirePersons(@RequestBody GetQiaoBiPersonDTO getQiaoBiPersonDTO) {
         getQiaoBiPersonDTO=new GetQiaoBiPersonDTO();
-        List<PersonnelVO> personnelVOS = personnelService.getExpirePersons(getQiaoBiPersonDTO);
-            return Response.success(personnelVOS);
+       Records records = personnelService.getExpirePersons(getQiaoBiPersonDTO);
+            return Response.success(records);
 
     }
 

+ 6 - 2
PCS/src/main/java/cn/cslg/permission/controller/qiaobi/QiaoBiPersonController.java

@@ -6,12 +6,15 @@ import cn.cslg.permission.common.model.personnel.UploadPersonnelConfigDTO;
 import cn.cslg.permission.common.model.qiaobi.QiaoBiPersonSignUpDTO;
 import cn.cslg.permission.common.model.qiaobi.QiaoBiVIPTypeVO;
 import cn.cslg.permission.common.model.qiaobi.QiaoBiVipTypeDTO;
+import cn.cslg.permission.common.model.qiaobi.paidCode.AddTenantByPaidCodeDTO;
 import cn.cslg.permission.common.model.qiaobi.tenant.CompanyPersonSignUpDTO;
 import cn.cslg.permission.common.model.vo.LoginVO;
 import cn.cslg.permission.common.model.vo.PersonnelVO;
 import cn.cslg.permission.common.utils.Response;
 import cn.cslg.permission.service.qiaobi.AppVipTypeService;
+import cn.cslg.permission.service.qiaobi.PaidCodeService;
 import cn.cslg.permission.service.qiaobi.QiaoBiPersonService;
+import cn.cslg.permission.service.qiaobi.QiaoBiTenantService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
@@ -35,6 +38,7 @@ import java.util.List;
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class QiaoBiPersonController {
     private final QiaoBiPersonService qiaoBiPersonService;
+    private final PaidCodeService paidCodeService;
     @PostMapping("/personnelSignUp")
     @Operation(summary = "用户注册")
     public String personnelSignUp(@RequestBody QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO) {
@@ -58,8 +62,8 @@ public class QiaoBiPersonController {
 
     @PostMapping("/companySignUp")
     @Operation(summary = "企业注册")
-    public String companySignUp(@RequestBody QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO) {
-        qiaoBiPersonService.personSignUp(qiaoBiPersonSignUpDTO);
+    public String companySignUp(@RequestBody AddTenantByPaidCodeDTO addTenantByPaidCodeDTO) {
+        paidCodeService.addTenantByPaidCode(addTenantByPaidCodeDTO);
         return Response.success();
     }
 

+ 3 - 2
PCS/src/main/java/cn/cslg/permission/controller/qiaobi/VersionController.java

@@ -15,6 +15,7 @@ import cn.cslg.permission.common.model.vo.FunctionVO;
 import cn.cslg.permission.common.utils.Response;
 import cn.cslg.permission.common.utils.web.RequestUtils;
 import cn.cslg.permission.domain.Function;
+import cn.cslg.permission.domain.Version;
 import cn.cslg.permission.service.VersionService;
 import cn.cslg.permission.service.qiaobi.AssoFunctionModuleService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -90,8 +91,8 @@ public class VersionController {
     @Operation(summary = "更新版本状态")
     @PostMapping("/updateStatus")
     public String updateStatus(@RequestBody VersionStatusDTO versionStatusDTO) {
-        Integer id = versionService.updateVersionStatus(versionStatusDTO);
-        return Response.success(id);
+        Version version = versionService.updateVersionStatus(versionStatusDTO);
+        return Response.success(version);
     }
 
     @Operation(summary = "分页查询版本列表")

+ 1 - 1
PCS/src/main/java/cn/cslg/permission/domain/Role.java

@@ -46,5 +46,5 @@ public class Role extends BaseEntity<Role> {
      * 角色描述
      */
     @TableField(value = "APPLICATION_CODE")
-    private Integer applicationCode;
+    private String applicationCode;
 }

+ 2 - 0
PCS/src/main/java/cn/cslg/permission/domain/Version.java

@@ -47,6 +47,7 @@ public class Version extends Model {
      */
     private String applicationCode;
     private Integer status;
+
     /**
      * 创建人
      */
@@ -54,4 +55,5 @@ public class Version extends Model {
 
     private Date createTime;
     private Date publishTime;
+    private Integer updateType;
 }

+ 1 - 0
PCS/src/main/java/cn/cslg/permission/domain/qiaobi/BusinessTask.java

@@ -32,4 +32,5 @@ public class BusinessTask extends Model<BusinessTask> {
     private Integer status;
     private Integer tenantId;
 
+    private Date handleTime;
 }

+ 2 - 0
PCS/src/main/java/cn/cslg/permission/domain/qiaobi/RegistInformation.java

@@ -38,4 +38,6 @@ public class RegistInformation extends Model {
     private Integer positionId;
     @TableField(value = "VIP_TYPE_ID")
     private Integer vipTypeId;
+    @TableField(value = "TENANT_ID")
+    private Integer tenantId;
 }

+ 4 - 1
PCS/src/main/java/cn/cslg/permission/mapper/PersonnelMapper.java

@@ -1,6 +1,7 @@
 package cn.cslg.permission.mapper;
 
 import cn.cslg.permission.common.model.dto.PasUserDTO;
+import cn.cslg.permission.common.model.dto.PersonnelDTO;
 import cn.cslg.permission.common.model.qiaobi.GetQiaoBiPersonDTO;
 import cn.cslg.permission.common.model.vo.PasUserVO;
 import cn.cslg.permission.common.model.vo.PersonnelVO;
@@ -22,5 +23,7 @@ import java.util.List;
 @Mapper
 public interface PersonnelMapper extends BaseMapper<Personnel> {
     IPage<PasUserVO> getPasUser(Page<PasUserVO> page, @Param("params") PasUserDTO params);
-     List<PersonnelVO>  getQiaoBiPersons(GetQiaoBiPersonDTO getQiaoBiPersonDTO);
+    Long getQiaoBiPersons(GetQiaoBiPersonDTO getQiaoBiPersonDTO);
+    List<PersonnelVO> getQiaoBiPersonsList(PersonnelDTO personnelDTO);
+    Long getQiaoBiPersonsListTotal(PersonnelDTO personnelDTO);
 }

+ 19 - 12
PCS/src/main/java/cn/cslg/permission/service/DepartmentService.java

@@ -218,13 +218,16 @@ public class DepartmentService extends ServiceImpl<DepartmentMapper, Department>
 
         //装载树工具方法
         List<Tree<Integer>> tem = treeGenerate(lst);
-
+        Integer temSize = 0;
+        if (tem != null) {
+            temSize = tem.size();
+        }
         //分页
         int endSize;
         int startSize;
         int current = 1;
         int pageSize = departmentVO.getCurrent() * departmentVO.getSize();
-        endSize = Math.min(pageSize, tem.size());
+        endSize = Math.min(pageSize, temSize);
         startSize = (departmentVO.getCurrent() - 1) * departmentVO.getSize();
         //当前端传来的页数大于总查询列表大小时做计算
         if (startSize > endSize) {
@@ -233,8 +236,12 @@ public class DepartmentService extends ServiceImpl<DepartmentMapper, Department>
         }
 
         //分割数据并填充
-        List<Tree<Integer>> pagTem = tem.subList(startSize, endSize);
-        return Response.success(pagTem, DataUtils.setPageColumn(departmentVO.getSize(), current, tem.size()));
+        List<Tree<Integer>> pagTem = new ArrayList<>();
+        if (tem != null) {
+            pagTem = tem.subList(startSize, endSize);
+        }
+
+        return Response.success(pagTem, DataUtils.setPageColumn(departmentVO.getSize(), current, temSize));
 
     }
 
@@ -294,15 +301,15 @@ public class DepartmentService extends ServiceImpl<DepartmentMapper, Department>
         return Response.success(treeGenerate(lst));
     }
 
-    public List<Department> getDepartmentsByIds(List<Integer> ids){
-        List<Department> departmentList =new ArrayList<>();
-        if(ids==null||ids.size()==0) {
+    public List<Department> getDepartmentsByIds(List<Integer> ids) {
+        List<Department> departmentList = new ArrayList<>();
+        if (ids == null || ids.size() == 0) {
             return departmentList;
         }
-        LambdaQueryWrapper<Department> queryWrapper =new LambdaQueryWrapper<>();
-        queryWrapper.in(Department::getId,ids);
-        departmentList=this.list(queryWrapper);
-        return  departmentList;
-        }
+        LambdaQueryWrapper<Department> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(Department::getId, ids);
+        departmentList = this.list(queryWrapper);
+        return departmentList;
+    }
 
 }

+ 74 - 74
PCS/src/main/java/cn/cslg/permission/service/PersonnelService.java

@@ -2,6 +2,8 @@ package cn.cslg.permission.service;
 
 import cn.cslg.permission.common.core.base.RedisConf;
 import cn.cslg.permission.common.core.business.LoginCacheKeyUtil;
+import cn.cslg.permission.common.model.Records;
+import cn.cslg.permission.common.model.dto.PersonnelDTO;
 import cn.cslg.permission.common.model.dto.PhoneLoginDTO;
 import cn.cslg.permission.common.model.personnel.UploadPersonnelConfigDTO;
 import cn.cslg.permission.common.model.qiaobi.GetQiaoBiPersonDTO;
@@ -11,6 +13,7 @@ import cn.cslg.permission.common.utils.*;
 import cn.cslg.permission.common.utils.SecurityUtils.SecurityUtils;
 import cn.cslg.permission.common.utils.message.MessageUtils;
 import cn.cslg.permission.domain.Personnel;
+import cn.cslg.permission.domain.Role;
 import cn.cslg.permission.domain.Tenant;
 import cn.cslg.permission.domain.TenantVipType;
 import cn.cslg.permission.domain.associate.AssoDepartPos;
@@ -37,6 +40,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.swagger.v3.oas.models.security.SecurityScheme;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -69,6 +73,10 @@ public class PersonnelService extends ServiceImpl<PersonnelMapper, Personnel> {
     private final SystemService systemService;
     private final AssoPersonVipTypeService assoPersonVipTypeService;
     private final TenantVipTypeService tenantVipTypeService;
+    private final LoginUtils loginUtils;
+    private final RoleService roleService;
+    @Value("${ApplicationCode}")
+    private String ApplicationCode;
 
     @Transactional(rollbackFor = Exception.class)
     public Personnel addPersonnel(PersonnelVO personnelVO) {
@@ -577,6 +585,7 @@ public class PersonnelService extends ServiceImpl<PersonnelMapper, Personnel> {
         String name = qiaoBiPersonSignUpDTO.getName();
         String userName = qiaoBiPersonSignUpDTO.getUsername();
         String passWord = qiaoBiPersonSignUpDTO.getPassword();
+        Integer tenantId = qiaoBiPersonSignUpDTO.getTenantId();
         if (passWord == null || passWord.trim().equals("")) {
             passWord = RandomUtil.generateRandomString(8);
         }
@@ -589,6 +598,9 @@ public class PersonnelService extends ServiceImpl<PersonnelMapper, Personnel> {
         personnel.setPersonnelName(name);
         personnel.setPersonnelUserName(userName);
         personnel.setPersonnelPassword(passWord);
+        if (tenantId != null) {
+            personnel.setTenantId(tenantId);
+        }
         personnel.insert();
         qiaoBiPersonSignUpDTO.setId(personnel.getId());
         return qiaoBiPersonSignUpDTO;
@@ -645,7 +657,7 @@ public class PersonnelService extends ServiceImpl<PersonnelMapper, Personnel> {
             //登录日志记录登录是否成功
             loginRecordVO.setLoginResult("登录人账号本身未启用");
             loginRecordService.addLoginRecord(loginRecordVO);
-            throw new XiaoShiException(ExceptionEnum.LOGIN_PASSWORD_MISTAKE);
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "登录人账号本身未启用");
         }
         return personnel;
     }
@@ -828,85 +840,46 @@ public class PersonnelService extends ServiceImpl<PersonnelMapper, Personnel> {
     }
 
 
-    public String queryPageList2(PersonnelVO personnelVO) {
+    public String queryPageList2(PersonnelDTO personnelDTO) {
+        this.loadExpireTime(personnelDTO);
+        Long current = personnelDTO.getCurrent();
+        Long size = personnelDTO.getSize();
         //获取登陆人信息
         PersonnelVO personnelVO1 = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
-        LambdaQueryWrapper<Personnel> queryWrapper = new LambdaQueryWrapper<>();
-        //TODO 代码控制若不是超级管理员则只能查看本租户的人员列表
+        // 代码控制若不是超级管理员则只能查看本租户的人员列表
         if (personnelVO1.getRoleType() == null || personnelVO1.getRoleType() != 1) {
-            queryWrapper.eq(Personnel::getTenantId, personnelVO1.getTenantId());
+            personnelDTO.setTenant(personnelVO1.getTenantId());
         }
-        //根据人员名称或是人员描述模糊查询人员列表
-        if (personnelVO.getName() == null) {
-            personnelVO.setName("");
-        }
-        queryWrapper.and((wrapper) -> wrapper.like(Personnel::getPersonnelName, personnelVO.getName())
-                .or()
-                .like(Personnel::getPersonnelDescription, personnelVO.getName())
-        );
-        //根据人员id查询
-        if (personnelVO.getId() != null) {
-            queryWrapper.in(Personnel::getId, Integer.parseInt(personnelVO.getId()));
+        if (current != null && size != null) {
+            personnelDTO.setCurrent(((current - 1) * size));
         }
-        //若前台有传部门ids,则根据部门ids查询人员列表
-        if (personnelVO.getDepartmentIds() != null && personnelVO.getDepartmentIds().size() != 0) {
-            LambdaQueryWrapper<AssoDepartPos> qw = new LambdaQueryWrapper<>();
-            qw.in(AssoDepartPos::getDepartmentId, personnelVO.getDepartmentIds());
-            List<Integer> dpIds = departPosiService.list(qw).stream().map(AssoDepartPos::getId).collect(Collectors.toList());
-            LambdaQueryWrapper<AssoPerDp> qw2 = new LambdaQueryWrapper<>();
-            qw2.in(AssoPerDp::getDepartPosiId, dpIds);
-            List<Integer> perIds = perDpService.list(qw2).stream().map(AssoPerDp::getPersonnelId).collect(Collectors.toList());
-            queryWrapper.in(Personnel::getId, perIds);
-        }
-        if (personnelVO.getTenant() != null) {
-            queryWrapper.eq(Personnel::getTenantId, personnelVO.getTenant());
-        }
-        //若前台有传职位ids,则根据职位ids查询人员列表
-        if (personnelVO.getPositionIds() != null && personnelVO.getPositionIds().size() != 0) {
-            LambdaQueryWrapper<AssoDepartPos> qw = new LambdaQueryWrapper<>();
-            qw.in(AssoDepartPos::getPositionId, personnelVO.getPositionIds());
-            List<Integer> dpIds = departPosiService.list(qw).stream().map(AssoDepartPos::getId).collect(Collectors.toList());
-            LambdaQueryWrapper<AssoPerDp> qw2 = new LambdaQueryWrapper<>();
-            qw2.in(AssoPerDp::getDepartPosiId, dpIds);
-            List<Integer> perIds = perDpService.list(qw2).stream().map(AssoPerDp::getPersonnelId).collect(Collectors.toList());
-            queryWrapper.in(Personnel::getId, perIds);
-        }
-        SecurityUtils.startDataScope("/admin/user/check");
-        List<Personnel> personnelList = this.page(new Page<>(personnelVO.getCurrent(), personnelVO.getSize()), queryWrapper).getRecords();
-        SecurityUtils.startDataScope("/admin/user/check");
-        long count = this.count(queryWrapper);
-        return Response.success(setPersonnelToVO2(personnelList), DataUtils.setPageColumn(personnelVO.getSize(), personnelVO.getCurrent(), Math.toIntExact(count)));
+        List<PersonnelVO> personnelVOS = this.getBaseMapper().getQiaoBiPersonsList(personnelDTO);
+        long count = this.getBaseMapper().getQiaoBiPersonsListTotal(personnelDTO);
+        return Response.success(setPersonnelToVO2(personnelVOS), DataUtils.setPageColumn(Integer.parseInt(size.toString()), Integer.parseInt(current.toString()), Math.toIntExact(count)));
     }
 
-    public Object setPersonnelToVO2(List<Personnel> personnelList) {
-        List<PersonnelVO> personnelVOS = new ArrayList<>();
-        for (Personnel personnel : personnelList) {
-            PersonnelVO personnelVO1 = new PersonnelVO();
-            personnelVO1
-                    .setUsername(personnel.getPersonnelUserName())
-                    .setId(personnel.getId().toString())
-                    .setGender(personnel.getPersonnelUserSex())
-                    .setName(personnel.getPersonnelName())
-                    .setEmail(personnel.getPersonnelEmail())
-                    .setMobile(personnel.getPersonnelPhone())
-                    .setState(personnel.getPersonnelStatus())
-                    .setRemark(personnel.getPersonnelDescription())
-                    .setPassword(personnel.getPersonnelPassword())
-                    .setQqNumber(personnel.getPersonnelQQ())
-                    .setPositions(departPosiService.queryAssociate(personnel.getId()))
-                    .setGroup(personGroupService.queryAssociatePerGroup(personnel.getId()))
-                    .setRole(personRoleService.queryAssociatePerRole(personnel.getId()))
-                    .setRoleList(personRoleService.getRoleListByPersonnelId(personnel.getId()))
-                    .setGroupList(personGroupService.getUserGroupListByPersonnelId(personnel.getId()))
-                    .setNail(personnel.getPersonnelDing())
-                    .setTenant(personnel.getTenantId())
-                    .setTenantName(tenantService.getById(personnel.getTenantId()).getTenantName());
-            personnelVOS.add(personnelVO1);
+
+    public Object setPersonnelToVO2(List<PersonnelVO> personnelList) {
+        for (PersonnelVO personnelVO : personnelList) {
+            personnelVO
+                    .setPositions(departPosiService.queryAssociate(Integer.parseInt(personnelVO.getId())))
+                    .setGroup(personGroupService.queryAssociatePerGroup(Integer.parseInt(personnelVO.getId())))
+                    .setRole(personRoleService.queryAssociatePerRole(Integer.parseInt(personnelVO.getId())))
+                    .setRoleList(personRoleService.getRoleListByPersonnelId(Integer.parseInt(personnelVO.getId())))
+                    .setGroupList(personGroupService.getUserGroupListByPersonnelId(Integer.parseInt(personnelVO.getId())));
+            if (personnelVO.getTenant() != null) {
+                Tenant tenant = tenantService.getById(personnelVO.getTenant());
+                if (tenant != null) {
+                    personnelVO.setTenantName(tenant.getTenantName());
+                }
+            }
+
+
         }
-        if (personnelVOS != null && !personnelVOS.isEmpty()) {
-            this.loadPersonnelVOS(personnelVOS);
+        if (personnelList != null && !personnelList.isEmpty()) {
+            this.loadPersonnelVOS(personnelList);
         }
-        return personnelVOS;
+        return personnelList;
     }
 
     public void loadPersonnelVOS(List<PersonnelVO> personnelVOS) {
@@ -966,12 +939,39 @@ public class PersonnelService extends ServiceImpl<PersonnelMapper, Personnel> {
         }
     }
 
-    public List<PersonnelVO> getExpirePersons(GetQiaoBiPersonDTO getQiaoBiPersonDTO) {
+    public Records getExpirePersons(GetQiaoBiPersonDTO getQiaoBiPersonDTO) {
+        roleService.checkCompanyRootRole();
         Date date = new Date();
         Date expireTime = DateUtils.getPlusMonthDate(date, 1);
         getQiaoBiPersonDTO.setExpitrTime(expireTime);
-        List<PersonnelVO> personnelList = this.getBaseMapper().getQiaoBiPersons(getQiaoBiPersonDTO);
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        getQiaoBiPersonDTO.setTenantId(personnelVO.getTenantId());
+        getQiaoBiPersonDTO.setStartTime(date);
+        Long total = this.getBaseMapper().getQiaoBiPersons(getQiaoBiPersonDTO);
+        Records records = new Records();
+        records.setTotal(total);
+        return records;
+    }
+
+    public void loadExpireTime(PersonnelDTO personnelDTO) {
+        Integer expitrDays = personnelDTO.getExpitrDays();
+        if (expitrDays == null) {
+            return;
+        }
+        Date date = new Date();
+        if (expitrDays.equals(0)) {
+            Date endDate = DateUtils.getPlusMonthDate(date, 1);
+            personnelDTO.setStartExpitrTime(date);
+            personnelDTO.setEndExpitrTime(endDate);
+        } else if (expitrDays.equals(-1)) {
+            personnelDTO.setEndExpitrTime(date);
+        } else {
+            Date endDate = DateUtils.getPlusDayDate(date, expitrDays);
+            personnelDTO.setStartExpitrTime(date);
+            personnelDTO.setEndExpitrTime(endDate);
+        }
 
-        return personnelList;
     }
+
+
 }

+ 69 - 0
PCS/src/main/java/cn/cslg/permission/service/RoleService.java

@@ -287,4 +287,73 @@ public class RoleService extends ServiceImpl<RoleMapper, Role> {
         }
         return personnelVO.getTenantId();
     }
+
+    public List<Integer> getApplicationRootPersonId() {
+        List<Integer> personIds = new ArrayList<>();
+        // 查询租户下的角色
+        LambdaQueryWrapper<Role> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Role::getApplicationCode,ApplicationCode)
+                .eq(Role::getRoleType, 3);
+        List<Role> roleList = this.list(queryWrapper);
+        if (roleList != null && roleList.size() > 0) {
+            List<Integer> roleIds = roleList.stream().map(Role::getId).collect(Collectors.toList());
+            LambdaQueryWrapper<AssoPersonRole> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.in(AssoPersonRole::getRoleId, roleIds);
+            List<AssoPersonRole> assoPersonRoles = personRoleService.list(queryWrapper1);
+            personIds = assoPersonRoles.stream().map(AssoPersonRole::getPersonnelId).collect(Collectors.toList());
+        }
+        return personIds;
+    }
+
+    public List<Integer> getCompanyRootPersonId(Integer tenantId) {
+
+        List<Integer> personIds = new ArrayList<>();
+        // 查询租户下的角色
+        LambdaQueryWrapper<Role> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Role::getTenantId,tenantId)
+                .eq(Role::getRoleType, 2);
+        List<Role> roleList = this.list(queryWrapper);
+        if (roleList != null && roleList.size() > 0) {
+            List<Integer> roleIds = roleList.stream().map(Role::getId).collect(Collectors.toList());
+            LambdaQueryWrapper<AssoPersonRole> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.in(AssoPersonRole::getRoleId, roleIds);
+            List<AssoPersonRole> assoPersonRoles = personRoleService.list(queryWrapper1);
+            personIds = assoPersonRoles.stream().map(AssoPersonRole::getPersonnelId).collect(Collectors.toList());
+        }
+        return personIds;
+    }
+
+    public Integer checkCompanyRootRole() {
+        Integer personId = loginUtils.getId();
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(personId);
+        List<Role> roleList = this.getRoleByPersonId(personId,null);
+        if (roleList == null || roleList.size() == 0) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "无权限访问数据");
+        }
+        Role role = roleList.stream().filter(item -> item.getRoleType().equals(1)||item.getRoleType().equals(2)).findFirst().orElse(null);
+        if (role == null) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "无权限访问数据");
+        }
+        return personnelVO.getTenantId();
+    }
+
+    public Boolean checkIfQiaoBiSysRole() {
+        Integer personId = loginUtils.getId();
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(personId);
+        List<Role> roleList = this.getRoleByPersonId(personId, null);
+        if (roleList == null || roleList.size() == 0) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "无权限访问数据");
+        }
+        List<Role> sysRoles = roleList.stream().filter(item -> item.getRoleType().equals(1) || item.getRoleType().equals(2)||item.getRoleType().equals(3)).collect(Collectors.toList());
+        if (sysRoles == null) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "无权限访问数据");
+        }
+    Role role =  sysRoles.stream().filter(item->item.getRoleType().equals(1)||(item.getRoleType().equals(3)&&item.getApplicationCode()!=null&&item.getApplicationCode().equals(ApplicationCode))).findFirst().orElse(null);
+     Boolean flag =false;
+      if(role!=null){
+         flag=true;
+      }
+        return flag;
+    }
+
 }

+ 1 - 1
PCS/src/main/java/cn/cslg/permission/service/SysDictService.java

@@ -16,5 +16,5 @@ import org.springframework.stereotype.Service;
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class SysDictService extends ServiceImpl<SysDictMapper, SysDict> {
-
+ 
 }

+ 2 - 2
PCS/src/main/java/cn/cslg/permission/service/SystemService.java

@@ -485,8 +485,8 @@ public class SystemService {
         //查询所有字典
 
         LambdaQueryWrapper<SysDict> queryWrapper = new LambdaQueryWrapper<>();
-        if (systemDictDTO.getType() != null) {
-            queryWrapper.eq(SysDict::getDictKey, systemDictDTO.getType());
+        if (systemDictDTO.getTypes()!= null) {
+            queryWrapper.in(SysDict::getDictKey, systemDictDTO.getTypes());
         }
         List<SysDict> sysDictList = sysDictService.list(queryWrapper);
 

+ 1 - 0
PCS/src/main/java/cn/cslg/permission/service/TenantService.java

@@ -106,6 +106,7 @@ public class TenantService extends ServiceImpl<TenantEntityMapper, Tenant> {
                     .setState(tenantVO.getState())
                     .setPassword(tenantVO.getPassword())
                     .setTenant(tenant.getId())
+                    .setMobile(tenantVO.getPhoneNumber())
                     .setAddType(1);
             personnel = personnelService.addPersonnel(personnelVO1);
             tenant.setPersonnelId(personnel.getId());

+ 5 - 5
PCS/src/main/java/cn/cslg/permission/service/VersionService.java

@@ -81,7 +81,7 @@ public class VersionService extends ServiceImpl<VersionMapper, Version> {
         version.insert();
         Integer id = version.getId();
         if (version.getStatus() != null && version.getStatus().equals(3)) {
-            version.setStatus(4);
+            version.setStatus(2);
             businessTaskService.AddVersionBusinessTask(id);
         }
         //保存版本和功能关联
@@ -118,7 +118,7 @@ public class VersionService extends ServiceImpl<VersionMapper, Version> {
         }
 
         if (status != null && status.equals(3)) {
-            version.setStatus(4);
+            version.setStatus(2);
             businessTaskService.AddVersionBusinessTask(id);
         }
         assoVersionFunctionService.addAssoVersionFunctions(functionIds, version.getId());
@@ -294,7 +294,7 @@ public class VersionService extends ServiceImpl<VersionMapper, Version> {
         return version;
     }
 
-    public Integer updateVersionStatus(VersionStatusDTO versionStatusDTO) {
+    public Version updateVersionStatus(VersionStatusDTO versionStatusDTO) {
         Integer versionId = versionStatusDTO.getId();
         Integer status = versionStatusDTO.getStatus();
         if (versionId == null) {
@@ -313,13 +313,13 @@ public class VersionService extends ServiceImpl<VersionMapper, Version> {
 
         }
         if (status.equals(3)) {
-            status = 4;
+            status = 2;
             businessTaskService.AddVersionBusinessTask(versionId);
 
         }
         version.setStatus(status);
         version.updateById();
-        return version.getId();
+        return version;
     }
 
     public QiaoBiVersionVO queryVersionLast() {

+ 55 - 0
PCS/src/main/java/cn/cslg/permission/service/email/MailSendService.java

@@ -0,0 +1,55 @@
+package cn.cslg.permission.service.email;
+
+
+import cn.cslg.permission.common.utils.MqUtils.RabbitMQUtils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+
+@Service
+@RequiredArgsConstructor
+public class MailSendService {
+    private final RabbitMQUtils rabbitMQUtils;
+
+
+    //发送审核任务通知
+    public String sendAuditVersion(String email) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("title", "任务通知");
+            map.put("template", "mail/auditVersion.html");
+            map.put("img", "/logo.png");
+            map.put("email",email);
+
+            rabbitMQUtils.sendEmailMessage(map);
+        return "";
+    }
+    //发送版本审核任务完成通知
+    public String sendAuditVersionDone(String email) {
+        Map<String, Object> map = new LinkedHashMap<>();
+        map.put("title", "任务通知");
+        map.put("template", "mail/auditVersionDone.html");
+        map.put("img", "/logo.png");
+        map.put("email",email);
+
+        rabbitMQUtils.sendEmailMessage(map);
+        return "";
+    }
+    //用户注册通知系统管理员
+    public String sendPersonSignUp(String email) {
+        Map<String, Object> map = new LinkedHashMap<>();
+        map.put("title", "任务通知");
+        map.put("template", "mail/personSignUp.html");
+        map.put("img", "/logo.png");
+        map.put("email",email);
+
+        rabbitMQUtils.sendEmailMessage(map);
+        return "";
+    }
+}

+ 14 - 2
PCS/src/main/java/cn/cslg/permission/service/qiaobi/AssoPaidCodeVipTypeService.java

@@ -56,7 +56,7 @@ public class AssoPaidCodeVipTypeService extends ServiceImpl<AssoPaidCodeVipTypeM
         }
         //添加
         if (vipTypes != null && vipTypes.size() != 0) {
-            this.addAssoPaidCode(vipTypes,paidCodeId);
+            this.addAssoPaidCode(vipTypes, paidCodeId);
         }
         //更新
         this.updateBatchById(updateVipTypes);
@@ -75,7 +75,7 @@ public class AssoPaidCodeVipTypeService extends ServiceImpl<AssoPaidCodeVipTypeM
      * @param vipTypes
      * @return
      */
-    public List<AssoPaidCodeVipType> addAssoPaidCode(List<VipTypeNumDTO> vipTypes,Integer paidCodeId) {
+    public List<AssoPaidCodeVipType> addAssoPaidCode(List<VipTypeNumDTO> vipTypes, Integer paidCodeId) {
         List<AssoPaidCodeVipType> vipTypeList = new ArrayList<>();
         if (vipTypes.size() == 0) {
             return vipTypeList;
@@ -90,6 +90,18 @@ public class AssoPaidCodeVipTypeService extends ServiceImpl<AssoPaidCodeVipTypeM
         this.saveBatch(vipTypeList);
         return vipTypeList;
     }
+
+    public Integer getVipTotalNum(Integer paidCodeId) {
+        Integer totalNum = 0;
+        LambdaQueryWrapper<AssoPaidCodeVipType> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AssoPaidCodeVipType::getPaidCodeId, paidCodeId);
+        List<AssoPaidCodeVipType> assoPaidCodeVipTypes = this.list(queryWrapper);
+        for (AssoPaidCodeVipType assoPaidCodeVipType : assoPaidCodeVipTypes) {
+            totalNum += assoPaidCodeVipType.getVipTypeNum();
+        }
+        return totalNum;
+
+    }
 }
 
 

+ 6 - 0
PCS/src/main/java/cn/cslg/permission/service/qiaobi/AssoPersonVipTypeService.java

@@ -87,6 +87,12 @@ public class AssoPersonVipTypeService extends ServiceImpl<AssoPersonVipTypeMappe
             AppVipType appVipType = appVipTypeService.getOne(new LambdaQueryWrapper<>(), false);
             vipTypeId = appVipType.getTenantVipTypeId();
         } else {
+            Date expireTime = assoPersonVipType.getExpitrTime();
+            Date date =new Date();
+            Date endDate=DateUtils.getPlusMonthDate(date,1);
+            if(expireTime!=null&&endDate.compareTo(expireTime)<0){
+                return;
+            }
             vipTypeId = assoPersonVipType.getVipTypeId();
         }
         this.addVip(personId, vipTypeId, 1);

+ 36 - 4
PCS/src/main/java/cn/cslg/permission/service/qiaobi/AssoTenantVipTypeService.java

@@ -3,10 +3,16 @@ package cn.cslg.permission.service.qiaobi;
 import cn.cslg.permission.common.model.qiaobi.tenant.UpdateQiaoBiTenantDTO;
 import cn.cslg.permission.common.model.qiaobi.paidCode.VipTypeNumDTO;
 import cn.cslg.permission.domain.Tenant;
+import cn.cslg.permission.domain.qiaobi.AssoPaidCodeVipType;
+import cn.cslg.permission.domain.qiaobi.PaidCode;
+import cn.cslg.permission.exception.ExceptionEnum;
+import cn.cslg.permission.exception.XiaoShiException;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import cn.cslg.permission.domain.qiaobi.AssoTenantVipType;
 import cn.cslg.permission.mapper.qiaobi.AssoTenantVipTypeMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -21,8 +27,9 @@ import java.util.stream.Collectors;
  * @createDate 2024-12-15 20:43:53
  */
 @Service
+@RequiredArgsConstructor
 public class AssoTenantVipTypeService extends ServiceImpl<AssoTenantVipTypeMapper, AssoTenantVipType> {
-
+    private final AssoPaidCodeVipTypeService assoPaidCodeVipTypeService;
 
     @Transactional(rollbackFor = Exception.class)
     public void saveFunctionModuleBatch(List<VipTypeNumDTO> vipTypeNumDTOS, Integer tenantId) {
@@ -100,11 +107,36 @@ public class AssoTenantVipTypeService extends ServiceImpl<AssoTenantVipTypeMappe
         return assoTenantVipTypes;
     }
 
-    public void  getTenantVipTypeByCode(){
-
-
+    public void addAssTenantVipCodeByCode(Integer paidCodeId, Integer tenantId) {
+        List<AssoPaidCodeVipType> assoPaidCodeVipTypes = assoPaidCodeVipTypeService.getByPaidCode(paidCodeId);
+        List<VipTypeNumDTO> vipTypeNumDTOS = this.transDomainTODTO(assoPaidCodeVipTypes);
+        this.saveFunctionModuleBatch(vipTypeNumDTOS, tenantId);
+    }
 
+    public List<VipTypeNumDTO> transDomainTODTO(List<AssoPaidCodeVipType> assoPaidCodeVipTypes) {
+        List<VipTypeNumDTO> vipTypeNumDTOS = new ArrayList<>();
+        if (assoPaidCodeVipTypes == null || assoPaidCodeVipTypes.size() == 0) {
+            return vipTypeNumDTOS;
+        }
+        assoPaidCodeVipTypes.forEach(item -> {
+            VipTypeNumDTO vipTypeNumDTO = new VipTypeNumDTO();
+            BeanUtils.copyProperties(item, vipTypeNumDTO);
+            vipTypeNumDTOS.add(vipTypeNumDTO);
+        });
+        return vipTypeNumDTOS;
+    }
 
+@Transactional(rollbackFor = Exception.class)
+    public void removeOneVip(Integer tenantId,Integer vipTypeId){
+        LambdaQueryWrapper<AssoTenantVipType> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.eq(AssoTenantVipType::getTenantId,tenantId)
+                .eq(AssoTenantVipType::getVipTypeId,vipTypeId);
+        AssoTenantVipType assoTenantVipType =this.getOne(queryWrapper,false);
+        if(assoTenantVipType==null||assoTenantVipType.getVipTypeNum()==null||assoTenantVipType.getVipTypeNum()==0){
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR,"已没有会员余额,请联系管理员充值");
+        }
+         assoTenantVipType.setVipTypeNum(assoTenantVipType.getVipTypeNum()-1);
+        assoTenantVipType.updateById();
     }
 }
 

+ 63 - 10
PCS/src/main/java/cn/cslg/permission/service/qiaobi/BusinessTaskService.java

@@ -1,5 +1,6 @@
 package cn.cslg.permission.service.qiaobi;
 
+import cn.cslg.permission.common.core.business.SmsService;
 import cn.cslg.permission.common.model.Records;
 import cn.cslg.permission.common.model.qiaobi.QiaoBiPersonSignUpDTO;
 import cn.cslg.permission.common.model.qiaobi.businessTask.AuditTaskDTO;
@@ -22,6 +23,7 @@ import cn.cslg.permission.exception.XiaoShiException;
 import cn.cslg.permission.mapper.qiaobi.BusinessTaskMapper;
 import cn.cslg.permission.service.*;
 import cn.cslg.permission.service.associate.PerDpService;
+import cn.cslg.permission.service.email.MailSendService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.swagger.v3.oas.models.security.SecurityScheme;
@@ -32,6 +34,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -54,6 +57,9 @@ public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, Busines
     private final AssoBusinessTaskVersionService assoBusinessTaskVersionService;
     private final VersionService versionService;
     private final PerDpService perDpService;
+    private final SmsService smsService;
+    private final MailSendService mailSendService;
+    private final AssoTenantVipTypeService assoTenantVipTypeService;
     @Value("${ApplicationCode}")
     private String ApplicationCode;
 
@@ -65,9 +71,12 @@ public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, Busines
         if (current != null && size != null) {
             queryAuditTaskDTO.setCurrent(((current - 1) * size));
         }
-
-        Integer tenantId = roleService.checkLoginPersonRole();
+        Integer personId = loginUtils.getId();
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(personId);
+        Integer tenantId = personnelVO.getTenantId();
+        Boolean biSysRole = roleService.checkIfQiaoBiSysRole();
         queryAuditTaskDTO.setTenantId(tenantId);
+         queryAuditTaskDTO.setIfSys(biSysRole);
         List<QueryAuditTaskVO> queryAuditTaskVOS = this.getBaseMapper().queryAuditTask(queryAuditTaskDTO);
         this.loadQueryAuditTaskDTO(queryAuditTaskVOS);
         Long total = this.getBaseMapper().queryAuditTaskTotal(queryAuditTaskDTO);
@@ -140,9 +149,9 @@ public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, Busines
             if (queryAuditTaskVO.getType() != null && queryAuditTaskVO.getType().equals(2)) {
                 BusinessTaskVersionVO businessTaskVersionVO = businessTaskVersionVOS.stream().filter(item -> item.getBusinessTaskId().equals(queryAuditTaskVO.getId())).findFirst().orElse(null);
                 if (businessTaskVersionVO != null) {
-                    businessTaskVersionVO.setVersionNum(businessTaskVersionVO.getVersionNum());
-                    businessTaskVersionVO.setVersionName(businessTaskVersionVO.getVersionName());
-                    businessTaskVersionVO.setVersionId(businessTaskVersionVO.getVersionId());
+                    queryAuditTaskVO.setVersionNum(businessTaskVersionVO.getVersionNum());
+                    queryAuditTaskVO.setVersionName(businessTaskVersionVO.getVersionName());
+                    queryAuditTaskVO.setVersionId(businessTaskVersionVO.getVersionId());
                 }
             }
         }
@@ -175,6 +184,9 @@ public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, Busines
 
     public void auditTask(BusinessTask businessTask, Integer result) {
         Integer type = businessTask.getTaskType();
+        if (!businessTask.getStatus().equals(0)) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "任务已完成,不允许操作");
+        }
         switch (type) {
             case 1:
                 this.auditSignUpTask(businessTask, result);
@@ -201,6 +213,7 @@ public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, Busines
         businessTask.setStatus(1);
         businessTask.setResult(result);
         businessTask.setHandleId(loginUtils.getId());
+        businessTask.setHandleTime(new Date());
         businessTask.updateById();
     }
 
@@ -212,7 +225,9 @@ public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, Busines
         if (registInformation == null) {
             throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "任务无注册信息");
         }
+        Integer tenantId = registInformation.getTenantId();
         Integer vipTypeId = registInformation.getVipTypeId();
+        assoTenantVipTypeService.removeOneVip(tenantId, vipTypeId);
         QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO = this.transFormToQiaoBiPersonSignUpDTO(registInformation);
         qiaoBiPersonSignUpDTO = personnelService.addPhoneSignUpPerson(qiaoBiPersonSignUpDTO);
 
@@ -222,16 +237,16 @@ public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, Busines
             assoDepartPosVO.setDepartment(registInformation.getDepartMentId());
             if (registInformation.getDepartMentId() != null) {
                 Department department = departmentService.getById(registInformation.getDepartMentId());
-                if(department!=null){
+                if (department != null) {
                     assoDepartPosVO.setDepartmentName(department.getDepartmentName());
                 }
             }
             assoDepartPosVO.setPosition(registInformation.getPositionId());
-            if(registInformation.getPositionId()!=null){
+            if (registInformation.getPositionId() != null) {
                 Position position = positionService.getById(registInformation.getDepartMentId());
-          if(position!=null){
-              assoDepartPosVO.setPositionName(position.getPositionName());
-          }
+                if (position != null) {
+                    assoDepartPosVO.setPositionName(position.getPositionName());
+                }
             }
             assoDepartPoseVos.add(assoDepartPosVO);
             perDpService.addAssociatePerDp(assoDepartPoseVos, qiaoBiPersonSignUpDTO.getId());
@@ -239,11 +254,17 @@ public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, Busines
         //绑定版本
         assoPersonVipTypeService.addVip(qiaoBiPersonSignUpDTO.getId(), vipTypeId, null);
         this.updateAuditTaskResult(businessTask, 1);
+        smsService.sendQiaoBiAccountPass(qiaoBiPersonSignUpDTO.getPhoneNum(), qiaoBiPersonSignUpDTO.getPassword());
+
     }
 
     public void auditSignUpTaskNotPass(BusinessTask businessTask) {
+        Integer taskId = businessTask.getId();
 
+        RegistInformation registInformation = registInformationService.getRegistInformationByTaskId(taskId);
         this.updateAuditTaskResult(businessTask, 0);
+        smsService.sendQiaoBiAccountNotPass(registInformation.getPersonnelPhone());
+
     }
 
     public void auditVersionTask(BusinessTask businessTask, Integer result) {
@@ -264,6 +285,9 @@ public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, Busines
         versionStatusDTO.setId(versionId);
 
         versionService.updateVersionStatusSys(versionStatusDTO);
+        if (businessTask.getCreateId() != null) {
+            this.sendVersionTaskDone(businessTask.getCreateId());
+        }
 
     }
 
@@ -275,6 +299,9 @@ public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, Busines
         Integer versionId = assoBusinessTaskVersionService.getVersionId(businessTask.getId());
         versionStatusDTO.setId(versionId);
         versionService.updateVersionStatus(versionStatusDTO);
+        if (businessTask.getCreateId() != null) {
+            this.sendVersionTaskDone(businessTask.getCreateId());
+        }
     }
 
     public QiaoBiPersonSignUpDTO transFormToQiaoBiPersonSignUpDTO(RegistInformation registInformation) {
@@ -284,6 +311,7 @@ public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, Busines
         qiaoBiPersonSignUpDTO.setPhoneNum(registInformation.getPersonnelPhone());
         qiaoBiPersonSignUpDTO.setPassword(registInformation.getPersonnelPassword());
         qiaoBiPersonSignUpDTO.setName(registInformation.getPersonnelName());
+        qiaoBiPersonSignUpDTO.setTenantId(registInformation.getTenantId());
         return qiaoBiPersonSignUpDTO;
     }
 
@@ -297,6 +325,31 @@ public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, Busines
         businessTask.setCreateId(loginUtils.getId());
         businessTask.insert();
         assoBusinessTaskVersionService.addAssoBusinessTaskVersion(businessTask.getId(), versionId);
+        // 通知企业管理员
+        this.sendVersionTask();
+    }
+
+    public void sendVersionTaskDone(Integer createId) {
+
+        Personnel personnel = personnelService.getById(createId);
+        if (personnel.getPersonnelEmail() != null) {
+            mailSendService.sendAuditVersionDone(personnel.getPersonnelEmail());
+        }
+    }
+
+    public void sendVersionTask() {
+        List<Integer> personIds = roleService.getApplicationRootPersonId();
+        if (personIds != null && personIds.size() > 0) {
+            List<Personnel> personnelList = personnelService.getPersonByIds(personIds);
+            if (personnelList != null && personnelList.size() > 0) {
+                personnelList.forEach(item -> {
+                    if (item.getPersonnelEmail() != null) {
+                        mailSendService.sendAuditVersion(item.getPersonnelEmail());
+                    }
+
+                });
+            }
+        }
     }
 }
 

+ 34 - 11
PCS/src/main/java/cn/cslg/permission/service/qiaobi/EnterpriseCodeService.java

@@ -1,5 +1,6 @@
 package cn.cslg.permission.service.qiaobi;
 
+import cn.cslg.permission.common.utils.RandomUtil;
 import cn.cslg.permission.exception.ExceptionEnum;
 import cn.cslg.permission.exception.XiaoShiException;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -8,21 +9,43 @@ import cn.cslg.permission.domain.qiaobi.EnterpriseCode;
 import cn.cslg.permission.mapper.qiaobi.EnterpriseCodeMapper;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
-* @author admin
-* @description 针对表【ENTERPRISE_CODE(企业码)】的数据库操作Service实现
-* @createDate 2024-12-13 11:24:49
-*/
+ * @author admin
+ * @description 针对表【ENTERPRISE_CODE(企业码)】的数据库操作Service实现
+ * @createDate 2024-12-13 11:24:49
+ */
 @Service
 public class EnterpriseCodeService extends ServiceImpl<EnterpriseCodeMapper, EnterpriseCode> {
-    public Integer getTenantIdByCode(String code){
-        LambdaQueryWrapper<EnterpriseCode> queryWrapper =new LambdaQueryWrapper<>();
-        queryWrapper.eq(EnterpriseCode::getCode,code);
-        EnterpriseCode enterpriseCode =this.getOne(queryWrapper,false);
-        if(enterpriseCode==null){
-            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR,"企业码不存在");
+    public Integer getTenantIdByCode(String code) {
+        LambdaQueryWrapper<EnterpriseCode> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EnterpriseCode::getCode, code);
+        EnterpriseCode enterpriseCode = this.getOne(queryWrapper, false);
+        if (enterpriseCode == null) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "企业码不存在");
+        }
+        return enterpriseCode.getTenantId();
+    }
+
+    public void addEnterpriseCode(Integer tenantId) {
+        String code = RandomUtil.getOnlyCode();
+        EnterpriseCode enterpriseCode = new EnterpriseCode();
+        enterpriseCode.setCode(code);
+        enterpriseCode.setTenantId(tenantId);
+        enterpriseCode.insert();
+    }
+
+    public List<EnterpriseCode> getCodeByTenantIds(List<Integer> tenantIds) {
+        List<EnterpriseCode> enterpriseCodes = new ArrayList<>();
+        if (tenantIds == null || tenantIds.size() == 0) {
+            return enterpriseCodes;
         }
-        return  enterpriseCode.getTenantId();
+        LambdaQueryWrapper<EnterpriseCode> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(EnterpriseCode::getTenantId, tenantIds);
+        enterpriseCodes = this.list(queryWrapper);
+        return enterpriseCodes;
     }
 }
 

+ 65 - 19
PCS/src/main/java/cn/cslg/permission/service/qiaobi/PaidCodeService.java

@@ -1,6 +1,7 @@
 package cn.cslg.permission.service.qiaobi;
 
 import cn.cslg.permission.common.core.business.LoginCacheKeyUtil;
+import cn.cslg.permission.common.core.business.SmsService;
 import cn.cslg.permission.common.model.Records;
 import cn.cslg.permission.common.model.dto.SendCodeDTO;
 import cn.cslg.permission.common.model.qiaobi.QiaoBiPersonSignUpDTO;
@@ -25,6 +26,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import cn.cslg.permission.domain.qiaobi.PaidCode;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -49,7 +51,11 @@ public class PaidCodeService extends ServiceImpl<PaidCodeMapper, PaidCode> {
     private final LoginService loginService;
     private final RedisUtil redisUtil;
     private final QiaoBiPersonService qiaoBiPersonService;
-    private TenantService tenantService;
+    private final TenantService tenantService;
+    private final SmsService smsService;
+    private final EnterpriseCodeService enterpriseCodeService;
+    @Lazy
+    private final AssoTenantVipTypeService assoTenantVipTypeService;
 
     /**
      * 添加付费码
@@ -103,6 +109,7 @@ public class PaidCodeService extends ServiceImpl<PaidCodeMapper, PaidCode> {
         Records records = new Records();
         Long size = paidCodeQueryDTO.getSize();
         Long current = paidCodeQueryDTO.getCurrent();
+        records.setCurrent(current);
         if (size != null && current != null) {
             current = (current - 1) * size;
             paidCodeQueryDTO.setCurrent(current);
@@ -112,7 +119,7 @@ public class PaidCodeService extends ServiceImpl<PaidCodeMapper, PaidCode> {
         Long total = this.getBaseMapper().queryPaidCodeListTotal(paidCodeQueryDTO);
         records.setTotal(total);
         records.setSize(size);
-        records.setCurrent(current);
+
         records.setRecords(queryVOList);
         return records;
     }
@@ -193,12 +200,8 @@ public class PaidCodeService extends ServiceImpl<PaidCodeMapper, PaidCode> {
     public String sendPhoneCode(SendCodeDTO sendCodeDTO) {
         String paidCodeStr = sendCodeDTO.getPaidCode();
 
-        LambdaQueryWrapper<PaidCode> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(PaidCode::getCode, paidCodeStr);
-        PaidCode paidCode = this.getOne(queryWrapper, false);
-        if (paidCode == null) {
-            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "付费码不存在");
-        }
+
+        PaidCode paidCode = this.checkPaidCodeHaveUse(paidCodeStr);
         //查询预留手机号
         LambdaQueryWrapper<AssoPaidCodeRegistInfo> queryWrapper1 = new LambdaQueryWrapper<>();
         queryWrapper1.eq(AssoPaidCodeRegistInfo::getPaidCodeId, paidCode.getId());
@@ -229,6 +232,11 @@ public class PaidCodeService extends ServiceImpl<PaidCodeMapper, PaidCode> {
         return redisUtil.get(key);
     }
 
+    public void deletePaidCodeToken(String token) {
+        String key = LoginCacheKeyUtil.getPhoneCodeTokenPrefix(token);
+        redisUtil.delete(key);
+    }
+
     public PaidCodeReInfoVO getRegistInformationByPaidCode(Integer paidCodeId) {
         PaidCodeReInfoVO paidCodeReInfoVO = new PaidCodeReInfoVO();
 
@@ -253,13 +261,6 @@ public class PaidCodeService extends ServiceImpl<PaidCodeMapper, PaidCode> {
         String phoneCode = checkPaidCodePhoneCodeDTO.getPhoneCode();
         String paidCode = checkPaidCodePhoneCodeDTO.getPaidCode();
 
-        //验证码是否存在
-        LambdaQueryWrapper<PaidCode> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(PaidCode::getCode, paidCode);
-        PaidCode paidCodeEn = this.getOne(queryWrapper, false);
-        if (paidCodeEn == null) {
-            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "付费码不存在");
-        }
 
         String code = redisUtil.get(LoginCacheKeyUtil.getPaidCodeCaptcha(paidCode));
         if (phoneCode == null || phoneCode.trim().equals("")) {
@@ -271,6 +272,7 @@ public class PaidCodeService extends ServiceImpl<PaidCodeMapper, PaidCode> {
         if (!code.equals(phoneCode)) {
             throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "验证码错误");
         }
+        PaidCode paidCodeEn = this.checkPaidCodeHaveUse(paidCode);
         String token = this.setPaidCodeToken(paidCode);
         //查询注册信息
         PaidCodeReInfoVO paidCodeReInfoVO = this.getRegistInformationByPaidCode(paidCodeEn.getId());
@@ -287,32 +289,55 @@ public class PaidCodeService extends ServiceImpl<PaidCodeMapper, PaidCode> {
         if (code == null || code.trim().equals("")) {
             throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "未通过验证");
         }
+        PaidCode paidCode = this.checkPaidCodeHaveUse(code);
 
         QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO = new QiaoBiPersonSignUpDTO();
+        qiaoBiPersonSignUpDTO.setPhoneCode(addTenantByPaidCodeDTO.getPhoneCode());
+        qiaoBiPersonSignUpDTO.setPhoneNum(addTenantByPaidCodeDTO.getPersonnelPhone());
+        qiaoBiPersonService.checkMessage2(qiaoBiPersonSignUpDTO);
+
         qiaoBiPersonSignUpDTO.setPhoneNum(addTenantByPaidCodeDTO.getPersonnelPhone());
         qiaoBiPersonSignUpDTO.setUsername(addTenantByPaidCodeDTO.getPersonnelUserName());
         qiaoBiPersonSignUpDTO.setEmail(addTenantByPaidCodeDTO.getPersonnelEmail());
         qiaoBiPersonService.checkPersonInvalid(qiaoBiPersonSignUpDTO);
+        addTenantByPaidCodeDTO.setPaidCode(code);
         TenantVO tenantVO = this.transToTenantVO(addTenantByPaidCodeDTO);
-        tenantService.addTenant(tenantVO);
-        PaidCode paidCode = this.getPaidCodeByCode(code);
+        Integer tenantId = tenantService.addTenant(tenantVO);
+
+        assoTenantVipTypeService.addAssTenantVipCodeByCode(paidCode.getId(), tenantId);
+        enterpriseCodeService.addEnterpriseCode(tenantId);
         PaidCodeStatusDTO paidCodeStatusDTO = new PaidCodeStatusDTO();
         paidCodeStatusDTO.setId(paidCode.getId());
         paidCodeStatusDTO.setStatus(2);
         updatePaidCodeStatus(paidCodeStatusDTO);
+        smsService.sendQiaoBiMessage(tenantVO.getPhoneNumber(), tenantVO.getPassword());
 
+        this.deletePaidCodeToken(token);
+        redisUtil.delete(LoginCacheKeyUtil.getLoginCaptcha(addTenantByPaidCodeDTO.getPersonnelPhone()));
 
     }
 
     public TenantVO transToTenantVO(AddTenantByPaidCodeDTO addTenantByPaidCodeDTO) {
         TenantVO tenantVO = new TenantVO();
         tenantVO.setUsername(addTenantByPaidCodeDTO.getPersonnelUserName());
-        tenantVO.setName(addTenantByPaidCodeDTO.getPersonnelName());
+        tenantVO.setName(addTenantByPaidCodeDTO.getTenantName());
         tenantVO.setAddress(addTenantByPaidCodeDTO.getTenantAddress());
         tenantVO.setType(addTenantByPaidCodeDTO.getTenantType().toString());
         tenantVO.setPassword(addTenantByPaidCodeDTO.getPersonnelPassword());
-        tenantVO.setCompanyName(addTenantByPaidCodeDTO.getTenantName());
+        tenantVO.setContacts(addTenantByPaidCodeDTO.getPersonnelName());
+        tenantVO.setPhoneNumber(addTenantByPaidCodeDTO.getPersonnelPhone());
+        tenantVO.setEmail(addTenantByPaidCodeDTO.getPersonnelEmail());
+        if (tenantVO.getUsername() == null) {
+            tenantVO.setUsername(addTenantByPaidCodeDTO.getPersonnelPhone());
+        }
+        if (tenantVO.getPassword() == null) {
+            String passWord = RandomUtil.generateRandomString(8);
+            tenantVO.setPassword(passWord);
+        }
+        tenantVO.setAddType(1);
         tenantVO.setTenantVipType(31);
+        Integer total = this.getPaidCodeVipNum(addTenantByPaidCodeDTO.getPaidCode());
+        tenantVO.setNumber(total);
         return tenantVO;
     }
 
@@ -325,6 +350,27 @@ public class PaidCodeService extends ServiceImpl<PaidCodeMapper, PaidCode> {
         }
         return paidCode;
     }
+
+    public Integer getPaidCodeVipNum(String paidCode) {
+        PaidCode paidCode1 = this.getPaidCodeByCode(paidCode);
+        Integer total = assoPaidCodeVipTypeService.getVipTotalNum(paidCode1.getId());
+        return total;
+    }
+
+    public PaidCode checkPaidCodeHaveUse(String paidCode) {
+        LambdaQueryWrapper<PaidCode> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PaidCode::getCode, paidCode);
+        PaidCode paidCodeEn = this.getOne(queryWrapper, false);
+        if (paidCodeEn == null) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "付费码不存在");
+        }
+        if (paidCodeEn.getStatus().equals(2)) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "付费码已被使用");
+        }
+        return paidCodeEn;
+    }
+
+
 }
 
 

+ 67 - 2
PCS/src/main/java/cn/cslg/permission/service/qiaobi/QiaoBiPersonService.java

@@ -20,14 +20,19 @@ import cn.cslg.permission.exception.XiaoShiException;
 import cn.cslg.permission.service.LoginService;
 import cn.cslg.permission.service.PersonInvitationCodeService;
 import cn.cslg.permission.service.PersonnelService;
+import cn.cslg.permission.service.RoleService;
+import cn.cslg.permission.service.email.MailSendService;
 import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import io.swagger.v3.oas.models.security.SecurityScheme;
 import lombok.Data;
 import org.apache.commons.lang3.RegExUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
+
 @Service
 public class QiaoBiPersonService {
     @Autowired
@@ -46,6 +51,10 @@ public class QiaoBiPersonService {
     private RegistInformationService registInformationService;
     @Autowired
     private AssoBusinessTaskRegistInfoService assoBusinessTaskRegistInfoService;
+    @Autowired
+    private RoleService roleService;
+    @Autowired
+    private MailSendService mailSendService;
 
     @Transactional(rollbackFor = Exception.class)
     public QiaoBiPersonSignUpDTO personSignUp(QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO) {
@@ -78,7 +87,7 @@ public class QiaoBiPersonService {
      *
      * @param qiaoBiPersonSignUpDTO
      */
-    private void checkMessage(QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO) {
+    public void checkMessage(QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO) {
         String phoneNum = qiaoBiPersonSignUpDTO.getPhoneNum();
         Integer vipType = qiaoBiPersonSignUpDTO.getVipType();
         String phoneCode = qiaoBiPersonSignUpDTO.getPhoneCode();
@@ -198,12 +207,68 @@ public class QiaoBiPersonService {
         qiaoBiPersonSignUpDTO.setUsername(companyPersonSignUpDTO.getPersonnelUserName());
         qiaoBiPersonSignUpDTO.setEmail(companyPersonSignUpDTO.getPersonnelEmail());
         this.checkPersonInvalid(qiaoBiPersonSignUpDTO);
+        companyPersonSignUpDTO.setTenantId(tenantId);
         RegistInformation registInformation = registInformationService.addRegistInformation(companyPersonSignUpDTO);
         BusinessTask businessTask = new BusinessTask();
         businessTask.setTaskType(1);
         businessTask.setStatus(0);
         businessTask.setTenantId(tenantId);
         businessTask.insert();
-        assoBusinessTaskRegistInfoService.addAsso(businessTask.getId(),registInformation.getId());
+        assoBusinessTaskRegistInfoService.addAsso(businessTask.getId(), registInformation.getId());
+        //通知租户管理员
+        this.personSignUpSendMessage(tenantId);
+    }
+
+    public void personSignUpSendMessage(Integer tenantId) {
+
+        List<Integer> personIds = roleService.getCompanyRootPersonId(tenantId);
+        if (personIds != null && personIds.size() > 0) {
+            List<Personnel> personnelList = personnelService.getPersonByIds(personIds);
+            if (personnelList != null && personnelList.size() > 0) {
+                personnelList.forEach(item -> {
+                    if (item.getPersonnelEmail() != null) {
+                        mailSendService.sendPersonSignUp(item.getPersonnelEmail());
+                    }
+
+                });
+            }
+        }
+
+    }
+
+    /**
+     * 校验参数
+     *
+     * @param qiaoBiPersonSignUpDTO
+     */
+    public void checkMessage2(QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO) {
+        String phoneNum = qiaoBiPersonSignUpDTO.getPhoneNum();
+        Integer vipType = qiaoBiPersonSignUpDTO.getVipType();
+        String phoneCode = qiaoBiPersonSignUpDTO.getPhoneCode();
+        String inviteCode = qiaoBiPersonSignUpDTO.getInviteCode();
+        if (phoneCode == null || phoneCode.trim().equals("")) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_CHECK, "验证码不可为空");
+        }
+        if (phoneNum == null || phoneNum.trim().equals("")) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_CHECK, "手机号不可为空");
+        }
+        if (!RegexUtil.isPhoneLegal(phoneNum)) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_CHECK, "手机号格式错误");
+        }
+
+        String code = redisUtil.get(LoginCacheKeyUtil.getLoginCaptcha(phoneNum));
+        if (!phoneCode.equals(code)) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_CHECK, "验证码错误");
+        }
+        if (inviteCode != null && !inviteCode.trim().equals("")) {
+            LambdaQueryWrapper<PersonInvitationCode> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(PersonInvitationCode::getInvitationCode, inviteCode);
+            PersonInvitationCode personInvitationCode = personInvitationCodeService.getOne(queryWrapper, false);
+            if (personInvitationCode == null) {
+                throw new XiaoShiException(ExceptionEnum.BUSINESS_CHECK, "邀请码不存在");
+            }
+            qiaoBiPersonSignUpDTO.setInviteCode(personInvitationCode.getPersonId().toString());
+        }
+
     }
 }

+ 9 - 3
PCS/src/main/java/cn/cslg/permission/service/qiaobi/QiaoBiTenantService.java

@@ -8,6 +8,7 @@ import cn.cslg.permission.common.model.qiaobi.tenant.QiaoBiTenantVO;
 import cn.cslg.permission.common.model.qiaobi.tenant.QueryQiaoBiTenantDTO;
 import cn.cslg.permission.common.model.qiaobi.tenant.UpdateQiaoBiTenantDTO;
 import cn.cslg.permission.domain.Tenant;
+import cn.cslg.permission.domain.qiaobi.EnterpriseCode;
 import cn.cslg.permission.mapper.TenantMapper;
 import cn.cslg.permission.mapper.qiaobi.AppVipTypeMapper;
 import cn.cslg.permission.service.TenantService;
@@ -24,6 +25,8 @@ public class QiaoBiTenantService {
     private final AppVipTypeMapper appVipTypeMapper;
     private final TenantService tenantService;
     private final AssoTenantVipTypeService assoTenantVipTypeService;
+    private final EnterpriseCodeService enterpriseCodeService;
+
     public Records queryQiaoBiTenants(QueryQiaoBiTenantDTO queryQiaoBiTenantDTO) {
         Long current = queryQiaoBiTenantDTO.getCurrent();
         Long size = queryQiaoBiTenantDTO.getSize();
@@ -47,19 +50,22 @@ public class QiaoBiTenantService {
             return;
         }
         List<Integer> tenantIds = qiaoBiTenantVOS.stream().map(QiaoBiTenantVO::getId).collect(Collectors.toList());
-
+        List<EnterpriseCode> enterpriseCodes = enterpriseCodeService.getCodeByTenantIds(tenantIds);
         QiaoBiVipTypeDTO qiaoBiVipTypeDTO = new QiaoBiVipTypeDTO();
         qiaoBiVipTypeDTO.setTenantIds(tenantIds);
         List<QiaoBiVIPTypeVO> qiaoBiVIPTypeVOList = appVipTypeMapper.qiaoBiTenantsVIPTypeVOList(qiaoBiVipTypeDTO);
         for (QiaoBiTenantVO qiaoBiTenantVO : qiaoBiTenantVOS) {
             List<QiaoBiVIPTypeVO> temVOs = qiaoBiVIPTypeVOList.stream().filter(item -> item.getTenantId().equals(qiaoBiTenantVO.getId())).collect(Collectors.toList());
             qiaoBiTenantVO.setVipTypes(temVOs);
+            EnterpriseCode enterpriseCode = enterpriseCodes.stream().filter(item -> item.getTenantId().equals(qiaoBiTenantVO.getId())).findFirst().orElse(null);
+            if (enterpriseCode != null) {
+                qiaoBiTenantVO.setEnterpriseCode(enterpriseCode.getCode());
+            }
         }
 
     }
 
 
-
     public void updateQiaoBiTenant(UpdateQiaoBiTenantDTO updateQiaoBiTenantDTO) {
         Integer tenantId = updateQiaoBiTenantDTO.getTenantId();
         Tenant tenant = tenantService.getById(tenantId);
@@ -71,7 +77,7 @@ public class QiaoBiTenantService {
         tenant.setTenantQuota(updateQiaoBiTenantDTO.getNumber());
         tenant.updateById();
         List<VipTypeNumDTO> vipTypeNumDTOS = updateQiaoBiTenantDTO.getVipTypes();
-        assoTenantVipTypeService.saveFunctionModuleBatch(vipTypeNumDTOS,tenantId);
+        assoTenantVipTypeService.saveFunctionModuleBatch(vipTypeNumDTOS, tenantId);
     }
 
 }

+ 1 - 1
PCS/src/main/resources/mapper/AssoBusinessTaskVersionMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.cslg.permission.mapper.qiaobi.AssoBusinessTaskVersionMapper">
 <select id="queryVersionByTaskIds" resultType="cn.cslg.permission.common.model.qiaobi.version.BusinessTaskVersionVO">
-    select v.* ,abtv.BUSINESS_TASK_ID as businessTaskId from ASSO_BUSINESS_TASK_VERSION abtv left join VERSION v on abtv.VERSION_ID = v.ID
+    select v.* ,abtv.BUSINESS_TASK_ID as businessTaskId,v.ID as versionId from ASSO_BUSINESS_TASK_VERSION abtv left join VERSION v on abtv.VERSION_ID = v.ID
 <where>
     abtv. BUSINESS_TASK_ID in (
     <foreach collection="taskIds" item="n" separator=",">

+ 47 - 32
PCS/src/main/resources/mapper/BusinessTaskMapper.xml

@@ -5,35 +5,44 @@
 <mapper namespace="cn.cslg.permission.mapper.qiaobi.BusinessTaskMapper">
 
 
-
     <select id="queryAuditTask" resultType="cn.cslg.permission.common.model.qiaobi.businessTask.QueryAuditTaskVO">
         select bt.ID as id,
-               bt.CREATE_TIME as createTime,
-               bt.CREATE_ID as createId,
-               bt.HANDLE_ID as handleId,
-               bt.RESULT as auditResult,
-               bt.STATUS as status,
-               bt.TASK_TYPE as type,
-               ri.DEPARTMENT_ID as departmentId,
-               ri.POSITION_ID as positionId,
-               ri.PERSONNEL_NAME as personnelName,
-               ri.PERSONNEL_USERNAME as personnelUserName,
-               ri.PERSONNEL_PASSWORD as personnelPassword,
-               ri.PERSONNEL_EMAIL as personnelEmail,
-               ri.PERSONNEL_PHONE as personnelPhone
+        bt.CREATE_TIME as createTime,
+        bt.CREATE_ID as createId,
+        bt.HANDLE_ID as handleId,
+        bt.HANDLE_TIME as handleTime,
+        bt.RESULT as auditResult,
+        bt.STATUS as status,
+        bt.TASK_TYPE as type,
+        ri.DEPARTMENT_ID as departmentId,
+        ri.POSITION_ID as positionId,
+        ri.PERSONNEL_NAME as personnelName,
+        ri.PERSONNEL_USERNAME as personnelUserName,
+        ri.PERSONNEL_PASSWORD as personnelPassword,
+        ri.PERSONNEL_EMAIL as personnelEmail,
+        ri.PERSONNEL_PHONE as personnelPhone
         from BUSINESS_TASK bt left join ASSO_BUSINESS_TASK_REGIST_INFO abtri on bt.ID = abtri.BUSINESS_TASK_ID
         left join REGIST_INFORMATION ri on abtri.REGIST_INFO_ID=ri.ID
-       <where>
-       <if test="status!=null">
-        and   bt.STATUS=#{status}
-       </if>
-           <if test="type!=null">
-           and    bt.TYPE=#{type}
-           </if>
-           <if test="auditResult!=null">
-               and    bt.RESULT=#{auditResult}
-           </if>
-       </where>
+        <where>
+            (bt.TASK_TYPE=1
+
+            <if test="ifSys!=null and ifSys==true">
+                or bt.TASK_TYPE=2
+            </if>
+            )
+            <if test="status!=null">
+                and bt.STATUS=#{status}
+            </if>
+            <if test="type!=null">
+                and bt.TASK_TYPE=#{type}
+            </if>
+            <if test="auditResult!=null">
+                and bt.RESULT=#{auditResult}
+            </if>
+            <if test="tenantId!=null">
+                and bt.TENANT_ID=#{tenantId}
+            </if>
+        </where>
         order by bt.CREATE_TIME desc
         <if test="current!=null and size!=null">
             limit #{current},#{size}
@@ -44,19 +53,25 @@
         from BUSINESS_TASK bt left join ASSO_BUSINESS_TASK_REGIST_INFO abtri on bt.ID = abtri.BUSINESS_TASK_ID
         left join REGIST_INFORMATION ri on abtri.REGIST_INFO_ID=ri.ID
         <where>
+            (bt.TASK_TYPE=1
+
+            <if test="ifSys!=null and ifSys==true">
+                or bt.TASK_TYPE=2
+            </if>
+            )
             <if test="status!=null">
-                and   bt.STATUS=#{status}
+                and bt.STATUS=#{status}
             </if>
             <if test="type!=null">
-                and    bt.TYPE=#{type}
+                and bt.TASK_TYPE=#{type}
             </if>
             <if test="auditResult!=null">
-                and    bt.RESULT=#{auditResult}
+                and bt.RESULT=#{auditResult}
+            </if>
+            <if test="tenantId!=null">
+                and bt.TENANT_ID=#{tenantId}
             </if>
         </where>
-        order by bt.CREATE_TIME desc
-        <if test="current!=null and size!=null">
-            limit #{current},#{size}
-        </if>
+
     </select>
 </mapper>

+ 101 - 24
PCS/src/main/resources/mapper/PersonnelMapper.xml

@@ -1,31 +1,108 @@
 <?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.cslg.permission.mapper.PersonnelMapper">
-  <select id="getPasUser" resultType="cn.cslg.permission.common.model.vo.PasUserVO"  parameterType="cn.cslg.permission.common.model.dto.PasUserDTO"
-  >
-select id ,PERSONNEL_NAME as name,PERSONNEL_USERNAME as username from PERSONNEL
-<where>
-<if test="params.username!=null">
- and PERSONNEL_USERNAME like  concat('%', #{params.username}, '%')
-</if>
-<if test="params.name!=null">
-    and PERSONNEL_NAME like  concat('%', #{params.name}, '%')
-</if>
-<if test="params.userIds.size()!=0">
-  and id in
-    <foreach collection="params.userIds" index="index" item="item" open="(" separator="," close=")">
-
-        #{item}
-    </foreach>
-</if>
-</where>
-  </select>
-
-
-    <select id="getQiaoBiPersons" resultType="cn.cslg.permission.common.model.vo.PersonnelVO">
-        select p.ID as id ,PERSONNEL_NAME as name,PERSONNEL_USERNAME as username,apvt.EXPITR_TIME as expitrTime from PERSONNEL as p left join ASSO_PERSON_VIP_TYPE as apvt
+    <select id="getPasUser" resultType="cn.cslg.permission.common.model.vo.PasUserVO"
+            parameterType="cn.cslg.permission.common.model.dto.PasUserDTO"
+    >
+        select id ,PERSONNEL_NAME as name,PERSONNEL_USERNAME as username from PERSONNEL
         <where>
-            apvt.EXPITR_TIME> #{expitrTime}
+            <if test="params.username!=null">
+                and PERSONNEL_USERNAME like concat('%', #{params.username}, '%')
+            </if>
+            <if test="params.name!=null">
+                and PERSONNEL_NAME like concat('%', #{params.name}, '%')
+            </if>
+            <if test="params.userIds.size()!=0">
+                and id in
+                <foreach collection="params.userIds" index="index" item="item" open="(" separator="," close=")">
+
+                    #{item}
+                </foreach>
+            </if>
         </where>
     </select>
+
+
+    <select id="getQiaoBiPersons" resultType="java.lang.Long">
+        select count(*) from PERSONNEL as p left join ASSO_PERSON_VIP_TYPE as apvt
+        on p.ID = apvt.PERSON_ID
+        <where>
+            p.TENANT_ID=#{tenantId} and
+            DATE_FORMAT(apvt.EXPITR_TIME, '%Y-%m-%d')
+            &lt; DATE_FORMAT(#{expitrTime}, '%Y-%m-%d')
+            and DATE_FORMAT(apvt.EXPITR_TIME, '%Y-%m-%d') &gt; DATE_FORMAT(#{startTime}, '%Y-%m-%d')
+        </where>
+    </select>
+
+    <select id="getQiaoBiPersonsList" resultType="cn.cslg.permission.common.model.vo.PersonnelVO">
+        select p.PERSONNEL_NAME as name,p.ID as ID,p.PERSONNEL_USERNAME as username,p.PERSONNEL_SEX as
+        gender,p.PERSONNEL_EMAIL as email,p.PERSONNEL_PHONE as mobile,p.PERSONNEL_STATUS as
+        state,p.PERSONNEL_DESCRIPTION
+        as remark,p.PERSONNEL_QQ as qqNumber,p.PERSONNEL_DING as nail,p.TENANT_ID as tenant,
+        apvt.EXPITR_TIME as expitrTime, tvt.TENANT_VIP_NAME as vipTypeName from
+        PERSONNEL as p left join
+        ASSO_PERSON_VIP_TYPE as apvt
+        on p.ID = apvt.PERSON_ID left join TENANT_VIP_TYPE tvt on apvt.VIP_TYPE_ID = tvt.ID
+        <where>
+            <if test="tenant!=null">
+                and p.TENANT_ID=#{tenant}
+            </if>
+            <if test="expitrTime!=null">
+                and DATE_FORMAT(apvt.EXPITR_TIME, '%Y-%m-%d')=DATE_FORMAT(#{expitrTime}, '%Y-%m-%d')
+            </if>
+            <if test="name!=null and !name.trim().equals('')">
+                and p.PERSONNEL_NAME like concat('%', #{name}, '%')
+
+            </if>
+            <if test="endExpitrTime!=null">
+                and apvt.EXPITR_TIME
+                &lt;= #{endExpitrTime}
+            </if>
+            <if test="startExpitrTime!=null">
+                and apvt.EXPITR_TIME &gt; #{startExpitrTime}
+            </if>
+            <if test="vipTypeName!=null and !vipTypeName.trim().equals('')">
+                and tvt.TENANT_VIP_NAME like concat('%', #{vipTypeName}, '%')
+            </if>
+            <if test="id!=null">
+                and p.id=#{id}
+            </if>
+        </where>
+        order by p.CREATE_TIME desc
+        <if test="current!=null and size!=null">
+            limit #{current},#{size}
+        </if>
+    </select>
+
+    <select id="getQiaoBiPersonsListTotal" resultType="java.lang.Long">
+        select count(*) from PERSONNEL as p left join
+        ASSO_PERSON_VIP_TYPE as apvt
+        on p.ID = apvt.PERSON_ID left join TENANT_VIP_TYPE tvt on apvt.VIP_TYPE_ID = tvt.ID
+        <where>
+            <if test="tenant!=null">
+                and p.TENANT_ID=#{tenant}
+            </if>
+            <if test="expitrTime!=null">
+                and DATE_FORMAT(apvt.EXPITR_TIME, '%Y-%m-%d')=DATE_FORMAT(#{expitrTime}, '%Y-%m-%d')
+            </if>
+            <if test="name!=null and !name.trim().equals('')">
+                and p.PERSONNEL_NAME like concat('%', #{name}, '%')
+
+            </if>
+            <if test="endExpitrTime!=null">
+                and DATE_FORMAT(apvt.EXPITR_TIME, '%Y-%m-%d')
+                &lt; DATE_FORMAT(#{endExpitrTime}, '%Y-%m-%d')
+            </if>
+            <if test="startExpitrTime!=null">
+                and DATE_FORMAT(apvt.EXPITR_TIME, '%Y-%m-%d') &gt; DATE_FORMAT(#{startExpitrTime}, '%Y-%m-%d')
+            </if>
+            <if test="vipTypeName!=null and !vipTypeName.trim().equals('')">
+                and tvt.TENANT_VIP_NAME like concat('%', #{vipTypeName}, '%')
+            </if>
+            <if test="id!=null">
+                and p.id=#{id}
+            </if>
+        </where>
+
+    </select>
 </mapper>

+ 32 - 0
PCS/src/test/java/cn/cslg/permission/qiaobi/MailSendTest.java

@@ -0,0 +1,32 @@
+package cn.cslg.permission.qiaobi;
+
+import cn.cslg.permission.common.core.business.LoginCacheKeyUtil;
+import cn.cslg.permission.common.model.qiaobi.tenant.CompanyPersonSignUpDTO;
+import cn.cslg.permission.common.utils.RedisUtil;
+import cn.cslg.permission.service.email.MailSendService;
+import cn.cslg.permission.service.qiaobi.QiaoBiPersonService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class MailSendTest {
+    @Autowired
+    private MailSendService mailSendService;
+@Test
+public void CompanyPersonSignUp(){
+
+
+
+
+
+
+
+
+
+
+}
+}

+ 4 - 4
PCS/src/test/java/cn/cslg/permission/qiaobi/QiaobiPersonTest.java

@@ -23,16 +23,16 @@ private RedisUtil redisUtil;
 public void CompanyPersonSignUp(){
 
     CompanyPersonSignUpDTO companyPersonSignUpDTO =new CompanyPersonSignUpDTO();
-    companyPersonSignUpDTO.setPersonnelEmail("22326237071@qq.com");
-    companyPersonSignUpDTO.setPersonnelPhone("17625547161");
+    companyPersonSignUpDTO.setPersonnelEmail("1kj-dtig68vv5e@dingtalk1.com");
+    companyPersonSignUpDTO.setPersonnelPhone("17625547164");
     companyPersonSignUpDTO.setPhoneCode("ATEAT");
      redisUtil.set(LoginCacheKeyUtil.getLoginCaptcha(companyPersonSignUpDTO.getPersonnelPhone()),"ATEAT");
    companyPersonSignUpDTO.setDepartMentId(1);
    companyPersonSignUpDTO.setPositionId(1);
    companyPersonSignUpDTO.setPersonnelName("李仁杰");
    companyPersonSignUpDTO.setPersonnelPassword("123456");
-   companyPersonSignUpDTO.setPersonnelUserName("lrj111");
-   companyPersonSignUpDTO.setVipTypeId(19);
+   companyPersonSignUpDTO.setPersonnelUserName("lrj323");
+   companyPersonSignUpDTO.setVipTypeId(26);
    companyPersonSignUpDTO.setEnterpriseCode("ABCD");
     qiaoBiPersonService.companyPersonSignUp(companyPersonSignUpDTO);