소스 검색

首页交易金额、交易用户数统计

guanglong 3 년 전
부모
커밋
fb40c723aa

+ 91 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/IndexMgrController.java

@@ -0,0 +1,91 @@
+package com.qs.mp.web.controller.api.admin;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.param.IndexQueryParam;
+import com.qs.mp.admin.domain.vo.IndexVO;
+import com.qs.mp.channel.domain.Channel;
+import com.qs.mp.channel.service.IChannelService;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.utils.DateUtils;
+import com.qs.mp.user.domain.UserDeliverOrder;
+import com.qs.mp.user.service.IUserTicketOrderService;
+import com.qs.mp.utils.SecurityUtils;
+import com.qs.mp.web.controller.common.BaseApiController;
+import io.swagger.annotations.Api;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+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;
+
+/**
+ * @auther quanshu
+ * @create 2022-03-31 16:17:48
+ * @describe 首页渠道管理前端控制器
+ */
+@Api("首页管理API")
+@RestController
+@RequestMapping("/api/v1/mp/admin/index/*")
+@Component
+public class IndexMgrController extends BaseApiController {
+
+	@Autowired
+	private IChannelService channelService;
+
+    @Autowired
+    private IUserTicketOrderService userTicketOrderService;
+
+
+
+	/**
+	 * 查询统计交易金额
+	 * @return
+	 */
+	@PostMapping("/pay/amt")
+	// @PreAuthorize("@ss.hasPermi('business:channel:list')")
+	public AjaxResult listChannel(@RequestBody IndexQueryParam indeQueryParam) {
+		
+		IndexQueryParam queryParam = getQueryParam(indeQueryParam);
+		
+		List<IndexVO> list = new ArrayList<IndexVO>();
+		QueryWrapper<UserDeliverOrder> queryWrapper = new QueryWrapper<>();
+		queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(), "DATE_FORMAT(t1.created_time, '%Y-%m-%d')", queryParam.getStartTime());
+		queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "DATE_FORMAT(t1.created_time, '%Y-%m-%d')", queryParam.getEndTime());
+		queryWrapper.gt("t1.`status`", 0);
+		Long channelId = SecurityUtils.getLoginUser().getChannelId();
+		if(null != channelId && 0 != channelId) {
+			Channel channel = channelService.getById(channelId);
+			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
+				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
+						.or().eq("t2.channel_no", channel.getChannelNo()));
+			}
+		}
+	
+		list = userTicketOrderService.selectIndexPayAmtList(queryWrapper);
+		return  AjaxResult.success(list);
+	}
+	
+	/**
+	 * 初始化查询参数
+	 * @param indeQueryParam
+	 * @return
+	 */
+	private IndexQueryParam getQueryParam(IndexQueryParam indeQueryParam) {
+		IndexQueryParam queryParam = new IndexQueryParam();
+		queryParam.setDays(null != indeQueryParam && null != indeQueryParam.getDays()?indeQueryParam.getDays():7);
+		queryParam.setLevel(null != indeQueryParam && StringUtils.isNotBlank(indeQueryParam.getLevel())?indeQueryParam.getLevel():"day");
+		if(queryParam.getDays() == 0) { // 自定义
+			
+		}else {
+			queryParam.setStartTime(new Date());
+			queryParam.setEndTime(DateUtils.getNowDate());
+		}
+		return queryParam;
+	}
+
+}

+ 24 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/IndexQueryParam.java

@@ -0,0 +1,24 @@
+package com.qs.mp.admin.domain.param;
+
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel(value= "首页统计参数")
+@Data
+public class IndexQueryParam {
+
+	@ApiModelProperty(value = "统计最近几天",required=false)
+	private Integer days;
+
+	@ApiModelProperty(value = "自定义开始时间",required=false)
+	private Date startTime;
+
+	@ApiModelProperty(value = "自定义截止时间",required=false)
+	private Date endTime;
+
+	@ApiModelProperty(value = "统计粒度",required=false)
+	private String level;
+}

+ 35 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/IndexVO.java

@@ -0,0 +1,35 @@
+package com.qs.mp.admin.domain.vo;
+
+import lombok.Data;
+
+/**
+ * @describe 首页统计数据
+ * @auther quanshu
+ * @create 2022-03-07 20:43:44
+ */
+@Data
+public class IndexVO {
+
+
+	/**
+	 * 日期  yyyy-MM-dd
+	 */
+	private String time;
+
+	/**
+	 * 交易金额
+	 */
+	private Integer payAmt;
+
+	
+	/**
+	 * 交易用户数
+	 */
+	private Integer payUserCnt;
+	
+	
+	/**
+	 * 新增经销商数
+	 */
+	private Integer newSiteCnt;
+}

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

@@ -1,5 +1,6 @@
 package com.qs.mp.channel.mapper;
 
+import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.vo.ChannelVO;
 
@@ -41,4 +42,12 @@ public interface ChannelMapper extends BaseMapper<Channel> {
      * @return
      */
     int getChannelSiteCnt(@Param("channelNo") String channelNo);
+    
+	
+    /**
+     * 统计新增的经销商数
+     * @param wrapper
+     * @return
+     */
+ 	List<IndexVO> selectIndexSiteIncreaseList(@Param(Constants.WRAPPER) Wrapper<Channel> wrapper);
 }

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

@@ -1,10 +1,13 @@
 package com.qs.mp.channel.service;
 
+import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.vo.ChannelOperDataVO;
 import com.qs.mp.channel.domain.vo.ChannelVO;
 
 import com.qs.mp.common.enums.ChannelRoleEnum;
+import com.qs.mp.user.domain.UserDeliverOrder;
+
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
@@ -82,5 +85,13 @@ public interface IChannelService extends IService<Channel> {
 	 * 根据channelNo统计全部的经营数据
 	 */
 	public ChannelOperDataVO getChannelTotalOperData(String channelNo);
+	
+	
+   /**
+    * 统计新增的经销商数
+    * @param wrapper
+    * @return
+    */
+	List<IndexVO> selectIndexSiteIncreaseList(Wrapper<Channel> wrapper);
 
 }

+ 8 - 2
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelServiceImpl.java

@@ -3,6 +3,7 @@ package com.qs.mp.channel.service.impl;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.vo.ChannelOperDataVO;
 import com.qs.mp.channel.domain.vo.ChannelVO;
@@ -163,6 +164,11 @@ public class ChannelServiceImpl extends ServiceImpl<ChannelMapper, Channel> impl
     // channelOperData.setNewUserCnt(newUserCnt);
     return channelOperData;
   }
-
-
+  
+  
+  @Override
+  public List<IndexVO> selectIndexSiteIncreaseList(Wrapper<Channel> wrapper) {
+	 return getBaseMapper().selectIndexSiteIncreaseList(wrapper);
+  }
+  
 }

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

@@ -1,7 +1,16 @@
 package com.qs.mp.user.mapper;
 
+import com.qs.mp.admin.domain.vo.IndexVO;
+import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserTicketOrder;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 
 /**
  * @auther quanshu
@@ -10,4 +19,17 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface UserTicketOrderMapper extends BaseMapper<UserTicketOrder> {
 
+	  /**
+	   * 统计交易金额
+	   * @param wrapper
+	   * @return
+	   */
+	  List<IndexVO> selectIndexPayAmtList(@Param(Constants.WRAPPER) Wrapper<UserDeliverOrder> wrapper);
+	  
+	  /**
+	   * 统计交易用户数
+	   * @param wrapper
+	   * @return
+	   */
+	  List<IndexVO> selectIndexPayUserCntList(@Param(Constants.WRAPPER) Wrapper<UserDeliverOrder> wrapper);
 }

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

@@ -1,9 +1,14 @@
 package com.qs.mp.user.service;
 
+import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.pay.domain.PayOrder;
+import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserTicketOrder;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qs.mp.user.domain.vo.TicketOrderSettleVO;
+import com.qs.mp.user.domain.vo.UserDeliverOrderVO;
+
 import java.util.List;
 
 /**
@@ -52,4 +57,20 @@ public interface IUserTicketOrderService extends IService<UserTicketOrder> {
    * @return
    */
   boolean commToChannel(String orderId);
+  
+  
+  /**
+   * 统计交易金额
+   * @param wrapper
+   * @return
+   */
+  List<IndexVO> selectIndexPayAmtList(Wrapper<UserDeliverOrder> wrapper);
+  
+  /**
+   * 统计交易用户数
+   * @param wrapper
+   * @return
+   */
+  List<IndexVO> selectIndexPayUserCntList(Wrapper<UserDeliverOrder> wrapper);
+  
 }

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

@@ -1,12 +1,14 @@
 package com.qs.mp.user.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.TicketBox;
+import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.admin.service.ITicketBoxService;
 import com.qs.mp.admin.service.ITicketService;
 import com.qs.mp.channel.domain.Channel;
@@ -36,6 +38,7 @@ import com.qs.mp.common.utils.StringUtils;
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.system.service.id.BizIdGenerator;
 import com.qs.mp.user.domain.UserCoupon;
+import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserTicketOrder;
 import com.qs.mp.user.domain.UserTicketOrderItem;
 import com.qs.mp.user.domain.vo.TicketOrderSettleVO;
@@ -445,4 +448,14 @@ public class UserTicketOrderServiceImpl extends
     channelCommissionService.save(siteCommission);
     return siteCommission;
   }
+
+	@Override
+	public List<IndexVO> selectIndexPayAmtList(Wrapper<UserDeliverOrder> wrapper) {
+		return getBaseMapper().selectIndexPayAmtList(wrapper);
+	}
+	
+	@Override
+	public List<IndexVO> selectIndexPayUserCntList(Wrapper<UserDeliverOrder> wrapper) {
+		return getBaseMapper().selectIndexPayUserCntList(wrapper);
+	}
 }

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

@@ -63,5 +63,17 @@
 		left join mp_channel t2 on t1.parent_id = t2.channel_id
 		where t1.channel_id = #{channelId}
 	</select>
+	
+	
+	<!-- 统计新增经销商数列表 -->
+    <select id="selectIndexSiteIncreaseList" resultType="com.qs.mp.admin.domain.vo.IndexVO">
+		select 
+          DATE_FORMAT(t1.created_time, '%Y-%m-%d') AS time,
+          COUNT(t1.channel_id) AS newSiteCnt,
+	     from `mp_channel` t1
+	left join mp_channel t2 on t1.channel_id = t2.channel_id
+		${ew.customSqlSegment}
+		GROUP BY time
+	</select>
 
 </mapper>

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

@@ -26,5 +26,29 @@
     <sql id="Base_Column_List">
         order_id, user_id, title, box_id, order_amt, discount_amt, pay_amt, ticket_num, memo, resource, coupon_info, status, comm_status, channel_id, created_time, updated_time
     </sql>
+    
+    
+    <!-- 统计交易金额列表 -->
+    <select id="selectIndexPayAmtList" resultType="com.qs.mp.admin.domain.vo.IndexVO">
+		select 
+          DATE_FORMAT(a.created_time, '%Y-%m-%d') AS time,
+          SUM(a.pay_amt) AS payAmt,
+	     from `mp_user_ticket_order` a
+	left join mp_channel b on a.channel_id = b.channel_id
+		${ew.customSqlSegment}
+		GROUP BY time
+	</select>
+	
+	 <!-- 统计交易用户数列表 -->
+    <select id="selectIndexPayUserCntList" resultType="com.qs.mp.admin.domain.vo.IndexVO">
+		select 
+          DATE_FORMAT(a.created_time, '%Y-%m-%d') AS time,
+          COUNT(DISTINCT a.user_id) AS payUserCnt,
+	     from `mp_user_ticket_order` a
+	left join mp_channel b on a.channel_id = b.channel_id
+		${ew.customSqlSegment}
+		GROUP BY time
+	</select>
+    
 
 </mapper>