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

Merge remote-tracking branch 'origin/master'

Qchen 7 месяцев назад
Родитель
Сommit
1e42d6ed7a
100 измененных файлов с 4572 добавлено и 7 удалено
  1. 5 0
      authentication/pom.xml
  2. 2 0
      authentication/src/main/java/com/jzg/AuthenticationApplication.java
  3. 16 0
      authentication/src/main/java/com/jzg/client/PartnerDistributionClient.java
  4. 1 1
      authentication/src/main/java/com/jzg/config/SecurityConfig.java
  5. 25 3
      authentication/src/main/java/com/jzg/controller/AppAuthController.java
  6. 1 0
      authentication/src/main/java/com/jzg/filter/TokenAuthenticationFilter.java
  7. 78 0
      commons/src/main/java/com/jzg/commons/config/StringToListTypeHandler.java
  8. 21 0
      commons/src/main/java/com/jzg/commons/constants/PartnerConstants.java
  9. 41 0
      commons/src/main/java/com/jzg/commons/core/base/PartnerBaseModel.java
  10. 32 0
      commons/src/main/java/com/jzg/commons/entity/dto/PartnerReviewParam.java
  11. 2 0
      commons/src/main/java/com/jzg/commons/entity/enums/MessageCodeEnum.java
  12. 66 2
      commons/src/main/java/com/jzg/commons/entity/po/SysMenu.java
  13. 26 0
      commons/src/main/java/com/jzg/commons/entity/po/SysSystemMenu.java
  14. 9 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfo.java
  15. 1 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoSalesman.java
  16. 3 1
      commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java
  17. 21 0
      commons/src/main/java/com/jzg/commons/entity/vo/DistributionVo.java
  18. 16 0
      commons/src/main/java/com/jzg/commons/entity/vo/MenuEntity.java
  19. 17 0
      commons/src/main/java/com/jzg/commons/entity/vo/MenuVO.java
  20. 14 0
      commons/src/main/java/com/jzg/commons/entity/vo/Meta.java
  21. 15 0
      commons/src/main/java/com/jzg/commons/entity/vo/PartnerAddsSalespersonVo.java
  22. 21 0
      commons/src/main/java/com/jzg/commons/entity/vo/PartnerRecommenderVo.java
  23. 49 0
      commons/src/main/java/com/jzg/commons/entity/vo/PartnerReviewVo.java
  24. 122 0
      commons/src/main/java/com/jzg/commons/entity/vo/PartnerUserVo.java
  25. 11 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserVo.java
  26. 17 0
      commons/src/main/java/com/jzg/commons/entity/vo/SystemMenuVo.java
  27. 1 0
      gateway/src/main/java/com/jzg/config/CorsConfig.java
  28. 18 0
      gateway/src/main/resources/application-dev.yml
  29. 119 0
      partner/pom.xml
  30. 15 0
      partner/src/main/java/com/jzg/PartnerApplication.java
  31. 19 0
      partner/src/main/java/com/jzg/client/OrganizationClient.java
  32. 19 0
      partner/src/main/java/com/jzg/constants/TimeConstants.java
  33. 37 0
      partner/src/main/java/com/jzg/controller/DistributionController.java
  34. 42 0
      partner/src/main/java/com/jzg/controller/ExpiredCommissionController.java
  35. 200 0
      partner/src/main/java/com/jzg/controller/NewAppPartnerController.java
  36. 35 0
      partner/src/main/java/com/jzg/controller/PartnerCommissionController.java
  37. 47 0
      partner/src/main/java/com/jzg/controller/PartnerCommissionDetailsController.java
  38. 155 0
      partner/src/main/java/com/jzg/controller/PartnerExtractHistoryController.java
  39. 38 0
      partner/src/main/java/com/jzg/controller/PartnerKickbackChangeController.java
  40. 86 0
      partner/src/main/java/com/jzg/controller/PartnerLiftingRecordController.java
  41. 57 0
      partner/src/main/java/com/jzg/controller/PartnerRuleController.java
  42. 232 0
      partner/src/main/java/com/jzg/controller/PartnerUserController.java
  43. 52 0
      partner/src/main/java/com/jzg/controller/PurchaseRecordController.java
  44. 59 0
      partner/src/main/java/com/jzg/entity/PartnerAttribute.java
  45. 49 0
      partner/src/main/java/com/jzg/entity/PartnerCommissionRules.java
  46. 110 0
      partner/src/main/java/com/jzg/entity/PartnerExpiredCommission.java
  47. 39 0
      partner/src/main/java/com/jzg/entity/PartnerExtractHistory.java
  48. 50 0
      partner/src/main/java/com/jzg/entity/PartnerKickbackChange.java
  49. 103 0
      partner/src/main/java/com/jzg/entity/PartnerLiftingRecord.java
  50. 73 0
      partner/src/main/java/com/jzg/entity/PartnerPartnerAccount.java
  51. 130 0
      partner/src/main/java/com/jzg/entity/PartnerPremiumDetails.java
  52. 83 0
      partner/src/main/java/com/jzg/entity/PartnerPurchaseRecord.java
  53. 38 0
      partner/src/main/java/com/jzg/entity/PartnerRatio.java
  54. 26 0
      partner/src/main/java/com/jzg/entity/PartnerRecordApper.java
  55. 46 0
      partner/src/main/java/com/jzg/entity/PartnerRule.java
  56. 101 0
      partner/src/main/java/com/jzg/entity/PartnerUser.java
  57. 17 0
      partner/src/main/java/com/jzg/entity/PartnerUserGrade.java
  58. 30 0
      partner/src/main/java/com/jzg/entity/param/AppHomeParams.java
  59. 17 0
      partner/src/main/java/com/jzg/entity/param/CommissionValidityPeriod.java
  60. 26 0
      partner/src/main/java/com/jzg/entity/param/LiftingRecordAudit.java
  61. 27 0
      partner/src/main/java/com/jzg/entity/param/PartnerApp.java
  62. 45 0
      partner/src/main/java/com/jzg/entity/param/PartnerDetailsParam.java
  63. 31 0
      partner/src/main/java/com/jzg/entity/param/PartnerKickbackChangeParam.java
  64. 32 0
      partner/src/main/java/com/jzg/entity/param/PartnerLiftingRecordParam.java
  65. 64 0
      partner/src/main/java/com/jzg/entity/param/PartnerRuleEntity.java
  66. 41 0
      partner/src/main/java/com/jzg/entity/param/QueryVo.java
  67. 15 0
      partner/src/main/java/com/jzg/entity/param/UserGradeParam.java
  68. 62 0
      partner/src/main/java/com/jzg/entity/vo/AppUserInfoVo.java
  69. 22 0
      partner/src/main/java/com/jzg/entity/vo/CommissionRulesVo.java
  70. 15 0
      partner/src/main/java/com/jzg/entity/vo/DetailsParam.java
  71. 21 0
      partner/src/main/java/com/jzg/entity/vo/HomeVo.java
  72. 55 0
      partner/src/main/java/com/jzg/entity/vo/MyUserLevel.java
  73. 30 0
      partner/src/main/java/com/jzg/entity/vo/MyUserVo.java
  74. 201 0
      partner/src/main/java/com/jzg/entity/vo/PartnerDetailsVo.java
  75. 31 0
      partner/src/main/java/com/jzg/entity/vo/PartnerRulesRatio.java
  76. 72 0
      partner/src/main/java/com/jzg/entity/vo/PartnerUserVo.java
  77. 46 0
      partner/src/main/java/com/jzg/entity/vo/RelationalVo.java
  78. 29 0
      partner/src/main/java/com/jzg/entity/vo/SelectUserVo.java
  79. 75 0
      partner/src/main/java/com/jzg/entity/vo/SysPartnerAccount.java
  80. 47 0
      partner/src/main/java/com/jzg/entity/vo/TeamOverviewVo.java
  81. 25 0
      partner/src/main/java/com/jzg/entity/vo/TodayOverview.java
  82. 24 0
      partner/src/main/java/com/jzg/entity/vo/UserRuleVo.java
  83. 32 0
      partner/src/main/java/com/jzg/mapper/PartnerAttributeMapper.java
  84. 9 0
      partner/src/main/java/com/jzg/mapper/PartnerCommissionMapper.java
  85. 16 0
      partner/src/main/java/com/jzg/mapper/PartnerExpiredCommissionMapper.java
  86. 10 0
      partner/src/main/java/com/jzg/mapper/PartnerExtractHistoryMapper.java
  87. 35 0
      partner/src/main/java/com/jzg/mapper/PartnerKickbackChangeMapper.java
  88. 42 0
      partner/src/main/java/com/jzg/mapper/PartnerLiftingRecordMapper.java
  89. 26 0
      partner/src/main/java/com/jzg/mapper/PartnerPartnerAccountMapper.java
  90. 64 0
      partner/src/main/java/com/jzg/mapper/PartnerPremiumDetailsMapper.java
  91. 9 0
      partner/src/main/java/com/jzg/mapper/PartnerRatioMapper.java
  92. 10 0
      partner/src/main/java/com/jzg/mapper/PartnerRecordApperMapper.java
  93. 13 0
      partner/src/main/java/com/jzg/mapper/PartnerRuleMapper.java
  94. 10 0
      partner/src/main/java/com/jzg/mapper/PartnerRulesRatioMapper.java
  95. 212 0
      partner/src/main/java/com/jzg/mapper/PartnerUserMapper.java
  96. 10 0
      partner/src/main/java/com/jzg/mapper/PurchaseRecordMapper.java
  97. 15 0
      partner/src/main/java/com/jzg/mapper/SysPartnerAccountMapper.java
  98. 152 0
      partner/src/main/java/com/jzg/service/Impl/PartnerCommissionServiceImpl.java
  99. 43 0
      partner/src/main/java/com/jzg/service/Impl/PartnerExpiredCommissionServiceImpl.java
  100. 53 0
      partner/src/main/java/com/jzg/service/Impl/PartnerExtractHistoryServiceImpl.java

+ 5 - 0
authentication/pom.xml

@@ -33,6 +33,11 @@
             <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus</artifactId>

+ 2 - 0
authentication/src/main/java/com/jzg/AuthenticationApplication.java

@@ -4,9 +4,11 @@ package com.jzg;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 
 @EnableDiscoveryClient
 @SpringBootApplication
+@EnableFeignClients
 public class AuthenticationApplication {
 
     public static void main(String[] args) {

+ 16 - 0
authentication/src/main/java/com/jzg/client/PartnerDistributionClient.java

@@ -0,0 +1,16 @@
+package com.jzg.client;
+
+
+import com.jzg.commons.core.page.HttpResult;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@FeignClient(name = "jzg-partner",url = "http://localhost:8087")
+public interface PartnerDistributionClient {
+
+
+    @GetMapping("partner/isTherePartner")
+    HttpResult<Boolean> isTherePartner(@RequestParam String userId);
+
+}

+ 1 - 1
authentication/src/main/java/com/jzg/config/SecurityConfig.java

@@ -89,7 +89,7 @@ public class SecurityConfig {
         http.authorizeHttpRequests(auth -> auth
                         .requestMatchers("/swagger-ui/**", "/v3/api-docs/**", "/swagger-resources/**", "/webjars/**", "/favicon.ico",
                                 "/auth/login","/auth/captchaById","/auth/register","/sendSmsCode","/appLogin","/smsCodeLogin","/auth/publicKeyExchange","/appAuth/smsCodeLogin","/send/sendSmsCode",
-                                "/appAuth/appLogin","/auth/sendSmsCode","/auth/forgotPassword").permitAll()
+                                "/appAuth/appLogin","/auth/sendSmsCode","/auth/forgotPassword","/appAuth/partnerAppLogin").permitAll()
                         .anyRequest().authenticated()  // 其他接口需认证
                 )
 //                .formLogin((form) -> form

+ 25 - 3
authentication/src/main/java/com/jzg/controller/AppAuthController.java

@@ -2,7 +2,7 @@ package com.jzg.controller;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.jzg.commons.constants.RedisKeyConstants;
+import com.jzg.client.PartnerDistributionClient;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.exception.SystemException;
@@ -23,7 +23,6 @@ import jakarta.servlet.ServletException;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
-import org.redisson.api.RBucket;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.AuthenticationManager;
@@ -39,7 +38,6 @@ import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 import java.io.IOException;
-import java.util.Objects;
 import java.util.regex.Pattern;
 
 @Slf4j
@@ -63,6 +61,9 @@ public class AppAuthController {
     @Autowired
     AuthenticationManager authenticationManager;
 
+    @Autowired
+    private PartnerDistributionClient partnerDistributionClient;
+
     @Operation(summary = "登录接口",
             description = "登录接口",
             responses = {
@@ -76,6 +77,27 @@ public class AppAuthController {
     }
 
 
+
+    @Operation(summary = "合伙人登录接口",
+            description = "合伙人登录接口",
+            responses = {
+                    @ApiResponse(responseCode = "200",description = "登录成功"),
+                    @ApiResponse(responseCode = "403",description = "登录失败")
+            })
+    @PostMapping("partnerAppLogin")
+    public void partnerAppLogin(@RequestBody AppLoginFormVo loginFormVo) throws ServletException, IOException {
+        SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getMobile, loginFormVo.getMobile()));
+
+        HttpResult<Boolean> isTherePartner = partnerDistributionClient.isTherePartner(sysUser.getId());
+        if (200 == isTherePartner.getCode()){
+            if (!isTherePartner.getData()){
+                throw new ServletException("当前用户无登录权限");
+            }
+        }
+        modifyPass(loginFormVo);
+    }
+
+
     public void modifyPass(AppLoginFormVo loginFormVo) throws ServletException, IOException {
         loginFormVo.setSystem("APP");
         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

+ 1 - 0
authentication/src/main/java/com/jzg/filter/TokenAuthenticationFilter.java

@@ -49,6 +49,7 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
         doList.add("/appAuth/appLogin");
         doList.add("/auth/sendSmsCode");
         doList.add("/auth/forgotPassword");
+        doList.add("/appAuth/partnerAppLogin");
         String path = request.getRequestURI();
         for (String pattern : doList) {
             // 使用正则表达式匹配  .* 匹配所有以 pattern 开头的路径

+ 78 - 0
commons/src/main/java/com/jzg/commons/config/StringToListTypeHandler.java

@@ -0,0 +1,78 @@
+package com.jzg.commons.config;
+
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+import org.springframework.util.StringUtils;
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 自定义TypeHandler:将数据库VARCHAR类型的逗号分隔字符串,转换为Java的List<String>
+ * MappedTypes:指定Java目标类型(List<String>)
+ * MappedJdbcTypes:指定数据库源类型(VARCHAR)
+ */
+@MappedTypes(List.class) // 告诉MyBatis,该转换器处理Java的List类型
+@MappedJdbcTypes(JdbcType.VARCHAR) // 告诉MyBatis,该转换器处理数据库的VARCHAR类型
+public class StringToListTypeHandler extends BaseTypeHandler<List<String>> {
+
+    // 分隔符:与SQL中GROUP_CONCAT的SEPARATOR一致(这里是逗号)
+    private static final String SEPARATOR = ",";
+
+    /**
+     * 插入/更新时,将List<String>转换为字符串写入数据库(可选实现,本次查询场景可空实现)
+     */
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType) throws SQLException {
+        if (parameter == null || parameter.isEmpty()) {
+            ps.setString(i, null);
+            return;
+        }
+        // List转逗号分隔字符串
+        String str = String.join(SEPARATOR, parameter);
+        ps.setString(i, str);
+    }
+
+    /**
+     * 核心:从结果集按列名获取字符串,转换为List<String>(查询时主要调用此方法)
+     */
+    @Override
+    public List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException {
+        return strToList(rs.getString(columnName));
+    }
+
+    /**
+     * 从结果集按列索引获取字符串,转换为List<String>
+     */
+    @Override
+    public List<String> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+        return strToList(rs.getString(columnIndex));
+    }
+
+    /**
+     * 从CallableStatement获取字符串,转换为List<String>
+     */
+    @Override
+    public List<String> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
+        return strToList(cs.getString(columnIndex));
+    }
+
+    /**
+     * 工具方法:字符串转List<String>,处理null/空字符串
+     */
+    private List<String> strToList(String str) {
+        // 若字符串为null/空,返回空集合(避免NullPointerException)
+        if (!StringUtils.hasText(str)) {
+            return Collections.emptyList();
+        }
+        // 按逗号拆分,转换为List集合
+        String[] arr = str.split(SEPARATOR);
+        return Arrays.asList(arr);
+    }
+}

+ 21 - 0
commons/src/main/java/com/jzg/commons/constants/PartnerConstants.java

@@ -0,0 +1,21 @@
+package com.jzg.commons.constants;
+
+import java.util.List;
+import java.util.Objects;
+
+public class PartnerConstants {
+
+
+    private static final List<Integer> GRADE_LIST = List.of(1, 2, 3, 4);
+
+
+
+    public static boolean isContains(List<Integer> subArray) {
+        if (Objects.isNull(subArray) || subArray.isEmpty()) {
+            return false;
+        }
+        return subArray.stream()
+                .anyMatch(GRADE_LIST::contains);
+    }
+
+}

+ 41 - 0
commons/src/main/java/com/jzg/commons/core/base/PartnerBaseModel.java

@@ -0,0 +1,41 @@
+package com.jzg.commons.core.base;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+public class PartnerBaseModel implements Serializable {
+
+    @ExcelIgnore
+    @Schema(description = "创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private String createBy;
+
+    @ExcelIgnore
+    @Schema(description = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @ExcelIgnore
+    @Schema(description = "修改人")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateBy;
+
+    @ExcelIgnore
+    @Schema(description = "修改时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+
+    private String systemCode;
+
+}

+ 32 - 0
commons/src/main/java/com/jzg/commons/entity/dto/PartnerReviewParam.java

@@ -0,0 +1,32 @@
+package com.jzg.commons.entity.dto;
+
+
+import com.jzg.commons.aop.LogDescriptionField;
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class PartnerReviewParam extends PageRequest {
+
+    @Schema(description = "机构id")
+    private String deptId;
+
+    @Schema(description = "机构")
+    private String deptName;
+
+    @Schema(description = "姓名")
+    @LogDescriptionField("合伙人")
+    private String name;
+
+    @Schema(description = "领导人id")
+    private String leaderId;
+
+    @Schema(description = "领导人姓名")
+    private String leaderName;
+
+    private int partnerStatus;
+
+    private String grade;
+
+}

+ 2 - 0
commons/src/main/java/com/jzg/commons/entity/enums/MessageCodeEnum.java

@@ -32,6 +32,8 @@ public enum MessageCodeEnum {
     TEMPLATE_10("template_10","补录订单审核通过 消息"),
     /**发布通知消息(新增业务员) 消息*/
     TEMPLATE_11("template_11","发布通知消息(新增业务员) 消息"),
+    /**发布通知消息(新增业务员) 消息*/
+    TEMPLATE_12("template_12","发布通知消息(新增合伙人) 消息"),
     ;
 
     private final String code;

+ 66 - 2
commons/src/main/java/com/jzg/commons/entity/po/SysMenu.java

@@ -1,17 +1,81 @@
 package com.jzg.commons.entity.po;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.Date;
+import java.util.List;
+
 @Data
 public class SysMenu {
 
+    @TableId(value = "id", type = IdType.AUTO)
     private String id;
 
-    private String systemId;
+    @TableField(value = "title")
+    @Schema(description = "菜单标题")
+    private String title;
 
+    @TableField(value = "name")
+    @Schema(description = "菜单名称")
     private String name;
 
+    @TableField(value = "parent_id")
+    @Schema(description = "父菜单id")
     private String parentId;
-
+    @Schema(description = "菜单路由")
+    private String path;
+    @Schema(description = "组件")
+    private String component;
+    @Schema(description = "跳转")
+    private String redirect;
+    @Schema(description = "菜单权限")
     private String perms;
+    @Schema(description = "")
+    private String activeMenu;
+    @Schema(description = "菜单类型  0 目录 1菜单  2按钮")
+    private Integer type;
+    @Schema(description = "图标")
+    private String icon;
+    @TableField(value = "order_num")
+    @Schema(description = "排序")
+    private Integer orderNum = 0;
+    @TableField(value = "create_by")
+    private String createBy;
+    @TableField(value = "create_time")
+    private Date createTime;
+    @TableField(value = "last_update_by")
+    private String lastUpdateBy;
+    @TableField(value = "last_update_time")
+    private Date lastUpdateTime;
+    @TableField(value = "del_flag")
+    private Integer delFlag;
+    // 非数据库字段
+    @TableField(exist = false)
+    private String parentName;
+
+    // 非数据库字段
+    @TableField(exist = false)
+    private String parentUrl;
+    // 非数据库字段
+    @TableField(exist = false)
+    private Integer level;
+    // 非数据库字段
+    @TableField(exist = false)
+    @Schema(description = "子级菜单")
+    private List<SysMenu> children;
+
+    @TableField(value = "menu")
+    private Integer menu;
+
+    /***
+     * 添加菜单类型 1.车险 2. 控制台
+     */
+    @TableField(value = "sys_type")
+    @Schema(description = "菜单类型 1 车险 2.控制台")
+    private String sysType;
+
 }

+ 26 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysSystemMenu.java

@@ -0,0 +1,26 @@
+package com.jzg.commons.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class SysSystemMenu {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private String id;
+
+    @TableField(value = "system_code")
+    @Schema(description = "系统code")
+    private String systemCode;
+
+    @TableField(value = "menu_id")
+    @Schema(description = "菜单名称")
+    private String menuId;
+
+}

+ 9 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfo.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
+import com.jzg.commons.config.StringToListTypeHandler;
 import com.jzg.commons.core.base.BaseModel;
 import com.jzg.commons.entity.dto.SysUserJzgInfoBankCardDto;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -329,6 +330,14 @@ public class SysUserJzgInfo extends BaseModel implements Serializable {
     @Schema(description = "身份证有效期止期")
     private String identityTimeEnd;
 
+    @TableField(exist = false,typeHandler = StringToListTypeHandler.class)
+    @Schema(description = "合伙人等级")
+    private List<String> gradeList;
+
+    @TableField(exist = false,typeHandler = StringToListTypeHandler.class)
+    @Schema(description = "合伙人类型")
+    private String partnerTypeAttr;
+
     public SysUserJzgInfo(String userName, SysUser user, String systemCode, String deptId){
         this.userId = user.getId();
         //默认添加管理员账户

+ 1 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoSalesman.java

@@ -20,6 +20,7 @@ public class SysUserJzgInfoSalesman {
 
     private String typeAttr;
 
+    private int partnerStatus;
 
     public SysUserJzgInfoSalesman(){
 

+ 3 - 1
commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java

@@ -15,6 +15,7 @@ import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.entity.quote.vo.base.OrderBase;
+import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
 import com.jzg.commons.entity.quote.vo.orders.InsOrdersVo;
 import com.jzg.commons.entity.scheme.vo.PtlAgreementInsCompanyVo;
 import com.jzg.commons.entity.vo.ImagesVo;
@@ -195,7 +196,8 @@ public class QuoteEchoVo extends QuoteVo {
     /**
      * 影像资料
      */
-    private List<ImagesVo> imageVoList;
+//    private List<ImagesVo> imageVoList;
+    private List<InsuranceImageVo> imageVoList;
 
     /**
      * 费用信息

+ 21 - 0
commons/src/main/java/com/jzg/commons/entity/vo/DistributionVo.java

@@ -0,0 +1,21 @@
+package com.jzg.commons.entity.vo;
+
+
+import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.orders.po.InsOrdersCosts;
+import lombok.Data;
+
+@Data
+public class DistributionVo {
+
+
+    private InsOrders insOrders;
+
+
+    private InsOrdersCosts ordersCosts;
+
+
+    private String licenseNo;
+
+
+}

+ 16 - 0
commons/src/main/java/com/jzg/commons/entity/vo/MenuEntity.java

@@ -0,0 +1,16 @@
+package com.jzg.commons.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class MenuEntity {
+    private Integer id;
+    private Integer parentId;
+    private String name;
+    private String path;
+    private String component;
+    private String componentName;
+    private String icon;
+    private String activeMenu;
+    private Integer hidden;
+}

+ 17 - 0
commons/src/main/java/com/jzg/commons/entity/vo/MenuVO.java

@@ -0,0 +1,17 @@
+package com.jzg.commons.entity.vo;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class MenuVO {
+    private Integer id;
+    private String path;
+    private String name;
+    private String title;
+    private String component;
+    private Meta meta;
+    private List<MenuVO> children = new ArrayList<>();
+}

+ 14 - 0
commons/src/main/java/com/jzg/commons/entity/vo/Meta.java

@@ -0,0 +1,14 @@
+package com.jzg.commons.entity.vo;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class Meta {
+    private String title;
+    private String icon;
+    private Boolean menu;
+    private String activeMenu;
+}

+ 15 - 0
commons/src/main/java/com/jzg/commons/entity/vo/PartnerAddsSalespersonVo.java

@@ -0,0 +1,15 @@
+package com.jzg.commons.entity.vo;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class PartnerAddsSalespersonVo {
+
+    private String userId;
+
+    @Schema(description = "团队、渠道、电销id")
+    private String organizationId;
+
+}

+ 21 - 0
commons/src/main/java/com/jzg/commons/entity/vo/PartnerRecommenderVo.java

@@ -0,0 +1,21 @@
+package com.jzg.commons.entity.vo;
+
+
+import lombok.Data;
+
+@Data
+public class PartnerRecommenderVo {
+
+    private String grade;
+
+    private String name;
+
+    private String userId;
+
+    private String deptId;
+
+    private String typeAttr;
+
+    private String mobile;
+
+}

+ 49 - 0
commons/src/main/java/com/jzg/commons/entity/vo/PartnerReviewVo.java

@@ -0,0 +1,49 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class PartnerReviewVo {
+
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "工号")
+    private String userId;
+
+    @Schema(description = "机构ID")
+    private String deptId;
+
+    @Schema(description = "机构名称")
+    private String deptName;
+
+    @Schema(description = "邀请人")
+    private String referrerId;
+
+    @Schema(description = "邀请人名字")
+    private String referrerName;
+
+    @Schema(description = "管理人")
+    private String leaderId;
+
+    @Schema(description = "管理人")
+    private String leaderIdName;
+
+    @Schema(description = "管理人")
+    private String userInfoId;
+
+    private String gradeList;
+
+    @Schema(description = "审核时间")
+    private LocalDateTime partnerReviewTime;
+
+    @Schema(description = "审核人")
+    private String partnerReviewer;
+
+}

+ 122 - 0
commons/src/main/java/com/jzg/commons/entity/vo/PartnerUserVo.java

@@ -0,0 +1,122 @@
+package com.jzg.commons.entity.vo;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+@Data
+public class PartnerUserVo {
+
+    @TableId(value = "id",type = IdType.ASSIGN_ID)
+    private String id;
+
+    @Schema(description = "姓名")
+    @TableField(value = "name")
+    private String name;
+
+    @Schema(description = "手机号")
+    @TableField(value = "mobile")
+    private String mobile;
+
+    @Schema(description = "工号")
+    @TableField(value = "user_id")
+    private String userId;
+
+    @Schema(description = "机构ID")
+    @TableField(value = "dept_id")
+    private String deptId;
+
+    @Schema(description = "机构名称")
+    @TableField(value = "dept_name")
+    private String deptName;
+
+    @Schema(description = "等级")
+    @TableField(value = "grade")
+    private Integer grade;
+
+    @Schema(description = "佣金比例")
+    @TableField(value = "commission_rate")
+    private BigDecimal commissionRate;
+
+    @Schema(description = "邀请人")
+    @TableField(value = "referrer_id")
+    private String referrerId;
+
+    @Schema(description = "邀请人")
+    @TableField(value = "referrer_name")
+    private String referrerName;
+
+    @Schema(description = "头像")
+    @TableField(value = "picture_url")
+    private String pictureUrl;
+
+
+    @Schema(description = "推荐人等级")
+    @TableField(exist = false)
+    private String referrerGrade;
+
+    @Schema(description = "1-升级身份")
+    @TableField(value = "identity_type")
+    private int identityType;
+
+    @Schema(description = "0-未锁定;1-锁定")
+    @TableField(value = "identity_status")
+    private boolean identityStatus;
+
+
+    @TableField(value = "identity_time")
+    private Date identityTime;
+
+    /**
+     * 降级考核时间
+     */
+    private Date upgradeCycleStartTime;
+
+    /**
+     * 佣金考核时间
+      */
+    private Date assessmentTime;
+
+    /**
+     * 升级时间
+     */
+    private Date upgradeTime;
+
+    /**
+     * 创建者
+     */
+    @TableField(value = "create_by")
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    @TableField(value = "update_by")
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "update_time")
+    private Date updateTime;
+
+
+    private boolean status;
+
+}

+ 11 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysUserVo.java

@@ -1,5 +1,6 @@
 package com.jzg.commons.entity.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.jzg.commons.aop.LogDescriptionField;
 import com.jzg.commons.core.base.PageRequest;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -191,4 +192,14 @@ public class SysUserVo extends PageRequest {
         private String id;
     }
 
+
+    @Schema(description = "合伙人等级")
+    @TableField(exist = false)
+    private List<String> gradeList;
+
+    @Schema(description = "二维码邀请合伙人等级")
+    @TableField(exist = false)
+    private Integer grade;
+
+
 }

+ 17 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SystemMenuVo.java

@@ -0,0 +1,17 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Schema(description = "审核数量VO")
+@Data
+public class SystemMenuVo {
+
+    @Schema(description = "系统code")
+    private String systemCode;
+
+    @Schema(description = "一级菜单id数组")
+    private List<String> menus;
+}

+ 1 - 0
gateway/src/main/java/com/jzg/config/CorsConfig.java

@@ -37,6 +37,7 @@ public class CorsConfig {
         corsConfiguration.addAllowedOrigin("http://192.168.0.115:8080");
         corsConfiguration.addAllowedOrigin("http://192.168.0.18:9000");
         corsConfiguration.addAllowedOrigin("http://192.168.0.18:9001");
+        corsConfiguration.addAllowedOrigin("http://192.168.0.20:9002");
         // 允许的方法
         corsConfiguration.addAllowedMethod("*");
         // 允许的头信息

+ 18 - 0
gateway/src/main/resources/application-dev.yml

@@ -121,3 +121,21 @@ spring:
               args:
                 paths:
                   - /console/**
+        #合伙人
+        - id: partner_route
+          uri: http://localhost:8087/
+          predicates:
+            - name: MultiPath
+              args:
+                paths:
+                  - /partnerDistribution/**
+                  - /expiredCommission/**
+                  - /newAppPartner/**
+                  - /partner/commission/**
+                  - /partner/commissionDetails/**
+                  - /partnerExtractHistory/**
+                  - /partner/kickbackChange/**
+                  - /partner/liftingRecord/**
+                  - /partner/rule/**
+                  - /partner/**
+                  - /purchaseRecord/**

+ 119 - 0
partner/pom.xml

@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.jzg</groupId>
+        <artifactId>jzg</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>partner</artifactId>
+    <packaging>jar</packaging>
+    <name>organization Maven Webapp</name>
+    <url>http://maven.apache.org</url>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.jzg</groupId>
+            <artifactId>commons</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-extension</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.xuxueli</groupId>
+            <artifactId>xxl-job-core</artifactId>
+            <version>2.3.0</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>repackage</id>
+                        <phase>none</phase>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-dependencies</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>copy-dependencies</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
+                            <overWriteReleases>false</overWriteReleases>
+                            <overWriteSnapshots>false</overWriteSnapshots>
+                            <overWriteIfNewer>true</overWriteIfNewer>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <addClasspath>true</addClasspath>
+                            <classpathPrefix>lib/</classpathPrefix>
+                            <mainClass>com.jzg.PartnerApplication</mainClass> <!-- 替换为你的主类 -->
+                            <useUniqueVersions>false</useUniqueVersions>
+                        </manifest>
+                        <manifestEntries>
+                            <Class-Path>config/</Class-Path>
+                        </manifestEntries>
+                    </archive>
+                    <outputDirectory>${project.parent.basedir}/target</outputDirectory>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>3.1.0</version>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 15 - 0
partner/src/main/java/com/jzg/PartnerApplication.java

@@ -0,0 +1,15 @@
+package com.jzg;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+@SpringBootApplication
+@EnableDiscoveryClient
+@EnableFeignClients
+public class PartnerApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(PartnerApplication.class);
+    }
+}

+ 19 - 0
partner/src/main/java/com/jzg/client/OrganizationClient.java

@@ -0,0 +1,19 @@
+package com.jzg.client;
+
+
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.SysUserJzgInfo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@FeignClient(name="jzg-organization",url = "http://localhost:8084")
+public interface OrganizationClient {
+
+
+    @GetMapping("userInfo/getUserInfoById")
+    HttpResult<SysUserJzgInfo> getUserInfoById(@RequestParam String id,@RequestHeader("Authorization") String token);
+
+
+}

+ 19 - 0
partner/src/main/java/com/jzg/constants/TimeConstants.java

@@ -0,0 +1,19 @@
+package com.jzg.constants;
+
+/**
+ * @author wenks
+ * @version 0.0.2
+ * @description 时间常量
+ * @date 2023/4/23 14:15
+ */
+public class TimeConstants {
+
+    private TimeConstants() {
+        throw new IllegalStateException("Utility class");
+    }
+
+    public static final String START_TIME = "00:00:00";
+
+    public static final String END_TIME = "23:59:59";
+
+}

+ 37 - 0
partner/src/main/java/com/jzg/controller/DistributionController.java

@@ -0,0 +1,37 @@
+package com.jzg.controller;
+
+
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.vo.DistributionVo;
+import com.jzg.utils.DistributionUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Slf4j
+@RestController
+@RequestMapping("/partnerDistribution")
+public class DistributionController extends BaseController {
+
+    @Autowired
+    private BaseController baseController;
+
+
+    @PostMapping("generateDistributionData")
+    public HttpResult distribution(@RequestBody DistributionVo vo){
+        try {
+            DistributionUtils.newSaveFeeInfo(vo.getInsOrders(),vo.getOrdersCosts(),vo.getLicenseNo(),baseController.getToken());
+        }catch (Exception e){
+            e.printStackTrace();
+            log.error("合伙人分销明细数据生成失败:{}",e.getMessage());
+        }
+        return HttpResult.ok();
+    }
+
+
+
+}

+ 42 - 0
partner/src/main/java/com/jzg/controller/ExpiredCommissionController.java

@@ -0,0 +1,42 @@
+package com.jzg.controller;
+
+
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.PartnerExpiredCommission;
+import com.jzg.service.PartnerExpiredCommissionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/expiredCommission")
+public class ExpiredCommissionController extends BaseController {
+
+
+    @Autowired
+    private PartnerExpiredCommissionService expiredCommissionService;
+
+    /**
+     * 过期佣金记录 列表
+     */
+    @PostMapping("/queryPage")
+    public HttpResult queryPage(@RequestBody PartnerExpiredCommission expiredCommission){
+        return expiredCommissionService.queryPage(expiredCommission);
+    }
+
+
+
+    /**
+     * 保存
+     */
+    @PostMapping("/save")
+    public HttpResult save(@RequestBody PartnerExpiredCommission expiredCommission){
+        return expiredCommissionService.save(expiredCommission) ? HttpResult.ok() : HttpResult.error();
+    }
+
+
+}

+ 200 - 0
partner/src/main/java/com/jzg/controller/NewAppPartnerController.java

@@ -0,0 +1,200 @@
+package com.jzg.controller;
+
+
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.param.AppHomeParams;
+import com.jzg.entity.param.PartnerApp;
+import com.jzg.entity.vo.AppUserInfoVo;
+import com.jzg.service.PartnerUserService;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@RestController
+@RequestMapping("/newAppPartner")
+public class NewAppPartnerController extends BaseController {
+
+
+    @Autowired
+    private PartnerUserService partnerUserService;
+
+
+    /**
+     * (新)查询用户身份信息
+     */
+    @GetMapping("/queryIdentityInformation")
+    @Operation(summary = "查询用户身份信息")
+    public HttpResult queryIdentityInformation(){
+        return partnerUserService.queryIdentityInformation(getUserId());
+    }
+
+
+    /**
+     * (新)首页信息
+     */
+    @PostMapping("/getHomePage")
+     @Operation(summary = "APP首页信息")
+    public HttpResult getHomePage(@RequestBody AppHomeParams params){
+        params.setUserId("2014611585839464448");
+        return partnerUserService.getHomePage(params);
+    }
+
+    /**
+     * (新)首页钱包
+     */
+    @PostMapping("/getHomeWallet")
+    @Operation(summary = "APP首页信息")
+    public HttpResult getHomeWallet(@RequestBody AppHomeParams params){
+        params.setUserId(getUserId());
+        return partnerUserService.getHomeWallet(params);
+    }
+
+    /**
+     * (新)人员查询
+     */
+    @PostMapping("/selectUser")
+    @Operation(summary = "人员查询")
+    public HttpResult selectUser(@RequestBody AppHomeParams params){
+        params.setUserId(getUserId());
+        return partnerUserService.selectUser(params);
+    }
+
+
+
+
+    /**
+     * (新)统计视图数据
+     */
+    @PostMapping("/userCountVo")
+    @Operation(summary = "统计视图数据")
+    public HttpResult userCountVo(@RequestBody AppHomeParams params){
+        params.setUserId(getUserId());
+        return partnerUserService.userCountVo(params);
+    }
+
+
+
+
+    /**
+     * (新)统计视图    汇总统计数据
+     */
+    @PostMapping("/userCountStatisticsVo")
+    @Operation(summary = "统计视图数据")
+    public HttpResult userCountStatisticsVo(@RequestBody AppHomeParams params){
+        params.setUserId(getUserId());
+        return partnerUserService.userCountStatisticsVo(params);
+    }
+
+
+
+    /**
+     * (新)统计视图    占比分析
+     */
+    @PostMapping("/userCountProportionVo")
+    @Operation(summary = "统计视图数据")
+    public HttpResult userCountProportionVo(@RequestBody AppHomeParams params){
+        params.setUserId(getUserId());
+        return partnerUserService.userCountProportionVo(params);
+    }
+
+
+    /**
+     * (新)统计视图    排名数据
+     */
+    @PostMapping("/userCountRankingVo")
+    @Operation(summary = "统计视图数据")
+    public HttpResult userCountRankingVo(@RequestBody AppHomeParams params){
+        params.setUserId(getUserId());
+        return partnerUserService.userCountRankingVo(params);
+    }
+
+
+    /**
+     * (新)人员列表详情数据查询  通过管理等级查询
+     */
+    @PostMapping("/selectByGradeList")
+    @Operation(summary = "人员列表详情数据查询")
+    public HttpResult selectByGradeList(@RequestBody PartnerApp partnerApp){
+        partnerApp.setUserId(getUserId());
+        return partnerUserService.selectByGradeList(partnerApp);
+    }
+
+
+    /**
+     * (新)人员列表详情数据查询 通过用户ID  查询
+     */
+    @PostMapping("/selectByIdList")
+    @Operation(summary = "人员列表详情数据查询")
+    public HttpResult selectByIdList(@RequestBody PartnerApp partnerApp){
+        return partnerUserService.selectByIdList(partnerApp);
+    }
+
+
+    /**
+     * (新)人员列表详情数据查询 通过用户ID  查询
+     */
+    @GetMapping("/selectByIdList")
+    @Operation(summary = "人员列表详情数据查询")
+    public HttpResult selectByIdList(@RequestParam("id") String id){
+        return partnerUserService.selectByIdListData(id);
+    }
+
+
+    /**
+     * (新)个人信息
+     *
+     * @return
+     */
+    @GetMapping("/getUserInfo")
+    @Operation(summary = "APP个人信息")
+    public HttpResult<AppUserInfoVo> getUserInfo(String type) {
+
+        return HttpResult.ok("success",partnerUserService.getUserInfo(type));
+    }
+
+
+    /**
+     * (新)我的业绩
+     * @param partnerApp
+     * @return
+     */
+    @PostMapping("/myPerformance")
+    public HttpResult myPerformance(@RequestBody PartnerApp partnerApp) {
+        partnerApp.setUserId(getUserId());
+        return HttpResult.ok("success",partnerUserService.myPerformance(partnerApp));
+    }
+
+
+
+    /**
+     * (新)我的业绩  详情
+     * @param ordersNo
+     * @return
+     */
+    @GetMapping("/myPerformanceDetails")
+    public HttpResult myPerformance(@RequestParam("ordersNo") String ordersNo) {
+        return partnerUserService.myPerformanceDetails(ordersNo,getUserId());
+    }
+
+
+    /**
+     * (新APP)APP账户金额
+     *
+     * @return
+     */
+    @GetMapping("/newGetFee")
+    @Operation(summary = "APP账户金额")
+    public HttpResult newGetFee() {
+        return HttpResult.ok("success",this.partnerUserService.newGetFee(getUserId()));
+    }
+
+
+
+
+
+
+
+}

+ 35 - 0
partner/src/main/java/com/jzg/controller/PartnerCommissionController.java

@@ -0,0 +1,35 @@
+package com.jzg.controller;
+
+
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.vo.CommissionRulesVo;
+import com.jzg.service.PartnerCommissionService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+@RestController
+@RequestMapping("/partner/commission")
+@RequiredArgsConstructor
+public class PartnerCommissionController {
+
+
+    @Autowired
+    private PartnerCommissionService commissionService;
+
+
+    @PostMapping("/save")
+    public HttpResult save(@RequestBody CommissionRulesVo rulesVo) {
+        return HttpResult.ok(commissionService.save(rulesVo) > 0 ? "保存成功" : "保存失败");
+    }
+
+
+
+    @GetMapping("/query")
+    public HttpResult queryAll() {
+        return HttpResult.ok(commissionService.queryAll());
+    }
+
+
+}

+ 47 - 0
partner/src/main/java/com/jzg/controller/PartnerCommissionDetailsController.java

@@ -0,0 +1,47 @@
+package com.jzg.controller;
+
+
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.param.PartnerDetailsParam;
+import com.jzg.service.PartnerPremiumDetailsService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * 佣金明细
+ */
+@RestController
+@RequestMapping("/partner/commissionDetails")
+@RequiredArgsConstructor
+public class PartnerCommissionDetailsController extends BaseController {
+
+    @Autowired
+    private PartnerPremiumDetailsService partnerPremiumDetailsService;
+
+
+    @PostMapping("/queryPage")
+    public HttpResult queryPage(@RequestBody PartnerDetailsParam detailsParam){
+        return HttpResult.ok(partnerPremiumDetailsService.queryPage(detailsParam));
+    }
+
+
+    /**
+     * 查询过期锁定记录
+     * @param detailsParam
+     * @return
+     */
+    @PostMapping("queryExpiredLockRecords")
+    public HttpResult queryExpiredLockRecords(@RequestBody PartnerDetailsParam detailsParam){
+        detailsParam.setUserId(getUserId());
+        return HttpResult.ok(partnerPremiumDetailsService.queryExpiredLockRecords(detailsParam));
+    }
+
+
+
+}

+ 155 - 0
partner/src/main/java/com/jzg/controller/PartnerExtractHistoryController.java

@@ -0,0 +1,155 @@
+package com.jzg.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.PartnerExtractHistory;
+import com.jzg.entity.PartnerPartnerAccount;
+import com.jzg.entity.param.PartnerRuleEntity;
+import com.jzg.mapper.PartnerPartnerAccountMapper;
+import com.jzg.service.PartnerExtractHistoryService;
+import com.jzg.service.PartnerLiftingRecordService;
+import com.jzg.service.PartnerRuleService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * 提现记录
+ */
+@Slf4j
+@RestController
+@RequestMapping("/partnerExtractHistory")
+public class PartnerExtractHistoryController extends BaseController {
+
+
+    @Autowired
+    private PartnerExtractHistoryService partnerExtractHistoryService;
+
+    @Autowired
+    private PartnerPartnerAccountMapper partnerPartnerAccountMapper;
+
+    @Autowired
+    private PartnerRuleService ruleService;
+
+    @Autowired
+    private PartnerLiftingRecordService liftingRecordService;
+
+    @PostMapping("/query")
+    public HttpResult query(@RequestBody PartnerExtractHistory extractHistory){
+        extractHistory.setUserId(getUserId());
+        return HttpResult.ok(partnerExtractHistoryService.queryPage(extractHistory));
+    }
+
+    /**
+     * 提现
+     * @param extractHistory
+     * @return
+     */
+    @PostMapping("/extractRecords")
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult extractRecords(@RequestBody PartnerExtractHistory extractHistory){
+//        if (StringUtils.isEmpty(extractHistory.getGrade())){
+//            return HttpResult.error("用户等级不能为空");
+//        }
+//        if (null != extractHistory.getAmount() &&extractHistory.getAmount().compareTo(new BigDecimal("0")) <= 0){
+//            return HttpResult.error("提现金额不能小于0");
+//        }
+//        String userId = getUserId();
+//        PartnerPartnerAccount partnerAccount = partnerPartnerAccountMapper.selectOne(new LambdaQueryWrapper<PartnerPartnerAccount>()
+//                .eq(PartnerPartnerAccount::getUserId, userId)
+//                .eq(PartnerPartnerAccount::getGrade, extractHistory.getGrade()));
+//        if (null == partnerAccount){
+//            return HttpResult.error("账号余额不足");
+//        }
+//        if (partnerAccount.getCashFee().compareTo(extractHistory.getAmount()) == -1){
+//            return HttpResult.error("账号余额不足");
+//        }
+//        extractHistory.setUserId(userId);
+//        boolean save = partnerExtractHistoryService.save(extractHistory);
+//        if (save){
+//            SysPartnerAccount account = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+//                    .eq(SysPartnerAccount::getUserId,userId));
+//            if (account != null){
+//                account.setExtractFee(account.getExtractFee().add(extractHistory.getAmount()));
+//                account.setCashFee(account.getCashFee().add(extractHistory.getAmount()));
+//                sysPartnerAccountMapper.updateById(account);
+//            }else {
+//                account = new SysPartnerAccount();
+//                account.setUserId(userId);
+//                account.setExtractFee(extractHistory.getAmount());
+//                account.setHistoryFee(new BigDecimal("0"));
+//                account.setCashFee(extractHistory.getAmount());
+//                account.setCreateTime(new Date());
+//                sysPartnerAccountMapper.insert( account);
+//            }
+//            partnerAccount.setHistoryFee(partnerAccount.getHistoryFee().add(extractHistory.getAmount()));
+//            partnerAccount.setCashFee(partnerAccount.getCashFee().subtract(extractHistory.getAmount()));
+//            partnerPartnerAccountMapper.updateById(partnerAccount);
+//        }
+        return HttpResult.ok(true ? "提取成功" : "提取失败");
+    }
+
+
+    /**
+     * 未转入的金额
+     * @return
+     */
+    @GetMapping("/queryExtractRecords")
+    public HttpResult queryExtractRecords(){
+        List<PartnerPartnerAccount> partnerPartnerAccounts = partnerPartnerAccountMapper.selectList(new LambdaQueryWrapper<PartnerPartnerAccount>()
+                .eq(PartnerPartnerAccount::getUserId,getUserId()));
+
+        partnerPartnerAccounts.stream().forEach(partnerPartnerAccount -> {
+            partnerPartnerAccount.setCashFee(partnerPartnerAccount.getCashFee().subtract(partnerPartnerAccount.getExpiredAmount()));
+        });
+
+        List<Map.Entry<Integer, BigDecimal>> collect = partnerPartnerAccounts.stream()
+                .collect(Collectors.groupingBy(
+                        PartnerPartnerAccount::getGrade,
+                        Collectors.reducing(
+                                BigDecimal.ZERO,
+                                PartnerPartnerAccount::getCashFee,
+                                BigDecimal::add
+                        )
+                ))
+                .entrySet().stream()
+                .sorted(Map.Entry.comparingByKey())
+                .collect(Collectors.toList());
+        List<JSONObject> list = new ArrayList<>();
+        BigDecimal total = BigDecimal.ZERO;
+        for (Map.Entry<Integer, BigDecimal> entry : collect) {
+
+            BigDecimal lockCommission = liftingRecordService.queryLockCommission(getUserId(),entry.getKey().toString());
+
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("grade", entry.getKey().toString());
+            if (null != lockCommission){
+                BigDecimal subtract = entry.getValue().subtract(lockCommission);
+                total = total.add(subtract);
+                jsonObject.put("cashFee", subtract.toString());
+            }else {
+                total = total.add(entry.getValue());
+                jsonObject.put("cashFee", entry.getValue().toString());
+            }
+            PartnerRuleEntity ruleEntity = ruleService.selectByGrade(entry.getKey().toString());
+            jsonObject.put("gradeName", ruleEntity.getGradeName());
+            list.add(jsonObject);
+        }
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("list", list);
+        map.put("total", total);
+        return HttpResult.ok(map);
+    }
+
+}

+ 38 - 0
partner/src/main/java/com/jzg/controller/PartnerKickbackChangeController.java

@@ -0,0 +1,38 @@
+package com.jzg.controller;
+
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.PartnerKickbackChange;
+import com.jzg.entity.param.PartnerKickbackChangeParam;
+import com.jzg.service.PartnerKickbackChangeService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 佣金变更记录
+ */
+@RestController
+@RequestMapping("/partner/kickbackChange")
+@RequiredArgsConstructor
+public class PartnerKickbackChangeController extends BaseController {
+
+    @Autowired
+    private PartnerKickbackChangeService kickbackChangeService;
+
+
+    @PostMapping("queryPage")
+    public HttpResult queryPage(@RequestBody PartnerKickbackChangeParam changeParam){
+        return HttpResult.ok(kickbackChangeService.queryPage(changeParam));
+    }
+
+
+    @PostMapping("save")
+    public HttpResult save(@RequestBody PartnerKickbackChange kickbackChange){
+        return kickbackChangeService.saveKickbackChange(kickbackChange);
+    }
+
+}

+ 86 - 0
partner/src/main/java/com/jzg/controller/PartnerLiftingRecordController.java

@@ -0,0 +1,86 @@
+package com.jzg.controller;
+
+
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.PartnerLiftingRecord;
+import com.jzg.entity.PartnerRecordApper;
+import com.jzg.entity.param.LiftingRecordAudit;
+import com.jzg.entity.param.PartnerLiftingRecordParam;
+import com.jzg.service.PartnerLiftingRecordService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 升降记录
+ */
+@RestController
+@RequestMapping("/partner/liftingRecord")
+@RequiredArgsConstructor
+public class PartnerLiftingRecordController extends BaseController {
+
+    @Autowired
+    private PartnerLiftingRecordService liftingRecordService;
+
+
+    @PostMapping("/save")
+    public HttpResult save(@RequestBody PartnerLiftingRecord liftingRecord) {
+        return liftingRecordService.saveLiftingRecord(liftingRecord);
+    }
+
+
+
+
+    @PostMapping("/queryPage")
+    public HttpResult queryPage(@RequestBody PartnerLiftingRecordParam recordParam) {
+        return HttpResult.ok(liftingRecordService.queryPage(recordParam));
+    }
+
+    /**
+     * 升级  审核、驳回
+     * @param audit
+     * @return
+     */
+    @PostMapping("/audit")
+    public HttpResult audit(@RequestBody LiftingRecordAudit audit) {
+        audit.setAuditUser(getUserName());
+        return liftingRecordService.audit(audit);
+    }
+
+
+    /**
+     * 降级    审核、驳回
+     * @param audit
+     * @return
+     */
+    @PostMapping("/downgradeAudit")
+    public HttpResult downgradeAudit(@RequestBody LiftingRecordAudit audit) {
+        audit.setAuditUser(getUserName());
+        return liftingRecordService.downgradeAudit(audit);
+    }
+
+    /**
+     * 解锁等级查询金额
+     * @param grade
+     * @return
+     */
+    @GetMapping("/unlockLevel")
+    public HttpResult unlockLevel(@RequestParam("grade")String grade) {
+        return liftingRecordService.unlockLevel(grade);
+    }
+
+
+
+
+    /**
+     * 确认解锁
+     * @param recordApper
+     * @return
+     */
+    @PostMapping("/confirmUnlocking")
+    public HttpResult confirmUnlocking(@RequestBody PartnerRecordApper recordApper) {
+        return liftingRecordService.confirmUnlocking(recordApper);
+    }
+
+}

+ 57 - 0
partner/src/main/java/com/jzg/controller/PartnerRuleController.java

@@ -0,0 +1,57 @@
+package com.jzg.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.param.PartnerRuleEntity;
+import com.jzg.service.PartnerRuleService;
+import com.jzg.utils.ConditionUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 等级规则
+ */
+
+@RestController
+@RequestMapping("/partner/rule")
+@RequiredArgsConstructor
+public class PartnerRuleController {
+
+    @Autowired
+    private PartnerRuleService partnerRuleService;
+
+
+    @PostMapping("/save")
+    public HttpResult save(@RequestBody List<PartnerRuleEntity> ruleEntityList) {
+        return HttpResult.ok(partnerRuleService.save(ruleEntityList) > 0 ? "保存成功" : "保存失败");
+    }
+
+
+    @GetMapping("/query")
+    public HttpResult query() {
+        return HttpResult.ok(partnerRuleService.queryAll());
+    }
+
+
+    /**
+     * 获取等级规则名称
+     * @return
+     */
+    @GetMapping("/queryGradeName")
+    public HttpResult queryGradeName() {
+        return HttpResult.ok(partnerRuleService.queryGradeName());
+    }
+
+    @GetMapping("/verifyUpgradeConditions")
+    public HttpResult verifyUpgradeConditions(@RequestParam("grade") String grade) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("升级", ConditionUtils.upgradeConditions(grade));
+        jsonObject.put("考核", ConditionUtils.assessmentRules(grade));
+        return HttpResult.ok(jsonObject);
+    }
+
+}

+ 232 - 0
partner/src/main/java/com/jzg/controller/PartnerUserController.java

@@ -0,0 +1,232 @@
+package com.jzg.controller;
+
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.vo.SysUserVo;
+import com.jzg.entity.PartnerUser;
+import com.jzg.entity.param.QueryVo;
+import com.jzg.entity.param.UserGradeParam;
+import com.jzg.service.PartnerUserService;
+import com.jzg.utils.ContactQrCodeUtils;
+import com.jzg.utils.TimedTaskUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+
+/**
+ * 合伙人
+ */
+@RestController
+@RequestMapping("/partner")
+@RequiredArgsConstructor
+public class PartnerUserController extends BaseController {
+
+
+    @Autowired
+    private PartnerUserService partnerUserService;
+
+
+    @GetMapping("isTherePartner")
+    public HttpResult isTherePartner(@RequestParam String userId){
+        return partnerUserService.isTherePartner(userId);
+    }
+
+    @PostMapping("addPartnerRule")
+    public HttpResult addPartnerRule(@RequestBody SysUserVo sysUserVo){
+        return partnerUserService.addPartnerRule(sysUserVo,sysUserVo.getGradeList());
+    }
+
+    @GetMapping("partnerDetails")
+    public HttpResult partnerDetails(@RequestParam String userId){
+        return partnerUserService.partnerDetails(userId);
+    }
+
+    @GetMapping("searchUserStudios")
+    public PartnerUser searchUserStudios(@RequestParam String userId){
+        return partnerUserService.searchUserStudios(userId);
+    }
+
+
+    @GetMapping("enableDisable")
+    public HttpResult enableDisable(@RequestParam("userId") String userId,@RequestParam("status")boolean status ){
+        return partnerUserService.enableDisable(userId, status);
+    }
+
+
+    @PostMapping("/save")
+    public HttpResult add(@RequestBody PartnerUser partnerUser) {
+        return HttpResult.ok(partnerUserService.save(partnerUser) ? "添加成功" : "添加失败");
+    }
+
+
+    @PostMapping("/update")
+    public HttpResult update(@RequestBody PartnerUser partnerUser) {
+        return HttpResult.ok(partnerUserService.updateById(partnerUser)  ? "修改成功" : "修改失败");
+    }
+
+
+
+    @PostMapping("/queryPage")
+    public HttpResult queryPage(@RequestBody QueryVo queryVo) {
+        return HttpResult.ok(partnerUserService.queryPage(queryVo));
+    }
+
+    /**
+     * 用户关系查询
+     * @param id
+     * @returns
+     */
+    @GetMapping("relationalQuery")
+    public HttpResult relationalQuery(@RequestParam("id") String id) {
+        return HttpResult.ok(partnerUserService.relationalQuery(id));
+    }
+
+
+    /**
+     * 选择上级推荐人
+     * @param level
+     * @return
+     */
+    @GetMapping("selectRecommender")
+    public HttpResult selectRecommender(@RequestParam(value = "level",required = false) String level) {
+        return HttpResult.ok(partnerUserService.selectRecommender(level));
+    }
+
+
+    /**
+     * 验证是否满足升级条件
+     * @param userGradeParam
+     * @return
+     */
+    @PostMapping("/verifyUpgradeConditions")
+    public HttpResult verifyUpgradeConditions(@RequestBody UserGradeParam userGradeParam) {
+        userGradeParam.setId(getUserId());
+        return partnerUserService.verifyUpgradeConditions(userGradeParam);
+    }
+
+
+    /**
+     * 提交合伙人变更申请
+     * @param userGradeParam
+     * @return
+     */
+    @PostMapping("submitLiftingRecord")
+    public HttpResult submitLiftingRecord(@RequestBody UserGradeParam userGradeParam) {
+        userGradeParam.setId(getUserId());
+        return partnerUserService.submitLiftingRecord(userGradeParam);
+    }
+
+
+    /**
+     * 合伙人头像修改
+     * @param partnerUser
+     * @return
+     */
+    @PostMapping("avatarUpdate")
+    public HttpResult avatarUpdate(@RequestBody PartnerUser partnerUser) {
+        partnerUser.setUserId(getUserId());
+        return partnerUserService.avatarUpdate(partnerUser);
+    }
+
+    /**
+     * 我的佣金比例
+     * @return
+     */
+    @GetMapping("commissionRate")
+    public HttpResult commissionRate(@RequestParam("grade") String grade) {
+        return partnerUserService.commissionRate(getUserId(),grade);
+    }
+
+
+    /**
+     * 我的佣金比例
+     * @return
+     */
+    @GetMapping("myCommissionRate")
+    public HttpResult myCommissionRate() {
+        return partnerUserService.myCommissionRate(getUserId());
+    }
+
+
+    /**
+     * 查询当前用户的身份
+     * @param userId
+     * @return
+     */
+    @GetMapping("getUserGradeList")
+    public HttpResult getUserGradeList(@RequestParam(value = "userId",required = false) String userId) {
+        return HttpResult.ok(partnerUserService.getUserGradeList(userId));
+    }
+
+    /**
+     * 查询当前用户的身份
+     * @param userId
+     * @return
+     */
+    @GetMapping("getUserGradeListMap")
+    public HttpResult getUserGradeListMap() {
+        return HttpResult.ok(partnerUserService.getUserGradeListMap(getUserId()));
+    }
+
+
+
+    /**
+     * 新增用户身份
+     * @param > map
+     * @return
+     */
+    @PostMapping("addUserIdentity")
+    public HttpResult addUserIdentity(@RequestBody Map<String,Object> map) {
+        return partnerUserService.addUserIdentity(map);
+    }
+
+    /**
+     * 未降级完成任务
+     * @param grade
+     * @return
+     */
+    @GetMapping("queryDowngradeTask")
+    public HttpResult queryDowngradeTask(@RequestParam(value = "grade") String grade) {
+        return partnerUserService.queryDowngradeTask(grade,getUserId());
+    }
+
+
+    /**
+     * 已降级完成任务
+     * @param grade
+     * @return
+     */
+    @GetMapping("degradedTask")
+    public HttpResult degradedTask(@RequestParam(value = "grade") String grade) {
+        return partnerUserService.degradedTask(grade,getUserId());
+    }
+
+
+
+    /**
+     * 已降级完成任务
+     * @return
+     */
+    @GetMapping("checkCommissionExpireTime")
+    public void checkCommissionExpireTime() {
+         SpringUtil.getBean(TimedTaskUtils.class).checkCommissionExpireTime();
+    }
+
+
+
+    /**
+     * 联系客服
+     * @return
+     */
+    @GetMapping("contactCustomerService")
+    public HttpResult contactCustomerService() {
+        return HttpResult.ok(ContactQrCodeUtils.getContactQrCode());
+    }
+
+
+}

+ 52 - 0
partner/src/main/java/com/jzg/controller/PurchaseRecordController.java

@@ -0,0 +1,52 @@
+package com.jzg.controller;
+
+
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.PartnerPurchaseRecord;
+import com.jzg.service.PurchaseRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 购买记录
+ */
+@Slf4j
+@RestController
+@RequestMapping("/purchaseRecord")
+public class PurchaseRecordController extends BaseController {
+
+
+    @Autowired
+    private PurchaseRecordService purchaseRecordService;
+
+
+    /**
+     * 购买记录 列表
+     */
+    @PostMapping("/queryPage")
+    public HttpResult queryPage(@RequestBody PartnerPurchaseRecord purchaseRecord){
+        return purchaseRecordService.queryPage(purchaseRecord);
+    }
+
+
+
+    /**
+     * 购买记录保存
+     */
+    @PostMapping("/save")
+    public HttpResult save(@RequestBody PartnerPurchaseRecord purchaseRecord){
+        return purchaseRecordService.save(purchaseRecord) ? HttpResult.ok() : HttpResult.error();
+    }
+
+
+    /**
+     * 查看凭证
+     */
+    @GetMapping("/viewVouchers")
+    public HttpResult viewVouchers(@RequestParam("id")String id){
+        return purchaseRecordService.viewVouchers(id);
+    }
+
+}

+ 59 - 0
partner/src/main/java/com/jzg/entity/PartnerAttribute.java

@@ -0,0 +1,59 @@
+package com.jzg.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jzg.commons.core.base.PartnerBaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@TableName("partner_attribute")
+public class PartnerAttribute extends PartnerBaseModel {
+
+    private String id;
+
+    @Schema(description = "最小值")
+    @TableField("min")
+    private String min;
+
+    @Schema(description = "最大值")
+    @TableField("max")
+    private String max;
+
+    @Schema(description = "0-满足任意一条;1-全部满足")
+    @TableField("satisfy")
+    private int satisfy;
+
+    @Schema(description = "是否选中")
+    private boolean checked;
+
+    @Schema(description = "考核规则id")
+    @TableField("rule_id")
+    private String ruleId;
+
+    @Schema(description = "固定天数")
+    private String fixedDays;
+
+    @Schema(description = "任务天数")
+    private String taskDays;
+
+    @Schema(description = "考核周期 1-不限期;2-固定天数;3-固定日期")
+    @TableField("cycle")
+    private String cycle;
+
+    @Schema(description = "考核条件1-邀请合伙人达;2-下属成员出单保费")
+    @TableField("requirement")
+    private String requirement;
+
+    @Schema(description = "保级策略1-不保级;2-任务保级;3-购买保级")
+    @TableField("strategy")
+    private String strategy;
+
+    @Schema(description = "1-考核周期;2-考核条件;3-保级策略")
+    private int type;
+
+    @Schema(description = "考核完成度")
+    @TableField(exist = false)
+    private String achieve;
+
+}

+ 49 - 0
partner/src/main/java/com/jzg/entity/PartnerCommissionRules.java

@@ -0,0 +1,49 @@
+package com.jzg.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.jzg.commons.core.base.PartnerBaseModel;
+import com.jzg.entity.vo.PartnerRulesRatio;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PartnerCommissionRules extends PartnerBaseModel {
+
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "1-管理人佣金比例;2-合伙人佣金比例")
+    private String type;
+
+    @Schema(description = "创始人佣金比例")
+    private String founderRatio;
+
+    @Schema(description = "共享比例")
+    private String sharedRatio;
+
+    @Schema(description = "默认佣金比例")
+    private String defaultRatio;
+
+    @Schema(description = "0-不限期;2-固定天数;3-固定日期")
+    private String validityPeriod;
+
+    @Schema(description = "开始时间")
+    private String startDate;
+
+    @Schema(description = "结束时间")
+    private String endDate;
+
+    @Schema(description = "固定天数")
+    private int fixedDays;
+
+    @Schema(description = "考核规则")
+    @TableField(exist = false)
+    private List<PartnerRulesRatio> rulesRatioList;
+
+
+
+}

+ 110 - 0
partner/src/main/java/com/jzg/entity/PartnerExpiredCommission.java

@@ -0,0 +1,110 @@
+package com.jzg.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class PartnerExpiredCommission extends PageRequest {
+
+    @TableId(value = "id",type = IdType.ASSIGN_ID)
+    private String id;
+
+    @Schema(description = "姓名")
+    @TableField(value = "name")
+    private String name;
+
+    @Schema(description = "手机号")
+    @TableField(value = "mobile")
+    private String mobile;
+
+    @Schema(description = "工号")
+    @TableField(value = "user_id")
+    private String userId;
+
+    @Schema(description = "机构ID")
+    @TableField(value = "dept_id")
+    private String deptId;
+
+    @Schema(description = "机构名称")
+    @TableField(value = "dept_name")
+    private String deptName;
+
+    @Schema(description = "等级")
+    @TableField(value = "grade")
+    private String grade;
+
+    @Schema(description = "变更后等级")
+    @TableField(value = "grade_after")
+    private String gradeAfter;
+
+    @Schema(description = "锁定佣金")
+    @TableField(value = "lock_commission")
+    private BigDecimal lockCommission;
+
+    @Schema(description = "降级时间")
+    @TableField(value = "downgrade_time")
+    private Date downgradeTime;
+
+    @Schema(description = "过期时间")
+    @TableField(value = "expiration")
+    private Date expiration;
+
+    /**
+     * 创建者
+     */
+    @TableField(value = "create_by")
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    @TableField(value = "update_by")
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "update_time")
+    private Date updateTime;
+
+    /**
+     * 更新时间
+     */
+    @TableField(value = "data_time")
+    private String dataTime;
+
+
+    /**
+     * 当前页码
+     */
+    @TableField(exist = false)
+    private int pageNum = 1;
+    /**
+     * 每页数量
+     */
+    @TableField(exist = false)
+    private int pageSize = 10;
+
+    @TableField(exist = false)
+    private List<String> startTime;
+
+
+}

+ 39 - 0
partner/src/main/java/com/jzg/entity/PartnerExtractHistory.java

@@ -0,0 +1,39 @@
+package com.jzg.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.core.base.PartnerBaseModel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+@Data
+public class PartnerExtractHistory extends PartnerBaseModel {
+
+    private String id;
+
+    private String userId;
+
+    private String grade;
+
+    private BigDecimal amount;
+
+    @TableField(exist = false)
+    private String startTime;
+
+    @TableField(exist = false)
+    private String endTime;
+
+    @TableField(exist = false)
+    private Integer pages;
+
+    @TableField(exist = false)
+    private Integer size;
+
+    public Page getPage(){
+        return new Page(pages,size);
+    }
+
+
+}

+ 50 - 0
partner/src/main/java/com/jzg/entity/PartnerKickbackChange.java

@@ -0,0 +1,50 @@
+package com.jzg.entity;
+
+
+import com.jzg.commons.core.base.PartnerBaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class PartnerKickbackChange extends PartnerBaseModel {
+
+    private String id;
+
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "工号")
+    private String userId;
+
+    @Schema(description = "部门id")
+    private String deptId;
+
+    @Schema(description = "部门名称")
+    private String deptName;
+
+    @Schema(description = "用户等级")
+    private String userGrade;
+
+    @Schema(description = "原佣金")
+    private BigDecimal originalCommission;
+
+    @Schema(description = "变更后佣金")
+    private BigDecimal afterChange;
+
+    @Schema(description = "变更原因")
+    private String changeReason;
+
+    @Schema(description = "变更时间")
+    private Date changeTime;
+
+
+
+
+
+}

+ 103 - 0
partner/src/main/java/com/jzg/entity/PartnerLiftingRecord.java

@@ -0,0 +1,103 @@
+package com.jzg.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class PartnerLiftingRecord{
+
+    private String id;
+
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "工号")
+    private String userId;
+
+    @Schema(description = "部门id")
+    private String deptId;
+
+    @Schema(description = "部门名称")
+    private String deptName;
+
+    @Schema(description = "类型0-升级;1-降级")
+    private String type;
+
+    @Schema(description = "原等级")
+    private String originalLevel;
+
+    @Schema(description = "变更后等级")
+    private String afterChange;
+
+    @Schema(description = "考核周期")
+    private String cycle;
+
+    @Schema(description = "升级策略")
+    private String upgradeStrategy;
+
+    @Schema(description = "0-待审核;1-审核通过;2-审核不通过")
+    private int auditStatus;
+
+    @Schema(description = "审核时间")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date auditTime;
+
+    @Schema(description = "审核用户")
+    private String auditUser;
+
+    @Schema(description = "驳回原因")
+    private String rejectReason;
+
+    @Schema(description = "升级条件")
+    private String conditions;
+
+    @Schema(description = "考核规则")
+    private String rules;
+
+    @Schema(description = "0-升级解锁;1-降级解锁")
+    private Integer upgradeType;
+
+
+    /**
+     * 创建者
+     */
+    @TableField(value = "create_by")
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    @TableField(value = "update_by")
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "update_time")
+    private Date updateTime;
+
+    private String systemCode;
+
+    /**
+     * 冻结金额
+     */
+    @TableField(exist = false)
+    private String frozenAmount;
+
+}

+ 73 - 0
partner/src/main/java/com/jzg/entity/PartnerPartnerAccount.java

@@ -0,0 +1,73 @@
+package com.jzg.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jzg.commons.core.base.PartnerBaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class PartnerPartnerAccount extends PartnerBaseModel {
+
+    /**
+     * 自增id
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户id
+     */
+    private String userId;
+    /**
+     * 总保费
+     */
+    @Schema(description = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 抽成费用
+     */
+    @Schema(description = "抽成费用")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 已提现抽成费用
+     */
+    @Schema(description = "已提现抽成费用")
+    private BigDecimal historyFee;
+    /**
+     * 可提现抽成费用
+     */
+    @Schema(description = "可提现抽成费用")
+    private BigDecimal cashFee;
+
+
+    /**
+     * 可提现抽成费用
+     */
+    private BigDecimal expiredAmount;
+
+    private Integer grade;
+
+    /**
+     * 冻结
+     */
+    @TableField(exist = false)
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal freeze;
+
+    /**
+     * 过期
+     */
+    @TableField(exist = false)
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal expired;
+
+}

+ 130 - 0
partner/src/main/java/com/jzg/entity/PartnerPremiumDetails.java

@@ -0,0 +1,130 @@
+package com.jzg.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jzg.commons.core.base.PartnerBaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+@Data
+public class PartnerPremiumDetails extends PartnerBaseModel {
+
+
+    /**
+     * 自增id
+     */
+    @Schema(description = "自增id")
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户id
+     */
+    @Schema(description = "用户id")
+    private String userId;
+    /**
+     * 用户name
+     */
+    @Schema(description = "用户name")
+    private String userName;
+
+    /**
+     * 用户id
+     */
+    @Schema(description = "代理人id")
+    private String issuerId;
+    /**
+     * 用户name
+     */
+    @Schema(description = "代理人name")
+    private String issuerName;
+    /**
+     * 订单号
+     */
+    @Schema(description = "订单号")
+    private String orderno;
+    /**
+     * 子订单id
+     */
+    @Schema(description = "子订单id")
+    private String companyId;
+
+    /**
+     * 总保费
+     */
+    @Schema(description = "总保费")
+    private BigDecimal sumpremium;
+
+    /**
+     * 交强险费用
+     */
+    @Schema(description = "交强险费用")
+    private BigDecimal jqpremium;
+
+    /**
+     * 商业险费用
+     */
+    @Schema(description = "商业险费用")
+    private BigDecimal sypremium;
+
+    /**
+     * 驾意险费用
+     */
+    @Schema(description = "驾意险费用")
+    private BigDecimal jypremium;
+    /**
+     * 抽层比例
+     */
+    @Schema(description = "抽层比例")
+    private String proportional;
+
+    /**
+     * 佣金
+     */
+    @Schema(description = "佣金")
+    private BigDecimal extractFee;
+
+
+    /**
+     * 状态(0:未审核 1:审核通过)
+     */
+    @Schema(description = "状态(0:未审核 1:审核通过)")
+    private Integer status;
+    /**
+     * 类型:1前线人员 2后线人员
+     */
+    @Schema(description = "类型:1前线人员 2后线人员")
+    private Integer type;
+    /**
+     * 行业领域 1:汽车-车险
+     */
+    @Schema(description = "行业领域 1:汽车-车险")
+    private Integer industrySector;
+
+    /**
+     * 车牌号
+     */
+    @Schema(description = "车牌号")
+    private String licenseno;
+
+    private int appStatus;
+
+    /**
+     * 费用来源(1,2,3,4,5级)
+     */
+    @Schema(description = "费用来源(1,2,3,4,5级)")
+    private Integer source;
+
+    @TableField(exist = false)
+    private String mobile;
+
+    @TableField(exist = false)
+    private String deptId;
+
+
+
+
+}

+ 83 - 0
partner/src/main/java/com/jzg/entity/PartnerPurchaseRecord.java

@@ -0,0 +1,83 @@
+package com.jzg.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.core.base.PartnerBaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class PartnerPurchaseRecord extends  PartnerBaseModel {
+
+    @TableId(value = "id",type = IdType.ASSIGN_ID)
+    private String id;
+
+    @Schema(description = "姓名")
+    @TableField(value = "name")
+    private String name;
+
+    @Schema(description = "手机号")
+    @TableField(value = "mobile")
+    private String mobile;
+
+    @Schema(description = "工号")
+    @TableField(value = "user_id")
+    private String userId;
+
+    @Schema(description = "机构ID")
+    @TableField(value = "dept_id")
+    private String deptId;
+
+    @Schema(description = "机构名称")
+    @TableField(value = "dept_name")
+    private String deptName;
+
+    @Schema(description = "等级")
+    @TableField(value = "grade")
+    private String grade;
+
+    @Schema(description = "变更后等级")
+    @TableField(value = "grade_after")
+    private String gradeAfter;
+
+    @Schema(description = "锁定佣金")
+    @TableField(value = "lock_commission")
+    private BigDecimal lockCommission;
+
+
+    @Schema(description = "购买时间")
+    @TableField(value = "purchasing_time")
+    private Date purchasingTime;
+
+
+    @Schema(description = "支付附属表ID")
+    @TableField(value = "apper_id")
+    private String apperId;
+
+    /**
+     * 当前页码
+     */
+    @TableField(exist = false)
+    private int pages = 1;
+    /**
+     * 每页数量
+     */
+    @TableField(exist = false)
+    private int size = 10;
+
+    @TableField(exist = false)
+    private List<String> startTime;
+
+
+    public Page getPage(){
+        return new Page(pages,size);
+    }
+
+}

+ 38 - 0
partner/src/main/java/com/jzg/entity/PartnerRatio.java

@@ -0,0 +1,38 @@
+package com.jzg.entity;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class PartnerRatio {
+
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "id")
+    private BigDecimal min;
+
+    @Schema(description = "id")
+    private BigDecimal max;
+
+    @Schema(description = "人员")
+    private boolean ry;
+
+    @Schema(description = "保费")
+    private boolean bf;
+
+    @Schema(description = "个人")
+    private boolean gr;
+
+    @Schema(description = "id")
+    private String rulesRatioId;
+
+
+
+
+
+}

+ 26 - 0
partner/src/main/java/com/jzg/entity/PartnerRecordApper.java

@@ -0,0 +1,26 @@
+package com.jzg.entity;
+
+
+import com.jzg.commons.core.base.PartnerBaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class PartnerRecordApper extends PartnerBaseModel {
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "file_id")
+    private String fileId;
+
+    @Schema(description = "payment_amount")
+    private BigDecimal paymentAmount;
+
+    @Schema(description = "record_id")
+    private String recordId;
+
+
+}

+ 46 - 0
partner/src/main/java/com/jzg/entity/PartnerRule.java

@@ -0,0 +1,46 @@
+package com.jzg.entity;
+
+
+import com.jzg.commons.core.base.PartnerBaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class PartnerRule extends PartnerBaseModel {
+
+    private String id;
+
+    @Schema(description = "升级策略1-支持;2-不支持")
+    private int upgrade;
+
+    @Schema(description = "保级策略1-支持;2-不支持")
+    private int relegation;
+
+    @Schema(description = "等级名称")
+    private String  gradeName;
+
+    @Schema(description = "等级")
+    private Integer  grade;
+
+    @Schema(description = "考核是否满足")
+    private String  appraise;
+
+    @Schema(description = "保级是否满足")
+    private String  relSatisfy;
+
+
+    @Schema(description = "保级策略1-不保级;2-任务保级;3-购买保级")
+    private String strategy;
+
+    @Schema(description = "天数")
+    private Integer khDays;
+
+    @Schema(description = "0-勾选降级;1-未勾选")
+    private boolean fallTick;
+
+    @Schema(description = "购买保级金额")
+    private BigDecimal fallAmount;
+
+}

+ 101 - 0
partner/src/main/java/com/jzg/entity/PartnerUser.java

@@ -0,0 +1,101 @@
+package com.jzg.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jzg.commons.core.base.PartnerBaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+@Data
+public class PartnerUser extends PartnerBaseModel {
+
+    @TableId(value = "id",type = IdType.ASSIGN_ID)
+    private String id;
+
+    @Schema(description = "姓名")
+    @TableField(value = "name")
+    private String name;
+
+    @Schema(description = "手机号")
+    @TableField(value = "mobile")
+    private String mobile;
+
+    @Schema(description = "工号")
+    @TableField(value = "user_id")
+    private String userId;
+
+    @Schema(description = "机构ID")
+    @TableField(value = "dept_id")
+    private String deptId;
+
+    @Schema(description = "机构名称")
+    @TableField(value = "dept_name")
+    private String deptName;
+
+    @Schema(description = "等级")
+    @TableField(value = "grade")
+    private Integer grade;
+
+    @Schema(description = "佣金比例")
+    @TableField(value = "commission_rate")
+    private BigDecimal commissionRate;
+
+    @Schema(description = "邀请人")
+    @TableField(value = "referrer_id")
+    private String referrerId;
+
+    @Schema(description = "邀请人")
+    @TableField(value = "referrer_name")
+    private String referrerName;
+
+    @Schema(description = "头像")
+    @TableField(value = "picture_url")
+    private String pictureUrl;
+
+
+    @Schema(description = "推荐人等级")
+    @TableField(exist = false)
+    private String referrerGrade;
+
+    @Schema(description = "1-升级身份")
+    @TableField(value = "identity_type")
+    private int identityType;
+
+    @Schema(description = "0-未锁定;1-锁定")
+    @TableField(value = "identity_status")
+    private boolean identityStatus;
+
+
+    @TableField(value = "identity_time")
+    private Date identityTime;
+
+    /**
+     * 降级考核时间
+     */
+    private Date upgradeCycleStartTime;
+
+    /**
+     * 佣金考核时间
+      */
+    private Date assessmentTime;
+
+    /**
+     * 升级时间
+     */
+    private Date upgradeTime;
+
+
+    @TableField(value = "system_code")
+    private String systemCode;
+
+    @TableField(value = "status")
+    private boolean status;
+
+
+}

+ 17 - 0
partner/src/main/java/com/jzg/entity/PartnerUserGrade.java

@@ -0,0 +1,17 @@
+package com.jzg.entity;
+
+import com.jzg.commons.core.base.BaseModel;
+import lombok.Data;
+
+@Data
+public class PartnerUserGrade extends BaseModel {
+
+    private Long id;
+
+    private String grade;
+
+    private String gradeName;
+
+    private String userId;
+
+}

+ 30 - 0
partner/src/main/java/com/jzg/entity/param/AppHomeParams.java

@@ -0,0 +1,30 @@
+package com.jzg.entity.param;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Set;
+
+@Data
+public class AppHomeParams {
+
+    private String userId;
+
+    private String grade;
+
+    @Schema(description = "关联人员列表")
+    private Set<String> relatedPerList;
+
+    @Schema(description = "时间范围")
+    private List<String> timeFrame;
+
+    private String startTime;
+
+    private String endTime;
+
+    @Schema(description = "统计视图查询条件  Day, Week, Month")
+    private String countCycle;
+
+}

+ 17 - 0
partner/src/main/java/com/jzg/entity/param/CommissionValidityPeriod.java

@@ -0,0 +1,17 @@
+package com.jzg.entity.param;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class CommissionValidityPeriod {
+
+    @Schema(description = "开始时间")
+    private String startDate;
+
+    @Schema(description = "结束时间")
+    private String endDate;
+
+
+}

+ 26 - 0
partner/src/main/java/com/jzg/entity/param/LiftingRecordAudit.java

@@ -0,0 +1,26 @@
+package com.jzg.entity.param;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class LiftingRecordAudit {
+
+    private String id;
+
+    @Schema(description = "0-待审核;1-审核通过;2-审核不通过")
+    private int auditStatus;
+
+    private String rejectReason;
+
+    private String auditUser;
+
+    /**
+     * 审核佣金比例
+     */
+    private BigDecimal auditCommission;
+
+}

+ 27 - 0
partner/src/main/java/com/jzg/entity/param/PartnerApp.java

@@ -0,0 +1,27 @@
+package com.jzg.entity.param;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Data;
+
+@Data
+public class PartnerApp {
+
+    private String id;
+
+    private String grade;
+
+    private String userId;
+
+    private String startTime;
+
+    private String endTime;
+
+    private Integer pageNum;
+
+    private Integer pageSize;
+
+    private Integer appStatus;
+
+    private Page page;
+
+}

+ 45 - 0
partner/src/main/java/com/jzg/entity/param/PartnerDetailsParam.java

@@ -0,0 +1,45 @@
+package com.jzg.entity.param;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PartnerDetailsParam extends PageRequest {
+
+    @Schema(description = "姓名")
+    private String userName;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "工号")
+    private String userId;
+
+    @Schema(description = "等级")
+    private String grade;
+
+    @Schema(description = "订单号")
+    private String orderno;
+
+    @Schema(description = "车牌号")
+    private String licenseno;
+
+    @Schema(description = "签单时间")
+    private List<String> signingTime;
+
+    @TableField(exist = false)
+    private String startTime;
+
+    @TableField(exist = false)
+    private String endTime;
+
+    @Schema(description = "状态")
+    private Integer appStatus;
+
+
+}

+ 31 - 0
partner/src/main/java/com/jzg/entity/param/PartnerKickbackChangeParam.java

@@ -0,0 +1,31 @@
+package com.jzg.entity.param;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import com.jzg.commons.core.base.PageRequest;
+import java.util.List;
+
+
+@Data
+public class PartnerKickbackChangeParam extends PageRequest {
+
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "工号")
+    private String userId;
+
+    @Schema(description = "用户等级")
+    private String userGrade;
+
+    @Schema(description = "租户code")
+    private String systemCode;
+
+    @Schema(description = "变更时间")
+    private List<String> changeTimes;
+
+}

+ 32 - 0
partner/src/main/java/com/jzg/entity/param/PartnerLiftingRecordParam.java

@@ -0,0 +1,32 @@
+package com.jzg.entity.param;
+
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+public class PartnerLiftingRecordParam extends PageRequest {
+
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "工号")
+    private String userId;
+
+    @Schema(description = "类型0-升级;1-降级")
+    private String type;
+
+    @Schema(description = "申请时间")
+    private List<String> applyTime;
+
+
+    @Schema(description = "0-待审核;1-审核通过;2-审核不通过")
+    private int auditStatus;
+
+}

+ 64 - 0
partner/src/main/java/com/jzg/entity/param/PartnerRuleEntity.java

@@ -0,0 +1,64 @@
+package com.jzg.entity.param;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.jzg.entity.PartnerAttribute;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class PartnerRuleEntity implements Serializable {
+
+    private String id;
+
+    @Schema(description = "升级策略1-支持;2-不支持")
+    private String upgrade;
+
+    @Schema(description = "保级策略1-支持;2-不支持")
+    private String relegation;
+
+    @Schema(description = "等级名称")
+    private String  gradeName;
+
+    @Schema(description = "等级")
+    private String  grade;
+
+
+    @Schema(description = "考核是否满足")
+    private String  appraise;
+
+    @Schema(description = "保级是否满足")
+    private String  relSatisfy;
+
+    @Schema(description = "考核条件")
+    private List<PartnerAttribute> requirement;
+
+    @Schema(description = "保级策略1-不保级;2-任务保级;3-购买保级")
+    private String strategy;
+
+    @Schema(description = "保级策略")
+    private List<PartnerAttribute> strategyArray;
+
+    @Schema(description = "考核周期")
+    private PartnerAttribute cycle;
+
+    @Schema(description = "天数")
+    private Integer khDays;
+
+    @Schema(description = "0-勾选降级;1-未勾选")
+    private boolean fallTick;
+
+    @Schema(description = "购买保级金额")
+    private BigDecimal fallAmount;
+
+    @Schema(description = "考核结束日期")
+    @TableField(exist = false)
+    private String assessmentEndDate;
+
+
+
+}

+ 41 - 0
partner/src/main/java/com/jzg/entity/param/QueryVo.java

@@ -0,0 +1,41 @@
+package com.jzg.entity.param;
+
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class QueryVo extends PageRequest {
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "工号")
+    private String userId;
+
+    @Schema(description = "机构ID")
+    private String deptId;
+
+    @Schema(description = "机构名称")
+    private String deptName;
+
+    @Schema(description = "等级")
+    private String grade;
+
+    @Schema(description = "佣金比例")
+    private BigDecimal commissionRate;
+
+    @Schema(description = "邀请人")
+    private String referrerId;
+
+    private String isEnable;
+
+    private String status;
+
+    private String referrerName;
+
+}

+ 15 - 0
partner/src/main/java/com/jzg/entity/param/UserGradeParam.java

@@ -0,0 +1,15 @@
+package com.jzg.entity.param;
+
+
+import lombok.Data;
+
+@Data
+public class UserGradeParam {
+
+    private String id;
+
+    private String grade;
+
+    private Integer upgradeType;
+
+}

+ 62 - 0
partner/src/main/java/com/jzg/entity/vo/AppUserInfoVo.java

@@ -0,0 +1,62 @@
+package com.jzg.entity.vo;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class AppUserInfoVo {
+
+    /**
+     * 员工id
+     */
+    @Schema(description = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @Schema(description = "员工姓名")
+    private String userName;
+
+    @Schema(description = "岗位名称")
+    private String positionName;
+    /**
+     * 团队名称
+     */
+    @Schema(description = "团队名称")
+    private String deptName;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    /**
+     * 性别
+     */
+    @Schema(description = "性别")
+    private String sex;
+
+    @Schema(description = "微信号")
+    private String weChat;
+
+
+    @Schema(description ="入司时间")
+    private Date entryTime;
+
+    @Schema(description ="年限")
+    private Long years;
+
+
+    @Schema(description = "类型:合伙人等级")
+    private int level;
+
+    @Schema(description = "新  类型:合伙人等级")
+    private int grade;
+
+    @Schema(description = "头像")
+    private String pictureUrl;
+
+
+
+}

+ 22 - 0
partner/src/main/java/com/jzg/entity/vo/CommissionRulesVo.java

@@ -0,0 +1,22 @@
+package com.jzg.entity.vo;
+
+
+import com.jzg.entity.PartnerCommissionRules;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+@Data
+public class CommissionRulesVo {
+
+    @Schema(description = "创始人佣金比例")
+    private String originator;
+
+    @Schema(description = "管理人佣金比例")
+    private PartnerCommissionRules administrator;
+
+    @Schema(description = "合伙人佣金比例")
+    private PartnerCommissionRules partner;
+
+
+}

+ 15 - 0
partner/src/main/java/com/jzg/entity/vo/DetailsParam.java

@@ -0,0 +1,15 @@
+package com.jzg.entity.vo;
+
+
+import lombok.Data;
+
+@Data
+public class DetailsParam {
+
+    private String userId;
+
+    private String grade;
+
+    private Integer appStatus;
+
+}

+ 21 - 0
partner/src/main/java/com/jzg/entity/vo/HomeVo.java

@@ -0,0 +1,21 @@
+package com.jzg.entity.vo;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class HomeVo {
+
+
+    @Schema(description = "今日概况")
+    private TodayOverview todayOverview;
+
+
+    @Schema(description = "团队概况")
+    private List<TeamOverviewVo> teamOverview;
+
+
+}

+ 55 - 0
partner/src/main/java/com/jzg/entity/vo/MyUserLevel.java

@@ -0,0 +1,55 @@
+package com.jzg.entity.vo;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class MyUserLevel {
+
+    private String userId;
+
+    private String userName;
+
+    private Integer grade;
+
+    private String gradeName;
+
+    @Schema(description = "锁定状态0-未解锁;1-已解锁;2-锁定")
+    private String lockingState;
+
+    @Schema(description = "是否可升级")
+    private boolean isUpgrade;
+
+    @Schema(description = "锁定佣金")
+    private BigDecimal lockCommission;
+
+    @Schema(description = "0/1/2")
+    private Integer progressBar;
+
+    private String zeroDays;
+
+    @Schema(description = "等级比例")
+    private String ratio;
+
+    @Schema(description = "true-申请中")
+    private boolean upgradeStatus;
+
+    @Schema(description = "购买保级金额")
+    private BigDecimal fallAmount;
+
+    @Schema(description = "有效日期")
+    private String expiryDate;
+
+    @Schema(description = "等级比例")
+    private String unlockDeadline;
+
+    private String proportional;
+
+    private boolean isPrompt;
+
+    private boolean unlockedStatus;
+
+}

+ 30 - 0
partner/src/main/java/com/jzg/entity/vo/MyUserVo.java

@@ -0,0 +1,30 @@
+package com.jzg.entity.vo;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.Map;
+
+@Data
+public class MyUserVo {
+
+
+    @Schema(description = "用户名")
+    private String userName;
+
+    @Schema(description = "用户ID")
+    private String userId;
+
+    @Schema(description = "用户ID")
+    private String grade;
+
+    @Schema(description = "审核时间")
+    private Date AuditTime;
+
+    @Schema(description = "合伙人信息")
+    private Map<String,Object> partnerTotal;
+
+
+}

+ 201 - 0
partner/src/main/java/com/jzg/entity/vo/PartnerDetailsVo.java

@@ -0,0 +1,201 @@
+package com.jzg.entity.vo;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.jzg.commons.aop.LogDescriptionField;
+import com.jzg.commons.config.StringToListTypeHandler;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+public class PartnerDetailsVo {
+
+    @Schema(description = "用户id")
+    private String userId;
+
+    /** 用户状态 : 1 正常 0 锁定 */
+    @Schema(description = "用户状态 : 1 正常 0 锁定")
+    private Integer accountStatus;
+
+    /** 用户名 */
+    @Schema(description = "用户名")
+    @LogDescriptionField("成员")
+    private String username;
+
+    /** 密码 */
+    @Schema(description = "密码")
+    private String password;
+
+    /** 手机号 */
+    @Schema(description = "手机号")
+    private String mobile;
+
+    /** 角色名称集合 */
+    @Schema(description = "角色名称集合")
+    private List<String> roleNameList;
+
+    /** 是否启用 1 启用 0禁用 */
+    @Schema(description = "是否启用 1 启用 0禁用")
+    private Integer isEnable;
+
+    @Schema(description = "机构id")
+    private String deptId;
+
+    @Schema(description = "姓名")
+    @LogDescriptionField("成员")
+    private String name;
+
+    @Schema(description = "系统编码")
+    private String systemCode;
+
+    @Schema(description = "身份证号")
+    private String identity;
+
+    @Schema(description = "身份证有效期起期")
+    private String identityTimeStart;
+
+    @Schema(description = "身份证有效期止期")
+    private String identityTimeEnd;
+
+    @Schema(description = "领导人id")
+    private String leaderId;
+
+    @Schema(description = "领导人姓名")
+    private String leaderName;
+
+    @Schema(description = "推荐人id")
+    private String referrerId;
+
+    @Schema(description = "推荐人id")
+    private String referrerName;
+
+    @Schema(description = "性别")
+    private String sex;
+
+    @Schema(description = "出生日期")
+    private String birthday;
+
+    @Schema(description = "民族")
+    private String nations;
+    @Schema(description = "户籍")
+    private String koseki;
+
+    @Schema(description = "婚姻状况")
+    private String maritalStatus;
+
+    @Schema(description = "政治面貌")
+    private String politicsStatus;
+
+    @Schema(description = "健康状况")
+    private String health;
+
+    @Schema(description = "省")
+    private String province;
+
+    @Schema(description = "市")
+    private String city;
+
+    @Schema(description = "区")
+    private String district;
+
+    @Schema(description = "详细地址")
+    private String liveAddress;
+
+    @Schema(description = "邮政编码")
+    private String postalCode;
+
+    @Schema(description = "学历")
+    private String education;
+
+    @Schema(description = "毕业学校")
+    private String school;
+
+    @Schema(description = "毕业时间")
+    private String graduationTime;
+
+    @Schema(description = "是否是计算机专业 1 是 0 否")
+    private String isComputer;
+
+    @Schema(description = "紧急联系人姓名")
+    private String emergencyContactName;
+
+    @Schema(description = "紧急联系人电话")
+    private String emergencyContactTel;
+
+    @Schema(description = "薪资")
+    private String salary;
+
+    @Schema(description = "薪资等级")
+    private String salaryLevel;
+
+    @Schema(description = "开户行")
+    private String bankName;
+
+    @Schema(description = "银行卡号")
+    private String bankCardId;
+
+    @Schema(description = "(成员)银行卡号")
+    private String bankCardNumber;
+
+    @Schema(description = "用户类型1.前线人员 2:后线人员 3:合伙人 4:工作室管理员 5:团队长 6:个代 7:电销 8 渠道")
+    private String typeAttr;
+
+    @Schema(description = "平台信息id")
+    private String userInfoId;
+
+    @Schema(description = "身份证正面")
+    private String sfz1;
+
+    @Schema(description = "身份证反面")
+    private String sfz2;
+
+    @Schema(description = "展业资格证")
+    private String qualification;
+
+    @Schema(description = "劳动合同")
+    private String contract;
+
+    @Schema(description = "应聘表")
+    private String applicant;
+
+    @Schema(description = "定薪表")
+    private String salaryTable;
+
+    @Schema(description = "离职表")
+    private String leaveTable;
+
+    @Schema(description = "银行卡")
+    private String bankCard;
+
+    @Schema(description = "团队、渠道、电销id")
+    private String organizationId;
+
+    @Schema(description = "角色id")
+    private List<String> roleIds;
+
+    @Schema(description = "同时添加为业务员")
+    private Integer isAddSalesman;
+
+    @Data
+    @AllArgsConstructor
+    @NoArgsConstructor
+    public static class SysRoleVo{
+
+        @Schema(description = "角色id")
+        private String id;
+    }
+
+
+    @Schema(description = "合伙人等级")
+    @TableField(exist = false,typeHandler = StringToListTypeHandler.class)
+    private List<String> gradeList;
+
+    @Schema(description = "二维码邀请合伙人等级")
+    @TableField(exist = false)
+    private Integer grade;
+
+}

+ 31 - 0
partner/src/main/java/com/jzg/entity/vo/PartnerRulesRatio.java

@@ -0,0 +1,31 @@
+package com.jzg.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.jzg.entity.PartnerRatio;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class PartnerRulesRatio {
+
+    private String id;
+
+    private String commissionRulesId;
+
+    @Schema(description = "1-全部满足;2-以上满足一条")
+    private int allSatisfied;
+
+    @Schema(description = "共享佣金")
+    private BigDecimal kickback;
+
+    @Schema(description = "1-合伙人佣金比例;2-工作室佣金比例")
+    private int proportionType;
+
+    @TableField(exist = false)
+    @Schema(description = "考核规则")
+    private List<PartnerRatio> partnerRatioList;
+
+}

+ 72 - 0
partner/src/main/java/com/jzg/entity/vo/PartnerUserVo.java

@@ -0,0 +1,72 @@
+package com.jzg.entity.vo;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jzg.commons.core.base.PartnerBaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+public class PartnerUserVo extends PartnerBaseModel {
+
+
+    @TableId(value = "id",type = IdType.ASSIGN_ID)
+    private String id;
+
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "工号")
+    private String userId;
+
+    @Schema(description = "机构ID")
+    private String deptId;
+
+    @Schema(description = "机构名称")
+    private String deptName;
+
+    @Schema(description = "人员状态")
+    private String status;
+
+    @Schema(description = "等级")
+    private String grade;
+
+    @Schema(description = "等级")
+    private String gradeName;
+
+    @Schema(description = "佣金比例")
+    private BigDecimal commissionRate;
+
+    @Schema(description = "邀请人")
+    private String referrerId;
+
+    @Schema(description = "邀请人名字")
+    private String referrerName;
+
+    @Schema(description = "管理人")
+    private String leaderId;
+
+    @Schema(description = "管理人")
+    private String leaderIdName;
+
+    @Schema(description = "累计保费")
+    private BigDecimal premium;
+
+    @Schema(description = "累计佣金")
+    private BigDecimal kickback;
+
+    @Schema(description = "类型")
+    private String typeAttr;
+
+    private LocalDateTime createTime;
+
+    private boolean partStatus;
+
+}

+ 46 - 0
partner/src/main/java/com/jzg/entity/vo/RelationalVo.java

@@ -0,0 +1,46 @@
+package com.jzg.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+
+@Data
+public class RelationalVo {
+
+    @Schema(description = "姓名")
+    private String userName;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "工号")
+    private String userId;
+
+    @Schema(description = "推荐人ID")
+    private String referrerId;
+
+
+    @Schema(description = "推荐人ID")
+    private String type;
+
+    @Schema(description = "推荐人ID")
+    private String suggestName;
+
+    @Schema(description = "推荐人ID")
+    private String deptName;
+
+    @Schema(description = "推荐人ID")
+    private String agencyName;
+
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+
+}

+ 29 - 0
partner/src/main/java/com/jzg/entity/vo/SelectUserVo.java

@@ -0,0 +1,29 @@
+package com.jzg.entity.vo;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SelectUserVo {
+
+    @Schema(description = "等级")
+    private String grade;
+
+    @Schema(description = "等级")
+    private String gradeName;
+
+    @Schema(description = "等级")
+    private String userId;
+
+    @Schema(description = "用户集合")
+    private List<MyUserVo> userVoList;
+
+
+    @Schema(description = "我的业绩")
+    private List<Object> MyPerformance;
+
+
+}

+ 75 - 0
partner/src/main/java/com/jzg/entity/vo/SysPartnerAccount.java

@@ -0,0 +1,75 @@
+package com.jzg.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class SysPartnerAccount {
+
+    /**
+     * 自增id
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户id
+     */
+    private String userId;
+    /**
+     * 总保费
+     */
+    @Schema(description = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 抽成费用
+     */
+    @Schema(description = "抽成费用")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 已提现抽成费用
+     */
+    @Schema(description = "已提现抽成费用")
+    private BigDecimal historyFee;
+    /**
+     * 可提现抽成费用
+     */
+    @Schema(description = "可提现抽成费用")
+    private BigDecimal cashFee;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+
+    @TableField(exist = false)
+    private BigDecimal unreportedAmount;
+
+    @Schema(description = "已转入金额")
+    @TableField(exist = false)
+    private BigDecimal transferAmount;
+
+    @Schema(description = "已过期金额")
+    @TableField(exist = false)
+    private BigDecimal expiredAmount;
+
+    @Schema(description = "总佣金")
+    @TableField(exist = false)
+    private BigDecimal totalAmount;
+
+    @Schema(description = "冻结")
+    @TableField(exist = false)
+    private BigDecimal frozenAmount;
+
+}

+ 47 - 0
partner/src/main/java/com/jzg/entity/vo/TeamOverviewVo.java

@@ -0,0 +1,47 @@
+package com.jzg.entity.vo;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class TeamOverviewVo {
+
+    @Schema(description = "等级")
+    private String grade;
+
+    @Schema(description = "等级名称")
+    private String gradeName;
+
+    private String parentStatus;
+
+    @Schema(description = "升级状态 0-不支持升级;1-可升级;2-申请中")
+    private Integer upgradeStatus;
+
+    @Schema(description = "锁定佣金")
+    private BigDecimal lockCommission;
+
+    private Long zeroDays;
+
+    @Schema(description = "解锁状态")
+    private boolean unlockedStatus;
+
+    @Schema(description = "购买保级金额")
+    private BigDecimal fallAmount;
+
+    private Integer lockGrade;
+
+    private boolean isLock;
+
+    private Object vo1;
+
+    private Object vo2;
+
+    private Object vo3;
+
+    private Object vo4;
+
+
+}

+ 25 - 0
partner/src/main/java/com/jzg/entity/vo/TodayOverview.java

@@ -0,0 +1,25 @@
+package com.jzg.entity.vo;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class TodayOverview {
+
+    @Schema(description = "订单(笔)")
+    private Integer numberOrders;
+
+    @Schema(description = "新增人员")
+    private Integer addPerNumber;
+
+    @Schema(description = "保费")
+    private BigDecimal premium;
+
+    @Schema(description = "佣金")
+    private BigDecimal commission;
+
+
+}

+ 24 - 0
partner/src/main/java/com/jzg/entity/vo/UserRuleVo.java

@@ -0,0 +1,24 @@
+package com.jzg.entity.vo;
+
+
+import lombok.Data;
+
+@Data
+public class UserRuleVo {
+
+    /**
+     * 邀请人数
+     */
+    private String invitationsNumber;
+
+    /**
+     * 成员出单保费
+     */
+    private String memberPremium ;
+
+    /**
+     * 自己出单保费
+     */
+    private String yourPremium ;
+
+}

+ 32 - 0
partner/src/main/java/com/jzg/mapper/PartnerAttributeMapper.java

@@ -0,0 +1,32 @@
+package com.jzg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.entity.PartnerAttribute;
+import com.jzg.entity.param.PartnerRuleEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Result;
+import org.apache.ibatis.annotations.Results;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.type.StringTypeHandler;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface PartnerAttributeMapper extends BaseMapper<PartnerAttribute> {
+
+
+    List<PartnerRuleEntity> queryAll();
+
+
+    PartnerRuleEntity selectByGrade(String grade);
+
+
+    @Select("select grade as grade,grade_name as gradeName from partner_rule WHERE grade != 5 GROUP BY grade,grade_name ")
+    @Results({
+            @Result(column = "grade", property = "grade", typeHandler = StringTypeHandler.class),
+            @Result(column = "gradeName", property = "gradeName", typeHandler = StringTypeHandler.class)
+    })
+    List<Map<String,String>> queryGradeName();
+
+}

+ 9 - 0
partner/src/main/java/com/jzg/mapper/PartnerCommissionMapper.java

@@ -0,0 +1,9 @@
+package com.jzg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.entity.PartnerCommissionRules;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PartnerCommissionMapper  extends BaseMapper<PartnerCommissionRules> {
+}

+ 16 - 0
partner/src/main/java/com/jzg/mapper/PartnerExpiredCommissionMapper.java

@@ -0,0 +1,16 @@
+package com.jzg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.entity.PartnerExpiredCommission;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.math.BigDecimal;
+
+@Mapper
+public interface PartnerExpiredCommissionMapper extends BaseMapper<PartnerExpiredCommission> {
+
+
+    @Select("select SUM(lock_commission) from partner_expired_commission where user_id=#{userId} ")
+    BigDecimal selectCountInvalid(String userId);
+}

+ 10 - 0
partner/src/main/java/com/jzg/mapper/PartnerExtractHistoryMapper.java

@@ -0,0 +1,10 @@
+package com.jzg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.entity.PartnerExtractHistory;
+import org.apache.ibatis.annotations.Mapper;
+
+
+@Mapper
+public interface PartnerExtractHistoryMapper extends BaseMapper<PartnerExtractHistory> {
+}

+ 35 - 0
partner/src/main/java/com/jzg/mapper/PartnerKickbackChangeMapper.java

@@ -0,0 +1,35 @@
+package com.jzg.mapper;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.entity.PartnerKickbackChange;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.math.BigDecimal;
+
+@Mapper
+public interface PartnerKickbackChangeMapper extends BaseMapper<PartnerKickbackChange> {
+
+    @Select("SELECT IFNULL(after_change,original_commission) AS result FROM partner_kickback_change WHERE user_id = #{userId} and user_grade = #{grade} ORDER BY change_time DESC LIMIT 1")
+    BigDecimal mostRecentRecord(@Param("userId") String userId,@Param("grade")String grade);
+
+    @Select("SELECT " +
+            " c.user_id, " +
+            " info.`name`, " +
+            " u.mobile, " +
+            " c.user_grade, " +
+            " c.original_commission, " +
+            " c.after_change, " +
+            " c.change_reason,c.change_time, " +
+            " d.`name` deptName  " +
+            "FROM " +
+            " partner_kickback_change c " +
+            " LEFT JOIN sys_dept d ON d.id = c.dept_id " +
+            " LEFT JOIN sys_user_jzg_info info ON info.id =  c.user_id " +
+            " LEFT JOIN sys_user u ON u.id =  info.user_id ${ew.customSqlSegment} ")
+    Page<PartnerKickbackChange> queryPage(Page page,@Param("ew") QueryWrapper<PartnerKickbackChange> wrapper);
+}

+ 42 - 0
partner/src/main/java/com/jzg/mapper/PartnerLiftingRecordMapper.java

@@ -0,0 +1,42 @@
+package com.jzg.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.entity.PartnerLiftingRecord;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface PartnerLiftingRecordMapper extends BaseMapper<PartnerLiftingRecord> {
+
+
+    @Select("select audit_status as auditStatus,count(1) as count from partner_lifting_record group by audit_status")
+    List<Map<String, Object>> groupByAuditStatus();
+
+    @Select("SELECT r.id,r.`name`,r.mobile,r.user_id,r.dept_id,r.type,r.original_level,r.after_change,r.cycle,r.upgrade_strategy,r.audit_status,r.audit_time,r.audit_user,r.reject_reason,r.conditions, " +
+            " r.rules,r.create_time,r.upgrade_type,( SELECT `name` FROM sys_dept WHERE sys_dept.id = r.dept_id ) dept_name , " +
+            " (SELECT SUM(extract_fee) FROM partner_premium_details d WHERE d.app_status = 1 AND d.user_id = r.user_id AND d.source = r.original_level) frozenAmount " +
+            " FROM partner_lifting_record r ${ew.customSqlSegment} ")
+    Page<PartnerLiftingRecord> queryPage(Page page,@Param("ew") QueryWrapper<PartnerLiftingRecord> queryWrapper);
+
+    @Select("SELECT * FROM partner_lifting_record WHERE type = 1 AND audit_status = 0 AND DATE(DATE_ADD(create_time, INTERVAL #{expireDays} DAY)) =  CURDATE() ")
+    List<PartnerLiftingRecord> queryExpireDays(Integer expireDays);
+
+    @Update("update partner_lifting_record set audit_status = #{status} where id = #{id}")
+    void updateAuditStatusById(String id, int status);
+
+    @Select("SELECT create_time FROM partner_lifting_record WHERE type = 1 AND audit_status = 0 AND user_id = #{userId} and" +
+            " original_level = #{grade} ")
+    Date selectQueryDowngradeTime(@Param("userId") String userId, @Param("grade")Integer grade);
+
+
+    @Select("SELECT MAX(original_level) FROM partner_lifting_record WHERE type = 1 AND audit_status = 0 AND user_id = #{userId} " )
+    String selectMaxGradeByUserId(String userId);
+}

+ 26 - 0
partner/src/main/java/com/jzg/mapper/PartnerPartnerAccountMapper.java

@@ -0,0 +1,26 @@
+package com.jzg.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.entity.PartnerPartnerAccount;
+import com.jzg.entity.param.AppHomeParams;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.math.BigDecimal;
+
+@Mapper
+public interface PartnerPartnerAccountMapper extends BaseMapper<PartnerPartnerAccount> {
+
+
+    @Select("SELECT (SUM( extract_fee ) - SUM(expired_amount)) AS extractFee, SUM( history_fee ) AS historyFee, (SUM( cash_fee ) - SUM(expired_amount)) AS cashFee , SUM(expired_amount) FROM partner_partner_account WHERE  user_id = #{userId} ")
+    PartnerPartnerAccount selectByUserId(String userId);
+
+    @Select("SELECT cash_fee FROM partner_partner_account WHERE user_id = #{userId} AND grade = #{grade}")
+    BigDecimal selectCashFee(@Param("userId") String userId,@Param("grade") Integer grade);
+
+    PartnerPartnerAccount selectStatisticalData(@Param("params") AppHomeParams params);
+
+
+}

+ 64 - 0
partner/src/main/java/com/jzg/mapper/PartnerPremiumDetailsMapper.java

@@ -0,0 +1,64 @@
+package com.jzg.mapper;
+
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.entity.PartnerPremiumDetails;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface PartnerPremiumDetailsMapper extends BaseMapper<PartnerPremiumDetails> {
+
+
+    @Select("SELECT user_id AS userId, SUM(DISTINCT sumpremium) AS num  FROM partner_premium_details ${ew.customSqlSegment}")
+    List<Map<String,Object>> selectTotalSumPremiumGroupBy(@Param("ew") QueryWrapper<PartnerPremiumDetails> queryWrapper);
+
+
+    @Select("SELECT SUM(db.sumpremium) FROM (SELECT DISTINCT orderno,sumpremium FROM partner_premium_details ${ew.customSqlSegment}) db ")
+    BigDecimal selectTotalSumPremium(@Param("ew") QueryWrapper<PartnerPremiumDetails> queryWrapper);
+
+    @Select("SELECT " +
+            " d.orderno, " +
+            " d.company_id, " +
+            " d.user_id, " +
+            " d.user_name, " +
+            " d.issuer_id, " +
+            " d.issuer_name, " +
+            " d.sumpremium, " +
+            " d.proportional, " +
+            " d.extract_fee, " +
+            " d.licenseno, " +
+            " d.source, " +
+            " d.create_time, " +
+            " info.`name` AS userName, " +
+            " u.mobile " +
+            "FROM " +
+            " partner_premium_details d " +
+            " LEFT JOIN sys_user_jzg_info info ON info.id = d.user_id" +
+            " LEFT JOIN sys_user u ON u.id = info.user_id  ${ew.customSqlSegment}")
+    Page<PartnerPremiumDetails> queryPage(@Param("page") Page page, @Param("ew") Wrapper<PartnerPremiumDetails> queryWrapper);
+
+    @Select("SELECT user_id AS userId,SUM( sumpremium) AS premium,SUM(extract_fee) AS commission FROM partner_premium_details ${ew.customSqlSegment} ")
+    List<Map<String,Object>> selectCombinedStatistics(@Param("ew")QueryWrapper<PartnerPremiumDetails> wrapper);
+
+    //
+    @Select("SELECT SUM(extract_fee) AS commission FROM partner_premium_details WHERE app_status = 1 AND status = 1 AND user_id = #{userId} AND source = #{grade} AND DATE(create_time) >= DATE(#{createTime}) ")
+    BigDecimal commissionAfterUserLocking(@Param("userId") String userId,@Param("grade") Integer grade,@Param("createTime") Date createTime);
+
+    @Update("UPDATE partner_premium_details SET app_status = 0 WHERE app_status = 1 AND source = #{originalLevel} AND user_id = #{userId} AND DATE(create_time) >= #{identityTime} ")
+    void updateAppStatus(@Param("originalLevel") String originalLevel,@Param("userId") String userId, @Param("identityTime")Date identityTime);
+
+    @Select(" SELECT create_time FROM partner_premium_details WHERE app_status = 1 AND status = 1 AND user_id = #{userId} AND source = #{grade} ORDER BY create_time  LIMIT 1 ")
+    Date queryRemainingDaysExpiration(@Param("userId") String userId, @Param("grade") Integer grade);
+
+}

+ 9 - 0
partner/src/main/java/com/jzg/mapper/PartnerRatioMapper.java

@@ -0,0 +1,9 @@
+package com.jzg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.entity.PartnerRatio;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PartnerRatioMapper extends BaseMapper<PartnerRatio> {
+}

+ 10 - 0
partner/src/main/java/com/jzg/mapper/PartnerRecordApperMapper.java

@@ -0,0 +1,10 @@
+package com.jzg.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.entity.PartnerRecordApper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PartnerRecordApperMapper extends BaseMapper<PartnerRecordApper> {
+}

+ 13 - 0
partner/src/main/java/com/jzg/mapper/PartnerRuleMapper.java

@@ -0,0 +1,13 @@
+package com.jzg.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.entity.PartnerRule;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PartnerRuleMapper extends BaseMapper<PartnerRule> {
+
+
+
+}

+ 10 - 0
partner/src/main/java/com/jzg/mapper/PartnerRulesRatioMapper.java

@@ -0,0 +1,10 @@
+package com.jzg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.entity.vo.PartnerRulesRatio;
+import org.apache.ibatis.annotations.Mapper;
+
+
+@Mapper
+public interface PartnerRulesRatioMapper extends BaseMapper<PartnerRulesRatio> {
+}

+ 212 - 0
partner/src/main/java/com/jzg/mapper/PartnerUserMapper.java

@@ -0,0 +1,212 @@
+package com.jzg.mapper;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.entity.PartnerUser;
+import com.jzg.entity.param.AppHomeParams;
+import com.jzg.entity.param.CommissionValidityPeriod;
+import com.jzg.entity.param.PartnerApp;
+import com.jzg.entity.param.QueryVo;
+import com.jzg.entity.vo.*;
+import org.apache.ibatis.annotations.*;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+@Mapper
+public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
+
+    //分页查询
+    IPage<PartnerUserVo> queryPage(Page page, @Param("queryVo") QueryVo queryVo);
+
+    @MapKey("userId")
+    List<Map<String, String>> selectRecommender(@Param("level") String level);
+
+    List<RelationalVo> selectByUserId(@Param("id")String id, @Param("grade")Integer grade);
+
+    TodayOverview selectTodayOverview(@Param("params") AppHomeParams params);
+
+    List<TeamOverviewVo> selectTeamOverview(@Param("params") AppHomeParams params);
+
+
+    @Delete("delete from partner_user where user_id=#{id}")
+    void deleteByUserId(String id);
+
+    Object selectStatisticsMap(@Param("grade") String grade,@Param("params")AppHomeParams params);
+
+    SelectUserVo selectUser(AppHomeParams params);
+
+
+    Integer userCountVo(@Param("userId")String userId,@Param("params")AppHomeParams params,@Param("grade")Integer grade);
+
+
+    @Select("select  MIN(grade) as grade from partner_user where user_id= #{userId}  ")
+    Integer selectGradeMin(String userId);
+
+    @Select("select  MIN(grade) as grade from partner_user where  grade != 1 and identity_status = 0 and user_id=  #{userId}  ")
+    Integer selectGradeIntMin(String userId);
+
+
+    List<String> selectJuniorList(@Param("grade") Integer grade,@Param("ids") List<String> ids,@Param("params")AppHomeParams params);
+
+    @MapKey("createTime")
+    List<Map<String, String>> userCountVo2(@Param("userId")List<String> userId,@Param("params")AppHomeParams params);
+
+
+    List<PartnerUser> selectJuniorListUser(@Param("grade")Integer grade,@Param("ids") List<String> currentUserIds,@Param("params") AppHomeParams params);
+
+    @Select("SELECT GROUP_CONCAT( r.grade_name ORDER BY u.grade) FROM partner_user u LEFT JOIN partner_rule r ON r.grade = u.grade WHERE user_id = #{userId}")
+    String selectByUserIdGrade(String userId);
+
+    @Select("SELECT `name` FROM partner_user WHERE user_id = #{userId} LIMIT 1")
+    String selectByUserIdUserName(String userId);
+
+    Integer userCountIdsVo(@Param("ids") List<String> ids,@Param("params")  AppHomeParams params);
+
+
+    List<RelationalVo> selectByReferrerId(@Param("userId") String userId,@Param("grade") Integer grade);
+
+    List<RelationalVo> selectQuerySuperiors(@Param("userId") String userId,@Param("grade") Integer grade);
+
+    JSONObject myPerformanceTotal(@Param("map")Map<String, String> map, @Param("list") Set<String> list);
+
+    Page<JSONObject> queryDataList(Page page,@Param("map") PartnerApp partnerApp);
+
+
+    Integer selectNumber(@Param("userId") String userId, @Param("number") String number,@Param("period") CommissionValidityPeriod period);
+
+
+    @Select("SELECT assessment_time FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
+    Date selectAssessmentTime(@Param("userId") String userId, @Param("grade")String grade);
+
+
+    @Select("SELECT fixed_cycle_time FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
+    Date selectFixedCycleTime(@Param("userId") String userId, @Param("grade")String grade);
+
+    @Update("UPDATE partner_user SET assessment_time =( SELECT DATE ( partner_review_time) FROM sys_user_jzg_info_salesman WHERE `partner_status` = 3 AND user_id = " +
+            " ( SELECT info.id FROM sys_user_jzg_info info WHERE info.user_id = #{userId} ) LIMIT 1 ) WHERE user_id = #{userId} ")
+    void updateAssessmentTime(String userId);
+
+    @Update("UPDATE partner_user SET fixed_cycle_time = ( " +
+            " SELECT DATE(approve_time) FROM sys_user_track WHERE `status` = 1 AND user_id = #{userId} LIMIT 1 " +
+            " ) WHERE  user_id = #{userId} ")
+    void updateFixedCycleTime(String userId);
+
+    @Update("UPDATE partner_user SET assessment_time = #{date} WHERE user_id = #{userId} AND grade =#{grade} ")
+    void updateAssessmentTimeByDate(@Param("userId") String userId,@Param("date") Date date,@Param("grade")String grade);
+
+    Integer selectByUserIdNumber(@Param("userId") String userId,@Param("number")  String number, @Param("period") CommissionValidityPeriod period);
+
+    PartnerUser queryUser(@Param("referrerId")String referrerId,@Param("grade") Integer grade);
+
+    Integer selectNumber4(@Param("userId") String userId,@Param("number") String number,@Param("period") CommissionValidityPeriod period);
+
+    List<PartnerUser> queryByUserId(String userId);
+
+    @Select("SELECT * FROM partner_user WHERE user_id = #{userId} ORDER BY grade DESC LIMIT 1")
+    PartnerUser selectMaxGradeUserId(String userId);
+
+    @Select("SELECT upgrade_time FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
+    Date selectUpgradeTime(String userId, String grade);
+
+    @Update("UPDATE partner_user SET upgrade_time = #{date} WHERE  user_id = #{userId} and grade = #{grade}")
+    void updateUpgradeTimeByDate(@Param("userId") String userId,@Param("date") Date date,@Param("grade") Integer grade);
+
+    @Update("UPDATE partner_user SET upgrade_time = ( " +
+            " SELECT DATE(approve_time) FROM sys_user_track WHERE `status` = 1 AND user_id = #{userId} LIMIT 1 " +
+            " ) WHERE  user_id = #{userId} and grade = #{grade} ")
+    void updateUpgradeTime(@Param("userId")String userId,@Param("grade") String grade);
+
+
+    int assessment(@Param("userId") String userId,@Param("grade") String grade, @Param("period")CommissionValidityPeriod period);
+
+    String querySuperiors(@Param("userId") String userId,@Param("grade") Integer grade,@Param("original") String original);
+
+    @Select("SELECT * FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
+    PartnerUser getLevelUserId(@Param("userId") String userId,@Param("grade") Integer grade);
+
+    Set<String> querySubordinateUserId(@Param("levelUserId") String levelUserId);
+
+    Set<String> querySubordinate(String levelUserId);
+
+    Set<String> getLevelAllUserId(String userId);
+
+
+    @Select(" SELECT p.id,p.user_id,p.grade,p.name,p.create_time FROM partner_user p LEFT JOIN sys_user u ON u.id = p .user_id ${ew.customSqlSegment}")
+    Page<PartnerUser> selectListVo(@Param("page") Page page ,@Param("ew") QueryWrapper<PartnerUser> queryWrapper);
+
+    @Select(" SELECT p.id,p.user_id,p.grade,p.name,p.create_time FROM partner_user p LEFT JOIN sys_user u ON u.id = p .user_id ${ew.customSqlSegment}")
+    List<PartnerUser> selectListDb(@Param("ew") QueryWrapper<PartnerUser> queryWrapper);
+
+    @Select(" SELECT p.id,p.user_id,p.grade,p.name,p.create_time FROM partner_user p LEFT JOIN sys_user u ON u.id = p .user_id ${ew.customSqlSegment}")
+    List<PartnerUser> selectAllListVo(@Param("ew") QueryWrapper<PartnerUser> queryWrapper);
+
+    @Update("UPDATE partner_user SET identity_status = #{identityStatus},upgrade_time = DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00'),upgrade_cycle_start_time = DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00') WHERE user_id = #{userId} and grade = #{originalLevel} ")
+    void updateIdentityStatus(@Param("userId") String userId,@Param("originalLevel") String originalLevel,@Param("identityStatus")int identityStatus);
+
+    UserRuleVo queryUserRuleVo(@Param("userId") String userId, @Param("grade")Integer grade,@Param("period") CommissionValidityPeriod period);
+
+    @Select("SELECT upgrade_cycle_start_time as startDate FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
+    CommissionValidityPeriod selectUpgradeCycleStartTime(@Param("userId") String userId,@Param("grade") Integer grade);
+
+    @Update("UPDATE partner_user SET upgrade_cycle_start_time = #{newDate} WHERE  user_id = #{userId} and grade = #{grade} ")
+    void updateUpgradeCycleStartTime(@Param("userId") String userId, @Param("newDate")Date newDate,@Param("grade") Integer grade);
+
+
+    BigDecimal selectOwnSumPremium(@Param("userId") String userId, @Param("period") CommissionValidityPeriod period);
+
+    @Select("SELECT upgrade_cycle_start_time FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
+    Date selectUpgradeStartTime(@Param("userId") String userId,@Param("grade") Integer grade);
+
+    @Update("UPDATE partner_user SET upgrade_cycle_start_time = ( " +
+            " SELECT DATE_ADD(DATE(approve_time), INTERVAL 1 DAY) FROM sys_user_track WHERE `status` = 1 AND user_id = #{userId} LIMIT 1 " +
+            " ) WHERE  user_id = #{userId} and grade = #{grade} ")
+    void updateUpgradeStartTime(@Param("userId") String userId,@Param("grade") Integer grade);
+
+    BigDecimal subordinateMembersInsurancePremiums(@Param("userId") String userId, @Param("grade")String grade,@Param("period") CommissionValidityPeriod period);
+
+    @Select("SELECT commission_rate FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
+    BigDecimal selectFixedRatio(@Param("userId") String userId, @Param("grade") String  grade);
+
+
+    @Select("SELECT p.* FROM partner_user p LEFT JOIN sys_user u ON u.id = p.user_id WHERE u.`status` = 1  " +
+            "AND( p.grade, p.user_id) IN ( SELECT MIN( grade ) grade, user_id FROM partner_user WHERE grade IN ( '2', '3', '4' ) AND identity_status = 0 GROUP BY user_id )" +
+            " ORDER BY p.create_time DESC")
+    List<PartnerUser> queryDowngradedData();
+
+
+    @Update("UPDATE partner_user SET commission_rate = null WHERE user_id = #{userId} AND grade = #{grade}")
+    void resetFixedRatio(@Param("userId") String userId, @Param("grade")Integer grade);
+
+    @Select("SELECT max(grade) FROM partner_user WHERE user_id = #{userId}")
+    Integer selectByUserIdMax(String referrerId);
+
+    @Select("SELECT dept_id FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
+    String queryDeptIdByUserId(@Param("userId") String id,@Param("grade") Integer grade);
+
+    List<JSONObject> queryDataList(@Param("map")PartnerApp partnerApp);
+
+
+    @Select("SELECT max(grade) FROM partner_user WHERE identity_status = 1 and user_id = #{id}")
+    Integer selectMax(String id);
+
+    @Select("SELECT min(grade) FROM partner_user WHERE identity_status = 1 and user_id = #{id}")
+    Integer selectMin(String id);
+
+    @Select("SELECT identity_time FROM partner_user WHERE user_id = #{userId} AND grade = #{originalLevel}")
+    Date selectLockTime(@Param("userId") String userId, @Param("originalLevel")String originalLevel);
+
+    @Select(" SELECT user_id,grade,name,mobile,dept_id,dept_name,identity_time FROM partner_user WHERE identity_status = 1 AND DATE(DATE_ADD(identity_time, INTERVAL (#{expireDays} + 1) DAY)) <=  CURDATE()  ")
+    List<PartnerUser> queryExpiredRecords(Integer expireDays);
+
+    @Update("UPDATE partner_user SET upgrade_cycle_start_time = #{date} WHERE user_id = #{userId} AND grade = #{grade}")
+    void updateNextLevelAssessmentTime(@Param("userId") String userId, @Param("grade") Integer grade,@Param("date") Date date);
+
+    PartnerDetailsVo partnerDetails(@Param("userId") String userId);
+}

+ 10 - 0
partner/src/main/java/com/jzg/mapper/PurchaseRecordMapper.java

@@ -0,0 +1,10 @@
+package com.jzg.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.entity.PartnerPurchaseRecord;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PurchaseRecordMapper extends BaseMapper<PartnerPurchaseRecord> {
+}

+ 15 - 0
partner/src/main/java/com/jzg/mapper/SysPartnerAccountMapper.java

@@ -0,0 +1,15 @@
+package com.jzg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.entity.vo.SysPartnerAccount;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysPartnerAccountMapper extends BaseMapper<SysPartnerAccount> {
+
+
+
+    SysPartnerAccount selectFee(String userId);
+
+
+}

+ 152 - 0
partner/src/main/java/com/jzg/service/Impl/PartnerCommissionServiceImpl.java

@@ -0,0 +1,152 @@
+package com.jzg.service.Impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.entity.PartnerCommissionRules;
+import com.jzg.entity.PartnerRatio;
+import com.jzg.entity.vo.CommissionRulesVo;
+import com.jzg.entity.vo.PartnerRulesRatio;
+import com.jzg.mapper.PartnerCommissionMapper;
+import com.jzg.mapper.PartnerRatioMapper;
+import com.jzg.mapper.PartnerRulesRatioMapper;
+import com.jzg.service.PartnerCommissionService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@Service
+public class PartnerCommissionServiceImpl extends ServiceImpl<PartnerCommissionMapper, PartnerCommissionRules> implements PartnerCommissionService {
+
+    @Autowired
+    private PartnerRatioMapper ratioMapper;
+
+    @Autowired
+    private PartnerRulesRatioMapper rulesRatioMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int save(CommissionRulesVo rulesVo) {
+        if (Objects.isNull(rulesVo)) {
+            return 0;
+        }
+        try {
+            // 保存管理员规则
+            PartnerCommissionRules administrator = rulesVo.getAdministrator();
+            administrator.setFounderRatio(rulesVo.getOriginator());
+            saveCommissionRules(administrator, 1);
+            // 保存合伙人规则
+            saveCommissionRules(rulesVo.getPartner(), 2);
+        } catch (Exception e) {
+            throw new SystemException("保存失败", e.getMessage());
+        }
+        return 1;
+    }
+
+    /**
+     * 保存 CommissionRules 及其 Ratio 数据
+     */
+    private void saveCommissionRules(PartnerCommissionRules commissionRules, int proportionType) {
+        if (StringUtils.isNotBlank(commissionRules.getId())) {
+            baseMapper.updateById(commissionRules);
+        } else {
+            baseMapper.insert(commissionRules);
+        }
+        List<PartnerRulesRatio> rulesRatioList = commissionRules.getRulesRatioList();
+        if (CollectionUtil.isNotEmpty(rulesRatioList)){
+            List<String> collect = rulesRatioList.stream().map(PartnerRulesRatio::getId).collect(Collectors.toList());
+            if (CollectionUtil.isNotEmpty(collect)){
+                QueryWrapper<PartnerRulesRatio> queryWrapper = new QueryWrapper<>();
+                queryWrapper.notIn("id", collect);
+                queryWrapper.eq("proportion_type", proportionType);
+                int delete = rulesRatioMapper.delete(queryWrapper);
+                log.info("删除数量:{}", delete,"proportionType====", proportionType);
+            }
+        }
+        if (CollectionUtil.isNotEmpty(rulesRatioList)){
+            for (PartnerRulesRatio rulesRatio : rulesRatioList) {
+                rulesRatio.setProportionType(proportionType);
+                rulesRatio.setCommissionRulesId(commissionRules.getId());
+                if (Objects.nonNull(rulesRatio)) {
+                    if (StringUtils.isNotBlank(rulesRatio.getId())) {
+                        rulesRatioMapper.updateById(rulesRatio);
+                    } else {
+                        rulesRatioMapper.insert(rulesRatio);
+                    }
+                    List<PartnerRatio> ratioList = rulesRatio.getPartnerRatioList();
+                    if (CollectionUtil.isNotEmpty(ratioList)){
+                        for (PartnerRatio ratio : ratioList) {
+                            ratio.setRulesRatioId(rulesRatio.getId());
+                            if (StringUtils.isNotBlank(ratio.getId())) {
+                                ratioMapper.updateById(ratio);
+                            } else {
+                                ratioMapper.insert(ratio);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    @Override
+    public CommissionRulesVo queryAll() {
+        List<PartnerCommissionRules> commissionRules = baseMapper.selectList(new LambdaQueryWrapper<>(PartnerCommissionRules.class));
+        if (CollectionUtil.isEmpty(commissionRules)) {
+            return new CommissionRulesVo();
+        }
+        List<String> ruleIds = commissionRules.stream()
+                .map(PartnerCommissionRules::getId)
+                .distinct()
+                .collect(Collectors.toList());
+        List<PartnerRulesRatio> allPartnerRulesRatios = rulesRatioMapper.selectList(
+                new LambdaQueryWrapper<PartnerRulesRatio>()
+                        .in(PartnerRulesRatio::getCommissionRulesId, ruleIds)
+        );
+        Map<String, List<PartnerRulesRatio>> ratioMap = allPartnerRulesRatios.stream()
+                .collect(Collectors.groupingBy(PartnerRulesRatio::getCommissionRulesId));
+        List<String> ratioIds = allPartnerRulesRatios.stream()
+                .map(PartnerRulesRatio::getId)
+                .distinct()
+                .collect(Collectors.toList());
+        List<PartnerRatio> allPartnerRatios = ratioMapper.selectList(
+                new LambdaQueryWrapper<PartnerRatio>()
+                        .in(PartnerRatio::getRulesRatioId, ratioIds)
+        );
+        Map<String, List<PartnerRatio>> partnerRatioMap = allPartnerRatios.stream()
+                .collect(Collectors.groupingBy(PartnerRatio::getRulesRatioId));
+        for (PartnerCommissionRules rules : commissionRules) {
+            List<PartnerRulesRatio> partnerRulesRatios = ratioMap.getOrDefault(rules.getId(), Collections.emptyList());
+            partnerRulesRatios.forEach(partnerRulesRatio -> {
+                List<PartnerRatio> partnerRatios = partnerRatioMap.getOrDefault(partnerRulesRatio.getId(), Collections.emptyList());
+                partnerRulesRatio.setPartnerRatioList(partnerRatios);
+            });
+            rules.setRulesRatioList(partnerRulesRatios);
+        }
+        CommissionRulesVo rulesVo = new CommissionRulesVo();
+        for (PartnerCommissionRules rules : commissionRules) {
+            if ("1".equals(rules.getType())) {
+                rulesVo.setAdministrator(rules);
+                rulesVo.setOriginator(rules.getFounderRatio());
+            } else if ("2".equals(rules.getType())) {
+                rulesVo.setPartner(rules);
+            }
+        }
+        return rulesVo;
+    }
+
+
+
+}

+ 43 - 0
partner/src/main/java/com/jzg/service/Impl/PartnerExpiredCommissionServiceImpl.java

@@ -0,0 +1,43 @@
+package com.jzg.service.Impl;
+
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.PartnerExpiredCommission;
+import com.jzg.mapper.PartnerExpiredCommissionMapper;
+import com.jzg.service.PartnerExpiredCommissionService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class PartnerExpiredCommissionServiceImpl extends ServiceImpl<PartnerExpiredCommissionMapper, PartnerExpiredCommission> implements PartnerExpiredCommissionService {
+
+
+    @Override
+    public HttpResult queryPage(PartnerExpiredCommission expiredCommission) {
+        QueryWrapper<PartnerExpiredCommission> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("id,name,mobile,user_id,grade,grade_after,lock_commission,downgrade_time,expiration,(SELECT `name` FROM sys_dept WHERE sys_dept.id = dept_id) deptName");
+        queryWrapper.eq(StringUtils.isNotBlank(expiredCommission.getName()),"name", expiredCommission.getName());
+        queryWrapper.eq(StringUtils.isNotBlank(expiredCommission.getMobile()),"mobile", expiredCommission.getMobile());
+        queryWrapper.eq(StringUtils.isNotBlank(expiredCommission.getUserId()),"user_id", expiredCommission.getUserId());
+        queryWrapper.orderByDesc("create_time");
+        List<String> startTime = expiredCommission.getStartTime();
+        if (CollectionUtil.isNotEmpty(startTime) && startTime.size() >= 2){
+            String s = startTime.get(0);
+            String e = startTime.get(1);
+            if (StringUtils.isNotBlank(s) && StringUtils.isNotBlank(e)) {
+                queryWrapper.between("expiration", s, e);
+            } else if (StringUtils.isNotBlank(s)) {
+                queryWrapper.ge("expiration", s);
+            } else if (StringUtils.isNotBlank(e)) {
+                queryWrapper.le("expiration",e);
+            }
+        }
+        return HttpResult.ok(baseMapper.selectPage(expiredCommission.getPage(), queryWrapper));
+    }
+
+}

+ 53 - 0
partner/src/main/java/com/jzg/service/Impl/PartnerExtractHistoryServiceImpl.java

@@ -0,0 +1,53 @@
+package com.jzg.service.Impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.entity.PartnerExtractHistory;
+import com.jzg.mapper.PartnerExtractHistoryMapper;
+import com.jzg.service.PartnerExtractHistoryService;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+
+@Service
+public class PartnerExtractHistoryServiceImpl extends ServiceImpl<PartnerExtractHistoryMapper, PartnerExtractHistory> implements PartnerExtractHistoryService {
+    @Override
+    public JSONObject queryPage(PartnerExtractHistory extractHistory) {
+        LambdaQueryWrapper<PartnerExtractHistory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(PartnerExtractHistory::getUserId,extractHistory.getUserId());
+        if (StringUtils.isNotEmpty(extractHistory.getGrade())){
+            lambdaQueryWrapper.eq(PartnerExtractHistory::getGrade,extractHistory.getGrade());
+        }
+        if (extractHistory.getStartTime() != null && extractHistory.getEndTime() != null){
+            lambdaQueryWrapper.between(PartnerExtractHistory::getCreateTime,extractHistory.getStartTime(),extractHistory.getEndTime());
+        }
+        lambdaQueryWrapper.orderByDesc(PartnerExtractHistory::getCreateTime);
+        Page page = baseMapper.selectPage(extractHistory.getPage(), lambdaQueryWrapper);
+        List<PartnerExtractHistory> list = baseMapper.selectList(lambdaQueryWrapper);
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("totalAmount",calculateTotalAmount(list));
+        map.put("size",list.size());
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("page",page);
+        jsonObject.put("total",map);
+        return jsonObject;
+
+    }
+
+    public BigDecimal calculateTotalAmount(List<PartnerExtractHistory> histories) {
+        return histories.stream()
+                .map(PartnerExtractHistory::getAmount)
+                .filter(amount -> amount != null)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+    }
+
+
+
+
+
+}

Некоторые файлы не были показаны из-за большого количества измененных файлов