Browse Source

分佣: 我的推广统计接口

owen 1 year ago
parent
commit
f72a087007

+ 23 - 7
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/AppBrokerageUserController.java

@@ -1,10 +1,15 @@
 package cn.iocoder.yudao.module.trade.controller.app.brokerage;
 
+import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
 import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.*;
+import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
+import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawStatusEnum;
+import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageRecordService;
 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageUserService;
+import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageWithdrawService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -16,6 +21,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.time.LocalDateTime;
+import java.util.Optional;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -30,6 +36,10 @@ import static java.util.Arrays.asList;
 public class AppBrokerageUserController {
     @Resource
     private BrokerageUserService brokerageUserService;
+    @Resource
+    private BrokerageRecordService brokerageRecordService;
+    @Resource
+    private BrokerageWithdrawService brokerageWithdrawService;
 
     // TODO 芋艿:临时 mock =>
     @GetMapping("/get")
@@ -50,18 +60,24 @@ public class AppBrokerageUserController {
         return success(brokerageUserService.bindBrokerageUser(getLoginUserId(), reqVO.getBindUserId(), false));
     }
 
-    // TODO 芋艿:临时 mock =>
     @GetMapping("/get-summary")
     @Operation(summary = "获得个人分销统计")
     @PreAuthenticated
     public CommonResult<AppBrokerageUserMySummaryRespVO> getBrokerageUserSummary() {
+        Long userId = getLoginUserId();
+        LocalDateTime yesterday = LocalDateTime.now().minusDays(1);
+        LocalDateTime beginTime = LocalDateTimeUtil.beginOfDay(yesterday);
+        LocalDateTime endTime = LocalDateTimeUtil.endOfDay(yesterday);
+
         AppBrokerageUserMySummaryRespVO respVO = new AppBrokerageUserMySummaryRespVO()
-                .setYesterdayPrice(1)
-                .setBrokeragePrice(2)
-                .setFrozenPrice(3)
-                .setWithdrawPrice(4)
-                .setFirstBrokerageUserCount(166)
-                .setSecondBrokerageUserCount(233);
+                .setYesterdayPrice(brokerageRecordService.getSummaryPriceByUserId(userId, BrokerageRecordBizTypeEnum.ORDER.getType(), beginTime, endTime))
+                .setWithdrawPrice(brokerageWithdrawService.getSummaryPriceByUserIdAndStatus(userId, BrokerageWithdrawStatusEnum.AUDIT_SUCCESS.getStatus()))
+                .setBrokeragePrice(0)
+                .setFrozenPrice(0)
+                .setFirstBrokerageUserCount(brokerageUserService.getBrokerageUserCountByBindUserId(userId, 1))
+                .setSecondBrokerageUserCount(brokerageUserService.getBrokerageUserCountByBindUserId(userId, 2));
+        Optional.ofNullable(brokerageUserService.getBrokerageUser(userId))
+                .ifPresent(user -> respVO.setBrokeragePrice(user.getBrokeragePrice()).setFrozenPrice(user.getFrozenPrice()));
         return success(respVO);
     }
 

+ 2 - 2
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/user/AppBrokerageUserMySummaryRespVO.java

@@ -20,9 +20,9 @@ public class AppBrokerageUserMySummaryRespVO {
     private Integer frozenPrice;
 
     @Schema(description = "分销用户数量(一级)", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
-    private Integer firstBrokerageUserCount;
+    private Long firstBrokerageUserCount;
 
     @Schema(description = "分销用户数量(二级)", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
-    private Integer secondBrokerageUserCount;
+    private Long secondBrokerageUserCount;
 
 }

+ 6 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/brokerage/BrokerageRecordMapper.java

@@ -57,4 +57,10 @@ public interface BrokerageRecordMapper extends BaseMapperX<BrokerageRecordDO> {
                                                                              @Param("bizType") Integer bizType,
                                                                              @Param("status") Integer status);
 
+    @Select("SELECT SUM(price) FROM trade_brokerage_record WHERE user_id = #{userId} AND biz_type = #{bizType} " +
+            "AND create_time BETWEEN #{beginTime} AND #{endTime}")
+    Integer selectSummaryPriceByUserIdAndBizTypeAndCreateTimeBetween(@Param("userId") Long userId,
+                                                                     @Param("bizType") Integer bizType,
+                                                                     @Param("beginTime") LocalDateTime beginTime,
+                                                                     @Param("endTime") LocalDateTime endTime);
 }

+ 4 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/brokerage/BrokerageWithdrawMapper.java

@@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.withdraw.Brok
 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageWithdrawDO;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 /**
  * 佣金提现 Mapper
@@ -34,4 +36,6 @@ public interface BrokerageWithdrawMapper extends BaseMapperX<BrokerageWithdrawDO
                 .eq(BrokerageWithdrawDO::getStatus, status));
     }
 
+    @Select("SELECT SUM(price) FROM trade_brokerage_withdraw WHERE user_id = #{userId} AND status = #{status}")
+    Integer selectSummaryPriceByUserIdAndStatus(@Param("userId") Long userId, @Param("status") Integer status);
 }

+ 12 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordService.java

@@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.trade.service.brokerage.bo.BrokerageAddReqBO;
 import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO;
 
 import javax.validation.Valid;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -78,4 +79,15 @@ public interface BrokerageRecordService {
      * @return 用户佣金汇总
      */
     UserBrokerageSummaryBO getUserBrokerageSummaryByUserId(Long userId, Integer bizType, Integer status);
+
+    /**
+     * 获得用户佣金合计
+     *
+     * @param userId    用户编号
+     * @param bizType   业务类型
+     * @param beginTime 开始时间
+     * @param endTime   截止时间
+     * @return 用户佣金合计
+     */
+    Integer getSummaryPriceByUserId(Long userId, Integer bizType, LocalDateTime beginTime, LocalDateTime endTime);
 }

+ 5 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordServiceImpl.java

@@ -222,6 +222,11 @@ public class BrokerageRecordServiceImpl implements BrokerageRecordService {
         return summaryBO != null ? summaryBO : new UserBrokerageSummaryBO(0, 0);
     }
 
+    @Override
+    public Integer getSummaryPriceByUserId(Long userId, Integer bizType, LocalDateTime beginTime, LocalDateTime endTime) {
+        return brokerageRecordMapper.selectSummaryPriceByUserIdAndBizTypeAndCreateTimeBetween(userId, bizType, beginTime, endTime);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void addBrokerage(Long userId, BrokerageRecordBizTypeEnum bizType, String bizId, int brokeragePrice, String title) {

+ 10 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageWithdrawService.java

@@ -47,4 +47,14 @@ public interface BrokerageWithdrawService {
      * @return 佣金提现编号
      */
     Long createBrokerageWithdraw(AppBrokerageWithdrawCreateReqVO createReqVO, Long userId);
+
+    /**
+     * 获得用户已提现金额
+     *
+     * @param userId 用户编号
+     * @param status 状态
+     * @return 用户已提现金额
+     */
+    Integer getSummaryPriceByUserIdAndStatus(Long userId, Integer status);
+
 }

+ 5 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageWithdrawServiceImpl.java

@@ -141,6 +141,11 @@ public class BrokerageWithdrawServiceImpl implements BrokerageWithdrawService {
         return withdraw.getId();
     }
 
+    @Override
+    public Integer getSummaryPriceByUserIdAndStatus(Long userId, Integer status) {
+        return brokerageWithdrawMapper.selectSummaryPriceByUserIdAndStatus(userId, status);
+    }
+
     /**
      * 计算提现手续费
      *