From b75018eaccf0977e3da997282968dbd5328ad9d3 Mon Sep 17 00:00:00 2001 From: hupeng Date: Wed, 19 Dec 2018 18:19:38 +0800 Subject: [PATCH] =?UTF-8?q?[A=E7=AB=AF][=E6=9B=B4=E6=94=B9]:=E8=B4=AD?= =?UTF-8?q?=E4=B9=B0=E5=8F=91=E5=88=B8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCarCallBackController.java | 2 +- .../controller/WxCouponSendController.java | 3 +- .../enums/EnumCouponSendSendType.java | 3 +- .../service/WxCouponSendConfigService.java | 8 ---- .../iformall/service/WxCouponSendService.java | 4 +- .../impl/WxCouponOrderServiceImpl.java | 4 +- .../service/impl/WxCouponSendServiceImpl.java | 46 +++++++++++++++++-- .../service/impl/WxOrderServiceImpl.java | 26 ++++++++--- 8 files changed, 70 insertions(+), 26 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCarCallBackController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCarCallBackController.java index 70af61096..bce24ee6f 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCarCallBackController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCarCallBackController.java @@ -109,7 +109,7 @@ public class WxCarCallBackController extends BaseController { // TODO 可能多用户关联同一张车牌 List userCarList = wxCUserCarService.getList(userCarQ); for (WxCUserCar userCar : userCarList) { - wxCouponSendService.sendCouponToUser(tenantId, userCar.getCUserId(), EnumCouponSendSendType.CAR_STOP); + wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar); } } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponSendController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponSendController.java index 6de9b2907..791e5b856 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponSendController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponSendController.java @@ -67,6 +67,7 @@ public class WxCouponSendController extends BaseController { if (wxCouponSendList != null && wxCouponSendList.size() > 0) { return new ResultData(ErrorCode.COUPON_SEND_IS_EXISTED); } + WxCoupon wxCoupon = wxCouponService.getById(wxCouponSend.getCouponId()); if (!wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()) ){ return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); @@ -99,8 +100,6 @@ public class WxCouponSendController extends BaseController { @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData delete(Long id) { logger.debug("[" + getIpAddr() + "] WxCouponSendController::delete"); - //wxCouponSendService.deleteById(id); - //return new ResultData(Result.SUCCESS, "删除成功", null); WxCouponSend wxCouponSend = wxCouponSendService.getById(id); if (wxCouponSend == null) return new ResultData(ErrorCode.COUPON_SEND_IS_INVALID); diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponSendSendType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponSendSendType.java index c199bca93..ab416ce9d 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponSendSendType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponSendSendType.java @@ -11,7 +11,8 @@ public enum EnumCouponSendSendType { ACTIVE(1, "主动(保留)"), CAR_STOP(2, "停车发券"), COUPON_VERIFY(3, "核销发券"), - B_MICROPAY(4, "B端刷卡发券") + B_MICROPAY(4, "B端刷卡发券"), + C_ORDER(5, "购买发券") ; public static EnumCouponSendSendType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponSendConfigService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponSendConfigService.java index 35a59ae32..748212444 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponSendConfigService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponSendConfigService.java @@ -23,12 +23,4 @@ public interface WxCouponSendConfigService { */ void update(WxCouponSendConfig record); - - - - - - - - } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponSendService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponSendService.java index 1afe0a91b..109eff842 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponSendService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponSendService.java @@ -44,9 +44,9 @@ public interface WxCouponSendService { * @param cUserId * @param type 2:停车发券 3:核销发券 */ - boolean sendCouponToUser(String tenantId, Long cUserId, EnumCouponSendSendType type); + boolean sendCouponToUser(EnumCouponSendSendType type, Object param); - void updateStatusByCouponId(Long couponId,String tenantId,int status); + void updateStatusByCouponId(Long couponId,String tenantId, int status); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index df9f52e13..2a688fbbf 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -396,7 +396,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(couponOrder.getOrderId()); if (wxOrder != null) { try { - return wxCouponSendService.sendCouponToUser(bUser.getTenantId(), wxOrder.getcUserId(), EnumCouponSendSendType.COUPON_VERIFY); + return wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.COUPON_VERIFY, wxOrder); } catch (Exception e) { logger.error("核销发券: " + e.getMessage()); } @@ -410,7 +410,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(orderId); if (wxOrder != null) { try { - return wxCouponSendService.sendCouponToUser(tenantId, cUserId, EnumCouponSendSendType.B_MICROPAY); + return wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.B_MICROPAY, wxOrder); } catch (Exception e) { logger.error("B端刷卡支付发券: " + e.getMessage()); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java index 8b35e0e01..cd69baa64 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java @@ -68,12 +68,47 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { wxCouponSendMapper.deleteByPrimaryKey(id); } + private boolean isConditionAllowed(WxCouponSend wxCouponSend, Object param) { + + if (wxCouponSend.getSendType().equals(EnumCouponSendSendType.C_ORDER.getCode())){ + WxOrder wxOrder = (WxOrder)param; + if (wxCouponSend.getCondition() == null) + return true; + if (wxOrder.getProductId().equals(Long.valueOf(wxCouponSend.getCondition()))) + return true; + return false; + } + return true; + } + @Override @Transactional - public boolean sendCouponToUser(String tenantId, Long cUserId, EnumCouponSendSendType type) { - //查询开关是否打开 + public boolean sendCouponToUser(EnumCouponSendSendType type, Object param) { + + String tenantId; + Long cUserId; + switch (type) { + case CAR_STOP: + if (!param.getClass().equals(WxCUserCar.class)) + return false; + WxCUserCar wxCUserCar= (WxCUserCar)param; + cUserId = wxCUserCar.getCUserId(); + tenantId = wxCUserCar.getTenantId(); + break; + case COUPON_VERIFY: + case B_MICROPAY: + case C_ORDER: + if (!param.getClass().equals(WxOrder.class)) + return false; + WxOrder order = (WxOrder)param; + cUserId = order.getcUserId(); + tenantId = order.getTenantId(); + break; + default: + return false; + } - //查询停车或者核销的券 stopCarCouponSwitch, verifyCouponSwitch, microPayCouponSwitch + //查询开关是否打开 WxCouponSendConfig wxCouponSendConfig = new WxCouponSendConfig(); wxCouponSendConfig.setSendType(type.getCode()); wxCouponSendConfig.setTenantId(tenantId); @@ -114,6 +149,11 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { if (!checkLimit) { continue; } + + //检查条件 + if (!isConditionAllowed(send,param)) + continue; + // 发放免费券 WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(cUserId, send.getCouponId()); if (couponOrder != null) { 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 2f513557f..a8492a4d8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -92,6 +92,9 @@ public class WxOrderServiceImpl implements WxOrderService { @Autowired WxCardInfoMapper wxCardInfoMapper; + @Autowired + WxCouponSendService wxCouponSendService; + @Override public PageInfo listAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findList(record)); @@ -763,13 +766,22 @@ public class WxOrderServiceImpl implements WxOrderService { logger.error("订单更新失败:" + e.getMessage()); throw new MallinkException(ErrorCode.ORDER_UPDATE_ERR); } - // 创建couponOrder - try { - createCouponOrder(user, updateOrder, coupon); - } catch (Exception e) { - logger.error("保存订单:" + e.getMessage()); - throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR); - } + + // 创建couponOrder + try { + createCouponOrder(user, updateOrder, coupon); + } catch (Exception e) { + logger.error("保存订单:" + e.getMessage()); + throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR); + } + + // 发券couponOrder + try { + wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.C_ORDER,updateOrder); + } catch (Exception e) { + logger.error("订单发券:" + e.getMessage()); + } + // 成长值 计算 try {