Parcourir la source

Merge branch 'dev' of 113.31.163.91:quanshu/mp-server into dev

chunping il y a 3 ans
Parent
commit
16e31ad568

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

@@ -0,0 +1,447 @@
+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.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+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 listPayAmtData(@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(getPayAmtList(list, queryParam));
+	}
+	
+	private List<Map<String,Object>> getPayAmtList(List<IndexVO> list, IndexQueryParam queryParam){
+		List<Map<String,Object>> mapList = new ArrayList<>();
+		if(null != queryParam && queryParam.getLevel().equals("month")) {  // 月粒度
+			List<String> monthList = DateUtils.addMonths(queryParam.getStartTime(), queryParam.getEndTime());
+			if(null != monthList && monthList.size() > 0) {
+				for(String month : monthList) {
+					if(StringUtils.isNotBlank(month)) {
+						Map<String,Object> map = new HashMap<String,Object>();
+						map.put("x", month);
+						map.put("y", getMonthPayAmt(month, list));
+						mapList.add(map);
+					}
+				}
+			}
+		}else if(null != queryParam && queryParam.getLevel().equals("week")) {  // 周粒度
+			List<Map<String,Object>> weekList = DateUtils.getDateOfWeek(queryParam.getStartTime(), queryParam.getEndTime());
+			if(null != weekList && weekList.size() > 0) {
+				for(Map<String,Object> weekMap : weekList) {
+					if(null != weekMap && weekMap.containsKey("start")
+							&& weekMap.containsKey("end")
+							&& weekMap.containsKey("dayList")) {
+						String start = weekMap.get("start").toString();
+						String end = weekMap.get("end").toString();
+						List<String> dayList = (List<String>) weekMap.get("dayList");
+						Map<String,Object> map = new HashMap<String,Object>();
+						map.put("x", start +"-"+end);
+						map.put("y", getWeekPayAmt(dayList, list));
+						mapList.add(map);
+					}
+				}
+			}
+		}else {  // 日粒度
+			List<String> dayList = DateUtils.addDates(DateUtils.dateTime(queryParam.getStartTime()), DateUtils.dateTime(queryParam.getEndTime()));
+			if(null != dayList && dayList.size() > 0) {
+				for(String day : dayList) {
+					int payAmt = 0;
+					if(null != list && list.size() > 0) {
+						if(StringUtils.isNotBlank(day)) {
+							for(IndexVO indexVo : list) {
+								if(null != indexVo 
+										&& null != indexVo.getPayAmt()
+										&& StringUtils.isNotBlank(indexVo.getTime())
+										&& indexVo.getTime().equals(day)) {
+									payAmt = indexVo.getPayAmt();
+									break;
+								}
+							}
+						}
+					}
+					Map<String,Object> map = new HashMap<String,Object>();
+					map.put("x", day);
+					map.put("y", payAmt);
+					mapList.add(map);
+				}
+			}
+		}
+		return mapList;
+	} 
+	
+	
+	private int getWeekPayAmt(List<String> dayList, List<IndexVO> list) {
+		BigDecimal payAmt = new BigDecimal(0);
+		if(null != list && list.size() > 0
+				&& null != dayList && dayList.size() > 0) {
+			for(IndexVO indexVo : list) {
+				if(null != indexVo 
+						&& null != indexVo.getPayAmt()
+						&& StringUtils.isNotBlank(indexVo.getTime())
+						&& dayList.contains(indexVo.getTime())) {
+					payAmt = payAmt.add(new BigDecimal(indexVo.getPayAmt()));
+				}
+			}
+			return payAmt.intValue();
+		}
+		return 0;
+	}
+	
+	private int getMonthPayAmt(String month, List<IndexVO> list) {
+		BigDecimal payAmt = new BigDecimal(0);
+		if(null != list && list.size() > 0
+				&& StringUtils.isNotBlank(month)) {
+			for(IndexVO indexVo : list) {
+				if(null != indexVo 
+						&& null != indexVo.getPayAmt()
+						&& StringUtils.isNotBlank(indexVo.getTime())
+						&& indexVo.getTime().indexOf(month) >= 0) {
+					payAmt = payAmt.add(new BigDecimal(indexVo.getPayAmt()));
+				}
+			}
+			return payAmt.intValue();
+		}
+		return 0;
+	}
+	
+	
+	/**
+	 * 查询统计交易用户数
+	 * @return
+	 */
+	@PostMapping("/pay/user")
+	// @PreAuthorize("@ss.hasPermi('business:channel:list')")
+	public AjaxResult listPayUserData(@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.selectIndexPayUserCntList(queryWrapper);
+		return  AjaxResult.success(getPayUserList(list, queryParam));
+	}
+	
+	private List<Map<String,Object>> getPayUserList(List<IndexVO> list, IndexQueryParam queryParam){
+		List<Map<String,Object>> mapList = new ArrayList<>();
+		if(null != queryParam && queryParam.getLevel().equals("month")) {  // 月粒度
+			List<String> monthList = DateUtils.addMonths(queryParam.getStartTime(), queryParam.getEndTime());
+			if(null != monthList && monthList.size() > 0) {
+				for(String month : monthList) {
+					if(StringUtils.isNotBlank(month)) {
+						Map<String,Object> map = new HashMap<String,Object>();
+						map.put("x", month);
+						map.put("y", getMonthPayUser(month, list));
+						mapList.add(map);
+					}
+				}
+			}
+		}else if(null != queryParam && queryParam.getLevel().equals("week")) {  // 周粒度
+			List<Map<String,Object>> weekList = DateUtils.getDateOfWeek(queryParam.getStartTime(), queryParam.getEndTime());
+			if(null != weekList && weekList.size() > 0) {
+				for(Map<String,Object> weekMap : weekList) {
+					if(null != weekMap && weekMap.containsKey("start")
+							&& weekMap.containsKey("end")
+							&& weekMap.containsKey("dayList")) {
+						String start = weekMap.get("start").toString();
+						String end = weekMap.get("end").toString();
+						List<String> dayList = (List<String>) weekMap.get("dayList");
+						Map<String,Object> map = new HashMap<String,Object>();
+						map.put("x", start +"-"+end);
+						map.put("y", getWeekPayUser(dayList, list));
+						mapList.add(map);
+					}
+				}
+			}
+		}else {  // 日粒度
+			List<String> dayList = DateUtils.addDates(DateUtils.dateTime(queryParam.getStartTime()), DateUtils.dateTime(queryParam.getEndTime()));
+			if(null != dayList && dayList.size() > 0) {
+				for(String day : dayList) {
+					int payUser = 0;
+					if(null != list && list.size() > 0) {
+						if(StringUtils.isNotBlank(day)) {
+							for(IndexVO indexVo : list) {
+								if(null != indexVo 
+										&& null != indexVo.getPayUserCnt()
+										&& StringUtils.isNotBlank(indexVo.getTime())
+										&& indexVo.getTime().equals(day)) {
+									payUser = indexVo.getPayUserCnt();
+									break;
+								}
+							}
+						}
+					}
+					Map<String,Object> map = new HashMap<String,Object>();
+					map.put("x", day);
+					map.put("y", payUser);
+					mapList.add(map);
+				}
+			}
+		}
+		return mapList;
+	} 
+	
+	
+	private int getWeekPayUser(List<String> dayList, List<IndexVO> list) {
+		int payUserCnt = 0;
+		if(null != list && list.size() > 0
+				&& null != dayList && dayList.size() > 0) {
+			for(IndexVO indexVo : list) {
+				if(null != indexVo 
+						&& null != indexVo.getPayUserCnt()
+						&& StringUtils.isNotBlank(indexVo.getTime())
+						&& dayList.contains(indexVo.getTime())) {
+					payUserCnt = payUserCnt + indexVo.getPayUserCnt();
+				}
+			}
+			return payUserCnt;
+		}
+		return 0;
+	}
+	
+	private int getMonthPayUser(String month, List<IndexVO> list) {
+		int payUserCnt = 0;
+		if(null != list && list.size() > 0
+				&& StringUtils.isNotBlank(month)) {
+			for(IndexVO indexVo : list) {
+				if(null != indexVo 
+						&& null != indexVo.getPayUserCnt()
+						&& StringUtils.isNotBlank(indexVo.getTime())
+						&& indexVo.getTime().indexOf(month) >= 0) {
+					payUserCnt = payUserCnt + indexVo.getPayUserCnt();
+				}
+			}
+			return payUserCnt;
+		}
+		return 0;
+	}
+	
+	
+	/**
+	 * 初始化查询参数
+	 * @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) { // 自定义
+			if(null != indeQueryParam.getStartTime() && null != indeQueryParam.getEndTime()) {
+				queryParam.setStartTime(indeQueryParam.getStartTime());
+				queryParam.setEndTime(indeQueryParam.getEndTime());
+			}else {
+				queryParam.setStartTime(DateUtils.getPreDayOfNow(7));
+				queryParam.setEndTime(new Date());
+			}
+		}else {
+			queryParam.setStartTime(DateUtils.getPreDayOfNow(queryParam.getDays()));
+			queryParam.setEndTime(new Date());
+		}
+		return queryParam;
+	}
+	
+	
+	/**
+	 * 查询统计新增经销商数量
+	 * @return
+	 */
+	@PostMapping("/site/increase")
+	// @PreAuthorize("@ss.hasPermi('business:channel:list')")
+	public AjaxResult listSiteIncreaseData(@RequestBody IndexQueryParam indeQueryParam) {
+		
+		IndexQueryParam queryParam = getQueryParam(indeQueryParam);
+		
+		List<IndexVO> list = new ArrayList<IndexVO>();
+		QueryWrapper<Channel> 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.eq("t1.`level`", 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 = channelService.selectIndexSiteIncreaseList(queryWrapper);
+		return  AjaxResult.success(getSiteIncreaseList(list, queryParam));
+	}
+	
+	private List<Map<String,Object>> getSiteIncreaseList(List<IndexVO> list, IndexQueryParam queryParam){
+		List<Map<String,Object>> mapList = new ArrayList<>();
+		if(null != queryParam && queryParam.getLevel().equals("month")) {  // 月粒度
+			List<String> monthList = DateUtils.addMonths(queryParam.getStartTime(), queryParam.getEndTime());
+			if(null != monthList && monthList.size() > 0) {
+				for(String month : monthList) {
+					if(StringUtils.isNotBlank(month)) {
+						Map<String,Object> map = new HashMap<String,Object>();
+						map.put("x", month);
+						map.put("y", getMonthSiteIncrease(month, list));
+						mapList.add(map);
+					}
+				}
+			}
+		}else if(null != queryParam && queryParam.getLevel().equals("week")) {  // 周粒度
+			List<Map<String,Object>> weekList = DateUtils.getDateOfWeek(queryParam.getStartTime(), queryParam.getEndTime());
+			if(null != weekList && weekList.size() > 0) {
+				for(Map<String,Object> weekMap : weekList) {
+					if(null != weekMap && weekMap.containsKey("start")
+							&& weekMap.containsKey("end")
+							&& weekMap.containsKey("dayList")) {
+						String start = weekMap.get("start").toString();
+						String end = weekMap.get("end").toString();
+						List<String> dayList = (List<String>) weekMap.get("dayList");
+						Map<String,Object> map = new HashMap<String,Object>();
+						map.put("x", start +"-"+end);
+						map.put("y", getWeekSiteIncrease(dayList, list));
+						mapList.add(map);
+					}
+				}
+			}
+		}else {  // 日粒度
+			List<String> dayList = DateUtils.addDates(DateUtils.dateTime(queryParam.getStartTime()), DateUtils.dateTime(queryParam.getEndTime()));
+			if(null != dayList && dayList.size() > 0) {
+				for(String day : dayList) {
+					int newSiteCnt = 0;
+					if(null != list && list.size() > 0) {
+						if(StringUtils.isNotBlank(day)) {
+							for(IndexVO indexVo : list) {
+								if(null != indexVo 
+										&& null != indexVo.getNewSiteCnt()
+										&& StringUtils.isNotBlank(indexVo.getTime())
+										&& indexVo.getTime().equals(day)) {
+									newSiteCnt = indexVo.getNewSiteCnt();
+									break;
+								}
+							}
+						}
+					}
+					
+					Map<String,Object> map = new HashMap<String,Object>();
+					map.put("x", day);
+					map.put("y", newSiteCnt);
+					mapList.add(map);
+				}
+			}
+		}
+		return mapList;
+	} 
+	
+	
+	private int getWeekSiteIncrease(List<String> dayList, List<IndexVO> list) {
+		int newSiteCnt = 0;
+		if(null != list && list.size() > 0
+				&& null != dayList && dayList.size() > 0) {
+			for(IndexVO indexVo : list) {
+				if(null != indexVo 
+						&& null != indexVo.getNewSiteCnt()
+						&& StringUtils.isNotBlank(indexVo.getTime())
+						&& dayList.contains(indexVo.getTime())) {
+					newSiteCnt = newSiteCnt + indexVo.getNewSiteCnt();
+				}
+			}
+			return newSiteCnt;
+		}
+		return 0;
+	}
+	
+	private int getMonthSiteIncrease(String month, List<IndexVO> list) {
+		int newSiteCnt = 0;
+		if(null != list && list.size() > 0
+				&& StringUtils.isNotBlank(month)) {
+			for(IndexVO indexVo : list) {
+				if(null != indexVo 
+						&& null != indexVo.getNewSiteCnt()
+						&& StringUtils.isNotBlank(indexVo.getTime())
+						&& indexVo.getTime().indexOf(month) >= 0) {
+					newSiteCnt = newSiteCnt + indexVo.getNewSiteCnt();
+				}
+			}
+			return newSiteCnt;
+		}
+		return 0;
+	}
+	
+	
+
+
+}

+ 108 - 16
mp-common/src/main/java/com/qs/mp/common/utils/DateUtils.java

@@ -6,6 +6,7 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.Collections;
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.HashMap;
@@ -246,6 +247,23 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
     }
     
     // 首页统计日期处理
+    
+    
+  	 /** 
+  	 * 取得指定日期所在周的最后一天 
+  	 */ 
+  	 public static Date getPreDayOfNow(int days) { 
+  		try {
+			Calendar c = Calendar.getInstance();
+		   	c.setFirstDayOfWeek(Calendar.MONDAY); 
+		   	c.add(Calendar.DATE, - days);
+		   	return c.getTime(); 
+		} catch (Exception e) {
+			e.printStackTrace();
+			return null;
+		}
+  	 }
+    
     /** 
      * @Title: getDateOfWeek 
      * @Description: 获取两个时间内所有周之间的时间段,并且获得是今年第几周
@@ -255,7 +273,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
     public static List<Map<String,Object>> getDateOfWeek(Date startTime, Date endTime) {
     	List<Map<String,Object>> rtnList = new ArrayList<Map<String,Object>>();
     	try {  
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");  
             
             Calendar startCalendar = Calendar.getInstance();  
             startCalendar.setTime(startTime);  
@@ -302,7 +320,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
                 Long time = startTIme;
                 //循环得出
                 while (time <= endTIme) {
-                    list.add(new SimpleDateFormat("yyyy-MM-dd").format(new Date(time)));
+                    list.add(new SimpleDateFormat("yyyyMMdd").format(new Date(time)));
                     time += oneDay;
                 }
                 endCalendar.add(Calendar.DATE, -j); //减去增加的日期  
@@ -318,12 +336,11 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
 	 	            	e_date = sdf.format(endTime);
 	 	            }
 	            	 Calendar yearCalendar = Calendar.getInstance();  
-	            	 Date sDate = sdf.parse(s_date);
-	            	 yearCalendar.setTime(sDate);  
+	            	 yearCalendar.setTime(startTime);  
 	            	int year = yearCalendar.get(Calendar.YEAR);  
 	            	String s = year+ "年的第" + (endWeekOfYear - i) + "周" + "(" + s_date + "至" + e_date + ")";     
 	                System.out.println(s);  
-	                System.out.println("包含的日期 = " +list.toString());
+	               // System.out.println("包含的日期 = " +list.toString());
 	                Map<String,Object> map = new HashMap<String,Object>();
 	                map.put("start", s_date);
 	                map.put("end", e_date);
@@ -338,17 +355,17 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         } catch (Exception e) {  
             e.printStackTrace();  
         }
+    	Collections.reverse(rtnList);
     	return rtnList;
     }
     
     
-    
     /** 
    	 * 取得指定日期所在周的第一天 
    	 */ 
    	 public static String getFirstDayOfWeek(Date date) { 
 		try {
-			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
 			Calendar c = new GregorianCalendar(); 
 		   	c.setFirstDayOfWeek(Calendar.MONDAY); 
 		   	c.setTime(date); 
@@ -367,7 +384,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
    	 */ 
    	 public static String getLastDayOfWeek(Date date) { 
    		try {
-			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
 			Calendar c = new GregorianCalendar(); 
 		   	c.setFirstDayOfWeek(Calendar.MONDAY); 
 		   	c.setTime(date); 
@@ -388,7 +405,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
  	 */
   	public static boolean compareDate(String startDate, String endDate) {
  		try {
- 			DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ 			DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
  			java.util.Date date1 = dateFormat.parse(startDate);
  			java.util.Date date2 = dateFormat.parse(endDate);
  			if (date1.getTime() > date2.getTime())
@@ -424,23 +441,98 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         Long time = startTIme;
         //循环得出
         while (time <= endTime) {
-            list.add(new SimpleDateFormat("yyyy-MM-dd").format(new Date(time)));
+            list.add(new SimpleDateFormat("yyyyMMdd").format(new Date(time)));
             time += oneDay;
         }
         return list;
     }
     
     
+    /** 
+     * @Title: getDateOfWeek 
+     * @Description: 获取两个时间内所有周之间的时间段,并且获得是今年第几周
+     * @param start_time    开始时间 
+     * @param end_time      结束时间 
+     */  
+    public static List<String> addMonths(Date startTime, Date endTime) {
+    	List<String> list = new ArrayList<String>();
+    	try {  
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(startTime);
+            // 获取开始年份和开始月份
+            int startYear = calendar.get(Calendar.YEAR);
+            int startMonth = calendar.get(Calendar.MONTH);
+            // 获取结束年份和结束月份
+            calendar.setTime(endTime);
+            int endYear = calendar.get(Calendar.YEAR);
+            int endMonth = calendar.get(Calendar.MONTH);
+            //
+            
+            for (int i = startYear; i <= endYear; i++) {
+                String date = "";
+                if (startYear == endYear) {
+                    for (int j = startMonth; j <= endMonth; j++) {
+                        if (j < 9) {
+                            date = i + "0" + (j + 1);
+                        } else {
+                            date = i + "" + (j + 1);
+                        }
+                        list.add(date);
+                    }
+                } else {
+                    if (i == startYear) {
+                        for (int j = startMonth; j < 12; j++) {
+                            if (j < 9) {
+                                date = i + "0" + (j + 1);
+                            } else {
+                                date = i + "" + (j + 1);
+                            }
+                            list.add(date);
+                        }
+                    } else if (i == endYear) {
+                        for (int j = 0; j <= endMonth; j++) {
+                            if (j < 9) {
+                                date = i + "0" + (j + 1);
+                            } else {
+                                date = i + "" + (j + 1);
+                            }
+                            list.add(date);
+                        }
+                    } else {
+                        for (int j = 0; j < 12; j++) {
+                            if (j < 9) {
+                                date = i + "0" + (j + 1);
+                            } else {
+                                date = i + "" + (j + 1);
+                            }
+                            list.add(date);
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {  
+            e.printStackTrace();  
+        }
+    	return list;
+    }
+    
+    
     public static void main(String[] args) throws Exception {
 //      List<String> list = addDates("2022-02-01", "2022-03-31");
 //      list.forEach(i ->
 //              System.out.println(i)
 //      );
-    	DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
-        String start_time = "2022-02-02";
-		String end_time = "2022-04-11";
-		List<Map<String,Object>> lsit = getDateOfWeek(dateFormat.parse(start_time), dateFormat.parse(end_time));  
-		System.out.println(JSON.toJSONString(lsit));
-
+//    	DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+//        String start_time = "2022-02-01";
+//		String end_time = "2022-05-30";
+//		List<Map<String,Object>> lsit = getDateOfWeek(dateFormat.parse(start_time), dateFormat.parse(end_time));  
+//		System.out.println(JSON.toJSONString(lsit));
+		
+		
+//		List<String> monthList = addMonths(dateFormat.parse(start_time), dateFormat.parse(end_time));
+//		System.out.println(JSON.toJSONString(monthList));
+//       
+//		
+//		System.out.println(start_time.indexOf("2022-01"));
   }
 }

+ 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);
 }

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

@@ -1,7 +1,10 @@
 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.UserShareVO;
@@ -54,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,11 +1,13 @@
 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.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;
@@ -35,6 +37,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;
@@ -468,4 +471,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

@@ -27,5 +27,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, share_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(t1.created_time, '%Y%m%d') AS time,
+          SUM(t1.pay_amt) AS payAmt
+	     from `mp_user_ticket_order` t1
+	left join mp_channel t2 on t1.channel_id = t2.channel_id
+		${ew.customSqlSegment}
+		GROUP BY time
+	</select>
+	
+	 <!-- 统计交易用户数列表 -->
+    <select id="selectIndexPayUserCntList" resultType="com.qs.mp.admin.domain.vo.IndexVO">
+		select 
+          DATE_FORMAT(t1.created_time, '%Y%m%d') AS time,
+          COUNT(DISTINCT t1.user_id) AS payUserCnt
+	     from `mp_user_ticket_order` t1
+	left join mp_channel t2 on t1.channel_id = t2.channel_id
+		${ew.customSqlSegment}
+		GROUP BY time
+	</select>
+    
 
 </mapper>