From 86a5d85c5b75df88c6511e13a63d1c67eb668aae Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Wed, 19 Dec 2018 10:43:39 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=82=A8=E5=80=BC=E5=8D=A1][=E6=96=B0?= =?UTF-8?q?=E5=A2=9E]:=E5=88=86=E8=B4=A6=E5=AE=8C=E7=BB=93=E5=A4=84?= =?UTF-8?q?=E7=90=86=EF=BC=8Ccard=20spend=E6=B7=BB=E5=8A=A0=E4=B8=80?= =?UTF-8?q?=E6=9D=A1=E8=AE=B0=E5=BD=95=EF=BC=8C=E6=9B=B4=E6=96=B0card=20in?= =?UTF-8?q?fo=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCardPayController.java | 26 +++-- .../com/iformall/domain/vo/WxCardSpendVo.java | 47 ++++++++++ .../service/impl/WxCardSpendServiceImpl.java | 94 ++++++++++++++----- .../resources/mapper/WxCardSpendMapper.xml | 12 ++- 4 files changed, 149 insertions(+), 30 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCardPayController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCardPayController.java index 9516060d8..9de10fafe 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCardPayController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCardPayController.java @@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.WxCardSpend; +import com.iformall.domain.po.WxCouponOrder; import com.iformall.domain.vo.WxCardSpendVo; import com.iformall.service.WxCardSpendService; import com.iformall.service.WxMerchantService; @@ -39,18 +40,29 @@ public class WxCardPayController extends BaseController { @Autowired WxCardSpendService wxCardSpendService; - // 售卡记录 - - // 消费记录 - - @ApiOperation("C端扫B端储值卡交易流水列表接口") + @ApiOperation("售卡记录列表接口") @GetMapping("list") @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - public ResultData cardOrderList(@ModelAttribute WxCardSpend wxCardSpend, Integer pageNum, Integer pageSize) { + public ResultData cardOrderList(@ModelAttribute WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize) { + String ipStr = getIpAddr(); + logger.info("cardOrderList: " + ipStr); + if (wxCouponOrder == null) wxCouponOrder = new WxCouponOrder(); + MallUserInfo user = getUser(); + wxCouponOrder.setTenantId(user.getTenantId()); + //final PageInfo page = wxCardSpendService.listAsPage(wxCardSpend, pageNum, pageSize); + return new ResultData(); + } + + @ApiOperation("C端扫B端储值卡交易流水(消费记录 + 补贴)列表接口") + @GetMapping("cardSpendlist") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData cardSpendlist(@ModelAttribute WxCardSpend wxCardSpend, Integer pageNum, Integer pageSize) { String ipStr = getIpAddr(); - logger.info("cardOrderList: " + ipStr + " :" + wxCardSpend.toString()); + logger.info("cardSpendlist: " + ipStr); if (wxCardSpend == null) wxCardSpend = new WxCardSpend(); MallUserInfo user = getUser(); wxCardSpend.setTenantId(user.getTenantId()); 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 fd445053a..4b39eeb16 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendVo.java @@ -4,10 +4,33 @@ import com.iformall.domain.po.WxCardSpend; public class WxCardSpendVo extends WxCardSpend { + /**卡信息*/ + /**券名称**/ + @io.swagger.annotations.ApiModelProperty(value="券名称",name="title") + private String title; + /**使用商户名**/ @io.swagger.annotations.ApiModelProperty(value="商户名",name="name") private String merchantName; + /**补贴额(包含通道费)*/ + @io.swagger.annotations.ApiModelProperty(value="补贴额(包含通道费)",name="subsidy") + private Integer subsidy; + /**线上补贴额/实收补贴额(通道费扣除)*/ + @io.swagger.annotations.ApiModelProperty(value="线上补贴额/实收补贴额(通道费扣除)",name="realSubsidy") + private Integer realSubsidy; + /**状态(0:未补贴, 1:已补贴)*/ + @io.swagger.annotations.ApiModelProperty(value="状态(0:未补贴, 1:已补贴)",name="status") + private Integer status; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + public String getMerchantName() { return merchantName; } @@ -15,4 +38,28 @@ public class WxCardSpendVo extends WxCardSpend { public void setMerchantName(String merchantName) { this.merchantName = merchantName; } + + public Integer getSubsidy() { + return subsidy; + } + + public void setSubsidy(Integer subsidy) { + this.subsidy = subsidy; + } + + public Integer getRealSubsidy() { + return realSubsidy; + } + + public void setRealSubsidy(Integer realSubsidy) { + this.realSubsidy = realSubsidy; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } } 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 af47835e0..3af7fa953 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java @@ -147,16 +147,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { } // 7.1 update coupon card status if(cardInfo.getRemainingAmount().equals(0)) { - WxCouponOrder couponOrder = new WxCouponOrder(); - couponOrder.setId(cardInfo.getId()); - couponOrder.setCouponId(cardInfo.getCouponId()); - couponOrder.setOrderId(order.getId()); - couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.CARD_COMPLETE.getCode()); - couponOrder.setUpdateDate(curDate); - try { - wxCouponOrderMapper.updateByPrimaryKeySelective(couponOrder); - } catch (Exception e) { - logger.error("couponOrder status update error"); + if (cardFinished(order, curDate, cardInfo)) { return new ResultData(ErrorCode.DB_FAIL.getCode(), "couponOrder status 更新出错!"); } } @@ -200,6 +191,22 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { return new ResultData(record); } + private boolean cardFinished(WxOrder order, Date curDate, WxCardInfo cardInfo) { + WxCouponOrder couponOrder = new WxCouponOrder(); + couponOrder.setId(cardInfo.getId()); + couponOrder.setCouponId(cardInfo.getCouponId()); + couponOrder.setOrderId(order.getId()); + couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.CARD_COMPLETE.getCode()); + couponOrder.setUpdateDate(curDate); + try { + wxCouponOrderMapper.updateByPrimaryKeySelective(couponOrder); + } catch (Exception e) { + logger.error("couponOrder status update error"); + return true; + } + return false; + } + @Override public PageInfo listAsPage(WxCardSpend record, Integer pageIndex, Integer pageSize) { @@ -244,7 +251,6 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { logger.error("微信分账已超过限制次数-20次"); return; } - } catch (Exception e) { logger.error(e.getMessage()); } @@ -266,7 +272,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { shareOrder.setMerchantId(cardSpend.getMerchantId()); shareOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI.getCode()); shareOrder.setPayAmount(cardSpend.getPayment()); - shareOrder.setOrderId(cardSpend.getOrderId()); + shareOrder.setOrderId(cardSpendId); shareOrder.setPayTimeStart(cardSpend.getCreateDate()); shareOrder.setPayTimeEnd(cardSpend.getUpdateDate()); shareOrder.setTenantId(tenantId); @@ -274,13 +280,9 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { shareOrder.setShareAmount(cardSpend.getRealPayment()); profitSharingOrderService.createSharingOrder(shareOrder); if(cardSpend.getCardRemainAmount().equals(0)) { - // 卡已被抵扣,但是分账还有余额 if (cardSpend.getCardRemainRealAmount() > 0) { - shareOrder.setOrderId(null); - shareOrder.setPayAmount(0); - shareOrder.setShareAmount(cardInfo.getRemainingShareFeeAmount()); - shareOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_FINISH.getCode()); - profitSharingOrderService.finishSharingOrder(shareOrder); + // 卡已被抵扣,但是分账还有余额 + cardShareFinished(cardInfo, shareOrder); } } } else { @@ -290,8 +292,56 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { logger.error("微信分账: " + e.getMessage()); } } - - - - + + /** + * 卡分账完结 + * @param cardInfo + * @param shareOrder + */ + private void cardShareFinished(WxCardInfo cardInfo, WxSharingOrderDto shareOrder) { + Date curDate = new Date(); + // card spend 添加一条 记录] + final IdWorker idWorker = IdWorker.get(); + WxCardSpend cardSpend = new WxCardSpend(); + cardSpend.setTenantId(cardInfo.getTenantId()); + cardSpend.setId(idWorker.nextId()); + cardSpend.setCardId(cardInfo.getId()); + cardSpend.setOrderId(null); + cardSpend.setDeductionAmount(0); + cardSpend.setPayment(cardInfo.getRemainingShareFeeAmount()); + cardSpend.setRealPayment(cardInfo.getRemainingShareFeeAmount()); + cardSpend.setCardBeforeAmount(cardInfo.getRemainingAmount()); + cardSpend.setCardRemainAmount(0); + cardSpend.setCardBeforeRealAmount(cardInfo.getRemainingShareFeeAmount()); + cardSpend.setCardRemainRealAmount(cardInfo.getRemainingShareFeeAmount()); + cardSpend.setCreateDate(curDate); + cardSpend.setUpdateDate(curDate); + try { + wxCardSpendMapper.insertSelective(cardSpend); + } catch (Exception e) { + logger.error("card spend insert error"); + return; + } + // card info 更新 余额 + WxCardInfo cardInfo1 = new WxCardInfo(); + cardInfo1.setId(cardInfo.getId()); + cardInfo1.setRemainingShareFeeAmount(0); + cardInfo1.setUpdateDate(curDate); + try { + wxCardInfoMapper.updateByPrimaryKeySelective(cardInfo1); + } catch (Exception e) { + logger.error("card info remaining error"); + return; + } + + // 分账完结 + shareOrder.setOrderId(cardSpend.getId()); + shareOrder.setPayAmount(0); + shareOrder.setOrderId(cardSpend.getId()); + shareOrder.setShareAmount(cardInfo.getRemainingShareFeeAmount()); + shareOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_FINISH.getCode()); + profitSharingOrderService.finishSharingOrder(shareOrder); + } + + } diff --git a/mallinkService/src/main/resources/mapper/WxCardSpendMapper.xml b/mallinkService/src/main/resources/mapper/WxCardSpendMapper.xml index 160ada98b..68ccdd63a 100644 --- a/mallinkService/src/main/resources/mapper/WxCardSpendMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCardSpendMapper.xml @@ -103,13 +103,20 @@ + + + + + + cs.`id`,cs.`tenant_id`,cs.`card_id`,cs.`owner_id`,cs.`merchant_id`,cs.`order_id`,cs.`deduction_amount`,cs.`payment`,cs.`real_payment`, cs.`card_remain_amount`,cs.`card_before_amount`,cs.`card_remain_real_amount`,cs.`card_before_real_amount`,cs.`create_date`,cs.`update_date`, - m.`name` + m.`name`, c.`title`, + ms.`subsidy`,ms.`real_subsidy`,ms.`status` @@ -171,7 +178,10 @@ select from wx_card_spend cs + left join wx_coupon_order co on co.id = ms.coupon_order_id + left join wx_coupon c on c.id = co.coupon_id left join wx_merchant m on m.id = cs.merchant_id + left join wx_merchant_subsidy ms on ms.order_id = cs.order_id