From 583380268736fab9ec60bea15633ab5f87efe78a Mon Sep 17 00:00:00 2001 From: "jinguo24@163.com" Date: Fri, 31 Aug 2018 19:56:23 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=9A=E5=91=98=E6=95=B0=E6=8D=AE=E6=B6=88?= =?UTF-8?q?=E8=B4=B9=E9=87=91=E9=A2=9D][=E6=96=B0=E5=A2=9E]=E6=B6=88?= =?UTF-8?q?=E8=B4=B9=E9=87=91=E9=A2=9D=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCUserDataController.java | 108 ++++++++++++++++-- .../com/simple/domain/vo/UserStructureVo.java | 22 ++++ .../simple/service/WxCouponOrderService.java | 25 ++++ .../impl/WxCouponOrderServiceImpl.java | 18 +++ .../resources/mapper/WxCouponOrderMapper.xml | 6 +- 5 files changed, 167 insertions(+), 12 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserDataController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserDataController.java index cbb176207..6f9304468 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserDataController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserDataController.java @@ -1,5 +1,6 @@ package com.simple.controller; +import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -9,7 +10,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,9 +17,11 @@ import org.springframework.web.bind.annotation.RestController; import com.simple.common.ResultData; import com.simple.domain.dto.WxCuerBasicInfoDto; +import com.simple.domain.vo.CUserDateAmountVo; import com.simple.domain.vo.TouchUsersReportVo; import com.simple.domain.vo.UserStructureVo; import com.simple.service.WxCUserService; +import com.simple.service.WxCouponOrderService; import com.simple.service.WxUserVisitService; import io.swagger.annotations.Api; @@ -34,6 +36,8 @@ public class WxCUserDataController extends BaseController{ private WxCUserService wxCUserService; @Autowired private WxUserVisitService wxUserVisitService; + @Autowired + private WxCouponOrderService wxCouponOrderService; @GetMapping("findUserCountData") @ApiOperation("查询用户数量接口") @@ -96,14 +100,15 @@ public class WxCUserDataController extends BaseController{ weekPercentage= nf.format(new Double(todayCount).doubleValue()); } Map map = new HashMap<>(); - map.put("allCount", allCount); - map.put("todayCount", todayCount); - map.put("newCountVos", newCountVos); + map.put("allCount", allCount);//会员总数 + map.put("todayCount", todayCount);//今日新增会员数 + map.put("newCountVos", newCountVos);//近一个月新增数列表 map.put("dayPercentage",dayPercentage);//日环比 map.put("weekPercentage",weekPercentage); //周同比 return new ResultData(map); } + @ApiOperation("查询用户活跃量") @GetMapping("findUserVisitData") public ResultData findUserVisitData() { HashMap params =new HashMap<>(); @@ -136,7 +141,7 @@ public class WxCUserDataController extends BaseController{ c.add(Calendar.DAY_OF_YEAR, -i); String dayStr = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()); UserStructureVo vo = new UserStructureVo(); - vo.setName(dayStr); + vo.setName(new SimpleDateFormat("MM-dd").format(c.getTime())); vo.setSortNum(j); j++; if(dateMap.get(dayStr)!=null) { @@ -156,7 +161,7 @@ public class WxCUserDataController extends BaseController{ c.add(Calendar.DAY_OF_YEAR, -i); String dayStr = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()); UserStructureVo vo = new UserStructureVo(); - vo.setName(dayStr); + vo.setName(new SimpleDateFormat("MM-dd").format(c.getTime())); vo.setSortNum(j); if(dateMap.get(dayStr)!=null) { TouchUsersReportVo rv = dateMap.get(dayStr); @@ -175,7 +180,6 @@ public class WxCUserDataController extends BaseController{ if(i==7) { dayOfWeekCount=vo.getCount(); } - monthVos.add(vo); j++; } @@ -198,12 +202,98 @@ public class WxCUserDataController extends BaseController{ Map mapVo =new HashMap<>(); mapVo.put("yesterdayCount", yesterdayCount);//昨日活跃数 mapVo.put("thisMonthCount", thisMonthCount);//近一个月活跃数 - mapVo.put("weekVos", weekVos);//上周活跃数 - mapVo.put("monthVos", monthVos);//上月活跃数 + mapVo.put("weekVos", weekVos);//上周活跃数列表 + mapVo.put("monthVos", monthVos);//上月活跃数列表 mapVo.put("dayPercentage",dayPercentage);//日环比 mapVo.put("weekPercentage",weekPercentage); //周同比 return new ResultData(mapVo); } + @ApiOperation("查询用户消费金额") + @GetMapping("findUserAmountData") + private ResultData findUserAmountData() { + String tenantId = getTenantId(); + Calendar c =Calendar.getInstance(); + Date today = c.getTime(); + c.add(Calendar.DAY_OF_YEAR, 1); + c.set(Calendar.HOUR_OF_DAY, 0); + c.set(Calendar.MINUTE,0); + c.set(Calendar.SECOND,0); + Date endTime = c.getTime();//明天0点 + c.add(Calendar.DAY_OF_YEAR, -30);//三十天前 + Date startTime = c.getTime(); + int thisMonthCount =wxCouponOrderService.queryPriceTotal(tenantId, startTime, endTime);//月消费金额 + c.clear(); + c.setTime(endTime); + Date eTime=c.getTime(); + c.add(Calendar.DAY_OF_YEAR, -8); + Date sTime =c.getTime(); + List datas = wxCouponOrderService.queryPriceTotalGroup(tenantId, sTime, eTime); + Map dataMap = new HashMap<>(); + for(CUserDateAmountVo v:datas) { + dataMap.put(v.getxTime(), v.getPrice()); + } + Integer todayCount=0;//今日金额数 + Integer yesterdayCount =0;//昨日金额数 + Integer dayOfWeekCount=0;//上周x + int j=0; + List weekCountVos = new ArrayList<>();//周消费金额 + for(int i=7;i>=0;i--) { + c.clear(); + c.setTime(today); + c.add(Calendar.DAY_OF_YEAR, -i); + String dateStr = new SimpleDateFormat("MM-dd").format(c.getTime()); + UserStructureVo vo = new UserStructureVo(); + vo.setName(new SimpleDateFormat("MM-dd").format(c.getTime())); + vo.setSortNum(j); + if(dataMap.get(dateStr)!=null) { + int price= dataMap.get(dateStr); + vo.setPrice(price); + }else { + vo.setPrice(0); + } + if(i==0) { + todayCount =vo.getPrice(); + } + if(i==1) { + yesterdayCount =vo.getPrice(); + } + if(i==7) { + dayOfWeekCount=vo.getPrice(); + }else { + weekCountVos.add(vo); + } + j++; + + } + NumberFormat nf = NumberFormat.getPercentInstance(); + nf.setMinimumFractionDigits(2); + String dayPercentage =""; + if(yesterdayCount>0) { + Integer count =todayCount-yesterdayCount; + dayPercentage=nf.format(count.doubleValue()/new Double(yesterdayCount).doubleValue()); + }else { + dayPercentage= nf.format(new Double(todayCount).doubleValue()); + } + String weekPercentage =""; + if(dayOfWeekCount>0) { + Integer count =todayCount-dayOfWeekCount; + weekPercentage=nf.format(count.doubleValue()/new Double(dayOfWeekCount).doubleValue()); + }else { + weekPercentage= nf.format(new Double(todayCount).doubleValue()); + } + Map map =new HashMap<>(); + DecimalFormat df=new DecimalFormat("0.00"); + map.put("todayCount", df.format((float)todayCount/100));//今日消费金额 + String thisMonthCountStr = df.format((float)thisMonthCount/100); + map.put("thisMonthCount", thisMonthCountStr);//近一个月消费金额数 + map.put("dayPercentage",dayPercentage);//日环比 + map.put("weekPercentage",weekPercentage); //周同比 + map.put("weekCountVos", weekCountVos);//一周金额列表 + return new ResultData(map); + } + } + + diff --git a/mallinkService/src/main/java/com/simple/domain/vo/UserStructureVo.java b/mallinkService/src/main/java/com/simple/domain/vo/UserStructureVo.java index 21a641ff0..05e90a699 100644 --- a/mallinkService/src/main/java/com/simple/domain/vo/UserStructureVo.java +++ b/mallinkService/src/main/java/com/simple/domain/vo/UserStructureVo.java @@ -1,6 +1,7 @@ package com.simple.domain.vo; import java.io.Serializable; +import java.text.DecimalFormat; /** * 会员结构vo * @author jinguo @@ -20,6 +21,27 @@ public class UserStructureVo implements Serializable{ private String percentage; //序号 private Integer sortNum; + + private Integer price; + + private String priceStr; + + public Integer getPrice() { + return price; + } + public void setPrice(Integer price) { + this.price = price; + } + public String getPriceStr() { + if(price!=null) { + DecimalFormat df=new DecimalFormat("0.00"); + priceStr = df.format((float)price/100); + } + return priceStr; + } + public void setPriceStr(String priceStr) { + this.priceStr = priceStr; + } public Integer getSortNum() { return sortNum; } diff --git a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java index 6169ca752..cdc803472 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java @@ -3,10 +3,16 @@ package com.simple.service; import com.github.pagehelper.PageInfo; import com.simple.common.ResultData; import com.simple.domain.po.WxCouponOrder; +import com.simple.domain.vo.CUserDateAmountVo; + +import java.util.Date; +import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.ibatis.annotations.Param; + public interface WxCouponOrderService { /** @@ -107,4 +113,23 @@ public interface WxCouponOrderService { void exportData(HttpServletRequest request, HttpServletResponse response, String tenantId); + + /** + * 日期分组 消费总数 + * @param tenantId + * @param startTime + * @param endTime + * @return + */ + List queryPriceTotalGroup(String tenantId, Date startTime,Date endTime); + /** + * 查询时间段内消费总数 + * @param tenantId + * @param startTime + * @param endTime + * @return + */ + int queryPriceTotal(String tenantId, Date startTime, Date endTime); + + } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java index 2b5efc0ba..1405197cd 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -8,6 +8,7 @@ import com.simple.common.ErrorCode; import com.simple.common.IdWorker; import com.simple.common.ResultData; import com.simple.domain.po.*; +import com.simple.domain.vo.CUserDateAmountVo; import com.simple.domain.vo.WxCouponOrderBVo; import com.simple.domain.vo.WxCouponOrderCVo; import com.simple.enums.EnumCouponOrderStatus; @@ -371,4 +372,21 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { return new ResultData(wxCouponOrder); } + + + @Override + public List queryPriceTotalGroup(String tenantId, Date startTime, Date endTime) { + + return wxCouponOrderMapper.queryPriceTotalGroup(tenantId, startTime, endTime); + } + + + + @Override + public int queryPriceTotal(String tenantId, Date startTime, Date endTime) { + return wxCouponOrderMapper.queryPriceTotal(tenantId, startTime, endTime); + } + + + } diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 633ab599b..693f2a5b8 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -415,13 +415,13 @@