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

Merge branch 'master' of http://gogs.chelvc.com/wuyongqiang/vehicle

woody 1 год назад
Родитель
Сommit
e5ec10e231
31 измененных файлов с 526 добавлено и 133 удалено
  1. 1 1
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantDTO.java
  2. 6 2
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/TeamDetailsDTO.java
  3. 10 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/EditRankAwardConfigParams.java
  4. 1 1
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/MerchantModifyParam.java
  5. 5 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/MerchantRankParam.java
  6. 7 1
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/CategoryService.java
  7. 8 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/GoodsService.java
  8. 15 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/MerchantService.java
  9. 7 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/UserInviteService.java
  10. 2 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/CategoryMapper.java
  11. 9 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/GoodsMapper.java
  12. 11 4
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/MerchantMapper.java
  13. 6 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/UserInviteMapper.java
  14. 0 1
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Category.java
  15. 1 1
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Merchant.java
  16. 21 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/CategoryService.java
  17. 5 2
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/MerchantService.java
  18. 44 7
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/CategoryServiceImpl.java
  19. 19 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/GoodsServiceImpl.java
  20. 16 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantAuthServiceImpl.java
  21. 92 32
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.java
  22. 2 1
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/ProfitRatioConfigServiceImpl.java
  23. 2 2
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/RankAwardConfigServiceImpl.java
  24. 71 55
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/RankAwardRecordServiceImpl.java
  25. 72 10
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/UserInviteServiceImpl.java
  26. 2 2
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/task/RankAwardTask.java
  27. 4 0
      vehicle-server/src/main/resources/mapper/CategoryMapper.xml
  28. 28 0
      vehicle-server/src/main/resources/mapper/GoodsMapper.xml
  29. 7 4
      vehicle-server/src/main/resources/mapper/MerchantMapper.xml
  30. 3 3
      vehicle-server/src/main/resources/mapper/PlatformProfitRatioMapper.xml
  31. 49 4
      vehicle-server/src/main/resources/mapper/UserInviteMapper.xml

+ 1 - 1
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantDTO.java

@@ -139,7 +139,7 @@ public class MerchantDTO implements Serializable {
     /**
     /**
      * 商家主营业务
      * 商家主营业务
      */
      */
-    private List<Long> mainBusiness;
+    private Long mainBusiness;
     /**
     /**
      * 商家副营业务
      * 商家副营业务
      */
      */

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

@@ -20,14 +20,18 @@ public class TeamDetailsDTO implements Serializable {
      * 用户标识
      * 用户标识
      */
      */
     private Long userId;
     private Long userId;
+    /**
+     *用户名称
+     */
+    private String nickname;
 
 
     /**
     /**
-     * 邀请用户
+     * 邀请用户
      */
      */
     private Long inviteUserId;
     private Long inviteUserId;
 
 
     /**
     /**
-     * 用户名称
+     * 被邀请用户名称
      */
      */
     private String name;
     private String name;
 
 

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

@@ -20,6 +20,16 @@ public class EditRankAwardConfigParams implements Serializable {
     @NotNull(message = "主键不能为空")
     @NotNull(message = "主键不能为空")
     private Long id;
     private Long id;
 
 
+    /**
+     * 类型:0-年;1-季;2-月;3-周;4-日  暂时默认传2
+     */
+    private Integer type = 2;
+
+    /**
+     * 平台类型:1-用户;2-商家  暂时默认传2
+     */
+    private Integer platformType = 2;
+
     /**
     /**
      * 排名
      * 排名
      */
      */

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

@@ -120,7 +120,7 @@ public class MerchantModifyParam implements Serializable {
     /**
     /**
      * 商家主营业务
      * 商家主营业务
      */
      */
-    private List<Long> mainBusiness;
+    private Long mainBusiness;
     /**
     /**
      * 商家副营业务
      * 商家副营业务
      */
      */

+ 5 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/MerchantRankParam.java

@@ -16,4 +16,9 @@ public class MerchantRankParam implements Serializable {
      * 区域id,不传默认查询当前用户当前区域
      * 区域id,不传默认查询当前用户当前区域
      */
      */
     private Integer regionId;
     private Integer regionId;
+
+    /**
+     * 一级分类id
+     */
+    private Long categoryId;
 }
 }

+ 7 - 1
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/CategoryService.java

@@ -72,8 +72,14 @@ public interface CategoryService {
     void deleteCategory(Long id);
     void deleteCategory(Long id);
 
 
     /**
     /**
-     * 获取一级分类
+     * 获取分类列表
      * @return 分类信息
      * @return 分类信息
      */
      */
     List<CategoryDTO> getRootCategories(CategoryListParam param);
     List<CategoryDTO> getRootCategories(CategoryListParam param);
+
+    /**
+     * 获取一级分类
+     * @return 分类信息
+     */
+    List<CategoryDTO> getParentCategories(CategoryListParam param);
 }
 }

+ 8 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/GoodsService.java

@@ -78,4 +78,12 @@ public interface GoodsService {
      * @return
      * @return
      */
      */
     Map<String,Object> getCategoryAndGoods(GoodsQueryParam param);
     Map<String,Object> getCategoryAndGoods(GoodsQueryParam param);
+
+    /**
+     * 获取商品的订单量以及交易金额
+     * @return
+     */
+    List<Map<String,Object>> getGoodsAmount();
+
+
 }
 }

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

@@ -1,5 +1,6 @@
 package com.chelvc.cloud.vehicle.api.service;
 package com.chelvc.cloud.vehicle.api.service;
 
 
+import com.chelvc.cloud.vehicle.api.constant.MerchantStatus;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDetailDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDetailDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantRankDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantRankDTO;
@@ -112,6 +113,13 @@ public interface MerchantService {
      */
      */
     List<MerchantRankDTO> listRankMerchants(MerchantRankParam param, Long userId);
     List<MerchantRankDTO> listRankMerchants(MerchantRankParam param, Long userId);
 
 
+    /**
+     * 后台查询商家排名
+     * @param param
+     * @return
+     */
+    List<MerchantRankDTO> listRankMerchants(MerchantRankParam param);
+
     /**
     /**
      * 我的购物车列表
      * 我的购物车列表
      * @param param
      * @param param
@@ -138,6 +146,13 @@ public interface MerchantService {
      */
      */
     List<Map<String,Object>> operatReport(ReportModifyParam param);
     List<Map<String,Object>> operatReport(ReportModifyParam param);
 
 
+    /**
+     * 商家审核
+     * @param id
+     * @param status
+     */
+    void merchantAudit(Long id, MerchantStatus status);
+
 }
 }
 
 
 
 

+ 7 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/UserInviteService.java

@@ -16,4 +16,11 @@ public interface UserInviteService {
      * @return
      * @return
      */
      */
     Long queryUserByTarget(Long userId, Integer type);
     Long queryUserByTarget(Long userId, Integer type);
+
+    /**
+     * 查询用户邀请得用户列表
+     * @param param
+     * @return
+     */
+    TeamDTO inviteList(TeamInvitePageParam param);
 }
 }

+ 2 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/CategoryMapper.java

@@ -22,4 +22,6 @@ public interface CategoryMapper extends BaseMapper<Category> {
      * @return 分类信息列表
      * @return 分类信息列表
      */
      */
     List<Category> listRecommendCategories(@Param("size") int size);
     List<Category> listRecommendCategories(@Param("size") int size);
+
+    void deleteByMerchantId(Long merchantId);
 }
 }

+ 9 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/GoodsMapper.java

@@ -1,6 +1,7 @@
 package com.chelvc.cloud.vehicle.server.dao;
 package com.chelvc.cloud.vehicle.server.dao;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.chelvc.cloud.vehicle.api.constant.CategoryType;
 import com.chelvc.cloud.vehicle.api.constant.CategoryType;
@@ -41,4 +42,12 @@ public interface GoodsMapper extends BaseMapper<Goods> {
      * @return
      * @return
      */
      */
     Integer goodsFavorite(@Param("goodsId") Long goodsId,@Param("userId") Long userId);
     Integer goodsFavorite(@Param("goodsId") Long goodsId,@Param("userId") Long userId);
+
+
+    /**
+     * 获取商品的订单量以及交易金额
+     * @param merchantId
+     * @return
+     */
+    List<Map<String,Object>> getGoodsAmount(Long merchantId);
 }
 }

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

@@ -68,13 +68,16 @@ public interface MerchantMapper extends BaseMapper<Merchant> {
     /**
     /**
      * 商家排名
      * 商家排名
      * @param monthStartLocalTime
      * @param monthStartLocalTime
+     * @param categoryId
      * @param longitude
      * @param longitude
      * @param latitude
      * @param latitude
      * @param regionId
      * @param regionId
      * @param level
      * @param level
      * @return
      * @return
      */
      */
-    List<MerchantRankDTO> listRankMerchants(@Param("merchantId")LocalDateTime monthStartLocalTime, @Param("regionId")Integer regionId,
+    List<MerchantRankDTO> listRankMerchants(@Param("merchantId")LocalDateTime monthStartLocalTime,
+                                            @Param("categoryId")Long categoryId,
+                                            @Param("regionId")Integer regionId,
                                             @Param("longitude")Double longitude,
                                             @Param("longitude")Double longitude,
                                             @Param("latitude")Double latitude, @Param("level")int level);
                                             @Param("latitude")Double latitude, @Param("level")int level);
 
 
@@ -97,11 +100,15 @@ public interface MerchantMapper extends BaseMapper<Merchant> {
     List<MerchantRankCountDTO> rankMerchants(@Param("monthStartLocalTime") LocalDateTime monthStartLocalTime,
     List<MerchantRankCountDTO> rankMerchants(@Param("monthStartLocalTime") LocalDateTime monthStartLocalTime,
                                              @Param("monthEndLocalTime") LocalDateTime monthEndLocalTime,
                                              @Param("monthEndLocalTime") LocalDateTime monthEndLocalTime,
                                              @Param("regionId") Integer regionId,
                                              @Param("regionId") Integer regionId,
-                                             @Param("limit") Integer limit, @Param("level") Integer level);
+                                             @Param("limit") Integer limit,
+                                             @Param("level") Integer level,
+                                             @Param("categoryId") Long categoryId);
 
 
     BigDecimal queryTotalCommissionAmountByLastMonth(@Param("lastMonthStartLocalTime") LocalDateTime lastMonthStartLocalTime,
     BigDecimal queryTotalCommissionAmountByLastMonth(@Param("lastMonthStartLocalTime") LocalDateTime lastMonthStartLocalTime,
-                                           @Param("lastMonthEndLocalTime") LocalDateTime lastMonthEndLocalTime,
-                                           @Param("regionId") Integer regionId, @Param("level") Integer level);
+                                                     @Param("lastMonthEndLocalTime") LocalDateTime lastMonthEndLocalTime,
+                                                     @Param("regionId") Integer regionId,
+                                                     @Param("level") Integer level,
+                                                     @Param("categoryId") Long categoryId);
 
 
     /**
     /**
      * 获取商家营业状况
      * 获取商家营业状况

+ 6 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/UserInviteMapper.java

@@ -15,4 +15,10 @@ public interface UserInviteMapper extends BaseMapper<UserInvite> {
                                               @Param("pageSize") int pageSize, @Param("userId") Long userId);
                                               @Param("pageSize") int pageSize, @Param("userId") Long userId);
 
 
     TeamDTO teamTotalStatistics(@Param("type") Integer type, @Param("userId") Long userId);
     TeamDTO teamTotalStatistics(@Param("type") Integer type, @Param("userId") Long userId);
+
+
+    List<TeamDetailsDTO> inviteList(@Param("type") Integer type, @Param("pageNum") int pageNum,
+                                  @Param("pageSize") int pageSize);
+
+    TeamDTO inviteTotalStatistics(@Param("type") Integer type);
 }
 }

+ 0 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Category.java

@@ -38,7 +38,6 @@ public class Category extends ModifyEntity<Long> {
     /**
     /**
      * 分类名称
      * 分类名称
      */
      */
-    @Unique(message = "分类名称已存在")
     private String name;
     private String name;
 
 
     /**
     /**

+ 1 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Merchant.java

@@ -145,7 +145,7 @@ public class Merchant extends ModifyEntity<Long> {
     /**
     /**
      * 商家主营业务
      * 商家主营业务
      */
      */
-    private List<Long> mainBusiness;
+    private Long mainBusiness;
     /**
     /**
      * 商家副营业务
      * 商家副营业务
      */
      */

+ 21 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/CategoryService.java

@@ -19,4 +19,25 @@ public interface CategoryService extends IService<Category> {
      * @return
      * @return
      */
      */
     List<CategoryDTO> listCategories(List<Long> categories);
     List<CategoryDTO> listCategories(List<Long> categories);
+
+    List<Long> queryFirstLevelIds();
+
+    /**
+     * 查询分类
+     * @param ids
+     * @return
+     */
+    List<Category> getCategories(List<Long> ids);
+
+    /**
+     * 批量保存
+     * @param categories
+     */
+    void saveBatchCategories(List<Category> categories);
+
+    /**
+     * 删除商家所有分类
+     * @param merchant
+     */
+    void deleteByMerchantId(Long merchant);
 }
 }

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

@@ -42,7 +42,7 @@ public interface MerchantService extends IService<Merchant> {
      * @param level
      * @param level
      * @return
      * @return
      */
      */
-    List<MerchantRankCountDTO> rankMerchants(Integer regionId, Integer limit, Integer level);
+    List<MerchantRankCountDTO> rankMerchants(Integer regionId, Integer limit, Integer level, Long categoryId);
 
 
     /**
     /**
      * 根据地区查询上个月所有商家的平台抽成金额
      * 根据地区查询上个月所有商家的平台抽成金额
@@ -50,7 +50,7 @@ public interface MerchantService extends IService<Merchant> {
      * @param level
      * @param level
      * @return
      * @return
      */
      */
-    BigDecimal queryTotalCommissionAmountByLastMonth(Integer regionId, Integer level);
+    BigDecimal queryTotalCommissionAmountByLastMonth(Integer regionId, Integer level, Long categoryId);
 
 
 
 
     /**
     /**
@@ -59,4 +59,7 @@ public interface MerchantService extends IService<Merchant> {
      * @return
      * @return
      */
      */
     MerchantDTO getMerchantByUserId(Long userId);
     MerchantDTO getMerchantByUserId(Long userId);
+
+
+    List<MerchantDTO> getMerchantByIds(List<Long> ids);
 }
 }

+ 44 - 7
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/CategoryServiceImpl.java

@@ -1,11 +1,5 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
 package com.chelvc.cloud.vehicle.server.service.impl;
 
 
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.uc.api.model.Scope;
 import com.chelvc.cloud.uc.api.model.Scope;
@@ -26,9 +20,15 @@ import com.chelvc.framework.common.util.StringUtils;
 import com.chelvc.framework.database.context.DatabaseContextHolder;
 import com.chelvc.framework.database.context.DatabaseContextHolder;
 import lombok.NonNull;
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * 分类业务操作实现
  * 分类业务操作实现
@@ -198,4 +198,41 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
         categories.sort(Comparator.comparing(Category::getType).thenComparing(Category::getSort));
         categories.sort(Comparator.comparing(Category::getType).thenComparing(Category::getSort));
         return CategoryCopier.INSTANCE.copying(categories);
         return CategoryCopier.INSTANCE.copying(categories);
     }
     }
+
+    @Override
+    public List<Long> queryFirstLevelIds() {
+        List<Category> categories = this.lambdaQuery()
+                .eq(Category::getEnabled, true)
+                .eq(Category::getType,0)
+                .eq(Category::getParentId,0)
+                .orderByAsc(Category::getSort).list();
+        if(CollectionUtils.isEmpty(categories)){
+            return null;
+        }
+        return categories.stream().map(Category::getId).collect(Collectors.toList());
+    }
+
+    @Override
+    public List<CategoryDTO> getParentCategories(CategoryListParam param){
+        List<Category> categories = this.lambdaQuery()
+                .eq(Category::getEnabled, true)
+                .eq(Category::getType,0)
+                .eq(Category::getParentId,0)
+                .orderByAsc(Category::getSort).list();
+        categories.sort(Comparator.comparing(Category::getType).thenComparing(Category::getSort));
+        return CategoryCopier.INSTANCE.copying(categories);
+    }
+
+    @Override
+    public List<Category> getCategories(List<Long> ids){
+        return this.listByIds(ids);
+    }
+    @Override
+    public void saveBatchCategories(List<Category> categories){
+        this.saveBatch(categories);
+    }
+    @Override
+    public void deleteByMerchantId(Long merchant){
+        this.baseMapper.deleteByMerchantId(merchant);
+    }
 }
 }

+ 19 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/GoodsServiceImpl.java

@@ -193,4 +193,23 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         }
         }
         return goodsMap;
         return goodsMap;
     }
     }
+
+    /**
+     * 获取商品的订单量以及交易金额
+     * @return
+     */
+    @Override
+    public List<Map<String,Object>> getGoodsAmount(){
+        Long userId = SessionContextHolder.getId();
+        Scope scope = StringUtils.ifEmpty(SessionContextHolder.getScope(), Scope::parse);
+        if (scope == Scope.ADMIN) {
+            return this.baseMapper.getGoodsAmount(null);
+        }else {
+            List<Long> merchants = this.merchantService.getMerchantIdsByUserId(userId);
+            if (ObjectUtils.isEmpty(merchants)) {
+                return null;
+            }
+            return this.baseMapper.getGoodsAmount(merchants.get(0));
+        }
+    }
 }
 }

+ 16 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantAuthServiceImpl.java

@@ -1,9 +1,12 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
 package com.chelvc.cloud.vehicle.server.service.impl;
 
 
 import java.util.Date;
 import java.util.Date;
+import java.util.List;
 
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chelvc.cloud.uc.api.model.Scope;
+import com.chelvc.cloud.uc.api.service.UserService;
 import com.chelvc.cloud.vehicle.api.dto.MerchantAuthDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantAuthDTO;
 import com.chelvc.cloud.vehicle.api.param.MerchantAuthModifyParam;
 import com.chelvc.cloud.vehicle.api.param.MerchantAuthModifyParam;
 import com.chelvc.cloud.vehicle.api.param.MerchantAuthPagingParam;
 import com.chelvc.cloud.vehicle.api.param.MerchantAuthPagingParam;
@@ -15,6 +18,7 @@ import com.chelvc.cloud.vehicle.server.service.MerchantService;
 import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.util.AssertUtils;
 import com.chelvc.framework.common.util.AssertUtils;
+import com.chelvc.framework.common.util.ObjectUtils;
 import com.chelvc.framework.common.util.StringUtils;
 import com.chelvc.framework.common.util.StringUtils;
 import com.chelvc.framework.database.context.DatabaseContextHolder;
 import com.chelvc.framework.database.context.DatabaseContextHolder;
 import lombok.NonNull;
 import lombok.NonNull;
@@ -33,6 +37,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 public class MerchantAuthServiceImpl extends ServiceImpl<MerchantAuthMapper, MerchantAuth> implements MerchantAuthService,
 public class MerchantAuthServiceImpl extends ServiceImpl<MerchantAuthMapper, MerchantAuth> implements MerchantAuthService,
         com.chelvc.cloud.vehicle.api.service.MerchantAuthService {
         com.chelvc.cloud.vehicle.api.service.MerchantAuthService {
     private final MerchantService merchantService;
     private final MerchantService merchantService;
+
+    private final UserService userService;
     @Override
     @Override
     public Long addMerchantAuth(@NonNull MerchantAuthModifyParam param) {
     public Long addMerchantAuth(@NonNull MerchantAuthModifyParam param) {
         Long userId = SessionContextHolder.getId();
         Long userId = SessionContextHolder.getId();
@@ -54,8 +60,15 @@ public class MerchantAuthServiceImpl extends ServiceImpl<MerchantAuthMapper, Mer
 
 
     @Override
     @Override
     public Pagination<MerchantAuthDTO> getMerchantAuthPaging(@NonNull MerchantAuthPagingParam param) {
     public Pagination<MerchantAuthDTO> getMerchantAuthPaging(@NonNull MerchantAuthPagingParam param) {
+        Long userId = null;
+        Scope scope = com.chelvc.framework.common.util.StringUtils.ifEmpty(SessionContextHolder.getScope(), Scope::parse);
+        if (scope == Scope.ADMIN) {
+        }else {
+            userId = SessionContextHolder.getId();
+        }
         Page<MerchantAuth> page = this.lambdaQuery()
         Page<MerchantAuth> page = this.lambdaQuery()
                 .like(StringUtils.notEmpty(param.getStoreName()), MerchantAuth::getStoreName, param.getStoreName())
                 .like(StringUtils.notEmpty(param.getStoreName()), MerchantAuth::getStoreName, param.getStoreName())
+                .eq(StringUtils.notEmpty(userId),MerchantAuth::getApplicant,userId)
                 .orderByAsc(MerchantAuth::getReviewTime).page(DatabaseContextHolder.page(param.getPaging()));
                 .orderByAsc(MerchantAuth::getReviewTime).page(DatabaseContextHolder.page(param.getPaging()));
         return DatabaseContextHolder.pagination(page, MerchantAuthCopier.INSTANCE::copying);
         return DatabaseContextHolder.pagination(page, MerchantAuthCopier.INSTANCE::copying);
     }
     }
@@ -82,5 +95,8 @@ public class MerchantAuthServiceImpl extends ServiceImpl<MerchantAuthMapper, Mer
         merchantAuth.setReviewer(userId.toString());
         merchantAuth.setReviewer(userId.toString());
         merchantAuth.setMessage(message);
         merchantAuth.setMessage(message);
         this.updateById(merchantAuth);
         this.updateById(merchantAuth);
+        if (StringUtils.notEmpty(state) && "1".equals(state)){
+            this.userService.updateUserRole(merchantAuth.getApplicant());
+        }
     }
     }
 }
 }

+ 92 - 32
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.java

@@ -1,43 +1,20 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
 package com.chelvc.cloud.vehicle.server.service.impl;
 
 
-import java.math.BigDecimal;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.uc.api.dto.UserDTO;
 import com.chelvc.cloud.uc.api.dto.UserDTO;
 import com.chelvc.cloud.uc.api.model.Scope;
 import com.chelvc.cloud.uc.api.model.Scope;
-import com.chelvc.cloud.uc.api.service.EmployeeService;
 import com.chelvc.cloud.uc.api.service.UserService;
 import com.chelvc.cloud.uc.api.service.UserService;
 import com.chelvc.cloud.vehicle.api.constant.MerchantStatus;
 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.MerchantRankCountDTO;
-import com.chelvc.cloud.vehicle.api.dto.MerchantRankDTO;
-import com.chelvc.cloud.vehicle.api.param.GoodsQueryParam;
-import com.chelvc.cloud.vehicle.api.param.LocationQueryParam;
-import com.chelvc.cloud.vehicle.api.param.MerchantModifyParam;
-import com.chelvc.cloud.vehicle.api.param.MerchantPagingParam;
-import com.chelvc.cloud.vehicle.api.param.MerchantQueryParam;
-import com.chelvc.cloud.vehicle.api.param.MerchantRankParam;
-import com.chelvc.cloud.vehicle.api.param.OmsCartItemPagingParam;
-import com.chelvc.cloud.vehicle.api.param.ReportModifyParam;
+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.api.util.DateTimeUtils;
 import com.chelvc.cloud.vehicle.server.copier.MerchantCopier;
 import com.chelvc.cloud.vehicle.server.copier.MerchantCopier;
 import com.chelvc.cloud.vehicle.server.dao.MerchantMapper;
 import com.chelvc.cloud.vehicle.server.dao.MerchantMapper;
 import com.chelvc.cloud.vehicle.server.dao.RegionMapper;
 import com.chelvc.cloud.vehicle.server.dao.RegionMapper;
-import com.chelvc.cloud.vehicle.server.entity.Goods;
+import com.chelvc.cloud.vehicle.server.entity.Category;
 import com.chelvc.cloud.vehicle.server.entity.Merchant;
 import com.chelvc.cloud.vehicle.server.entity.Merchant;
 import com.chelvc.cloud.vehicle.server.entity.Region;
 import com.chelvc.cloud.vehicle.server.entity.Region;
 import com.chelvc.cloud.vehicle.server.service.CategoryService;
 import com.chelvc.cloud.vehicle.server.service.CategoryService;
@@ -58,7 +35,13 @@ import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Lazy;
-import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * 商家业务操作实现
  * 商家业务操作实现
@@ -167,6 +150,23 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
         merchant.setSale(0);
         merchant.setSale(0);
         merchant.setStatus(MerchantStatus.ONLINE);
         merchant.setStatus(MerchantStatus.ONLINE);
         this.save(merchant);
         this.save(merchant);
+        List<Long> business = param.getAncillaryBusiness();
+        if (StringUtils.notEmpty(param.getMainBusiness())){
+            business.add(param.getMainBusiness());
+        }
+//        this.categoryService.removeByIds(business);
+        List<Category> categories = this.categoryService.getCategories(business);
+        if (!CollectionUtils.isEmpty(categories)){
+            categories.forEach(item ->{
+                item.setSourceId(item.getId());
+                item.setId(null);
+                item.setMerchantId(merchant.getId());
+                item.setType("1");
+                item.setParentId(0L);
+                this.categoryService.save(item);
+            });
+           // this.categoryService.saveBatchCategories(categories);
+        }
         return merchant.getId();
         return merchant.getId();
     }
     }
 
 
@@ -175,6 +175,25 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
         Merchant merchant = AssertUtils.available(this.getById(id), "商家不存在");
         Merchant merchant = AssertUtils.available(this.getById(id), "商家不存在");
         MerchantCopier.INSTANCE.copying(param, merchant);
         MerchantCopier.INSTANCE.copying(param, merchant);
         this.updateById(merchant);
         this.updateById(merchant);
+        List<Long> business = param.getAncillaryBusiness();
+        if (StringUtils.notEmpty(param.getMainBusiness())){
+            business.add(param.getMainBusiness());
+        }
+//        this.categoryService.removeByIds(business);
+        this.categoryService.deleteByMerchantId(merchant.getId());
+        List<Category> categories = this.categoryService.getCategories(business);
+        if (!CollectionUtils.isEmpty(categories)){
+            categories.forEach(item ->{
+                item.setSourceId(item.getId());
+                item.setId(null);
+                item.setMerchantId(merchant.getId());
+                item.setType("1");
+                item.setParentId(0L);
+//                this.categoryService.save(item);
+            });
+            this.categoryService.saveBatchCategories(categories);
+        }
+
     }
     }
 
 
     @Override
     @Override
@@ -244,6 +263,7 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
     public List<MerchantRankDTO> listRankMerchants(MerchantRankParam param, Long userId) {
     public List<MerchantRankDTO> listRankMerchants(MerchantRankParam param, Long userId) {
         List<MerchantRankDTO> result = new ArrayList<>();
         List<MerchantRankDTO> result = new ArrayList<>();
         Integer regionId = param.getRegionId();
         Integer regionId = param.getRegionId();
+        Long categoryId = param.getCategoryId();
         Double longitude = (double) 0;
         Double longitude = (double) 0;
         Double latitude = (double) 0;
         Double latitude = (double) 0;
         if (regionId == null) {
         if (regionId == null) {
@@ -263,21 +283,46 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
         if (region == null) {
         if (region == null) {
             return result;
             return result;
         }
         }
-        result = baseMapper.listRankMerchants(DateTimeUtils.getMonthStartLocalTime(), regionId, longitude, latitude,
+        result = baseMapper.listRankMerchants(DateTimeUtils.getMonthStartLocalTime(), categoryId, regionId, longitude, latitude,
                 region.getLevel());
                 region.getLevel());
         return result;
         return result;
     }
     }
 
 
     @Override
     @Override
-    public List<MerchantRankCountDTO> rankMerchants(Integer regionId, Integer limit, Integer level) {
+    public List<MerchantRankDTO> listRankMerchants(MerchantRankParam param) {
+        List<MerchantRankDTO> result = new ArrayList<>();
+        Integer regionId = param.getRegionId();
+        Long categoryId = param.getCategoryId();
+        Double longitude = (double) 0;
+        Double latitude = (double) 0;
+        if (regionId == null) {
+            Address address = locationHandler.ip2address(SessionContextHolder.getHost());
+            if (address == null) {
+                return result;
+            }
+            regionId = address.getDistrict().getId();
+            longitude = address.getLongitude();
+            latitude = address.getLatitude();
+        }
+        Region region = regionMapper.selectById(regionId);
+        if (region == null) {
+            return result;
+        }
+        result = baseMapper.listRankMerchants(DateTimeUtils.getMonthStartLocalTime(), categoryId, regionId, longitude, latitude,
+                region.getLevel());
+        return result;
+    }
+
+    @Override
+    public List<MerchantRankCountDTO> rankMerchants(Integer regionId, Integer limit, Integer level, Long categoryId) {
         return baseMapper.rankMerchants(DateTimeUtils.getLastMonthStartLocalTime(),
         return baseMapper.rankMerchants(DateTimeUtils.getLastMonthStartLocalTime(),
-                DateTimeUtils.getLastMonthEndLocalTime(), regionId, limit, level);
+                DateTimeUtils.getLastMonthEndLocalTime(), regionId, limit, level, categoryId);
     }
     }
 
 
     @Override
     @Override
-    public BigDecimal queryTotalCommissionAmountByLastMonth(Integer regionId, Integer level) {
+    public BigDecimal queryTotalCommissionAmountByLastMonth(Integer regionId, Integer level, Long categoryId) {
         return baseMapper.queryTotalCommissionAmountByLastMonth(DateTimeUtils.getLastMonthStartLocalTime(),
         return baseMapper.queryTotalCommissionAmountByLastMonth(DateTimeUtils.getLastMonthStartLocalTime(),
-                DateTimeUtils.getLastMonthEndLocalTime(), regionId, level);
+                DateTimeUtils.getLastMonthEndLocalTime(), regionId, level, categoryId);
     }
     }
 
 
     @Override
     @Override
@@ -355,6 +400,14 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
         return MerchantCopier.INSTANCE.copying(merchants);
         return MerchantCopier.INSTANCE.copying(merchants);
     }
     }
 
 
+    @Override
+    public List<MerchantDTO> getMerchantByIds(List<Long> ids) {
+        List<MerchantDTO> list = new ArrayList<>();
+        for(Long id : ids){
+            list.add(getMerchantById(id));
+        }
+        return list;
+    }
 
 
 
 
     /**
     /**
@@ -407,4 +460,11 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
         }
         }
     }
     }
 
 
+    @Override
+    public void merchantAudit(Long id, MerchantStatus status){
+        Merchant merchant = AssertUtils.available(this.getById(id), "商家不存在");
+        merchant.setStatus(status);
+        this.updateById(merchant);
+    }
+
 }
 }

+ 2 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/ProfitRatioConfigServiceImpl.java

@@ -54,7 +54,8 @@ public class ProfitRatioConfigServiceImpl extends ServiceImpl<ProfitRatioConfigM
         profitRatioConfig.setStatus(params.getStatus());
         profitRatioConfig.setStatus(params.getStatus());
         profitRatioConfig.setUpdateTime(new Date());
         profitRatioConfig.setUpdateTime(new Date());
         profitRatioConfig.setUpdater(params.getUserId());
         profitRatioConfig.setUpdater(params.getUserId());
-        baseMapper.update(profitRatioConfig, null);
+//        baseMapper.update(profitRatioConfig, null);
+        this.updateById(profitRatioConfig);
     }
     }
 
 
     @Override
     @Override

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

@@ -79,8 +79,8 @@ public class RankAwardConfigServiceImpl extends ServiceImpl<RankAwardConfigMappe
         LambdaQueryWrapper<RankAwardConfig> wrapper = Wrappers.lambdaQuery();
         LambdaQueryWrapper<RankAwardConfig> wrapper = Wrappers.lambdaQuery();
         wrapper.eq(RankAwardConfig::getRank, rank);
         wrapper.eq(RankAwardConfig::getRank, rank);
         wrapper.eq(RankAwardConfig::getStatus, 0);
         wrapper.eq(RankAwardConfig::getStatus, 0);
-        wrapper.eq(RankAwardConfig::getPlatformType, config.getPlatformType());
-        wrapper.eq(RankAwardConfig::getType, config.getType());
+        wrapper.eq(params.getPlatformType() != null, RankAwardConfig::getPlatformType, params.getPlatformType());
+        wrapper.eq(params.getType() != null, RankAwardConfig::getType, params.getType());
         wrapper.eq(RankAwardConfig::getRegionLevel, regionLevel);
         wrapper.eq(RankAwardConfig::getRegionLevel, regionLevel);
         wrapper.ne(RankAwardConfig::getId, config.getId());
         wrapper.ne(RankAwardConfig::getId, config.getId());
         if (baseMapper.selectCount(wrapper) > 0) {
         if (baseMapper.selectCount(wrapper) > 0) {

+ 71 - 55
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/RankAwardRecordServiceImpl.java

@@ -19,6 +19,7 @@ import com.chelvc.cloud.vehicle.server.dao.RegionMapper;
 import com.chelvc.cloud.vehicle.server.entity.RankAwardConfig;
 import com.chelvc.cloud.vehicle.server.entity.RankAwardConfig;
 import com.chelvc.cloud.vehicle.server.entity.RankAwardRecord;
 import com.chelvc.cloud.vehicle.server.entity.RankAwardRecord;
 import com.chelvc.cloud.vehicle.server.entity.Region;
 import com.chelvc.cloud.vehicle.server.entity.Region;
+import com.chelvc.cloud.vehicle.server.service.CategoryService;
 import com.chelvc.cloud.vehicle.server.service.MerchantService;
 import com.chelvc.cloud.vehicle.server.service.MerchantService;
 import com.chelvc.cloud.vehicle.server.service.RankAwardConfigService;
 import com.chelvc.cloud.vehicle.server.service.RankAwardConfigService;
 import com.chelvc.framework.common.exception.ResourceUnavailableException;
 import com.chelvc.framework.common.exception.ResourceUnavailableException;
@@ -49,6 +50,7 @@ public class RankAwardRecordServiceImpl extends ServiceImpl<RankAwardRecordMappe
     private final RankAwardConfigService rankAwardConfigService;
     private final RankAwardConfigService rankAwardConfigService;
     private final RegionMapper regionMapper;
     private final RegionMapper regionMapper;
     private final MerchantService merchantService;
     private final MerchantService merchantService;
+    private final CategoryService categoryService;
 
 
     @Override
     @Override
     public Pagination<RankAwardRecordDTO> queryPageList(QueryRankAwardRecordParam param) {
     public Pagination<RankAwardRecordDTO> queryPageList(QueryRankAwardRecordParam param) {
@@ -125,39 +127,46 @@ public class RankAwardRecordServiceImpl extends ServiceImpl<RankAwardRecordMappe
         Map<Integer, RankAwardConfig> map =
         Map<Integer, RankAwardConfig> map =
                 rankAwardConfigs.stream().collect(Collectors.toMap(RankAwardConfig::getRank, (p) -> p));
                 rankAwardConfigs.stream().collect(Collectors.toMap(RankAwardConfig::getRank, (p) -> p));
         int limit = rankAwardConfigs.size();
         int limit = rankAwardConfigs.size();
+        //查询一级分类
+        List<Long> categoryIds = categoryService.queryFirstLevelIds();
+        if(categoryIds == null){
+            return;
+        }
         for (Integer id : ids) {
         for (Integer id : ids) {
-            List<RankAwardRecord> list = new ArrayList<>();
-            List<MerchantRankCountDTO> result = merchantService.rankMerchants(id, limit, level);
-            BigDecimal totalCommissionAmount = merchantService.queryTotalCommissionAmountByLastMonth(id, level);
-            if (totalCommissionAmount == null || totalCommissionAmount.compareTo(BigDecimal.ZERO) == 0) {
-                break;
-            }
-            //查询区县已发出的奖励
-            BigDecimal totalAmount = baseMapper.queryAmountByRegion(id, DateTimeUtils.getLastYearMonth());
-            if (totalAmount != null && totalAmount.compareTo(BigDecimal.ZERO) > 0) {
-                totalCommissionAmount = totalCommissionAmount.subtract(totalAmount);
-            }
-            for (int i = 1; i <= result.size(); i++) {
-                MerchantRankCountDTO merchantRankCountDTO = result.get(i);
-                RankAwardConfig config = map.get(i);
-                BigDecimal bonus =
-                        totalCommissionAmount.multiply(new BigDecimal(config.getCommissionRatio()).divide(new BigDecimal("100"), 2, RoundingMode.FLOOR))
-                                .multiply(new BigDecimal(config.getRatio()).divide(new BigDecimal("100"), 2,
-                                        RoundingMode.FLOOR));
-                RankAwardRecord rankAwardRecord = new RankAwardRecord();
-                rankAwardRecord.setRank(i);
-                rankAwardRecord.setUserId(merchantRankCountDTO.getUserId());
-                rankAwardRecord.setBonus(bonus);
-                rankAwardRecord.setPeriod(DateTimeUtils.getLastYearMonth());
-                rankAwardRecord.setType(2);
-                rankAwardRecord.setPlatformType(2);
-                rankAwardRecord.setRegionLevel(level);
-                rankAwardRecord.setStatus(0);
-                rankAwardRecord.setAwardTime(LocalDateTime.now());
-                rankAwardRecord.setCreateTime(LocalDateTime.now());
-                list.add(rankAwardRecord);
+            for (Long categoryId : categoryIds) {
+                List<RankAwardRecord> list = new ArrayList<>();
+                List<MerchantRankCountDTO> result = merchantService.rankMerchants(id, limit, level, categoryId);
+                BigDecimal totalCommissionAmount = merchantService.queryTotalCommissionAmountByLastMonth(id, level, categoryId);
+                if (totalCommissionAmount == null || totalCommissionAmount.compareTo(BigDecimal.ZERO) == 0) {
+                    break;
+                }
+                //查询区县已发出的奖励
+                BigDecimal totalAmount = baseMapper.queryAmountByRegion(id, DateTimeUtils.getLastYearMonth());
+                if (totalAmount != null && totalAmount.compareTo(BigDecimal.ZERO) > 0) {
+                    totalCommissionAmount = totalCommissionAmount.subtract(totalAmount);
+                }
+                for (int i = 1; i <= result.size(); i++) {
+                    MerchantRankCountDTO merchantRankCountDTO = result.get(i);
+                    RankAwardConfig config = map.get(i);
+                    BigDecimal bonus =
+                            totalCommissionAmount.multiply(new BigDecimal(config.getCommissionRatio()).divide(new BigDecimal("100"), 2, RoundingMode.FLOOR))
+                                    .multiply(new BigDecimal(config.getRatio()).divide(new BigDecimal("100"), 2,
+                                            RoundingMode.FLOOR));
+                    RankAwardRecord rankAwardRecord = new RankAwardRecord();
+                    rankAwardRecord.setRank(i);
+                    rankAwardRecord.setUserId(merchantRankCountDTO.getUserId());
+                    rankAwardRecord.setBonus(bonus);
+                    rankAwardRecord.setPeriod(DateTimeUtils.getLastYearMonth());
+                    rankAwardRecord.setType(2);
+                    rankAwardRecord.setPlatformType(2);
+                    rankAwardRecord.setRegionLevel(level);
+                    rankAwardRecord.setStatus(0);
+                    rankAwardRecord.setAwardTime(LocalDateTime.now());
+                    rankAwardRecord.setCreateTime(LocalDateTime.now());
+                    list.add(rankAwardRecord);
+                }
+                baseMapper.batchInsert(list);
             }
             }
-            baseMapper.batchInsert(list);
         }
         }
     }
     }
 
 
@@ -168,6 +177,11 @@ public class RankAwardRecordServiceImpl extends ServiceImpl<RankAwardRecordMappe
         if (CollectionUtils.isEmpty(rankAwardConfigs)) {
         if (CollectionUtils.isEmpty(rankAwardConfigs)) {
             return;
             return;
         }
         }
+        //查询一级分类
+        List<Long> categoryIds = categoryService.queryFirstLevelIds();
+        if(categoryIds == null){
+            return;
+        }
         Map<Integer, RankAwardConfig> map =
         Map<Integer, RankAwardConfig> map =
                 rankAwardConfigs.stream().collect(Collectors.toMap(RankAwardConfig::getRank, (p) -> p));
                 rankAwardConfigs.stream().collect(Collectors.toMap(RankAwardConfig::getRank, (p) -> p));
         LambdaQueryWrapper<Region> wrapper = Wrappers.lambdaQuery();
         LambdaQueryWrapper<Region> wrapper = Wrappers.lambdaQuery();
@@ -184,30 +198,32 @@ public class RankAwardRecordServiceImpl extends ServiceImpl<RankAwardRecordMappe
             List<Integer> ids = regionMapper.queryPageIdsByLevel(level, pageNum, pageSize);
             List<Integer> ids = regionMapper.queryPageIdsByLevel(level, pageNum, pageSize);
             int limit = rankAwardConfigs.size();
             int limit = rankAwardConfigs.size();
             for (Integer id : ids) {
             for (Integer id : ids) {
-                List<MerchantRankCountDTO> result = merchantService.rankMerchants(id, limit, level);
-                BigDecimal totalCommissionAmount = merchantService.queryTotalCommissionAmountByLastMonth(id, level);
-                if (totalCommissionAmount == null || totalCommissionAmount.compareTo(BigDecimal.ZERO) == 0) {
-                    break;
-                }
-                for (int i = 1; i <= result.size(); i++) {
-                    MerchantRankCountDTO merchantRankCountDTO = result.get(i);
-                    RankAwardConfig config = map.get(i);
-                    BigDecimal bonus =
-                            totalCommissionAmount.multiply(new BigDecimal(config.getCommissionRatio()).divide(new BigDecimal("100"), 2, RoundingMode.FLOOR))
-                                    .multiply(new BigDecimal(config.getRatio()).divide(new BigDecimal("100"), 2,
-                                            RoundingMode.FLOOR));
-                    RankAwardRecord rankAwardRecord = new RankAwardRecord();
-                    rankAwardRecord.setRank(i);
-                    rankAwardRecord.setUserId(merchantRankCountDTO.getUserId());
-                    rankAwardRecord.setBonus(bonus);
-                    rankAwardRecord.setPeriod(DateTimeUtils.getLastYearMonth());
-                    rankAwardRecord.setType(2);
-                    rankAwardRecord.setPlatformType(2);
-                    rankAwardRecord.setRegionLevel(level);
-                    rankAwardRecord.setStatus(0);
-                    rankAwardRecord.setAwardTime(LocalDateTime.now());
-                    rankAwardRecord.setCreateTime(LocalDateTime.now());
-                    list.add(rankAwardRecord);
+                for (Long categoryId : categoryIds) {
+                    List<MerchantRankCountDTO> result = merchantService.rankMerchants(id, limit, level, categoryId);
+                    BigDecimal totalCommissionAmount = merchantService.queryTotalCommissionAmountByLastMonth(id, level, categoryId);
+                    if (totalCommissionAmount == null || totalCommissionAmount.compareTo(BigDecimal.ZERO) == 0) {
+                        break;
+                    }
+                    for (int i = 1; i <= result.size(); i++) {
+                        MerchantRankCountDTO merchantRankCountDTO = result.get(i);
+                        RankAwardConfig config = map.get(i);
+                        BigDecimal bonus =
+                                totalCommissionAmount.multiply(new BigDecimal(config.getCommissionRatio()).divide(new BigDecimal("100"), 2, RoundingMode.FLOOR))
+                                        .multiply(new BigDecimal(config.getRatio()).divide(new BigDecimal("100"), 2,
+                                                RoundingMode.FLOOR));
+                        RankAwardRecord rankAwardRecord = new RankAwardRecord();
+                        rankAwardRecord.setRank(i);
+                        rankAwardRecord.setUserId(merchantRankCountDTO.getUserId());
+                        rankAwardRecord.setBonus(bonus);
+                        rankAwardRecord.setPeriod(DateTimeUtils.getLastYearMonth());
+                        rankAwardRecord.setType(2);
+                        rankAwardRecord.setPlatformType(2);
+                        rankAwardRecord.setRegionLevel(level);
+                        rankAwardRecord.setStatus(0);
+                        rankAwardRecord.setAwardTime(LocalDateTime.now());
+                        rankAwardRecord.setCreateTime(LocalDateTime.now());
+                        list.add(rankAwardRecord);
+                    }
                 }
                 }
             }
             }
             baseMapper.batchInsert(list);
             baseMapper.batchInsert(list);

+ 72 - 10
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/UserInviteServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.uc.api.dto.UserDTO;
 import com.chelvc.cloud.uc.api.dto.UserDTO;
 import com.chelvc.cloud.uc.api.service.UserService;
 import com.chelvc.cloud.uc.api.service.UserService;
 import com.chelvc.cloud.vehicle.api.constant.PlatformConstant;
 import com.chelvc.cloud.vehicle.api.constant.PlatformConstant;
+import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
 import com.chelvc.cloud.vehicle.api.dto.TeamDTO;
 import com.chelvc.cloud.vehicle.api.dto.TeamDTO;
 import com.chelvc.cloud.vehicle.api.dto.TeamDetailsDTO;
 import com.chelvc.cloud.vehicle.api.dto.TeamDetailsDTO;
 import com.chelvc.cloud.vehicle.api.param.TeamInvitePageParam;
 import com.chelvc.cloud.vehicle.api.param.TeamInvitePageParam;
@@ -28,6 +29,7 @@ import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
 
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
@@ -114,22 +116,35 @@ public class UserInviteServiceImpl extends ServiceImpl<UserInviteMapper, UserInv
         if(CollectionUtils.isEmpty(records)){
         if(CollectionUtils.isEmpty(records)){
             return dto;
             return dto;
         }
         }
-        Map<Long, UserDTO> map = new HashMap<>();
-        if(param.getType() == null || param.getType() == 1){
-            List<Long> ids = records.stream().filter(e -> e.getSourceType() == 1).map(TeamDetailsDTO::getInviteUserId).collect(Collectors.toList());
+        Map<Long, String> map = new HashMap<>();
+        if(param.getType() == null){
+            List<Long> userIds = records.stream().filter(e -> e.getSourceType() == 1).map(TeamDetailsDTO::getInviteUserId).collect(Collectors.toList());
+            List<UserDTO> users = this.userService.listUsers(userIds);
+            map = users.stream().collect(Collectors.toMap(UserDTO::getId, UserDTO::getNickname));
+            List<Long> merchantIds = records.stream().filter(e -> e.getSourceType() == 2).map(TeamDetailsDTO::getInviteUserId).collect(Collectors.toList());
+            List<MerchantDTO> merchants = this.merchantService.getMerchantByIds(merchantIds);
+            map.putAll(merchants.stream().collect(Collectors.toMap(MerchantDTO::getId, MerchantDTO::getName)));
+        } else if(param.getType() == 1){
+            List<Long> ids = records.stream().map(TeamDetailsDTO::getInviteUserId).collect(Collectors.toList());
             List<UserDTO> users = this.userService.listUsers(ids);
             List<UserDTO> users = this.userService.listUsers(ids);
-            map = users.stream().collect(Collectors.toMap(UserDTO::getId, user -> user));
+            map = users.stream().collect(Collectors.toMap(UserDTO::getId, UserDTO::getNickname));
+        } else if(param.getType() == 2){
+            List<Long> ids = records.stream().map(TeamDetailsDTO::getInviteUserId).collect(Collectors.toList());
+            List<MerchantDTO> merchants = this.merchantService.getMerchantByIds(ids);
+            map = merchants.stream().collect(Collectors.toMap(MerchantDTO::getId, MerchantDTO::getName));
         }
         }
         for(TeamDetailsDTO detailsDTO : records){
         for(TeamDetailsDTO detailsDTO : records){
-            Integer sourceType = detailsDTO.getSourceType();
-            if(sourceType == 1){
-                UserDTO userDTO = map.get(detailsDTO.getInviteUserId());
-                detailsDTO.setName(userDTO == null ? "" : userDTO.getNickname());
-            } else {
-                detailsDTO.setName(merchantService.getMerchantName(detailsDTO.getInviteUserId()));
+            detailsDTO.setName(map.get(detailsDTO.getInviteUserId()));
+            BigDecimal amount = detailsDTO.getAmount();
+            if(amount == null){
+                detailsDTO.setAmount(BigDecimal.ZERO);
             }
             }
         }
         }
         dto = baseMapper.teamTotalStatistics(param.getType(), userId);
         dto = baseMapper.teamTotalStatistics(param.getType(), userId);
+        BigDecimal totalAmount = dto.getTotalAmount();
+        if(totalAmount == null){
+            dto.setTotalAmount(BigDecimal.ZERO);
+        }
         dto.setRecords(records);
         dto.setRecords(records);
         return dto;
         return dto;
     }
     }
@@ -142,4 +157,51 @@ public class UserInviteServiceImpl extends ServiceImpl<UserInviteMapper, UserInv
         UserInvite userInvite = baseMapper.selectOne(inviteWrapper);
         UserInvite userInvite = baseMapper.selectOne(inviteWrapper);
         return userInvite == null ? null : userInvite.getUserId();
         return userInvite == null ? null : userInvite.getUserId();
     }
     }
+
+
+
+    @Override
+    public TeamDTO inviteList(TeamInvitePageParam param) {
+        TeamDTO dto = new TeamDTO();
+        Paging paging = param.getPaging();
+        int pageNum = (paging.getNumber() - 1) * paging.getSize();
+        if(pageNum < 0){
+            return dto;
+        }
+        List<TeamDetailsDTO> records = baseMapper.inviteList(param.getType(), pageNum, paging.getSize());
+        if(CollectionUtils.isEmpty(records)){
+            return dto;
+        }
+        Map<Long, String> map = new HashMap<>();
+        if(param.getType() == null){
+            List<Long> userIds = records.stream().filter(e -> e.getSourceType() == 1).map(TeamDetailsDTO::getInviteUserId).collect(Collectors.toList());
+            List<UserDTO> users = this.userService.listUsers(userIds);
+            map = users.stream().collect(Collectors.toMap(UserDTO::getId, UserDTO::getNickname));
+            List<Long> merchantIds = records.stream().filter(e -> e.getSourceType() == 2).map(TeamDetailsDTO::getInviteUserId).collect(Collectors.toList());
+            List<MerchantDTO> merchants = this.merchantService.getMerchantByIds(merchantIds);
+            map.putAll(merchants.stream().collect(Collectors.toMap(MerchantDTO::getId, MerchantDTO::getName)));
+        } else if(param.getType() == 1){
+            List<Long> ids = records.stream().map(TeamDetailsDTO::getInviteUserId).collect(Collectors.toList());
+            List<UserDTO> users = this.userService.listUsers(ids);
+            map = users.stream().collect(Collectors.toMap(UserDTO::getId, UserDTO::getNickname));
+        } else if(param.getType() == 2){
+            List<Long> ids = records.stream().map(TeamDetailsDTO::getInviteUserId).collect(Collectors.toList());
+            List<MerchantDTO> merchants = this.merchantService.getMerchantByIds(ids);
+            map = merchants.stream().collect(Collectors.toMap(MerchantDTO::getId, MerchantDTO::getName));
+        }
+        for(TeamDetailsDTO detailsDTO : records){
+            detailsDTO.setName(map.get(detailsDTO.getInviteUserId()));
+            BigDecimal amount = detailsDTO.getAmount();
+            if(amount == null){
+                detailsDTO.setAmount(BigDecimal.ZERO);
+            }
+        }
+        dto = baseMapper.inviteTotalStatistics(param.getType());
+        BigDecimal totalAmount = dto.getTotalAmount();
+        if(totalAmount == null){
+            dto.setTotalAmount(BigDecimal.ZERO);
+        }
+        dto.setRecords(records);
+        return dto;
+    }
 }
 }

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

@@ -21,7 +21,7 @@ public class RankAwardTask {
     /**
     /**
      * 市月榜
      * 市月榜
      */
      */
-    @Scheduled(cron = "0 0 5 1 * ?") //每月第一天凌晨5点
+    @Scheduled(cron = "0 10 5 1 * ?") //每月第一天凌晨5点10
     public void cityAwardRank(){
     public void cityAwardRank(){
         log.info("触发城市商家月排行榜奖励定时任务==============");
         log.info("触发城市商家月排行榜奖励定时任务==============");
         rankAwardRecordService.cityAwardRank();
         rankAwardRecordService.cityAwardRank();
@@ -30,7 +30,7 @@ public class RankAwardTask {
     /**
     /**
      * 区月榜
      * 区月榜
      */
      */
-    @Scheduled(cron = "0 10 5 1 * ?") //每月第一天凌晨5点10
+    @Scheduled(cron = "0 0 5 1 * ?") //每月第一天凌晨5点
     public void districtAwardRank(){
     public void districtAwardRank(){
         log.info("触发区域商家月排行榜奖励定时任务==============");
         log.info("触发区域商家月排行榜奖励定时任务==============");
         rankAwardRecordService.districtAwardRank();
         rankAwardRecordService.districtAwardRank();

+ 4 - 0
vehicle-server/src/main/resources/mapper/CategoryMapper.xml

@@ -12,4 +12,8 @@
         where cy.enabled = 1 and cy.recommend = 1
         where cy.enabled = 1 and cy.recommend = 1
         order by cy.sort asc limit #{size}
         order by cy.sort asc limit #{size}
     </select>
     </select>
+
+    <delete id="deleteByMerchantId">
+        delete from category where merchant_id = #{merchantId}
+    </delete>
 </mapper>
 </mapper>

+ 28 - 0
vehicle-server/src/main/resources/mapper/GoodsMapper.xml

@@ -34,5 +34,33 @@
         AND user_id = #{userId}
         AND user_id = #{userId}
     </select>
     </select>
 
 
+    <select id="getGoodsAmount" resultType="java.util.Map">
+        SELECT
+            g.category_id,
+            t.goods_id,
+            t.amount,
+            t.count,
+            g.NAME
+        FROM
+            goods g
+                RIGHT JOIN (
+                SELECT
+                    om.goods_id,
+                    sum( oo.pay_amount ) amount,
+                    count( 0 ) count
+                FROM
+                    oms_order oo
+                    LEFT JOIN oms_order_item om ON oo.id = om.order_id
+                WHERE 1=1
+                    <if test="merchantId != null">
+                        and oo.merchant_id = #{merchantId}
+                    </if>
+                GROUP BY
+                    om.goods_id
+            ) t ON g.id = t.goods_id
+        ORDER BY
+            t.amount DESC
+    </select>
+
 
 
 </mapper>
 </mapper>

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

@@ -109,7 +109,8 @@
             `merchant` mt
             `merchant` mt
                 LEFT JOIN oms_order om ON mt.user_id = om.merchant_id
                 LEFT JOIN oms_order om ON mt.user_id = om.merchant_id
         WHERE
         WHERE
-            om.STATUS = 4
+            mt.main_business = #{categoryId}
+        and om.STATUS = 4
         <if test="level == 1">
         <if test="level == 1">
             and mt.province = #{regionId}
             and mt.province = #{regionId}
         </if>
         </if>
@@ -146,7 +147,8 @@
         `merchant` mt
         `merchant` mt
         LEFT JOIN oms_order om ON mt.user_id = om.merchant_id
         LEFT JOIN oms_order om ON mt.user_id = om.merchant_id
         WHERE
         WHERE
-        om.STATUS = 4
+        mt.main_business = #{categoryId}
+        and om.STATUS = 4
         <if test="level == 1">
         <if test="level == 1">
             and mt.province = #{regionId}
             and mt.province = #{regionId}
         </if>
         </if>
@@ -172,7 +174,8 @@
         LEFT JOIN oms_order om ON mt.user_id = om.merchant_id
         LEFT JOIN oms_order om ON mt.user_id = om.merchant_id
         LEFT JOIN currency_record r ON r.order_id = om.id
         LEFT JOIN currency_record r ON r.order_id = om.id
         WHERE
         WHERE
-        om.STATUS = 4
+        mt.main_business = #{categoryId}
+        and om.STATUS = 4
         and r.source_type = 3
         and r.source_type = 3
         <if test="level == 1">
         <if test="level == 1">
             and mt.province = #{regionId}
             and mt.province = #{regionId}
@@ -296,4 +299,4 @@
 
 
     </select>
     </select>
 
 
-</mapper>
+</mapper>

+ 3 - 3
vehicle-server/src/main/resources/mapper/PlatformProfitRatioMapper.xml

@@ -5,7 +5,7 @@
     <resultMap type="com.chelvc.cloud.vehicle.api.dto.PlatformProfitRatioDTO" id="PlatformProfitRatioResult">
     <resultMap type="com.chelvc.cloud.vehicle.api.dto.PlatformProfitRatioDTO" id="PlatformProfitRatioResult">
         <result property="id" column="id"/>
         <result property="id" column="id"/>
         <result property="ratio" column="ratio"/>
         <result property="ratio" column="ratio"/>
-        <result property="userId" column="user_id"/>
+        <result property="merchantId" column="merchant_id"/>
         <result property="turnover" column="turnover"/>
         <result property="turnover" column="turnover"/>
         <result property="name" column="name"/>
         <result property="name" column="name"/>
         <result property="updater" column="updater"/>
         <result property="updater" column="updater"/>
@@ -18,7 +18,7 @@
             t.*,m.name
             t.*,m.name
         FROM
         FROM
             platform_profit_ratio t
             platform_profit_ratio t
-            left join merchant m on m.user_id = t.user_id
+            left join merchant m on m.id = t.merchant_id
             ${ew.getCustomSqlSegment}
             ${ew.getCustomSqlSegment}
     </select>
     </select>
 
 
@@ -30,4 +30,4 @@
         where
         where
             id = #{id}
             id = #{id}
     </update>
     </update>
-</mapper>
+</mapper>

+ 49 - 4
vehicle-server/src/main/resources/mapper/UserInviteMapper.xml

@@ -7,11 +7,11 @@
             i.user_id,
             i.user_id,
             target_id AS inviteUserId,
             target_id AS inviteUserId,
             SUM( r.reality_amount ) amount,
             SUM( r.reality_amount ) amount,
-            r.source_type sourceType
+            i.type sourceType
         FROM
         FROM
             user_invite i
             user_invite i
                 LEFT JOIN currency_record r ON i.user_id = r.user_id
                 LEFT JOIN currency_record r ON i.user_id = r.user_id
-                AND i.target_id = r.source_user_id
+                AND i.target_id = r.source_id
                 AND r.type = 0
                 AND r.type = 0
                 AND i.type = r.source_type
                 AND i.type = r.source_type
         WHERE
         WHERE
@@ -33,7 +33,7 @@
         FROM
         FROM
         user_invite i
         user_invite i
         LEFT JOIN currency_record r ON i.user_id = r.user_id
         LEFT JOIN currency_record r ON i.user_id = r.user_id
-        AND i.target_id = r.source_user_id
+        AND i.target_id = r.source_id
         AND r.type = 0
         AND r.type = 0
         AND i.type = r.source_type
         AND i.type = r.source_type
         WHERE
         WHERE
@@ -43,4 +43,49 @@
         </if>
         </if>
     </select>
     </select>
 
 
-</mapper>
+
+
+
+    <select id="inviteList" resultType="com.chelvc.cloud.vehicle.api.dto.TeamDetailsDTO">
+        SELECT
+        i.user_id,
+        target_id AS inviteUserId,
+        SUM( r.reality_amount ) amount,
+        i.type sourceType
+        FROM
+        user_invite i
+        LEFT JOIN currency_record r ON i.user_id = r.user_id
+        AND i.target_id = r.source_id
+        AND r.type = 0
+        AND i.type = r.source_type
+        WHERE 1=1
+        <if test="type != null">
+            and i.type = #{type}
+        </if>
+        GROUP BY
+        i.id
+        ORDER BY
+        amount DESC
+        limit #{pageNum}, #{pageSize}
+    </select>
+
+
+
+    <select id="inviteTotalStatistics" resultType="com.chelvc.cloud.vehicle.api.dto.TeamDTO">
+        SELECT
+        count(i.id) total,
+        sum(r.reality_amount) totalAmount
+        FROM
+        user_invite i
+        LEFT JOIN currency_record r ON i.user_id = r.user_id
+        AND i.target_id = r.source_id
+        AND r.type = 0
+        AND i.type = r.source_type
+        WHERE
+        1=1
+        <if test="type != null">
+            and i.type = #{type}
+        </if>
+    </select>
+
+</mapper>