소스 검색

推广员销售数据

cup 2 년 전
부모
커밋
3600fc5a84

+ 20 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/PromoterController.java

@@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.param.PromoterCreateParam;
+import com.qs.mp.channel.domain.param.PromoterDataQueryParam;
 import com.qs.mp.channel.domain.param.PromoterEditParam;
 import com.qs.mp.channel.domain.param.PromoterQueryParam;
+import com.qs.mp.channel.domain.vo.ChannelOperDataVO;
 import com.qs.mp.channel.service.IChannelService;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
@@ -44,6 +46,24 @@ public class PromoterController extends BaseApiController {
     @Autowired
     private IChannelService channelService;
 
+
+    @PostMapping("/operdata/query")
+    @ApiOperation("获取推广员的销售数据")
+    @ApiResponses(
+        @ApiResponse(code = 200, message = "成功", response = ChannelOperDataVO.class)
+    )
+    public AjaxResult saleDetail(@Validated @RequestBody PromoterDataQueryParam param) {
+        Channel channel = channelService.getById(param.getChannelId());
+        if (channel == null) {
+            return AjaxResult.error("推广员不存在");
+        }
+
+        Integer days = param.getDays();
+        days = days > 0 ? days : 1;
+
+        return AjaxResult.success(channelService.getPromoterOperData(channel.getChannelNo(), days));
+    }
+
     @PostMapping("/edit")
     @ApiOperation("编辑推广员信息")
     public AjaxResult edit(@Validated @RequestBody PromoterEditParam param) {

+ 26 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/param/PromoterDataQueryParam.java

@@ -0,0 +1,26 @@
+package com.qs.mp.channel.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * 推广员销售数据查询入参类
+ * @author Cup
+ * @date 2022/8/10
+ */
+@ApiModel("推广员销售数据查询入参类")
+@Data
+public class PromoterDataQueryParam {
+
+
+    @NotNull(message = "推广员id不能为空")
+    @ApiModelProperty("推广员id")
+    private Long channelId;
+
+    @NotNull(message = "天数不能为空")
+    @ApiModelProperty("天数")
+    private Integer days;
+
+}

+ 3 - 0
mp-service/src/main/java/com/qs/mp/channel/service/IChannelService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.param.PromoterCreateParam;
+import com.qs.mp.channel.domain.param.PromoterDataQueryParam;
 import com.qs.mp.channel.domain.vo.ChannelOperDataVO;
 import com.qs.mp.channel.domain.vo.ChannelVO;
 
@@ -143,4 +144,6 @@ public interface IChannelService extends IService<Channel> {
      */
     List<PromoterListVO> listPromoterByQueryWrapper(QueryWrapper<Channel> queryWrapper);
 
+
+    ChannelOperDataVO getPromoterOperData(String channelNo, Integer days);
 }

+ 19 - 0
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.param.PromoterCreateParam;
+import com.qs.mp.channel.domain.param.PromoterDataQueryParam;
 import com.qs.mp.channel.domain.vo.ChannelOperDataVO;
 import com.qs.mp.channel.domain.vo.ChannelVO;
 import com.qs.mp.channel.domain.vo.PromoterListVO;
@@ -28,6 +29,7 @@ import com.qs.mp.system.service.ISysRoleService;
 import com.qs.mp.system.service.ISysUserService;
 import com.qs.mp.user.domain.UserAddr;
 import com.qs.mp.user.service.IUserAddrService;
+import com.qs.mp.user.service.IUserTicketOrderService;
 import com.qs.mp.utils.SecurityUtils;
 import java.math.BigDecimal;
 import java.util.List;
@@ -70,6 +72,9 @@ public class ChannelServiceImpl extends ServiceImpl<ChannelMapper, Channel> impl
     @Autowired
     private ISysUserService sysUserService;
 
+    @Autowired
+    private IUserTicketOrderService userTicketOrderService;
+
     @Override
     public List<PromoterListVO> listPromoterByQueryWrapper(QueryWrapper<Channel> queryWrapper) {
         return getBaseMapper().listPromoterByQueryWrapper(queryWrapper);
@@ -246,6 +251,20 @@ public class ChannelServiceImpl extends ServiceImpl<ChannelMapper, Channel> impl
         return channelVOList.get(0);
     }
 
+    @Override
+    public ChannelOperDataVO getPromoterOperData(String channelNo, Integer days) {
+        ChannelOperDataVO channelOperData = new ChannelOperDataVO();
+        // 查询销售金额
+        channelOperData.setSaleAmt(channelCommissionService.getChannelSaleAmtCnt(channelNo, days));
+        // 查询佣金金额
+        channelOperData.setCommAmt(channelCommissionService.getChannelCommAmtCnt(channelNo, days));
+
+        // 盲票销量
+        channelOperData.setTicketSaleCnt(userTicketOrderService.getPromoterTicketSaleCnt(channelNo, days));
+
+        return channelOperData;
+    }
+
     @Override
     public ChannelOperDataVO getChannelOperData(String channelNo, int days) {
         ChannelOperDataVO channelOperData = new ChannelOperDataVO();

+ 1 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/UserTicketOrderMapper.java

@@ -118,4 +118,5 @@ public interface UserTicketOrderMapper extends BaseMapper<UserTicketOrder> {
 	 */
     List<IndexVO> selectIndexTicketSiteTopByTicketOrderAndChannelOrder(@Param("param") IndexTicketSiteTopQueryParam indexTicketSiteTopQueryParam);
 
+    long getPromoterTicketSaleCnt(@Param("channelNo") String channelNo,@Param("days") int days);
 }

+ 2 - 0
mp-service/src/main/java/com/qs/mp/user/service/IUserTicketOrderService.java

@@ -173,4 +173,6 @@ public interface IUserTicketOrderService extends IService<UserTicketOrder> {
      * @return
      */
     List<IndexVO> selectIndexTicketSiteTopByTicketOrderAndChannelOrder(IndexTicketSiteTopQueryParam indexTicketSiteTopQueryParam);
+
+    long getPromoterTicketSaleCnt(String channelNo, Integer days);
 }

+ 6 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java

@@ -707,6 +707,12 @@ public class UserTicketOrderServiceImpl extends
         return getBaseMapper().selectIndexTicketSiteTopByTicketOrderAndChannelOrder(indexTicketSiteTopQueryParam);
     }
 
+
+    @Override
+    public long getPromoterTicketSaleCnt(String channelNo, Integer days) {
+        return getBaseMapper().getPromoterTicketSaleCnt(channelNo, days == 1?0:days);
+    }
+
     @Override
     public UserTicketOrderDetailVO detail(String orderId) {
         QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();

+ 8 - 0
mp-service/src/main/resources/mapper/user/UserTicketOrderMapper.xml

@@ -236,4 +236,12 @@
 		order by payAmt desc
 		limit 10;
 	</select>
+
+    <select id="getPromoterTicketSaleCnt" resultType="long">
+			select IFNULL(SUM(t1.ticket_num), 0) as ticketNum
+			from mp_user_ticket_order t1
+						 left join mp_channel t2 on t1.promoter_id = t2.channel_id
+			where (t2.channel_no like concat(#{channelNo},'.%') or t2.channel_no = #{channelNo})
+				AND t1.created_time > DATE_SUB(CURDATE(),INTERVAL #{days} DAY);
+  </select>
 </mapper>