Bladeren bron

排名奖励

igl 1 jaar geleden
bovenliggende
commit
933375cb4c
49 gewijzigde bestanden met toevoegingen van 1118 en 22 verwijderingen
  1. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/AttentionDTO.java
  2. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/AttentionTotalDTO.java
  3. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/AttentionUserDTO.java
  4. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/BalanceDetailDTO.java
  5. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/DynamicCommentDTO.java
  6. 6 2
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/DynamicContentDTO.java
  7. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/DynamicEvaluateRecordDTO.java
  8. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/DynamicResourceDTO.java
  9. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/EvaluateDTO.java
  10. 78 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantRankDTO.java
  11. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/NewInformDTO.java
  12. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/NewMerchantInformDTO.java
  13. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsOrderOperateHistoryDTO.java
  14. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsOrderPayHistoryDTO.java
  15. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsOrderReturnApplyDTO.java
  16. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsOrderReturnApplyIdsDTO.java
  17. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/PlatformProfitRatioDTO.java
  18. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/ProfitRatioConfigDTO.java
  19. 74 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/RankAwardConfigDTO.java
  20. 69 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/RankAwardRecordDTO.java
  21. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/RegionDTO.java
  22. 63 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/AddRankAwardConfigParams.java
  23. 59 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/EditRankAwardConfigParams.java
  24. 33 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/HandRankAwardParam.java
  25. 6 1
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/QueryProfitRatioConfigParam.java
  26. 23 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/QueryRankAwardConfigParam.java
  27. 23 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/QueryRankAwardRecordParam.java
  28. 2 2
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/MerchantService.java
  29. 20 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/RankAwardConfigService.java
  30. 16 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/RankAwardRecordService.java
  31. 4 3
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/MerchantMapper.java
  32. 23 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/RankAwardConfigMapper.java
  33. 19 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/RankAwardRecordMapper.java
  34. 67 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/RankAwardConfig.java
  35. 74 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/RankAwardRecord.java
  36. 3 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Region.java
  37. 2 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/PlatformProfitRatioService.java
  38. 8 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/RankAwardConfigService.java
  39. 0 2
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/HelpServiceImpl.java
  40. 3 8
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.java
  41. 5 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/PlatformProfitRatioServiceImpl.java
  42. 133 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/RankAwardConfigServiceImpl.java
  43. 107 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/RankAwardRecordServiceImpl.java
  44. 29 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/task/RankAwardTask.java
  45. 4 1
      vehicle-server/src/main/resources/mapper/MerchantMapper.xml
  46. 1 1
      vehicle-server/src/main/resources/mapper/ProfitRatioConfigMapper.xml
  47. 44 0
      vehicle-server/src/main/resources/mapper/RankAwardConfigMapper.xml
  48. 17 0
      vehicle-server/src/main/resources/mapper/RankAwardRecordMapper.xml
  49. 1 2
      vehicle-server/src/main/resources/mapper/UserInviteMapper.xml

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/AttentionDTO.java

@@ -1,6 +1,9 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 
@@ -9,6 +12,9 @@ import java.io.Serializable;
  * @date: 2023/8/14 14:18
  */
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class AttentionDTO implements Serializable {
 
   private static final long serialVersionUID = -8364585953806128909L;

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/AttentionTotalDTO.java

@@ -1,6 +1,9 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 
@@ -9,6 +12,9 @@ import java.io.Serializable;
  * @date: 2023/8/15 11:47
  */
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class AttentionTotalDTO implements Serializable {
 
   private static final long serialVersionUID = 3582381027065193024L;

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/AttentionUserDTO.java

@@ -1,7 +1,10 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
 import com.chelvc.cloud.uc.api.dto.UserDTO;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 
@@ -12,6 +15,9 @@ import java.io.Serializable;
  * @date 2023/12/10 02:29
  */
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class AttentionUserDTO implements Serializable {
 
   private static final long serialVersionUID = -6263230284944185865L;

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/BalanceDetailDTO.java

@@ -1,12 +1,18 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class BalanceDetailDTO implements Serializable {
 
     private static final long serialVersionUID = 4117711721816177519L;

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/DynamicCommentDTO.java

@@ -1,7 +1,10 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
 import com.chelvc.cloud.uc.api.dto.UserDTO;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -15,6 +18,9 @@ import java.util.List;
  * @date 2023-02-25
  */
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class DynamicCommentDTO implements Serializable {
 
     private static final long serialVersionUID = 1005652278773682277L;

+ 6 - 2
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/DynamicContentDTO.java

@@ -1,8 +1,10 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
 import com.chelvc.cloud.uc.api.dto.UserDTO;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -16,7 +18,9 @@ import java.util.List;
  * @DATE: 2023/8/8 14:50
  */
 @Data
-@JsonIgnoreProperties(value = {"handler"})
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class DynamicContentDTO implements Serializable {
 
   private static final long serialVersionUID = -2576747290177271544L;

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/DynamicEvaluateRecordDTO.java

@@ -1,6 +1,9 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 /**
  * 内容评价(点赞/踩)列视图对象
@@ -9,6 +12,9 @@ import lombok.Data;
  * @date 2023-02-25
  */
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class DynamicEvaluateRecordDTO {
 
     private static final long serialVersionUID = 1L;

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/DynamicResourceDTO.java

@@ -1,7 +1,10 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 
@@ -13,6 +16,9 @@ import java.io.Serializable;
  * @DATE: 2023/8/8 14:53
  */
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 @JsonIgnoreProperties(value = {"handler"})
 public class DynamicResourceDTO implements Serializable {
 

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/EvaluateDTO.java

@@ -1,10 +1,16 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class EvaluateDTO implements Serializable {
 
     private static final long serialVersionUID = 2178904797700518635L;

+ 78 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantRankDTO.java

@@ -0,0 +1,78 @@
+package com.chelvc.cloud.vehicle.api.dto;
+
+import com.chelvc.cloud.vehicle.api.constant.MerchantStatus;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 商家排名信息
+ */
+
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MerchantRankDTO implements Serializable {
+
+    private static final long serialVersionUID = -8220382300856423786L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 商家名称
+     */
+    private String name;
+
+    /**
+     * 商家Logo
+     */
+    private String logo;
+
+    /**
+     * 当月完成订单数
+     */
+    private Integer orderNum;
+
+    /**
+     * 当月营业额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 商家评分
+     */
+    private Double score;
+
+    /**
+     * 商家状态
+     */
+    private MerchantStatus status;
+
+    /**
+     * 距离(米)
+     */
+    private Integer distance;
+
+    /**
+     * 详细地址
+     */
+    private String address;
+
+    /**
+     * 所有订单销量
+     */
+    private Integer sale;
+}

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/NewInformDTO.java

@@ -1,10 +1,16 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class NewInformDTO implements Serializable {
 
     /**

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/NewMerchantInformDTO.java

@@ -1,10 +1,16 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class NewMerchantInformDTO implements Serializable {
 
     private static final long serialVersionUID = -6168480068452177194L;

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsOrderOperateHistoryDTO.java

@@ -1,10 +1,16 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.util.Date;
 
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class OmsOrderOperateHistoryDTO {
 
     private Long id;

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsOrderPayHistoryDTO.java

@@ -1,10 +1,16 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class OmsOrderPayHistoryDTO implements Serializable {
 
     private static final long serialVersionUID = 1L;

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsOrderReturnApplyDTO.java

@@ -1,13 +1,19 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class OmsOrderReturnApplyDTO implements Serializable {
 
     private static final long serialVersionUID = -7158413191077685950L;

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsOrderReturnApplyIdsDTO.java

@@ -1,12 +1,18 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 import java.util.Date;
 
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class OmsOrderReturnApplyIdsDTO implements Serializable {
 
     private static final long serialVersionUID = -6400571350996131623L;

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/PlatformProfitRatioDTO.java

@@ -1,12 +1,18 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class PlatformProfitRatioDTO implements Serializable {
 
     private static final long serialVersionUID = 4624792200393967056L;

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/ProfitRatioConfigDTO.java

@@ -1,11 +1,17 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 import java.util.Date;
 
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class ProfitRatioConfigDTO implements Serializable {
 
     private static final long serialVersionUID = -9007530650121576786L;

+ 74 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/RankAwardConfigDTO.java

@@ -0,0 +1,74 @@
+package com.chelvc.cloud.vehicle.api.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class RankAwardConfigDTO implements Serializable {
+
+    private static final long serialVersionUID = -9007530650121576786L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 排名上限
+     */
+    private int rankHigh;
+
+    /**
+     * 排名下限
+     */
+    private int rankLow;
+
+    /**
+     * 类类型:1-月排行榜  暂时默认为1
+     */
+    private Integer type;
+
+    /**
+     * 平台类型:1-用户;2-商家 暂时默认为2
+     */
+    private Integer platformType;
+
+    /**
+     * 奖励金额
+     */
+    private BigDecimal bonus;
+
+    /**
+     * 状态:0-正常;1-停用
+     */
+    private Integer status;
+
+    /**
+     * 创建用户
+     */
+    private Long creator;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新用户
+     */
+    private Long updater;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+}

+ 69 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/RankAwardRecordDTO.java

@@ -0,0 +1,69 @@
+package com.chelvc.cloud.vehicle.api.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class RankAwardRecordDTO implements Serializable {
+
+    private static final long serialVersionUID = -4303023669527956665L;
+
+    /**
+     * 主键标识
+     */
+    private Long id;
+
+    /**
+     * 用户标识
+     */
+    private Long userId;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 排名
+     */
+    private int rank;
+
+    /**
+     * 周期
+     */
+    private int period;
+
+    /**
+     * 类类型:类型:0-年;1-季;2-月;3-周;4-日  暂时默认为2
+     */
+    private Integer type;
+
+    /**
+     * 平台类型:1-用户;2-商家 暂时默认为2
+     */
+    private Integer platformType;
+
+    /**
+     * 奖励金额
+     */
+    private BigDecimal bonus;
+
+    /**
+     * 派奖时间
+     */
+    private LocalDateTime awardTime;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+}

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/RegionDTO.java

@@ -1,10 +1,16 @@
 package com.chelvc.cloud.vehicle.api.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 
 @Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
 public class RegionDTO implements Serializable {
 
     private static final long serialVersionUID = 5068010923329475966L;

+ 63 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/AddRankAwardConfigParams.java

@@ -0,0 +1,63 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+public class AddRankAwardConfigParams implements Serializable {
+
+    private static final long serialVersionUID = -3003327769503676313L;
+
+    /**
+     * 排名名称
+     */
+    private String name;
+
+    /**
+     * 排名
+     */
+    @Min(value = 1, message = "排名不能小于1")
+    @NotNull(message = "排名不能为空")
+    private Integer rank;
+
+    /**
+     * 类型:0-年;1-季;2-月;3-周;4-日  暂时默认传2
+     */
+    private Integer type = 2;
+
+    /**
+     * 平台类型:1-用户;2-商家  暂时默认传2
+     */
+    private Integer platformType = 2;
+
+    /**
+     * 奖金比例
+     */
+    @NotNull(message = "奖金比例不能为空")
+    @Min(value = 0, message = "奖金比例不能小于0")
+    @Max(value = 100, message = "奖金比例不能大于100")
+    private Integer ratio;
+
+    /**
+     * 平台抽佣比例
+     */
+    @NotNull(message = "平台抽佣比例不能为空")
+    @Min(value = 0, message = "平台抽佣比例不能小于0")
+    @Max(value = 100, message = "平台抽佣比例不能大于100")
+    private Integer commissionRatio;
+
+    /**
+     * 区域等级:0-国家;1-省;2-市;3-区
+     */
+    @NotNull(message = "区域等级不能为空")
+    private Integer regionLevel;
+
+    /**
+     * 前端不传
+     */
+    private Long userId;
+}

+ 59 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/EditRankAwardConfigParams.java

@@ -0,0 +1,59 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+public class EditRankAwardConfigParams implements Serializable {
+
+    private static final long serialVersionUID = 1560070976943307796L;
+
+    /**
+     * 排名名称
+     */
+    private String name;
+
+    @NotNull(message = "主键不能为空")
+    private Long id;
+
+    /**
+     * 排名
+     */
+    @Min(value = 1, message = "排名不能小于1")
+    @NotNull(message = "排名不能为空")
+    private Integer rank;
+
+    /**
+     * 平台抽佣比例
+     */
+    @NotNull(message = "平台抽佣比例不能为空")
+    @Min(value = 0, message = "平台抽佣比例不能小于0")
+    @Max(value = 100, message = "平台抽佣比例不能大于100")
+    private Integer commissionRatio;
+
+    /**
+     * 区域等级:0-国家;1-省;2-市;3-区
+     */
+    @NotNull(message = "区域等级不能为空")
+    private Integer regionLevel;
+
+    /**
+     * 奖金比例
+     */
+    @NotNull(message = "奖金比例不能为空")
+    @Min(value = 0, message = "奖金比例不能小于0")
+    @Max(value = 100, message = "奖金比例不能大于100")
+    private Integer ratio;
+
+    @NotNull(message = "状态不能为空")
+    private Integer status;
+
+    /**
+     * 前端不传
+     */
+    private Long userId;
+}

+ 33 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/HandRankAwardParam.java

@@ -0,0 +1,33 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 手动发奖参数
+ */
+@Data
+public class HandRankAwardParam implements Serializable {
+
+    private static final long serialVersionUID = 8128758674914161821L;
+
+    /**
+     * 用户标识
+     */
+    @NotNull(message = "用户标识不能为空")
+    private Long userId;
+
+    /**
+     * 派奖标识
+     */
+    @NotNull(message = "派奖标识不能为空")
+    private Long awardId;
+
+    /**
+     * 周期
+     */
+    @NotNull(message = "周期不能为空")
+    private Integer period;
+}

+ 6 - 1
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/QueryProfitRatioConfigParam.java

@@ -8,7 +8,12 @@ import java.io.Serializable;
 public class QueryProfitRatioConfigParam implements Serializable {
 
     private static final long serialVersionUID = -4915533571039390572L;
-
+    /**
+     * 类型:1-平台;2-邀请用户;3-邀请商家
+     */
     private Integer type;
+    /**
+     * 状态:0-正常;1-停用
+     */
     private Integer status;
 }

+ 23 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/QueryRankAwardConfigParam.java

@@ -0,0 +1,23 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class QueryRankAwardConfigParam implements Serializable {
+
+    private static final long serialVersionUID = -4915533571333390572L;
+    /**
+     * 类型:0-年;1-季;2-月;3-周;4-日 暂时默认传2
+     */
+    private Integer type = 2;
+    /**
+     * 平台类型:1-用户;2-商家  暂时默认传2
+     */
+    private Integer platformType = 2;
+    /**
+     * 状态:0-正常;1-停用
+     */
+    private Integer status;
+}

+ 23 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/QueryRankAwardRecordParam.java

@@ -0,0 +1,23 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class QueryRankAwardRecordParam implements Serializable {
+
+    private static final long serialVersionUID = -4915533238089390572L;
+    /**
+     * 类型:0-年;1-季;2-月;3-周;4-日 暂时默认传2
+     */
+    private Integer type = 2;
+    /**
+     * 平台类型:1-用户;2-商家  暂时默认传2
+     */
+    private Integer platformType = 2;
+    /**
+     * 周期
+     */
+    private Integer period;
+}

+ 2 - 2
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/MerchantService.java

@@ -2,7 +2,7 @@ package com.chelvc.cloud.vehicle.api.service;
 
 import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDetailDTO;
-import com.chelvc.cloud.vehicle.api.dto.UserAllCartItemDTO;
+import com.chelvc.cloud.vehicle.api.dto.MerchantRankDTO;
 import com.chelvc.cloud.vehicle.api.param.*;
 import com.chelvc.framework.common.model.Pagination;
 
@@ -109,7 +109,7 @@ public interface MerchantService {
      * @param userId
      * @return
      */
-    List<MerchantDTO> listRankMerchants(MerchantRankParam param, Long userId);
+    List<MerchantRankDTO> listRankMerchants(MerchantRankParam param, Long userId);
 
     /**
      * 我的购物车列表

+ 20 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/RankAwardConfigService.java

@@ -0,0 +1,20 @@
+package com.chelvc.cloud.vehicle.api.service;
+
+import com.chelvc.cloud.vehicle.api.dto.RankAwardConfigDTO;
+import com.chelvc.cloud.vehicle.api.param.AddRankAwardConfigParams;
+import com.chelvc.cloud.vehicle.api.param.EditRankAwardConfigParams;
+import com.chelvc.cloud.vehicle.api.param.QueryRankAwardConfigParam;
+import com.chelvc.framework.common.model.Pagination;
+
+public interface RankAwardConfigService {
+
+    void add(AddRankAwardConfigParams params);
+
+    void edit(EditRankAwardConfigParams params);
+
+    void delete(Long id, Long userId);
+
+    Pagination<RankAwardConfigDTO> queryPageList(QueryRankAwardConfigParam param, Long pageNum,
+                                                 Long pageSize);
+
+}

+ 16 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/RankAwardRecordService.java

@@ -0,0 +1,16 @@
+package com.chelvc.cloud.vehicle.api.service;
+
+import com.chelvc.cloud.vehicle.api.dto.RankAwardRecordDTO;
+import com.chelvc.cloud.vehicle.api.param.HandRankAwardParam;
+import com.chelvc.cloud.vehicle.api.param.QueryRankAwardRecordParam;
+import com.chelvc.framework.common.model.Pagination;
+
+public interface RankAwardRecordService {
+
+    Pagination<RankAwardRecordDTO> queryPageList(QueryRankAwardRecordParam param, Long pageNum,
+                                                 Long pageSize);
+
+    void handOutPrize(HandRankAwardParam param);
+
+    void awardRank();
+}

+ 4 - 3
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/MerchantMapper.java

@@ -2,6 +2,7 @@ package com.chelvc.cloud.vehicle.server.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
+import com.chelvc.cloud.vehicle.api.dto.MerchantRankDTO;
 import com.chelvc.cloud.vehicle.api.param.LocationQueryParam;
 import com.chelvc.cloud.vehicle.api.param.MerchantQueryParam;
 import com.chelvc.cloud.vehicle.server.entity.Merchant;
@@ -70,9 +71,9 @@ public interface MerchantMapper extends BaseMapper<Merchant> {
      * @param level
      * @return
      */
-    List<MerchantDTO> listRankMerchants(@Param("merchantId")LocalDateTime monthStartLocalTime, @Param("regionId")Integer regionId,
-                                        @Param("longitude")Double longitude,
-                                        @Param("latitude")Double latitude, @Param("level")int level);
+    List<MerchantRankDTO> listRankMerchants(@Param("merchantId")LocalDateTime monthStartLocalTime, @Param("regionId")Integer regionId,
+                                            @Param("longitude")Double longitude,
+                                            @Param("latitude")Double latitude, @Param("level")int level);
 
     /**
      * 查询用户名下得店铺

+ 23 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/RankAwardConfigMapper.java

@@ -0,0 +1,23 @@
+package com.chelvc.cloud.vehicle.server.dao;
+
+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.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.chelvc.cloud.vehicle.api.dto.RankAwardConfigDTO;
+import com.chelvc.cloud.vehicle.server.entity.RankAwardConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface RankAwardConfigMapper extends BaseMapper<RankAwardConfig> {
+
+    IPage<RankAwardConfigDTO> queryPageList(@Param("page") Page<RankAwardConfigDTO> page,
+                                            @Param(Constants.WRAPPER) QueryWrapper<RankAwardConfig> wrapper);
+
+    List<RankAwardConfig> checkOtherRankConfig(@Param("page") Integer type, @Param("page") Integer platformType,
+                                               @Param("page") int rankHigh, @Param("page") int rankLow, @Param("id") Long id);
+}

+ 19 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/RankAwardRecordMapper.java

@@ -0,0 +1,19 @@
+package com.chelvc.cloud.vehicle.server.dao;
+
+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.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.chelvc.cloud.vehicle.api.dto.RankAwardRecordDTO;
+import com.chelvc.cloud.vehicle.server.entity.RankAwardConfig;
+import com.chelvc.cloud.vehicle.server.entity.RankAwardRecord;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface RankAwardRecordMapper extends BaseMapper<RankAwardRecord> {
+
+    IPage<RankAwardRecordDTO> queryPageList(@Param("page") Page<RankAwardRecordDTO> page,
+                                            @Param(Constants.WRAPPER) QueryWrapper<RankAwardConfig> wrapper);
+}

+ 67 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/RankAwardConfig.java

@@ -0,0 +1,67 @@
+package com.chelvc.cloud.vehicle.server.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.chelvc.framework.database.entity.BasicEntity;
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 排行榜奖励配置
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+public class RankAwardConfig extends BasicEntity<Long> {
+
+    private static final long serialVersionUID = -4564762089152632410L;
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 排名名称
+     */
+    private String name;
+
+    /**
+     * 排名
+     */
+    private int rank;
+
+    /**
+     * 类型:0-年;1-季;2-月;3-周;4-日 暂时默认为2
+     */
+    private Integer type;
+
+    /**
+     * 平台类型:1-用户;2-商家 暂时默认为2
+     */
+    private Integer platformType;
+
+    /**
+     * 奖金比例
+     */
+    private Integer ratio;
+
+    /**
+     * 平台抽佣比例
+     */
+    private Integer commissionRatio;
+
+    /**
+     * 区域等级:0-国家;1-省;2-市;3-区
+     */
+    private Integer regionLevel;
+
+    /**
+     * 状态:0-正常;1-停用
+     */
+    private Integer status;
+}

+ 74 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/RankAwardRecord.java

@@ -0,0 +1,74 @@
+package com.chelvc.cloud.vehicle.server.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 派奖记录
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(callSuper = true)
+public class RankAwardRecord implements Serializable {
+
+    private static final long serialVersionUID = -45647620845346610L;
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 用户标识
+     */
+    private Long userId;
+
+    /**
+     * 排名
+     */
+    private int rank;
+
+    /**
+     * 周期
+     */
+    private int period;
+
+    /**
+     * 类类型:类型:0-年;1-季;2-月;3-周;4-日  暂时默认为2
+     */
+    private Integer type;
+
+    /**
+     * 平台类型:1-用户;2-商家 暂时默认为2
+     */
+    private Integer platformType;
+
+    /**
+     * 区域等级:0-国家;1-省;2-市;3-区
+     */
+    private Integer regionLevel;
+
+    /**
+     * 奖励金额
+     */
+    private BigDecimal bonus;
+
+    /**
+     * 派奖时间
+     */
+    private LocalDateTime awardTime;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+}

+ 3 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Region.java

@@ -1,5 +1,7 @@
 package com.chelvc.cloud.vehicle.server.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -17,6 +19,7 @@ public class Region implements Serializable {
 
     private static final long serialVersionUID = 1639376448398184907L;
 
+    @TableId(type = IdType.AUTO)
     private Integer id;
     private String NAME;
     private int pid;

+ 2 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/PlatformProfitRatioService.java

@@ -10,4 +10,6 @@ public interface PlatformProfitRatioService {
      * @return
      */
     int queryRatio(Long merchantId);
+
+    void aaa();
 }

+ 8 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/RankAwardConfigService.java

@@ -0,0 +1,8 @@
+package com.chelvc.cloud.vehicle.server.service;
+
+import com.chelvc.cloud.vehicle.server.entity.RankAwardConfig;
+
+public interface RankAwardConfigService {
+
+    RankAwardConfig queryById(Long id);
+}

+ 0 - 2
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/HelpServiceImpl.java

@@ -18,8 +18,6 @@ import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
 
 import java.util.Date;
 import java.util.List;

+ 3 - 8
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.java

@@ -8,11 +8,7 @@ import com.chelvc.cloud.uc.api.dto.UserDTO;
 import com.chelvc.cloud.uc.api.service.EmployeeService;
 import com.chelvc.cloud.uc.api.service.UserService;
 import com.chelvc.cloud.vehicle.api.constant.MerchantStatus;
-import com.chelvc.cloud.vehicle.api.dto.CategoryDTO;
-import com.chelvc.cloud.vehicle.api.dto.GoodsDTO;
-import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
-import com.chelvc.cloud.vehicle.api.dto.MerchantDetailDTO;
-import com.chelvc.cloud.vehicle.api.dto.UserAllCartItemDTO;
+import com.chelvc.cloud.vehicle.api.dto.*;
 import com.chelvc.cloud.vehicle.api.param.*;
 import com.chelvc.cloud.vehicle.api.util.DateTimeUtils;
 import com.chelvc.cloud.vehicle.server.copier.MerchantCopier;
@@ -229,8 +225,8 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
     }
 
     @Override
-    public List<MerchantDTO> listRankMerchants(MerchantRankParam param, Long userId) {
-        List<MerchantDTO> result = new ArrayList<>();
+    public List<MerchantRankDTO> listRankMerchants(MerchantRankParam param, Long userId) {
+        List<MerchantRankDTO> result = new ArrayList<>();
         Integer regionId = param.getRegionId();
         Double longitude = (double) 0;
         Double latitude = (double) 0;
@@ -249,7 +245,6 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
             if(user == null){
                 return result;
             }
-            //LocationHandler locationHandler = locationHandlerConfig.getBean();
             Address address = locationHandler.ip2address(user.getHost());
             if(address == null){
                return result;

+ 5 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/PlatformProfitRatioServiceImpl.java

@@ -85,6 +85,11 @@ public class PlatformProfitRatioServiceImpl extends ServiceImpl<PlatformProfitRa
         return init(merchantId);
     }
 
+    @Override
+    public void aaa() {
+        System.out.println("1111111111");
+    }
+
     @Override
     public Pagination<PlatformProfitRatioDTO> queryPageList(QueryPlatformProfitRatioParam param, Long pageNum, Long pageSize) {
         Page<PlatformProfitRatioDTO> page = new Page<>(pageNum, pageSize);

+ 133 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/RankAwardConfigServiceImpl.java

@@ -0,0 +1,133 @@
+package com.chelvc.cloud.vehicle.server.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chelvc.cloud.vehicle.api.dto.RankAwardConfigDTO;
+import com.chelvc.cloud.vehicle.api.param.AddRankAwardConfigParams;
+import com.chelvc.cloud.vehicle.api.param.EditRankAwardConfigParams;
+import com.chelvc.cloud.vehicle.api.param.QueryRankAwardConfigParam;
+import com.chelvc.cloud.vehicle.server.dao.RankAwardConfigMapper;
+import com.chelvc.cloud.vehicle.server.entity.RankAwardConfig;
+import com.chelvc.cloud.vehicle.server.service.RankAwardConfigService;
+import com.chelvc.framework.base.exception.ResourceUnavailableException;
+import com.chelvc.framework.common.model.Pagination;
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
+@DubboService(interfaceClass = com.chelvc.cloud.vehicle.api.service.RankAwardConfigService.class)
+public class RankAwardConfigServiceImpl extends ServiceImpl<RankAwardConfigMapper, RankAwardConfig> implements
+        RankAwardConfigService, com.chelvc.cloud.vehicle.api.service.RankAwardConfigService{
+
+
+    @Override
+    public void add(AddRankAwardConfigParams params) {
+        Integer rank = params.getRank();
+        Integer regionLevel = params.getRegionLevel();
+        Integer type = params.getType();
+        Integer platformType = params.getPlatformType();
+        LambdaQueryWrapper<RankAwardConfig> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(RankAwardConfig::getRank, rank);
+        wrapper.eq(RankAwardConfig::getStatus, 0);
+        wrapper.eq(RankAwardConfig::getPlatformType, platformType);
+        wrapper.eq(RankAwardConfig::getType, type);
+        wrapper.eq(RankAwardConfig::getRegionLevel, regionLevel);
+        if(baseMapper.selectCount(wrapper) > 0){
+            throw new ResourceUnavailableException("当前排名配置已存在");
+        }
+        RankAwardConfig config = new RankAwardConfig();
+        config.setName(params.getName());
+        config.setRatio(params.getRatio());
+        config.setType(params.getType());
+        config.setRank(rank);
+        config.setRegionLevel(regionLevel);
+        config.setCommissionRatio(params.getCommissionRatio());
+        config.setPlatformType(params.getPlatformType());
+        config.setStatus(0);
+        config.setCreateTime(new Date());
+        config.setUpdateTime(new Date());
+        config.setCreator(params.getUserId());
+        config.setUpdater(params.getUserId());
+        baseMapper.insert(config);
+    }
+
+    @Override
+    public void edit(EditRankAwardConfigParams params) {
+        RankAwardConfig config = baseMapper.selectById(params.getId());
+        if(config == null){
+            throw new ResourceUnavailableException("该配置不存在");
+        }
+        Integer status = params.getStatus();
+        if(status == 1){
+            config.setStatus(1);
+            config.setUpdater(params.getUserId());
+            config.setUpdateTime(new Date());
+            baseMapper.updateById(config);
+            return;
+        }
+        Integer rank = params.getRank();
+        Integer regionLevel = params.getRegionLevel();
+        LambdaQueryWrapper<RankAwardConfig> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(RankAwardConfig::getRank, rank);
+        wrapper.eq(RankAwardConfig::getStatus, 0);
+        wrapper.eq(RankAwardConfig::getPlatformType, config.getPlatformType());
+        wrapper.eq(RankAwardConfig::getType, config.getType());
+        wrapper.eq(RankAwardConfig::getRegionLevel, regionLevel);
+        wrapper.ne(RankAwardConfig::getId, config.getId());
+        if(baseMapper.selectCount(wrapper) > 0){
+            throw new ResourceUnavailableException("当前排名配置已存在");
+        }
+        config.setName(params.getName());
+        config.setRank(rank);
+        config.setRegionLevel(regionLevel);
+        config.setCommissionRatio(params.getCommissionRatio());
+        config.setStatus(params.getStatus());
+        config.setRatio(params.getRatio());
+        config.setUpdater(params.getUserId());
+        config.setUpdateTime(new Date());
+        baseMapper.updateById(config);
+    }
+
+    @Override
+    @Transactional
+    public void delete(Long id, Long userId) {
+        RankAwardConfig config = baseMapper.selectById(id);
+        if(config == null){
+            throw new ResourceUnavailableException("该配置不存在");
+        }
+        Integer status = config.getStatus();
+        if(status == 0){
+            throw new ResourceUnavailableException("请先停用该配置");
+        }
+        config.setUpdater(userId);
+        config.setUpdateTime(new Date());
+        baseMapper.update(config, null);
+        baseMapper.deleteById(id);
+    }
+
+    @Override
+    public Pagination<RankAwardConfigDTO> queryPageList(QueryRankAwardConfigParam param, Long pageNum, Long pageSize) {
+        Page<RankAwardConfigDTO> page = new Page<>(pageNum, pageSize);
+        QueryWrapper<RankAwardConfig> wrapper = Wrappers.query();
+        wrapper.eq(param.getType() != null, "type", param.getType());
+        wrapper.eq(param.getPlatformType() != null, "platform_type", param.getPlatformType());
+        wrapper.eq(param.getStatus() != null, "status", param.getStatus());
+        wrapper.orderByAsc("rank_high");
+        IPage<RankAwardConfigDTO> result = baseMapper.queryPageList(page, wrapper);
+        return Pagination.<RankAwardConfigDTO>builder().total(result.getTotal()).pages(result.getPages())
+                .records(result.getRecords()).build();
+    }
+
+    @Override
+    public RankAwardConfig queryById(Long id) {
+        return baseMapper.selectById(id);
+    }
+}

+ 107 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/RankAwardRecordServiceImpl.java

@@ -0,0 +1,107 @@
+package com.chelvc.cloud.vehicle.server.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chelvc.cloud.uc.api.dto.UserDTO;
+import com.chelvc.cloud.uc.api.service.UserService;
+import com.chelvc.cloud.vehicle.api.dto.RankAwardRecordDTO;
+import com.chelvc.cloud.vehicle.api.param.HandRankAwardParam;
+import com.chelvc.cloud.vehicle.api.param.QueryRankAwardRecordParam;
+import com.chelvc.cloud.vehicle.api.service.RankAwardRecordService;
+import com.chelvc.cloud.vehicle.server.dao.RankAwardRecordMapper;
+import com.chelvc.cloud.vehicle.server.entity.RankAwardConfig;
+import com.chelvc.cloud.vehicle.server.entity.RankAwardRecord;
+import com.chelvc.cloud.vehicle.server.service.RankAwardConfigService;
+import com.chelvc.framework.base.exception.ResourceUnavailableException;
+import com.chelvc.framework.common.model.Pagination;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
+@DubboService(interfaceClass = com.chelvc.cloud.vehicle.api.service.RankAwardRecordService.class)
+public class RankAwardRecordServiceImpl extends ServiceImpl<RankAwardRecordMapper, RankAwardRecord> implements RankAwardRecordService {
+
+    @DubboReference
+    UserService userService;
+    private final RankAwardConfigService rankAwardConfigService;
+
+    @Override
+    public Pagination<RankAwardRecordDTO> queryPageList(QueryRankAwardRecordParam param, Long pageNum, Long pageSize) {
+        Page<RankAwardRecordDTO> page = new Page<>(pageNum, pageSize);
+        QueryWrapper<RankAwardConfig> wrapper = Wrappers.query();
+        wrapper.eq(param.getType() != null, "r.type", param.getType());
+        wrapper.eq(param.getPlatformType() != null, "r.platform_type", param.getPlatformType());
+        wrapper.eq(param.getPeriod() != null, "r.period", param.getPeriod());
+        wrapper.orderByDesc("r.create_time");
+        IPage<RankAwardRecordDTO> result = baseMapper.queryPageList(page, wrapper);
+        List<RankAwardRecordDTO> records = result.getRecords();
+        if(!CollectionUtils.isEmpty(records) && param.getPlatformType() != null && param.getPlatformType() !=2){
+            List<Long> userIds = records.stream().filter(e -> e.getPlatformType() != 2).map(RankAwardRecordDTO::getUserId).collect(Collectors.toList());
+            if(!CollectionUtils.isEmpty(userIds)){
+                Map<Long, UserDTO> userMap = userService.queryUserByIds(userIds);
+                if(userMap != null){
+                    for(RankAwardRecordDTO dto : records){
+                        Integer platformType = dto.getPlatformType();
+                        if(platformType != 2){
+                            UserDTO userDTO = userMap.get(dto.getUserId());
+                            dto.setName(userDTO == null ? "" : userDTO.getNickname());
+                        }
+                    }
+                }
+            }
+        }
+        return Pagination.<RankAwardRecordDTO>builder().total(result.getTotal()).pages(result.getPages())
+                .records(result.getRecords()).build();
+    }
+
+    @Override
+    public void handOutPrize(HandRankAwardParam param) {
+        Long awardId = param.getAwardId();
+        RankAwardConfig config = rankAwardConfigService.queryById(awardId);
+        if(config == null){
+            throw new ResourceUnavailableException("参数错误");
+        }
+        Integer period = param.getPeriod();
+        Long userId = param.getUserId();
+        LambdaQueryWrapper<RankAwardRecord> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(RankAwardRecord::getUserId, userId);
+        wrapper.eq(RankAwardRecord::getType, config.getType());
+        wrapper.eq(RankAwardRecord::getPlatformType, config.getPlatformType());
+        wrapper.eq(RankAwardRecord::getPeriod, period);
+        List<RankAwardRecord> rankAwardRecords = baseMapper.selectList(wrapper);
+        if(!CollectionUtils.isEmpty(rankAwardRecords)){
+            throw new ResourceUnavailableException("本次奖励已发放");
+        }
+        //TODO  发放奖励
+
+        RankAwardRecord record = new RankAwardRecord();
+        record.setUserId(userId);
+        //TODO  比例转成具体金额
+        record.setBonus(new BigDecimal(config.getRatio()));
+        record.setRegionLevel(config.getRegionLevel());
+        record.setPeriod(period);
+        record.setType(config.getType());
+        record.setPlatformType(config.getPlatformType());
+        record.setAwardTime(LocalDateTime.now());
+        record.setCreateTime(LocalDateTime.now());
+        baseMapper.insert(record);
+    }
+
+    @Override
+    public void awardRank() {
+
+    }
+}

+ 29 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/task/RankAwardTask.java

@@ -0,0 +1,29 @@
+package com.chelvc.cloud.vehicle.server.task;
+
+import com.chelvc.cloud.vehicle.api.service.RankAwardRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * 排行榜奖励发送
+ */
+@Slf4j
+@Component
+@EnableScheduling //开启定时任务
+public class RankAwardTask {
+
+    @Autowired
+    RankAwardRecordService rankAwardRecordService;
+
+    /**
+     * 月榜
+     */
+    @Scheduled(cron = "0 0 5 1 * ?") //每月第一天凌晨5点
+    public void awardRank(){
+        log.info("触发发送商家月排行榜奖励定时任务==============");
+        rankAwardRecordService.awardRank();
+    }
+}

+ 4 - 1
vehicle-server/src/main/resources/mapper/MerchantMapper.xml

@@ -91,15 +91,18 @@
           AND user_id = #{userId}
     </select>
 
-    <select id="listRankMerchants" resultType="com.chelvc.cloud.vehicle.api.dto.MerchantDTO">
+    <select id="listRankMerchants" resultType="com.chelvc.cloud.vehicle.api.dto.MerchantRankDTO">
         SELECT
             mt.id,
+            mt.user_id as userId,
             mt.NAME,
             mt.logo,
             mt.score,
             mt.sale,
+            mt.status,
             mt.address,
             SUM( om.pay_amount ) amount,
+            count( om.id ) orderNum,
             round(
                     st_distance_sphere ( POINT ( mt.longitude, mt.latitude ), POINT ( #{param.longitude}, #{param.latitude}) )) distance
         FROM

+ 1 - 1
vehicle-server/src/main/resources/mapper/ProfitRatioConfigMapper.xml

@@ -1,6 +1,6 @@
 <?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.chelvc.cloud.vehicle.server.dao.UserCouponMapper">
+<mapper namespace="com.chelvc.cloud.vehicle.server.dao.ProfitRatioConfigMapper">
 
     <resultMap type="com.chelvc.cloud.vehicle.api.dto.ProfitRatioConfigDTO" id="ProfitRatioConfigResult">
         <result property="id" column="id"/>

+ 44 - 0
vehicle-server/src/main/resources/mapper/RankAwardConfigMapper.xml

@@ -0,0 +1,44 @@
+<?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.chelvc.cloud.vehicle.server.dao.RankAwardConfigMapper">
+
+    <resultMap type="com.chelvc.cloud.vehicle.api.dto.RankAwardConfigDTO" id="RankAwardConfigResult">
+        <result property="id" column="id"/>
+        <result property="name" column="name"/>
+        <result property="rank" column="rank"/>
+        <result property="platformType" column="platform_type"/>
+        <result property="ratio" column="ratio"/>
+        <result property="commissionRatio" column="commission_ratio"/>
+        <result property="type" column="type"/>
+        <result property="status" column="status"/>
+        <result property="creator" column="creator"/>
+        <result property="updater" column="updater"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <select id="queryPageList" resultMap="RankAwardConfigResult">
+        SELECT
+            *
+        FROM
+            rank_award_config
+            ${ew.getCustomSqlSegment}
+    </select>
+
+    <select id="checkOtherRankConfig" resultType="com.chelvc.cloud.vehicle.server.entity.RankAwardConfig">
+        SELECT
+            *
+        FROM
+            rank_award_config
+        where
+            id != #{id}
+          and
+            status = 0
+          and
+            type = #{type}
+          and
+            platform_type = #{platformType}
+          and
+            ((#{rankHigh} >= rank_high  and rank_low >= #{rankHigh}) or (#{rankLow} >= rank_high and rank_low >= #{rankLow}))
+    </select>
+</mapper>

+ 17 - 0
vehicle-server/src/main/resources/mapper/RankAwardRecordMapper.xml

@@ -0,0 +1,17 @@
+<?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.chelvc.cloud.vehicle.server.dao.RankAwardRecordMapper">
+
+    <select id="queryPageList" resultType="com.chelvc.cloud.vehicle.api.dto.RankAwardRecordDTO">
+        SELECT
+            r.*,
+            CASE
+                r.platform_type
+                WHEN 2 THEN
+                        ( SELECT m.NAME FROM merchant m WHERE m.user_id = r.user_id ) ELSE ''
+                END AS NAME
+        FROM
+            rank_award_record r
+            ${ew.getCustomSqlSegment}
+    </select>
+</mapper>

+ 1 - 2
vehicle-server/src/main/resources/mapper/UserInviteMapper.xml

@@ -2,8 +2,6 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.chelvc.cloud.vehicle.server.dao.UserInviteMapper">
 
-
-
     <select id="teamList" resultType="com.chelvc.cloud.vehicle.api.dto.TeamDetailsDTO">
         SELECT
             i.user_id,
@@ -44,4 +42,5 @@
             and i.type = #{type}
         </if>
     </select>
+
 </mapper>