Преглед изворни кода

[A端][需求]:增加扫码支付报告接口

release_toaliyun_real
hupeng пре 7 година
родитељ
комит
be1f0681d7
7 измењених фајлова са 233 додато и 16 уклоњено
  1. +48
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantMicroPayController.java
  2. +36
    -0
      mallinkService/src/main/java/com/iformall/domain/dto/WxOrderReportDto.java
  3. +38
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxOrderReportVo.java
  4. +2
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java
  5. +3
    -0
      mallinkService/src/main/java/com/iformall/service/MarkingDataReportService.java
  6. +97
    -16
      mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java
  7. +9
    -0
      mallinkService/src/main/resources/mapper/WxOrderMapper.xml

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

}

+ 36
- 0
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;
}
}

+ 38
- 0
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;
}
}

+ 2
- 0
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<WxOrder, Long> {

List<MarkingSceneDataVo> queryForSceneRepotyHistory(HashMap<String,Object> params);

List<WxOrderReportVo> listOrderReportByDate(HashMap<String,Object> params);
}

+ 3
- 0
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<TouchUsersReportVo> getTouchUsersReportList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto, Integer pageIndex, Integer pageSize);

List<TouchUsersReportVo> getTouchUsersReportData(String tenantId);

Map<String, Object> listOrderReportByDate(String tenantId, WxOrderReportDto wxOrderReportDto, Integer pageIndex, Integer pageSize);
}

+ 97
- 16
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<String, Object> params = new HashMap<>();
@@ -385,6 +378,94 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
return new PageInfo<>(list);
}


@Override
public Map<String, Object> listOrderReportByDate(String tenantId, WxOrderReportDto wxOrderReportDto, Integer pageIndex, Integer pageSize) {
HashMap<String, Object> 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<WxOrderReportVo> list = wxOrderMapper.listOrderReportByDate(params);

String startdate = DateUtils.getTimeBefore(30, new Date());
String enddate = DateUtils.getTimeBefore(0,new Date());
List<String> tjTimeList = DateUtils.getTjTimeList(startdate, enddate, "0");
List<WxOrderReportVo> wxOrderReportVoList = new ArrayList<WxOrderReportVo>();

int todayCount = 0;
int todayAmount = 0;
int yesterdayCount = 0;
int yesterdayAmount = 0;
int lastWeekCount = 0;
int lastWeekAmount = 0;

for(String tj:tjTimeList){
Optional<WxOrderReportVo> 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<String, Object> 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<TouchUsersReportVo> getTouchUsersReportList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto, Integer pageIndex, Integer pageSize) {



+ 9
- 0
mallinkService/src/main/resources/mapper/WxOrderMapper.xml Прегледај датотеку

@@ -313,5 +313,14 @@
group by xTime
</select>

<select id="listOrderReportByDate" resultType="com.iformall.domain.vo.WxOrderReportVo" parameterType="hashmap">
select DATE_FORMAT(o.create_date,'%Y-%m-%d') xTime, count(o.id) count, IFNULL (SUM(o.payment),0) amount
from wx_order o
where o.`tenant_id` = #{tenantId} and o.`type` = #{type}
<if test=" null != startTime and null != endTime">
and o.`create_date` BETWEEN #{startTime} and #{endTime}
</if>
group by xTime
</select>

</mapper>

Loading…
Откажи
Сачувај