Browse Source

Merge branch 'dev' into 'mp-server-test'

推广员列表

See merge request quanshu/mp-server!967
jiang hao 2 years ago
parent
commit
4979809236

+ 62 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/PromoterMsgController.java

@@ -0,0 +1,62 @@
+package com.qs.mp.web.controller.api.admin;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.channel.domain.Channel;
+import com.qs.mp.channel.domain.param.PromoterListQueryParam;
+import com.qs.mp.channel.domain.vo.PromoterListVO;
+import com.qs.mp.channel.service.IChannelService;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.core.page.TableDataInfo;
+import com.qs.mp.web.controller.common.BaseApiController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.number.AbstractNumberFormatter;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 推广员管理API
+ *
+ * @author Cup
+ * @date 2022/8/9
+ */
+@Api(tags = "推广员管理API")
+@RestController
+@RequestMapping("/api/v1/mp/admin/promoter")
+public class PromoterMsgController extends BaseApiController {
+
+
+    @Autowired
+    private IChannelService channelService;
+
+    @PostMapping("/list")
+    @ApiOperation("推广员列表")
+    @ApiResponses(
+        @ApiResponse(code = 200, message = "推广员列表", response = PromoterListVO.class)
+    )
+    public TableDataInfo list(@RequestBody PromoterListQueryParam param) {
+        startPage();
+        QueryWrapper<Channel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("t1.level", -1);
+        queryWrapper.eq("t1.is_deleted", 0);
+
+        queryWrapper.like(StringUtils.isNotBlank(param.getSiteName()), "t2.site_name", param.getSiteName());
+        queryWrapper.like(StringUtils.isNotBlank(param.getName()), "t1.name", param.getName());
+        queryWrapper.eq(StringUtils.isNotBlank(param.getMobile()), "t1.mobile", param.getMobile());
+
+        if (param.getStartDate() != null && param.getEndDate() != null) {
+            queryWrapper.between("t1.created_time", param.getStartDate(), param.getEndDate());
+        }
+
+        List<PromoterListVO> list = channelService.listPromoterByQueryWrapper(queryWrapper);
+        return getDataTable(list);
+    }
+
+}

+ 32 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/param/PromoterListQueryParam.java

@@ -0,0 +1,32 @@
+package com.qs.mp.channel.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 推广员列表查询入参类
+ * @author Cup
+ * @date 2022/8/9
+ */
+@ApiModel("推广员列表查询入参类")
+@Data
+public class PromoterListQueryParam {
+
+    @ApiModelProperty("上级门店名字")
+    private String siteName;
+
+    @ApiModelProperty("推广员名字")
+    private String name;
+
+    @ApiModelProperty("推广员手机号")
+    private String mobile;
+
+    @ApiModelProperty("开始时间")
+    private Date startDate;
+
+    @ApiModelProperty("结束时间")
+    private Date endDate;
+
+}

+ 45 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/vo/PromoterListVO.java

@@ -0,0 +1,45 @@
+package com.qs.mp.channel.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 推广员列表出参类
+ * @author Cup
+ * @date 2022/8/9
+ */
+@ApiModel("推广员列表出参类")
+@Data
+public class PromoterListVO {
+
+    @ApiModelProperty("推广员id")
+    private Long channelId;
+
+    @ApiModelProperty("推广员名字")
+    private String name;
+
+    @ApiModelProperty("推广员手机号")
+    private String mobile;
+
+    @ApiModelProperty("分佣比例")
+    private BigDecimal commRate;
+
+    @ApiModelProperty("门店名称")
+    private String siteName;
+
+    @ApiModelProperty("盲票销量")
+    private Integer saleNum;
+
+    @ApiModelProperty("销售额")
+    private Integer saleAmt;
+
+    @ApiModelProperty("佣金")
+    private Integer commAmt;
+
+    @ApiModelProperty("创建时间")
+    private Date createdTime;
+
+}

+ 9 - 0
mp-service/src/main/java/com/qs/mp/channel/mapper/ChannelMapper.java

@@ -1,9 +1,11 @@
 package com.qs.mp.channel.mapper;
 
+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.vo.ChannelVO;
 
+import com.qs.mp.channel.domain.vo.PromoterListVO;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
@@ -58,4 +60,11 @@ public interface ChannelMapper extends BaseMapper<Channel> {
      * @return
      */
  	List<IndexVO> selectIndexSiteIncreaseList(@Param(Constants.WRAPPER) Wrapper<Channel> wrapper);
+
+	/**
+	 * 根据查询条件查询推广员列表信息
+	 * @param queryWrapper
+	 * @return
+	 */
+    List<PromoterListVO> listPromoterByQueryWrapper(@Param(Constants.WRAPPER) QueryWrapper<Channel> queryWrapper);
 }

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

@@ -1,11 +1,13 @@
 package com.qs.mp.channel.service;
 
+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.vo.ChannelOperDataVO;
 import com.qs.mp.channel.domain.vo.ChannelVO;
 
+import com.qs.mp.channel.domain.vo.PromoterListVO;
 import com.qs.mp.common.enums.ChannelRoleEnum;
 import com.qs.mp.user.domain.UserDeliverOrder;
 
@@ -133,4 +135,12 @@ public interface IChannelService extends IService<Channel> {
      * @param param
      */
     void createPromoter(PromoterCreateParam param);
+
+    /**
+     * 根据查询条件查询推广员列表信息
+     * @param queryWrapper
+     * @return
+     */
+    List<PromoterListVO> listPromoterByQueryWrapper(QueryWrapper<Channel> queryWrapper);
+
 }

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

@@ -10,6 +10,7 @@ import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.param.PromoterCreateParam;
 import com.qs.mp.channel.domain.vo.ChannelOperDataVO;
 import com.qs.mp.channel.domain.vo.ChannelVO;
+import com.qs.mp.channel.domain.vo.PromoterListVO;
 import com.qs.mp.channel.mapper.ChannelMapper;
 import com.qs.mp.channel.service.IChannelCommissionService;
 import com.qs.mp.channel.service.IChannelService;
@@ -69,6 +70,10 @@ public class ChannelServiceImpl extends ServiceImpl<ChannelMapper, Channel> impl
     @Autowired
     private ISysUserService sysUserService;
 
+    @Override
+    public List<PromoterListVO> listPromoterByQueryWrapper(QueryWrapper<Channel> queryWrapper) {
+        return getBaseMapper().listPromoterByQueryWrapper(queryWrapper);
+    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)

+ 4 - 0
mp-service/src/main/java/com/qs/mp/user/domain/UserTicketOrder.java

@@ -147,6 +147,10 @@ public class UserTicketOrder implements Serializable {
   @TableField("channel_id")
   private Long channelId;
 
+  @ApiModelProperty("推广员id")
+  @TableField("promoter_id")
+  private Long promoterId;
+
 
   @ApiModelProperty("来源小程序id")
   @TableField("app_id")

+ 24 - 0
mp-service/src/main/resources/mapper/channel/ChannelMapper.xml

@@ -117,4 +117,28 @@
 		GROUP BY time
 	</select>
 
+    <select id="listPromoterByQueryWrapper" resultType="com.qs.mp.channel.domain.vo.PromoterListVO">
+      select t1.channel_id,
+             t1.name,
+             t1.mobile,
+             t1.comm_rate,
+             t1.created_time,
+             t2.site_name,
+            if(t3.sale_num is null ,0,t3.sale_num) as sale_num,
+            if(t3.sale_amt is null ,0,t3.sale_amt) as sale_amt,
+            if(t4.comm_amt is null ,0,t4.comm_amt) as comm_amt
+      from mp_channel t1
+             left join mp_channel t2 on t1.parent_id = t2.channel_id
+             left join (select promoter_id,
+                               sum(ticket_num) as sale_num,
+                               sum(pay_amt) as sale_amt
+                        from mp_user_ticket_order
+                        where status = 1
+                        group by promoter_id) t3 on t1.channel_id = t3.promoter_id
+             left join (select channel_id,
+                               sum(comm_amt) as comm_amt
+                        from mp_channel_commission
+                        group by channel_id) t4 on t1.channel_id = t4.channel_id
+      ${ew.customSqlSegment}
+  </select>
 </mapper>