From 99ed4261d0e092596d7c2bb4ecd1901ae3543628 Mon Sep 17 00:00:00 2001 From: winter Date: Mon, 14 Feb 2022 15:21:51 +0800 Subject: [PATCH 1/2] fix order --- .../market/WxMerchantMicroPayController.java | 22 +- .../schedule/DaliyAmountSchedule.java | 10 +- .../com/iformall/domain/po/WxPayOrder.java | 3 + .../iformall/domain/vo/WxOrderPayExpVo.java | 44 +++ .../com/iformall/domain/vo/WxOrderPayVo.java | 37 +++ .../com/iformall/mapper/WxOrderMapper.java | 6 +- .../service/MarkingDataReportService.java | 2 +- .../impl/MarkingDataReportServiceImpl.java | 56 ++-- .../service/impl/WxOrderServiceImpl.java | 277 +++++++++++++++++- .../mapper/WxMerchantBUserMapper.xml | 5 +- .../main/resources/mapper/WxOrderMapper.xml | 158 +++------- .../resources/mapper/WxPayOrderMapper.xml | 7 +- 12 files changed, 453 insertions(+), 174 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxMerchantMicroPayController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxMerchantMicroPayController.java index 858f572bd..d29f3f20f 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxMerchantMicroPayController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxMerchantMicroPayController.java @@ -50,16 +50,16 @@ public class WxMerchantMicroPayController extends BaseController { return new ResultData(markingDataReportService.listMicroPayOrderReportByDateAndMerchant(wxOrderReportDto)); } - @ApiOperation("获得昨日刷卡列表") - @GetMapping("/listYesterday") - @SystemControllerLog(description = "收银台-获得昨日刷卡列表") - public ResultData listYesterday(@ModelAttribute WxOrderReportDto wxOrderReportDto, Integer pageNum, Integer pageSize) { - logger.debug("[" + getIpAddr() + "] WxMerchantTradeDailyController::listYesterday"); - if (wxOrderReportDto == null) - wxOrderReportDto = new WxOrderReportDto(); - wxOrderReportDto.updateTenantInfo(getTenantInfo()); - final PageInfo page = markingDataReportService.listMerchantMicroPayOrderReportByDate(wxOrderReportDto, pageNum, pageSize); - return new ResultData(page); - } +// @ApiOperation("获得昨日刷卡列表") +// @GetMapping("/listYesterday") +// @SystemControllerLog(description = "收银台-获得昨日刷卡列表") +// public ResultData listYesterday(@ModelAttribute WxOrderReportDto wxOrderReportDto, Integer pageNum, Integer pageSize) { +// logger.debug("[" + getIpAddr() + "] WxMerchantTradeDailyController::listYesterday"); +// if (wxOrderReportDto == null) +// wxOrderReportDto = new WxOrderReportDto(); +// wxOrderReportDto.updateTenantInfo(getTenantInfo()); +// final PageInfo page = markingDataReportService.listMerchantMicroPayOrderReportByDate(wxOrderReportDto, pageNum, pageSize); +// return new ResultData(page); +// } } diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/DaliyAmountSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/DaliyAmountSchedule.java index 478faa4dc..b1f77b6ce 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/DaliyAmountSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/DaliyAmountSchedule.java @@ -112,7 +112,15 @@ public class DaliyAmountSchedule { dateAmountRecord.setPayPrice(total_price); dateAmountRecord.setType(EnumDateAmtType.VERIFY_RECORD.getCode()); wxDateAmountRecordService.saveAmount(dateAmountRecord); - + // + WxMerchantBUser merchantBUserQ = new WxMerchantBUser(); + merchantBUserQ.updateTenantInfo(merchant); + merchantBUserQ.setMerchantId(merchant.getId()); + List bUserIds = wxMerchantBUserMapper.findIdList(merchantBUserQ); + if (null == bUserIds || bUserIds.size() <= 0 ) { + return; + } + dateMap.put("bUserIds", bUserIds); Map microPayMap = wxOrderMapper.dayMicroPayAmountList(dateMap); Long countMic = (Long) microPayMap.get("count"); BigDecimal totalPriceMic = (BigDecimal) microPayMap.get("total_price"); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java index 2fbff2a59..c30f8486e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java @@ -2,6 +2,7 @@ package com.iformall.domain.po; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import com.iformall.service.order.entity.WxComposeChildOrderShare; @@ -28,6 +29,8 @@ public class WxPayOrder extends TenantEntity { private Date updateTime; @io.swagger.annotations.ApiModelProperty(value="订单ID",name="orderId") private Long orderId; + @TableField(exist = false) + protected List orderIds; @io.swagger.annotations.ApiModelProperty(value="用户ID",name="cUserId") private Long cUserId; @io.swagger.annotations.ApiModelProperty(value="",name="openId") diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderPayExpVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderPayExpVo.java index 0c727dd52..b4ebf12ad 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderPayExpVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderPayExpVo.java @@ -1,6 +1,11 @@ package com.iformall.domain.vo; +import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.WxPayOrder; + import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -63,5 +68,44 @@ public class WxOrderPayExpVo extends WxOrder { } } + public void initByMerchant(WxMerchant merchant) { + this.setMerchantName(merchant.getName()); + } + + public void initByMerchantBUser(WxMerchantBUser merchantBUser) { + this.setBUserName(merchantBUser.getName()); + this.setBUserPhone(merchantBUser.getPhone()); + } + + public void initByCUserBasicInfo(WxCUserBasicInfo user) { + this.setCUserPhone(user.getPhone()); + this.setNickName(user.getNickName()); + this.setCUserName(user.getName()); + } + + public void initByWxOrder(WxOrder o) { + this.setId(o.getId()); + this.setOrderNumber(o.getOrderNumber()); + this.setTenantId(o.getTenantId()); + this.setParentOrderId(o.getParentOrderId()); + this.setCUserId(o.getCUserId()); + this.setCouponChannelId(o.getCouponChannelId()); + this.setProductId(o.getProductId()); + this.setType(o.getType()); + this.setPayVendor(o.getPayVendor()); + this.setPaymentType(o.getPaymentType()); + this.setPayment(o.getPayment()); + this.setPaymentTime(o.getPaymentTime()); + this.setFreightPrice(o.getFreightPrice()); + this.setOrderStatus(o.getOrderStatus()); + this.setCreateDate(o.getCreateDate()); + this.setUpdateDate(o.getUpdateDate()); + this.setDetail(o.getDetail()); + } + + public void initByPayOrder(WxPayOrder payOrder) { + this.setPayOrderId(payOrder.getId()); + this.setTransactionId(payOrder.getTransactionId()); + } } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderPayVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderPayVo.java index 02247e619..f211c05d4 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderPayVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderPayVo.java @@ -1,5 +1,8 @@ package com.iformall.domain.vo; +import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxOrder; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -84,5 +87,39 @@ public class WxOrderPayVo extends WxOrder { } } + public void initByMerchant(WxMerchant merchant) { + this.setMerchantName(merchant.getName()); + } + + public void initByMerchantBUser(WxMerchantBUser merchantBUser) { + this.setBUserName(merchantBUser.getName()); + this.setBUserPhone(merchantBUser.getPhone()); + } + + public void initByCUserBasicInfo(WxCUserBasicInfo user) { + this.setCUserPhone(user.getPhone()); + this.setNickName(user.getNickName()); + this.setCUserName(user.getName()); + } + + public void initByWxOrder(WxOrder o) { + this.setId(o.getId()); + this.setOrderNumber(o.getOrderNumber()); + this.setTenantId(o.getTenantId()); + this.setParentOrderId(o.getParentOrderId()); + this.setCUserId(o.getCUserId()); + this.setCouponChannelId(o.getCouponChannelId()); + this.setProductId(o.getProductId()); + this.setType(o.getType()); + this.setPayVendor(o.getPayVendor()); + this.setPaymentType(o.getPaymentType()); + this.setPayment(o.getPayment()); + this.setPaymentTime(o.getPaymentTime()); + this.setFreightPrice(o.getFreightPrice()); + this.setOrderStatus(o.getOrderStatus()); + this.setCreateDate(o.getCreateDate()); + this.setUpdateDate(o.getUpdateDate()); + this.setDetail(o.getDetail()); + } } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java index 923152851..e1eef0e18 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java @@ -34,8 +34,8 @@ public interface WxOrderMapper extends CommonMapper { /** B端收银台(收款码支付) */ Map dayMicroPayAmountList(Map dateMap); - List findListOfMicroPayOrderByDate(Map dateMap); - List findListOfExpMicroPayOrderByDate(Map dateMap); + List findListOfMicroPayOrderByDate(Map dateMap); + List findListOfExpMicroPayOrderByDate(Map dateMap); List queryForSceneRepotyHistory(HashMap params); @@ -43,7 +43,7 @@ public interface WxOrderMapper extends CommonMapper { List listMicroPayOrderReportByDateAndMerchant(HashMap params); - List findListOfMerchantMicroPayOrderByDate(@Param("wxOrderReportDto") WxOrderReportDto wxOrderReportDto, @Param("tenantEntitys")List tenantEntitys); + //List findListOfMerchantMicroPayOrderByDate(@Param("wxOrderReportDto") WxOrderReportDto wxOrderReportDto, @Param("tenantEntitys")List tenantEntitys); List findListOrder(WxOrderQueryVo record); diff --git a/mallinkService/src/main/java/com/iformall/service/MarkingDataReportService.java b/mallinkService/src/main/java/com/iformall/service/MarkingDataReportService.java index 32408cab0..51eedd0f0 100644 --- a/mallinkService/src/main/java/com/iformall/service/MarkingDataReportService.java +++ b/mallinkService/src/main/java/com/iformall/service/MarkingDataReportService.java @@ -35,7 +35,7 @@ public interface MarkingDataReportService { List listMicroPayOrderReportByDateAndMerchant(WxOrderReportDto wxOrderReportDto); - PageInfo listMerchantMicroPayOrderReportByDate(WxOrderReportDto wxOrderReportDto,Integer pageNum, Integer pageSize); + //PageInfo listMerchantMicroPayOrderReportByDate(WxOrderReportDto wxOrderReportDto,Integer pageNum, Integer pageSize); void exportTouchUsersData(HttpServletRequest request, HttpServletResponse response, MarkingCouponDataReportDto markingCouponDataReportDto); 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 a8dde836d..6cd03e9a9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java @@ -2,16 +2,19 @@ package com.iformall.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; import com.iformall.domain.dto.MarkingCouponDataReportDto; import com.iformall.domain.dto.WxOrderReportDto; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponOrder; +import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.*; import com.iformall.enums.EnumCarCmd; import com.iformall.enums.EnumCouponSendSendType; import com.iformall.enums.EnumCouponType; import com.iformall.enums.EnumOrderType; +import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.ExcelService; import com.iformall.service.MarkingDataReportService; @@ -57,6 +60,9 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { @Autowired private ExcelService excelService; + @Autowired + WxMerchantBUserMapper wxMerchantBUserMapper; + @Lazy @Autowired private WxCouponOrderService wxCouponOrderService; @@ -606,10 +612,10 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { @Override public Map listOrderReportByDate(WxOrderReportDto wxOrderReportDto) { - List tenantEntitys = wxMallMapper.getTenantEntitys(wxOrderReportDto); + //List tenantEntitys = wxMallMapper.getTenantEntitys(wxOrderReportDto); HashMap params = new HashMap<>(); - params.put("tenantEntitys",tenantEntitys); -// params.put("tenantId", wxOrderReportDto.getTenantId()); + //params.put("tenantEntitys",tenantEntitys); + params.put("tenantId", wxOrderReportDto.getTenantId()); if (wxOrderReportDto.getStartTime() != null) { params.put("startTime", convertDateAndAdd(wxOrderReportDto.getStartTime(), 0)); } else { @@ -709,6 +715,14 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { params.put("endTime", addDay(1)); } params.put("tenantId", wxOrderReportDto.getTenantId()); + WxMerchantBUser merchantBUserQ = new WxMerchantBUser(); + merchantBUserQ.updateTenantInfo(wxOrderReportDto); + merchantBUserQ.setMerchantId(wxOrderReportDto.getMerchantId()); + List bUserIds = wxMerchantBUserMapper.findIdList(merchantBUserQ); + if (null == bUserIds || bUserIds.size() <= 0 ) { + return null; + } + params.put("bUserIds", bUserIds); List list = wxOrderMapper.listMicroPayOrderReportByDateAndMerchant(params); String startdate = DateUtils.getTimeBefore(30, new Date()); @@ -730,24 +744,24 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { return wxOrderReportVoList; } - @Override - public PageInfo listMerchantMicroPayOrderReportByDate(WxOrderReportDto wxOrderReportDto,Integer pageIndex, Integer pageSize) { - List tenantEntitys = wxMallMapper.getTenantEntitys(wxOrderReportDto); - if (wxOrderReportDto.getStartTime() != null) { - wxOrderReportDto.setStartTime(convertDateAndAdd(wxOrderReportDto.getStartTime(), 0)); - } else { - wxOrderReportDto.setStartTime(addDay(-1)); - } - if (wxOrderReportDto.getEndTime() != null) { - wxOrderReportDto.setEndTime(convertDateAndAdd(wxOrderReportDto.getStartTime(), 0)); - } else { - wxOrderReportDto.setEndTime(addDay(0)); - } - PageHelper.startPage(pageIndex, pageSize); - List list = wxOrderMapper.findListOfMerchantMicroPayOrderByDate(wxOrderReportDto,tenantEntitys); - - return new PageInfo<>(list); - } +// @Override +// public PageInfo listMerchantMicroPayOrderReportByDate(WxOrderReportDto wxOrderReportDto,Integer pageIndex, Integer pageSize) { +// List tenantEntitys = wxMallMapper.getTenantEntitys(wxOrderReportDto); +// if (wxOrderReportDto.getStartTime() != null) { +// wxOrderReportDto.setStartTime(convertDateAndAdd(wxOrderReportDto.getStartTime(), 0)); +// } else { +// wxOrderReportDto.setStartTime(addDay(-1)); +// } +// if (wxOrderReportDto.getEndTime() != null) { +// wxOrderReportDto.setEndTime(convertDateAndAdd(wxOrderReportDto.getStartTime(), 0)); +// } else { +// wxOrderReportDto.setEndTime(addDay(0)); +// } +// PageHelper.startPage(pageIndex, pageSize); +// List list = wxOrderMapper.findListOfMerchantMicroPayOrderByDate(wxOrderReportDto,tenantEntitys); +// +// return new PageInfo<>(list); +// } @Override public void exportTouchUsersData(HttpServletRequest request, HttpServletResponse response, MarkingCouponDataReportDto markingCouponDataReportDto) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index e180eb140..6b21885a1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -269,23 +269,139 @@ public class WxOrderServiceImpl implements WxOrderService { dateMap.put("type", type); dateMap.put("tenantId", wxMerchantBUser.getTenantId()); dateMap.put("finalTenantId", wxMerchantBUser.getFinalTenantId()); - + WxMerchantBUser merchantBUserQ = new WxMerchantBUser(); + merchantBUserQ.updateTenantInfo(wxMerchant); + merchantBUserQ.setMerchantId(wxMerchant.getId()); + List bUserIds = wxMerchantBUserMapper.findIdList(merchantBUserQ); + if (null == bUserIds || bUserIds.size() <= 0 ) { + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); + } + dateMap.put("bUserIds", bUserIds); Map resultMap = new HashMap(); if (pageIndex == null || pageSize == null) { List list; - list = wxOrderMapper.findListOfMicroPayOrderByDate(dateMap); - logger.info("find " + list.size() + " order from " + startDate + " to " + new Date()); + list = orderPayVoPageInfo(wxMerchantBUser,1, 10000, dateMap).getList(); int total_price = 0; - for (WxOrder order : list) { - total_price = total_price + order.getPayment(); + if (null != list) { + logger.info("find " + list.size() + " order from " + startDate + " to " + new Date()); + for (WxOrderPayVo order : list) { + total_price = total_price + order.getPayment(); + } } resultMap.put("amount", total_price); } else { - resultMap.put("list", PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findListOfMicroPayOrderByDate(dateMap))); + resultMap.put("list", orderPayVoPageInfo(wxMerchantBUser,pageIndex, pageSize, dateMap)); } return new ResultData(resultMap); } + + private PageInfo orderPayVoPageInfo(TenantEntity tenantEntity,Integer pageIndex,Integer pageSize,Map dateMap) { + PageInfo orderPageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findListOfMicroPayOrderByDate(dateMap)); + PageInfo voPageInfo = new PageInfo(); + voPageInfo.setPageNum(orderPageInfo.getPageNum()); + voPageInfo.setPageSize(orderPageInfo.getPageSize()); + voPageInfo.setPages(orderPageInfo.getPages()); + voPageInfo.setTotal(orderPageInfo.getTotal()); + voPageInfo.setList(toOrderPayVoList(tenantEntity,orderPageInfo.getList())); + return voPageInfo; + } + + private List toOrderPayVoList(TenantEntity tenantEntity,List orderList) { + if (null == orderList || orderList.size() <= 0 ) { + return null; + } + + List bUserIds = new ArrayList(); + List cUserIds = new ArrayList(); + for (int i = 0 ; i < orderList.size(); i++ ){ + WxOrder o = orderList.get(i); + if (null != o && null != o.getProductId() && (!bUserIds.contains(o.getProductId()))) { + bUserIds.add(o.getProductId()); + } + if (null != o && null != o.getCUserId() && (!cUserIds.contains(o.getCUserId()))) { + cUserIds.add(o.getCUserId()); + } + } + + if (bUserIds.size() <= 0 ) { + return null; + } + + Map bUserMap = new HashMap(); + Map bUserMerchantMap = new HashMap(); + List merchantIdList = new ArrayList(); + if (bUserIds.size() > 0) { + WxMerchantBUser merchantBUserQ = new WxMerchantBUser(); + merchantBUserQ.updateTenantInfo(tenantEntity); + merchantBUserQ.setIds(bUserIds);; + List buserList = wxMerchantBUserMapper.findSimpleList(merchantBUserQ); + if (null != buserList && buserList.size() > 0 ) { + for (int i = 0 ; i < buserList.size(); i++) { + WxMerchantBUser buser = buserList.get(i); + bUserMap.put(buser.getId(),buser); + bUserMerchantMap.put(buser.getId(), buser.getMerchantId()); + if (!merchantIdList.contains(buser.getMerchantId())) { + merchantIdList.add(buser.getMerchantId()); + } + } + } + } + Map merchantMap = new HashMap(); + if (merchantIdList.size() > 0 ) { + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(tenantEntity); + merchantQ.setIds(bUserIds); + List mList = wxMerchantMapper.findIdNameList(merchantQ); + if (null != mList && mList.size() > 0 ) { + for (int i = 0 ; i < mList.size(); i++) { + WxMerchant m = mList.get(i); + merchantMap.put(m.getId(),m); + } + } + } + Map cUserMap = new HashMap(); + if (cUserIds.size() > 0 ) { + WxCUserBasicInfo cuserQ = new WxCUserBasicInfo(); + cuserQ.setFinalTenantId(tenantEntity.getFinalTenantId()); + cuserQ.setIds(cUserIds); + List userList = wxCUserBasicInfoMapper.findList(cuserQ); + if (null != userList && userList.size() > 0 ) { + for (int i = 0 ; i < userList.size(); i++) { + WxCUserBasicInfo u = userList.get(i); + cUserMap.put(u.getId(),u); + } + } + } + + List voList = new ArrayList(); + for (int i = 0 ; i < orderList.size(); i++ ) { + WxOrder o = orderList.get(i); + WxOrderPayVo vo = new WxOrderPayVo(); + vo.initByWxOrder(o); + if (null != o.getProductId()) { + Long merchantId = bUserMerchantMap.get(o.getProductId()); + if (null != merchantId ) { + WxMerchant merchant = merchantMap.get(merchantId); + if (null != merchant) { + vo.initByMerchant(merchant); + } + } + WxMerchantBUser buser = bUserMap.get(o.getProductId()) ; + if (null != buser) { + vo.initByMerchantBUser(buser); + } + } + if (null != o.getCUserId()){ + WxCUserBasicInfo user = cUserMap.get(o.getCUserId()); + if (null != user) { + vo.initByCUserBasicInfo(user); + } + } + voList.add(vo); + } + return voList; + } @Override public ResultData microPayExpListOnDateAsPage(Long bUserId, Integer type, String date, Integer pageIndex, Integer pageSize) { @@ -334,22 +450,159 @@ public class WxOrderServiceImpl implements WxOrderService { dateMap.put("tenantId", wxMerchantBUser.getTenantId()); dateMap.put("finalTenantId", wxMerchantBUser.getFinalTenantId()); Map resultMap = new HashMap(); - + WxMerchantBUser merchantBUserQ = new WxMerchantBUser(); + merchantBUserQ.updateTenantInfo(wxMerchant); + merchantBUserQ.setMerchantId(wxMerchant.getId()); + List bUserIds = wxMerchantBUserMapper.findIdList(merchantBUserQ); + if (null == bUserIds || bUserIds.size() <= 0 ) { + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); + } + dateMap.put("bUserIds", bUserIds); if (pageIndex == null || pageSize == null) { List list; - list = wxOrderMapper.findListOfExpMicroPayOrderByDate(dateMap); + list = orderPayExpVoPageInfo(wxMerchant, 1, 10000, dateMap).getList(); logger.info("find " + list.size() + " order from " + startDate + " to " + new Date()); int total_price = 0; - for (WxOrder order : list) { - total_price = total_price + order.getPayment(); - } + if (null != list) { + for (WxOrderPayExpVo order : list) { + total_price = total_price + order.getPayment(); + } + } resultMap.put("amount", total_price); } else { - resultMap.put("list", PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findListOfExpMicroPayOrderByDate(dateMap))); + resultMap.put("list", orderPayExpVoPageInfo(wxMerchant, pageIndex, pageSize, dateMap)); } return new ResultData(resultMap); } + private PageInfo orderPayExpVoPageInfo(TenantEntity tenantEntity,Integer pageIndex,Integer pageSize,Map dateMap) { + PageInfo orderPageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findListOfExpMicroPayOrderByDate(dateMap)); + PageInfo voPageInfo = new PageInfo(); + voPageInfo.setPageNum(orderPageInfo.getPageNum()); + voPageInfo.setPageSize(orderPageInfo.getPageSize()); + voPageInfo.setPages(orderPageInfo.getPages()); + voPageInfo.setTotal(orderPageInfo.getTotal()); + voPageInfo.setList(toOrderPayExpVoList(tenantEntity,orderPageInfo.getList())); + return voPageInfo; + } + + private List toOrderPayExpVoList(TenantEntity tenantEntity,List orderList) { + if (null == orderList || orderList.size() <= 0 ) { + return null; + } + + List bUserIds = new ArrayList(); + List cUserIds = new ArrayList(); + List orderIds = new ArrayList(); + for (int i = 0 ; i < orderList.size(); i++ ){ + WxOrder o = orderList.get(i); + if (null != o && null != o.getProductId() && (!bUserIds.contains(o.getProductId()))) { + bUserIds.add(o.getProductId()); + } + if (null != o && null != o.getCUserId() && (!cUserIds.contains(o.getCUserId()))) { + cUserIds.add(o.getCUserId()); + } + orderIds.add(o.getId()); + } + + if (bUserIds.size() <= 0 ) { + return null; + } + + Map bUserMap = new HashMap(); + Map bUserMerchantMap = new HashMap(); + List merchantIdList = new ArrayList(); + if (bUserIds.size() > 0) { + WxMerchantBUser merchantBUserQ = new WxMerchantBUser(); + merchantBUserQ.updateTenantInfo(tenantEntity); + merchantBUserQ.setIds(bUserIds); + List buserList = wxMerchantBUserMapper.findSimpleList(merchantBUserQ); + if (null != buserList && buserList.size() > 0 ) { + for (int i = 0 ; i < buserList.size(); i++) { + WxMerchantBUser buser = buserList.get(i); + bUserMap.put(buser.getId(),buser); + bUserMerchantMap.put(buser.getId(), buser.getMerchantId()); + if (!merchantIdList.contains(buser.getMerchantId())) { + merchantIdList.add(buser.getMerchantId()); + } + } + } + } + Map merchantMap = new HashMap(); + if (merchantIdList.size() > 0 ) { + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(tenantEntity); + merchantQ.setIds(bUserIds); + List mList = wxMerchantMapper.findIdNameList(merchantQ); + if (null != mList && mList.size() > 0 ) { + for (int i = 0 ; i < mList.size(); i++) { + WxMerchant m = mList.get(i); + merchantMap.put(m.getId(),m); + } + } + } + Map cUserMap = new HashMap(); + if (cUserIds.size() > 0 ) { + WxCUserBasicInfo cuserQ = new WxCUserBasicInfo(); + cuserQ.setFinalTenantId(tenantEntity.getFinalTenantId()); + cuserQ.setIds(cUserIds); + List userList = wxCUserBasicInfoMapper.findList(cuserQ); + if (null != userList && userList.size() > 0 ) { + for (int i = 0 ; i < userList.size(); i++) { + WxCUserBasicInfo u = userList.get(i); + cUserMap.put(u.getId(),u); + } + } + } + + Map payOrderMap = new HashMap(); + if (orderIds.size() > 0 ) { + WxPayOrder payOrderQ = new WxPayOrder(); + payOrderQ.updateTenantInfo(tenantEntity); + payOrderQ.setOrderIds(orderIds);; + List pyList = wxPayOrderMapper.findList(payOrderQ); + if (null != pyList && pyList.size() > 0 ) { + for (int i = 0 ; i < pyList.size(); i++) { + WxPayOrder po = pyList.get(i); + payOrderMap.put(po.getOrderId(),po); + } + } + } + + List voList = new ArrayList(); + for (int i = 0 ; i < orderList.size(); i++ ) { + WxOrder o = orderList.get(i); + WxOrderPayExpVo vo = new WxOrderPayExpVo(); + vo.initByWxOrder(o); + if (null != o.getProductId()) { + Long merchantId = bUserMerchantMap.get(o.getProductId()); + if (null != merchantId ) { + WxMerchant merchant = merchantMap.get(merchantId); + if (null != merchant) { + vo.initByMerchant(merchant); + } + } + WxMerchantBUser buser = bUserMap.get(o.getProductId()) ; + if (null != buser) { + vo.initByMerchantBUser(buser); + } + } + if (null != o.getCUserId()){ + WxCUserBasicInfo user = cUserMap.get(o.getCUserId()); + if (null != user) { + vo.initByCUserBasicInfo(user); + } + } + WxPayOrder payOrder = payOrderMap.get(o.getId()); + if (null != payOrder) { + vo.initByPayOrder(payOrder); + } + voList.add(vo); + } + return voList; + } + + /** * 拼团数量 * diff --git a/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml index 8f82b9f37..76b2002bc 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml @@ -128,10 +128,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - o.`id`,o.`order_number`,o.`tenant_id`,o.`parent_tenant_id`,o.`c_user_id`,o.`coupon_channel_id`,o.`product_id`,o.`type`,o.`pay_vendor`, - o.`payment_type`,o.`payment`,o.`payment_time`,o.`freight_price`,o.`order_status`,o.`create_date`,o.`update_date`,o.`detail`, - m.name as merchant_name, bu.name, bu.phone as bphone, - cubi.phone, cubi.nick_name, cubi.name c_user_name - - - select - - from wx_order o - inner join wx_merchant_b_user bu on bu.id = o.product_id - inner join wx_merchant m on m.id = bu.merchant_id - LEFT JOIN wx_c_user_basic_info cubi on cubi.id = o.c_user_id + + o.`id`,o.`order_number`,o.`tenant_id`,o.`parent_tenant_id`,o.`c_user_id`,o.`coupon_channel_id`,o.`product_id`,o.`type`,o.`pay_vendor`, + o.`payment_type`,o.`payment`,o.`payment_time`,o.`freight_price`,o.`order_status`,o.`create_date`,o.`update_date`,o.`detail` + where o.order_status = '1' and o.`type` = 1 and o.`tenant_id` = #{tenantId} @@ -616,11 +577,11 @@ and o.pay_vendor = #{payVendor} - - and bu.`merchant_id` = #{merchantId} - - - and bu.`id` = #{bUserId} + + and o.product_id in + + #{bUserIdItem} + AND o.create_date > #{startDate,jdbcType=TIMESTAMP} @@ -631,51 +592,13 @@ order by o.create_date desc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - o.`id`,o.`order_number`,o.`tenant_id`,o.`c_user_id`,o.`coupon_channel_id`,o.`product_id`,o.`type`,o.`pay_vendor`, - o.`payment_type`,o.`payment`,o.`payment_time`,o.`freight_price`,o.`order_status`,o.`create_date`,o.`update_date`,o.`detail`, - m.name as merchant_name, bu.name, bu.phone as bphone, - cubi.phone, cubi.nick_name, cubi.name c_user_name, - po.id as pay_order_id, po.transaction_id - - select DATE_FORMAT(o.create_date,'%Y-%m-%d') xTime, count(o.id) triggerCount - from ( - SELECT * from wx_order${tenantEntity.shardTableSuffix} - ) o + from wx_order o where o.`type` = #{type} and o.pay_vendor = #{payVendor} @@ -726,15 +647,8 @@ select DATE_FORMAT(o.create_date,'%Y-%m-%d') xTime, count(o.id) count, IFNULL (SUM(o.payment),0) amount - from ( - - SELECT * from wx_order${tenantEntity.shardTableSuffix} - - ) o - where 1=1 - - and o.`tenant_id` = #{tenantId} - + from wx_order o + where o.`tenant_id` = #{tenantId} and o.`parent_tenant_id` = #{parentTenantId} @@ -756,9 +670,13 @@ - + diff --git a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml index ffc2009fa..06c8c5cc2 100644 --- a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml @@ -144,7 +144,12 @@ and `compose_order` = #{composeOrder} - + + and order_id in + + #{orderIdItem} + + and id in From 415ddd8f5df3efb7180965d33db5bdc6a3b4d913 Mon Sep 17 00:00:00 2001 From: winter Date: Mon, 14 Feb 2022 15:41:46 +0800 Subject: [PATCH 2/2] fix order bug --- mallinkService/src/main/resources/mapper/WxOrderMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index ab15991f9..374dc5296 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -592,7 +592,7 @@ order by o.create_date desc - select o.`id`,o.`order_number`,o.`tenant_id`,o.`c_user_id`,o.`coupon_channel_id`,o.`product_id`,o.`type`,o.`pay_vendor`,