Explorar o código

我的职级APP接口和后台接口

mac %!s(int64=2) %!d(string=hai) anos
pai
achega
58e2e525c0
Modificáronse 22 ficheiros con 977 adicións e 36 borrados
  1. 106 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsUserEquity.java
  2. 95 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/old/TradeDaySummary.java
  3. 58 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userLevel/AmountDetailVO.java
  4. 69 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userLevel/LevelDetailVO.java
  5. 44 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userLevel/LevelsVO.java
  6. 56 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userLevel/UserEquityListVO.java
  7. 33 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/constant/enums/UserEquityEnum.java
  8. 82 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/admin/AdminUserEquityController.java
  9. 68 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/UserLevelController.java
  10. 23 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserEquityMapper.java
  11. 9 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserMapper.java
  12. 28 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/old/TradeDaySummaryMapper.java
  13. 19 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserEquityService.java
  14. 11 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserService.java
  15. 22 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/TradeDaySummaryService.java
  16. 44 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserEquityServiceImpl.java
  17. 85 11
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserServiceImpl.java
  18. 34 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/TradeDaySummaryServiceImpl.java
  19. 0 1
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsLeaderMapper.xml
  20. 23 0
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserEquityMapper.xml
  21. 34 24
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserMapper.xml
  22. 34 0
      kxs-user/kxs-user-biz/src/main/resources/mapper/TradeDaySummaryMapper.xml

+ 106 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsUserEquity.java

@@ -0,0 +1,106 @@
+package com.kxs.user.api.model;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 创客权益表(KxsUserEquity)表实体类
+ *
+ * @author 系统
+ * @since 2024-02-26 17:19:45
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class KxsUserEquity extends Model<KxsUserEquity> implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    
+    
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+
+    /**
+     * 新增时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Schema(description = "新增时间")
+    private LocalDateTime createTime;
+
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.UPDATE)
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+
+    /**
+     * 删除标记,0未删除,1已删除
+     */
+    @Schema(description = "删除标记,0未删除,1已删除")
+    private Integer delFlag;
+
+
+    /**
+     * 版本
+     */
+    @Schema(description = "版本")
+    private Integer version;
+
+
+    /**
+     * 图标地址
+     */
+    @Schema(description = "图标地址")
+    @NotBlank(message = "图标不能为空")
+    private String iconUrl;
+
+
+    /**
+     * 特权名称
+     */
+    @Schema(description = "特权名称")
+    @NotBlank(message = "名称不能为空")
+    private String name;
+
+
+    /**
+     * 特权类型 0基础 1小盟主 2大盟主 3合伙人
+     */
+    @Schema(description = "特权类型 0基础 1小盟主 2大盟主 3合伙人")
+    @NotNull(message = "特权类型不能为空")
+    private Integer equityType;
+
+
+    /**
+     * 排序
+     */
+    @Schema(description = "排序")
+    private Integer sort;
+
+
+
+
+}
+

+ 95 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/old/TradeDaySummary.java

@@ -0,0 +1,95 @@
+package com.kxs.user.api.model.old;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 合伙人表(KxsPartner)表实体类
+ *
+ * @author 系统
+ * @since 2024-02-22 15:39:26
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class TradeDaySummary extends Model<TradeDaySummary> implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+    
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+
+    /**
+     * 新增时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Schema(description = "新增时间")
+    private LocalDateTime createTime;
+
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.UPDATE)
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+
+    /**
+     * 扶持期贷记卡
+     */
+    private BigDecimal helpNonDirectTradeAmt;
+
+    /**
+     * 扶持期借记卡
+     */
+    private BigDecimal helpNonDirectDebitTradeAmt;
+
+    /**
+     * 稳定期贷记卡
+     */
+    private BigDecimal notHelpNonDirectTradeAmt;
+
+    /**
+     * 稳定期借记卡
+     */
+    private BigDecimal notHelpNonDirectDebitTradeAmt;
+
+    /**
+     * 稳定期A贷记卡
+     */
+    private BigDecimal profitNonDirectTradeAmt;
+
+    /**
+     * 稳定期A借记卡
+     */
+    private BigDecimal profitNonDirectDebitTradeAmt;
+
+    /**
+     * 稳定期B贷记卡
+     */
+    private BigDecimal profitTradeAmt;
+
+    /**
+     * 稳定期B借记卡
+     */
+    private BigDecimal profitDebitTradeAmt;
+
+}
+

+ 58 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userLevel/AmountDetailVO.java

@@ -0,0 +1,58 @@
+package com.kxs.user.api.vo.kxsapp.userLevel;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 我的职级-当月实时业绩详情vo
+ *
+ * @author 系统
+ * @date 2024-02-26 17:19:48
+ */
+@Data
+@Schema(description = "我的职级-当月实时业绩详情返回实体")
+public class AmountDetailVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * pos交易额
+     */
+    @Schema(description = "pos交易额")
+    private BigDecimal pos;
+
+
+    /**
+     * 来客吧交易额
+     */
+    @Schema(description = "来客吧交易额")
+    private BigDecimal lkb = BigDecimal.ZERO;
+
+
+    /**
+     * 助力宝交易额
+     */
+    @Schema(description = "助力宝交易额")
+    private BigDecimal zlb;
+
+
+    /**
+     * 广电5g
+     */
+    @Schema(description = "广电5g")
+    private Integer gd;
+
+
+
+
+
+	
+
+}

+ 69 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userLevel/LevelDetailVO.java

@@ -0,0 +1,69 @@
+package com.kxs.user.api.vo.kxsapp.userLevel;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 我的职级-职级详情vo
+ *
+ * @author 系统
+ * @date 2024-02-26 17:19:48
+ */
+@Data
+@Schema(description = "我的职级-职级详情返回实体")
+public class LevelDetailVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 头像
+     */
+    @Schema(description = "头像")
+    private String avatar;
+
+
+    /**
+     * 用户等级
+     */
+    @Schema(description = "用户等级")
+    private Integer userLevel;
+
+
+    /**
+     * 上月业绩职级
+     */
+    @Schema(description = "上月业绩职级")
+    private Integer lastLevel;
+
+    /**
+     * 职级列表
+     */
+    @Schema(description = "职级列表")
+    private List<LevelsVO> levels;
+
+
+	
+
+}

+ 44 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userLevel/LevelsVO.java

@@ -0,0 +1,44 @@
+package com.kxs.user.api.vo.kxsapp.userLevel;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 我的职级-职级详情vo
+ *
+ * @author 没秃顶的码农
+ * @date 2024-02-26
+ */
+@Data
+@Schema(description = "我的职级-职级详情返回实体")
+public class LevelsVO {
+
+    /**
+     * 职级名称
+     */
+    @Schema(description = "职级名称")
+    private String levelName;
+
+
+    /**
+     * 职级状态 0失效 1正常
+     */
+    @Schema(description = "职级状态 0失效 1正常")
+    private Integer status;
+
+
+    /**
+     * 过期日期
+     */
+    @Schema(description = "过期日期")
+    private LocalDateTime expiredDate;
+
+
+    /**
+     * 职级
+     */
+    @Schema(description = "职级")
+    private Integer level;
+}

+ 56 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userLevel/UserEquityListVO.java

@@ -0,0 +1,56 @@
+package com.kxs.user.api.vo.kxsapp.userLevel;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 我的职级-我的特权vo
+ *
+ * @author 系统
+ * @date 2024-02-26 17:19:48
+ */
+@Data
+@Schema(description = "我的职级-我的特权返回实体")
+public class UserEquityListVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 图标地址
+     */
+    @Schema(description = "图标地址")
+    private String iconUrl;
+
+
+    /**
+     * 特权名称
+     */
+    @Schema(description = "特权名称")
+    private String name;
+
+
+    /**
+     * 排序
+     */
+    @Schema(description = "排序")
+    private Integer sort;
+
+    /**
+     * 类型
+     */
+    @Schema(description = "类型")
+    private Integer equityType;
+
+
+
+
+
+	
+
+}

+ 33 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/constant/enums/UserEquityEnum.java

@@ -0,0 +1,33 @@
+package com.kxs.user.biz.constant.enums;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+
+/**
+ * 实名状态类型枚举
+ *
+ * @author 没秃顶的码农
+ * @date 2024-01-02
+ */
+@Getter
+@RequiredArgsConstructor
+public enum UserEquityEnum {
+
+
+    BASICS(0, "基础权益"),
+    SMALL_LEADER(1, "小盟主权益"),
+    BIG_LEADER(2, "大盟主权益"),
+    PARTNER(3, "合伙人权益");
+
+
+    /**
+     * 类型
+     */
+    private final Integer type;
+
+    /**
+     * 描述
+     */
+    private final String description;
+}

+ 82 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/admin/AdminUserEquityController.java

@@ -0,0 +1,82 @@
+package com.kxs.user.biz.controller.admin;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.common.core.util.R;
+import com.kxs.common.log.annotation.SysLog;
+import com.kxs.user.api.model.KxsUserEquity;
+import com.kxs.user.biz.service.KxsUserEquityService;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.http.HttpHeaders;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 用户模块(AdminUserEquity)控制层
+ *
+ * @author 系统
+ * @since 2024-02-27 13:46:03
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("sysUserEquity")
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class AdminUserEquityController {
+
+    /**
+     * 服务对象
+     */
+    private final KxsUserEquityService kxsUserEquityService;
+
+
+    /**
+     * 我的职级-权益列表
+     *
+     * @param page 分页
+     * @param param 查询实体
+     * @return 我的职级-权益列表
+     */
+    @GetMapping("/page")
+    public R page(@ParameterObject Page<KxsUserEquity> page, @ParameterObject KxsUserEquity param) {
+        return R.ok(kxsUserEquityService.page(page, new QueryWrapper<>(param)));
+    }
+
+    /**
+     * 我的职级-权益新增/修改
+     *
+     * @param param 实体对象
+     * @return 我的职级-权益新增/修改
+     */
+    @SysLog("权益新增/修改")
+    @PostMapping("/save")
+//    @PreAuthorize("@pms.hasPermission('sys_equity_save')")
+    public R save(@RequestBody @Valid KxsUserEquity param) {
+
+        return R.ok(kxsUserEquityService.saveOrUpdate(param));
+    }
+
+    /**
+     * 我的职级-权益删除
+     *
+     * @param idsList id集合结合
+     * @return 我的职级-权益删除
+     */
+    @PostMapping("remove")
+    @SysLog("权益删除")
+//    @PreAuthorize("@pms.hasPermission('sys_equity_del')")
+    public R remove(@RequestBody List<Integer> idsList) {
+
+        return R.ok(kxsUserEquityService.removeBatchByIds(idsList));
+    }
+
+
+
+
+
+}
+

+ 68 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/UserLevelController.java

@@ -0,0 +1,68 @@
+package com.kxs.user.biz.controller.kxsapp;
+
+import com.kxs.common.core.util.R;
+import com.kxs.user.biz.service.KxsUserEquityService;
+import com.kxs.user.biz.service.KxsUserService;
+import com.kxs.user.biz.service.TradeDaySummaryService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 用户相关(UserLevel)控制层
+ *
+ * @author 系统
+ * @since 2024-02-26 17:19:48
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("userLevel")
+public class UserLevelController {
+
+    /**
+     * 服务对象
+     */
+    private final KxsUserService kxsUserService;
+    private final KxsUserEquityService kxsUserEquityService;
+    private final TradeDaySummaryService tradeDaySummaryService;
+
+
+
+    /**
+     * 我的职级-职级详情
+     *
+     * @return 我的职级-职级详情
+     */
+    @GetMapping("/levelDetail")
+    public R levelDetail() {
+        return R.ok(kxsUserService.levelDetail());
+    }
+
+
+    /**
+     * 我的职级-当月实时业绩详情
+     *
+     * @return 我的职级-当月实时业绩详情
+     */
+    @GetMapping("/amountDetail")
+    public R amountDetail() {
+
+        return R.ok(tradeDaySummaryService.amountDetail());
+    }
+
+
+    /**
+     * 我的职级-我的特权
+     *
+     * @return 我的职级-我的特权
+     */
+    @GetMapping("/equityList")
+    public R equityList() {
+
+        return R.ok(kxsUserEquityService.equityList());
+    }
+
+
+}
+

+ 23 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserEquityMapper.java

@@ -0,0 +1,23 @@
+package com.kxs.user.biz.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsUserEquity;
+import com.kxs.user.api.vo.kxsapp.userLevel.UserEquityListVO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 创客权益表(KxsUserEquity)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-02-26 17:19:44
+ */
+@Mapper
+public interface KxsUserEquityMapper extends BaseMapper<KxsUserEquity> {
+
+    List<UserEquityListVO> selectByList();
+
+}
+

+ 9 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kxs.user.api.model.KxsUser;
 import com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 用户表(KxsSecurityUser)表数据库访问层
@@ -21,5 +22,13 @@ public interface KxsUserMapper extends BaseMapper<KxsUser> {
      * @return {@link RealUserInfoVO}
      */
     RealUserInfoVO findUserRealBankInfo(Integer userId);
+
+    /**
+     * 选择最高级别
+     *
+     * @param userId 编号
+     * @return {@link Integer}
+     */
+    Integer selectMaxLevel(@Param("userId") Long userId);
 }
 

+ 28 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/old/TradeDaySummaryMapper.java

@@ -0,0 +1,28 @@
+package com.kxs.user.biz.mapper.old;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.old.TradeDaySummary;
+import com.kxs.user.api.vo.kxsapp.userLevel.AmountDetailVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 交易统计查询
+ *
+ * @author 没秃顶的码农
+ * @date 2024-02-27
+ */
+@Mapper
+@DS("KxsProfitServer")
+public interface TradeDaySummaryMapper extends BaseMapper<TradeDaySummary> {
+
+    /**
+     * 某月业绩pos 广电 助力宝的交易额
+     *
+     * @param userId    用户 ID
+     * @param queryMonth 本月
+     * @return {@link AmountDetailVO}
+     */
+    AmountDetailVO currentMonthsTotal(@Param("userId") Long userId, @Param("queryMonth") String queryMonth);
+}

+ 19 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserEquityService.java

@@ -0,0 +1,19 @@
+package com.kxs.user.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.user.api.model.KxsUserEquity;
+import com.kxs.user.api.vo.kxsapp.userLevel.UserEquityListVO;
+
+import java.util.List;
+
+/**
+ * 创客权益表(KxsUserEquity)表服务接口
+ *
+ * @author 系统
+ * @since 2024-02-26 17:19:45
+ */
+public interface KxsUserEquityService extends IService<KxsUserEquity> {
+
+    List<UserEquityListVO> equityList();
+}
+

+ 11 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserService.java

@@ -9,6 +9,8 @@ import com.kxs.user.api.model.KxsUser;
 import com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO;
 import com.kxs.user.api.vo.kxsapp.user.UserCodeInfoVO;
 import com.kxs.user.api.vo.kxsapp.user.UserInfoVO;
+import com.kxs.user.api.vo.kxsapp.userLevel.AmountDetailVO;
+import com.kxs.user.api.vo.kxsapp.userLevel.LevelDetailVO;
 
 /**
  * 用户表(KxsSecurityUser)表服务接口
@@ -190,5 +192,14 @@ public interface KxsUserService extends IService<KxsUser> {
      * @return {@link RealUserInfoVO}
      */
     RealUserInfoVO loadUserRealBankById(Integer userId);
+
+    /**
+     * 职级详情
+     *
+     * @return {@link LevelDetailVO}
+     */
+    LevelDetailVO levelDetail();
+
+
 }
 

+ 22 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/TradeDaySummaryService.java

@@ -0,0 +1,22 @@
+package com.kxs.user.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.user.api.model.old.TradeDaySummary;
+import com.kxs.user.api.vo.kxsapp.userLevel.AmountDetailVO;
+
+/**
+ * 交易统计查询
+ *
+ * @author 没秃顶的码农
+ * @date 2024-02-27
+ */
+public interface TradeDaySummaryService extends IService<TradeDaySummary> {
+
+
+    /**
+     * 当月实时业绩详情
+     *
+     * @return {@link AmountDetailVO}
+     */
+    AmountDetailVO amountDetail();
+}

+ 44 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserEquityServiceImpl.java

@@ -0,0 +1,44 @@
+package com.kxs.user.biz.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.user.api.model.KxsLeader;
+import com.kxs.user.api.model.KxsPartner;
+import com.kxs.user.api.model.KxsUser;
+import com.kxs.user.api.vo.kxsapp.userLevel.UserEquityListVO;
+import com.kxs.user.biz.mapper.KxsLeaderMapper;
+import com.kxs.user.biz.mapper.KxsPartnerMapper;
+import com.kxs.user.biz.mapper.KxsUserEquityMapper;
+import com.kxs.user.api.model.KxsUserEquity;
+import com.kxs.user.biz.mapper.KxsUserMapper;
+import com.kxs.user.biz.service.KxsUserEquityService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 创客权益表(KxsUserEquity)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-02-26 17:19:45
+ */
+@Service("kxsUserEquityService")
+@RequiredArgsConstructor
+public class KxsUserEquityServiceImpl extends ServiceImpl<KxsUserEquityMapper, KxsUserEquity> implements KxsUserEquityService {
+
+    private final KxsUserMapper kxsUserMapper;
+
+    private final KxsLeaderMapper kxsLeaderMapper;
+
+    private final KxsPartnerMapper kxsPartnerMapper;
+
+
+    @Override
+    public List<UserEquityListVO> equityList() {
+
+        return baseMapper.selectByList();
+    }
+}
+

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

@@ -1,7 +1,5 @@
 package com.kxs.user.biz.service.impl;
 
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.date.TimeInterval;
 import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -27,23 +25,19 @@ import com.kxs.system.api.util.MsgTemplateUtil;
 import com.kxs.user.api.dto.kxsapp.app.ForgetPwdDTO;
 import com.kxs.user.api.dto.kxsapp.app.RegisterDTO;
 import com.kxs.user.api.dto.kxsapp.user.*;
-import com.kxs.user.api.model.KxsUser;
-import com.kxs.user.api.model.KxsUserAmount;
-import com.kxs.user.api.model.KxsUserBank;
-import com.kxs.user.api.model.KxsUserReal;
+import com.kxs.user.api.model.*;
 import com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO;
 import com.kxs.user.api.vo.kxsapp.user.UserCodeInfoVO;
 import com.kxs.user.api.vo.kxsapp.user.UserInfoVO;
+import com.kxs.user.api.vo.kxsapp.userLevel.AmountDetailVO;
+import com.kxs.user.api.vo.kxsapp.userLevel.LevelDetailVO;
+import com.kxs.user.api.vo.kxsapp.userLevel.LevelsVO;
 import com.kxs.user.biz.constant.UserConstants;
 import com.kxs.user.biz.constant.enums.KxsUserStatusEnum;
 import com.kxs.user.biz.constant.enums.UserErrorTypeEnum;
 import com.kxs.user.biz.constant.enums.UserRealStatusEnum;
-import com.kxs.user.biz.mapper.KxsUserAmountMapper;
-import com.kxs.user.biz.mapper.KxsUserBankMapper;
-import com.kxs.user.biz.mapper.KxsUserMapper;
-import com.kxs.user.biz.mapper.KxsUserRealMapper;
+import com.kxs.user.biz.mapper.*;
 import com.kxs.user.biz.service.KxsUserService;
-import io.seata.core.context.RootContext;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
@@ -60,6 +54,8 @@ import org.springframework.security.web.authentication.preauth.PreAuthenticatedA
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.Objects;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
@@ -90,6 +86,12 @@ public class KxsUserServiceImpl extends ServiceImpl<KxsUserMapper, KxsUser> impl
 
     private final RemoteKxsStoreService remoteKxsStoreService;
 
+    private final KxsLeaderMapper kxsLeaderMapper;
+
+    private final KxsPartnerMapper kxsPartnerMapper;
+
+    private final KxsUserPresetLogMapper kxsUserPresetLogMapper;
+
 
     private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();
     
@@ -491,6 +493,78 @@ public class KxsUserServiceImpl extends ServiceImpl<KxsUserMapper, KxsUser> impl
         return baseMapper.findUserRealBankInfo(userId);
     }
 
+    @Override
+    public LevelDetailVO levelDetail() {
+
+        KxsUser user = this.getById(SecurityUtils.getUser().getId());
+
+        LevelDetailVO levelDetailVO = new LevelDetailVO();
+        levelDetailVO.setId(user.getId());
+        levelDetailVO.setUsername(user.getUsername());
+        levelDetailVO.setAvatar(user.getAvatar());
+        //上月业绩等级
+        levelDetailVO.setLastLevel(user.getUserLevel());
+        //查询用户最高职级
+        Integer level = baseMapper.selectMaxLevel(SecurityUtils.getUser().getId());
+        levelDetailVO.setUserLevel(level);
+
+        //查询各个职级列表
+        ArrayList<LevelsVO> levels = new ArrayList<>();
+
+        //合伙人职级
+        KxsPartner kxsPartner = kxsPartnerMapper.selectOne(Wrappers.<KxsPartner>lambdaQuery().eq(KxsPartner::getUserId, user.getId()));
+        if(kxsPartner != null){
+            LevelsVO levelsVO = new LevelsVO();
+            levelsVO.setLevelName("合伙人职级");
+            levelsVO.setLevel(kxsPartner.getPartnerLevel());
+            levelsVO.setExpiredDate(kxsPartner.getExpiredDate());
+            if(kxsPartner.getExpiredDate().isBefore(LocalDateTime.now())){
+                levelsVO.setStatus(0);
+            }else{
+                levelsVO.setStatus(1);
+            }
+            levels.add(levelsVO);
+        }
+        //盟主职级
+        KxsLeader kxsLeader = kxsLeaderMapper.selectOne(Wrappers.<KxsLeader>lambdaQuery().eq(KxsLeader::getUserId, user.getId()));
+        if(kxsLeader != null){
+            LevelsVO levelsVO = new LevelsVO();
+            levelsVO.setLevelName("盟主职级");
+            levelsVO.setLevel(kxsLeader.getLeaderLevel());
+            levelsVO.setExpiredDate(kxsLeader.getExpiredDate());
+            if(kxsLeader.getExpiredDate().isBefore(LocalDateTime.now())){
+                levelsVO.setStatus(0);
+            }else{
+                levelsVO.setStatus(1);
+            }
+            levels.add(levelsVO);
+        }
+        //预设职级
+        KxsUserPresetLog userPresetLog = kxsUserPresetLogMapper.selectOne(Wrappers.<KxsUserPresetLog>lambdaQuery().eq(KxsUserPresetLog::getUserId, user.getId()));
+        if(userPresetLog != null){
+            LevelsVO levelsVO = new LevelsVO();
+            levelsVO.setLevelName("预设职级");
+            levelsVO.setLevel(userPresetLog.getPresetLevel());
+            levelsVO.setExpiredDate(userPresetLog.getEndTime());
+            if(userPresetLog.getEndTime().isBefore(LocalDateTime.now())){
+                levelsVO.setStatus(0);
+            }else{
+                levelsVO.setStatus(1);
+            }
+            levels.add(levelsVO);
+        }
+        levelDetailVO.setLevels(levels);
+
+        return levelDetailVO;
+    }
+
+
+
+    public static void main(String[] args) {
+        System.out.println(ENCODER.encode("aa121314" +"abc108fa-2060-46fc-b21b-fd5246fecb86"));
+        System.out.println(ENCODER.matches("aa121314" +"abc108fa-2060-46fc-b21b-fd5246fecb86", "$2a$10$sBtcVoeOuemMvhVI.OIp3e9LNlamWTOglZdf1AcPIJRY1KKNUvrOW"));
+    }
+
 
     /**
      * 检查验证码

+ 34 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/TradeDaySummaryServiceImpl.java

@@ -0,0 +1,34 @@
+package com.kxs.user.biz.service.impl;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.user.api.model.old.TradeDaySummary;
+import com.kxs.user.api.vo.kxsapp.userLevel.AmountDetailVO;
+import com.kxs.user.biz.mapper.old.TradeDaySummaryMapper;
+import com.kxs.user.biz.service.TradeDaySummaryService;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+
+/**
+ * 交易统计查询
+ *
+ * @author 没秃顶的码农
+ * @date 2024-02-27
+ */
+@Service
+public class TradeDaySummaryServiceImpl extends ServiceImpl<TradeDaySummaryMapper, TradeDaySummary> implements TradeDaySummaryService {
+
+
+    @Override
+    public AmountDetailVO amountDetail() {
+
+        Long userId = SecurityUtils.getUser().getId();
+        String thisMonth = LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.SIMPLE_MONTH_PATTERN);
+
+        AmountDetailVO amountDetailVO = baseMapper.currentMonthsTotal(userId, thisMonth);
+        return amountDetailVO;
+    }
+}

+ 0 - 1
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsLeaderMapper.xml

@@ -13,7 +13,6 @@
         <result column="expired_date" property="expiredDate" />
         <result column="last_buy_date" property="lastBuyDate" />
         <result column="leader_level" property="leaderLevel" />
-        <result column="big_leader_id" property="bigLeaderId" />
 
     </resultMap>
 

+ 23 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserEquityMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kxs.user.biz.mapper.KxsUserEquityMapper">
+
+    <resultMap type="com.kxs.user.api.model.KxsUserEquity" id="KxsUserEquityMap">
+        <result column="id" property="id" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="del_flag" property="delFlag" />
+        <result column="version" property="version" />
+        <result column="icon_url" property="iconUrl" />
+        <result column="name" property="name" />
+        <result column="equity_type" property="equityType" />
+        <result column="sort" property="sort" />
+
+    </resultMap>
+    <select id="selectByList" resultType="com.kxs.user.api.vo.kxsapp.userLevel.UserEquityListVO">
+        select * from kxs_user_equity
+        where del_flag = 0
+        order by sort asc
+    </select>
+
+</mapper>

+ 34 - 24
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserMapper.xml

@@ -3,30 +3,30 @@
 <mapper namespace="com.kxs.user.biz.mapper.KxsUserMapper">
 
     <resultMap type="com.kxs.user.api.model.KxsUser" id="KxsUserMap">
-        <result column="id" property="id" />
-        <result column="is_min_warehouse" property="isMinWarehouse" />
-        <result column="is_merchant_maker" property="isMerchantMaker" />
-        <result column="status" property="status" />
-        <result column="version" property="version" />
-        <result column="real_status" property="realStatus" />
-        <result column="hand_pwd" property="handPwd" />
-        <result column="pay_pwd" property="payPwd" />
-        <result column="user_level" property="userLevel" />
-        <result column="salt" property="salt" />
-        <result column="avatar" property="avatar" />
-        <result column="user_code" property="userCode" />
-        <result column="pid_path" property="pidPath" />
-        <result column="pid" property="pid" />
-        <result column="address" property="address" />
-        <result column="phone" property="phone" />
-        <result column="password" property="password" />
-        <result column="username" property="username" />
-        <result column="remark" property="remark" />
-        <result column="hidden_level" property="hiddenLevel" />
-        <result column="del_flag" property="delFlag" />
-        <result column="update_time" property="updateTime" />
-        <result column="create_time" property="createTime" />
-        <result column="to_merchant_maker_time" property="toMerchantMakerTime" />
+        <result column="id" property="id"/>
+        <result column="is_min_warehouse" property="isMinWarehouse"/>
+        <result column="is_merchant_maker" property="isMerchantMaker"/>
+        <result column="status" property="status"/>
+        <result column="version" property="version"/>
+        <result column="real_status" property="realStatus"/>
+        <result column="hand_pwd" property="handPwd"/>
+        <result column="pay_pwd" property="payPwd"/>
+        <result column="user_level" property="userLevel"/>
+        <result column="salt" property="salt"/>
+        <result column="avatar" property="avatar"/>
+        <result column="user_code" property="userCode"/>
+        <result column="pid_path" property="pidPath"/>
+        <result column="pid" property="pid"/>
+        <result column="address" property="address"/>
+        <result column="phone" property="phone"/>
+        <result column="password" property="password"/>
+        <result column="username" property="username"/>
+        <result column="remark" property="remark"/>
+        <result column="hidden_level" property="hiddenLevel"/>
+        <result column="del_flag" property="delFlag"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="create_time" property="createTime"/>
+        <result column="to_merchant_maker_time" property="toMerchantMakerTime"/>
     </resultMap>
     <select id="findUserRealBankInfo" resultType="com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO">
         select a.phone, a.user_code, r.real_name, r.id_card, b.bank_name, b.bank_open, b.bank_phone, b.bank_code
@@ -37,6 +37,16 @@
             a.id = #{userId}
         </where>
     </select>
+    <select id="selectMaxLevel" resultType="java.lang.Integer">
+        select GREATEST(IFNULL(a.user_level, 0), IFNULL(leader.leader_level, 0), IFNULL(partner.partner_level, 0),
+                        IFNULL(preset.preset_level, 0))
+        from kxs_user a
+                 left join kxs_user_preset_log preset on a.id = preset.user_id and preset.end_time > now()
+                 left join kxs_leader leader on a.id = leader.user_id and leader.expired_date > now()
+                 left join kxs_partner partner on a.id = partner.user_id and partner.expired_date > now()
+        where a.id = #{userId}
+
+    </select>
 
 </mapper>
 

+ 34 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/TradeDaySummaryMapper.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kxs.user.biz.mapper.old.TradeDaySummaryMapper">
+
+
+    <select id="currentMonthsTotal" resultType="com.kxs.user.api.vo.kxsapp.userLevel.AmountDetailVO">
+        select IFNULL(sum(zlb.TradeAmount), 0) as zlb, IFNULL(gd.gdCount, 0) as gd, IFNULL(pos.posAmount + pos2.posAmount2,0) as pos
+        from HelpProfitUserTradeSummay zlb
+                 left join (select sum(ActiveBuddyMerStatus) as gdCount, UserId
+                            from UserTradeMonthSummary
+                            where UserId = #{userId}
+                              and TradeMonth = #{queryMonth}
+                              and SeoTitle = 'team'
+                              and BrandId = 14
+                            GROUP BY TradeMonth) gd on gd.UserId = zlb.UserId
+                 left join (select sum(HelpNonDirectTradeAmt  +HelpNonDirectDebitTradeAmt  +NotHelpNonDirectTradeAmt  +NotHelpNonDirectDebitTradeAmt  +ProfitNonDirectTradeAmt +ProfitNonDirectDebitTradeAmt ) as posAmount, UserId
+                            from TradeDaySummary
+                            where UserId = #{userId}
+                              and TradeMonth = #{queryMonth}
+                              and SeoTitle = 'team'
+                            GROUP BY TradeMonth) pos on pos.UserId = zlb.UserId
+                 left join (select sum(ProfitTradeAmt + ProfitDebitTradeAmt) as posAmount2, UserId
+                            from TradeDaySummary2
+                            where UserId = #{userId}
+                              and TradeMonth = #{queryMonth}
+                              and SeoTitle = 'team'
+                            GROUP BY TradeMonth) pos2 on pos2.UserId = zlb.UserId
+        where zlb.UserId = #{userId}
+          and zlb.TradeMonth = #{queryMonth}
+          and zlb.SeoTitle = 'team'
+        group by zlb.TradeMonth
+
+    </select>
+</mapper>