From 2ccadca8463222cb94a8a3f1d1806a076775eae1 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Wed, 1 Mar 2023 20:35:01 +0800 Subject: [PATCH] fix card --- .../market/WxCardPayController.java | 59 ++++-- .../db/migration/V2023022800001__card.sql | 2 + .../controller/WxCardPayController.java | 17 +- .../controller/WxCardPayController.java | 10 +- .../com/iformall/domain/po/WxCardSpend.java | 3 +- .../domain/vo/WxCardSpendMerchantVo.java | 23 +++ .../com/iformall/domain/vo/WxCardSpendVo.java | 4 +- .../iformall/mapper/WxCardSpendMapper.java | 1 + .../iformall/service/WxCardSpendService.java | 6 +- .../com/iformall/service/WxOrderService.java | 2 +- .../service/impl/WxCardSpendServiceImpl.java | 193 +++++++++--------- .../service/impl/WxOrderServiceImpl.java | 4 +- .../resources/mapper/WxCardSpendMapper.xml | 17 +- 13 files changed, 206 insertions(+), 135 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendMerchantVo.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardPayController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardPayController.java index bbc8c14ca..977b9e560 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardPayController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardPayController.java @@ -9,6 +9,7 @@ import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.WxCardSpendMerchantVo; import com.iformall.domain.vo.WxCardSpendVo; import com.iformall.domain.vo.WxCardVo; import com.iformall.enums.EnumMerchantSubsidySource; @@ -62,7 +63,6 @@ public class WxCardPayController extends BaseController { @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - @SystemControllerLog(description = "储值卡支付-售卡记录列表") public ResultData cardOrderList(@ModelAttribute WxCardVo wxCardVo, Integer pageNum, Integer pageSize) { String ipStr = getIpAddr(); if (wxCardVo == null) {wxCardVo = new WxCardVo();} @@ -92,7 +92,6 @@ public class WxCardPayController extends BaseController { @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - @SystemControllerLog(description = "储值卡支付-储值卡交易流水") public ResultData cardSpendlist(@ModelAttribute WxCardSpendVo wxCardSpendVo, Integer pageNum, Integer pageSize) { String ipStr = getIpAddr(); logger.info("cardPay/cardSpendlist: " + ipStr); @@ -100,20 +99,6 @@ public class WxCardPayController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "过滤条件为空"); } wxCardSpendVo.updateTenantInfo(getTenantInfo()); - if(StringUtils.isNotBlank(wxCardSpendVo.getPayStatusStr())) { - String [] statusAttr = wxCardSpendVo.getPayStatusStr().split(","); - List tmpList = new ArrayList(); - for(String status: statusAttr) { - tmpList.add(Integer.valueOf(status)); - } - if(!tmpList.isEmpty()) { - wxCardSpendVo.setPayStatusS(tmpList); - } - } - //List sources = new ArrayList(); - //sources.add(EnumMerchantSubsidySource.CARD.getCode()); - //wxCardSpendVo.setSources(sources); - // wxCardSpendVo.setCardSpendListShow(1); wxCardSpendVo.setSortColumns(BaseEntity.SortField.CreateDate_DESC); final PageInfo page = wxCardSpendService.listAsPage(wxCardSpendVo, pageNum, pageSize); return new ResultData(page); @@ -121,16 +106,11 @@ public class WxCardPayController extends BaseController { @ApiOperation("储值卡交易流水SUM") @GetMapping("sum") - @SystemControllerLog(description = "储值卡支付-储值卡交易流水SUM") public ResultData sumCard(@ModelAttribute WxCardSpendVo wxCardSpend) { if (wxCardSpend == null) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "过滤条件为空"); } wxCardSpend.updateTenantInfo(getTenantInfo()); -// List sources = new ArrayList(); -// sources.add(EnumMerchantSubsidySource.CARD.getCode()); -// wxCardSpend.setSources(sources); -// wxCardSpend.setCardSpendListShow(1); final Map mapList = wxCardSpendService.sumCardSpend(wxCardSpend); return new ResultData(mapList); } @@ -156,6 +136,43 @@ public class WxCardPayController extends BaseController { } wxCardSpendService.exportData(wxCardSpendVo, request, response); } + + @ApiOperation("商户储值卡交易流水(消费记录 + 补贴)列表接口") + @GetMapping("merchantCardSpendlist") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData merchantCardSpendlist(@ModelAttribute WxCardSpendVo wxCardSpendVo, Integer pageNum, Integer pageSize) { + if (wxCardSpendVo == null) { + wxCardSpendVo = new WxCardSpendVo(); + } + wxCardSpendVo.updateTenantInfo(getTenantInfo()); + wxCardSpendVo.setSortColumns(BaseEntity.SortField.CreateDate_DESC); + final PageInfo page = wxCardSpendService.listMerchantAsPage(wxCardSpendVo, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("商户储值卡交易流水SUM") + @GetMapping("sumMerchant") + public ResultData sumMerchant(@ModelAttribute WxCardSpendVo wxCardSpend) { + if (wxCardSpend == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "过滤条件为空"); + } + wxCardSpend.updateTenantInfo(getTenantInfo()); + final Map mapList = wxCardSpendService.sumCardSpend(wxCardSpend); + return new ResultData(mapList); + } + + @ApiOperation("商户储值卡交易流水导出") + @GetMapping("/exportMerchantData") + @SystemControllerLog(description = "储值卡支付-商户储值卡交易流水导出") + public void exportMerchantData(@ModelAttribute WxCardSpendVo wxCardSpendVo, HttpServletRequest request, HttpServletResponse response) { + if (wxCardSpendVo == null) { + throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "过滤条件为空"); + } + wxCardSpendVo.updateTenantInfo(getTenantInfo()); + wxCardSpendService.exportMerchantData(wxCardSpendVo, request, response); + } @ApiOperation("更新卡消费支付状态") @PostMapping("/updatePayStatus") diff --git a/mallinkAdmin/src/main/resources/db/migration/V2023022800001__card.sql b/mallinkAdmin/src/main/resources/db/migration/V2023022800001__card.sql index 74e14232f..87ae44e1e 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V2023022800001__card.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V2023022800001__card.sql @@ -22,6 +22,8 @@ set ci.coupon_password = cp.password where ci.coupon_password is null alter table wx_coupon_password add column is_stop int(1) not null default 0 comment '是否已停止1-是,0-否'; +alter table wx_card_spend add column subsidy int(11) not null default 0 comment '补贴金额'; + diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java index 105db9882..8e264f99c 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java @@ -171,7 +171,7 @@ public class WxCardPayController extends BaseController { logger.error("卡不存在: " + cardIdStr); return new ResultData(ErrorCode.CARD_IS_NOT_FOUND); } - return saveCardPayOrder(cUserId,cardInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT); + return saveCardPayOrder(cUserId,cardInfo,merchantBUser,totalFeeStr,true); } public ResultData savePasswordCardPayOrder(String cardIdStr,String totalFeeStr) { @@ -203,10 +203,10 @@ public class WxCardPayController extends BaseController { } WxCardInfo carInfo = wxCardInfoService.cardCreateByOffline(couponPassword, coupon); - return saveCardPayOrder(Constant.defaultCUserId,carInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT); + return saveCardPayOrder(Constant.defaultCUserId,carInfo,merchantBUser,totalFeeStr,false); } - private ResultData saveCardPayOrder(Long cUserId,WxCardInfo cardInfo,WxMerchantBUser merchantBUser,String totalFeeStr,EnumPayWay payWay) { + private ResultData saveCardPayOrder(Long cUserId,WxCardInfo cardInfo,WxMerchantBUser merchantBUser,String totalFeeStr,boolean isEcard) { if (EnumCardInfoStatus.STOP.getCode().intValue() == cardInfo.getStatus().intValue()) { return new ResultData(ErrorCode.CARD_IS_NOT_FOUND.getCode(),"卡已被禁用."); @@ -259,7 +259,7 @@ public class WxCardPayController extends BaseController { WxOrder order = null; try { - order = wxOrderService.saveCardPayOrder(merchant, cUserId, totalFeeStr, payment,payWay); + order = wxOrderService.saveCardPayOrder(merchant, cUserId, totalFeeStr, payment); } catch (MallinkException e) { logger.error("saveCardPayOrder 1" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); @@ -276,11 +276,14 @@ public class WxCardPayController extends BaseController { record.setOrderId(order.getId()); record.setIp(ipStr); record.setDeductionAmount(payment); - record.setRemark("操作于["+payWay.getMessage()+"("+payWay.getCode()+")]"); + if (isEcard) { + record.setRemark("操作于[B扫C电子卡支付]"); + }else { + record.setRemark("操作于[B扫C实体卡支付]"); + } - Integer couponNumber = null; try { - return wxCardSpendService.createCardSpend(record, order, couponMerchant,payWay); + return wxCardSpendService.createCardSpend(record, order, couponMerchant); } catch (MallinkException e) { logger.error("card spend error, req 2: " + record.toString() + ", e:" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java index 147cefa81..16fbfd66e 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java @@ -90,10 +90,10 @@ public class WxCardPayController extends BaseController { } catch (Exception e) { return new ResultData(Result.ERROR,e.getMessage()); } - return saveCardPayOrder(memberId,cardIdStr,merchantStr,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT); + return saveCardPayOrder(memberId,cardIdStr,merchantStr,totalFeeStr); } - private ResultData saveCardPayOrder(Long cUserId,String cardIdStr,String merchantStr,String totalFeeStr,EnumPayWay payWay) { + private ResultData saveCardPayOrder(Long cUserId,String cardIdStr,String merchantStr,String totalFeeStr) { String ipStr = getIpAddr(); logger.info("saveCardPayOrder: " + ipStr + " : cUserId:{} , cardIdStr:{},merchantStr:{},totalFeeStr:{}",cUserId,cardIdStr,cardIdStr,cardIdStr); WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(cUserId,getFinalTenantId()); @@ -168,7 +168,7 @@ public class WxCardPayController extends BaseController { WxOrder order = null; try { - order = wxOrderService.saveCardPayOrder(merchant, cUserId, totalFeeStr, payment,payWay); + order = wxOrderService.saveCardPayOrder(merchant, cUserId, totalFeeStr, payment); } catch (MallinkException e) { logger.error("saveCardPayOrder 1" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); @@ -185,10 +185,10 @@ public class WxCardPayController extends BaseController { record.setOrderId(order.getId()); record.setIp(ipStr); record.setDeductionAmount(payment); - record.setRemark("操作于["+payWay.getMessage()+"("+payWay.getCode()+")]"); + record.setRemark("操作于[C扫B支付]"); try { - return wxCardSpendService.createCardSpend(record, order, couponMerchant,payWay); + return wxCardSpendService.createCardSpend(record, order, couponMerchant); } catch (MallinkException e) { logger.error("card spend error, req 2: " + record.toString() + ", e:" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCardSpend.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCardSpend.java index 7d6e4e825..80cce7287 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCardSpend.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCardSpend.java @@ -45,7 +45,8 @@ public class WxCardSpend extends TenantEntity { private Integer payment; @io.swagger.annotations.ApiModelProperty(value="实收金额(不包含通道费)",name="realPayment") private Integer realPayment; - + @io.swagger.annotations.ApiModelProperty(value="补贴",name="subsidy") + private Integer subsidy; @io.swagger.annotations.ApiModelProperty(value="卡剩余总金额",name="cardRemainAmount") private Integer cardRemainAmount; @io.swagger.annotations.ApiModelProperty(value="卡支付前总金额",name="cardBeforeAmount") diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendMerchantVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendMerchantVo.java new file mode 100644 index 000000000..44efcbe63 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendMerchantVo.java @@ -0,0 +1,23 @@ +package com.iformall.domain.vo; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; + +@Data +@ToString(callSuper = true) +public class WxCardSpendMerchantVo { + + @Excel(name = "商户编号", width = 20,orderNum = "1") + private Long merchantId; + @Excel(name = "商户名称", width = 20, orderNum = "2") + private String merchantName; + @Excel(name = "交易总金额", width = 20, orderNum = "3") + private BigDecimal total; + @Excel(name = "总手续费", width = 20, orderNum = "4") + private BigDecimal fee; + @Excel(name = "总补贴", width = 20, orderNum = "5") + private BigDecimal subsidy; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendVo.java index 477272625..d0ccfc7d7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendVo.java @@ -6,6 +6,7 @@ import java.util.Date; import java.util.List; import com.baomidou.mybatisplus.annotation.TableField; +import com.iformall.domain.po.WxCardInfo; import com.iformall.domain.po.WxCardSpend; import lombok.Data; import lombok.EqualsAndHashCode; @@ -56,5 +57,6 @@ public class WxCardSpendVo extends WxCardSpend { private Date couponOnlineStartDate; @TableField(exist = false) private Date couponOnlineEndDate; - + @TableField(exist = false) + private WxCardInfo wxCardInfo; } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCardSpendMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCardSpendMapper.java index afa220d75..ef469d544 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCardSpendMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCardSpendMapper.java @@ -15,6 +15,7 @@ public interface WxCardSpendMapper extends CommonMapper { int findCount(WxCardSpend wxCardSpend); List> getMerchantCount(WxCardSpend wxCardSpend); + List> sumMerchant(WxCardSpend wxCardSpend); List getMerchantIdList(WxCardSpend wxCardSpend); diff --git a/mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java b/mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java index d2c363619..eeae017ad 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java @@ -5,6 +5,7 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.PromotionCalc; +import com.iformall.domain.vo.WxCardSpendMerchantVo; import com.iformall.domain.vo.WxCardSpendVo; import com.iformall.enums.EnumPayWay; import com.iformall.exception.MallinkException; @@ -30,7 +31,7 @@ public interface WxCardSpendService { * @param order * @return */ - ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant,EnumPayWay payWay); + ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant); /** * 根据实体查询分页列表 @@ -41,6 +42,8 @@ public interface WxCardSpendService { * @return */ PageInfo listAsPage(WxCardSpendVo record, Integer pageIndex, Integer pageSize); + + PageInfo listMerchantAsPage(WxCardSpendVo record, Integer pageIndex, Integer pageSize); /** * 根据实体SUM @@ -98,6 +101,7 @@ public interface WxCardSpendService { * cardPay交易流水导出 */ void exportData(WxCardSpendVo wxCardSpendVo, HttpServletRequest request, HttpServletResponse response); + void exportMerchantData(WxCardSpendVo wxCardSpendVo, HttpServletRequest request, HttpServletResponse response); /** * POS 卡支付相关接口 diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index d59f36158..32c6e6399 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -80,7 +80,7 @@ public interface WxOrderService { * @param payment * @return 订单id */ - WxOrder saveCardPayOrder(WxMerchant merchant, Long cUserId, String totalFeeStr, Integer payment,EnumPayWay payWay); + WxOrder saveCardPayOrder(WxMerchant merchant, Long cUserId, String totalFeeStr, Integer payment); /** * 免费券订单接口 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java index 87aa77064..eaf5d54e1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java @@ -12,6 +12,7 @@ import com.iformall.domain.dto.WxSharingOrderDto; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.PromotionCalc; +import com.iformall.domain.vo.WxCardSpendMerchantVo; import com.iformall.domain.vo.WxCardSpendVo; import com.iformall.domain.vo.WxCardVo; import com.iformall.enums.*; @@ -122,7 +123,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant,EnumPayWay payWay) { + public ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant) { Date curDate = new Date(); final IdWorker idWorker = IdWorker.get(); // 1. get card info @@ -179,12 +180,6 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { record.setPayStatus(EnumCardSpendStatus.NOT_PAY.getCode()); record.setCreateDate(curDate); record.setUpdateDate(curDate); - try { - wxCardSpendMapper.insert(record); - } catch (Exception e) { - logger.error("card spend insert error"); - return new ResultData(ErrorCode.DB_FAIL.getCode(), "card spend 插入出错!"); - } // 6. update order status WxOrder orderUpdate = new WxOrder(); @@ -281,49 +276,31 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { } } - //卡不再调用微信分账 -// if (payAccount.checkShare()) { -// // 分账 -// if (cardInfo.getSaleAmount() > 0) { -// // 9. 只有有价卡才能分账 -// try { -// shareForCardPay(record, record.getCardId(), record.getOrderId(), record.getId(),payWay.getCode()); -// } catch (MallinkException e) { -// logger.error(e.getMessage()); -// if (ErrorCode.PROFIT_SHARING_NUM_UP_LIMIT.getCode() == e.getErrorCode() || -// ErrorCode.PROFIT_SHARING_TIME_EXPIRED.getCode() == e.getErrorCode()) { -// // 分账已到20次限制,后面只记录,不分账 -// // 分账已过期,后面只记录,不分账 -// logger.error("分账已到20次限制,后面只记录,无法分账"); -// try { -// creteMerchantSubsidy(record, curDate, idWorker, coupon, payment); -// } catch (Exception ex) { -// logger.error("分账已到20次限制,记录到结算表失败"); -// } -// } else { -// throw new MallinkException(e.getErrorCode(), e.getMessage()); -// } -// } -// } -// } else { - // 有价储值卡消费时,如果未启用分账,金额也记入补贴表,可能会导致查询错误, - if (cardInfo.getSaleAmount() > 0) { - if (payment > 0) { - try { - creteMerchantSubsidy(record, curDate, idWorker, coupon, payment); - } catch (Exception ex) { - logger.error("记录到结算表失败"); - } - } - - //更新商户余额 - if (real_payment > 0) { - Long merchantId = couponMerchant.getMerchantId(); - WxMerchant merchant = wxMerchantMapper.selectById(merchantId); - wxCashOutService.addCashOut(merchant, real_payment); - } - } -// } + try { + record.setSubsidy(subsidyFee); + wxCardSpendMapper.insert(record); + } catch (Exception e) { + logger.error("card spend insert error"); + return new ResultData(ErrorCode.DB_FAIL.getCode(), "card spend 插入出错!"); + } + + // 有价储值卡消费时,如果未启用分账,金额也记入补贴表,可能会导致查询错误, + if (cardInfo.getSaleAmount() > 0) { + if (payment > 0) { + try { + creteMerchantSubsidy(record, curDate, idWorker, coupon, payment); + } catch (Exception ex) { + logger.error("记录到结算表失败"); + } + } + + //更新商户余额 + if (real_payment > 0) { + Long merchantId = couponMerchant.getMerchantId(); + WxMerchant merchant = wxMerchantMapper.selectById(merchantId); + wxCashOutService.addCashOut(merchant, real_payment); + } + } if (null != orderUpdate.getCUserId() && Constant.defaultCUserId != orderUpdate.getCUserId()) { // 成长值 @@ -501,6 +478,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { Map cardCouponIdMap = new HashMap(); + Map cardInfoMap = new HashMap(); if (cardInfoIdList.size() > 0 ){ WxCardInfo ciq = new WxCardInfo(); ciq.updateTenantInfo(tenantEntity); @@ -513,6 +491,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { couponIdList.add(ci.getCouponId()) ; cardCouponIdMap.put(ci.getId(),ci.getCouponId()); } + cardInfoMap.put(ci.getId(), ci); } } } @@ -543,6 +522,11 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { vo.setTitle(coupon.getTitle()); } } + + WxCardInfo cardInfo = cardInfoMap.get(_wcs.getCardId()) ; + if (null != cardInfo) { + vo.setWxCardInfo(cardInfo); + } } if (null != _wcs.getOrderId()) { WxMerchantSubsidy subsidy = orderSubsidyMap.get(_wcs.getOrderId()); @@ -583,7 +567,6 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { pageInfo.setTotal(cardInfoPage.getTotal()); return pageInfo; } - private void handleQueryParam(WxCardSpendVo record){ //处理券投放时间 @@ -607,20 +590,6 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { } } } -// if (null != record.getStatus() || null != record.getSources() || null != record.getCardSpendListShow()) { -// WxMerchantSubsidy subq = new WxMerchantSubsidy(); -// subq.updateTenantInfo(record); -// subq.setStatus(record.getStatus()); -// subq.setSourceList(record.getSources()); -// subq.setCardSpendListShow(record.getCardSpendListShow()); -// List orderList = wxMerchantSubsidyMapper.findOrderIdList(subq); -// if (null == orderList || orderList.size() <=0 ){ -// record.setId(-999L); -// }else { -// record.setOrderIdList(orderList); -// } -// } - if (StringUtils.isNotBlank(record.getOuPhone())) { WxCUserBasicInfo uq = new WxCUserBasicInfo(); uq.setFinalTenantId(record.getFinalTenantId()); @@ -633,41 +602,70 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { } } } - + @Override - public Map sumCardSpend(WxCardSpendVo record) { + public PageInfo listMerchantAsPage(WxCardSpendVo record, Integer pageIndex, Integer pageSize) { handleQueryParam(record); - //补贴暂时不算 -// List merchantIdList = wxCardSpendMapper.getMerchantIdList(record); -// Map merchantMap = this.getMerchantMap(merchantIdList, record); -// WxMerchantSubsidy sq = getWxMerchantSubsidyQuery(record,merchantIdList); -// List> merchantSubsidyMap = wxMerchantSubsidyMapper.sumByMerchantId(sq); -// Map> msmap = new HashMap>(); -// if (null != merchantSubsidyMap && merchantSubsidyMap.size() > 0 ) { -// for (int i = 0 ; i < merchantSubsidyMap.size(); i++) { -// Map result = merchantSubsidyMap.get(i) ; -// Map submap = new HashMap(); -// submap.put("sum_subsidy", (BigDecimal)result.get("sum_subsidy")); -// submap.put("sum_real_subsidy", (BigDecimal)result.get("sum_real_subsidy")); -// msmap.put((Long)result.get("merchant_id"), submap) ; -// } -// } - - return wxCardSpendMapper.sumCardSpend(record); + PageInfo> cardInfoPage = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCardSpendMapper.sumMerchant(record)); + PageInfo pageInfo = new PageInfo(); + pageInfo.setList(handleToCardSpendMerchantVoList(cardInfoPage.getList(),record)); + pageInfo.setPageNum(cardInfoPage.getPageNum()); + pageInfo.setPageSize(cardInfoPage.getPageSize()); + pageInfo.setPages(cardInfoPage.getPages()); + pageInfo.setTotal(cardInfoPage.getTotal()); + return pageInfo; } - - private WxMerchantSubsidy getWxMerchantSubsidyQuery(WxCardSpendVo record,List merchantIdList) { - WxMerchantSubsidy sq = new WxMerchantSubsidy(); - sq.updateTenantInfo(record); - sq.setStatus(record.getStatus()); - sq.setSourceList(record.getSources()); - sq.setCardSpendListShow(record.getCardSpendListShow()); - if (null != merchantIdList && merchantIdList.size() > 0 ) { - sq.setMerchantIdList(merchantIdList); + + private List handleToCardSpendMerchantVoList(List> list,TenantEntity tenantEntity) { + if (null != list && list.size() > 0 ) { + List retList = new ArrayList(); + List merchantIdList = new ArrayList(); + for (int i = 0 ; i < list.size(); i++ ) { + Map m = list.get(i); + WxCardSpendMerchantVo vo = new WxCardSpendMerchantVo(); + Long merchantId = (Long)m.get("merchant_id"); + vo.setMerchantId(merchantId); + if (null != merchantId && (!merchantIdList.contains(merchantId))) { + merchantIdList.add(merchantId); + } + vo.setTotal((BigDecimal)m.get("sum_deduction_amount")); + BigDecimal payment = (BigDecimal)m.get("sum_payment"); + if (null == payment) { + payment = new BigDecimal(0); + } + BigDecimal realPayment = (BigDecimal)m.get("sum_real_payment"); + if (null == realPayment) { + realPayment = new BigDecimal(0); + } + vo.setFee(payment.subtract(realPayment)); + //补贴 + BigDecimal subsidy = (BigDecimal)m.get("sum_subsidy"); + vo.setSubsidy(subsidy); + retList.add(vo); + } + Map merchantMap = this.getMerchantMap(merchantIdList, tenantEntity); + if (retList.size() > 0 ) { + for (int i = 0 ; i < retList.size(); i++ ){ + WxCardSpendMerchantVo vo = retList.get(i); + if (null != vo.getMerchantId()) { + WxMerchant merchant = merchantMap.get(vo.getMerchantId()) ; + if (null != merchant) { + vo.setMerchantName(merchant.getName()); + } + } + } + } + return retList; } - return sq; + return null; } + @Override + public Map sumCardSpend(WxCardSpendVo record) { + handleQueryParam(record); + return wxCardSpendMapper.sumCardSpend(record); + } + @Override public WxCardSpend getById(Long id) { return wxCardSpendMapper.selectById(id); @@ -905,6 +903,13 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { List list = listAsPage(record,0,50000).getList(); excelService.exportExcel(list, null, "卡消费记录", WxCardSpendVo.class, "卡消费记录.xlsx", response, false); } + + @Override + public void exportMerchantData(WxCardSpendVo record, HttpServletRequest request, HttpServletResponse response) { + handleQueryParam(record); + List list = listMerchantAsPage(record,0,50000).getList(); + excelService.exportExcel(list, null, "商户卡消费统计", WxCardSpendMerchantVo.class, "商户卡消费统计.xlsx", response, false); + } @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) 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 e4983fedb..58433cc07 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1292,7 +1292,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveCardPayOrder(WxMerchant merchant, Long cUserId, String totalFeeStr, Integer payment,EnumPayWay payWay) { + public WxOrder saveCardPayOrder(WxMerchant merchant, Long cUserId, String totalFeeStr, Integer payment) { Date curr = new Date(); final IdWorker idWorker = IdWorker.get(); @@ -1311,7 +1311,7 @@ public class WxOrderServiceImpl implements WxOrderService { Long orderNumber = idWorker.nextId(); // body // tenant_id + merchant_id + title + subtitle - String bodyStr = "["+payWay.getMessage()+"("+payWay.getCode()+")]C扫B储值卡支付, 金额:" + totalFeeStr; + String bodyStr = "储值卡支付, 金额:" + totalFeeStr; WxOrder record = new WxOrder(); record.setId(orderNumber); diff --git a/mallinkService/src/main/resources/mapper/WxCardSpendMapper.xml b/mallinkService/src/main/resources/mapper/WxCardSpendMapper.xml index ed33ba1e8..ab0658aed 100644 --- a/mallinkService/src/main/resources/mapper/WxCardSpendMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCardSpendMapper.xml @@ -13,6 +13,7 @@ + @@ -25,7 +26,7 @@ `id`,`tenant_id`,`parent_tenant_id`,`card_id`,`owner_id`,`merchant_id`,`order_id`,`pos_order_id`, - `deduction_amount`,`payment`,`real_payment`, `card_remain_amount`, + `deduction_amount`,`payment`,`real_payment`,`subsidy`, `card_remain_amount`, `card_before_amount`,`card_remain_real_amount`,`card_before_real_amount`, `create_date`, `update_date`, `pay_status`, `pay_from` @@ -256,6 +257,17 @@ group by cs.merchant_id + +