| @@ -17,6 +17,7 @@ import com.iformall.domain.vo.WxMerchantSubsidyVo; | |||||
| import com.iformall.domain.vo.WxOrderQueryVo; | import com.iformall.domain.vo.WxOrderQueryVo; | ||||
| import com.iformall.enums.EnumCouponChannelStatus; | import com.iformall.enums.EnumCouponChannelStatus; | ||||
| import com.iformall.enums.EnumCouponChannelType; | import com.iformall.enums.EnumCouponChannelType; | ||||
| import com.iformall.enums.EnumPayWay; | |||||
| import com.iformall.enums.EnumUserType; | import com.iformall.enums.EnumUserType; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.service.WxCUserBasicInfoService; | import com.iformall.service.WxCUserBasicInfoService; | ||||
| @@ -187,7 +188,7 @@ public class WxOrderController extends BaseController { | |||||
| return new ResultData(ErrorCode.COUPON_IS_NOT_FREE); | return new ResultData(ErrorCode.COUPON_IS_NOT_FREE); | ||||
| } | } | ||||
| // 免费券 | // 免费券 | ||||
| order = wxOrderService.saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null); | |||||
| order = wxOrderService.saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,EnumPayWay.PAY_WAY_NOT_UNPAY_CREDIT); | |||||
| return new ResultData(order); | return new ResultData(order); | ||||
| } catch (MallinkException e) { | } catch (MallinkException e) { | ||||
| logger.error(e.getMessage()); | logger.error(e.getMessage()); | ||||
| @@ -20,7 +20,7 @@ ADD COLUMN `login_count` int(11) DEFAULT 0 COMMENT '登陆次数' AFTER `active | |||||
| update wx_c_user_basic_info wcubi set wcubi.login_count = (select wcu.login_count from wx_c_user wcu where wcu.id=wcubi.id); | update wx_c_user_basic_info wcubi set wcubi.login_count = (select wcu.login_count from wx_c_user wcu where wcu.id=wcubi.id); | ||||
| ALTER TABLE `wx_coupon_order` | ALTER TABLE `wx_coupon_order` | ||||
| ADD COLUMN `pay_vendor` SMALLINT(3) DEFAULT NULL COMMENT '订单渠道,EnumPayWay.class'; | |||||
| ADD COLUMN `pay_vendor` SMALLINT(3) NOT NULL DEFAULT 1 COMMENT '订单渠道,EnumPayWay.class'; | |||||
| UPDATE wx_coupon_order o INNER JOIN wx_pay_order po ON po.order_id = o.`id` SET o.pay_vendor = po.pay_vendor; | UPDATE wx_coupon_order o INNER JOIN wx_pay_order po ON po.order_id = o.`id` SET o.pay_vendor = po.pay_vendor; | ||||
| @@ -10,6 +10,7 @@ import com.iformall.domain.vo.WxCouponActionLogVo; | |||||
| import com.iformall.domain.vo.WxCouponSendVo; | import com.iformall.domain.vo.WxCouponSendVo; | ||||
| import com.iformall.enums.EnumCouponSendSendType; | import com.iformall.enums.EnumCouponSendSendType; | ||||
| import com.iformall.enums.EnumCouponSendStatus; | import com.iformall.enums.EnumCouponSendStatus; | ||||
| import com.iformall.enums.EnumPayWay; | |||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mapper.WxCUserMapper; | import com.iformall.mapper.WxCUserMapper; | ||||
| import com.iformall.service.WxCouponActionLogService; | import com.iformall.service.WxCouponActionLogService; | ||||
| @@ -101,7 +102,7 @@ public class WxCouponSendController extends BaseController { | |||||
| wxCouponSend.setSendType(EnumCouponSendSendType.MERCHANT.getCode()); | wxCouponSend.setSendType(EnumCouponSendSendType.MERCHANT.getCode()); | ||||
| wxCouponSend.setStatus(EnumCouponSendStatus.VALID.getCode()); | wxCouponSend.setStatus(EnumCouponSendStatus.VALID.getCode()); | ||||
| try { | try { | ||||
| wxCouponSendService.handSel(wxCouponSend, Long.parseLong(cUserId)); | |||||
| wxCouponSendService.handSel(wxCouponSend, Long.parseLong(cUserId),EnumPayWay.PAY_WAY_NOT_UNPAY_MERCHANT); | |||||
| } catch (MallinkException e) { | } catch (MallinkException e) { | ||||
| logger.error("注券异常: ", e); | logger.error("注券异常: ", e); | ||||
| return new ResultData(e.getErrorCode(), e.getMessage()); | return new ResultData(e.getErrorCode(), e.getMessage()); | ||||
| @@ -440,7 +440,7 @@ public class WxMicroPayController extends BaseController { | |||||
| Integer remainPrice = payPrice; | Integer remainPrice = payPrice; | ||||
| if (wxCouponOrder != null) { | if (wxCouponOrder != null) { | ||||
| try { | try { | ||||
| couponPayOrder = wxCouponOrderService.microPayPreVerify(microOrder, wxCouponOrder, wxMerchantBUser, payPrice); | |||||
| couponPayOrder = wxCouponOrderService.microPayPreVerify(microOrder, wxCouponOrder, wxMerchantBUser, payPrice,payWay); | |||||
| remainPrice = microOrder.getPayment() - couponPayOrder.getPayAmount(); | remainPrice = microOrder.getPayment() - couponPayOrder.getPayAmount(); | ||||
| // 更新实际支付金额 | // 更新实际支付金额 | ||||
| WxOrder updateOrder = new WxOrder(); | WxOrder updateOrder = new WxOrder(); | ||||
| @@ -487,7 +487,7 @@ public class WxMicroPayController extends BaseController { | |||||
| // 支付完成 | // 支付完成 | ||||
| couponPayOrder.setIp(ipStr); | couponPayOrder.setIp(ipStr); | ||||
| try { | try { | ||||
| wxPayOrderService.handleMicroOrderPaySuccessForVerify(user, couponPayOrder); | |||||
| wxPayOrderService.handleMicroOrderPaySuccessForVerify(user, couponPayOrder,payWay); | |||||
| Map map = new HashMap(); | Map map = new HashMap(); | ||||
| map.put("end", "1"); | map.put("end", "1"); | ||||
| return new ResultData(map); | return new ResultData(map); | ||||
| @@ -42,6 +42,20 @@ public class WxCouponPasswordController extends BaseController { | |||||
| logger.info("getCouponOrderByPassword: " + getIpAddr() + params.toString()); | logger.info("getCouponOrderByPassword: " + getIpAddr() + params.toString()); | ||||
| String password = params.get("password"); | String password = params.get("password"); | ||||
| String formId = params.get("formId"); | String formId = params.get("formId"); | ||||
| WxCUser cuUser = getUser(); | |||||
| if (null == cuUser ) { | |||||
| return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(), "用户信息失效,请重新登陆"); | |||||
| } | |||||
| if (!cuUser.isBasicInfo()) { | |||||
| logger.error("暂未成为会员,请授权手机号"); | |||||
| return new ResultData(ErrorCode.USER_IS_NOT_MEMBER.getCode(), "暂未成为会员,请授权手机号"); | |||||
| } | |||||
| return getCouponOrderByPassword(password, formId, cuUser.getUserId(),EnumPayWay.PAY_WAY_NOT_UNPAY_PASSWD); | |||||
| } | |||||
| private ResultData getCouponOrderByPassword(String password,String formId,Long cUserId,EnumPayWay payWay) { | |||||
| if (StringUtils.isBlank(password) || password.equalsIgnoreCase(Constant.UNDEFINED)) { | if (StringUtils.isBlank(password) || password.equalsIgnoreCase(Constant.UNDEFINED)) { | ||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "password不能为空"); | return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "password不能为空"); | ||||
| } | } | ||||
| @@ -61,20 +75,11 @@ public class WxCouponPasswordController extends BaseController { | |||||
| return new ResultData(500, e.getMessage()); | return new ResultData(500, e.getMessage()); | ||||
| } | } | ||||
| WxCUser cuUser = getUser(); | |||||
| if (null == cuUser ) { | |||||
| return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(), "用户信息失效,请重新登陆"); | |||||
| } | |||||
| if (!cuUser.isBasicInfo()) { | |||||
| logger.error("暂未成为会员,请授权手机号"); | |||||
| return new ResultData(ErrorCode.USER_IS_NOT_MEMBER.getCode(), "暂未成为会员,请授权手机号"); | |||||
| } | |||||
| WxCUserBasicInfo user = userService.getById(cuUser.getUserId()); | |||||
| WxCUserBasicInfo user = userService.getById(cUserId); | |||||
| if(user == null) { | if(user == null) { | ||||
| logger.error("会员用户未找到: " + cuUser.getUserId()); | |||||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "会员用户未找到" + cuUser.getUserId()); | |||||
| logger.error("会员用户未找到: " + cUserId); | |||||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "会员用户未找到" + cUserId); | |||||
| } | } | ||||
| WxCoupon coupon = couponService.getById(couponPassword.getCouponId()); | WxCoupon coupon = couponService.getById(couponPassword.getCouponId()); | ||||
| @@ -93,7 +98,7 @@ public class WxCouponPasswordController extends BaseController { | |||||
| // 3. 领取free coupon | // 3. 领取free coupon | ||||
| try { | try { | ||||
| WxOrder order = orderService.saveFreeOrderForCoupon(user, coupon, null, formId, couponPassword.getId()); | |||||
| WxOrder order = orderService.saveFreeOrderForCoupon(user, coupon, null, formId, couponPassword.getId(),payWay); | |||||
| } catch (MallinkException e) { | } catch (MallinkException e) { | ||||
| setCouponPasswordStatus(couponPassword, EnumCouponPasswordStatus.getEnum(pwdStatus)); | setCouponPasswordStatus(couponPassword, EnumCouponPasswordStatus.getEnum(pwdStatus)); | ||||
| logger.error(e.getMessage()); | logger.error(e.getMessage()); | ||||
| @@ -65,7 +65,16 @@ public class WxOrderController extends BaseController { | |||||
| @ApiOperation(value = "下订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") | @ApiOperation(value = "下订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") | ||||
| @PostMapping("save") | @PostMapping("save") | ||||
| public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { | public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { | ||||
| logger.info("OrderSave: " + orderSaveDto); | |||||
| WxCUser user = getUser(); | |||||
| if (!user.isBasicInfo()) { | |||||
| logger.error("暂未成为会员,请授权手机号"); | |||||
| return new ResultData(ErrorCode.USER_IS_NOT_MEMBER.getCode(), "暂未成为会员,请授权手机号"); | |||||
| } | |||||
| return saveOrder(orderSaveDto,user.getUserId(),EnumPayWay.PAY_WAY_WECHAT); | |||||
| } | |||||
| private ResultData saveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay) { | |||||
| logger.info("OrderSave: " + orderSaveDto); | |||||
| if (orderSaveDto.getCouponChannelId() == null) { | if (orderSaveDto.getCouponChannelId() == null) { | ||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId不能为空"); | return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId不能为空"); | ||||
| } | } | ||||
| @@ -77,14 +86,9 @@ public class WxOrderController extends BaseController { | |||||
| ResultData resultData = couponChannelCheck(orderSaveDto, wxCouponChannel); | ResultData resultData = couponChannelCheck(orderSaveDto, wxCouponChannel); | ||||
| if (resultData != null) return resultData; | if (resultData != null) return resultData; | ||||
| WxCUser user = getUser(); | |||||
| if (!user.isBasicInfo()) { | |||||
| logger.error("暂未成为会员,请授权手机号"); | |||||
| return new ResultData(ErrorCode.USER_IS_NOT_MEMBER.getCode(), "暂未成为会员,请授权手机号"); | |||||
| } | |||||
| WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(user.getUserId()); | |||||
| WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(cUserId); | |||||
| if (wxCUserBasicInfo != null && wxCUserBasicInfo.getStatus().equals(EnumCUserBasicInfoStatus.LOCKED.getCode())) { | if (wxCUserBasicInfo != null && wxCUserBasicInfo.getStatus().equals(EnumCUserBasicInfoStatus.LOCKED.getCode())) { | ||||
| logger.info("会员权益被锁定:cUserId:" + user.getUserId()); | |||||
| logger.info("会员权益被锁定:cUserId:" + cUserId); | |||||
| return new ResultData(ErrorCode.MEMBER_IS_LOCKED); | return new ResultData(ErrorCode.MEMBER_IS_LOCKED); | ||||
| } | } | ||||
| @@ -97,7 +101,7 @@ public class WxOrderController extends BaseController { | |||||
| } | } | ||||
| //判断是否是拼团订单,如果是拼团订单,判断现在进行中的,和已完成的数量是否超出券的限制 | //判断是否是拼团订单,如果是拼团订单,判断现在进行中的,和已完成的数量是否超出券的限制 | ||||
| if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { | if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { | ||||
| int ordercount = wxOrderService.countUserCouponGroupOrder(user.getUserId(),coupon.getId()); | |||||
| int ordercount = wxOrderService.countUserCouponGroupOrder(cUserId,coupon.getId()); | |||||
| if (ordercount>=coupon.getUseLimitQuantity()) { | if (ordercount>=coupon.getUseLimitQuantity()) { | ||||
| return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF.getCode(),"您当前此券的有效拼团数量达到券的限购次数。"); | return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF.getCode(),"您当前此券的有效拼团数量达到券的限购次数。"); | ||||
| } | } | ||||
| @@ -142,7 +146,7 @@ public class WxOrderController extends BaseController { | |||||
| boolean isPress = orderSaveDto.getPress() != null ? orderSaveDto.getPress() : false; | boolean isPress = orderSaveDto.getPress() != null ? orderSaveDto.getPress() : false; | ||||
| try { | try { | ||||
| WxOrder order = wxOrderService.saveOrderForCoupon(wxCUserBasicInfo, coupon, orderSaveDto, isPress); | |||||
| WxOrder order = wxOrderService.saveOrderForCoupon(wxCUserBasicInfo, coupon, orderSaveDto, isPress,payWay); | |||||
| return new ResultData(order); | return new ResultData(order); | ||||
| } catch (MallinkException e) { | } catch (MallinkException e) { | ||||
| logger.error(e.getMessage()); | logger.error(e.getMessage()); | ||||
| @@ -152,7 +156,7 @@ public class WxOrderController extends BaseController { | |||||
| return new ResultData(ErrorCode.ORDER_IS_FAIL, e.getMessage()); | return new ResultData(ErrorCode.ORDER_IS_FAIL, e.getMessage()); | ||||
| } | } | ||||
| } | } | ||||
| private ResultData couponUserCheck(WxCUserBasicInfo user, WxCouponCVo coupon) { | private ResultData couponUserCheck(WxCUserBasicInfo user, WxCouponCVo coupon) { | ||||
| if (coupon.getConditions() == null) return null; | if (coupon.getConditions() == null) return null; | ||||
| JSONObject jo = null; | JSONObject jo = null; | ||||
| @@ -9,6 +9,7 @@ import com.iformall.domain.vo.WxCarCYFVo; | |||||
| import com.iformall.enums.EnumCarCmd; | import com.iformall.enums.EnumCarCmd; | ||||
| import com.iformall.enums.EnumCarVendor; | import com.iformall.enums.EnumCarVendor; | ||||
| import com.iformall.enums.EnumCouponSendSendType; | import com.iformall.enums.EnumCouponSendSendType; | ||||
| import com.iformall.enums.EnumPayWay; | |||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.utils.car.CYFUtil; | import com.iformall.utils.car.CYFUtil; | ||||
| import com.iformall.utils.car.TJDUtil; | import com.iformall.utils.car.TJDUtil; | ||||
| @@ -116,7 +117,7 @@ public class WxCarCYFCallBackController extends BaseController { | |||||
| boolean bFirst = true; | boolean bFirst = true; | ||||
| for (WxCUserCar userCar : userCarList) { | for (WxCUserCar userCar : userCarList) { | ||||
| userCar.setParentTenantId(park.getParentTenantId()); | userCar.setParentTenantId(park.getParentTenantId()); | ||||
| wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar); | |||||
| wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar,EnumPayWay.PAY_WAY_NOT_UNPAY_CAR_STOP); | |||||
| WxCUserBasicInfo cUser = wxCUserBasicInfoService.getById(userCar.getCUserId()); | WxCUserBasicInfo cUser = wxCUserBasicInfoService.getById(userCar.getCUserId()); | ||||
| if(cUser != null){ | if(cUser != null){ | ||||
| if(bFirst) { | if(bFirst) { | ||||
| @@ -10,6 +10,7 @@ import com.iformall.enums.EnumCarCmd; | |||||
| import com.iformall.enums.EnumCarVendor; | import com.iformall.enums.EnumCarVendor; | ||||
| import com.iformall.enums.EnumCouponSendSendType; | import com.iformall.enums.EnumCouponSendSendType; | ||||
| import com.iformall.enums.EnumETCPCode; | import com.iformall.enums.EnumETCPCode; | ||||
| import com.iformall.enums.EnumPayWay; | |||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.utils.DateUtils; | import com.iformall.utils.DateUtils; | ||||
| import com.iformall.utils.car.ETCPUtil; | import com.iformall.utils.car.ETCPUtil; | ||||
| @@ -361,7 +362,7 @@ public class WxCarETCPCallBackController extends BaseController { | |||||
| boolean bFirst = true; | boolean bFirst = true; | ||||
| for (WxCUserCar userCar : userCarList) { | for (WxCUserCar userCar : userCarList) { | ||||
| userCar.setParentTenantId(park.getParentTenantId()); | userCar.setParentTenantId(park.getParentTenantId()); | ||||
| wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar); | |||||
| wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar,EnumPayWay.PAY_WAY_NOT_UNPAY_CAR_STOP); | |||||
| WxCUserBasicInfo cUser = wxCUserBasicInfoService.getById(userCar.getCUserId()); | WxCUserBasicInfo cUser = wxCUserBasicInfoService.getById(userCar.getCUserId()); | ||||
| if(cUser != null){ | if(cUser != null){ | ||||
| if(bFirst) { | if(bFirst) { | ||||
| @@ -7,6 +7,7 @@ import com.iformall.domain.po.*; | |||||
| import com.iformall.enums.EnumCarCmd; | import com.iformall.enums.EnumCarCmd; | ||||
| import com.iformall.enums.EnumCarVendor; | import com.iformall.enums.EnumCarVendor; | ||||
| import com.iformall.enums.EnumCouponSendSendType; | import com.iformall.enums.EnumCouponSendSendType; | ||||
| import com.iformall.enums.EnumPayWay; | |||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.utils.DateUtils; | import com.iformall.utils.DateUtils; | ||||
| import com.iformall.utils.car.TJDUtil; | import com.iformall.utils.car.TJDUtil; | ||||
| @@ -168,7 +169,7 @@ public class WxCarTJDCallBackController extends BaseController { | |||||
| boolean bFirst = true; | boolean bFirst = true; | ||||
| for (WxCUserCar userCar : userCarList) { | for (WxCUserCar userCar : userCarList) { | ||||
| userCar.setParentTenantId(park.getParentTenantId()); | userCar.setParentTenantId(park.getParentTenantId()); | ||||
| wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar); | |||||
| wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar,EnumPayWay.PAY_WAY_NOT_UNPAY_CAR_STOP); | |||||
| WxCUserBasicInfo cUser = wxCUserBasicInfoService.getById(userCar.getCUserId()); | WxCUserBasicInfo cUser = wxCUserBasicInfoService.getById(userCar.getCUserId()); | ||||
| if(cUser != null){ | if(cUser != null){ | ||||
| if(bFirst) { | if(bFirst) { | ||||
| @@ -189,7 +189,7 @@ public class CouponSendSchedule { | |||||
| // 发放免费券 | // 发放免费券 | ||||
| try { | try { | ||||
| WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(cu.getId(), cs.getCouponId(), null); | |||||
| WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(cu.getId(), cs.getCouponId(), null,EnumPayWay.PAY_WAY_NOT_UNPAY_SYSTEM_SEND); | |||||
| wxCouponActionLogService.addOne(tenantEntity, cs.getCouponId(), couponOrder.getId(), cs.getSendType(), cs.getId()); | wxCouponActionLogService.addOne(tenantEntity, cs.getCouponId(), couponOrder.getId(), cs.getSendType(), cs.getId()); | ||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("定时发券:发券失败 levelId=" + l.getId() + " couponId=" + cs.getCouponId() + " userId=" + cu.getId() + e.getMessage()); | logger.error("定时发券:发券失败 levelId=" + l.getId() + " couponId=" + cs.getCouponId() + " userId=" + cu.getId() + e.getMessage()); | ||||
| @@ -319,7 +319,7 @@ public class CouponSendSchedule { | |||||
| for (WxCUserBasicInfo cu : newUserList) { | for (WxCUserBasicInfo cu : newUserList) { | ||||
| // 发放生日券 | // 发放生日券 | ||||
| try { | try { | ||||
| WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(cu.getId(), cs.getCouponId(), null); | |||||
| WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(cu.getId(), cs.getCouponId(), null,EnumPayWay.PAY_WAY_NOT_UNPAY_SYSTEM_SEND); | |||||
| wxCouponActionLogService.addOne(tenantEntity, cs.getCouponId(), couponOrder.getId(), cs.getSendType(), cs.getId()); | wxCouponActionLogService.addOne(tenantEntity, cs.getCouponId(), couponOrder.getId(), cs.getSendType(), cs.getId()); | ||||
| couponSendedUsers.add(cu); | couponSendedUsers.add(cu); | ||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| @@ -5,13 +5,22 @@ package com.iformall.enums; | |||||
| */ | */ | ||||
| public enum EnumPayWay { | public enum EnumPayWay { | ||||
| PAY_WAY_WECHAT(1, "微信小程序支付"), | |||||
| PAY_WAY_WECHAT_MA(12, "微信小程序B端扫码支付"), | |||||
| PAY_WAY_WECHAT_WAP(2, "微信H5"), | |||||
| PAY_WAY_ALIPAY(3, "支付宝"), | |||||
| PAY_WAY_ALIPAY_WAP(4, "支付宝H5"), | |||||
| PAY_WAY_POS_B(10, "POS B端"), | |||||
| PAY_WAY_POS_NEU(11, "POS 东软"), | |||||
| PAY_WAY_WECHAT(1, "微信小程序支付",EnumPayWayType.WX_MINIPAY), | |||||
| PAY_WAY_WECHAT_MA(12, "微信小程序B端扫码支付",EnumPayWayType.WX_MINIPAY), | |||||
| PAY_WAY_WECHAT_WAP(2, "微信H5",EnumPayWayType.WX_H5PAY), | |||||
| PAY_WAY_ALIPAY(3, "支付宝",EnumPayWayType.ALI_MINIPAY), | |||||
| PAY_WAY_ALIPAY_WAP(4, "支付宝H5",EnumPayWayType.ALI_H5PAY), | |||||
| PAY_WAY_POS_B(10, "POS B端",EnumPayWayType.POS), | |||||
| PAY_WAY_POS_NEU(11, "POS 东软",EnumPayWayType.NEU_POS), | |||||
| PAY_WAY_NOT_UNPAY_MERCHANT(91, "商户注券,无需支付",null), | |||||
| PAY_WAY_NOT_UNPAY_VERRIFY(92, "核销发券,无需支付",null), | |||||
| PAY_WAY_NOT_UNPAY_B_MA(93, "B端扫码支付发券,无需支付",null), | |||||
| PAY_WAY_NOT_UNPAY_CAR_STOP(94, "停车发券,无需支付",null), | |||||
| PAY_WAY_NOT_UNPAY_SYSTEM_SEND(95, "系统定时发放券,无需支付",null), | |||||
| PAY_WAY_NOT_UNPAY_BATCH_SEND(96, "后台批量发券,无需支付",null), | |||||
| PAY_WAY_NOT_UNPAY_TRADE(97, "交易发券,无需支付",null), | |||||
| PAY_WAY_NOT_UNPAY_PASSWD(98, "根据卡密兑换卡,无需支付",null), | |||||
| PAY_WAY_NOT_UNPAY_CREDIT(99, "积分兑换券,无需支付",null) | |||||
| ; | ; | ||||
| public static EnumPayWay getEnum(Integer code) { | public static EnumPayWay getEnum(Integer code) { | ||||
| @@ -25,10 +34,12 @@ public enum EnumPayWay { | |||||
| private Integer code; | private Integer code; | ||||
| private String message; | private String message; | ||||
| private EnumPayWayType type; | |||||
| EnumPayWay(Integer code, String message) { | |||||
| EnumPayWay(Integer code, String message,EnumPayWayType type) { | |||||
| this.code = code; | this.code = code; | ||||
| this.message = message; | this.message = message; | ||||
| this.type = type; | |||||
| } | } | ||||
| public Integer getCode() { | public Integer getCode() { | ||||
| @@ -38,4 +49,13 @@ public enum EnumPayWay { | |||||
| public String getMessage() { | public String getMessage() { | ||||
| return message; | return message; | ||||
| } | } | ||||
| public EnumPayWayType getType() { | |||||
| return type; | |||||
| } | |||||
| public static enum EnumPayWayType { | |||||
| WX_MINIPAY,WX_H5PAY,ALI_MINIPAY,ALI_H5PAY,NEU_POS,POS | |||||
| } | |||||
| } | } | ||||
| @@ -206,7 +206,7 @@ public interface WxCouponOrderService { | |||||
| */ | */ | ||||
| JSONArray queryMicroPayCouponOrder(WxMerchantBUser user, WxCUserBasicInfo cUser, Integer price); | JSONArray queryMicroPayCouponOrder(WxMerchantBUser user, WxCUserBasicInfo cUser, Integer price); | ||||
| WxPayOrder microPayPreVerify(WxOrder microOrder, WxCouponOrder couponOrder, WxMerchantBUser bUser, Integer price); | |||||
| WxPayOrder microPayPreVerify(WxOrder microOrder, WxCouponOrder couponOrder, WxMerchantBUser bUser, Integer price, EnumPayWay payWay); | |||||
| Integer microPayVerify(WxMerchantBUser bUser, Long couponOrderId,EnumPayWay payWay); | Integer microPayVerify(WxMerchantBUser bUser, Long couponOrderId,EnumPayWay payWay); | ||||
| @@ -5,6 +5,7 @@ import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.domain.po.WxCouponSend; | import com.iformall.domain.po.WxCouponSend; | ||||
| import com.iformall.domain.vo.WxCouponSendVo; | import com.iformall.domain.vo.WxCouponSendVo; | ||||
| import com.iformall.enums.EnumCouponSendSendType; | import com.iformall.enums.EnumCouponSendSendType; | ||||
| import com.iformall.enums.EnumPayWay; | |||||
| public interface WxCouponSendService { | public interface WxCouponSendService { | ||||
| @@ -52,7 +53,7 @@ public interface WxCouponSendService { | |||||
| * @param cUserId | * @param cUserId | ||||
| * @param type 2:停车发券 3:核销发券 | * @param type 2:停车发券 3:核销发券 | ||||
| */ | */ | ||||
| boolean sendCouponToUser(EnumCouponSendSendType type, Object param); | |||||
| boolean sendCouponToUser(EnumCouponSendSendType type, Object param,EnumPayWay payWay); | |||||
| void updateStatusByCouponId(Long couponId, TenantEntity tenantEntity, int status); | void updateStatusByCouponId(Long couponId, TenantEntity tenantEntity, int status); | ||||
| @@ -95,7 +96,7 @@ public interface WxCouponSendService { | |||||
| * | * | ||||
| * @param wxCouponSend | * @param wxCouponSend | ||||
| */ | */ | ||||
| void handSel(WxCouponSend wxCouponSend,Long cUserId) ; | |||||
| void handSel(WxCouponSend wxCouponSend,Long cUserId,EnumPayWay payWay) ; | |||||
| } | } | ||||
| @@ -86,7 +86,7 @@ public interface WxOrderService { | |||||
| * @param wxCouponSendVo 商户注券时必须指定 | * @param wxCouponSendVo 商户注券时必须指定 | ||||
| * @return WxCouponOrder | * @return WxCouponOrder | ||||
| */ | */ | ||||
| WxCouponOrder sendFreeCouponToUser(Long userId, Long couponId, WxCouponSendVo wxCouponSendVo); | |||||
| WxCouponOrder sendFreeCouponToUser(Long userId, Long couponId, WxCouponSendVo wxCouponSendVo,EnumPayWay payWay); | |||||
| /** | /** | ||||
| * orderSuccess 订单已支付 | * orderSuccess 订单已支付 | ||||
| @@ -164,7 +164,7 @@ public interface WxOrderService { | |||||
| * @param orderId | * @param orderId | ||||
| * @param payOrderId | * @param payOrderId | ||||
| */ | */ | ||||
| void shareForMicroPay(TenantEntity tenantEntity, Long orderId, Long payOrderId); | |||||
| void shareForMicroPay(TenantEntity tenantEntity, Long orderId, Long payOrderId,EnumPayWay payWay); | |||||
| PageInfo<WxOrder> listOrderAsPage(WxOrderQueryVo wxOrder, Integer pageNum, Integer pageSize); | PageInfo<WxOrder> listOrderAsPage(WxOrderQueryVo wxOrder, Integer pageNum, Integer pageSize); | ||||
| @@ -192,7 +192,7 @@ public interface WxOrderService { | |||||
| * @param coupon | * @param coupon | ||||
| * @return | * @return | ||||
| */ | */ | ||||
| WxOrder saveOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress); | |||||
| WxOrder saveOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress,EnumPayWay payWay); | |||||
| void sendOrderSuccessActionMsg(WxOrder updateOrder); | void sendOrderSuccessActionMsg(WxOrder updateOrder); | ||||
| /** | /** | ||||
| @@ -211,7 +211,7 @@ public interface WxOrderService { | |||||
| boolean checkCouponIsFree(WxCoupon coupon); | boolean checkCouponIsFree(WxCoupon coupon); | ||||
| // 2. 创建免费订单, 领取 couponOrder | // 2. 创建免费订单, 领取 couponOrder | ||||
| WxOrder saveFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId); | |||||
| WxOrder saveFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay); | |||||
| // 3. 创建有价订单 | // 3. 创建有价订单 | ||||
| WxOrder saveNoFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId); | WxOrder saveNoFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId); | ||||
| @@ -92,7 +92,7 @@ public interface WxPayOrderService { | |||||
| * @param user | * @param user | ||||
| * @param record | * @param record | ||||
| */ | */ | ||||
| void handleMicroOrderPaySuccessForVerify(WxMerchantBUser user, WxPayOrder record); | |||||
| void handleMicroOrderPaySuccessForVerify(WxMerchantBUser user, WxPayOrder record,EnumPayWay payWay); | |||||
| /** | /** | ||||
| * 支付状态处理 | * 支付状态处理 | ||||
| @@ -274,7 +274,7 @@ public class WxCouponInjectServiceImpl implements WxCouponInjectService { | |||||
| // 发放免费券 | // 发放免费券 | ||||
| WxCouponOrder couponOrder = null; | WxCouponOrder couponOrder = null; | ||||
| try { | try { | ||||
| couponOrder = wxOrderService.sendFreeCouponToUser(tempCUser.getId(), wxCoupon.getId(),null); | |||||
| couponOrder = wxOrderService.sendFreeCouponToUser(tempCUser.getId(), wxCoupon.getId(),null,EnumPayWay.PAY_WAY_NOT_UNPAY_BATCH_SEND); | |||||
| if (couponOrder != null) { | if (couponOrder != null) { | ||||
| wxCouponActionLogService.addOne(couponOrder, wxCoupon.getId(), couponOrder.getId(), EnumCouponSendSendType.INJECT.getCode(), couponInjectId); | wxCouponActionLogService.addOne(couponOrder, wxCoupon.getId(), couponOrder.getId(), EnumCouponSendSendType.INJECT.getCode(), couponInjectId); | ||||
| } | } | ||||
| @@ -547,7 +547,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| merchantSubsidy.setRealPayment(couponOrder.getCouponPrice()); | merchantSubsidy.setRealPayment(couponOrder.getCouponPrice()); | ||||
| merchantSubsidy.setSubsidy(couponOrder.getCouponPrice()); | merchantSubsidy.setSubsidy(couponOrder.getCouponPrice()); | ||||
| merchantSubsidy.setRealSubsidy(couponOrder.getCouponPrice()); | merchantSubsidy.setRealSubsidy(couponOrder.getCouponPrice()); | ||||
| merchantSubsidy.setType(payServiceFactory.getPayShareAdapterService(couponOrder.getPayVendor()).getType()); | |||||
| merchantSubsidy.setType(payServiceFactory.getPayShareAdapterService(couponOrder.getPayVendor()).getSubsidyType()); | |||||
| merchantSubsidy.setCreateDate(curDate); | merchantSubsidy.setCreateDate(curDate); | ||||
| merchantSubsidy.setUpdateDate(curDate); | merchantSubsidy.setUpdateDate(curDate); | ||||
| merchantSubsidy.setStatus(EnumMerchantSubsidyStatus.NOT_SUBSIDY.getCode()); | merchantSubsidy.setStatus(EnumMerchantSubsidyStatus.NOT_SUBSIDY.getCode()); | ||||
| @@ -691,7 +691,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| WxOrder wxOrder = wxOrderMapper.selectById(couponOrder.getOrderId()); | WxOrder wxOrder = wxOrderMapper.selectById(couponOrder.getOrderId()); | ||||
| if (wxOrder != null) { | if (wxOrder != null) { | ||||
| try { | try { | ||||
| return wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.COUPON_VERIFY, wxOrder); | |||||
| return wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.COUPON_VERIFY, wxOrder,EnumPayWay.PAY_WAY_NOT_UNPAY_VERRIFY); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("核销发券: " + e.getMessage()); | logger.error("核销发券: " + e.getMessage()); | ||||
| } | } | ||||
| @@ -705,7 +705,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| WxOrder wxOrder = wxOrderMapper.selectById(orderId); | WxOrder wxOrder = wxOrderMapper.selectById(orderId); | ||||
| if (wxOrder != null) { | if (wxOrder != null) { | ||||
| try { | try { | ||||
| return wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.B_MICROPAY, wxOrder); | |||||
| return wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.B_MICROPAY, wxOrder,EnumPayWay.PAY_WAY_NOT_UNPAY_B_MA); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("B端刷卡支付发券: " + e.getMessage()); | logger.error("B端刷卡支付发券: " + e.getMessage()); | ||||
| } | } | ||||
| @@ -1244,7 +1244,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| @Override | @Override | ||||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | ||||
| public WxPayOrder microPayPreVerify(WxOrder microOrder, WxCouponOrder couponOrder, WxMerchantBUser bUser, Integer payPrice) { | |||||
| public WxPayOrder microPayPreVerify(WxOrder microOrder, WxCouponOrder couponOrder, WxMerchantBUser bUser, Integer payPrice, EnumPayWay payWay) { | |||||
| // 1. 获取券信息 | // 1. 获取券信息 | ||||
| WxCoupon wxCoupon = wxCouponMapper.selectById(couponOrder.getCouponId()); | WxCoupon wxCoupon = wxCouponMapper.selectById(couponOrder.getCouponId()); | ||||
| if (wxCoupon == null) { | if (wxCoupon == null) { | ||||
| @@ -1373,7 +1373,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| } else { | } else { | ||||
| setPayAmount(microOrder.getPayment()); | setPayAmount(microOrder.getPayment()); | ||||
| } | } | ||||
| setPayVendor(EnumPayWay.PAY_WAY_WEAPP.getCode()); | |||||
| setPayVendor(payWay.getCode()); | |||||
| setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); | setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); | ||||
| setShare(EnumPayShare.NO.getCode()); | setShare(EnumPayShare.NO.getCode()); | ||||
| setPayFrom(EnumPayFrom.INSIDE_B.getCode()); | setPayFrom(EnumPayFrom.INSIDE_B.getCode()); | ||||
| @@ -287,7 +287,7 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { | |||||
| @Override | @Override | ||||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | ||||
| public boolean sendCouponToUser(EnumCouponSendSendType type, Object param) { | |||||
| public boolean sendCouponToUser(EnumCouponSendSendType type, Object param,EnumPayWay payWay) { | |||||
| TenantEntity tenantEntity; | TenantEntity tenantEntity; | ||||
| Long cUserId; | Long cUserId; | ||||
| @@ -369,7 +369,7 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { | |||||
| // 发放免费券 | // 发放免费券 | ||||
| WxCouponOrder couponOrder = null; | WxCouponOrder couponOrder = null; | ||||
| try { | try { | ||||
| couponOrder = wxOrderService.sendFreeCouponToUser(cUserId, send.getCouponId(), null); | |||||
| couponOrder = wxOrderService.sendFreeCouponToUser(cUserId, send.getCouponId(), null,payWay); | |||||
| if (couponOrder != null) { | if (couponOrder != null) { | ||||
| bRet = true; | bRet = true; | ||||
| @@ -615,7 +615,7 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { | |||||
| @Override | @Override | ||||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | ||||
| public void handSel(WxCouponSend wxCouponSend, Long cUserId) { | |||||
| public void handSel(WxCouponSend wxCouponSend, Long cUserId,EnumPayWay payWay) { | |||||
| WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectById(cUserId); | WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectById(cUserId); | ||||
| if (Objects.isNull(wxCUserBasicInfo)) { | if (Objects.isNull(wxCUserBasicInfo)) { | ||||
| @@ -628,7 +628,7 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { | |||||
| } | } | ||||
| couponSendList.forEach(cs -> { | couponSendList.forEach(cs -> { | ||||
| // 发放免费券 | // 发放免费券 | ||||
| WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(cUserId, cs.getCouponId(), cs); | |||||
| WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(cUserId, cs.getCouponId(), cs,payWay); | |||||
| if (couponOrder != null) { | if (couponOrder != null) { | ||||
| wxCouponActionLogService.addOne(couponOrder, cs.getCouponId(), couponOrder.getId(), cs.getSendType(), cs.getId()); | wxCouponActionLogService.addOne(couponOrder, cs.getCouponId(), couponOrder.getId(), cs.getSendType(), cs.getId()); | ||||
| sendMsgForSendCoupon(couponOrder, cs, couponOrder, wxCUserBasicInfo); | sendMsgForSendCoupon(couponOrder, cs, couponOrder, wxCUserBasicInfo); | ||||
| @@ -980,7 +980,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| * @param order | * @param order | ||||
| * @param coupon | * @param coupon | ||||
| */ | */ | ||||
| private WxCouponOrder createCouponOrder(WxOrder order, WxCUserBasicInfo user, WxCoupon coupon, Long couponPasswordId) { | |||||
| private WxCouponOrder createCouponOrder(WxOrder order, WxCUserBasicInfo user, WxCoupon coupon, Long couponPasswordId,EnumPayWay payWay) { | |||||
| Date curr = new Date(); | Date curr = new Date(); | ||||
| Date valid_date = null; | Date valid_date = null; | ||||
| int limit_days = Constant.WX_LIMIT_DAYS; | int limit_days = Constant.WX_LIMIT_DAYS; | ||||
| @@ -1055,7 +1055,13 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| couponOrder.setAutoRefund(coupon.getAutoRefund()); | couponOrder.setAutoRefund(coupon.getAutoRefund()); | ||||
| couponOrder.setOrderId(order.getOrderNumber()); | couponOrder.setOrderId(order.getOrderNumber()); | ||||
| couponOrder.setExpiredTime(valid_date); | couponOrder.setExpiredTime(valid_date); | ||||
| couponOrder.setPayVendor(payOrder.getPayVendor()); | |||||
| //有支付信息,从支付信息中取渠道 | |||||
| if (null != payOrder) { | |||||
| couponOrder.setPayVendor(payOrder.getPayVendor()); | |||||
| }else { | |||||
| //免费券无需支付,如商户注券,核销发券,免费券等等 | |||||
| couponOrder.setPayVendor(payWay.getCode()); | |||||
| } | |||||
| if (!isCard) { | if (!isCard) { | ||||
| couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); | couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); | ||||
| } else { | } else { | ||||
| @@ -1222,7 +1228,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| @Override | @Override | ||||
| @Transactional(propagation = Propagation.NESTED, readOnly = false, rollbackFor = {Exception.class}) | @Transactional(propagation = Propagation.NESTED, readOnly = false, rollbackFor = {Exception.class}) | ||||
| public WxCouponOrder sendFreeCouponToUser(Long userId, Long couponId, WxCouponSendVo wxCouponSendVo) { | |||||
| public WxCouponOrder sendFreeCouponToUser(Long userId, Long couponId, WxCouponSendVo wxCouponSendVo,EnumPayWay payWay) { | |||||
| // check 用户状态 | // check 用户状态 | ||||
| WxCUserBasicInfo user = null; | WxCUserBasicInfo user = null; | ||||
| try { | try { | ||||
| @@ -1303,7 +1309,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| // 创建couponOrder | // 创建couponOrder | ||||
| WxCouponOrder couponOrder = null; | WxCouponOrder couponOrder = null; | ||||
| try { | try { | ||||
| couponOrder = createCouponOrder(record, user, coupon, null); | |||||
| couponOrder = createCouponOrder(record, user, coupon, null,payWay); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("保存订单:" + e.getMessage()); | logger.error("保存订单:" + e.getMessage()); | ||||
| throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR.getCode(), coupon.getTitle() + ErrorCode.COUPON_ORDER_SAVE_ERR.getMessage()); | throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR.getCode(), coupon.getTitle() + ErrorCode.COUPON_ORDER_SAVE_ERR.getMessage()); | ||||
| @@ -1350,7 +1356,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| // 创建couponOrder | // 创建couponOrder | ||||
| try { | try { | ||||
| createCouponOrder(updateOrder, user, coupon, null); | |||||
| createCouponOrder(updateOrder, user, coupon, null,null); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("创建券包:" + e.getMessage()); | logger.error("创建券包:" + e.getMessage()); | ||||
| throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR); | throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR); | ||||
| @@ -1425,7 +1431,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| // 交易发券 | // 交易发券 | ||||
| try { | try { | ||||
| wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.C_ORDER, updateOrder); | |||||
| wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.C_ORDER, updateOrder,EnumPayWay.PAY_WAY_NOT_UNPAY_TRADE); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("订单发券:" + e.getMessage()); | logger.error("订单发券:" + e.getMessage()); | ||||
| } | } | ||||
| @@ -1695,7 +1701,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| @Override | @Override | ||||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | ||||
| public void shareForMicroPay(TenantEntity tenantEntity, Long orderId, Long payOrderId) { | |||||
| public void shareForMicroPay(TenantEntity tenantEntity, Long orderId, Long payOrderId,EnumPayWay payWay) { | |||||
| // 微信分账 | // 微信分账 | ||||
| try { | try { | ||||
| WxPayOrder wxPayOrder = new WxPayOrder(); | WxPayOrder wxPayOrder = new WxPayOrder(); | ||||
| @@ -1721,7 +1727,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| sharingOrder.updateTenantInfo(wxPayOrder); | sharingOrder.updateTenantInfo(wxPayOrder); | ||||
| sharingOrder.setTransactionId(wxPayOrder.getTransactionId()); | sharingOrder.setTransactionId(wxPayOrder.getTransactionId()); | ||||
| sharingOrder.setShareAmount(wxPayOrder.getShareAmount()); | sharingOrder.setShareAmount(wxPayOrder.getShareAmount()); | ||||
| ResultData resultData = wxProfitSharingOrderService.createSharingOrder(sharingOrder); | |||||
| ResultData resultData = wxProfitSharingOrderService.createSharingOrder(sharingOrder,payWay.getCode()); | |||||
| } else { | } else { | ||||
| logger.error("微信分账: 未找到payorder or merchant at orderid-" + orderId); | logger.error("微信分账: 未找到payorder or merchant at orderid-" + orderId); | ||||
| } | } | ||||
| @@ -1933,7 +1939,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| RedisTemplate<String, WxCUserBasicInfo> cUserBasicInfoRedisTemplate; | RedisTemplate<String, WxCUserBasicInfo> cUserBasicInfoRedisTemplate; | ||||
| @Override | @Override | ||||
| public WxOrder saveOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress) { | |||||
| public WxOrder saveOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress,EnumPayWay payWay) { | |||||
| WxOrder order = null; | WxOrder order = null; | ||||
| // 防止同一用户重复抽奖(一分钟内) | // 防止同一用户重复抽奖(一分钟内) | ||||
| // 1. 订单保存时 加入redis缓存,key --> action:userId:couponId , 时间1000ms | // 1. 订单保存时 加入redis缓存,key --> action:userId:couponId , 时间1000ms | ||||
| @@ -1949,7 +1955,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| } | } | ||||
| cUserBasicInfoRedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS); | cUserBasicInfoRedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS); | ||||
| order = saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null); | |||||
| order = saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,payWay); | |||||
| if (order != null) { | if (order != null) { | ||||
| // 6. 下订单完成,发送内部消息 | // 6. 下订单完成,发送内部消息 | ||||
| // 下订单完成,发送内部消息 | // 下订单完成,发送内部消息 | ||||
| @@ -1983,7 +1989,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| @Override | @Override | ||||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | ||||
| public WxOrder saveFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId) { | |||||
| public WxOrder saveFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay) { | |||||
| // 1. check user info and coupon info | // 1. check user info and coupon info | ||||
| userCouponMerchantCheck(user, coupon); | userCouponMerchantCheck(user, coupon); | ||||
| if (coupon.checkIsCreditCoupon()) { | if (coupon.checkIsCreditCoupon()) { | ||||
| @@ -2023,7 +2029,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| // 5. 创建couponOrder | // 5. 创建couponOrder | ||||
| try { | try { | ||||
| createCouponOrder(record, user, coupon, couponPasswordId); | |||||
| createCouponOrder(record, user, coupon, couponPasswordId,payWay); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("couponOrder失败:" + e.getMessage()); | logger.error("couponOrder失败:" + e.getMessage()); | ||||
| throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR); | throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR); | ||||
| @@ -141,7 +141,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { | |||||
| // 支付单号 | // 支付单号 | ||||
| record.setPayBillNo(payBillNo); | record.setPayBillNo(payBillNo); | ||||
| record.setPayAmount((Long) bill.get("owe")); | record.setPayAmount((Long) bill.get("owe")); | ||||
| record.setPayVendor(EnumPayWay.PAY_WAY_WEAPP.getCode()); | |||||
| record.setPayVendor(payWay.getCode()); | |||||
| record.setPayBillStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); | record.setPayBillStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); | ||||
| record.setShare(isShare.getCode()); | record.setShare(isShare.getCode()); | ||||
| @@ -587,7 +587,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { | |||||
| } | } | ||||
| String partnerKey = payAccount.getApiKey(); | String partnerKey = payAccount.getApiKey(); | ||||
| try { | try { | ||||
| if (payWay == EnumPayWay.PAY_WAY_WEAPP) { | |||||
| if (payWay.getType() == EnumPayWay.EnumPayWayType.ALI_MINIPAY) { | |||||
| boolean signVerified = false; | boolean signVerified = false; | ||||
| if (isNormal) { | if (isNormal) { | ||||
| // 普通商户号支付 | // 普通商户号支付 | ||||
| @@ -1194,7 +1194,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| // 支付分账 | // 支付分账 | ||||
| logger.info("收银台订单分账开始: orderId: {}, payOrderId: {}", orderId, payOrderId); | logger.info("收银台订单分账开始: orderId: {}, payOrderId: {}", orderId, payOrderId); | ||||
| try { | try { | ||||
| wxOrderService.shareForMicroPay(tenantEntity, orderId, payOrderId); | |||||
| wxOrderService.shareForMicroPay(tenantEntity, orderId, payOrderId,payWay); | |||||
| } catch (MallinkException e) { | } catch (MallinkException e) { | ||||
| logger.error("收银台订单分账失败: orderId: {}, payOrderId: {}", orderId, payOrderId); | logger.error("收银台订单分账失败: orderId: {}, payOrderId: {}", orderId, payOrderId); | ||||
| logger.error("收银台订单分账失败: " + e.getMessage()); | logger.error("收银台订单分账失败: " + e.getMessage()); | ||||
| @@ -1206,7 +1206,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| @Override | @Override | ||||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | ||||
| public void handleMicroOrderPaySuccessForVerify(WxMerchantBUser user, WxPayOrder record) { | |||||
| public void handleMicroOrderPaySuccessForVerify(WxMerchantBUser user, WxPayOrder record,EnumPayWay payWay) { | |||||
| Date currentDate = new Date(); | Date currentDate = new Date(); | ||||
| WxOrder order = wxOrderMapper.selectById(record.getOrderId()); | WxOrder order = wxOrderMapper.selectById(record.getOrderId()); | ||||
| @@ -1218,7 +1218,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| WxAppinfo appinfo = wxAppinfoService.getCAppInfo(order); | WxAppinfo appinfo = wxAppinfoService.getCAppInfo(order); | ||||
| if (record.getPayAmount().equals(order.getTotalPayment())) { | if (record.getPayAmount().equals(order.getTotalPayment())) { | ||||
| doCouponPayOrder(user, record, order); | |||||
| doCouponPayOrder(user, record, order,payWay); | |||||
| } else { | } else { | ||||
| throw new MallinkException(ErrorCode.PAY_ORDER_ERROR); | throw new MallinkException(ErrorCode.PAY_ORDER_ERROR); | ||||
| } | } | ||||
| @@ -1236,7 +1236,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| } | } | ||||
| } | } | ||||
| private void doCouponPayOrder(WxMerchantBUser user, WxPayOrder record, WxOrder order) { | |||||
| private void doCouponPayOrder(WxMerchantBUser user, WxPayOrder record, WxOrder order,EnumPayWay payWay) { | |||||
| // B端收银台核销券处理 | // B端收银台核销券处理 | ||||
| WxPayOrder payOrderQ = new WxPayOrder(); | WxPayOrder payOrderQ = new WxPayOrder(); | ||||
| payOrderQ.setOrderId(order.getId()); | payOrderQ.setOrderId(order.getId()); | ||||
| @@ -1259,7 +1259,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| } | } | ||||
| if (unPayOrder.getPosPayOrderId() != null) { | if (unPayOrder.getPosPayOrderId() != null) { | ||||
| try { | try { | ||||
| wxCouponOrderService.microPayVerify(user, unPayOrder.getPosPayOrderId()); | |||||
| wxCouponOrderService.microPayVerify(user, unPayOrder.getPosPayOrderId(),payWay); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error(e.getMessage()); | logger.error(e.getMessage()); | ||||
| } | } | ||||
| @@ -1040,7 +1040,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { | |||||
| } | } | ||||
| String partnerKey = payAccount.getApiKey(); | String partnerKey = payAccount.getApiKey(); | ||||
| try { | try { | ||||
| if (payWay == EnumPayWay.PAY_WAY_WEAPP) { | |||||
| if (payWay.getType() == EnumPayWay.EnumPayWayType.WX_MINIPAY) { | |||||
| if (!"SUCCESS".equals(paramMap.get("return_code"))) { | if (!"SUCCESS".equals(paramMap.get("return_code"))) { | ||||
| logger.warn("notify refund, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); | logger.warn("notify refund, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); | ||||
| SortedMap resultMap = new TreeMap(); | SortedMap resultMap = new TreeMap(); | ||||
| @@ -1131,7 +1131,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { | |||||
| } | } | ||||
| String partnerKey = payAccount.getApiKey(); | String partnerKey = payAccount.getApiKey(); | ||||
| try { | try { | ||||
| if (payWay == EnumPayWay.PAY_WAY_WEAPP) { | |||||
| if (payWay.getType() == EnumPayWay.EnumPayWayType.WX_MINIPAY) { | |||||
| if (!"SUCCESS".equals(paramMap.get("return_code"))) { | if (!"SUCCESS".equals(paramMap.get("return_code"))) { | ||||
| logger.warn("notify order, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); | logger.warn("notify order, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); | ||||
| SortedMap resultMap = new TreeMap(); | SortedMap resultMap = new TreeMap(); | ||||
| @@ -255,7 +255,7 @@ public class WxSubsidyServiceImpl implements WxSubsidyService { | |||||
| } | } | ||||
| String partnerKey = payAccount.getApiKey(); | String partnerKey = payAccount.getApiKey(); | ||||
| try { | try { | ||||
| if (payWay == EnumPayWay.PAY_WAY_WEAPP) { | |||||
| if (payWay.getType() == EnumPayWay.EnumPayWayType.WX_MINIPAY) { | |||||
| boolean signVerified = false; | boolean signVerified = false; | ||||
| if (isNormal) { | if (isNormal) { | ||||
| // 普通商户号支付 | // 普通商户号支付 | ||||
| @@ -16,10 +16,10 @@ import com.iformall.service.pay.entity.PayShareResult; | |||||
| public interface PayShareAdapterService { | public interface PayShareAdapterService { | ||||
| /** | /** | ||||
| * 账单类型 | |||||
| * 账单类型, 对账单类型 | |||||
| * @return | * @return | ||||
| */ | */ | ||||
| public Integer getType(); | |||||
| public Integer getSubsidyType(); | |||||
| /** | /** | ||||
| * 分账类型 | * 分账类型 | ||||
| @@ -30,7 +30,7 @@ import lombok.extern.slf4j.Slf4j; | |||||
| public class WxPayShareService extends PayShareBaseAdapterService{ | public class WxPayShareService extends PayShareBaseAdapterService{ | ||||
| @Override | @Override | ||||
| public Integer getType() { | |||||
| public Integer getSubsidyType() { | |||||
| return EnumMerchantSubsidyType.WECHAT.getCode(); | return EnumMerchantSubsidyType.WECHAT.getCode(); | ||||
| } | } | ||||
| @@ -244,25 +244,25 @@ public class DataInitController extends BaseController { | |||||
| @Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
| public void microPayFenzhang() { | public void microPayFenzhang() { | ||||
| // 1. 获取收银台未分账支付订单 | // 1. 获取收银台未分账支付订单 | ||||
| WxPayOrder payOrderQ = new WxPayOrder(); | |||||
| payOrderQ.updateTenantInfo(new TenantEntity(){{ | |||||
| setTenantId("1008"); | |||||
| }}); | |||||
| List<WxPayOrder> payOrders = wxPayOrderMapper.findListForUnPs(payOrderQ); | |||||
| for(WxPayOrder payOrder: payOrders) { | |||||
| TenantEntity tenantEntity = payOrder; | |||||
| Long orderId = payOrder.getOrderId(); | |||||
| Long payOrderId = payOrder.getId(); | |||||
| // 2. 分账 | |||||
| logger.info("收银台订单分账开始: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||||
| try { | |||||
| wxOrderService.shareForMicroPay(tenantEntity, orderId, payOrderId); | |||||
| } catch (MallinkException e) { | |||||
| logger.error("收银台订单分账失败: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||||
| logger.error("收银台订单分账失败: " + e.getMessage()); | |||||
| } | |||||
| logger.info("收银台订单分账结束: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||||
| } | |||||
| // WxPayOrder payOrderQ = new WxPayOrder(); | |||||
| // payOrderQ.updateTenantInfo(new TenantEntity(){{ | |||||
| // setTenantId("1008"); | |||||
| // }}); | |||||
| // List<WxPayOrder> payOrders = wxPayOrderMapper.findListForUnPs(payOrderQ); | |||||
| // for(WxPayOrder payOrder: payOrders) { | |||||
| // TenantEntity tenantEntity = payOrder; | |||||
| // Long orderId = payOrder.getOrderId(); | |||||
| // Long payOrderId = payOrder.getId(); | |||||
| // // 2. 分账 | |||||
| // logger.info("收银台订单分账开始: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||||
| // try { | |||||
| // wxOrderService.shareForMicroPay(tenantEntity, orderId, payOrderId); | |||||
| // } catch (MallinkException e) { | |||||
| // logger.error("收银台订单分账失败: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||||
| // logger.error("收银台订单分账失败: " + e.getMessage()); | |||||
| // } | |||||
| // logger.info("收银台订单分账结束: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||||
| // } | |||||
| } | } | ||||
| private void addBirthDayMsgModelToMall(EnumMsgModel type, IdWorker idWorker, String content) { | private void addBirthDayMsgModelToMall(EnumMsgModel type, IdWorker idWorker, String content) { | ||||
| @@ -66,14 +66,14 @@ public class MicropayController extends BaseController { | |||||
| if (payOrderList.size() > 0) { | if (payOrderList.size() > 0) { | ||||
| // 查询支付订单状态 | // 查询支付订单状态 | ||||
| for (WxPayOrder payOrder : payOrderList) { | for (WxPayOrder payOrder : payOrderList) { | ||||
| try { | |||||
| ResultData resultData = payOrderService.payOrderQuery(bUser, payOrder); | |||||
| logger.info(resultData.toString()); | |||||
| } catch (MallinkException e) { | |||||
| logger.error("payment wechat, order query error, req 2: " + payOrder.toString() + ", e:" + e.getMessage()); | |||||
| } catch (Exception e) { | |||||
| logger.error("payment wechat, order query error, req 3: " + payOrder.toString() + ", e:" + e.getMessage()); | |||||
| } | |||||
| // try { | |||||
| // ResultData resultData = payOrderService.payOrderQuery(bUser, payOrder); | |||||
| // logger.info(resultData.toString()); | |||||
| // } catch (MallinkException e) { | |||||
| // logger.error("payment wechat, order query error, req 2: " + payOrder.toString() + ", e:" + e.getMessage()); | |||||
| // } catch (Exception e) { | |||||
| // logger.error("payment wechat, order query error, req 3: " + payOrder.toString() + ", e:" + e.getMessage()); | |||||
| // } | |||||
| } | } | ||||
| } else { | } else { | ||||
| // 无支付订单, 直接标记订单已取消 | // 无支付订单, 直接标记订单已取消 | ||||