| @@ -109,7 +109,7 @@ public class WxCarCallBackController extends BaseController { | |||||
| // TODO 可能多用户关联同一张车牌 | // TODO 可能多用户关联同一张车牌 | ||||
| List<WxCUserCar> userCarList = wxCUserCarService.getList(userCarQ); | List<WxCUserCar> userCarList = wxCUserCarService.getList(userCarQ); | ||||
| for (WxCUserCar userCar : userCarList) { | for (WxCUserCar userCar : userCarList) { | ||||
| wxCouponSendService.sendCouponToUser(tenantId, userCar.getCUserId(), EnumCouponSendSendType.CAR_STOP); | |||||
| wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar); | |||||
| } | } | ||||
| } | } | ||||
| @@ -67,6 +67,7 @@ public class WxCouponSendController extends BaseController { | |||||
| if (wxCouponSendList != null && wxCouponSendList.size() > 0) { | if (wxCouponSendList != null && wxCouponSendList.size() > 0) { | ||||
| return new ResultData(ErrorCode.COUPON_SEND_IS_EXISTED); | return new ResultData(ErrorCode.COUPON_SEND_IS_EXISTED); | ||||
| } | } | ||||
| WxCoupon wxCoupon = wxCouponService.getById(wxCouponSend.getCouponId()); | WxCoupon wxCoupon = wxCouponService.getById(wxCouponSend.getCouponId()); | ||||
| if (!wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()) ){ | if (!wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()) ){ | ||||
| return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); | 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) | @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | ||||
| public ResultData delete(Long id) { | public ResultData delete(Long id) { | ||||
| logger.debug("[" + getIpAddr() + "] WxCouponSendController::delete"); | logger.debug("[" + getIpAddr() + "] WxCouponSendController::delete"); | ||||
| //wxCouponSendService.deleteById(id); | |||||
| //return new ResultData(Result.SUCCESS, "删除成功", null); | |||||
| WxCouponSend wxCouponSend = wxCouponSendService.getById(id); | WxCouponSend wxCouponSend = wxCouponSendService.getById(id); | ||||
| if (wxCouponSend == null) | if (wxCouponSend == null) | ||||
| return new ResultData(ErrorCode.COUPON_SEND_IS_INVALID); | return new ResultData(ErrorCode.COUPON_SEND_IS_INVALID); | ||||
| @@ -11,7 +11,8 @@ public enum EnumCouponSendSendType { | |||||
| ACTIVE(1, "主动(保留)"), | ACTIVE(1, "主动(保留)"), | ||||
| CAR_STOP(2, "停车发券"), | CAR_STOP(2, "停车发券"), | ||||
| COUPON_VERIFY(3, "核销发券"), | COUPON_VERIFY(3, "核销发券"), | ||||
| B_MICROPAY(4, "B端刷卡发券") | |||||
| B_MICROPAY(4, "B端刷卡发券"), | |||||
| C_ORDER(5, "购买发券") | |||||
| ; | ; | ||||
| public static EnumCouponSendSendType getEnum(Integer code) { | public static EnumCouponSendSendType getEnum(Integer code) { | ||||
| @@ -23,12 +23,4 @@ public interface WxCouponSendConfigService { | |||||
| */ | */ | ||||
| void update(WxCouponSendConfig record); | void update(WxCouponSendConfig record); | ||||
| } | } | ||||
| @@ -44,9 +44,9 @@ public interface WxCouponSendService { | |||||
| * @param cUserId | * @param cUserId | ||||
| * @param type 2:停车发券 3:核销发券 | * @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); | |||||
| @@ -396,7 +396,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(couponOrder.getOrderId()); | WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(couponOrder.getOrderId()); | ||||
| if (wxOrder != null) { | if (wxOrder != null) { | ||||
| try { | try { | ||||
| return wxCouponSendService.sendCouponToUser(bUser.getTenantId(), wxOrder.getcUserId(), EnumCouponSendSendType.COUPON_VERIFY); | |||||
| return wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.COUPON_VERIFY, wxOrder); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("核销发券: " + e.getMessage()); | logger.error("核销发券: " + e.getMessage()); | ||||
| } | } | ||||
| @@ -410,7 +410,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(orderId); | WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(orderId); | ||||
| if (wxOrder != null) { | if (wxOrder != null) { | ||||
| try { | try { | ||||
| return wxCouponSendService.sendCouponToUser(tenantId, cUserId, EnumCouponSendSendType.B_MICROPAY); | |||||
| return wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.B_MICROPAY, wxOrder); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("B端刷卡支付发券: " + e.getMessage()); | logger.error("B端刷卡支付发券: " + e.getMessage()); | ||||
| } | } | ||||
| @@ -68,12 +68,47 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { | |||||
| wxCouponSendMapper.deleteByPrimaryKey(id); | 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 | @Override | ||||
| @Transactional | @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 wxCouponSendConfig = new WxCouponSendConfig(); | ||||
| wxCouponSendConfig.setSendType(type.getCode()); | wxCouponSendConfig.setSendType(type.getCode()); | ||||
| wxCouponSendConfig.setTenantId(tenantId); | wxCouponSendConfig.setTenantId(tenantId); | ||||
| @@ -114,6 +149,11 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { | |||||
| if (!checkLimit) { | if (!checkLimit) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| //检查条件 | |||||
| if (!isConditionAllowed(send,param)) | |||||
| continue; | |||||
| // 发放免费券 | // 发放免费券 | ||||
| WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(cUserId, send.getCouponId()); | WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(cUserId, send.getCouponId()); | ||||
| if (couponOrder != null) { | if (couponOrder != null) { | ||||
| @@ -92,6 +92,9 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| @Autowired | @Autowired | ||||
| WxCardInfoMapper wxCardInfoMapper; | WxCardInfoMapper wxCardInfoMapper; | ||||
| @Autowired | |||||
| WxCouponSendService wxCouponSendService; | |||||
| @Override | @Override | ||||
| public PageInfo<WxOrder> listAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { | public PageInfo<WxOrder> listAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { | ||||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findList(record)); | return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findList(record)); | ||||
| @@ -763,13 +766,22 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| logger.error("订单更新失败:" + e.getMessage()); | logger.error("订单更新失败:" + e.getMessage()); | ||||
| throw new MallinkException(ErrorCode.ORDER_UPDATE_ERR); | 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 { | try { | ||||