瀏覽代碼

排名奖励修改

igl 1 年之前
父節點
當前提交
da769986d9

+ 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,不传默认查询当前用户当前区域
      */
     private Integer regionId;
+
+    /**
+     * 一级分类id
+     */
+    private Long categoryId;
 }

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

@@ -113,6 +113,13 @@ public interface MerchantService {
      */
     List<MerchantRankDTO> listRankMerchants(MerchantRankParam param, Long userId);
 
+    /**
+     * 后台查询商家排名
+     * @param param
+     * @return
+     */
+    List<MerchantRankDTO> listRankMerchants(MerchantRankParam param);
+
     /**
      * 我的购物车列表
      * @param param

+ 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 categoryId
      * @param longitude
      * @param latitude
      * @param regionId
      * @param level
      * @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("latitude")Double latitude, @Param("level")int level);
 
@@ -97,11 +100,15 @@ public interface MerchantMapper extends BaseMapper<Merchant> {
     List<MerchantRankCountDTO> rankMerchants(@Param("monthStartLocalTime") LocalDateTime monthStartLocalTime,
                                              @Param("monthEndLocalTime") LocalDateTime monthEndLocalTime,
                                              @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,
-                                           @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);
 
     /**
      * 获取商家营业状况

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

@@ -19,4 +19,6 @@ public interface CategoryService extends IService<Category> {
      * @return
      */
     List<CategoryDTO> listCategories(List<Long> categories);
+
+    List<Long> queryFirstLevelIds();
 }

+ 2 - 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
      * @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
      * @return
      */
-    BigDecimal queryTotalCommissionAmountByLastMonth(Integer regionId, Integer level);
+    BigDecimal queryTotalCommissionAmountByLastMonth(Integer regionId, Integer level, Long categoryId);
 
 
     /**

+ 20 - 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;
 
-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.service.impl.ServiceImpl;
 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 lombok.NonNull;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.dubbo.config.annotation.DubboService;
 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;
 
 /**
  * 分类业务操作实现
@@ -199,6 +199,19 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
         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()

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

@@ -1,43 +1,19 @@
 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.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.model.Scope;
-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.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.server.copier.MerchantCopier;
 import com.chelvc.cloud.vehicle.server.dao.MerchantMapper;
 import com.chelvc.cloud.vehicle.server.dao.RegionMapper;
-import com.chelvc.cloud.vehicle.server.entity.Goods;
 import com.chelvc.cloud.vehicle.server.entity.Merchant;
 import com.chelvc.cloud.vehicle.server.entity.Region;
 import com.chelvc.cloud.vehicle.server.service.CategoryService;
@@ -58,7 +34,12 @@ import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
-import org.springframework.scheduling.annotation.Scheduled;
+
+import java.math.BigDecimal;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 商家业务操作实现
@@ -244,6 +225,7 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
     public List<MerchantRankDTO> listRankMerchants(MerchantRankParam param, Long userId) {
         List<MerchantRankDTO> result = new ArrayList<>();
         Integer regionId = param.getRegionId();
+        Long categoryId = param.getCategoryId();
         Double longitude = (double) 0;
         Double latitude = (double) 0;
         if (regionId == null) {
@@ -263,21 +245,46 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
         if (region == null) {
             return result;
         }
-        result = baseMapper.listRankMerchants(DateTimeUtils.getMonthStartLocalTime(), regionId, longitude, latitude,
+        result = baseMapper.listRankMerchants(DateTimeUtils.getMonthStartLocalTime(), categoryId, regionId, longitude, latitude,
+                region.getLevel());
+        return result;
+    }
+
+    @Override
+    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) {
+    public List<MerchantRankCountDTO> rankMerchants(Integer regionId, Integer limit, Integer level, Long categoryId) {
         return baseMapper.rankMerchants(DateTimeUtils.getLastMonthStartLocalTime(),
-                DateTimeUtils.getLastMonthEndLocalTime(), regionId, limit, level);
+                DateTimeUtils.getLastMonthEndLocalTime(), regionId, limit, level, categoryId);
     }
 
     @Override
-    public BigDecimal queryTotalCommissionAmountByLastMonth(Integer regionId, Integer level) {
+    public BigDecimal queryTotalCommissionAmountByLastMonth(Integer regionId, Integer level, Long categoryId) {
         return baseMapper.queryTotalCommissionAmountByLastMonth(DateTimeUtils.getLastMonthStartLocalTime(),
-                DateTimeUtils.getLastMonthEndLocalTime(), regionId, level);
+                DateTimeUtils.getLastMonthEndLocalTime(), regionId, level, categoryId);
     }
 
     @Override

+ 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.RankAwardRecord;
 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.RankAwardConfigService;
 import com.chelvc.framework.common.exception.ResourceUnavailableException;
@@ -49,6 +50,7 @@ public class RankAwardRecordServiceImpl extends ServiceImpl<RankAwardRecordMappe
     private final RankAwardConfigService rankAwardConfigService;
     private final RegionMapper regionMapper;
     private final MerchantService merchantService;
+    private final CategoryService categoryService;
 
     @Override
     public Pagination<RankAwardRecordDTO> queryPageList(QueryRankAwardRecordParam param) {
@@ -125,39 +127,46 @@ public class RankAwardRecordServiceImpl extends ServiceImpl<RankAwardRecordMappe
         Map<Integer, RankAwardConfig> map =
                 rankAwardConfigs.stream().collect(Collectors.toMap(RankAwardConfig::getRank, (p) -> p));
         int limit = rankAwardConfigs.size();
+        //查询一级分类
+        List<Long> categoryIds = categoryService.queryFirstLevelIds();
+        if(categoryIds == null){
+            return;
+        }
         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)) {
             return;
         }
+        //查询一级分类
+        List<Long> categoryIds = categoryService.queryFirstLevelIds();
+        if(categoryIds == null){
+            return;
+        }
         Map<Integer, RankAwardConfig> map =
                 rankAwardConfigs.stream().collect(Collectors.toMap(RankAwardConfig::getRank, (p) -> p));
         LambdaQueryWrapper<Region> wrapper = Wrappers.lambdaQuery();
@@ -184,30 +198,32 @@ public class RankAwardRecordServiceImpl extends ServiceImpl<RankAwardRecordMappe
             List<Integer> ids = regionMapper.queryPageIdsByLevel(level, pageNum, pageSize);
             int limit = rankAwardConfigs.size();
             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);

+ 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(){
         log.info("触发城市商家月排行榜奖励定时任务==============");
         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(){
         log.info("触发区域商家月排行榜奖励定时任务==============");
         rankAwardRecordService.districtAwardRank();

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

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