diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantMicroPayController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantMicroPayController.java new file mode 100644 index 000000000..5adb0d460 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantMicroPayController.java @@ -0,0 +1,48 @@ +package com.iformall.controller; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; +import com.iformall.domain.dto.WxOrderReportDto; +import com.iformall.domain.vo.WxMerchantTradeDailyVo; +import com.iformall.enums.EnumOrderType; +import com.iformall.service.MarkingDataReportService; +import com.iformall.service.WxMerchantTradeDailyService; +import com.iformall.service.WxOrderService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +@RestController +@RequestMapping("wxMerchantMicroPay") +public class WxMerchantMicroPayController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private MarkingDataReportService markingDataReportService; + + @ApiOperation("查询触达用户数数据列表") + @GetMapping("/listOrderMicroPayReportByDate") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData listOrderMicroPayReportByDate(@ModelAttribute WxOrderReportDto wxOrderReportDto, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxMerchantMicroPayController::listOrderMicroPayReportByDate"); + if (wxOrderReportDto == null){ + wxOrderReportDto = new WxOrderReportDto(); + } + wxOrderReportDto.setType(EnumOrderType.MICROPAY.getCode()); + return new ResultData(markingDataReportService.listOrderReportByDate(getTenantId(), wxOrderReportDto, pageNum, pageSize)); + } + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/WxOrderReportDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/WxOrderReportDto.java new file mode 100644 index 000000000..2013e514e --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/dto/WxOrderReportDto.java @@ -0,0 +1,36 @@ +package com.iformall.domain.dto; + +import java.util.Date; + +/** + * Created by syf on 2018/8/30. + */ +public class WxOrderReportDto { + private Date startTime; + private Date endTime; + private Integer type; + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderReportVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderReportVo.java new file mode 100644 index 000000000..7e640de02 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderReportVo.java @@ -0,0 +1,38 @@ +package com.iformall.domain.vo; + +import javax.persistence.Id; +import javax.persistence.Transient; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +public class WxOrderReportVo implements Serializable { + private static final long serialVersionUID = 1L; + private int count; + private int amount; + private String xTime; //时间 + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } + + public int getAmount() { + return amount; + } + + public void setAmount(int amount) { + this.amount = amount; + } + + public String getxTime() { + return xTime; + } + + public void setxTime(String xTime) { + this.xTime = xTime; + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java index 8afa26fb5..f87495f7f 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java @@ -3,6 +3,7 @@ package com.iformall.mapper; import java.util.*; import com.iformall.common.CommonMapper; import com.iformall.domain.vo.MarkingSceneDataVo; +import com.iformall.domain.vo.WxOrderReportVo; import com.iformall.domain.vo.WxOrderCouponVo; import com.iformall.domain.po.WxOrder; import com.iformall.domain.vo.WxOrderPayVo; @@ -25,4 +26,5 @@ public interface WxOrderMapper extends CommonMapper { List queryForSceneRepotyHistory(HashMap params); + List listOrderReportByDate(HashMap params); } diff --git a/mallinkService/src/main/java/com/iformall/service/MarkingDataReportService.java b/mallinkService/src/main/java/com/iformall/service/MarkingDataReportService.java index 31e5a5d7c..14f61aca8 100644 --- a/mallinkService/src/main/java/com/iformall/service/MarkingDataReportService.java +++ b/mallinkService/src/main/java/com/iformall/service/MarkingDataReportService.java @@ -2,6 +2,7 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.domain.dto.MarkingCouponDataReportDto; +import com.iformall.domain.dto.WxOrderReportDto; import com.iformall.domain.vo.MarkingCouponDataReportVo; import com.iformall.domain.vo.MarkingSceneDataVo; import com.iformall.domain.vo.TouchUsersReportVo; @@ -24,4 +25,6 @@ public interface MarkingDataReportService { PageInfo getTouchUsersReportList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto, Integer pageIndex, Integer pageSize); List getTouchUsersReportData(String tenantId); + + Map listOrderReportByDate(String tenantId, WxOrderReportDto wxOrderReportDto, Integer pageIndex, Integer pageSize); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java index d710fbbcb..9c47a13e9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java @@ -3,11 +3,9 @@ package com.iformall.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.domain.dto.MarkingCouponDataReportDto; +import com.iformall.domain.dto.WxOrderReportDto; import com.iformall.domain.po.WxCoupon; -import com.iformall.domain.vo.MarkingCouponDataReportVo; -import com.iformall.domain.vo.MarkingSceneDataReportVo; -import com.iformall.domain.vo.MarkingSceneDataVo; -import com.iformall.domain.vo.TouchUsersReportVo; +import com.iformall.domain.vo.*; import com.iformall.enums.EnumCarCmd; import com.iformall.enums.EnumCouponSendSendType; import com.iformall.enums.EnumCouponType; @@ -16,12 +14,15 @@ import com.iformall.mapper.*; import com.iformall.service.MarkingDataReportService; import com.iformall.utils.DateUtils; import net.bytebuddy.asm.Advice; +import org.joda.time.Days; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.NumberFormat; +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.stream.Collectors; @@ -81,17 +82,13 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { NumberFormat nf = NumberFormat.getPercentInstance(); nf.setMinimumFractionDigits(2);//控制保留小数点后几位,2:表示保留2位小数点 - String couponUpDay = ""; + String couponUpDay = "--"; if (yesterdayCount != 0) { couponUpDay = nf.format((todayCouponCount - yesterdayCount) / (float) yesterdayCount); - } else { - couponUpDay = nf.format(todayCouponCount); } - String couponUpWeek = ""; + String couponUpWeek = "--"; if (lastWeekCount != 0) { couponUpWeek = nf.format((todayCouponCount - lastWeekCount) / (float) lastWeekCount); - } else { - couponUpWeek = nf.format(todayCouponCount); } //couponData @@ -142,17 +139,13 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { NumberFormat nf = NumberFormat.getPercentInstance(); nf.setMinimumFractionDigits(2);//控制保留小数点后几位,2:表示保留2位小数点 - String sceneDownDay = ""; + String sceneDownDay = "--"; if (yesterdayCount != 0) { sceneDownDay = nf.format((yesterdayCount - todaySceneCount) / (float) yesterdayCount); - } else { - sceneDownDay = nf.format(0 - todaySceneCount); } - String sceneUpWeek = ""; + String sceneUpWeek = "--"; if (lastWeekCount != 0) { sceneUpWeek = nf.format((todaySceneCount - lastWeekCount) / (float) lastWeekCount); - } else { - sceneUpWeek = nf.format(todaySceneCount); } HashMap params = new HashMap<>(); @@ -385,6 +378,94 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { return new PageInfo<>(list); } + + @Override + public Map listOrderReportByDate(String tenantId, WxOrderReportDto wxOrderReportDto, Integer pageIndex, Integer pageSize) { + HashMap params = new HashMap<>(); + params.put("tenantId", tenantId); + if (wxOrderReportDto.getStartTime() != null) { + params.put("startTime", convertDateAndAdd(wxOrderReportDto.getStartTime(), 0)); + } else { + params.put("startTime", addDay(-30)); + } + if (wxOrderReportDto.getEndTime() != null) { + params.put("endTime", convertDateAndAdd(wxOrderReportDto.getStartTime(), 0)); + } else { + params.put("endTime", addDay(1)); + } + params.put("type", wxOrderReportDto.getType()); + List list = wxOrderMapper.listOrderReportByDate(params); + + String startdate = DateUtils.getTimeBefore(30, new Date()); + String enddate = DateUtils.getTimeBefore(0,new Date()); + List tjTimeList = DateUtils.getTjTimeList(startdate, enddate, "0"); + List wxOrderReportVoList = new ArrayList(); + + int todayCount = 0; + int todayAmount = 0; + int yesterdayCount = 0; + int yesterdayAmount = 0; + int lastWeekCount = 0; + int lastWeekAmount = 0; + + for(String tj:tjTimeList){ + Optional first = list.stream().filter(c -> c.getxTime().equals(tj)).findFirst(); + if(!first.isPresent()){ + WxOrderReportVo orderReportVo = new WxOrderReportVo(); + orderReportVo.setAmount(0); + orderReportVo.setCount(0); + first = Optional.of(orderReportVo); + } + first.get().setxTime(tj.substring(5).replace("-", "/")); + wxOrderReportVoList.add(first.get()); + if (LocalDate.now().equals(tj)){ + todayCount = first.get().getCount(); + todayAmount = first.get().getAmount(); + } + if (LocalDate.now().minusDays(1).equals(tj)){ + yesterdayCount = first.get().getCount(); + yesterdayAmount = first.get().getAmount(); + } + if (LocalDate.now().minusDays(7).equals(tj)){ + lastWeekCount = first.get().getCount(); + lastWeekAmount= first.get().getAmount(); + } + + } + + NumberFormat nf = NumberFormat.getPercentInstance(); + nf.setMinimumFractionDigits(2);//控制保留小数点后几位,2:表示保留2位小数点 + String dayCountRate = "--"; + if (yesterdayCount != 0) { + dayCountRate = nf.format((todayCount - yesterdayCount) / (float) yesterdayCount); + } + String weekCountRate = "--"; + if (lastWeekCount != 0) { + weekCountRate = nf.format((todayCount - lastWeekCount) / (float) lastWeekCount); + } + + String dayAmountRate = "--"; + if (yesterdayAmount != 0) { + dayAmountRate = nf.format((todayAmount - yesterdayAmount) / (float) yesterdayAmount); + } + + String weekAmountRate = "--"; + if (lastWeekAmount != 0) { + weekAmountRate = nf.format((todayAmount - lastWeekAmount) / (float) lastWeekAmount); + } + + HashMap returnMap = new HashMap<>(); + returnMap.put("microPayList",wxOrderReportVoList); + returnMap.put("todayCount",todayCount); + returnMap.put("dayCountRate",dayCountRate); + returnMap.put("weekCountRate",weekCountRate); + returnMap.put("todayAmount",todayAmount); + returnMap.put("dayAmountRate",dayAmountRate); + returnMap.put("weekAmountRate",weekAmountRate); + + return returnMap; + } + @Override public PageInfo getTouchUsersReportList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto, Integer pageIndex, Integer pageSize) { diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index c8ca93c68..3d1fe2b3a 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -313,5 +313,14 @@ group by xTime +