From 68c0999ce6f47c25540b14176f58d6ab86acea85 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Tue, 7 Sep 2021 19:13:44 +0800 Subject: [PATCH 001/171] fix order --- .../controller/market/WxOrderController.java | 2 +- .../db/migration/V202109070001__order.sql | 116 ++++ .../WxCouponPasswordController.java | 2 +- .../controller/WxOrderController.java | 169 +----- .../domain/dto/OrderComposeSaveDto.java | 20 + .../iformall/domain/po/WxComposeOrder.java | 43 ++ .../java/com/iformall/domain/po/WxOrder.java | 3 + .../iformall/mapper/WxComposeOrderMapper.java | 13 + .../com/iformall/service/WxOrderService.java | 14 +- .../service/impl/WxGameServiceImpl.java | 12 +- .../service/impl/WxOrderServiceImpl.java | 543 ++++++++++-------- .../resources/mapper/WxComposeOrderMapper.xml | 156 +++++ .../main/resources/mapper/WxOrderMapper.xml | 7 +- 13 files changed, 710 insertions(+), 390 deletions(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql create mode 100644 mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxComposeOrder.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxComposeOrderMapper.java create mode 100644 mallinkService/src/main/resources/mapper/WxComposeOrderMapper.xml diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java index 2f3e2bf10..4a365d672 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java @@ -188,7 +188,7 @@ public class WxOrderController extends BaseController { return new ResultData(ErrorCode.COUPON_IS_NOT_FREE); } // 免费券 - order = wxOrderService.saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,EnumPayWay.PAY_WAY_NOT_UNPAY_CREDIT); + order = wxOrderService.saveFreeOrderForCoupon(null,user, coupon, 1,orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,EnumPayWay.PAY_WAY_NOT_UNPAY_CREDIT); return new ResultData(order); } catch (MallinkException e) { logger.error(e.getMessage()); diff --git a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql new file mode 100644 index 000000000..e1d8f3666 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql @@ -0,0 +1,116 @@ +CREATE TABLE `wx_compose_order` ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(5) NOT NULL, + `parent_tenant_id` varchar(5) DEFAULT NULL, + `c_user_id` bigint(20) DEFAULT NULL, + `payment_type` smallint(2) DEFAULT NULL COMMENT '0: 付款 1: 退款 2:自动退款 3:A端退款', + `payment` int(11) DEFAULT NULL COMMENT '支付金额:允许有负数,退款时为负值。', + `payment_time` datetime DEFAULT NULL, + `order_status` smallint(2) DEFAULT NULL COMMENT '订单状态:0-待付款;1-已支付;2-已取消(限定时间内未付款);3-待退款;4-已退款;5-退款失败 砍价:6-砍价中,7-砍价完成,8-砍价已过期,9-砍价已取消,10拼团中11拼团成功12拼团超已过期13拼团失败', + `create_date` datetime DEFAULT NULL, + `update_date` datetime DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + + + +ALTER TABLE wx_order_0 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_1 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_2 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_3 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_4 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_5 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_6 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_7 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_8 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_9 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_10 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_11 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_12 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_13 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_14 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_15 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_16 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_17 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_18 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_19 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_20 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_21 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_22 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_23 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_24 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_25 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_26 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_27 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_28 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_29 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_30 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_31 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_32 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_33 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_34 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_35 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_36 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_37 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_38 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_39 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_40 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_41 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_42 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_43 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_44 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_45 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_46 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_47 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_48 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_49 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_50 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_51 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_52 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_53 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_54 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_55 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_56 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_57 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_58 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_59 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_60 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_61 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_62 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_63 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_64 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_65 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_66 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_67 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_68 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_69 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_70 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_71 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_72 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_73 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_74 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_75 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_76 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_77 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_78 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_79 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_80 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_81 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_82 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_83 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_84 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_85 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_86 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_87 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_88 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_89 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_90 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_91 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_92 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_93 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_94 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_95 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_96 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_97 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_98 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_order_99 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; \ No newline at end of file diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java index 210c690bc..f166f044a 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java @@ -96,7 +96,7 @@ public class WxCouponPasswordController extends BaseController { // 3. 领取free coupon try { - WxOrder order = orderService.saveFreeOrderForCoupon(member, coupon, null, formId, couponPassword.getId(),payWay); + WxOrder order = orderService.saveFreeOrderForCoupon(null,member, coupon, 1,null, formId, couponPassword.getId(),payWay); } catch (MallinkException e) { setCouponPasswordStatus(couponPassword, EnumCouponPasswordStatus.getEnum(pwdStatus)); logger.error(e.getMessage(),e); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 39fb2c8ec..1a8e69da1 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; +import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity; @@ -32,6 +33,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; import java.util.Date; +import java.util.List; import java.util.Map; @RestController @@ -59,171 +61,30 @@ public class WxOrderController extends BaseController { @Autowired RedisLock redisLock; - @ApiOperation(value = "下订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") - @PostMapping("save") - public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { + @ApiOperation(value = "多个券多个数量组合下订单", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") + @PostMapping("composeSave") + public ResultData saveOrder(@RequestBody List orderSaveDto) { Long memberId; try { memberId = getMemberId(); } catch (Exception e) { return new ResultData(Result.ERROR,e.getMessage()); } - return wxOrderService.saveOrder(orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + return wxOrderService.composeSaveOrder(orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); } -// private ResultData saveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay) { -// logger.info("OrderSave: " + orderSaveDto); -// if (orderSaveDto.getCouponChannelId() == null) { -// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId不能为空"); -// } -// WxCouponChannel wxCouponChannel = wxCouponChannelService.getById(orderSaveDto.getCouponChannelId(),getTenantInfo().getTenantId()); -// if (wxCouponChannel == null) { -// logger.error("couponChannelId find error, " + orderSaveDto.getCouponChannelId()); -// return new ResultData(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF); -// } -// ResultData resultData = couponChannelCheck(orderSaveDto, wxCouponChannel); -// if (resultData != null) return resultData; -// -// WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(cUserId,getFinalTenantId()); -// if (wxCUserBasicInfo != null && wxCUserBasicInfo.getStatus().equals(EnumCUserBasicInfoStatus.LOCKED.getCode())) { -// logger.info("会员权益被锁定:cUserId:" + cUserId); -// return new ResultData(ErrorCode.MEMBER_IS_LOCKED); -// } -// -// WxCoupon coupon = wxCouponService.getById(wxCouponChannel.getCouponId(),wxCouponChannel.getTenantId()); -// if (null == coupon) { -// return new ResultData(ErrorCode.COUPON_IS_EMPTY); -// } -// if (coupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode())) { -// return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); -// } -// //判断是否是拼团订单,如果是拼团订单,判断现在进行中的,和已完成的数量是否超出券的限制 -// if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { -// int ordercount = wxOrderService.countUserCouponGroupOrder(cUserId,coupon.getId(),coupon.getTenantId()); -// if (ordercount>=coupon.getUseLimitQuantity()) { -// return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF.getCode(),"您当前此券的有效拼团数量达到券的限购次数。"); -// } -// } -// -// WxCouponCVo wxCouponCVo = null; -// -// String key = "cc:" + orderSaveDto.getCouponChannelId(); -// ValueOperations operations = cdRedisTemplate.opsForValue(); -// // 缓存 -// boolean hasKey = cdRedisTemplate.hasKey(key); -// if (hasKey) { -// // 从缓存获取用户信息 -// wxCouponCVo = operations.get(key); -// } else { -// // 游戏没有入缓存,需要从数据库中读取 -// wxCouponCVo = wxCouponChannelService.findDetailVo(orderSaveDto.getCouponChannelId(),wxCouponChannel.getTenantId()); -// if (wxCouponCVo != null) { -// // 游戏优化,进缓存 -// cdRedisTemplate.opsForValue().set(key, wxCouponCVo, 3600, TimeUnit.SECONDS); -// } -// } -// if (wxCouponCVo == null) { -// return new ResultData(ErrorCode.COUPON_IS_EMPTY); -// } -// -// //此处判断是否存在绝对保证库存不超卖的缓存,如果没有,则把当前的库存设置为最大值。如果有,则是后台设置的时候保存的,以那个为准。 -// boolean hascache = redisLock.hasCouponStockCache(wxCouponCVo.getCouponId()); -// if (!hascache) { -// long time = System.currentTimeMillis() + RedisLock.TIMEOUT; -// String timeStr = String.valueOf(time); -// boolean stocksetlock = redisLock.lock("couponLockStockSetByOrder_"+coupon.getId(), timeStr); -// if (stocksetlock) { -// try { -// if (!redisLock.hasCouponStockCache(wxCouponCVo.getCouponId())) { -// redisLock.setCouponStock(wxCouponCVo.getCouponId(), coupon.getRemainInventory()); -// } -// }catch(Exception e) { -// logger.error("save order stock cache error.",e); -// }finally { -// redisLock.unlock("couponLockStockSetByOrder_"+coupon.getId(), timeStr); -// } -// }else { -// redisLock.unlock("couponLockStockSetByOrder_"+coupon.getId(), timeStr); -// } -// } -// -// resultData = couponUserCheck(wxCUserBasicInfo, wxCouponCVo); -// if (resultData != null) return resultData; -// -// Long couponId = orderSaveDto.getCouponId() == null ? wxCouponChannel.getCouponId() : orderSaveDto.getCouponId(); -// if (couponId == null) { -// logger.error("couponChannelId或者couponId不能为空"); -// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId或者couponId不能为空"); -// } -// // 是否砍价 -// boolean isPress = orderSaveDto.getPress() != null ? orderSaveDto.getPress() : false; -// +// @ApiOperation(value = "单个券单个数量下订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") +// @PostMapping("save") +// public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { +// Long memberId; // try { -// WxOrder order = wxOrderService.saveOrderForCoupon(wxCUserBasicInfo, coupon, orderSaveDto, isPress,payWay); -// return new ResultData(order); -// } catch (MallinkException e) { -// logger.error(e.getMessage()); -// return new ResultData(e.getErrorCode(), e.getMessage()); -// } catch (Exception e) { -// logger.error(e.getMessage()); -// return new ResultData(ErrorCode.ORDER_IS_FAIL, e.getMessage()); -// } +// memberId = getMemberId(); +// } catch (Exception e) { +// return new ResultData(Result.ERROR,e.getMessage()); +// } +// return wxOrderService.saveOrder(orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); // } -// private ResultData couponUserCheck(WxCUserBasicInfo user, WxCouponCVo coupon) { -// if (coupon.getConditions() == null) return null; -// JSONObject jo = null; -// try { -// jo = JSONObject.parseObject(coupon.getConditions()); -// } catch (Exception e) { -// logger.error("购买券条件判断错误:ID=" + coupon.getId() + e.getMessage()); -// } -// if (jo != null) { -// if (jo.getIntValue("type") == EnumCouponConditionType.NEW_MEMBER.getCode()){ -// -// if (user != null && user.getActRecord() > 0) -// return new ResultData(ErrorCode.COUPON_ONLY_FOR_NEW_MEMBER); -// if (wxOrderService.countCouponConditionType1(coupon.getTenantId(),user.getId()) > 0) -// return new ResultData(ErrorCode.COUPON_ALREADY_IN_NEW_MEMBER); -// }else if (jo.getIntValue("type") == EnumCouponConditionType.SCORE_SCOPE.getCode()){ -// int max = jo.getIntValue("max"); -// int min = jo.getIntValue("min"); -// -// if (max!=0 && min ==0 && user.getPoins() > max) { -// return new ResultData(ErrorCode.COUPON_SCORE_NOT_IN_RANGE); -// } -// if (max==0 && min !=0 && user.getPoins() < min) { -// return new ResultData(ErrorCode.COUPON_SCORE_NOT_IN_RANGE); -// } -// if (max!=0 && min !=0 && (user.getPoins() < min || user.getPoins() > max)) { -// return new ResultData(ErrorCode.COUPON_SCORE_NOT_IN_RANGE); -// } -// } -// } -// -// return null; -// } - -// private ResultData couponChannelCheck(@RequestBody OrderSaveDto orderSaveDto, WxCouponChannel wxCouponChannel) { -// if (wxCouponChannel.getTargetAd().equals(EnumCouponChannelType.COUPON_CHANNEL_ID_TIMED.getCode())) { -// Date now = new Date(); -// if (wxCouponChannel.getBeginTime().getTime() > now.getTime()) { -// logger.error("此券活动未开始:" + orderSaveDto.getCouponChannelId()); -// return new ResultData(ErrorCode.COUPON_CHANNEL_IS_NOT_STARTED); -// } -// if (wxCouponChannel.getEndTime().getTime() < now.getTime()) { -// logger.error("此券活动已结束:" + orderSaveDto.getCouponChannelId()); -// return new ResultData(ErrorCode.COUPON_CHANNEL_IS_END); -// } -// } -// -// if (wxCouponChannel.getStatus() == EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode()) { -// logger.error("此券已下架:" + orderSaveDto.getCouponChannelId()); -// return new ResultData(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF); -// } -// return null; -// } - @ApiOperation(value = "取消订单", notes = "{\"orderId\":\"string\"}") @PostMapping("cancel") public ResultData cancelOrder(@RequestBody Map paramMap) { diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java new file mode 100644 index 000000000..aeaa052a6 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java @@ -0,0 +1,20 @@ +package com.iformall.domain.dto; + +import lombok.Data; + +import java.io.Serializable; + +import com.iformall.domain.po.WxCoupon; + +@Data +public class OrderComposeSaveDto implements Serializable { + + private static final long serialVersionUID = 1L; + + OrderSaveDto signleOrder;//单个券/实物商品 + + int count;//购买数量 + + WxCoupon wxCoupon; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxComposeOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxComposeOrder.java new file mode 100644 index 000000000..3be038488 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxComposeOrder.java @@ -0,0 +1,43 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import java.util.Date; +import java.util.List; + +@TableName(value = "wx_compose_order") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxComposeOrder extends TenantEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="c端用户id",name="cUserId") + private Long cUserId; + @io.swagger.annotations.ApiModelProperty(value="0: 付款 1: 退款",name="paymentType") + private Integer paymentType; + @io.swagger.annotations.ApiModelProperty(value="支付金额(分):允许有负数,退款时为负值。",name="payment") + private Integer payment; + @io.swagger.annotations.ApiModelProperty(value="支付时间",name="paymentTime") + private Date paymentTime; + + @io.swagger.annotations.ApiModelProperty(value="订单状态:-1全部;正向交易:0-已下单/待付款;1-已支付;2-已取消(限定时间内未付款)反向交易:3-已退款; 4-退款失败,5-退款失败; 砍价:6-砍价中,7-砍价完成,8-砍价失败",name="orderStatus") + private Integer orderStatus; + @TableField(exist = false) + protected List statusS; + + @io.swagger.annotations.ApiModelProperty(value="创建时间/砍价开始时间",name="createDate") + private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") + private Date updateDate; +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java index b890d3cf9..87ffe71fa 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java @@ -93,6 +93,9 @@ public class WxOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="总计支付金额(分),收银台用券时使用",name="totalPayment") private Integer totalPayment; + + @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="composeOrderId") + private Long composeOrderId; @TableField(exist = false) protected List statusS; diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxComposeOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxComposeOrderMapper.java new file mode 100644 index 000000000..7b3c0cd29 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxComposeOrderMapper.java @@ -0,0 +1,13 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxComposeOrder; +import org.apache.ibatis.annotations.Param; + +public interface WxComposeOrderMapper extends CommonMapper { + + WxComposeOrder selectById(@Param("id")Long id,@Param("tenantId")String tenantId); + + void updateStatusByOrderGroupId(WxComposeOrder order); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 4c770ebd4..3cb35b11f 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -8,8 +8,10 @@ import javax.servlet.http.HttpServletResponse; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; +import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxComposeOrder; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponOrder; import com.iformall.domain.po.WxMerchant; @@ -192,7 +194,7 @@ public interface WxOrderService { * @param coupon * @return */ - WxOrder saveOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress,EnumPayWay payWay); + WxComposeOrder saveOrderForCoupon(WxCUserBasicInfo user, List orderSave,EnumPayWay payWay); void sendOrderSuccessActionMsg(WxOrder updateOrder); /** @@ -211,10 +213,10 @@ public interface WxOrderService { boolean checkCouponIsFree(WxCoupon coupon); // 2. 创建免费订单, 领取 couponOrder - WxOrder saveFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay); + WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay); // 3. 创建有价订单 - WxOrder saveNoFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId); + WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, boolean isPress, Long orderGroupId, String formId); /** * 下订单成功后处理 @@ -237,8 +239,10 @@ public interface WxOrderService { int countGroupOrder(Long groupId,boolean ignoreUnPay,String tenantId); - int countUserCouponGroupOrder(Long cuserId,Long couponId,String tenantId); + int countUserCouponGroupOrder(WxCUserBasicInfo wxCUserBasicInfo,Long couponId,String tenantId); - ResultData saveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); + //ResultData saveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); + + ResultData composeSaveOrder(List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java index a723be87c..b994c4c2e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java @@ -10,6 +10,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; +import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; @@ -72,7 +73,7 @@ public class WxGameServiceImpl implements WxGameService { @Autowired private WxOrderService wxOrderService; - + @Autowired @Qualifier("couponDetailRedisTemplate") RedisTemplate cdRedisTemplate; @@ -444,6 +445,7 @@ public class WxGameServiceImpl implements WxGameService { Object data = resultData.data; Long orderId = 0L; Integer addCredit = 0; + if(data != null){ logger.info("userId:"+userId+",中奖了,"+data.toString()); if(data instanceof WxCouponChannelVo){ @@ -451,7 +453,13 @@ public class WxGameServiceImpl implements WxGameService { OrderSaveDto orderSaveDto = new OrderSaveDto(); orderSaveDto.setCouponChannelId(vo.getId()); orderSaveDto.setCouponId(vo.getCouponId()); - ResultData resultData1 = wxOrderService.saveOrder(orderSaveDto, userId, EnumPayWay.PAY_WAY_WECHAT, wxGame); + + List orderSave = new ArrayList(); + OrderComposeSaveDto ocsd = new OrderComposeSaveDto(); + ocsd.setSignleOrder(orderSaveDto); + ocsd.setCount(1); + orderSave.add(ocsd); + ResultData resultData1 = wxOrderService.composeSaveOrder(orderSave, userId, EnumPayWay.PAY_WAY_WECHAT, wxGame); if(resultData1.code == Result.SUCCESS && resultData1.data != null && resultData1.data instanceof WxOrder){ WxOrder order = (WxOrder)resultData1.data; 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 eb4a66030..6a9ff2b6d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -22,6 +22,7 @@ import com.iformall.service.*; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.aop.framework.AopContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.redis.core.RedisTemplate; @@ -39,11 +40,13 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; +import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.dto.WxSharingOrderDto; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCardInfo; +import com.iformall.domain.po.WxComposeOrder; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.po.WxCouponMerchant; @@ -65,6 +68,7 @@ import com.iformall.mapper.WxAppinfoMapper; import com.iformall.mapper.WxCUserBasicInfoMapper; import com.iformall.mapper.WxCUserMapper; import com.iformall.mapper.WxCardInfoMapper; +import com.iformall.mapper.WxComposeOrderMapper; import com.iformall.mapper.WxCouponChannelMapper; import com.iformall.mapper.WxCouponMapper; import com.iformall.mapper.WxCouponMerchantMapper; @@ -191,11 +195,14 @@ public class WxOrderServiceImpl implements WxOrderService { @Autowired WxCouponChannelService wxCouponChannelService; + + @Autowired + WxComposeOrderMapper wxComposeOrderMapper; @Autowired @Qualifier("couponDetailRedisTemplate") RedisTemplate cdRedisTemplate; - + @Override public PageInfo listAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findList(record)); @@ -346,8 +353,8 @@ public class WxOrderServiceImpl implements WxOrderService { orderQ.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING.getCode()); return wxOrderMapper.countList(orderQ); } catch (Exception e) { - logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.ORDER_IS_FAIL); + logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage(),e); + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"["+counpon.getTitle()+"]查询拼团中订单错误."+e.getMessage()); } } @@ -376,8 +383,8 @@ public class WxOrderServiceImpl implements WxOrderService { orderQ.setStatusS(statusS); return wxOrderMapper.countList(orderQ); } catch (Exception e) { - logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.ORDER_IS_FAIL); + logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage(),e); + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"["+counpon.getTitle()+"]查询待支付错误."+e.getMessage()); } } @@ -477,8 +484,8 @@ public class WxOrderServiceImpl implements WxOrderService { // } return wxCouponOrderMapper.findCount(couponOrderQ); } catch (Exception e) { - logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.ORDER_IS_FAIL); + logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage(),e); + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"["+counpon.getTitle()+"]查询待使用订单错误."); } } @@ -564,7 +571,8 @@ public class WxOrderServiceImpl implements WxOrderService { * @param coupon * @param couponIdStr */ - private void stockReduce(WxCUserBasicInfo user, WxCoupon coupon, String couponIdStr) { + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void stockReduce(WxCUserBasicInfo user, WxCoupon coupon, String couponIdStr,int number) { //如果缓存中不存在这个key,则从coupon中取 if(!redisLock.hasCouponStockCache(coupon.getId())) { //此处需要加锁,防止并发设置 @@ -595,11 +603,11 @@ public class WxOrderServiceImpl implements WxOrderService { long redisStock = redisLock.getCouponStock(Long.parseLong(couponIdStr)); if (redisStock<=0) { - throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"券库存已为零!:"+couponIdStr); + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"券库存已为零!:"+coupon.getTitle()+"["+couponIdStr+"]"); } // 检查 优惠券 库存 if (coupon.getRemainInventory() <= 0) { - throw new MallinkException(ErrorCode.REMAIN_IS_EMPTY); + throw new MallinkException(ErrorCode.REMAIN_IS_EMPTY.getCode(),coupon.getTitle()+"["+couponIdStr+"]库存不足"); } int count = 0; @@ -609,42 +617,42 @@ public class WxOrderServiceImpl implements WxOrderService { try { count = getUserOrderCount(user, coupon); } catch (Exception e) { - throw new MallinkException(ErrorCode.DB_FAIL); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(),"["+coupon.getTitle()+"]查询未支付订单失败."); } if (count > 0) { logger.error("此券有未支付的订单, couponId: " + couponIdStr + ", count: " + count); - throw new MallinkException(ErrorCode.ORDER_UNPAID); + throw new MallinkException(ErrorCode.ORDER_UNPAID.getCode(),"["+coupon.getTitle()+"]您有未支付的订单."); } } //检查拼团中的数量 try { count = getUserOrderGroupCount(user, coupon); } catch (Exception e) { - throw new MallinkException(ErrorCode.DB_FAIL); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(),"["+coupon.getTitle()+"]查询拼团中订单错误."); } if (count >= coupon.getUseLimitQuantity()) { logger.error("此券购买数量已超限, couponId: " + couponIdStr + ", count: " + count); - throw new MallinkException(ErrorCode.ORDER_IS_LIMITED); + throw new MallinkException(ErrorCode.ORDER_IS_LIMITED.getCode(),"["+coupon.getTitle()+"]购买超限."); } // 检查用户已购买数量 try { count = getUserCouponOrderCount(user, coupon); } catch (Exception e) { - throw new MallinkException(ErrorCode.DB_FAIL); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(),"["+coupon.getTitle()+"]查询待使用订单错误."); } if (count >= coupon.getUseLimitQuantity()) { logger.error("此券购买数量已超限, couponId: " + couponIdStr + ", count: " + count); - throw new MallinkException(ErrorCode.ORDER_IS_LIMITED.getCode(),"此券购买数量已超限, couponId: " + couponIdStr + ", count: " + count); + throw new MallinkException(ErrorCode.ORDER_IS_LIMITED.getCode(),"此券购买数量已超限["+coupon.getTitle()+"], couponId: " + couponIdStr + ", count: " + count); } try { - //减库存,从redis中取,然后发mq消息同步到数据库 - wxCouponService.reduceRemainInventory(coupon.getId(),coupon.getTenantId(), 1); + //减库存, + wxCouponService.reduceRemainInventory(coupon.getId(),coupon.getTenantId(), number); - long stock = redisLock.decrease(EnumCacheKey.COUPON_STOCK.getMessage()+coupon.getId(), 1); + long stock = redisLock.decrease(EnumCacheKey.COUPON_STOCK.getMessage()+coupon.getId(), number); if (stock < 0 ) { - throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"券库存已为零!"); + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"券["+coupon.getTitle()+"]库存已为零!"); } @@ -656,7 +664,7 @@ public class WxOrderServiceImpl implements WxOrderService { // mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.STOCK.getCode(), "*", "decrease_stock_"+coupon.getId()); } catch (RuntimeException e) { logger.error("此券减库存失败, couponId: " + couponIdStr,e); - throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),e.getMessage()); + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"券["+coupon.getTitle()+"]库存更新失败!"+e.getMessage()); } } @@ -966,7 +974,8 @@ public class WxOrderServiceImpl implements WxOrderService { * @param order * @param coupon */ - private WxCouponOrder createCouponOrder(WxOrder order, WxCUserBasicInfo user, WxCoupon coupon, Long couponPasswordId,EnumPayWay payWay,Long merchantId,Long bUserId) { + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public WxCouponOrder createCouponOrder(WxOrder order, WxCUserBasicInfo user, WxCoupon coupon, Long couponPasswordId,EnumPayWay payWay,Long merchantId,Long bUserId) { Date curr = new Date(); Date valid_date = null; int limit_days = Constant.WX_LIMIT_DAYS; @@ -1269,7 +1278,7 @@ public class WxOrderServiceImpl implements WxOrderService { } else { // 减库存操作 try { - stockReduce(user, coupon, couponIdStr); + stockReduce(user, coupon, couponIdStr,1); }catch(Exception e) { throw new MallinkException(ErrorCode.COUPON_STOCK_ERR.getCode(), e.getMessage()); } @@ -1958,74 +1967,119 @@ public class WxOrderServiceImpl implements WxOrderService { @Qualifier("cUserBasicInfoRedisTemplate") RedisTemplate cUserBasicInfoRedisTemplate; + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override - public WxOrder saveOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress,EnumPayWay payWay) { - WxOrder order = null; - // 防止同一用户重复抽奖(一分钟内) - // 1. 订单保存时 加入redis缓存,key --> action:userId:couponId , 时间1000ms - // 2. 如果存在,说明该用户正在下单,返回异常提示 - // 3. 方法结束时清除 key - if (checkCouponIsFree(coupon)) { - // 免费券 - String key = StringUtils.join("action", ":", user.getId(), coupon.getId()); - boolean hasKey = cUserBasicInfoRedisTemplate.hasKey(key); - if (hasKey) { - logger.error("用户正在下单,请求异常返回,user: {} " + JSON.toJSONString(user)); - throw new MallinkException(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION); - } - cUserBasicInfoRedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS); - - order = saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,payWay); - if (order != null) { - // 6. 下订单完成,发送内部消息 - // 下订单完成,发送内部消息 - try { - sendOrderSuccessActionMsg(order); - } catch (Exception e) { - logger.error("内部消息发送失败: " + e.getMessage()); - throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); + public WxComposeOrder saveOrderForCoupon(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { + + WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); + + // 防止同一用户重复下单,1秒内 + String key = new StringBuilder().append("saveorder:").append(user.getId()).toString(); + boolean hasKey = cUserBasicInfoRedisTemplate.hasKey(key); + if (hasKey) { + logger.error("用户正在下单,请求异常返回,user: {} " + JSON.toJSONString(user)); + throw new MallinkException(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION); + } + cUserBasicInfoRedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS); + + WxComposeOrder composeOrder = createWxComposeOrder(user, orderSave, payWay); + + for (int i = 0 ; i < orderSave.size(); i ++) { + OrderComposeSaveDto orderdto = orderSave.get(i); + // 是否砍价 + boolean isPress = orderdto.getSignleOrder().getPress() != null ? orderdto.getSignleOrder().getPress() : false; + WxOrder order = null; + if (checkCouponIsFree(orderdto.getWxCoupon())) { + // 免费券 + order = proxy.saveFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),orderdto.getCount(), orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), null,payWay); + if (order != null) { + // 6. 下订单完成,发送内部消息 + // 下订单完成,发送内部消息 + try { + proxy.sendOrderSuccessActionMsg(order); + } catch (Exception e) { + logger.error("内部消息发送失败: " + e.getMessage(),e); + throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); + } } + } else { + // 有价券 + order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),orderdto.getCount(), orderdto.getSignleOrder().getCouponChannelId(), isPress, orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId()); } - } else { - // 有价券 - order = saveNoFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), isPress, orderSaveDto.getOrderGroupId(), orderSaveDto.getFormId()); + // couponActionLog +// try { +// wxCouponActionLogService.addOne(order, order.getProductId(), order.getOrderNumber(), EnumCouponSendSendType.ACTIVE.getCode(), orderdto.getSignleOrder().getCouponChannelId(),0L); +// } catch (Exception e) { +// // 库存恢复 +// stockBack(order); +// logger.error("保存订单:" + e.getMessage()); +// throw new MallinkException(ErrorCode.ORDER_SAVE_ERR); +// } + } + + + return composeOrder; + } + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public WxComposeOrder createWxComposeOrder(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { + WxComposeOrder order =new WxComposeOrder(); + final IdWorker idWorker = IdWorker.get(); + order.setId(idWorker.nextId()); + order.setCUserId(user.getId()); + order.setPaymentType(EnumPayType.PAY_PAYMENT.getCode()); + int payment = 0; + for (OrderComposeSaveDto ocsd : orderSave) { + boolean isPress = ocsd.getSignleOrder().getPress() != null ? ocsd.getSignleOrder().getPress() : false; + payment = payment+getCouponPayment(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId()); + } + order.setPayment(payment); + if (payment > 0 ) { + order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); + }else { + order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); + } + order.setCreateDate(new Date()); + wxComposeOrderMapper.insert(order); + return order; + } + + private int getCouponPayment(WxCoupon coupon,boolean isPress,Long orderGroupId) { + // 4.1 券价格 + int payment = coupon.getSalePrice(); + //Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode(); + if (isPress || coupon.getType().equals(EnumCouponType.COUPON_PRESS.getCode())) { + // 砍价券 初始是全价即面额 + payment = coupon.getPrice(); } - // couponActionLog - try { - wxCouponActionLogService.addOne(order, order.getProductId(), order.getOrderNumber(), EnumCouponSendSendType.ACTIVE.getCode(), orderSaveDto.getCouponChannelId(),0L); - } catch (Exception e) { - // 库存恢复 - stockBack(order); - logger.error("保存订单:" + e.getMessage()); - throw new MallinkException(ErrorCode.ORDER_SAVE_ERR); + if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { + if (orderGroupId == null) { + // 拼团券 初始是全价即面额 + payment = coupon.getPrice(); + } else { + //orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode(); + } } - return order; + return payment; } - + @Override public boolean checkCouponIsFree(WxCoupon coupon) { return coupon.getSalePrice() == 0; } - @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay) { - // 1. check user info and coupon info - userCouponMerchantCheck(user, coupon); - if (coupon.checkIsCreditCoupon()) { - //若用户剩余积分比积分售价低则不能支付 - if (user.getCredit() == null || user.getCredit() < coupon.getCreditPrice()) { - throw new MallinkException(ErrorCode.CREDIT_NOT_ENOUGH); - } - } - // 2. 减库存操作 + @Override + public WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay) { + WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); + // 减库存操作 String couponIdStr = String.valueOf(coupon.getId()); - stockReduce(user, coupon, couponIdStr); + proxy.stockReduce(user, coupon, couponIdStr,couponNumber); - // 3. 当积分券或者积分停车券时 则进行积分支付 + // 当积分券或者积分停车券时 则进行积分支付 Integer orderType; if (coupon.checkIsCreditCoupon()) { - creditPay(user, coupon); + proxy.creditPay(user, coupon); orderType = EnumOrderType.CREDIT.getCode(); } else { orderType = EnumOrderType.COUPON.getCode(); @@ -2040,28 +2094,96 @@ public class WxOrderServiceImpl implements WxOrderService { record.setPayment(0); record.setFormId(formId); record.setOrderGroupId(0L); + if (null != composeOrder) { + record.setComposeOrderId(composeOrder.getId()); + } try { - saveFreeOrder(record, user, coupon); + proxy.saveFreeOrder(record, user, coupon); } catch (Exception e) { - logger.error("下订单:" + e.getMessage()); - throw new MallinkException(ErrorCode.ORDER_SAVE_ERR); + logger.error("下订单错误:" + e.getMessage(),e); + throw new MallinkException(ErrorCode.ORDER_SAVE_ERR.getCode(),"["+coupon.getTitle()+"]保存订单错误."+e.getMessage()); } // 5. 创建couponOrder try { - createCouponOrder(record, user, coupon, couponPasswordId,payWay,null,null); + proxy.createCouponOrder(record, user, coupon, couponPasswordId,payWay,null,null); } catch (Exception e) { logger.error("couponOrder失败:" + e.getMessage(),e); - throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR); + throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR.getCode(),"["+coupon.getTitle()+"]保存券订单错误."+e.getMessage()); } return record; } + @Override + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, boolean isPress, Long orderGroupId, String formId) { + WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); + String couponIdStr = String.valueOf(coupon.getId()); + // 3. 减库存操作 + proxy.stockReduce(user, coupon, couponIdStr,couponNumber); + + // 3. 当积分券或者积分停车券时 则进行积分支付 + Integer orderType; + if (coupon.checkIsCreditCoupon()) { + proxy.creditPay(user, coupon); + orderType = EnumOrderType.CREDIT.getCode(); + } else { + orderType = EnumOrderType.COUPON.getCode(); + } + + // 4. 保存订单 + Long orderNumber; + // 4.1 券价格 + int payment = coupon.getSalePrice(); + Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode(); + if (isPress || coupon.getType().equals(EnumCouponType.COUPON_PRESS.getCode())) { + // 砍价券 初始是全价即面额 + payment = coupon.getPrice(); + } + if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { + if (orderGroupId == null) { + // 拼团券 初始是全价即面额 + payment = coupon.getPrice(); + } else { + orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode(); + } + } + + // 4.2 保存订单 + WxOrder record = new WxOrder(); + record.setType(orderType); + record.setCouponChannelId(couponChannelId); + record.setOrderGroupId(orderGroupId); + record.setFormId(formId); + record.setPayment(payment); + record.setOrderStatus(orderStatus); + if (null != composeOrder) { + record.setComposeOrderId(composeOrder.getId()); + } + try { + orderNumber = proxy.saveNoFreeOrder(record, user, coupon, isPress); + } catch (Exception e) { + logger.error("保存订单:" + e.getMessage(),e); + throw new MallinkException(ErrorCode.ORDER_SAVE_ERR.getCode(),"["+coupon.getTitle()+"]订单保存错误,"+e.getMessage()); + } + + if (isPress) { + // 5. 第一次砍价 + try { + proxy.firstPress(record, user, coupon, orderNumber); + } catch (Exception e) { + logger.error("第一次砍价失败:" + e.getMessage(),e); + throw new MallinkException(ErrorCode.ORDER_SAVE_ERR.getCode(),"["+coupon.getTitle()+"]第一次砍价错误,"+e.getMessage()); + } + } + return record; + } + @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public Long saveOuterOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId) { // 1. check user info and coupon info - userCouponMerchantCheck(user, coupon); + userCouponMerchantCheck(user, coupon,"此券"); if (coupon.checkIsCreditCoupon()) { //若用户剩余积分比积分售价低则不能支付 if (user.getCredit() == null || user.getCredit() < coupon.getCreditPrice()) { @@ -2070,7 +2192,7 @@ public class WxOrderServiceImpl implements WxOrderService { } // 2. 减库存操作 String couponIdStr = String.valueOf(coupon.getId()); - stockReduce(user, coupon, couponIdStr); + stockReduce(user, coupon, couponIdStr,1); // 3. 当积分券或者积分停车券时 则进行积分支付 Integer orderType; @@ -2114,7 +2236,8 @@ public class WxOrderServiceImpl implements WxOrderService { * @param user * @param coupon */ - private void saveFreeOrder(WxOrder record, WxCUserBasicInfo user, WxCoupon coupon) { + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void saveFreeOrder(WxOrder record, WxCUserBasicInfo user, WxCoupon coupon) { Date curr = new Date(); // body String bodyStr = ""; @@ -2140,35 +2263,26 @@ public class WxOrderServiceImpl implements WxOrderService { wxOrderMapper.insert(record); } - private void userCouponMerchantCheck(WxCUserBasicInfo user, WxCoupon coupon) throws MallinkException { - // 检查用户 - if (user == null) { - logger.error("用户不存在"); - throw new MallinkException(ErrorCode.USER_IS_EMPTY); - } + private void userCouponMerchantCheck(WxCUserBasicInfo user, WxCoupon coupon,String premsg) throws MallinkException { // 检查券 if (coupon == null) { logger.error("券不存在"); - throw new MallinkException(ErrorCode.COUPON_IS_EMPTY); - } - // 检查券状态 - if (coupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode())) { - logger.error("券已下架, couponId: " + coupon.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID); + throw new MallinkException(ErrorCode.COUPON_IS_EMPTY.getCode(),premsg+"不存在"); } // 检查券商户信息 if (!isCouponMerchantValid(coupon.getId(),coupon.getTenantId())) { logger.error("商户不存在, couponId: " + coupon.getId()); - throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),premsg+"【"+coupon.getTitle()+"】商户信息没找到"); } // 检查 优惠券 库存 if (coupon.getRemainInventory() <= 0) { logger.error("此券库存为0, couponId: " + coupon.getId()); - throw new MallinkException(ErrorCode.REMAIN_IS_EMPTY); + throw new MallinkException(ErrorCode.REMAIN_IS_EMPTY.getCode(),premsg+"【"+coupon.getTitle()+"】库存不足"); } } - private void creditPay(WxCUserBasicInfo user, WxCoupon coupon) { + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void creditPay(WxCUserBasicInfo user, WxCoupon coupon) { //-------此处为【积分支付】记录增加积分操作------- WxCreditHistory creditHistory = new WxCreditHistory(); creditHistory.setCreditNum(coupon.getCreditPrice()); @@ -2195,79 +2309,7 @@ public class WxOrderServiceImpl implements WxOrderService { wxCreditHistoryService.saveOrUpdate(creditHistory,coupon.getTenantId()); } - @Override - @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveNoFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId) { - // 1. check user info and coupon info - userCouponMerchantCheck(user, coupon); - if (coupon.checkIsCreditCoupon()) { - //若用户剩余积分比积分售价低则不能支付 - if (user.getCredit() == null || user.getCredit() < coupon.getCreditPrice()) { - throw new MallinkException(ErrorCode.CREDIT_NOT_ENOUGH); - } - } - - // 2. 拼团检查 - if (isOrderGroup(orderGroupId)) { - checkOrderGroup(user, orderGroupId,coupon); - } - String couponIdStr = String.valueOf(coupon.getId()); - // 3. 减库存操作 - stockReduce(user, coupon, couponIdStr); - - // 3. 当积分券或者积分停车券时 则进行积分支付 - Integer orderType; - if (coupon.checkIsCreditCoupon()) { - creditPay(user, coupon); - orderType = EnumOrderType.CREDIT.getCode(); - } else { - orderType = EnumOrderType.COUPON.getCode(); - } - // 4. 保存订单 - Long orderNumber; - // 4.1 券价格 - int payment = coupon.getSalePrice(); - Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode(); - if (isPress || coupon.getType().equals(EnumCouponType.COUPON_PRESS.getCode())) { - // 砍价券 初始是全价即面额 - payment = coupon.getPrice(); - } - if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { - if (orderGroupId == null) { - // 拼团券 初始是全价即面额 - payment = coupon.getPrice(); - } else { - orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode(); - } - } - - // 4.2 保存订单 - WxOrder record = new WxOrder(); - record.setType(orderType); - record.setCouponChannelId(couponChannelId); - record.setOrderGroupId(orderGroupId); - record.setFormId(formId); - record.setPayment(payment); - record.setOrderStatus(orderStatus); - try { - orderNumber = saveNoFreeOrder(record, user, coupon, isPress); - } catch (Exception e) { - logger.error("保存订单:" + e.getMessage()); - throw new MallinkException(ErrorCode.ORDER_SAVE_ERR); - } - - if (isPress) { - // 5. 第一次砍价 - try { - firstPress(record, user, coupon, orderNumber); - } catch (Exception e) { - logger.error("第一次砍价失败:" + e.getMessage()); - throw new MallinkException(ErrorCode.ORDER_SAVE_ERR); - } - } - return record; - } /** * 初始砍价 @@ -2277,7 +2319,8 @@ public class WxOrderServiceImpl implements WxOrderService { * @param coupon * @param orderNumber */ - private void firstPress(WxOrder record, WxCUserBasicInfo user, WxCoupon coupon, Long orderNumber) { + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void firstPress(WxOrder record, WxCUserBasicInfo user, WxCoupon coupon, Long orderNumber) { // 保存砍价信息 int total = coupon.getPrice() - coupon.getSalePrice(); int left_total = total; @@ -2302,7 +2345,8 @@ public class WxOrderServiceImpl implements WxOrderService { wxOrderMapper.updateById(orderUpdatePress); } - private Long saveNoFreeOrder(WxOrder record, WxCUserBasicInfo user, WxCoupon coupon, boolean isPress) { + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public Long saveNoFreeOrder(WxOrder record, WxCUserBasicInfo user, WxCoupon coupon, boolean isPress) { Long orderNumber; Date curr = new Date(); @@ -2341,21 +2385,21 @@ public class WxOrderServiceImpl implements WxOrderService { return orderNumber; } - private void checkOrderGroup(WxCUserBasicInfo user, Long orderGroupId,WxCoupon coupon) { + private void checkOrderGroup(WxCUserBasicInfo user, Long orderGroupId,WxCoupon coupon,String premsg) { WxOrderGroup group = wxOrderGroupMapper.selectById(orderGroupId,coupon.getTenantId()); if (group.getStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode())) { logger.error("下订单拼团人数已满>>>" + orderGroupId); - throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FINISHED); + throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FINISHED.getCode(),premsg+"【"+coupon.getTitle()+"】拼团人数已满"); } if (group.getRemainPeople()<=0) { - throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FINISHED.getCode(),"下单人数已满"); + throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FINISHED.getCode(),premsg+"【"+coupon.getTitle()+"】下单人数已满"); } //判断拼团人数是否已经超出限制 int groupCount = countGroupOrder(orderGroupId,true,group.getTenantId()); if (groupCount>=coupon.getPressLimitNum()) { - throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FINISHED.getCode(),"下单人数超出优惠券人数限制!"); + throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FINISHED.getCode(),premsg+"【"+coupon.getTitle()+"】下单人数超出优惠券人数限制!"); } WxOrder order = new WxOrder(); @@ -2365,7 +2409,7 @@ public class WxOrderServiceImpl implements WxOrderService { long count = wxOrderMapper.selectCount(new QueryWrapper(order)); if (count > 0) { logger.error("重复的拼团>>>" + orderGroupId); - throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_UNPAID); + throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_UNPAID.getCode(),premsg+"【"+coupon.getTitle()+"】您有未支付的拼团订单"); } } @@ -2390,9 +2434,9 @@ public class WxOrderServiceImpl implements WxOrderService { } @Override - public int countUserCouponGroupOrder(Long cuserId, Long couponId,String tenantId) { + public int countUserCouponGroupOrder(WxCUserBasicInfo wxCUserBasicInfo, Long couponId,String tenantId) { WxOrder query = new WxOrder(); - query.setCUserId(cuserId); + query.setCUserId(wxCUserBasicInfo.getId()); query.setProductId(couponId); List statusS = new ArrayList(); statusS.add(EnumOrderStatus.ORDER_STATUS_COOPERATING.getCode()); @@ -2404,37 +2448,84 @@ public class WxOrderServiceImpl implements WxOrderService { @Override - public ResultData saveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) { + public ResultData composeSaveOrder(List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) { + logger.info("composeOrderSave: " + composeOrderSaveDto); + //TODO 事务,所有券都购买成功才行 + try { + if (null == composeOrderSaveDto || composeOrderSaveDto.size() <= 0 ) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"无商品信息"); + } + + WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(cUserId,tenantEntity.getFinalTenantId()); + if (wxCUserBasicInfo != null && wxCUserBasicInfo.getStatus().equals(EnumCUserBasicInfoStatus.LOCKED.getCode())) { + logger.info("会员权益被锁定:cUserId:" + cUserId); + return new ResultData(ErrorCode.MEMBER_IS_LOCKED); + } + + boolean singleProduct = false; + if (composeOrderSaveDto.size() == 1) { + singleProduct = true; + } + + for ( int i =0 ; i< composeOrderSaveDto.size(); i++ ) { + OrderComposeSaveDto ocsd = composeOrderSaveDto.get(i); + singleOrderCheck(ocsd,ocsd.getSignleOrder(),ocsd.getCount(),wxCUserBasicInfo,payWay,tenantEntity,i+1,singleProduct); + } + + try { + WxComposeOrder order = this.saveOrderForCoupon(wxCUserBasicInfo, composeOrderSaveDto, payWay); + return new ResultData(order); + } catch (MallinkException e) { + logger.error("saveOrderForCoupon error.",e); + throw new MallinkException(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error("saveOrderForCoupon error.",e); + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), e.getMessage()); + } + + }catch(MallinkException me) { + return new ResultData(me.getErrorCode(),me.getMessage()); + }catch(Exception e) { + logger.error("composeSaveOrder error.",e); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + + + } + + + private void singleOrderCheck(OrderComposeSaveDto ocsd,OrderSaveDto orderSaveDto,int productCount,WxCUserBasicInfo wxCUserBasicInfo,EnumPayWay payWay,TenantEntity tenantEntity,int curindex,boolean singleProduct) { logger.info("OrderSave: " + orderSaveDto); + String premsg = ""; + if (singleProduct) { + premsg = "此券"; + }else { + premsg = "第["+curindex+"]张券"; + } if (orderSaveDto.getCouponChannelId() == null) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId不能为空"); + throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), premsg+"couponChannelId不能为空"); } WxCouponChannel wxCouponChannel = wxCouponChannelService.getById(orderSaveDto.getCouponChannelId(),tenantEntity.getTenantId()); if (wxCouponChannel == null) { logger.error("couponChannelId find error, " + orderSaveDto.getCouponChannelId()); - return new ResultData(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF); - } - ResultData resultData = couponChannelCheck(orderSaveDto, wxCouponChannel); - if (resultData != null) return resultData; - - WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(cUserId,tenantEntity.getFinalTenantId()); - if (wxCUserBasicInfo != null && wxCUserBasicInfo.getStatus().equals(EnumCUserBasicInfoStatus.LOCKED.getCode())) { - logger.info("会员权益被锁定:cUserId:" + cUserId); - return new ResultData(ErrorCode.MEMBER_IS_LOCKED); + throw new MallinkException(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF.getCode(),premsg+"投放渠道不存在"); } + couponChannelCheck(orderSaveDto, wxCouponChannel,premsg); WxCoupon coupon = wxCouponService.getById(wxCouponChannel.getCouponId(),wxCouponChannel.getTenantId()); if (null == coupon) { - return new ResultData(ErrorCode.COUPON_IS_EMPTY); + throw new MallinkException(ErrorCode.COUPON_IS_EMPTY.getCode(),premsg+"不存在"); } if (coupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode())) { - return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); + throw new MallinkException(ErrorCode.COUPON_IS_TAKE_OFF.getCode(),premsg+"【"+coupon.getTitle()+"】已作废"); } + ocsd.setWxCoupon(coupon); + //判断是否是拼团订单,如果是拼团订单,判断现在进行中的,和已完成的数量是否超出券的限制 if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { - int ordercount = this.countUserCouponGroupOrder(cUserId,coupon.getId(),coupon.getTenantId()); - if (ordercount>=coupon.getUseLimitQuantity()) { - return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF.getCode(),"您当前此券的有效拼团数量达到券的限购次数。"); + int ordercount = this.countUserCouponGroupOrder(wxCUserBasicInfo,coupon.getId(),coupon.getTenantId()); + if ((ordercount+productCount)>=coupon.getUseLimitQuantity()) { + throw new MallinkException(ErrorCode.COUPON_IS_TAKE_OFF.getCode(),premsg+"拼团券["+coupon.getTitle()+"]您的有效拼团数量达到券的限购次数。"); } } @@ -2456,7 +2547,7 @@ public class WxOrderServiceImpl implements WxOrderService { } } if (wxCouponCVo == null) { - return new ResultData(ErrorCode.COUPON_IS_EMPTY); + throw new MallinkException(ErrorCode.COUPON_IS_EMPTY.getCode(),premsg+"【"+coupon.getTitle()+"】未查询到详细信息."); } //此处判断是否存在绝对保证库存不超卖的缓存,如果没有,则把当前的库存设置为最大值。如果有,则是后台设置的时候保存的,以那个为准。 @@ -2480,81 +2571,81 @@ public class WxOrderServiceImpl implements WxOrderService { } } - resultData = couponUserCheck(wxCUserBasicInfo, wxCouponCVo); - if (resultData != null) return resultData; + couponUserCheck(wxCUserBasicInfo, wxCouponCVo,premsg); Long couponId = orderSaveDto.getCouponId() == null ? wxCouponChannel.getCouponId() : orderSaveDto.getCouponId(); if (couponId == null) { logger.error("couponChannelId或者couponId不能为空"); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId或者couponId不能为空"); + throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), premsg+"couponChannelId或者couponId不能为空"); } - // 是否砍价 - boolean isPress = orderSaveDto.getPress() != null ? orderSaveDto.getPress() : false; - - try { - WxOrder order = this.saveOrderForCoupon(wxCUserBasicInfo, coupon, orderSaveDto, isPress,payWay); - return new ResultData(order); - } catch (MallinkException e) { - logger.error(e.getMessage()); - return new ResultData(e.getErrorCode(), e.getMessage()); - } catch (Exception e) { - logger.error(e.getMessage()); - return new ResultData(ErrorCode.ORDER_IS_FAIL, e.getMessage()); + + userCouponMerchantCheck(wxCUserBasicInfo, coupon,premsg); + + if (coupon.checkIsCreditCoupon()) { + //若用户剩余积分比积分售价低则不能支付 + if (wxCUserBasicInfo.getCredit() == null || wxCUserBasicInfo.getCredit() < coupon.getCreditPrice()) { + throw new MallinkException(ErrorCode.CREDIT_NOT_ENOUGH.getCode(), premsg+"【"+coupon.getTitle()+"】积分不够扣减值"); + } + } + + if (!checkCouponIsFree(coupon)) { + // 有价,拼团检查 + if (isOrderGroup(ocsd.getSignleOrder().getOrderGroupId())) { + checkOrderGroup(wxCUserBasicInfo, ocsd.getSignleOrder().getOrderGroupId(),coupon,premsg); + } } + } - private ResultData couponChannelCheck(OrderSaveDto orderSaveDto, WxCouponChannel wxCouponChannel) { + private void couponChannelCheck(OrderSaveDto orderSaveDto, WxCouponChannel wxCouponChannel,String premsg) { if (wxCouponChannel.getTargetAd().equals(EnumCouponChannelType.COUPON_CHANNEL_ID_TIMED.getCode())) { Date now = new Date(); if (wxCouponChannel.getBeginTime().getTime() > now.getTime()) { logger.error("此券活动未开始:" + orderSaveDto.getCouponChannelId()); - return new ResultData(ErrorCode.COUPON_CHANNEL_IS_NOT_STARTED); + throw new MallinkException(ErrorCode.COUPON_CHANNEL_IS_NOT_STARTED.getCode(),premsg+"【"+wxCouponChannel.getTitle()+"】活动未开始"); } if (wxCouponChannel.getEndTime().getTime() < now.getTime()) { logger.error("此券活动已结束:" + orderSaveDto.getCouponChannelId()); - return new ResultData(ErrorCode.COUPON_CHANNEL_IS_END); + throw new MallinkException(ErrorCode.COUPON_CHANNEL_IS_END.getCode(),premsg+"【"+wxCouponChannel.getTitle()+"】活动已结束"); } } if (wxCouponChannel.getStatus() == EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode()) { logger.error("此券已下架:" + orderSaveDto.getCouponChannelId()); - return new ResultData(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF); + throw new MallinkException(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF.getCode(),premsg+"【"+wxCouponChannel.getTitle()+"】已下架"); } - return null; } - private ResultData couponUserCheck(WxCUserBasicInfo user, WxCouponCVo coupon) { - if (coupon.getConditions() == null) return null; + private void couponUserCheck(WxCUserBasicInfo user, WxCouponCVo coupon,String premsg) { + if (coupon.getConditions() == null) return ; JSONObject jo = null; try { jo = JSONObject.parseObject(coupon.getConditions()); } catch (Exception e) { - logger.error("购买券条件判断错误:ID=" + coupon.getId() + e.getMessage()); + logger.error("购买券条件判断错误:ID=" + coupon.getId() + e.getMessage(),e); } if (jo != null) { if (jo.getIntValue("type") == EnumCouponConditionType.NEW_MEMBER.getCode()){ if (user != null && user.getActRecord() > 0) - return new ResultData(ErrorCode.COUPON_ONLY_FOR_NEW_MEMBER); + throw new MallinkException(ErrorCode.COUPON_ONLY_FOR_NEW_MEMBER.getCode(),premsg+"【"+coupon.getTitle()+"】限新会员,您已经参加过新会员活动"); if (this.countCouponConditionType1(coupon.getTenantId(),user.getId()) > 0) - return new ResultData(ErrorCode.COUPON_ALREADY_IN_NEW_MEMBER); + throw new MallinkException(ErrorCode.COUPON_ALREADY_IN_NEW_MEMBER.getCode(),premsg+"【"+coupon.getTitle()+"】限新会员,您已经不是新用户"); }else if (jo.getIntValue("type") == EnumCouponConditionType.SCORE_SCOPE.getCode()){ int max = jo.getIntValue("max"); int min = jo.getIntValue("min"); if (max!=0 && min ==0 && user.getPoins() > max) { - return new ResultData(ErrorCode.COUPON_SCORE_NOT_IN_RANGE); + throw new MallinkException(ErrorCode.COUPON_SCORE_NOT_IN_RANGE.getCode(),premsg+"【"+coupon.getTitle()+"】您的成长值/等级与要求不符"); } if (max==0 && min !=0 && user.getPoins() < min) { - return new ResultData(ErrorCode.COUPON_SCORE_NOT_IN_RANGE); + throw new MallinkException(ErrorCode.COUPON_SCORE_NOT_IN_RANGE.getCode(),premsg+"【"+coupon.getTitle()+"】您的成长值/等级与要求不符"); } if (max!=0 && min !=0 && (user.getPoins() < min || user.getPoins() > max)) { - return new ResultData(ErrorCode.COUPON_SCORE_NOT_IN_RANGE); + throw new MallinkException(ErrorCode.COUPON_SCORE_NOT_IN_RANGE.getCode(),premsg+"【"+coupon.getTitle()+"】您的成长值/等级与要求不符"); } } } - - return null; } } diff --git a/mallinkService/src/main/resources/mapper/WxComposeOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxComposeOrderMapper.xml new file mode 100644 index 000000000..42f4badc9 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxComposeOrderMapper.xml @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`parent_tenant_id`,`c_user_id`,`payment_type`,`payment`,`payment_time`,`order_status`,`create_date`,`update_date` + + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `c_user_id` = #{cUserId} + + + + and `payment_type` = #{paymentType} + + + + and `payment` = #{payment} + + + + and `payment_time` = #{paymentTime} + + + + and `order_status` = #{orderStatus} + + + + and `order_status` in + + #{sItem} + + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + + + + + + + + update wx_order set order_status=#{orderStatus} + where order_group_id=#{orderGroupId} and order_status=10 + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + + update wx_order set order_status=12 where `type`=0 and tenant_id = #{tenantId} and order_status in(10,15) and now()>press_end_date + + + diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index c01c32150..a6d5f496f 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -23,12 +23,13 @@ + `id`,`order_number`,`tenant_id`,`parent_tenant_id`,`c_user_id`,`coupon_channel_id`,`product_id`,`type`,`payment_type`,`payment`,`payment_time`,`order_status`,`create_date`,`update_date`,`detail`, - `press_end_date`,`press_current_num`,`press_current_value`,`order_group_id`,`form_id`,`total_payment` + `press_end_date`,`press_current_num`,`press_current_value`,`order_group_id`,`form_id`,`total_payment`,`compose_order_id` @@ -112,6 +113,10 @@ and `form_id` = #{formId} + + + and `compose_order_id` = #{composeOrderId} + and `order_status` in From 9ebb1b247cac55a695098ed0983a46091157def5 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Tue, 7 Sep 2021 19:21:53 +0800 Subject: [PATCH 002/171] fix order --- .../db/migration/V202109070001__order.sql | 103 +++++++++++++++++- .../java/com/iformall/domain/po/WxOrder.java | 3 + .../service/impl/WxOrderServiceImpl.java | 16 +-- .../main/resources/mapper/WxOrderMapper.xml | 4 +- 4 files changed, 115 insertions(+), 11 deletions(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql index e1d8f3666..2c79b32be 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql @@ -113,4 +113,105 @@ ALTER TABLE wx_order_95 ADD COLUMN `compose_order_id` bigint(20) COMMENT ' ALTER TABLE wx_order_96 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; ALTER TABLE wx_order_97 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; ALTER TABLE wx_order_98 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; -ALTER TABLE wx_order_99 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; \ No newline at end of file +ALTER TABLE wx_order_99 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; + +ALTER TABLE wx_order_0 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_1 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_2 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_3 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_4 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_5 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_6 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_7 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_8 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_9 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_10 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_11 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_12 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_13 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_14 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_15 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_16 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_17 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_18 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_19 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_20 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_21 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_22 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_23 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_24 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_25 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_26 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_27 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_28 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_29 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_30 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_31 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_32 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_33 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_34 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_35 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_36 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_37 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_38 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_39 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_40 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_41 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_42 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_43 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_44 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_45 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_46 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_47 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_48 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_49 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_50 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_51 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_52 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_53 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_54 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_55 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_56 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_57 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_58 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_59 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_60 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_61 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_62 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_63 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_64 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_65 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_66 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_67 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_68 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_69 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_70 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_71 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_72 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_73 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_74 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_75 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_76 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_77 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_78 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_79 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_80 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_81 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_82 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_83 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_84 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_85 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_86 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_87 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_88 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_89 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_90 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_91 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_92 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_93 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_94 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_95 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_96 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_97 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_98 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_order_99 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java index 87ffe71fa..16127b415 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java @@ -96,6 +96,9 @@ public class WxOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="composeOrderId") private Long composeOrderId; + + @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="couponNumber") + private Integer couponNumber; @TableField(exist = false) protected List statusS; 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 6a9ff2b6d..65cb86d04 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2031,7 +2031,7 @@ public class WxOrderServiceImpl implements WxOrderService { int payment = 0; for (OrderComposeSaveDto ocsd : orderSave) { boolean isPress = ocsd.getSignleOrder().getPress() != null ? ocsd.getSignleOrder().getPress() : false; - payment = payment+getCouponPayment(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId()); + payment = payment+getCouponPayment(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(),ocsd.getCount()); } order.setPayment(payment); if (payment > 0 ) { @@ -2044,18 +2044,18 @@ public class WxOrderServiceImpl implements WxOrderService { return order; } - private int getCouponPayment(WxCoupon coupon,boolean isPress,Long orderGroupId) { + private int getCouponPayment(WxCoupon coupon,boolean isPress,Long orderGroupId,int couponNumber) { // 4.1 券价格 - int payment = coupon.getSalePrice(); + int payment = coupon.getSalePrice()*couponNumber; //Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode(); if (isPress || coupon.getType().equals(EnumCouponType.COUPON_PRESS.getCode())) { // 砍价券 初始是全价即面额 - payment = coupon.getPrice(); + payment = coupon.getPrice()*couponNumber; } if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { if (orderGroupId == null) { // 拼团券 初始是全价即面额 - payment = coupon.getPrice(); + payment = coupon.getPrice()*couponNumber; } else { //orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode(); } @@ -2134,16 +2134,16 @@ public class WxOrderServiceImpl implements WxOrderService { // 4. 保存订单 Long orderNumber; // 4.1 券价格 - int payment = coupon.getSalePrice(); + int payment = coupon.getSalePrice()*couponNumber; Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode(); if (isPress || coupon.getType().equals(EnumCouponType.COUPON_PRESS.getCode())) { // 砍价券 初始是全价即面额 - payment = coupon.getPrice(); + payment = coupon.getPrice()*couponNumber; } if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { if (orderGroupId == null) { // 拼团券 初始是全价即面额 - payment = coupon.getPrice(); + payment = coupon.getPrice()*couponNumber; } else { orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode(); } diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index a6d5f496f..136f09e80 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -24,12 +24,12 @@ - + `id`,`order_number`,`tenant_id`,`parent_tenant_id`,`c_user_id`,`coupon_channel_id`,`product_id`,`type`,`payment_type`,`payment`,`payment_time`,`order_status`,`create_date`,`update_date`,`detail`, - `press_end_date`,`press_current_num`,`press_current_value`,`order_group_id`,`form_id`,`total_payment`,`compose_order_id` + `press_end_date`,`press_current_num`,`press_current_value`,`order_group_id`,`form_id`,`total_payment`,`compose_order_id`,`coupon_number` From 08a296af91169a59f0d42aca3f90517056f928df Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Sep 2021 10:46:52 +0800 Subject: [PATCH 003/171] =?UTF-8?q?=E6=94=B6=E8=B4=A7=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mem/UserBasicInfoAddressController.java | 108 +++++++++++++++ .../com/iformall/tenant/TenantInfoImpl.java | 2 + .../V2021100100001__wx_mall_permission.sql | 9 ++ .../V2021100100002__wx_user_address.sql | 124 ++++++++++++++++++ .../com/iformall/tenant/TenantInfoImpl.java | 2 + .../UserBasicInfoAddressController.java | 119 +++++++++++++++++ .../controller/WxUserGrantController.java | 2 + .../com/iformall/tenant/TenantInfoImpl.java | 2 + .../com/iformall/tenant/TenantInfoImpl.java | 2 + .../config/BaseMyBatisConfiguration.java | 7 + .../domain/po/UserBasicInfoAddress.java | 86 ++++++++++++ .../iformall/domain/vo/WxCouponOrderBVo.java | 2 +- .../com/iformall/enums/EnumCouponType.java | 1 + .../mapper/UserBasicInfoAddressMapper.java | 19 +++ .../service/UserBasicInfoAddressService.java | 27 ++++ .../impl/UserBasicInfoAddressServiceImpl.java | 70 ++++++++++ .../impl/WxCouponOrderServiceImpl.java | 2 +- .../service/impl/WxPayOrderServiceImpl.java | 2 +- .../mapper/UserBasicInfoAddressMapper.xml | 76 +++++++++++ 19 files changed, 659 insertions(+), 3 deletions(-) create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/mem/UserBasicInfoAddressController.java create mode 100644 mallinkAdmin/src/main/resources/db/migration/V2021100100001__wx_mall_permission.sql create mode 100644 mallinkAdmin/src/main/resources/db/migration/V2021100100002__wx_user_address.sql create mode 100644 mallinkCApi/src/main/java/com/iformall/controller/UserBasicInfoAddressController.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/UserBasicInfoAddress.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/UserBasicInfoAddressMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/service/UserBasicInfoAddressService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/UserBasicInfoAddressServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/UserBasicInfoAddressMapper.xml diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/UserBasicInfoAddressController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/UserBasicInfoAddressController.java new file mode 100644 index 000000000..91ddfe174 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/UserBasicInfoAddressController.java @@ -0,0 +1,108 @@ +package com.iformall.controller.mem; + +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.SystemControllerLog; +import com.iformall.common.ErrorCode; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.*; +import com.iformall.service.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("userBasicInfoAddress") +@Api(description = "会员地址相关接口") +public class UserBasicInfoAddressController extends BaseController { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private UserBasicInfoAddressService userBasicInfoAddressService; + + @ApiOperation("分页列表接口") + @GetMapping("list") + @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 list(@ModelAttribute UserBasicInfoAddress userBasicInfoAddress, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] UserBasicInfoAddressController::list"); + if (null == userBasicInfoAddress) { + userBasicInfoAddress = new UserBasicInfoAddress(); + } + if(userBasicInfoAddress.getUserId() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "用户ID为空"); + } + userBasicInfoAddress.undateFinalTenantId(ifParentUpdateTenantInfo()); + PageInfo page = userBasicInfoAddressService.listAsPage(userBasicInfoAddress, pageNum, pageSize); + return new ResultData(page); + } + + @PostMapping("saveOrUpdate") + @SystemControllerLog(description = "会员地址-保存更新") + public ResultData saveOrUpdate(@RequestBody UserBasicInfoAddress userBasicInfoAddress) { + logger.debug("[" + getIpAddr() + "] userBasicInfoAddress::saveOrUpdate"); + if(userBasicInfoAddress == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + userBasicInfoAddress.undateFinalTenantId(ifParentUpdateTenantInfo()); + userBasicInfoAddressService.saveOrUpdate(userBasicInfoAddress); + return new ResultData(); + } + + @PostMapping("setUpDefault") + @SystemControllerLog(description = "会员地址-默认") + public ResultData setUpDefault(@RequestBody UserBasicInfoAddress userBasicInfoAddress) { + logger.debug("[" + getIpAddr() + "] userBasicInfoAddress::setUpDefault"); + if(userBasicInfoAddress == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + if(userBasicInfoAddress.getId() == null || userBasicInfoAddress.getUserId() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "用户ID或者Id为空"); + } + userBasicInfoAddress.undateFinalTenantId(ifParentUpdateTenantInfo()); + userBasicInfoAddressService.updateDefault(userBasicInfoAddress); + return new ResultData(); + } + + @ApiOperation("消息模板-删除") + @GetMapping("/del") + @ApiImplicitParam(name = "id", value = "id", dataType = "String", paramType = "query", required = true) + @SystemControllerLog(description = "消息验证模板-删除") + public ResultData delete(Long id) { + logger.debug("[" + getIpAddr() + "] userBasicInfoAddress::delete"); + if(id == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "Id为空"); + } + UserBasicInfoAddress userBasicInfoAddress = new UserBasicInfoAddress(); + userBasicInfoAddress.setId(id); + userBasicInfoAddress.undateFinalTenantId(ifParentUpdateTenantInfo()); + userBasicInfoAddressService.deleteById(userBasicInfoAddress); + return new ResultData(Result.SUCCESS, "删除成功", null); + } + + @ApiOperation("消息模板-查询") + @GetMapping("/findById") + @ApiImplicitParam(name = "id", value = "id", dataType = "String", paramType = "query", required = true) + @SystemControllerLog(description = "消息验证模板-查询") + public ResultData findById(Long id) { + logger.debug("[" + getIpAddr() + "] userBasicInfoAddress::findById"); + if(id == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "Id为空"); + } + UserBasicInfoAddress userBasicInfoAddress = new UserBasicInfoAddress(); + userBasicInfoAddress.setId(id); + userBasicInfoAddress.undateFinalTenantId(ifParentUpdateTenantInfo()); + userBasicInfoAddressService.findById(userBasicInfoAddress); + return new ResultData(Result.SUCCESS, "查询成功", null); + } + +} \ No newline at end of file diff --git a/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java index 485e66bd5..e281affe5 100644 --- a/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java +++ b/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java @@ -40,6 +40,7 @@ public class TenantInfoImpl implements TenantInfo { "wx_score_rules", "wx_level_config", "wx_c_user_basic_info", + "user_basic_info_address", "wx_c_user_basic_child", "wx_c_user_basic_sign", "wx_credit_history", @@ -79,6 +80,7 @@ public class TenantInfoImpl implements TenantInfo { "wx_weapp_code_status", "wx_weapp_release_status", "wx_c_user_basic_info", + "user_basic_info_address", "wx_c_user_basic_child", "wx_c_user_basic_sign", "mem_coupon_from_dsp", diff --git a/mallinkAdmin/src/main/resources/db/migration/V2021100100001__wx_mall_permission.sql b/mallinkAdmin/src/main/resources/db/migration/V2021100100001__wx_mall_permission.sql new file mode 100644 index 000000000..6644c6825 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2021100100001__wx_mall_permission.sql @@ -0,0 +1,9 @@ +--加可配送商品 +INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (665, '可配送商品', 604, 'Y', NULL, 1, NULL, NULL, 'distributableCoupon', null, 0, 665); + +--加商品订单 +INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (714, '商品订单', 610, 'Y', NULL, 1, NULL, NULL, 'distributableOrder', NULL, 0, 714); + +--UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 209, 211, 212, 221, 222, 251, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 420, 421, 422, 501, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 661, 662, 663, 664, 665, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 686, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 712, 713, 714, 901, 902, 903, 904, 905, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 60701, 60702]' WHERE `id` = 1; + +UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 209, 211, 212, 221, 222, 251, 299, 300, 301, 302, 303, 304, 305, 306, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 420, 421, 422, 501, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 661, 662, 663, 664, 665, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 686, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 712, 713, 714, 901, 902, 903, 904, 905, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 60701, 60702]' WHERE `id` = 1; diff --git a/mallinkAdmin/src/main/resources/db/migration/V2021100100002__wx_user_address.sql b/mallinkAdmin/src/main/resources/db/migration/V2021100100002__wx_user_address.sql new file mode 100644 index 000000000..f54eb6326 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2021100100002__wx_user_address.sql @@ -0,0 +1,124 @@ +CREATE TABLE `user_basic_info_address` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父租户ID', + `final_tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '归属租户ID', + `user_id` bigint(20) DEFAULT NULL, + `consignee` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '收货人', + `country` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '国家', + `province` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '省', + `city` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '市', + `district` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '区', + `region` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '所属地区', + `address` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '详细地址', + `zipcode` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮政编码', + `mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号', + `is_default` tinyint(1) DEFAULT 0 COMMENT '是否默认,0否,1是。', + `mark` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '标识', + `is_del` tinyint(1) DEFAULT 0 COMMENT '0否,1是。', + `create_date` datetime(0) DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime(0) DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `id_UNIQUE`(`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户收获地址表' ROW_FORMAT = Dynamic; + +CREATE TABLE user_basic_info_address_0 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_1 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_2 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_3 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_4 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_5 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_6 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_7 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_8 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_9 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_10 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_11 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_12 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_13 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_14 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_15 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_16 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_17 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_18 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_19 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_20 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_21 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_22 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_23 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_24 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_25 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_26 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_27 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_28 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_29 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_30 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_31 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_32 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_33 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_34 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_35 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_36 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_37 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_38 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_39 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_40 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_41 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_42 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_43 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_44 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_45 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_46 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_47 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_48 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_49 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_50 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_51 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_52 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_53 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_54 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_55 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_56 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_57 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_58 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_59 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_60 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_61 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_62 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_63 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_64 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_65 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_66 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_67 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_68 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_69 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_70 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_71 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_72 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_73 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_74 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_75 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_76 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_77 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_78 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_79 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_80 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_81 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_82 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_83 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_84 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_85 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_86 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_87 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_88 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_89 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_90 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_91 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_92 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_93 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_94 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_95 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_96 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_97 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_98 LIKE user_basic_info_address; +CREATE TABLE user_basic_info_address_99 LIKE user_basic_info_address; diff --git a/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java index 1afac3a93..619c73adb 100644 --- a/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java +++ b/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java @@ -35,6 +35,7 @@ public class TenantInfoImpl implements TenantInfo { "wx_score_rules", "wx_level_config", "wx_c_user_basic_info", + "user_basic_info_address", "wx_c_user_basic_child", "wx_c_user_basic_sign", "wx_credit_history", @@ -50,6 +51,7 @@ public class TenantInfoImpl implements TenantInfo { "wx_authorizer_info", "wx_c_user", "wx_c_user_basic_info", + "user_basic_info_address", "wx_c_user_basic_child", "wx_c_user_basic_sign", "wx_c_user_car", diff --git a/mallinkCApi/src/main/java/com/iformall/controller/UserBasicInfoAddressController.java b/mallinkCApi/src/main/java/com/iformall/controller/UserBasicInfoAddressController.java new file mode 100644 index 000000000..27e8cf155 --- /dev/null +++ b/mallinkCApi/src/main/java/com/iformall/controller/UserBasicInfoAddressController.java @@ -0,0 +1,119 @@ +package com.iformall.controller; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.domain.po.UserBasicInfoAddress; +import com.iformall.service.UserBasicInfoAddressService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("userBasicInfoAddress") +@Api(description = "会员地址相关接口") +public class UserBasicInfoAddressController extends BaseController { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private UserBasicInfoAddressService userBasicInfoAddressService; + + @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 list(@ModelAttribute UserBasicInfoAddress userBasicInfoAddress, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] UserBasicInfoAddressController::list"); + if (null == userBasicInfoAddress) { + userBasicInfoAddress = new UserBasicInfoAddress(); + } + Long memberId; + try { + memberId = getMemberId(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + userBasicInfoAddress.setUserId(memberId); + userBasicInfoAddress.undateFinalTenantId(getTenantInfo()); + PageInfo page = userBasicInfoAddressService.listAsPage(userBasicInfoAddress, pageNum, pageSize); + return new ResultData(page); + } + + @PostMapping("saveOrUpdate") + public ResultData saveOrUpdate(@RequestBody UserBasicInfoAddress userBasicInfoAddress) { + logger.debug("[" + getIpAddr() + "] userBasicInfoAddress::saveOrUpdate"); + if(userBasicInfoAddress == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + Long memberId; + try { + memberId = getMemberId(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + userBasicInfoAddress.setUserId(memberId); + userBasicInfoAddress.undateFinalTenantId(getTenantInfo()); + userBasicInfoAddressService.saveOrUpdate(userBasicInfoAddress); + return new ResultData(); + } + + @PostMapping("setUpDefault") + public ResultData setUpDefault(@RequestBody UserBasicInfoAddress userBasicInfoAddress) { + logger.debug("[" + getIpAddr() + "] userBasicInfoAddress::setUpDefault"); + if(userBasicInfoAddress == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + if(userBasicInfoAddress.getId() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "Id为空"); + } + Long memberId; + try { + memberId = getMemberId(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + userBasicInfoAddress.setUserId(memberId); + userBasicInfoAddress.undateFinalTenantId(getTenantInfo()); + userBasicInfoAddressService.updateDefault(userBasicInfoAddress); + return new ResultData(); + } + + @ApiOperation("消息模板-删除") + @GetMapping("/del") + @ApiImplicitParam(name = "id", value = "id", dataType = "String", paramType = "query", required = true) + public ResultData delete(Long id) { + logger.debug("[" + getIpAddr() + "] userBasicInfoAddress::delete"); + if(id == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "Id为空"); + } + UserBasicInfoAddress userBasicInfoAddress = new UserBasicInfoAddress(); + userBasicInfoAddress.setId(id); + userBasicInfoAddress.undateFinalTenantId(getTenantInfo()); + userBasicInfoAddressService.deleteById(userBasicInfoAddress); + return new ResultData(Result.SUCCESS, "删除成功", null); + } + + @ApiOperation("消息模板-查询") + @GetMapping("/findById") + @ApiImplicitParam(name = "id", value = "id", dataType = "String", paramType = "query", required = true) + public ResultData findById(Long id) { + logger.debug("[" + getIpAddr() + "] userBasicInfoAddress::findById"); + if(id == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "Id为空"); + } + UserBasicInfoAddress userBasicInfoAddress = new UserBasicInfoAddress(); + userBasicInfoAddress.setId(id); + userBasicInfoAddress.undateFinalTenantId(getTenantInfo()); + userBasicInfoAddressService.findById(userBasicInfoAddress); + return new ResultData(Result.SUCCESS, "查询成功", null); + } + +} \ No newline at end of file diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index e9dfd1677..bd51ea99d 100755 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -894,6 +894,8 @@ public class WxUserGrantController extends BaseController { record.setAvatarUrl(wxCUserBasicInfo.getAvatarUrl()); record.setBirthdate(wxCUserBasicInfo.getBirthdate()); record.setSex(wxCUserBasicInfo.getSex()); + record.setWeight(wxCUserBasicInfo.getWeight()); + record.setHeight(wxCUserBasicInfo.getHeight()); record.setAddress(wxCUserBasicInfo.getAddress()); record.setUpdateDate(new Date()); record.setFinalTenantId(tenantEntity.getFinalTenantId()); diff --git a/mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java index 9c72c528c..dc2a4e3d8 100644 --- a/mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java +++ b/mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java @@ -35,6 +35,7 @@ public class TenantInfoImpl implements TenantInfo { "wx_score_rules", "wx_level_config", "wx_c_user_basic_info", + "user_basic_info_address", "wx_c_user_basic_child", "wx_c_user_basic_sign", "wx_credit_history", @@ -56,6 +57,7 @@ public class TenantInfoImpl implements TenantInfo { "wx_authorizer_info", "wx_c_user", "wx_c_user_basic_info", + "user_basic_info_address", "wx_c_user_basic_child", "wx_c_user_basic_sign", "wx_c_user_car", diff --git a/mallinkNeuPosAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkNeuPosAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java index 9c72c528c..dc2a4e3d8 100644 --- a/mallinkNeuPosAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java +++ b/mallinkNeuPosAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java @@ -35,6 +35,7 @@ public class TenantInfoImpl implements TenantInfo { "wx_score_rules", "wx_level_config", "wx_c_user_basic_info", + "user_basic_info_address", "wx_c_user_basic_child", "wx_c_user_basic_sign", "wx_credit_history", @@ -56,6 +57,7 @@ public class TenantInfoImpl implements TenantInfo { "wx_authorizer_info", "wx_c_user", "wx_c_user_basic_info", + "user_basic_info_address", "wx_c_user_basic_child", "wx_c_user_basic_sign", "wx_c_user_car", diff --git a/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java b/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java index 61bcb981b..ab28aae53 100644 --- a/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java +++ b/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java @@ -76,6 +76,13 @@ public class BaseMyBatisConfiguration { basicInfoSharding.setRule(EnumShardingRule.HASH.getCode()); shardingList.add(basicInfoSharding); + ShardingSphere basicInfoAddressSharding = new ShardingSphere(); + basicInfoAddressSharding.setColumn("final_tenant_id"); + basicInfoAddressSharding.setTableName("user_basic_info_address"); + basicInfoAddressSharding.setCount(100); + basicInfoAddressSharding.setRule(EnumShardingRule.HASH.getCode()); + shardingList.add(basicInfoAddressSharding); + ShardingSphere basicSignSharding = new ShardingSphere(); basicSignSharding.setColumn("tenant_id"); basicSignSharding.setTableName("wx_c_user_basic_sign"); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/UserBasicInfoAddress.java b/mallinkService/src/main/java/com/iformall/domain/po/UserBasicInfoAddress.java new file mode 100644 index 000000000..7ca24bf1f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/UserBasicInfoAddress.java @@ -0,0 +1,86 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.base.TenantEntityWithoutFinalTenantId; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.apache.commons.lang3.StringUtils; + +import java.util.Date; + +@TableName(value = "user_basic_info_address") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class UserBasicInfoAddress extends TenantEntityWithoutFinalTenantId { + + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="如果是集团版的,存集团版的tenantId,如果是商场,则存商场",name="finalTenantId") + private String finalTenantId; + + @JsonIgnore + @TableField(exist = false) + protected String shardFinalTableSuffix; + + public String getShardFinalTableSuffix(){ + if(StringUtils.isNotBlank(finalTenantId)){ + shardFinalTableSuffix = "_" + Integer.parseInt(finalTenantId)%100; + } + return shardFinalTableSuffix; + } + + @io.swagger.annotations.ApiModelProperty(value="",name="userId") + private Long userId; + + @io.swagger.annotations.ApiModelProperty(value="收货人",name="consignee") + private String consignee; + + @io.swagger.annotations.ApiModelProperty(value="国家",name="country") + private String country; + + @io.swagger.annotations.ApiModelProperty(value="省",name="province") + private String province; + + @io.swagger.annotations.ApiModelProperty(value="市",name="city") + private String city; + + @io.swagger.annotations.ApiModelProperty(value="区",name="district") + private String district; + + @io.swagger.annotations.ApiModelProperty(value="所属地区",name="region") + private String region; + + private String address; + + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") + private Date updateDate; + + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") + private Date createDate; + + @io.swagger.annotations.ApiModelProperty(value="邮编",name="zipcode") + private String zipcode; + + @io.swagger.annotations.ApiModelProperty(value="手机号",name="mobile") + private String mobile; + + @io.swagger.annotations.ApiModelProperty(value="",name="isDefault") + private Integer isDefault; + + @io.swagger.annotations.ApiModelProperty(value="标识",name="mark") + private String mark; + + + public void undateFinalTenantId(TenantEntity tenantEntity){ + setFinalTenantId(tenantEntity.getTenantId()); + if(StringUtils.isNotBlank(tenantEntity.getParentTenantId())){ + setFinalTenantId(tenantEntity.getParentTenantId()); + } + } + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java index e62baec56..79a4e4d23 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java @@ -189,7 +189,7 @@ public class WxCouponOrderBVo extends WxCouponOrder { @TableField(exist = false) private Long couponId; - @Excel(name = "券类型", width = 50, orderNum = "15", replace = {"满减券_1", "代金券_2", "团购券_3", "礼品券_4", "停车券_5", "通用券_6", "砍价券_8", "团购券_9", "预购商品_10", "积分券_50", "积分停车券_51", "消费卡_100"}) + @Excel(name = "券类型", width = 50, orderNum = "15", replace = {"满减券_1", "代金券_2", "团购券_3", "礼品券_4", "停车券_5", "通用券_6", "砍价券_8", "团购券_9", "预购商品_10", "可配送商品_11", "积分券_50", "积分停车券_51", "消费卡_100"}) @TableField(exist = false) private Integer couponType; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponType.java index df6f0c0a5..4f249c508 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponType.java @@ -16,6 +16,7 @@ public enum EnumCouponType { COUPON_PRESS(8, "砍价券"), COUPON_GROUP(9, "团购券"), COUPON_PREORDER(10, "预购商品"), + COUPON_DISTRIBUTION(11, "可配送商品"), COUPON_CREDIT(50,"积分券"), COUPON_CREDIT_PARK(51,"积分停车券"), CARD_MULTIMCH(100, "消费卡"), diff --git a/mallinkService/src/main/java/com/iformall/mapper/UserBasicInfoAddressMapper.java b/mallinkService/src/main/java/com/iformall/mapper/UserBasicInfoAddressMapper.java new file mode 100644 index 000000000..d62be2766 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/UserBasicInfoAddressMapper.java @@ -0,0 +1,19 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.UserBasicInfoAddress; +import com.iformall.domain.po.WxCUserBasicInfo; + +import java.util.List; + +public interface UserBasicInfoAddressMapper extends CommonMapper { + + List findList(UserBasicInfoAddress record); + + int deleteById(UserBasicInfoAddress record); + + int updateDefault(UserBasicInfoAddress record); + + int updateUnDefault(UserBasicInfoAddress record); +} + diff --git a/mallinkService/src/main/java/com/iformall/service/UserBasicInfoAddressService.java b/mallinkService/src/main/java/com/iformall/service/UserBasicInfoAddressService.java new file mode 100644 index 000000000..87f1f4031 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/UserBasicInfoAddressService.java @@ -0,0 +1,27 @@ +package com.iformall.service; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; +import com.iformall.domain.po.*; + +public interface UserBasicInfoAddressService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param pageIndex + * @param pageSize + * @return + */ + PageInfo listAsPage(UserBasicInfoAddress record, Integer pageIndex, Integer pageSize); + + void saveOrUpdate(UserBasicInfoAddress userBasicInfoAddress); + + Integer deleteById(UserBasicInfoAddress record); + + void updateDefault(UserBasicInfoAddress record); + + UserBasicInfoAddress findById(UserBasicInfoAddress userBasicInfoAddress); +} + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/UserBasicInfoAddressServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/UserBasicInfoAddressServiceImpl.java new file mode 100644 index 000000000..153c86bc5 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/UserBasicInfoAddressServiceImpl.java @@ -0,0 +1,70 @@ +package com.iformall.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.common.IdWorker; +import com.iformall.common.ResultData; +import com.iformall.domain.po.*; +import com.iformall.enums.EnumCarVendor; +import com.iformall.mapper.*; +import com.iformall.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +@Service +public class UserBasicInfoAddressServiceImpl implements UserBasicInfoAddressService { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + UserBasicInfoAddressMapper userBasicInfoAddressMapper; + + + @Override + public PageInfo listAsPage(UserBasicInfoAddress record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> userBasicInfoAddressMapper.findList(record)); + } + + @Override + public void saveOrUpdate(UserBasicInfoAddress record) { + Date now = new Date(); + if (record.getId() == null) { + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + record.setCreateDate(now); + record.setUpdateDate(now); + userBasicInfoAddressMapper.insert(record); + } else { + record.setUpdateDate(now); + userBasicInfoAddressMapper.updateById(record); + } + } + + @Override + public Integer deleteById(UserBasicInfoAddress record) { + return userBasicInfoAddressMapper.deleteById(record); + } + + @Override + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void updateDefault(UserBasicInfoAddress record) { + userBasicInfoAddressMapper.updateDefault(record); + userBasicInfoAddressMapper.updateUnDefault(record); + } + + @Override + public UserBasicInfoAddress findById(UserBasicInfoAddress userBasicInfoAddress) { + return userBasicInfoAddressMapper.selectOne(new QueryWrapper<>(userBasicInfoAddress)); + } + + +} + 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 7549e9b46..fa387c45c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -1376,7 +1376,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { if (couponOrder.getCouponType().equals(EnumCouponType.COUPON_MANJIAN.getCode())) { if (payPrice < wxCoupon.getUsePrice()) { logger.error("券达不到满减条件: couponOrder-" + couponOrder.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_PRE_VERIFY); + throw new MallinkException(ErrorCode.COUPON_MANJIAN_USE_PRICE_NO_ALLOW_); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 8b4f0d8d1..b8fca71bb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -1005,7 +1005,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { WxAppinfo appinfo = wxAppinfoService.getCAppInfo(order,payWay); - if (record.getPayAmount().intValue() == 0 || record.getPayAmount().equals(order.getTotalPayment())) { + if (record.getPayAmount().intValue() == 0 || record.getPayAmount().equals(order.getPayment())) { doCouponPayOrder(user, record, order,payWay); } else { throw new MallinkException(ErrorCode.PAY_ORDER_ERROR); diff --git a/mallinkService/src/main/resources/mapper/UserBasicInfoAddressMapper.xml b/mallinkService/src/main/resources/mapper/UserBasicInfoAddressMapper.xml new file mode 100644 index 000000000..9fb019865 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/UserBasicInfoAddressMapper.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`parent_tenant_id`,`final_tenant_id`,`user_id`,`consignee`,`country`,`province`,`city`,`district`,`region`,`address`,`zipcode`,`mobile`, + `create_date`,`update_date`,`is_default`,`mark` + + + + where `is_del` = 0 + + + and `id` = #{id} + + + + and `final_tenant_id` = #{finalTenantId} + + + + and `user_id` = #{userId} + + order by `is_default` desc,`update_date` desc + + + + + + + update user_basic_info_address set is_del = 1, update_date=now() where id = #{id} + + + + update user_basic_info_address + set is_default = 1, update_date=now() + where id = #{id} + + + + update user_basic_info_address + set is_default = 0, update_date=now() + where user_id = #{userId} + and id != #{id} + + + + \ No newline at end of file From 2eb0d7f99d2c85f3377dfe3c43017f37b2ad7c6e Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 8 Sep 2021 18:47:33 +0800 Subject: [PATCH 004/171] fix order --- .../db/migration/V202109070001__order.sql | 103 ++++- .../controller/WxOrderController.java | 27 +- .../controller/WxPayOrderController.java | 69 ++- .../schedule/OrderExpiringSchedule.java | 4 +- .../iformall/domain/po/WxComposeOrder.java | 14 +- .../com/iformall/domain/po/WxPayOrder.java | 3 + .../com/iformall/enums/EnumComposeOrder.java | 36 ++ .../iformall/mapper/WxComposeOrderMapper.java | 9 +- .../com/iformall/mapper/WxOrderMapper.java | 2 + .../com/iformall/service/WxOrderService.java | 4 + .../iformall/service/WxPayOrderService.java | 5 +- .../helper/WxPayOrderServiceHelper.java | 11 +- .../service/impl/WxOrderServiceImpl.java | 118 ++++- .../service/impl/WxPayOrderServiceImpl.java | 437 +++++++++++------- .../impl/WxRefundOrderServiceImpl.java | 2 +- .../pay/service/pay/PayAdapterService.java | 7 +- .../pay/wx/BaseWxPayAdapterService.java | 9 +- .../pay/service/pay/wx/h5/WxH5PayService.java | 11 +- .../appPay/WxMiniAppPayAdapterService.java | 62 ++- .../maPay/WxMiniMaPayAdapterService.java | 31 +- .../resources/mapper/WxComposeOrderMapper.xml | 103 +---- .../main/resources/mapper/WxOrderMapper.xml | 14 + .../resources/mapper/WxPayOrderMapper.xml | 7 +- 23 files changed, 710 insertions(+), 378 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java diff --git a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql index 2c79b32be..c6824c912 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql @@ -214,4 +214,105 @@ ALTER TABLE wx_order_95 ADD COLUMN `coupon_number` int(8) COMMENT '购买 ALTER TABLE wx_order_96 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; ALTER TABLE wx_order_97 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; ALTER TABLE wx_order_98 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; -ALTER TABLE wx_order_99 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; \ No newline at end of file +ALTER TABLE wx_order_99 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; + +ALTER TABLE wx_pay_order_0 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_1 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_2 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_3 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_4 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_5 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_6 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_7 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_8 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_9 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_10 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_11 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_12 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_13 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_14 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_15 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_16 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_17 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_18 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_19 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_20 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_21 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_22 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_23 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_24 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_25 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_26 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_27 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_28 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_29 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_30 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_31 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_32 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_33 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_34 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_35 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_36 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_37 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_38 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_39 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_40 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_41 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_42 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_43 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_44 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_45 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_46 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_47 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_48 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_49 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_50 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_51 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_52 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_53 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_54 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_55 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_56 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_57 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_58 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_59 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_60 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_61 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_62 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_63 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_64 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_65 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_66 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_67 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_68 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_69 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_70 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_71 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_72 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_73 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_74 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_75 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_76 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_77 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_78 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_79 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_80 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_81 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_82 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_83 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_84 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_85 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_86 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_87 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_88 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_89 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_90 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_91 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_92 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_93 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_94 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_95 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_96 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_97 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_98 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_99 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; \ No newline at end of file diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 1a8e69da1..32fef01d9 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -61,7 +61,7 @@ public class WxOrderController extends BaseController { @Autowired RedisLock redisLock; - @ApiOperation(value = "多个券多个数量组合下订单", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") + @ApiOperation(value = "多个券多个数量组合下订单(购物车组合)", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") @PostMapping("composeSave") public ResultData saveOrder(@RequestBody List orderSaveDto) { Long memberId; @@ -70,20 +70,21 @@ public class WxOrderController extends BaseController { } catch (Exception e) { return new ResultData(Result.ERROR,e.getMessage()); } - return wxOrderService.composeSaveOrder(orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + + return wxOrderService.composeSaveOrder(orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); } -// @ApiOperation(value = "单个券单个数量下订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") -// @PostMapping("save") -// public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { -// Long memberId; -// try { -// memberId = getMemberId(); -// } catch (Exception e) { -// return new ResultData(Result.ERROR,e.getMessage()); -// } -// return wxOrderService.saveOrder(orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); -// } + @ApiOperation(value = "单个券单个数量下订单,拼团,砍价用", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") + @PostMapping("singleSave") + public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { + Long memberId; + try { + memberId = getMemberId(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + return wxOrderService.singleSaveOrder(orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + } @ApiOperation(value = "取消订单", notes = "{\"orderId\":\"string\"}") @PostMapping("cancel") diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index 8a612f9fd..05abde406 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -24,10 +24,12 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxComposeOrder; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxPayOrder; +import com.iformall.enums.EnumComposeOrder; import com.iformall.enums.EnumCreditLockedStatus; import com.iformall.enums.EnumOrderStatus; import com.iformall.enums.EnumPayStatus; @@ -87,17 +89,18 @@ public class WxPayOrderController extends BaseController { logger.info("orderId不能为空: " + paramMap.toString()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); } - + WxCUser user = getWxCUser(); if (!user.basicInfoIs()) { logger.error("暂未成为会员,请授权手机号"); return new ResultData(ErrorCode.USER_IS_NOT_MEMBER.getCode(), "暂未成为会员,请授权手机号"); } - - return _create(orderIdStr,user.getUserId(),EnumPayWay.PAY_WAY_WECHAT,user.getAppId(),new PayExtraParam("openId",user.getOpenId()),request); + + String composeOrderTag = paramMap.get("composeOrderTag"); + return _create(orderIdStr,composeOrderTag,user.getUserId(),EnumPayWay.PAY_WAY_WECHAT,user.getAppId(),new PayExtraParam("openId",user.getOpenId()),request); } - private ResultData _create(String orderIdStr,Long userId, EnumPayWay payWay,String appId,PayExtraParam parm,HttpServletRequest request) { + private ResultData _create(String orderIdStr,String compseOrderTag,Long userId, EnumPayWay payWay,String appId,PayExtraParam parm,HttpServletRequest request) { WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(userId,getFinalTenantId()); if ( null == wxCUserBasicInfo) { logger.error("会员用户不存在."+userId); @@ -120,6 +123,9 @@ public class WxPayOrderController extends BaseController { record.setOrderId(orderId); try { record.setIp(IPUtil.getIpAddr(request)); + if ((!StringUtils.isBlank(compseOrderTag)) && "1".equals(compseOrderTag)) { + record.setComposeOrder(EnumComposeOrder.YES.getCode()); + } return wxPayOrderService.createPayOrder(appInfo, wxCUserBasicInfo, record, payWay,parm); } catch (MallinkException e) { logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage()); @@ -185,28 +191,17 @@ public class WxPayOrderController extends BaseController { if (null == payOrder) { return new ResultData(ErrorCode.PAY_ORDER_ERROR, "未查询到payOrder."); } - WxOrder order = wxOrderService.getById(orderId,payOrder.getTenantId()); - if (null == order) { - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "未查询到Order["+orderId+"]."); - } - WxCoupon wxCoupon = wxCouponService.getById(order.getProductId(),order.getTenantId()); - if (null == wxCoupon) { - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "未查询到优惠券[orderId:"+orderId+"]."); - } - //拼团的订单,如果查询到是拼团待付款的,则重新查询是否已经真的支付,其他的直接返回订单信息 - if (wxPayOrderService.isOrderGroupCoupon(payOrder, wxCoupon)) { - if (!order.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode())) { - return new ResultData(Result.SUCCESS, "支付状态更新成功", order); - } + WxComposeOrder composeOrder = null; + WxOrder order = null; + if ((null != payOrder.getComposeOrder()) && (EnumComposeOrder.YES.getCode().intValue() == payOrder.getComposeOrder().intValue())) { + composeOrder = wxOrderService.getComposeOrder(orderId, payOrder); }else { - //非拼团的订单,支付成功,关闭订单,撤销支付订单,支付转退款的,直接返回订单信息,其他需要查询真实支付状态 - if (payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())|| - payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_CLOSE.getCode())|| - payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REVERSE.getCode())|| - payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REFUND.getCode())) { - return new ResultData(Result.SUCCESS, "支付状态更新成功", order); + order = wxOrderService.getById(orderId,payOrder.getTenantId()); + if (check(orderId, order, payOrder)) { + return new ResultData(Result.SUCCESS, "支付状态更新成功", order); } + } //查询微信订单状态并更新 @@ -218,7 +213,7 @@ public class WxPayOrderController extends BaseController { } WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); try { - WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, order, appInfo, payAccount, IdWorker.get(),false); + WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, composeOrder,order, appInfo, payAccount, IdWorker.get(),false); if (null != wo) { return new ResultData(Result.SUCCESS, "支付状态更新成功", order); } @@ -241,6 +236,32 @@ public class WxPayOrderController extends BaseController { return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); } } + + private boolean check(Long orderId,WxOrder order,WxPayOrder payOrder) { + if (null == order) { + throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "未查询到Order["+orderId+"]."); + } + WxCoupon wxCoupon = wxCouponService.getById(order.getProductId(),order.getTenantId()); + if (null == wxCoupon) { + throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "未查询到优惠券[orderId:"+orderId+"]."); + } + + //拼团的订单,如果查询到是拼团待付款的,则重新查询是否已经真的支付,其他的直接返回订单信息 + if (wxPayOrderService.isOrderGroupCoupon(payOrder, wxCoupon)) { + if (!order.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode())) { + return true; + } + }else { + //非拼团的订单,支付成功,关闭订单,撤销支付订单,支付转退款的,直接返回订单信息,其他需要查询真实支付状态 + if (payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())|| + payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_CLOSE.getCode())|| + payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REVERSE.getCode())|| + payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REFUND.getCode())) { + return true; + } + } + return false; + } @ApiOperation("分页列表接口") @GetMapping("/list") diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java index 1ca3e16eb..71041b400 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java @@ -288,11 +288,11 @@ public class OrderExpiringSchedule { } //Map retMap = WxPayOrderServiceHelper.wxOrderPayStatusMap(wxpayOrder, order, appInfo, payAccount); //int status = WxPayOrderServiceHelper.getPayStatusFromMap(retMap, wxpayOrder.getPayOrderNo()); - PayQueryAdapterResult payResult = payServiceFactory.getPayAdapterService(wxpayOrder.getPayVendor()).queryPayStatus(wxpayOrder, order, appInfo, payAccount); + PayQueryAdapterResult payResult = payServiceFactory.getPayAdapterService(wxpayOrder.getPayVendor()).queryPayStatus(wxpayOrder, appInfo, payAccount); //如果是支付成功,并且需要重试成功流程, if (EnumPayStatus.PAY_STATUS_SUCCESS.getCode().intValue() == payResult.getCode()) { if (autoReHandle) { - wxPayOrderService.handleSuccessOrder(wxpayOrder, order, payResult,true); + wxPayOrderService.handleSuccessOrder(wxpayOrder, null, order, payResult, true,true); } return true; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxComposeOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxComposeOrder.java index 3be038488..475e80e90 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxComposeOrder.java @@ -24,20 +24,14 @@ public class WxComposeOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="c端用户id",name="cUserId") private Long cUserId; - @io.swagger.annotations.ApiModelProperty(value="0: 付款 1: 退款",name="paymentType") - private Integer paymentType; @io.swagger.annotations.ApiModelProperty(value="支付金额(分):允许有负数,退款时为负值。",name="payment") private Integer payment; - @io.swagger.annotations.ApiModelProperty(value="支付时间",name="paymentTime") - private Date paymentTime; - - @io.swagger.annotations.ApiModelProperty(value="订单状态:-1全部;正向交易:0-已下单/待付款;1-已支付;2-已取消(限定时间内未付款)反向交易:3-已退款; 4-退款失败,5-退款失败; 砍价:6-砍价中,7-砍价完成,8-砍价失败",name="orderStatus") - private Integer orderStatus; - @TableField(exist = false) - protected List statusS; - @io.swagger.annotations.ApiModelProperty(value="创建时间/砍价开始时间",name="createDate") private Date createDate; @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; + + //返回给前端,跟之前的wxorder直接下单做区分 + @TableField(exist = false) + private String composeOrderTag = "1"; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java index 7169e20b1..fefa053fe 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java @@ -57,6 +57,9 @@ public class WxPayOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="支付后结果来源(0:callback, 1:query)",name="payEndFrom") private Integer payEndFrom; + @io.swagger.annotations.ApiModelProperty(value="是否为组合订单,1-是 0-不是",name="composeOrder") + private Integer composeOrder; + @io.swagger.annotations.ApiModelProperty(value="支付后结果来源(0:inside, 1:POS支付)",name="payFrom") private Integer payFrom; @io.swagger.annotations.ApiModelProperty(value="支付订单号,来源于POS, inside时,填写couponOrderId",name="posPayOrderId") diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java new file mode 100644 index 000000000..abc333af7 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java @@ -0,0 +1,36 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumComposeOrder { + + YES(1, "是多券种组合订单"), + NO(0, "非多券种组合订单,如拼团,砍价"); + + public static EnumComposeOrder getEnum(Integer code) { + for (EnumComposeOrder value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumComposeOrder(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxComposeOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxComposeOrderMapper.java index 7b3c0cd29..04354c440 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxComposeOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxComposeOrderMapper.java @@ -2,12 +2,19 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxComposeOrder; + +import java.util.List; + import org.apache.ibatis.annotations.Param; public interface WxComposeOrderMapper extends CommonMapper { + List findList(WxComposeOrder order); + + Integer countList(WxComposeOrder order); + WxComposeOrder selectById(@Param("id")Long id,@Param("tenantId")String tenantId); - void updateStatusByOrderGroupId(WxComposeOrder order); + void updateCUserId(WxComposeOrder order); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java index ce86ac340..c008002bd 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java @@ -64,5 +64,7 @@ public interface WxOrderMapper extends CommonMapper { void updateOrderGroupStatusByCouponChannelId(WxOrder updateOrder); void updateOrderStatusForGroup(@Param("tenantId")String tenantId); + + void updateCUserId(WxOrder updateOrder); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 3cb35b11f..5937efb83 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -244,5 +244,9 @@ public interface WxOrderService { //ResultData saveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); ResultData composeSaveOrder(List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); + + ResultData singleSaveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); + + WxComposeOrder getComposeOrder(Long orderId,TenantEntity tenantEntity); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java index 75c6390ba..f1c5ec875 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java @@ -7,6 +7,7 @@ import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxComposeOrder; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxOrder; @@ -20,9 +21,9 @@ import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; public interface WxPayOrderService { - public void handleSuccessOrder(WxPayOrder oldRecord,WxOrder order,PayQueryAdapterResult queryResult,boolean isScheduleTask); + public void handleSuccessOrder(WxPayOrder oldRecord,WxComposeOrder composeOrder,WxOrder order,PayQueryAdapterResult queryResult,boolean isScheduleTask,boolean composeSingleOrder); - public WxPayOrder handleWxOrderQuery(WxPayOrder oldRecord,WxOrder order,WxAppinfo appInfo,WxPayAccount payAccount,IdWorker idworker,boolean repeatPay); + public WxPayOrder handleWxOrderQuery(WxPayOrder oldRecord,WxComposeOrder composeOrder,WxOrder order,WxAppinfo appInfo,WxPayAccount payAccount,IdWorker idworker,boolean repeatPay); /** * 创建支付订单 diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxPayOrderServiceHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxPayOrderServiceHelper.java index 5f8e7fc91..8d4228e8b 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxPayOrderServiceHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxPayOrderServiceHelper.java @@ -11,6 +11,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxComposeOrder; import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; @@ -33,17 +34,13 @@ public class WxPayOrderServiceHelper { /** * 微信订单是否可以支付 */ - public static Map wxOrderPayStatusMap(WxPayOrder record,WxOrder order,WxAppinfo appInfo,WxPayAccount payAccount) { + public static Map wxOrderPayStatusMap(WxPayOrder record,WxAppinfo appInfo,WxPayAccount payAccount) { if (record == null) { throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "wxPayOrder is null."); } if (StringUtils.isBlank(record.getPayOrderNo())) { throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "payOrderNo not found"); } - if (order == null) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "Order not found"); - } - String response = wechatPayOrderQuery(appInfo, record,payAccount); logger.info("pay order query, " + record.toString() + ", response: " + response); @@ -128,8 +125,8 @@ public class WxPayOrderServiceHelper { } } - public static int wxOrderPayStatus(WxPayOrder record,WxOrder order,WxAppinfo appInfo,WxPayAccount payAccount) { - Map returnMap = wxOrderPayStatusMap(record,order,appInfo,payAccount); + public static int wxOrderPayStatus(WxPayOrder record,WxAppinfo appInfo,WxPayAccount payAccount) { + Map returnMap = wxOrderPayStatusMap(record,appInfo,payAccount); return getPayStatusFromMap(returnMap,record.getPayOrderNo()); } 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 65cb86d04..393b90ebc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -785,12 +785,12 @@ public class WxOrderServiceImpl implements WxOrderService { } try { - int num = wxCouponMapper.backInventory(coupon.getId(),coupon.getTenantId(), 1, coupon.getRemainInventory()); + int num = wxCouponMapper.backInventory(coupon.getId(),coupon.getTenantId(), updateOrder.getCouponNumber(), coupon.getRemainInventory()); if (num <= 0) { logger.error("此券加库存失败, couponId: " + couponIdStr); throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"券couponId:["+couponIdStr+"]库存回滚失败,更新记录条数小于等于0."); } - redisLock.increase(EnumCacheKey.COUPON_STOCK.getMessage()+coupon.getId(), 1); + redisLock.increase(EnumCacheKey.COUPON_STOCK.getMessage()+coupon.getId(), updateOrder.getCouponNumber()); } catch (Exception e) { logger.error("数据库更新失败,库存+1失败, e:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "库存恢复失败"); @@ -1970,11 +1970,9 @@ public class WxOrderServiceImpl implements WxOrderService { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override public WxComposeOrder saveOrderForCoupon(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { - WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); - // 防止同一用户重复下单,1秒内 - String key = new StringBuilder().append("saveorder:").append(user.getId()).toString(); + String key = new StringBuilder().append("saveComposeOrder:").append(user.getId()).toString(); boolean hasKey = cUserBasicInfoRedisTemplate.hasKey(key); if (hasKey) { logger.error("用户正在下单,请求异常返回,user: {} " + JSON.toJSONString(user)); @@ -2021,24 +2019,63 @@ public class WxOrderServiceImpl implements WxOrderService { return composeOrder; } + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public WxOrder saveSingleOrderForCoupon(WxCUserBasicInfo user,OrderSaveDto orderSaveDto,WxCoupon coupon,EnumPayWay payWay,int couponNumber) { + WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); + // 防止同一用户重复下单,1秒内 + String key = new StringBuilder().append("saveSingleOrder:").append(user.getId()).toString(); + boolean hasKey = cUserBasicInfoRedisTemplate.hasKey(key); + if (hasKey) { + logger.error("用户正在下单,请求异常返回,user: {} " + JSON.toJSONString(user)); + throw new MallinkException(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION); + } + cUserBasicInfoRedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS); + // 是否砍价 + boolean isPress = orderSaveDto.getPress() != null ? orderSaveDto.getPress() : false; + WxOrder order = null; + if (checkCouponIsFree(coupon)) { + // 免费券 + order = proxy.saveFreeOrderForCoupon(null,user, coupon,couponNumber, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,payWay); + if (order != null) { + // 6. 下订单完成,发送内部消息 + // 下订单完成,发送内部消息 + try { + proxy.sendOrderSuccessActionMsg(order); + } catch (Exception e) { + logger.error("内部消息发送失败: " + e.getMessage(),e); + throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); + } + } + } else { + // 有价券 + order = proxy.saveNoFreeOrderForCoupon(null,user, coupon,couponNumber, orderSaveDto.getCouponChannelId(), isPress, orderSaveDto.getOrderGroupId(), orderSaveDto.getFormId()); + } + // couponActionLog +// try { +// wxCouponActionLogService.addOne(order, order.getProductId(), order.getOrderNumber(), EnumCouponSendSendType.ACTIVE.getCode(), orderdto.getSignleOrder().getCouponChannelId(),0L); +// } catch (Exception e) { +// // 库存恢复 +// stockBack(order); +// logger.error("保存订单:" + e.getMessage()); +// throw new MallinkException(ErrorCode.ORDER_SAVE_ERR); +// } + return order; + } + + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public WxComposeOrder createWxComposeOrder(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { WxComposeOrder order =new WxComposeOrder(); final IdWorker idWorker = IdWorker.get(); order.setId(idWorker.nextId()); order.setCUserId(user.getId()); - order.setPaymentType(EnumPayType.PAY_PAYMENT.getCode()); int payment = 0; for (OrderComposeSaveDto ocsd : orderSave) { boolean isPress = ocsd.getSignleOrder().getPress() != null ? ocsd.getSignleOrder().getPress() : false; payment = payment+getCouponPayment(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(),ocsd.getCount()); } order.setPayment(payment); - if (payment > 0 ) { - order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); - }else { - order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); - } order.setCreateDate(new Date()); wxComposeOrderMapper.insert(order); return order; @@ -2097,6 +2134,7 @@ public class WxOrderServiceImpl implements WxOrderService { if (null != composeOrder) { record.setComposeOrderId(composeOrder.getId()); } + record.setCouponNumber(couponNumber); try { proxy.saveFreeOrder(record, user, coupon); } catch (Exception e) { @@ -2160,6 +2198,7 @@ public class WxOrderServiceImpl implements WxOrderService { if (null != composeOrder) { record.setComposeOrderId(composeOrder.getId()); } + record.setCouponNumber(couponNumber); try { orderNumber = proxy.saveNoFreeOrder(record, user, coupon, isPress); } catch (Exception e) { @@ -2471,9 +2510,44 @@ public class WxOrderServiceImpl implements WxOrderService { OrderComposeSaveDto ocsd = composeOrderSaveDto.get(i); singleOrderCheck(ocsd,ocsd.getSignleOrder(),ocsd.getCount(),wxCUserBasicInfo,payWay,tenantEntity,i+1,singleProduct); } - + WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); + try { + WxComposeOrder order = proxy.saveOrderForCoupon(wxCUserBasicInfo, composeOrderSaveDto, payWay); + return new ResultData(order); + } catch (MallinkException e) { + logger.error("saveOrderForCoupon error.",e); + throw new MallinkException(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error("saveOrderForCoupon error.",e); + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), e.getMessage()); + } + + }catch(MallinkException me) { + return new ResultData(me.getErrorCode(),me.getMessage()); + }catch(Exception e) { + logger.error("composeSaveOrder error.",e); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + + + } + + @Override + public ResultData singleSaveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) { + logger.info("singleOrderSave: " + orderSaveDto); + try { + WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(cUserId,tenantEntity.getFinalTenantId()); + if (wxCUserBasicInfo != null && wxCUserBasicInfo.getStatus().equals(EnumCUserBasicInfoStatus.LOCKED.getCode())) { + logger.info("会员权益被锁定:cUserId:" + cUserId); + return new ResultData(ErrorCode.MEMBER_IS_LOCKED); + } + + int couponNumber = 1; + boolean singleNumber = true; + WxCoupon coupon = singleOrderCheck(null,orderSaveDto,couponNumber,wxCUserBasicInfo,payWay,tenantEntity,1,singleNumber); + WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); try { - WxComposeOrder order = this.saveOrderForCoupon(wxCUserBasicInfo, composeOrderSaveDto, payWay); + WxOrder order = proxy.saveSingleOrderForCoupon(wxCUserBasicInfo, orderSaveDto,coupon, payWay,couponNumber); return new ResultData(order); } catch (MallinkException e) { logger.error("saveOrderForCoupon error.",e); @@ -2494,7 +2568,7 @@ public class WxOrderServiceImpl implements WxOrderService { } - private void singleOrderCheck(OrderComposeSaveDto ocsd,OrderSaveDto orderSaveDto,int productCount,WxCUserBasicInfo wxCUserBasicInfo,EnumPayWay payWay,TenantEntity tenantEntity,int curindex,boolean singleProduct) { + private WxCoupon singleOrderCheck(OrderComposeSaveDto ocsd,OrderSaveDto orderSaveDto,int productCount,WxCUserBasicInfo wxCUserBasicInfo,EnumPayWay payWay,TenantEntity tenantEntity,int curindex,boolean singleProduct) { logger.info("OrderSave: " + orderSaveDto); String premsg = ""; if (singleProduct) { @@ -2519,7 +2593,10 @@ public class WxOrderServiceImpl implements WxOrderService { if (coupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode())) { throw new MallinkException(ErrorCode.COUPON_IS_TAKE_OFF.getCode(),premsg+"【"+coupon.getTitle()+"】已作废"); } - ocsd.setWxCoupon(coupon); + + if (null != ocsd) { + ocsd.setWxCoupon(coupon); + } //判断是否是拼团订单,如果是拼团订单,判断现在进行中的,和已完成的数量是否超出券的限制 if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { @@ -2590,11 +2667,11 @@ public class WxOrderServiceImpl implements WxOrderService { if (!checkCouponIsFree(coupon)) { // 有价,拼团检查 - if (isOrderGroup(ocsd.getSignleOrder().getOrderGroupId())) { - checkOrderGroup(wxCUserBasicInfo, ocsd.getSignleOrder().getOrderGroupId(),coupon,premsg); + if (isOrderGroup(orderSaveDto.getOrderGroupId())) { + checkOrderGroup(wxCUserBasicInfo, orderSaveDto.getOrderGroupId(),coupon,premsg); } } - + return coupon; } private void couponChannelCheck(OrderSaveDto orderSaveDto, WxCouponChannel wxCouponChannel,String premsg) { @@ -2648,4 +2725,9 @@ public class WxOrderServiceImpl implements WxOrderService { } } + @Override + public WxComposeOrder getComposeOrder(Long orderId, TenantEntity tenantEntity) { + return wxComposeOrderMapper.selectById(orderId, tenantEntity.getTenantId()); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 8b4f0d8d1..4c90281a0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -103,6 +103,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { @Autowired WxCashOutService cashOutService; + + @Autowired + WxComposeOrderMapper wxComposeOrderMapper; JSONObject errorMapQuery = JSON.parseObject("{" + "\"ORDERNOTEXIST\":{\"detail\":\"此交易订单号不存在\",\"reason\":\"查询系统中不存在此交易订单号\",\"resolution\":\"该API只能查提交支付交易返回成功的订单,请商户检查需要查询的订单号是否正确\"},\n" + @@ -111,9 +114,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { //方法必须为public AopContext.currentProxy() @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override - public void handleSuccessOrder(WxPayOrder oldRecord,WxOrder order,PayQueryAdapterResult queryResult,boolean isScheduleTask) { + public void handleSuccessOrder(WxPayOrder oldRecord,WxComposeOrder composeOrder,WxOrder order,PayQueryAdapterResult queryResult,boolean isScheduleTask,boolean composeSingleOrder) { Date curDate = new Date(); if (oldRecord.getPayOrderStatus() != EnumPayStatus.PAY_STATUS_SUCCESS.getCode()) { + WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); //因为此处是处理订单支付成功了但是订单状态为未支付成功的异常状态,库存不应该再扣减 //更新wxPayOrder oldRecord.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); @@ -132,49 +136,60 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { oldRecord.setUpdateTime(curDate); wxPayOrderMapper.updateById(oldRecord); - //处理其他信息 - WxCoupon wxCoupon = wxCouponMapper.selectById(order.getProductId(),order.getTenantId()); - if(wxCoupon != null) { - if (isOrderGroupCoupon(oldRecord, wxCoupon)) { - // 如果是Coupon是拼团, 创建拼团信息, 不创建COUPON_ORDER - try { - wxOrderGroupService.createOrderGroup(order, wxCoupon,isScheduleTask); - } catch (Exception e) { - logger.error("参团失败" + e.getMessage(),e); - order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_FAILD.getCode()); - order.setUpdateDate(new Date()); - wxOrderMapper.updateById(order); - throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD); - } - } else { - // 普通券, 修改订单状态 - try { - wxOrderService.couponOrderSuccess(order); - } catch (Exception e) { - logger.error(e.getMessage(),e); - throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "订单更新"); - } - - // 下订单完成,发送内部消息 - try { - wxOrderService.sendOrderSuccessActionMsg(order); - } catch (Exception e) { - logger.error("内部消息发送失败: " + e.getMessage(),e); - throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); - } - } - } - + if (isComposeOrder(oldRecord)) { + //如果是组合订单的单独处理。如定时处理的单个订单 + if (composeSingleOrder) { + //处理其他信息 + try { + proxy.handleOrderPaySingleOrderSuccess(oldRecord, order, transactionId,isScheduleTask); + }catch(Exception e) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + }else { + if ( null == composeOrder) { + throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(),"composeOrder is null."); + } + List orderList = getComposeChildOrders(composeOrder.getId(),oldRecord); + for (WxOrder o : orderList) { + try { + proxy.handleOrderPaySingleOrderSuccess(oldRecord, o, transactionId, isScheduleTask); + }catch(Exception e) { + logger.error("handleSuccessOrder error.",e); + } + } + } + }else { + //处理其他信息 + try { + proxy.handleOrderPaySingleOrderSuccess(oldRecord, order, transactionId,isScheduleTask); + }catch(Exception e) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + } } - + } + + private boolean isComposeOrder(WxPayOrder record) { + if ((null != record.getComposeOrder()) && (EnumComposeOrder.YES.getCode().intValue() == record.getComposeOrder().intValue())) { + return true; + } + return false; + } + + private List getComposeChildOrders(Long composeOrderId,TenantEntity tenantEntity) { + WxOrder orderq = new WxOrder(); + orderq.setComposeOrderId(composeOrderId); + orderq.updateTenantInfo(tenantEntity); + List orderList = wxOrderService.findList(orderq); + return orderList; } @Override - public WxPayOrder handleWxOrderQuery(WxPayOrder oldRecord,WxOrder order,WxAppinfo appInfo,WxPayAccount payAccount,IdWorker idworker,boolean repeatPay) { + public WxPayOrder handleWxOrderQuery(WxPayOrder oldRecord,WxComposeOrder composeOrder,WxOrder order,WxAppinfo appInfo,WxPayAccount payAccount,IdWorker idworker,boolean repeatPay) { PayQueryAdapterResult queryResult = null; int wxpaystatus = 0; try { - queryResult = payServiceFactory.getPayAdapterService(oldRecord.getPayVendor()).queryPayStatus(oldRecord, order, appInfo, payAccount); + queryResult = payServiceFactory.getPayAdapterService(oldRecord.getPayVendor()).queryPayStatus(oldRecord, appInfo, payAccount); wxpaystatus = payServiceFactory.getPayAdapterService(oldRecord.getPayVendor()).queryPayStatus(queryResult, oldRecord.getPayOrderNo()); } catch (Exception e) { logger.error("pay order service handleWxOrderQuery error: " ,e); @@ -184,7 +199,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if (EnumPayStatus.PAY_STATUS_SUCCESS.getCode()==wxpaystatus) { //直接调用不会触发事务,spring事务基于AOP代理 WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); - proxy.handleSuccessOrder(oldRecord,order,queryResult,false); + proxy.handleSuccessOrder(oldRecord,composeOrder,order,queryResult,false,false); throw new MallinkException(ErrorCode.PAY_ORDER_EXIST.getCode(),"该订单已经支付,请勿重复支付!"); }else if (EnumPayStatus.PAY_STATUS_REFUND.getCode()==wxpaystatus) { throw new MallinkException(ErrorCode.PAY_ORDER_REFUND.getCode(),"该订单已经退款,无法支付!"); @@ -211,81 +226,123 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { return null; } - @Override public ResultData createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user, WxPayOrder record, EnumPayWay payWay,PayExtraParam params) { - IdWorker idworker = IdWorker.get(); - - EnumPayShare isShare = EnumPayShare.NO; - - try { + /* + * 如果是组合订单(非拼团、砍价),则结算按照主订单来结算。 + * //如果是组合订单,则wxPayOrder对应的是WxcomposeOrder.为了兼容之前的,需要把支付相关信息也保存到子订单里面去 + * //如果是非组合订单,则wxPayOrder对应的是wxOrder + */ + WxComposeOrder composeOrder = null; + WxOrder order = null; + if (isComposeOrder(record)) { + composeOrder = wxComposeOrderMapper.selectById(record.getOrderId(), appInfo.getTenantId()); + if (null == composeOrder) { + logger.error("pay order, order not allow, repaymentReq: " + record.toString() + ", payWay: " + payWay.toString()); + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); + } + List orderList = getComposeChildOrders(composeOrder.getId(),appInfo.getTenantInfo()); + for (WxOrder o : orderList) { + checkSinglePayOrder(o, user, payWay); + } + + }else { // 1. check 订单 - WxOrder order = wxOrderMapper.selectById(record.getOrderId(),appInfo.getTenantId()); + order = wxOrderMapper.selectById(record.getOrderId(),appInfo.getTenantId()); if (order == null) { logger.error("pay order, order not allow, repaymentReq: " + record.toString() + ", payWay: " + payWay.toString()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); } - if (!order.getOrderGroupId().equals(0L)) { - if (order.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode())) { - logger.error("支付时拼团已满>>" + order.getOrderGroupId()); - throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FINISHED); - } - WxOrder orderParams = new WxOrder(); - orderParams.setOrderGroupId(order.getOrderGroupId()); - orderParams.setCUserId(user.getId()); - List orderstatuslist = new ArrayList(); - orderstatuslist.add(EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode()); - orderstatuslist.add(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode()); - orderParams.setStatusS(orderstatuslist); - List olist = wxOrderMapper.findList(orderParams); - if (olist == null || olist.size() <=0 ) { - throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"未查询到参团订单[user:"+user.getId()+",groupId:"+order.getOrderGroupId()+"]"); - } - if (olist.size() != 1) { - throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"参团订单多条[user:"+user.getId()+",groupId:"+order.getOrderGroupId()+"]"); - } - WxOrder orderq = olist.get(0); - if (null == orderq) { - throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"未查询到参团订单[user:"+user.getId()+",groupId:"+order.getOrderGroupId()+"]"); - } - if (orderq.getOrderStatus()==EnumOrderStatus.ORDER_STATUS_COOPERATING.getCode()) { - throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_ATTEND.getCode(),"不能重复参团订单[user:"+user.getId()+",groupId:"+order.getOrderGroupId()+"]"); - } + checkSinglePayOrder(order, user, payWay); + } + PayAdapterResult payResult = createPayOrder(appInfo, user, record,composeOrder,order, payWay, params); + if (payResult.isSuccess()) { + return new ResultData(Result.SUCCESS,"创建支付单成功",payResult.getData()); + }else { + return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), payResult.getMsg(), payResult.getData()); + } + } + + + private void checkSinglePayOrder(WxOrder order,WxCUserBasicInfo user,EnumPayWay payWay) { + if (!order.getOrderGroupId().equals(0L)) { + if (order.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode())) { + logger.error("支付时拼团已满>>" + order.getOrderGroupId()); + throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FINISHED); } - - WxCoupon wxCoupon = wxCouponMapper.selectById(order.getProductId(),order.getTenantId()); - if (wxCoupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode()) && - wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode())) { - logger.error("券已经下架了>>>" + order.getProductId()); - throw new MallinkException(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF); + WxOrder orderParams = new WxOrder(); + orderParams.setOrderGroupId(order.getOrderGroupId()); + orderParams.setCUserId(user.getId()); + List orderstatuslist = new ArrayList(); + orderstatuslist.add(EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode()); + orderstatuslist.add(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode()); + orderParams.setStatusS(orderstatuslist); + List olist = wxOrderMapper.findList(orderParams); + if (olist == null || olist.size() <=0 ) { + throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"未查询到参团订单[user:"+user.getId()+",groupId:"+order.getOrderGroupId()+"]"); } + if (olist.size() != 1) { + throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"参团订单多条[user:"+user.getId()+",groupId:"+order.getOrderGroupId()+"]"); + } + WxOrder orderq = olist.get(0); + if (null == orderq) { + throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"未查询到参团订单[user:"+user.getId()+",groupId:"+order.getOrderGroupId()+"]"); + } + if (orderq.getOrderStatus()==EnumOrderStatus.ORDER_STATUS_COOPERATING.getCode()) { + throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_ATTEND.getCode(),"不能重复参团订单[user:"+user.getId()+",groupId:"+order.getOrderGroupId()+"]"); + } + } - if (!wxCoupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode()) && order.getPressEndDate() == null) { - // 非砍价券且非拼团券 - if (order.getOrderStatus() == EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()) { + WxCoupon wxCoupon = wxCouponMapper.selectById(order.getProductId(),order.getTenantId()); + if (wxCoupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode()) && + wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode())) { + logger.error("券已经下架了>>>" + order.getProductId()); + throw new MallinkException(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF); + } + + if (!wxCoupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode()) && order.getPressEndDate() == null) { + // 非砍价券且非拼团券 + if (order.getOrderStatus() == EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()) { + logger.error("订单已支付: " + order.toString() + " , payWay: " + payWay.toString()); + throw new MallinkException(ErrorCode.ORDER_HAD_PAY); + } else if (order.getOrderStatus() == EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()) { + logger.error("订单已取消: " + order.toString() + " , payWay: " + payWay.toString()); + throw new MallinkException(ErrorCode.ORDER_HAD_CANCEL); + } else { + if (order.getOrderStatus() != EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()) { logger.error("订单已支付: " + order.toString() + " , payWay: " + payWay.toString()); - throw new MallinkException(ErrorCode.ORDER_HAD_PAY); - } else if (order.getOrderStatus() == EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()) { - logger.error("订单已取消: " + order.toString() + " , payWay: " + payWay.toString()); - throw new MallinkException(ErrorCode.ORDER_HAD_CANCEL); - } else { - if (order.getOrderStatus() != EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()) { - logger.error("订单已支付: " + order.toString() + " , payWay: " + payWay.toString()); - throw new MallinkException(ErrorCode.ORDER_IS_NOT_PAY); - } - } - } else if (order.getPressEndDate() != null) { - // 砍价券,只有在过期时无法支付 - // 砍价中,原价购买 - // 砍价完成,低价购买 - if (order.getOrderStatus() == EnumOrderStatus.ORDER_STATUS_PRESS_OVERTIME.getCode()) { - logger.error("砍价已过期: " + order.toString() + " , payWay: " + payWay.toString()); - throw new MallinkException(ErrorCode.ORDER_PRESS_IS_OVERTIME); + throw new MallinkException(ErrorCode.ORDER_IS_NOT_PAY); } } - if (order.getPaymentType() != EnumPayType.PAY_PAYMENT.getCode()) { - return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); + } else if (order.getPressEndDate() != null) { + // 砍价券,只有在过期时无法支付 + // 砍价中,原价购买 + // 砍价完成,低价购买 + if (order.getOrderStatus() == EnumOrderStatus.ORDER_STATUS_PRESS_OVERTIME.getCode()) { + logger.error("砍价已过期: " + order.toString() + " , payWay: " + payWay.toString()); + throw new MallinkException(ErrorCode.ORDER_PRESS_IS_OVERTIME); } + } + if (order.getPaymentType() != EnumPayType.PAY_PAYMENT.getCode()) { + throw new MallinkException(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); + } + } + + private PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder,WxOrder order, EnumPayWay payWay,PayExtraParam params) { + /** + * 如果composeOrder存在,支付关联composeOrder + * 如果composeOrder不存在,支付关联WxOrder + */ + boolean isComposeOrder = isComposeOrder(record); + Long orderId = order.getId(); + if (isComposeOrder) { + orderId = composeOrder.getId(); + } + + IdWorker idworker = IdWorker.get(); + EnumPayShare isShare = EnumPayShare.NO; + + try { WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); if (payAccount.checkShare()) { isShare = EnumPayShare.YES; @@ -294,7 +351,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { Date currentDate = new Date(); //一个订单只有一条支付记录。 WxPayOrder orderq = new WxPayOrder(); - orderq.setOrderId(record.getOrderId()); + orderq.setOrderId(orderId); List list = wxPayOrderMapper.findList(orderq); WxPayOrder oldRecord = null; if (null != list && list.size() > 0) { @@ -308,7 +365,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { throw new MallinkException(ErrorCode.PAY_ORDER_EXIST); //如果是支付中的,则调用微信接口查询支付状态 }else if (oldRecord.getPayOrderStatus()==EnumPayStatus.PAY_STATUS_WAIT.getCode()) { - record = handleWxOrderQuery(oldRecord,order,appInfo,payAccount,idworker,true); + record = handleWxOrderQuery(oldRecord,composeOrder,order,appInfo,payAccount,idworker,true); if (null == record) { throw new MallinkException(ErrorCode.PAY_ORDER_PAYING.getCode(),"订单微信查询支付状态失败!"); } @@ -347,6 +404,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setPayVendor(payWay.getCode()); record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); record.setShare(isShare.getCode()); + if (isComposeOrder) { + record.setComposeOrder(EnumComposeOrder.YES.getCode()); + } if (isShare == EnumPayShare.YES) { // 分账金额 int iChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRate(), false); @@ -370,7 +430,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.debug("wxPayRecord md5 before:"+record.toString()); String beforemd5 = HashUtil.md5(record.toString()); - PayAdapterResult payResult = payServiceFactory.getPayAdapterService(payWay.getCode()).pay(payAccount, order, record,isShare,appInfo, currentDate, params); + PayAdapterResult payResult = payServiceFactory.getPayAdapterService(payWay.getCode()).pay(payAccount, composeOrder,order, record,isShare,appInfo, currentDate, params); String aftermd5 = HashUtil.md5(record.toString()); if (beforemd5.equals(aftermd5)) { logger.error("支付方式["+payWay.getCode()+"]支付接口【pay】过程中 WxPayOrder 未做更新.record:"+record.toString()); @@ -383,12 +443,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error("pay order update error: " + record.toString()); throw new MallinkException(ErrorCode.DB_FAIL); } - - if (payResult.isSuccess()) { - return new ResultData(Result.SUCCESS, "创建支付订单成功", payResult.getData()); - }else { - return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), payResult.getMsg(), payResult.getData()); - } + return payResult; } catch (RuntimeException e) { logger.error("createwxpayorder error:",e); throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); @@ -479,7 +534,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.debug("wxPayRecord md5 before:"+record.toString()); String beforemd5 = HashUtil.md5(record.toString()); - PayAdapterResult payResult = payServiceFactory.getPayAdapterService(payWay.getCode()).pay(payAccount, order, record,isShare,appInfo, currentDate, params); + PayAdapterResult payResult = payServiceFactory.getPayAdapterService(payWay.getCode()).pay(payAccount, null,order, record,isShare,appInfo, currentDate, params); String aftermd5 = HashUtil.md5(record.toString()); if (beforemd5.equals(aftermd5)) { logger.error("支付方式["+payWay.getCode()+"]支付接口【pay】过程中 WxPayOrder 未做更新.record:"+record.toString()); @@ -538,15 +593,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), "payOrder not found"); } - WxOrder order = wxOrderMapper.selectById(record.getOrderId(),payOrder.getTenantId()); - if (order == null) { - return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), "Order not found"); - } - WxAppinfo appInfo = wxAppinfoService.getCAppInfo(record,payWay); PayAdapterService payService = payServiceFactory.getPayAdapterService(payWay.getCode()); WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); - PayQueryAdapterResult apiResult = payService.queryPayStatus(record, order, appInfo, payAccount); + PayQueryAdapterResult apiResult = payService.queryPayStatus(record, appInfo, payAccount); int status = payServiceFactory.getPayAdapterService(payWay.getCode()).queryPayStatus(apiResult, record.getPayOrderNo()); boolean isSuccess = true; String msg = ""; @@ -574,15 +624,15 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { }else if (status == EnumPayStatus.PAY_STATUS_ORDER_NOT_EXISTS.getCode().intValue()) { isSuccess = false; // 支付订单不存在, 订单失败 - WxOrder updateOrderForMicroPay = new WxOrder(); - updateOrderForMicroPay.setId(order.getId()); - updateOrderForMicroPay.setOrderStatus(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); - try { - wxOrderMapper.updateById(updateOrderForMicroPay); - } catch (Exception e) { - logger.error(e.getMessage()); - } - msg = "订单支付渠道支付单不存在。orderId:"+order.getId(); +// WxOrder updateOrderForMicroPay = new WxOrder(); +// updateOrderForMicroPay.setId(order.getId()); +// updateOrderForMicroPay.setOrderStatus(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); +// try { +// wxOrderMapper.updateById(updateOrderForMicroPay); +// } catch (Exception e) { +// logger.error(e.getMessage()); +// } + msg = "订单支付渠道支付单不存在。payOrder:"+payOrder.getId(); }else { isSuccess = false; msg = apiResult.getMsg(); @@ -761,7 +811,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder handler(WxPayOrder record, String transactionId,Long cUserId) { + public void handler(WxPayOrder record,WxComposeOrder composeOrder,List composeChildOrders,WxOrder order, String transactionId,Long cUserId) { Date currentDate = new Date(); EnumPayStatus payStatus = EnumPayStatus.getEnum(record.getPayOrderStatus()); // 判断支付状态 @@ -779,29 +829,52 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error(e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL); } - return null; + return ; } if (payStatus != EnumPayStatus.PAY_STATUS_WAIT) { logger.info("pay success handle, payOrder " + record.getPayOrderNo() + "is paid success , orderId : " + record.getOrderId()); - return null; - } - WxOrder order = wxOrderMapper.selectById(record.getOrderId(),record.getTenantId()); - if (order == null) { - logger.error("pay success handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo()); - throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); + return; } - if (null != cUserId) { - WxOrder __order = new WxOrder(); - __order.setId(order.getId()); - __order.setCUserId(cUserId); - wxOrderMapper.updateById(__order); + + if ((null != record.getComposeOrder()) && (EnumComposeOrder.YES.getCode().intValue() == record.getComposeOrder().intValue()) ) { + if (composeOrder == null) { + logger.error("pay success handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo()); + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); + } + if (null != cUserId) { + composeOrder.setCUserId(cUserId); + wxComposeOrderMapper.updateCUserId(composeOrder); + + if (null != composeChildOrders) { + List ids = new ArrayList(); + for (WxOrder o : composeChildOrders) { + ids.add(o.getId()); + } + if (ids.size() > 0 ) { + WxOrder updateOrders = new WxOrder(); + updateOrders.setIds(ids); + updateOrders.setCUserId(cUserId); + updateOrders.updateTenantInfo(order); + wxOrderMapper.updateCUserId(updateOrders); + } + } + } + }else { + if (order == null) { + logger.error("pay success handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo()); + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); + } + if (null != cUserId) { + order.setCUserId(cUserId); + wxOrderMapper.updateCUserId(order); + } } // 修改支付订单状态 WxPayOrder updateOrder = new WxPayOrder(); updateOrder.setId(record.getId()); - updateOrder.updateTenantInfo(order); + updateOrder.updateTenantInfo(record); updateOrder.setOrderId(record.getOrderId()); updateOrder.setUpdateTime(currentDate); if (null != cUserId) { @@ -815,24 +888,36 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error("支付订单数据库更新失败: " + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "支付订单数据库更新失败: " + e.getMessage()); } - return order; } @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public void handleOrderPaySuccess(WxPayOrder record, String transactionId) { WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); - WxOrder order = proxy.handler(record,transactionId,null); - if (null == order ) { - return; + if (isComposeOrder(record)) { + WxComposeOrder composeOrder = wxComposeOrderMapper.selectById(record.getOrderId(), record.getTenantId()); + List orderList = getComposeChildOrders(composeOrder.getId(),record); + proxy.handler(record,composeOrder,orderList,null,transactionId,null); + //组合支付的订单,循环所有子订单 + for (WxOrder o : orderList) { + proxy.handleOrderPaySingleOrderSuccess(record, o, transactionId, false); + } + }else { + WxOrder order = wxOrderMapper.selectById(record.getOrderId(),record.getTenantId()); + proxy.handler(record,null,null,order,transactionId,null); + proxy.handleOrderPaySingleOrderSuccess(record, order, transactionId,false); } - Long productId = order.getProductId(); + } + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void handleOrderPaySingleOrderSuccess(WxPayOrder record,WxOrder order, String transactionId,boolean isScheduleTask) { + Long productId = order.getProductId(); WxCoupon wxCoupon = wxCouponMapper.selectById(productId,order.getTenantId()); if(wxCoupon != null) { if (isOrderGroupCoupon(record, wxCoupon)) { // 如果是Coupon是拼团, 创建拼团信息, 不创建COUPON_ORDER try { - wxOrderGroupService.createOrderGroup(order, wxCoupon,false); + wxOrderGroupService.createOrderGroup(order, wxCoupon,isScheduleTask); } catch (Exception e) { logger.error("参团失败" + e.getMessage()); order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_FAILD.getCode()); @@ -900,10 +985,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); - WxOrder order = proxy.handler(record,transcationId,basicUserId); - if (null == order) { - return; - } + WxOrder order = wxOrderMapper.selectById(record.getOrderId(),record.getTenantId()); + proxy.handler(record, null, null, order, transcationId, basicUserId); // B端收银台核销券处理, 收银台支付和券支付可能不是同一个人 WxPayOrder payOrderQ = new WxPayOrder(); payOrderQ.setOrderId(order.getId()); @@ -1097,16 +1180,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } - @Override - @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void handlePayOrderFail(WxPayOrder record, int status) { - // 判断支付状态 - if (record.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_WAIT.getCode())) { - logger.error("pay handle, payOrder " + record.getPayOrderNo() + - "is complete, orderId : " + record.getOrderId()); - return; - } - WxOrder order = wxOrderMapper.selectById(record.getOrderId(),record.getTenantId()); + private void checkSingleOrder(WxOrder order,WxPayOrder record) { if (order == null) { logger.error("pay handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); @@ -1126,7 +1200,36 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { throw new MallinkException(ErrorCode.PAY_ORDER_NOT_FOUND); } } - + } + + @Override + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void handlePayOrderFail(WxPayOrder record, int status) { + // 判断支付状态 + if (record.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_WAIT.getCode())) { + logger.error("pay handle, payOrder " + record.getPayOrderNo() + + "is complete, orderId : " + record.getOrderId()); + return; + } + + WxComposeOrder composeOrder = null; + WxOrder order = null; + boolean isComposeOrder = isComposeOrder(record); + List orderList = null; + if (isComposeOrder) { + composeOrder = wxComposeOrderMapper.selectById(record.getOrderId(), record.getTenantId()); + if (composeOrder == null) { + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); + } + orderList = getComposeChildOrders(composeOrder.getId(),record); + for (WxOrder o : orderList) { + checkSingleOrder(o, record); + } + }else { + order = wxOrderMapper.selectById(record.getOrderId(),record.getTenantId()); + checkSingleOrder(order, record); + } + if (record.getId() > 0) { // 有价券 if (EnumPayStatus.PAY_STATUS_FAIL.getCode() == status) { @@ -1136,7 +1239,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { // 回调未返回,主动检查支付订单状态 try { WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); - int payStatus = payServiceFactory.getPayAdapterService(record.getPayVendor()).queryPayStatusCode(record, order, appInfo, payAccount); + int payStatus = payServiceFactory.getPayAdapterService(record.getPayVendor()).queryPayStatusCode(record, appInfo, payAccount); if (payStatus!=EnumPayStatus.PAY_STATUS_SUCCESS.getCode().intValue() && payStatus!=EnumPayStatus.PAY_STATUS_WAIT.getCode().intValue()) { // 支付订单未成功,返回异常 record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_FAIL.getCode()); @@ -1173,10 +1276,16 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { */ } else if (record.getPayOrderStatus() == EnumPayStatus.PAY_STATUS_CANCEL.getCode()) { try { - int _count = wxOrderService.updateOrderStatus(order, EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); - if (_count > 1) { - throw new MallinkException(ErrorCode.ORDER_IS_FAIL); - } + if (isComposeOrder && null != orderList) { + for (WxOrder o : orderList) { + wxOrderService.updateOrderStatus(o, EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); + } + }else { + int _count = wxOrderService.updateOrderStatus(order, EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); + if (_count > 1) { + throw new MallinkException(ErrorCode.ORDER_IS_FAIL); + } + } } catch (Exception e) { logger.error(e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index e3f3290ac..cf3a23df6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -197,7 +197,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { if (null == payAccount) { throw new MallinkException(ErrorCode.PAY_ORDER_QUERY_ERROR.getCode(), "payAccount为空[payId:"+appInfo.getPayId()+"]"); } - int status = WxPayOrderServiceHelper.wxOrderPayStatus(payOrder, wxOrder, appInfo, payAccount); + int status = WxPayOrderServiceHelper.wxOrderPayStatus(payOrder, appInfo, payAccount); if (EnumPayStatus.PAY_STATUS_SUCCESS.getCode() != status) { return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(),"该订单查询微信支付状态为未支付成功,无法退款。"); } diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java index 989653a78..97013e95c 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java @@ -5,6 +5,7 @@ import java.util.Date; import java.util.Map; import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxComposeOrder; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxPayOrder; @@ -27,7 +28,7 @@ public interface PayAdapterService { * @return * @throws Exception */ - public PayAdapterResult pay(WxPayAccount payAccount,WxOrder order,WxPayOrder record ,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception; + public PayAdapterResult pay(WxPayAccount payAccount,WxComposeOrder composeOrder,WxOrder order,WxPayOrder record ,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception; /** * 查询支付结果,调用对应端的API查询支付结果 @@ -38,7 +39,7 @@ public interface PayAdapterService { * @return * @throws Exception */ - public PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord,WxOrder order,WxAppinfo appInfo,WxPayAccount payAccount) throws Exception; + public PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord,WxAppinfo appInfo,WxPayAccount payAccount) throws Exception; /** * 根据返回结果对象解析出支付状态 @@ -58,7 +59,7 @@ public interface PayAdapterService { * @return * @throws Exception */ - public int queryPayStatusCode(WxPayOrder oldRecord,WxOrder order,WxAppinfo appInfo,WxPayAccount payAccount) throws Exception; + public int queryPayStatusCode(WxPayOrder oldRecord,WxAppinfo appInfo,WxPayAccount payAccount) throws Exception; /** * API关闭订单 diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java index 5dfb38dbb..9e9661072 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java @@ -16,6 +16,7 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.PosCouponOrderVerify; import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxComposeOrder; import com.iformall.domain.po.WxCouponOrder; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; @@ -50,9 +51,9 @@ import me.chanjar.weixin.open.api.WxOpenService; @Slf4j public class BaseWxPayAdapterService { - protected PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord, WxOrder order, WxAppinfo appInfo, WxPayAccount payAccount) + protected PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception { - Map retMap = WxPayOrderServiceHelper.wxOrderPayStatusMap(oldRecord, order, appInfo, payAccount); + Map retMap = WxPayOrderServiceHelper.wxOrderPayStatusMap(oldRecord, appInfo, payAccount); int code = WxPayOrderServiceHelper.getPayStatusFromMap(retMap,oldRecord.getPayOrderNo()); String msg = WxPayOrderServiceHelper.getPayStatusMsg(retMap, oldRecord.getPayOrderNo()); PayQueryAdapterResult result = new PayQueryAdapterResult(code, msg, retMap,retMap.get("transaction_id"),retMap.get("time_end")); @@ -63,9 +64,9 @@ public class BaseWxPayAdapterService { return WxPayOrderServiceHelper.getPayStatusFromMap((Map) statusObject.getData(),orderOutNo); } - protected int queryPayStatusCode(WxPayOrder oldRecord, WxOrder order, WxAppinfo appInfo, WxPayAccount payAccount) + protected int queryPayStatusCode(WxPayOrder oldRecord, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception { - return WxPayOrderServiceHelper.wxOrderPayStatus(oldRecord, order, appInfo, payAccount); + return WxPayOrderServiceHelper.wxOrderPayStatus(oldRecord, appInfo, payAccount); } JSONObject errorMapClose = JSON.parseObject("{" + diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java index a61a5903c..c6290e5cc 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java @@ -7,6 +7,7 @@ import java.util.Map; import org.springframework.stereotype.Service; import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxComposeOrder; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxPayOrder; @@ -21,16 +22,16 @@ import com.iformall.service.pay.service.pay.wx.BaseWxPayAdapterService; public class WxH5PayService extends BaseWxPayAdapterService implements CDrivingPayService{ @Override - public PayAdapterResult pay(WxPayAccount payAccount, WxOrder order, WxPayOrder record, EnumPayShare isShare, + public PayAdapterResult pay(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order, WxPayOrder record, EnumPayShare isShare, WxAppinfo appInfo, Date currentDate, PayExtraParam params) throws Exception { // TODO Auto-generated method stub return null; } @Override - public PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord, WxOrder order, WxAppinfo appInfo, + public PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception { - return super.queryPayStatus(oldRecord, order, appInfo, payAccount); + return super.queryPayStatus(oldRecord, appInfo, payAccount); } @Override @@ -39,9 +40,9 @@ public class WxH5PayService extends BaseWxPayAdapterService implements CDriving } @Override - public int queryPayStatusCode(WxPayOrder oldRecord, WxOrder order, WxAppinfo appInfo, WxPayAccount payAccount) + public int queryPayStatusCode(WxPayOrder oldRecord, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception { - return super.queryPayStatusCode(oldRecord, order, appInfo, payAccount); + return super.queryPayStatusCode(oldRecord, appInfo, payAccount); } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java index 82f4985f5..9c7514669 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java @@ -13,6 +13,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxComposeOrder; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxPayOrder; @@ -59,7 +60,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen "\"NOT_UTF8\":{\"detail\":\"编码格式错误\",\"reason\":\"未使用指定编码格式\",\"resolution\":\"请使用UTF-8编码格式\"}}"); - private WxPayOrderP generateWxPayOrderP(WxPayAccount payAccount, WxOrder order, WxPayOrder record,String openId,String appId,Date currentDate) throws Exception { + private WxPayOrderP generateWxPayOrderP(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order, WxPayOrder record,String openId,String appId,Date currentDate) throws Exception { // 统一下单 普通商户模式 String noncestr = Utility.generate32UUID(); WxPayOrderP wxPayOrderP = new WxPayOrderP(); @@ -67,14 +68,30 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen wxPayOrderP.setAppid(appId); wxPayOrderP.setMch_id(payAccount.getMchId()); wxPayOrderP.setNonce_str(noncestr); - wxPayOrderP.setBody(order.getDetail()); + if (null != composeOrder) { + wxPayOrderP.setBody("组合商品"); + }else { + wxPayOrderP.setBody(order.getDetail()); + } wxPayOrderP.setOut_trade_no(record.getPayOrderNo()); - wxPayOrderP.setTotal_fee(order.getPayment()); + if (null != composeOrder) { + wxPayOrderP.setTotal_fee(composeOrder.getPayment()); + }else { + wxPayOrderP.setTotal_fee(order.getPayment()); + } wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP - wxPayOrderP.setGoods_tag(String.valueOf(order.getProductId())); + if (null != composeOrder) { + wxPayOrderP.setGoods_tag("组合商品"); + }else { + wxPayOrderP.setGoods_tag(String.valueOf(order.getProductId())); + } wxPayOrderP.setNotify_url(payAccount.getPayNotifyUrl()); wxPayOrderP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型 - wxPayOrderP.setProduct_id(String.valueOf(order.getId())); // 订单ID + if (null != composeOrder) { + wxPayOrderP.setProduct_id(String.valueOf(composeOrder.getId())); // 订单ID + }else { + wxPayOrderP.setProduct_id(String.valueOf(order.getId())); + } wxPayOrderP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate)); Date futureDate = new Date(); futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); @@ -133,7 +150,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen - private WxPayOrderSP generateWxPayOrderSP(WxPayAccount payAccount, WxOrder order, WxPayOrder record,WxAppinfo appInfo,String openId,String appId,Date currentDate,EnumPayShare isShare) throws Exception { + private WxPayOrderSP generateWxPayOrderSP(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order, WxPayOrder record,WxAppinfo appInfo,String openId,String appId,Date currentDate,EnumPayShare isShare) throws Exception { String noncestr = Utility.generate32UUID(); WxPayOrderSP wxPayOrderSP = new WxPayOrderSP(); wxPayOrderSP.setSub_openid(openId); @@ -142,14 +159,27 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen wxPayOrderSP.setSub_appid(appId); wxPayOrderSP.setSub_mch_id(payAccount.getSubMchId()); wxPayOrderSP.setNonce_str(noncestr); - wxPayOrderSP.setBody(order.getDetail()); + if (null != composeOrder) { + wxPayOrderSP.setBody("组合商品"); + }else { + wxPayOrderSP.setBody(order.getDetail()); + } + wxPayOrderSP.setOut_trade_no(record.getPayOrderNo()); - wxPayOrderSP.setTotal_fee(order.getPayment().toString()); + if (null != composeOrder) { + wxPayOrderSP.setTotal_fee(composeOrder.getPayment().toString()); + }else { + wxPayOrderSP.setTotal_fee(order.getPayment().toString()); + } wxPayOrderSP.setSpbill_create_ip(record.getIp()); // 终端IP wxPayOrderSP.setGoods_tag(String.valueOf(order.getProductId())); // 券ID wxPayOrderSP.setNotify_url(payAccount.getPayNotifyUrl()); wxPayOrderSP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型 - wxPayOrderSP.setProduct_id(String.valueOf(order.getProductId())); // 券ID + if (null != composeOrder) { + wxPayOrderSP.setProduct_id("组合商品"); // 券ID + }else { + wxPayOrderSP.setProduct_id(String.valueOf(order.getProductId())); + } wxPayOrderSP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate)); Date futureDate = new Date(); futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); @@ -212,7 +242,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen @Override - public PayAdapterResult pay(WxPayAccount payAccount, WxOrder order, WxPayOrder record,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception { + public PayAdapterResult pay(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order, WxPayOrder record,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception { if (null == params ) { throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"openId为空"); } @@ -222,7 +252,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen } //普通商户模式 if (payAccount.getType() == EnumPayMode.MCH.getCode()) { - WxPayOrderP wxPayOrderP = generateWxPayOrderP(payAccount,order,record,openId,appInfo.getAppId(),currentDate); + WxPayOrderP wxPayOrderP = generateWxPayOrderP(payAccount,composeOrder,order,record,openId,appInfo.getAppId(),currentDate); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderP)); log.info("pay order, wechat pushOrder, " + wxPayOrderP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); @@ -230,7 +260,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen } else { // 统一下单 // 服务商模式 - WxPayOrderSP wxPayOrderSP = generateWxPayOrderSP(payAccount,order,record,appInfo,openId,appInfo.getAppId(),currentDate,isShare); + WxPayOrderSP wxPayOrderSP = generateWxPayOrderSP(payAccount,composeOrder,order,record,appInfo,openId,appInfo.getAppId(),currentDate,isShare); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderSP)); log.info("pay order, wechat pushOrder, " + wxPayOrderSP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); @@ -239,9 +269,9 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen } @Override - public PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord, WxOrder order, WxAppinfo appInfo, + public PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception { - return super.queryPayStatus(oldRecord, order, appInfo, payAccount); + return super.queryPayStatus(oldRecord,appInfo, payAccount); } @Override @@ -250,9 +280,9 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen } @Override - public int queryPayStatusCode(WxPayOrder oldRecord, WxOrder order, WxAppinfo appInfo, WxPayAccount payAccount) + public int queryPayStatusCode(WxPayOrder oldRecord, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception { - return super.queryPayStatusCode(oldRecord, order, appInfo, payAccount); + return super.queryPayStatusCode(oldRecord, appInfo, payAccount); } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java index fec927337..7bf07dca4 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java @@ -12,6 +12,7 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxComposeOrder; import com.iformall.domain.po.WxMall; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; @@ -45,7 +46,7 @@ import me.chanjar.weixin.common.error.WxErrorException; @Service public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implements CPassivePayService{ - private WxMicroPayOrderP generateWxMicroPayOrderP(WxPayAccount payAccount, WxOrder order, WxPayOrder record, EnumPayShare isShare, + private WxMicroPayOrderP generateWxMicroPayOrderP(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order, WxPayOrder record, EnumPayShare isShare, WxAppinfo appInfo, Date currentDate,String bAppId,String bUserPhone) throws Exception { String noncestr = Utility.generate32UUID(); WxMicroPayOrderP wxPayOrderP = new WxMicroPayOrderP(); @@ -53,7 +54,11 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement wxPayOrderP.setMch_id(payAccount.getMchId()); wxPayOrderP.setDevice_info(bUserPhone); wxPayOrderP.setNonce_str(noncestr); - wxPayOrderP.setBody(order.getDetail()); + if (null != composeOrder) { + wxPayOrderP.setBody("组合商品"); + }else { + wxPayOrderP.setBody(order.getDetail()); + } wxPayOrderP.setOut_trade_no(record.getPayOrderNo()); wxPayOrderP.setTotal_fee(record.getPayAmount()); wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP @@ -99,7 +104,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement } - private WxMicroPayOrderSP generateWxMicroPayOrderSP(WxPayAccount payAccount, WxOrder order, WxPayOrder record, EnumPayShare isShare, + private WxMicroPayOrderSP generateWxMicroPayOrderSP(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order,WxPayOrder record, EnumPayShare isShare, WxAppinfo appInfo, Date currentDate,String bUserPhone) throws Exception { String noncestr = Utility.generate32UUID(); WxMicroPayOrderSP wxPayOrderSP = new WxMicroPayOrderSP(); @@ -109,7 +114,11 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement wxPayOrderSP.setSub_mch_id(payAccount.getSubMchId()); wxPayOrderSP.setDevice_info(bUserPhone); wxPayOrderSP.setNonce_str(noncestr); - wxPayOrderSP.setBody(order.getDetail()); + if (null != composeOrder) { + wxPayOrderSP.setBody("组合商品"); + }else { + wxPayOrderSP.setBody(order.getDetail()); + } wxPayOrderSP.setOut_trade_no(record.getPayOrderNo()); wxPayOrderSP.setTotal_fee(record.getPayAmount()); wxPayOrderSP.setSpbill_create_ip(record.getIp()); @@ -161,7 +170,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement @Override - public PayAdapterResult pay(WxPayAccount payAccount, WxOrder order, WxPayOrder record, EnumPayShare isShare, + public PayAdapterResult pay(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order, WxPayOrder record, EnumPayShare isShare, WxAppinfo appInfo, Date currentDate, PayExtraParam params) throws Exception { if (payAccount.getType() == EnumPayMode.MCH.getCode()) { // 扫码支付 普通商户模式 @@ -174,7 +183,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"bUserPhone 不能为空"); } - WxMicroPayOrderP wxPayOrderP = generateWxMicroPayOrderP(payAccount, order, record, isShare, appInfo, currentDate, bAppId, bUserPhone); + WxMicroPayOrderP wxPayOrderP = generateWxMicroPayOrderP(payAccount, composeOrder,order, record, isShare, appInfo, currentDate, bAppId, bUserPhone); String response = WxPay.micropay(BeanUtils.toStringMap(wxPayOrderP)); log.info("pay order, wechat micropay, " + wxPayOrderP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); @@ -187,7 +196,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement if (StringUtils.isBlank(bUserPhone)) { throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"bUserPhone 不能为空"); } - WxMicroPayOrderSP wxPayOrderSP = generateWxMicroPayOrderSP(payAccount, order, record, isShare, appInfo, currentDate, bUserPhone); + WxMicroPayOrderSP wxPayOrderSP = generateWxMicroPayOrderSP(payAccount, composeOrder,order, record, isShare, appInfo, currentDate, bUserPhone); String response = WxPay.micropay(BeanUtils.toStringMap(wxPayOrderSP)); log.info("pay order, wechat micropay, " + wxPayOrderSP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); @@ -226,9 +235,9 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement } @Override - public PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord, WxOrder order, WxAppinfo appInfo, + public PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception { - return super.queryPayStatus(oldRecord, order, appInfo, payAccount); + return super.queryPayStatus(oldRecord,appInfo, payAccount); } @Override @@ -237,9 +246,9 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement } @Override - public int queryPayStatusCode(WxPayOrder oldRecord, WxOrder order, WxAppinfo appInfo, WxPayAccount payAccount) + public int queryPayStatusCode(WxPayOrder oldRecord, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception { - return super.queryPayStatusCode(oldRecord, order, appInfo, payAccount); + return super.queryPayStatusCode(oldRecord, appInfo, payAccount); } @Override diff --git a/mallinkService/src/main/resources/mapper/WxComposeOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxComposeOrderMapper.xml index 42f4badc9..ac455f688 100644 --- a/mallinkService/src/main/resources/mapper/WxComposeOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxComposeOrderMapper.xml @@ -6,16 +6,13 @@ - - - - `id`,`tenant_id`,`parent_tenant_id`,`c_user_id`,`payment_type`,`payment`,`payment_time`,`order_status`,`create_date`,`update_date` + `id`,`tenant_id`,`parent_tenant_id`,`c_user_id`,`payment`,`create_date`,`update_date` @@ -36,29 +33,10 @@ and `c_user_id` = #{cUserId} - - and `payment_type` = #{paymentType} - - and `payment` = #{payment} - - and `payment_time` = #{paymentTime} - - - - and `order_status` = #{orderStatus} - - - - and `order_status` in - - #{sItem} - - - and id in @@ -69,88 +47,23 @@ - select - from wx_order + from wx_compose_order - + select count(1) from wx_compose_order - - - - - - - - - update wx_order set order_status=#{orderStatus} - where order_group_id=#{orderGroupId} and order_status=10 - - and `tenant_id` = #{tenantId} - - - and `parent_tenant_id` = #{parentTenantId} - - - - - update wx_order set order_status=12 where `type`=0 and tenant_id = #{tenantId} and order_status in(10,15) and now()>press_end_date + + update wx_compose_order set `c_user_id` = #{cUserId} where id =#{id} and tenant_id=#{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 136f09e80..b86d7817e 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -1002,5 +1002,19 @@ update wx_order set order_status=12 where `type`=0 and tenant_id = #{tenantId} and order_status in(10,15) and now()>press_end_date + + + update wx_order set c_user_id= #{cUserId} where tenant_id = #{tenantId} + + and id = #{id} + + + and id in + + #{idItem} + + + + diff --git a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml index 69937b5bd..31414355a 100644 --- a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml @@ -29,6 +29,7 @@ + @@ -36,7 +37,7 @@ `auth_code`,`ip`,`pay_amount`,`pay_time_start`,`pay_time_end`, `prepay_id`,`transaction_id`,`pay_vendor`,`pay_order_no`, `pay_order_status`,`share`,`share_amount`,`rate_amount`,`fail_reason`, - `pos_pay_order_id`,`pos_pay_order_time`,`pos_payment_type`,`pos_pay_order_no`,`pos_pay_des` + `pos_pay_order_id`,`pos_pay_order_time`,`pos_payment_type`,`pos_pay_order_no`,`pos_pay_des`,`compose_order` @@ -133,6 +134,10 @@ and `pos_pay_order_no` = #{posPayOrderNo} + + and `compose_order` = #{composeOrder} + + and id in From b95007e96d279cc6519a23846071df8b49defe50 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 8 Sep 2021 19:18:04 +0800 Subject: [PATCH 005/171] fix order --- .../db/migration/V202109070001__order.sql | 108 +++++++++++++++++- .../config/BaseMyBatisConfiguration.java | 7 ++ 2 files changed, 111 insertions(+), 4 deletions(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql index c6824c912..b8ac11bef 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql @@ -3,10 +3,7 @@ CREATE TABLE `wx_compose_order` ( `tenant_id` varchar(5) NOT NULL, `parent_tenant_id` varchar(5) DEFAULT NULL, `c_user_id` bigint(20) DEFAULT NULL, - `payment_type` smallint(2) DEFAULT NULL COMMENT '0: 付款 1: 退款 2:自动退款 3:A端退款', `payment` int(11) DEFAULT NULL COMMENT '支付金额:允许有负数,退款时为负值。', - `payment_time` datetime DEFAULT NULL, - `order_status` smallint(2) DEFAULT NULL COMMENT '订单状态:0-待付款;1-已支付;2-已取消(限定时间内未付款);3-待退款;4-已退款;5-退款失败 砍价:6-砍价中,7-砍价完成,8-砍价已过期,9-砍价已取消,10拼团中11拼团成功12拼团超已过期13拼团失败', `create_date` datetime DEFAULT NULL, `update_date` datetime DEFAULT NULL, PRIMARY KEY (`id`) @@ -315,4 +312,107 @@ ALTER TABLE wx_pay_order_95 ADD COLUMN `compose_order` TINYINT(1) COMMENT ' ALTER TABLE wx_pay_order_96 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; ALTER TABLE wx_pay_order_97 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; ALTER TABLE wx_pay_order_98 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_99 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; \ No newline at end of file +ALTER TABLE wx_pay_order_99 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; + +CREATE TABLE wx_compose_order_0 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_1 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_2 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_3 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_4 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_5 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_6 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_7 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_8 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_9 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_10 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_11 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_12 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_13 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_14 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_15 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_16 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_17 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_18 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_19 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_20 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_21 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_22 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_23 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_24 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_25 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_26 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_27 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_28 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_29 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_30 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_31 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_32 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_33 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_34 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_35 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_36 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_37 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_38 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_39 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_40 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_41 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_42 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_43 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_44 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_45 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_46 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_47 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_48 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_49 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_50 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_51 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_52 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_53 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_54 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_55 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_56 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_57 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_58 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_59 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_60 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_61 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_62 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_63 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_64 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_65 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_66 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_67 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_68 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_69 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_70 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_71 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_72 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_73 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_74 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_75 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_76 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_77 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_78 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_79 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_80 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_81 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_82 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_83 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_84 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_85 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_86 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_87 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_88 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_89 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_90 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_91 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_92 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_93 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_94 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_95 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_96 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_97 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_98 LIKE wx_compose_order; +CREATE TABLE wx_compose_order_99 LIKE wx_compose_order; + +drop table wx_compose_order; \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java b/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java index ab28aae53..4b5dcf571 100644 --- a/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java +++ b/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java @@ -254,6 +254,13 @@ public class BaseMyBatisConfiguration { alipayCUserSharding.setRule(EnumShardingRule.HASH.getCode()); shardingList.add(alipayCUserSharding); + ShardingSphere wxComposeOrderSharding = new ShardingSphere(); + wxComposeOrderSharding.setColumn("tenant_id"); + wxComposeOrderSharding.setTableName("wx_compose_order"); + wxComposeOrderSharding.setCount(100); + wxComposeOrderSharding.setRule(EnumShardingRule.HASH.getCode()); + shardingList.add(wxComposeOrderSharding); + //初始化 shardingSpherePlugin.setShardingSpheres(shardingList); Properties properties = new Properties(); From 9a2a1ca9c86aa59a37f05e1e628098fc891a25b7 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 8 Sep 2021 20:36:41 +0800 Subject: [PATCH 006/171] fix order --- .../java/com/iformall/domain/po/WxCoupon.java | 10 ++++ .../service/impl/WxOrderServiceImpl.java | 54 ++++++++++++------- 2 files changed, 44 insertions(+), 20 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java index c987285fe..d826704f9 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java @@ -340,5 +340,15 @@ public class WxCoupon extends TenantEntity { } return false; } + + public boolean oneNumberOneOrder() { + if (type == null) { + return true; + } + if (type.intValue() == EnumCouponType.COUPON_DISTRIBUTION.getCode().intValue()) { + return false; + } + return true; + } } 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 393b90ebc..474a7bc1e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1984,26 +1984,40 @@ public class WxOrderServiceImpl implements WxOrderService { for (int i = 0 ; i < orderSave.size(); i ++) { OrderComposeSaveDto orderdto = orderSave.get(i); - // 是否砍价 - boolean isPress = orderdto.getSignleOrder().getPress() != null ? orderdto.getSignleOrder().getPress() : false; - WxOrder order = null; - if (checkCouponIsFree(orderdto.getWxCoupon())) { - // 免费券 - order = proxy.saveFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),orderdto.getCount(), orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), null,payWay); - if (order != null) { - // 6. 下订单完成,发送内部消息 - // 下订单完成,发送内部消息 - try { - proxy.sendOrderSuccessActionMsg(order); - } catch (Exception e) { - logger.error("内部消息发送失败: " + e.getMessage(),e); - throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); - } - } - } else { - // 有价券 - order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),orderdto.getCount(), orderdto.getSignleOrder().getCouponChannelId(), isPress, orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId()); - } + + //券是一个数量一个订单, 实物是一个产品一个订单 + int totalOrderCount = 1; + if (orderdto.getWxCoupon().oneNumberOneOrder()) { + totalOrderCount = orderdto.getCount(); + } + int perCouponNumber = 1; + if (totalOrderCount==1) { + perCouponNumber = orderdto.getCount(); + } + for (int j =0 ; j < totalOrderCount ; j ++) { + // 是否砍价 + boolean isPress = orderdto.getSignleOrder().getPress() != null ? orderdto.getSignleOrder().getPress() : false; + WxOrder order = null; + if (checkCouponIsFree(orderdto.getWxCoupon())) { + // 免费券 + order = proxy.saveFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), null,payWay); + if (order != null) { + // 6. 下订单完成,发送内部消息 + // 下订单完成,发送内部消息 + try { + proxy.sendOrderSuccessActionMsg(order); + } catch (Exception e) { + logger.error("内部消息发送失败: " + e.getMessage(),e); + throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); + } + } + } else { + // 有价券 + order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), isPress, orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId()); + } + } + + // couponActionLog // try { // wxCouponActionLogService.addOne(order, order.getProductId(), order.getOrderNumber(), EnumCouponSendSendType.ACTIVE.getCode(), orderdto.getSignleOrder().getCouponChannelId(),0L); From 135ab54b7bf3693c5f2d2c7a246616a9261e92ff Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 9 Sep 2021 23:20:49 +0800 Subject: [PATCH 007/171] fix order --- .../db/migration/V202109070001__order.sql | 707 +++++++++++++----- .../controller/WxOrderController.java | 29 +- .../controller/WxPayOrderController.java | 40 +- .../schedule/OrderExpiringSchedule.java | 19 +- .../config/BaseMyBatisConfiguration.java | 2 +- ...{WxComposeOrder.java => WxBatchOrder.java} | 4 +- .../com/iformall/domain/po/WxCouponOrder.java | 6 +- .../java/com/iformall/domain/po/WxOrder.java | 3 + .../com/iformall/enums/EnumComposeOrder.java | 25 +- .../iformall/mapper/WxBatchOrderMapper.java | 20 + .../iformall/mapper/WxComposeOrderMapper.java | 20 - .../service/WxCouponOrderService.java | 2 +- .../com/iformall/service/WxOrderService.java | 15 +- .../iformall/service/WxPayOrderService.java | 8 +- .../helper/WxPayOrderServiceHelper.java | 2 +- .../impl/WxCouponOrderServiceImpl.java | 39 +- .../service/impl/WxGameServiceImpl.java | 2 +- .../service/impl/WxOrderServiceImpl.java | 219 ++---- .../service/impl/WxPayOrderServiceImpl.java | 248 +++--- .../service/order/OrderAdapterService.java | 47 ++ .../iformall/service/order/OrderFactory.java | 20 + .../service/order/entity/WxComposeOrder.java | 25 + .../order/impl/BatchOrderAdapterService.java | 108 +++ .../order/impl/SingleOrderAdapterService.java | 78 ++ .../service/order/util/OrderHelper.java | 26 + .../pay/service/pay/PayAdapterService.java | 5 +- .../pay/wx/BaseWxPayAdapterService.java | 2 +- .../pay/service/pay/wx/h5/WxH5PayService.java | 5 +- .../appPay/WxMiniAppPayAdapterService.java | 58 +- .../maPay/WxMiniMaPayAdapterService.java | 29 +- ...OrderMapper.xml => WxBatchOrderMapper.xml} | 18 +- .../resources/mapper/WxCouponOrderMapper.xml | 13 +- .../main/resources/mapper/WxOrderMapper.xml | 7 +- 33 files changed, 1160 insertions(+), 691 deletions(-) rename mallinkService/src/main/java/com/iformall/domain/po/{WxComposeOrder.java => WxBatchOrder.java} (92%) create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxBatchOrderMapper.java delete mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxComposeOrderMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/order/OrderFactory.java create mode 100644 mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java create mode 100644 mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java rename mallinkService/src/main/resources/mapper/{WxComposeOrderMapper.xml => WxBatchOrderMapper.xml} (82%) diff --git a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql index b8ac11bef..3dbab2ade 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql @@ -1,4 +1,4 @@ -CREATE TABLE `wx_compose_order` ( +CREATE TABLE `wx_batch_order` ( `id` bigint(20) NOT NULL, `tenant_id` varchar(5) NOT NULL, `parent_tenant_id` varchar(5) DEFAULT NULL, @@ -213,206 +213,509 @@ ALTER TABLE wx_order_97 ADD COLUMN `coupon_number` int(8) COMMENT '购买 ALTER TABLE wx_order_98 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; ALTER TABLE wx_order_99 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; -ALTER TABLE wx_pay_order_0 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_1 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_2 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_3 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_4 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_5 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_6 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_7 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_8 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_9 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_10 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_11 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_12 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_13 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_14 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_15 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_16 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_17 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_18 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_19 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_20 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_21 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_22 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_23 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_24 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_25 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_26 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_27 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_28 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_29 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_30 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_31 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_32 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_33 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_34 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_35 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_36 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_37 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_38 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_39 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_40 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_41 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_42 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_43 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_44 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_45 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_46 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_47 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_48 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_49 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_50 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_51 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_52 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_53 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_54 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_55 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_56 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_57 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_58 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_59 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_60 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_61 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_62 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_63 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_64 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_65 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_66 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_67 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_68 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_69 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_70 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_71 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_72 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_73 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_74 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_75 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_76 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_77 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_78 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_79 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_80 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_81 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_82 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_83 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_84 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_85 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_86 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_87 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_88 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_89 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_90 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_91 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_92 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_93 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_94 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_95 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_96 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_97 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_98 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; -ALTER TABLE wx_pay_order_99 ADD COLUMN `compose_order` TINYINT(1) COMMENT '是否为组合订单,1-是 0-不是'; +ALTER TABLE wx_pay_order_0 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_1 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_2 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_3 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_4 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_5 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_6 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_7 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_8 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_9 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_10 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_11 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_12 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_13 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_14 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_15 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_16 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_17 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_18 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_19 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_20 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_21 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_22 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_23 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_24 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_25 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_26 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_27 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_28 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_29 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_30 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_31 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_32 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_33 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_34 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_35 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_36 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_37 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_38 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_39 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_40 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_41 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_42 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_43 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_44 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_45 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_46 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_47 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_48 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_49 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_50 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_51 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_52 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_53 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_54 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_55 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_56 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_57 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_58 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_59 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_60 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_61 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_62 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_63 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_64 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_65 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_66 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_67 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_68 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_69 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_70 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_71 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_72 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_73 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_74 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_75 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_76 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_77 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_78 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_79 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_80 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_81 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_82 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_83 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_84 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_85 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_86 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_87 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_88 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_89 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_90 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_91 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_92 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_93 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_94 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_95 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_96 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_97 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_98 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_99 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -CREATE TABLE wx_compose_order_0 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_1 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_2 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_3 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_4 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_5 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_6 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_7 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_8 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_9 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_10 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_11 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_12 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_13 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_14 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_15 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_16 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_17 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_18 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_19 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_20 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_21 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_22 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_23 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_24 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_25 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_26 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_27 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_28 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_29 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_30 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_31 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_32 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_33 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_34 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_35 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_36 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_37 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_38 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_39 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_40 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_41 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_42 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_43 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_44 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_45 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_46 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_47 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_48 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_49 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_50 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_51 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_52 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_53 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_54 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_55 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_56 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_57 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_58 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_59 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_60 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_61 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_62 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_63 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_64 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_65 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_66 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_67 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_68 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_69 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_70 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_71 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_72 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_73 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_74 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_75 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_76 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_77 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_78 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_79 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_80 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_81 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_82 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_83 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_84 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_85 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_86 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_87 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_88 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_89 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_90 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_91 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_92 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_93 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_94 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_95 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_96 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_97 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_98 LIKE wx_compose_order; -CREATE TABLE wx_compose_order_99 LIKE wx_compose_order; +CREATE TABLE wx_batch_order_0 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_1 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_2 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_3 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_4 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_5 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_6 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_7 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_8 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_9 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_10 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_11 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_12 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_13 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_14 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_15 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_16 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_17 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_18 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_19 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_20 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_21 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_22 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_23 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_24 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_25 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_26 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_27 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_28 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_29 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_30 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_31 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_32 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_33 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_34 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_35 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_36 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_37 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_38 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_39 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_40 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_41 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_42 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_43 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_44 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_45 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_46 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_47 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_48 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_49 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_50 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_51 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_52 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_53 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_54 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_55 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_56 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_57 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_58 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_59 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_60 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_61 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_62 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_63 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_64 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_65 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_66 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_67 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_68 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_69 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_70 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_71 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_72 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_73 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_74 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_75 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_76 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_77 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_78 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_79 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_80 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_81 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_82 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_83 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_84 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_85 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_86 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_87 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_88 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_89 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_90 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_91 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_92 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_93 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_94 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_95 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_96 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_97 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_98 LIKE wx_batch_order; +CREATE TABLE wx_batch_order_99 LIKE wx_batch_order; -drop table wx_compose_order; \ No newline at end of file +drop table wx_batch_order; + +ALTER TABLE wx_coupon_order_0 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_1 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_2 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_3 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_4 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_5 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_6 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_7 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_8 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_9 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_10 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_11 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_12 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_13 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_14 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_15 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_16 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_17 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_18 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_19 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_20 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_21 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_22 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_23 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_24 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_25 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_26 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_27 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_28 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_29 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_30 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_31 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_32 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_33 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_34 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_35 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_36 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_37 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_38 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_39 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_40 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_41 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_42 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_43 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_44 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_45 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_46 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_47 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_48 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_49 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_50 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_51 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_52 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_53 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_54 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_55 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_56 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_57 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_58 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_59 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_60 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_61 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_62 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_63 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_64 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_65 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_66 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_67 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_68 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_69 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_70 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_71 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_72 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_73 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_74 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_75 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_76 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_77 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_78 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_79 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_80 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_81 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_82 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_83 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_84 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_85 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_86 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_87 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_88 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_89 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_90 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_91 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_92 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_93 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_94 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_95 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_96 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_97 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_98 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_99 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; + +ALTER TABLE wx_order_0 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_1 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_2 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_3 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_4 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_5 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_6 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_7 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_8 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_9 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_10 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_11 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_12 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_13 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_14 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_15 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_16 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_17 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_18 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_19 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_20 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_21 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_22 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_23 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_24 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_25 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_26 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_27 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_28 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_29 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_30 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_31 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_32 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_33 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_34 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_35 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_36 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_37 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_38 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_39 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_40 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_41 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_42 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_43 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_44 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_45 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_46 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_47 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_48 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_49 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_50 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_51 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_52 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_53 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_54 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_55 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_56 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_57 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_58 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_59 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_60 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_61 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_62 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_63 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_64 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_65 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_66 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_67 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_68 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_69 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_70 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_71 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_72 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_73 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_74 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_75 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_76 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_77 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_78 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_79 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_80 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_81 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_82 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_83 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_84 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_85 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_86 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_87 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_88 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_89 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_90 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_91 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_92 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_93 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_94 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_95 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_96 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_97 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_98 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_99 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; + +ALTER TABLE wx_coupon_order_0 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_1 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_2 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_3 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_4 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_5 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_6 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_7 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_8 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_9 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_10 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_11 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_12 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_13 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_14 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_15 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_16 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_17 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_18 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_19 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_20 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_21 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_22 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_23 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_24 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_25 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_26 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_27 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_28 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_29 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_30 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_31 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_32 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_33 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_34 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_35 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_36 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_37 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_38 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_39 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_40 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_41 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_42 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_43 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_44 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_45 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_46 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_47 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_48 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_49 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_50 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_51 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_52 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_53 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_54 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_55 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_56 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_57 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_58 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_59 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_60 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_61 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_62 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_63 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_64 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_65 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_66 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_67 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_68 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_69 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_70 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_71 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_72 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_73 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_74 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_75 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_76 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_77 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_78 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_79 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_80 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_81 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_82 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_83 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_84 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_85 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_86 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_87 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_88 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_89 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_90 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_91 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_92 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_93 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_94 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_95 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_96 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_97 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_98 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; +ALTER TABLE wx_coupon_order_99 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; \ No newline at end of file diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 32fef01d9..e20fa4f11 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -32,6 +32,7 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -60,21 +61,34 @@ public class WxOrderController extends BaseController { @Autowired RedisLock redisLock; + + //券包下单的逻辑和组合下单的逻辑差不错,但是库存走的是券包的库存,子订单的分账需要调用多次分账 + @ApiOperation(value = "券包下单,", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") + @PostMapping("couponPackageSave") + public ResultData couponPackageSave(@RequestBody List orderSaveDto) { + Long memberId; + try { + memberId = getMemberId(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + + return wxOrderService.composeSaveOrder(EnumComposeOrder.PACKAGECOUPON,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + } @ApiOperation(value = "多个券多个数量组合下订单(购物车组合)", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") @PostMapping("composeSave") - public ResultData saveOrder(@RequestBody List orderSaveDto) { + public ResultData composeSave(@RequestBody List orderSaveDto) { Long memberId; try { memberId = getMemberId(); } catch (Exception e) { return new ResultData(Result.ERROR,e.getMessage()); } - - return wxOrderService.composeSaveOrder(orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + return wxOrderService.composeSaveOrder(EnumComposeOrder.BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); } - @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("singleSave") public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { Long memberId; @@ -83,7 +97,12 @@ public class WxOrderController extends BaseController { } catch (Exception e) { return new ResultData(Result.ERROR,e.getMessage()); } - return wxOrderService.singleSaveOrder(orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + List list = new ArrayList<>(); + OrderComposeSaveDto dto = new OrderComposeSaveDto(); + dto.setSignleOrder(orderSaveDto); + dto.setCount(1); + list.add(dto); + return wxOrderService.composeSaveOrder(EnumComposeOrder.SINGLE,list,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); } @ApiOperation(value = "取消订单", notes = "{\"orderId\":\"string\"}") diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index 05abde406..a7f6ee951 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -24,7 +24,7 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxCUserBasicInfo; -import com.iformall.domain.po.WxComposeOrder; +import com.iformall.domain.po.WxBatchOrder; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; @@ -41,6 +41,8 @@ import com.iformall.service.WxCouponService; import com.iformall.service.WxOrderService; import com.iformall.service.WxPayAccountService; import com.iformall.service.WxPayOrderService; +import com.iformall.service.order.OrderFactory; +import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.utils.IPUtil; @@ -73,6 +75,9 @@ public class WxPayOrderController extends BaseController { @Autowired private WxAppinfoService wxAppinfoService; + @Autowired + OrderFactory orderFactory; + /** * 微信支付 * @param paramMap @@ -90,17 +95,22 @@ public class WxPayOrderController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); } + String composeOrderType = paramMap.get("composeOrderType"); + if (StringUtils.isBlank(composeOrderType)) { + logger.info("composeOrderType不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "composeOrderType不能为空"); + } + WxCUser user = getWxCUser(); if (!user.basicInfoIs()) { logger.error("暂未成为会员,请授权手机号"); return new ResultData(ErrorCode.USER_IS_NOT_MEMBER.getCode(), "暂未成为会员,请授权手机号"); } - String composeOrderTag = paramMap.get("composeOrderTag"); - return _create(orderIdStr,composeOrderTag,user.getUserId(),EnumPayWay.PAY_WAY_WECHAT,user.getAppId(),new PayExtraParam("openId",user.getOpenId()),request); + return _create(orderIdStr,composeOrderType,user.getUserId(),EnumPayWay.PAY_WAY_WECHAT,user.getAppId(),new PayExtraParam("openId",user.getOpenId()),request); } - private ResultData _create(String orderIdStr,String compseOrderTag,Long userId, EnumPayWay payWay,String appId,PayExtraParam parm,HttpServletRequest request) { + private ResultData _create(String orderIdStr,String composeOrderType,Long userId, EnumPayWay payWay,String appId,PayExtraParam parm,HttpServletRequest request) { WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(userId,getFinalTenantId()); if ( null == wxCUserBasicInfo) { logger.error("会员用户不存在."+userId); @@ -123,9 +133,7 @@ public class WxPayOrderController extends BaseController { record.setOrderId(orderId); try { record.setIp(IPUtil.getIpAddr(request)); - if ((!StringUtils.isBlank(compseOrderTag)) && "1".equals(compseOrderTag)) { - record.setComposeOrder(EnumComposeOrder.YES.getCode()); - } + record.setComposeOrder(Integer.parseInt(composeOrderType)); return wxPayOrderService.createPayOrder(appInfo, wxCUserBasicInfo, record, payWay,parm); } catch (MallinkException e) { logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage()); @@ -192,17 +200,7 @@ public class WxPayOrderController extends BaseController { return new ResultData(ErrorCode.PAY_ORDER_ERROR, "未查询到payOrder."); } - WxComposeOrder composeOrder = null; - WxOrder order = null; - if ((null != payOrder.getComposeOrder()) && (EnumComposeOrder.YES.getCode().intValue() == payOrder.getComposeOrder().intValue())) { - composeOrder = wxOrderService.getComposeOrder(orderId, payOrder); - }else { - order = wxOrderService.getById(orderId,payOrder.getTenantId()); - if (check(orderId, order, payOrder)) { - return new ResultData(Result.SUCCESS, "支付状态更新成功", order); - } - - } + WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId()); //查询微信订单状态并更新 WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor())); @@ -213,13 +211,13 @@ public class WxPayOrderController extends BaseController { } WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); try { - WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, composeOrder,order, appInfo, payAccount, IdWorker.get(),false); + WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, composeOrder,appInfo, payAccount, IdWorker.get(),false); if (null != wo) { - return new ResultData(Result.SUCCESS, "支付状态更新成功", order); + return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); } }catch(MallinkException e) { //已经同步了微信的支付状态,表示已经更新 - return new ResultData(Result.SUCCESS, "支付状态更新成功", order); + return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); } return new ResultData(ErrorCode.PAY_ORDER_ERROR, "查询微信订单支付状态失败,请稍后!"); diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java index 71041b400..2641b46be 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java @@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.enums.EnumAppType; +import com.iformall.enums.EnumComposeOrder; import com.iformall.enums.EnumOrderStatus; import com.iformall.enums.EnumOrderType; import com.iformall.enums.EnumPayStatus; @@ -31,6 +32,8 @@ import com.iformall.service.WxOrderService; import com.iformall.service.WxPayOrderService; import com.iformall.service.WxRefundOrderService; import com.iformall.service.helper.WxPayOrderServiceHelper; +import com.iformall.service.order.OrderFactory; +import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.pay.PayServiceFactory; import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; import com.iformall.utils.DateUtils; @@ -84,6 +87,9 @@ public class OrderExpiringSchedule { @Autowired PayServiceFactory payServiceFactory; + @Autowired + OrderFactory orderFactory; + private List getMalls() { WxMall wxMall =new WxMall(); return wxMallMapper.findList(wxMall); @@ -252,7 +258,7 @@ public class OrderExpiringSchedule { public boolean wxPaySuccess(WxOrder order,boolean autoReHandle,EnumPayWay payWay) throws MallinkException, Exception { WxPayOrder payOrderq = new WxPayOrder(); - payOrderq.setOrderId(order.getId()); + payOrderq.setOrderId(EnumComposeOrder.getPayOrderId(order)); payOrderq.setTenantId(order.getTenantId()); List payorderlist = wxPayOrderMapper.findList(payOrderq); if (null == payorderlist || payorderlist.size() <=0 ) { @@ -292,7 +298,10 @@ public class OrderExpiringSchedule { //如果是支付成功,并且需要重试成功流程, if (EnumPayStatus.PAY_STATUS_SUCCESS.getCode().intValue() == payResult.getCode()) { if (autoReHandle) { - wxPayOrderService.handleSuccessOrder(wxpayOrder, null, order, payResult, true,true); + WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(wxpayOrder.getComposeOrder()).getComposeOrder(wxpayOrder.getOrderId(), wxpayOrder.getTenantId()); + //无论是不是批量的,都是执行单个订单 + composeOrder.setSingleOrder(order); + wxPayOrderService.handleSuccessOrder(wxpayOrder, composeOrder, payResult, true,true); } return true; } @@ -310,8 +319,8 @@ public class OrderExpiringSchedule { // 库存退回 wxOrderService.stockBack(order); - // 微信 关单 - wxOrderService.orderClose(order,payWay); + // 微信 关单,批量的订单关单有问题 + //wxOrderService.orderClose(order,payWay); // 订单状态更改 WxOrder updateOrder = new WxOrder(); @@ -370,7 +379,7 @@ public class OrderExpiringSchedule { wxOrderService.stockBack(order); } // 微信 关单 - wxOrderService.orderClose(updateOrder,payWay); + //wxOrderService.orderClose(updateOrder,payWay); logger.info("拼团订单: " + order.getId() + " create at " + order.getCreateDate() + " expired at " + curDate); } diff --git a/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java b/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java index 4b5dcf571..862a16328 100644 --- a/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java +++ b/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java @@ -256,7 +256,7 @@ public class BaseMyBatisConfiguration { ShardingSphere wxComposeOrderSharding = new ShardingSphere(); wxComposeOrderSharding.setColumn("tenant_id"); - wxComposeOrderSharding.setTableName("wx_compose_order"); + wxComposeOrderSharding.setTableName("wx_batch_order"); wxComposeOrderSharding.setCount(100); wxComposeOrderSharding.setRule(EnumShardingRule.HASH.getCode()); shardingList.add(wxComposeOrderSharding); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxComposeOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java similarity index 92% rename from mallinkService/src/main/java/com/iformall/domain/po/WxComposeOrder.java rename to mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java index 475e80e90..40febd9c7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java @@ -9,11 +9,11 @@ import lombok.ToString; import java.util.Date; import java.util.List; -@TableName(value = "wx_compose_order") +@TableName(value = "wx_batch_order") @Data @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) -public class WxComposeOrder extends TenantEntity { +public class WxBatchOrder extends TenantEntity { /** * diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java index 5a80c647f..4e8f401ea 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java @@ -54,7 +54,11 @@ public class WxCouponOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="赠券商户编号",name="sendMerchantId") private Long sendMerchantId; @io.swagger.annotations.ApiModelProperty(value="赠券商户员工编号",name="sendMerchantUserId") - private Long sendMerchantUserId; + private Long sendMerchantUserId; + @io.swagger.annotations.ApiModelProperty(value="组合订单类型EnumComposeOrder",name="composeOrderType") + private Integer composeOrderType; + @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="composeOrderId") + private Long composeOrderId; @TableField(exist = false) private String couponName; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java index 16127b415..b12710dcb 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java @@ -99,6 +99,9 @@ public class WxOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="couponNumber") private Integer couponNumber; + + @io.swagger.annotations.ApiModelProperty(value="组合订单类型EnumComposeOrder",name="composeOrderType") + private Integer composeOrderType; @TableField(exist = false) protected List statusS; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java index abc333af7..a4dd91090 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java @@ -1,13 +1,16 @@ package com.iformall.enums; +import com.iformall.domain.po.WxOrder; /** * @author gongbiao */ public enum EnumComposeOrder { - - YES(1, "是多券种组合订单"), - NO(0, "非多券种组合订单,如拼团,砍价"); + + SINGLE(0, "单个订单类型,如拼团,砍价"), + BATCH(1, "多券种组合订单类型"), + PACKAGECOUPON(2,"券包组合订单类型") + ; public static EnumComposeOrder getEnum(Integer code) { for (EnumComposeOrder value : values()) { @@ -33,4 +36,20 @@ public enum EnumComposeOrder { public String getMessage() { return message; } + + public static Long getPayOrderId(WxOrder order) { + if (order.getComposeOrderType().intValue() == SINGLE.getCode().intValue()) { + return order.getId(); + }else { + return order.getComposeOrderId(); + } + } + + public static boolean isSingle(Integer type) { + if (type.intValue() == SINGLE.getCode().intValue()) { + return true; + }else { + return false; + } + } } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBatchOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBatchOrderMapper.java new file mode 100644 index 000000000..cfd518734 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBatchOrderMapper.java @@ -0,0 +1,20 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxBatchOrder; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +public interface WxBatchOrderMapper extends CommonMapper { + + List findList(WxBatchOrder order); + + Integer countList(WxBatchOrder order); + + WxBatchOrder selectById(@Param("id")Long id,@Param("tenantId")String tenantId); + + void updateCUserId(WxBatchOrder order); + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxComposeOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxComposeOrderMapper.java deleted file mode 100644 index 04354c440..000000000 --- a/mallinkService/src/main/java/com/iformall/mapper/WxComposeOrderMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.iformall.mapper; - -import com.iformall.common.CommonMapper; -import com.iformall.domain.po.WxComposeOrder; - -import java.util.List; - -import org.apache.ibatis.annotations.Param; - -public interface WxComposeOrderMapper extends CommonMapper { - - List findList(WxComposeOrder order); - - Integer countList(WxComposeOrder order); - - WxComposeOrder selectById(@Param("id")Long id,@Param("tenantId")String tenantId); - - void updateCUserId(WxComposeOrder order); - -} diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index 9522aa58a..6f7416041 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -88,7 +88,7 @@ public interface WxCouponOrderService { * 核销分账 * @param couponOrder */ - void shareAfterVerify(WxCouponOrder couponOrder, Long merchantId,Integer payWay); + void shareAfterVerify(WxCouponOrder couponOrder, Long merchantId,Integer payWay,boolean mulityShare); /** * 核销后补贴 diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 5937efb83..58cf67c6c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -11,7 +11,7 @@ import com.iformall.common.ResultData; import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.po.WxCUserBasicInfo; -import com.iformall.domain.po.WxComposeOrder; +import com.iformall.domain.po.WxBatchOrder; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponOrder; import com.iformall.domain.po.WxMerchant; @@ -22,8 +22,10 @@ import com.iformall.domain.vo.WxCouponSendVo; import com.iformall.domain.vo.WxOrderCouponPressVo; import com.iformall.domain.vo.WxOrderCouponVo; import com.iformall.domain.vo.WxOrderQueryVo; +import com.iformall.enums.EnumComposeOrder; import com.iformall.enums.EnumOrderStatus; import com.iformall.enums.EnumPayWay; +import com.iformall.service.order.entity.WxComposeOrder; public interface WxOrderService { @@ -114,7 +116,7 @@ public interface WxOrderService { /** * 订单关单 */ - ResultData orderClose(WxOrder order,EnumPayWay payWay); + //ResultData orderClose(WxOrder order,EnumPayWay payWay); /** * 根据Id获得实体 @@ -194,7 +196,7 @@ public interface WxOrderService { * @param coupon * @return */ - WxComposeOrder saveOrderForCoupon(WxCUserBasicInfo user, List orderSave,EnumPayWay payWay); + WxComposeOrder saveOrderForCoupon(EnumComposeOrder composeOrderType,WxCUserBasicInfo user, List orderSave,EnumPayWay payWay); void sendOrderSuccessActionMsg(WxOrder updateOrder); /** @@ -243,10 +245,5 @@ public interface WxOrderService { //ResultData saveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); - ResultData composeSaveOrder(List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); - - ResultData singleSaveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); - - WxComposeOrder getComposeOrder(Long orderId,TenantEntity tenantEntity); - + ResultData composeSaveOrder(EnumComposeOrder composeOrderType,List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java index f1c5ec875..e3ea96ed4 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java @@ -7,23 +7,25 @@ import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCUserBasicInfo; -import com.iformall.domain.po.WxComposeOrder; +import com.iformall.domain.po.WxBatchOrder; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxPayOrder; +import com.iformall.enums.EnumComposeOrder; import com.iformall.enums.EnumPayShare; import com.iformall.enums.EnumPayWay; +import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; public interface WxPayOrderService { - public void handleSuccessOrder(WxPayOrder oldRecord,WxComposeOrder composeOrder,WxOrder order,PayQueryAdapterResult queryResult,boolean isScheduleTask,boolean composeSingleOrder); + public void handleSuccessOrder(WxPayOrder oldRecord,WxComposeOrder composeOrder,PayQueryAdapterResult queryResult,boolean isScheduleTask,boolean isOneChildOrder); - public WxPayOrder handleWxOrderQuery(WxPayOrder oldRecord,WxComposeOrder composeOrder,WxOrder order,WxAppinfo appInfo,WxPayAccount payAccount,IdWorker idworker,boolean repeatPay); + public WxPayOrder handleWxOrderQuery(WxPayOrder oldRecord,WxComposeOrder composeOrder,WxAppinfo appInfo,WxPayAccount payAccount,IdWorker idworker,boolean repeatPay); /** * 创建支付订单 diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxPayOrderServiceHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxPayOrderServiceHelper.java index 8d4228e8b..6faa9555a 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxPayOrderServiceHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxPayOrderServiceHelper.java @@ -11,7 +11,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxComposeOrder; +import com.iformall.domain.po.WxBatchOrder; import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; 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 fa387c45c..bb5c2a48c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -558,12 +558,23 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { logger.error("核销记账失败"+e.getMessage(),e); } } else { - try { - // 核销分账 - shareAfterVerify(couponOrder, bUser.getMerchantId(),couponOrder.getPayVendor()); - } catch (Exception e) { - logger.error("核销记账失败"+e.getMessage(),e); - } + //如果是组合的,则为多次 + if ((couponOrder.getComposeOrderType().intValue() == EnumComposeOrder.BATCH.getCode().intValue()) + || (couponOrder.getComposeOrderType().intValue() == EnumComposeOrder.PACKAGECOUPON.getCode().intValue())) { + try { + // 核销分账 + shareAfterVerify(couponOrder, bUser.getMerchantId(),couponOrder.getPayVendor(),true); + } catch (Exception e) { + logger.error("核销记账失败"+e.getMessage(),e); + } + }else { + try { + // 核销分账 + shareAfterVerify(couponOrder, bUser.getMerchantId(),couponOrder.getPayVendor(),false); + } catch (Exception e) { + logger.error("核销记账失败"+e.getMessage(),e); + } + } } try { @@ -635,19 +646,29 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void shareAfterVerify(WxCouponOrder couponOrder, Long merchantId,Integer payWay) { + public void shareAfterVerify(WxCouponOrder couponOrder, Long merchantId,Integer payWay,boolean mulityShare) { // 微信分账 try { WxPayOrder wxPayOrder = new WxPayOrder(); + Long orderId = couponOrder.getOrderId(); + + if (!EnumComposeOrder.isSingle(couponOrder.getComposeOrderType())) { + orderId = couponOrder.getComposeOrderId(); + } + wxPayOrder.updateTenantInfo(couponOrder); - wxPayOrder.setOrderId(couponOrder.getOrderId()); + wxPayOrder.setOrderId(orderId); wxPayOrder.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); wxPayOrder = wxPayOrderMapper.selectOne(new QueryWrapper(wxPayOrder)); if (wxPayOrder != null && wxPayOrder.getShare().equals(EnumPayShare.YES.getCode())) { WxSharingOrderDto wxSharingOrderDto = new WxSharingOrderDto(); wxSharingOrderDto.setCUserId(wxPayOrder.getCUserId()); wxSharingOrderDto.setMerchantId(merchantId); - wxSharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode()); + if (mulityShare) { + wxSharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI.getCode()); + }else { + wxSharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode()); + } wxSharingOrderDto.setPayAmount(wxPayOrder.getPayAmount()); wxSharingOrderDto.setRateAmount(wxPayOrder.getRateAmount()); wxSharingOrderDto.setOrderId(wxPayOrder.getId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java index b994c4c2e..1c11d0284 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java @@ -459,7 +459,7 @@ public class WxGameServiceImpl implements WxGameService { ocsd.setSignleOrder(orderSaveDto); ocsd.setCount(1); orderSave.add(ocsd); - ResultData resultData1 = wxOrderService.composeSaveOrder(orderSave, userId, EnumPayWay.PAY_WAY_WECHAT, wxGame); + ResultData resultData1 = wxOrderService.composeSaveOrder(EnumComposeOrder.SINGLE,orderSave, userId, EnumPayWay.PAY_WAY_WECHAT, wxGame); if(resultData1.code == Result.SUCCESS && resultData1.data != null && resultData1.data instanceof WxOrder){ WxOrder order = (WxOrder)resultData1.data; 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 474a7bc1e..171c9ed23 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -19,6 +19,10 @@ import javax.servlet.http.HttpServletResponse; import com.iformall.domain.vo.*; import com.iformall.enums.*; import com.iformall.service.*; +import com.iformall.service.order.OrderAdapterService; +import com.iformall.service.order.OrderFactory; +import com.iformall.service.order.entity.WxComposeOrder; + import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,9 +48,9 @@ import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.dto.WxSharingOrderDto; import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxBatchOrder; import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCardInfo; -import com.iformall.domain.po.WxComposeOrder; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.po.WxCouponMerchant; @@ -65,10 +69,10 @@ import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.msg.FmInsideOrderSuccessMsg; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxAppinfoMapper; +import com.iformall.mapper.WxBatchOrderMapper; import com.iformall.mapper.WxCUserBasicInfoMapper; import com.iformall.mapper.WxCUserMapper; import com.iformall.mapper.WxCardInfoMapper; -import com.iformall.mapper.WxComposeOrderMapper; import com.iformall.mapper.WxCouponChannelMapper; import com.iformall.mapper.WxCouponMapper; import com.iformall.mapper.WxCouponMerchantMapper; @@ -197,12 +201,15 @@ public class WxOrderServiceImpl implements WxOrderService { WxCouponChannelService wxCouponChannelService; @Autowired - WxComposeOrderMapper wxComposeOrderMapper; + WxBatchOrderMapper wxBatchOrderMapper; @Autowired @Qualifier("couponDetailRedisTemplate") RedisTemplate cdRedisTemplate; + @Autowired + OrderFactory orderFactory; + @Override public PageInfo listAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findList(record)); @@ -993,7 +1000,7 @@ public class WxOrderServiceImpl implements WxOrderService { try { WxPayOrder payOrderQ = new WxPayOrder(); payOrderQ.updateTenantInfo(order); - payOrderQ.setOrderId(order.getId()); + payOrderQ.setOrderId(EnumComposeOrder.getPayOrderId(order)); payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); payOrder = wxPayOrderMapper.selectOne(new QueryWrapper(payOrderQ)); } catch (Exception e) { @@ -1062,6 +1069,8 @@ public class WxOrderServiceImpl implements WxOrderService { if (null != bUserId) { couponOrder.setSendMerchantUserId(bUserId); } + couponOrder.setComposeOrderType(order.getComposeOrderType()); + couponOrder.setComposeOrderId(order.getComposeOrderId()); //有支付信息,从支付信息中取渠道 if (null != payOrder) { couponOrder.setPayVendor(payOrder.getPayVendor()); @@ -1308,6 +1317,7 @@ public class WxOrderServiceImpl implements WxOrderService { record.setDetail(bodyStr); record.setCreateDate(curr); record.setUpdateDate(curr); + record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); // 保存订单 try { @@ -1648,29 +1658,29 @@ public class WxOrderServiceImpl implements WxOrderService { /** * 微信关闭订单 */ - @Override - public ResultData orderClose(WxOrder order,EnumPayWay payWay) { - // 1. get c appid - WxAppinfo appInfo = wxAppinfoService.getCAppInfo(order,payWay); - // 2. get pay order - WxPayOrder payOrderQ = new WxPayOrder(); - payOrderQ.updateTenantInfo(order); - payOrderQ.setOrderId(order.getId()); - payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); - List payOrders = wxPayOrderMapper.selectList(new QueryWrapper(payOrderQ)); - - // 3. wx pay order close - for (WxPayOrder payOrder : payOrders) { - try { - wxPayOrderService.payOrderClose(appInfo, payOrder); - } catch (Exception e) { - logger.error("微信关单失败:" + e.getMessage()); - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR); - } - } - - return new ResultData(); - } +// @Override +// public ResultData orderClose(WxOrder order,EnumPayWay payWay) { +// // 1. get c appid +// WxAppinfo appInfo = wxAppinfoService.getCAppInfo(order,payWay); +// // 2. get pay order +// WxPayOrder payOrderQ = new WxPayOrder(); +// payOrderQ.updateTenantInfo(order); +// payOrderQ.setOrderId(EnumComposeOrder.getPayOrderId(order)); +// payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); +// List payOrders = wxPayOrderMapper.selectList(new QueryWrapper(payOrderQ)); +// +// // 3. wx pay order close +// for (WxPayOrder payOrder : payOrders) { +// try { +// wxPayOrderService.payOrderClose(appInfo, payOrder); +// } catch (Exception e) { +// logger.error("微信关单失败:" + e.getMessage()); +// throw new MallinkException(ErrorCode.PAY_ORDER_ERROR); +// } +// } +// +// return new ResultData(); +// } @Override public WxOrder getById(Long id,String tenantId) { @@ -1969,7 +1979,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override - public WxComposeOrder saveOrderForCoupon(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { + public WxComposeOrder saveOrderForCoupon(EnumComposeOrder composeOrderType,WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); // 防止同一用户重复下单,1秒内 String key = new StringBuilder().append("saveComposeOrder:").append(user.getId()).toString(); @@ -1980,14 +1990,15 @@ public class WxOrderServiceImpl implements WxOrderService { } cUserBasicInfoRedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS); - WxComposeOrder composeOrder = createWxComposeOrder(user, orderSave, payWay); + OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrderType.getCode()); + WxComposeOrder composeOrder = orderAdapterService.createDBMainOrder(user, orderSave, payWay); for (int i = 0 ; i < orderSave.size(); i ++) { OrderComposeSaveDto orderdto = orderSave.get(i); //券是一个数量一个订单, 实物是一个产品一个订单 int totalOrderCount = 1; - if (orderdto.getWxCoupon().oneNumberOneOrder()) { + if (orderAdapterService.isOneNumberOneOrder(orderdto.getWxCoupon())) { totalOrderCount = orderdto.getCount(); } int perCouponNumber = 1; @@ -2033,87 +2044,6 @@ public class WxOrderServiceImpl implements WxOrderService { return composeOrder; } - @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveSingleOrderForCoupon(WxCUserBasicInfo user,OrderSaveDto orderSaveDto,WxCoupon coupon,EnumPayWay payWay,int couponNumber) { - WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); - // 防止同一用户重复下单,1秒内 - String key = new StringBuilder().append("saveSingleOrder:").append(user.getId()).toString(); - boolean hasKey = cUserBasicInfoRedisTemplate.hasKey(key); - if (hasKey) { - logger.error("用户正在下单,请求异常返回,user: {} " + JSON.toJSONString(user)); - throw new MallinkException(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION); - } - cUserBasicInfoRedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS); - // 是否砍价 - boolean isPress = orderSaveDto.getPress() != null ? orderSaveDto.getPress() : false; - WxOrder order = null; - if (checkCouponIsFree(coupon)) { - // 免费券 - order = proxy.saveFreeOrderForCoupon(null,user, coupon,couponNumber, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,payWay); - if (order != null) { - // 6. 下订单完成,发送内部消息 - // 下订单完成,发送内部消息 - try { - proxy.sendOrderSuccessActionMsg(order); - } catch (Exception e) { - logger.error("内部消息发送失败: " + e.getMessage(),e); - throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); - } - } - } else { - // 有价券 - order = proxy.saveNoFreeOrderForCoupon(null,user, coupon,couponNumber, orderSaveDto.getCouponChannelId(), isPress, orderSaveDto.getOrderGroupId(), orderSaveDto.getFormId()); - } - // couponActionLog -// try { -// wxCouponActionLogService.addOne(order, order.getProductId(), order.getOrderNumber(), EnumCouponSendSendType.ACTIVE.getCode(), orderdto.getSignleOrder().getCouponChannelId(),0L); -// } catch (Exception e) { -// // 库存恢复 -// stockBack(order); -// logger.error("保存订单:" + e.getMessage()); -// throw new MallinkException(ErrorCode.ORDER_SAVE_ERR); -// } - return order; - } - - - - @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxComposeOrder createWxComposeOrder(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { - WxComposeOrder order =new WxComposeOrder(); - final IdWorker idWorker = IdWorker.get(); - order.setId(idWorker.nextId()); - order.setCUserId(user.getId()); - int payment = 0; - for (OrderComposeSaveDto ocsd : orderSave) { - boolean isPress = ocsd.getSignleOrder().getPress() != null ? ocsd.getSignleOrder().getPress() : false; - payment = payment+getCouponPayment(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(),ocsd.getCount()); - } - order.setPayment(payment); - order.setCreateDate(new Date()); - wxComposeOrderMapper.insert(order); - return order; - } - - private int getCouponPayment(WxCoupon coupon,boolean isPress,Long orderGroupId,int couponNumber) { - // 4.1 券价格 - int payment = coupon.getSalePrice()*couponNumber; - //Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode(); - if (isPress || coupon.getType().equals(EnumCouponType.COUPON_PRESS.getCode())) { - // 砍价券 初始是全价即面额 - payment = coupon.getPrice()*couponNumber; - } - if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { - if (orderGroupId == null) { - // 拼团券 初始是全价即面额 - payment = coupon.getPrice()*couponNumber; - } else { - //orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode(); - } - } - return payment; - } - @Override public boolean checkCouponIsFree(WxCoupon coupon) { return coupon.getSalePrice() == 0; @@ -2145,9 +2075,8 @@ public class WxOrderServiceImpl implements WxOrderService { record.setPayment(0); record.setFormId(formId); record.setOrderGroupId(0L); - if (null != composeOrder) { - record.setComposeOrderId(composeOrder.getId()); - } + record.setComposeOrderId(composeOrder.getMainOrderId()); + record.setComposeOrderType(composeOrder.getComposeOrderType()); record.setCouponNumber(couponNumber); try { proxy.saveFreeOrder(record, user, coupon); @@ -2209,9 +2138,8 @@ public class WxOrderServiceImpl implements WxOrderService { record.setFormId(formId); record.setPayment(payment); record.setOrderStatus(orderStatus); - if (null != composeOrder) { - record.setComposeOrderId(composeOrder.getId()); - } + record.setComposeOrderId(composeOrder.getMainOrderId()); + record.setComposeOrderType(composeOrder.getComposeOrderType()); record.setCouponNumber(couponNumber); try { orderNumber = proxy.saveNoFreeOrder(record, user, coupon, isPress); @@ -2501,9 +2429,8 @@ public class WxOrderServiceImpl implements WxOrderService { @Override - public ResultData composeSaveOrder(List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) { - logger.info("composeOrderSave: " + composeOrderSaveDto); - //TODO 事务,所有券都购买成功才行 + public ResultData composeSaveOrder(EnumComposeOrder composeOrderType,List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) { + logger.info("composeSaveOrder: " + composeOrderSaveDto); try { if (null == composeOrderSaveDto || composeOrderSaveDto.size() <= 0 ) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"无商品信息"); @@ -2522,11 +2449,12 @@ public class WxOrderServiceImpl implements WxOrderService { for ( int i =0 ; i< composeOrderSaveDto.size(); i++ ) { OrderComposeSaveDto ocsd = composeOrderSaveDto.get(i); - singleOrderCheck(ocsd,ocsd.getSignleOrder(),ocsd.getCount(),wxCUserBasicInfo,payWay,tenantEntity,i+1,singleProduct); + WxCoupon coupon = singleOrderCheck(ocsd.getSignleOrder(),ocsd.getCount(),wxCUserBasicInfo,payWay,tenantEntity,i+1,singleProduct); + ocsd.setWxCoupon(coupon); } WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); try { - WxComposeOrder order = proxy.saveOrderForCoupon(wxCUserBasicInfo, composeOrderSaveDto, payWay); + WxComposeOrder order = proxy.saveOrderForCoupon(composeOrderType,wxCUserBasicInfo, composeOrderSaveDto, payWay); return new ResultData(order); } catch (MallinkException e) { logger.error("saveOrderForCoupon error.",e); @@ -2546,43 +2474,7 @@ public class WxOrderServiceImpl implements WxOrderService { } - @Override - public ResultData singleSaveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) { - logger.info("singleOrderSave: " + orderSaveDto); - try { - WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(cUserId,tenantEntity.getFinalTenantId()); - if (wxCUserBasicInfo != null && wxCUserBasicInfo.getStatus().equals(EnumCUserBasicInfoStatus.LOCKED.getCode())) { - logger.info("会员权益被锁定:cUserId:" + cUserId); - return new ResultData(ErrorCode.MEMBER_IS_LOCKED); - } - - int couponNumber = 1; - boolean singleNumber = true; - WxCoupon coupon = singleOrderCheck(null,orderSaveDto,couponNumber,wxCUserBasicInfo,payWay,tenantEntity,1,singleNumber); - WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); - try { - WxOrder order = proxy.saveSingleOrderForCoupon(wxCUserBasicInfo, orderSaveDto,coupon, payWay,couponNumber); - return new ResultData(order); - } catch (MallinkException e) { - logger.error("saveOrderForCoupon error.",e); - throw new MallinkException(e.getErrorCode(), e.getMessage()); - } catch (Exception e) { - logger.error("saveOrderForCoupon error.",e); - throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), e.getMessage()); - } - - }catch(MallinkException me) { - return new ResultData(me.getErrorCode(),me.getMessage()); - }catch(Exception e) { - logger.error("composeSaveOrder error.",e); - return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); - } - - - } - - - private WxCoupon singleOrderCheck(OrderComposeSaveDto ocsd,OrderSaveDto orderSaveDto,int productCount,WxCUserBasicInfo wxCUserBasicInfo,EnumPayWay payWay,TenantEntity tenantEntity,int curindex,boolean singleProduct) { + private WxCoupon singleOrderCheck(OrderSaveDto orderSaveDto,int productCount,WxCUserBasicInfo wxCUserBasicInfo,EnumPayWay payWay,TenantEntity tenantEntity,int curindex,boolean singleProduct) { logger.info("OrderSave: " + orderSaveDto); String premsg = ""; if (singleProduct) { @@ -2608,10 +2500,6 @@ public class WxOrderServiceImpl implements WxOrderService { throw new MallinkException(ErrorCode.COUPON_IS_TAKE_OFF.getCode(),premsg+"【"+coupon.getTitle()+"】已作废"); } - if (null != ocsd) { - ocsd.setWxCoupon(coupon); - } - //判断是否是拼团订单,如果是拼团订单,判断现在进行中的,和已完成的数量是否超出券的限制 if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { int ordercount = this.countUserCouponGroupOrder(wxCUserBasicInfo,coupon.getId(),coupon.getTenantId()); @@ -2739,9 +2627,4 @@ public class WxOrderServiceImpl implements WxOrderService { } } - @Override - public WxComposeOrder getComposeOrder(Long orderId, TenantEntity tenantEntity) { - return wxComposeOrderMapper.selectById(orderId, tenantEntity.getTenantId()); - } - } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 4fcd3da3f..f59d03a4c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -18,6 +18,9 @@ import com.iformall.mapper.*; import com.iformall.pay.*; import com.iformall.service.*; import com.iformall.service.helper.WxPayOrderServiceHelper; +import com.iformall.service.order.OrderAdapterService; +import com.iformall.service.order.OrderFactory; +import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.pay.PayServiceFactory; import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.CDrivingPayService; @@ -105,7 +108,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { WxCashOutService cashOutService; @Autowired - WxComposeOrderMapper wxComposeOrderMapper; + WxBatchOrderMapper wxBatchOrderMapper; + + @Autowired + OrderFactory orderFactory; JSONObject errorMapQuery = JSON.parseObject("{" + "\"ORDERNOTEXIST\":{\"detail\":\"此交易订单号不存在\",\"reason\":\"查询系统中不存在此交易订单号\",\"resolution\":\"该API只能查提交支付交易返回成功的订单,请商户检查需要查询的订单号是否正确\"},\n" + @@ -114,7 +120,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { //方法必须为public AopContext.currentProxy() @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override - public void handleSuccessOrder(WxPayOrder oldRecord,WxComposeOrder composeOrder,WxOrder order,PayQueryAdapterResult queryResult,boolean isScheduleTask,boolean composeSingleOrder) { + public void handleSuccessOrder(WxPayOrder oldRecord,WxComposeOrder composeOrder,PayQueryAdapterResult queryResult,boolean isScheduleTask,boolean isOneChildOrder) { Date curDate = new Date(); if (oldRecord.getPayOrderStatus() != EnumPayStatus.PAY_STATUS_SUCCESS.getCode()) { WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); @@ -136,12 +142,12 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { oldRecord.setUpdateTime(curDate); wxPayOrderMapper.updateById(oldRecord); - if (isComposeOrder(oldRecord)) { + if (EnumComposeOrder.isSingle(composeOrder.getComposeOrderType())) { //如果是组合订单的单独处理。如定时处理的单个订单 - if (composeSingleOrder) { + if (isOneChildOrder) { //处理其他信息 try { - proxy.handleOrderPaySingleOrderSuccess(oldRecord, order, transactionId,isScheduleTask); + proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, transactionId,isScheduleTask); }catch(Exception e) { throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); } @@ -149,10 +155,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if ( null == composeOrder) { throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(),"composeOrder is null."); } - List orderList = getComposeChildOrders(composeOrder.getId(),oldRecord); + List orderList = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrders(composeOrder, oldRecord.getTenantId()); for (WxOrder o : orderList) { try { - proxy.handleOrderPaySingleOrderSuccess(oldRecord, o, transactionId, isScheduleTask); + proxy.handleOrderPaySingleOrderSuccess(o,oldRecord, transactionId, isScheduleTask); }catch(Exception e) { logger.error("handleSuccessOrder error.",e); } @@ -161,7 +167,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { }else { //处理其他信息 try { - proxy.handleOrderPaySingleOrderSuccess(oldRecord, order, transactionId,isScheduleTask); + proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, transactionId,isScheduleTask); }catch(Exception e) { throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); } @@ -169,23 +175,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } - private boolean isComposeOrder(WxPayOrder record) { - if ((null != record.getComposeOrder()) && (EnumComposeOrder.YES.getCode().intValue() == record.getComposeOrder().intValue())) { - return true; - } - return false; - } - - private List getComposeChildOrders(Long composeOrderId,TenantEntity tenantEntity) { - WxOrder orderq = new WxOrder(); - orderq.setComposeOrderId(composeOrderId); - orderq.updateTenantInfo(tenantEntity); - List orderList = wxOrderService.findList(orderq); - return orderList; - } + @Override - public WxPayOrder handleWxOrderQuery(WxPayOrder oldRecord,WxComposeOrder composeOrder,WxOrder order,WxAppinfo appInfo,WxPayAccount payAccount,IdWorker idworker,boolean repeatPay) { + public WxPayOrder handleWxOrderQuery(WxPayOrder oldRecord,WxComposeOrder composeOrder,WxAppinfo appInfo,WxPayAccount payAccount,IdWorker idworker,boolean repeatPay) { PayQueryAdapterResult queryResult = null; int wxpaystatus = 0; try { @@ -199,7 +192,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if (EnumPayStatus.PAY_STATUS_SUCCESS.getCode()==wxpaystatus) { //直接调用不会触发事务,spring事务基于AOP代理 WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); - proxy.handleSuccessOrder(oldRecord,composeOrder,order,queryResult,false,false); + proxy.handleSuccessOrder(oldRecord,composeOrder,queryResult,false,false); throw new MallinkException(ErrorCode.PAY_ORDER_EXIST.getCode(),"该订单已经支付,请勿重复支付!"); }else if (EnumPayStatus.PAY_STATUS_REFUND.getCode()==wxpaystatus) { throw new MallinkException(ErrorCode.PAY_ORDER_REFUND.getCode(),"该订单已经退款,无法支付!"); @@ -233,29 +226,19 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { * //如果是组合订单,则wxPayOrder对应的是WxcomposeOrder.为了兼容之前的,需要把支付相关信息也保存到子订单里面去 * //如果是非组合订单,则wxPayOrder对应的是wxOrder */ - WxComposeOrder composeOrder = null; - WxOrder order = null; - if (isComposeOrder(record)) { - composeOrder = wxComposeOrderMapper.selectById(record.getOrderId(), appInfo.getTenantId()); - if (null == composeOrder) { - logger.error("pay order, order not allow, repaymentReq: " + record.toString() + ", payWay: " + payWay.toString()); - throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); - } - List orderList = getComposeChildOrders(composeOrder.getId(),appInfo.getTenantInfo()); - for (WxOrder o : orderList) { - checkSinglePayOrder(o, user, payWay); - } - - }else { - // 1. check 订单 - order = wxOrderMapper.selectById(record.getOrderId(),appInfo.getTenantId()); - if (order == null) { - logger.error("pay order, order not allow, repaymentReq: " + record.toString() + ", payWay: " + payWay.toString()); - throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); - } - checkSinglePayOrder(order, user, payWay); - } - PayAdapterResult payResult = createPayOrder(appInfo, user, record,composeOrder,order, payWay, params); + OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(record.getComposeOrder()); + WxComposeOrder composeOrder = orderAdapterService.getComposeOrder(record.getOrderId(),appInfo.getTenantId()); + if (null == composeOrder) { + logger.error("pay order, order not allow, repaymentReq: " + record.toString() + ", payWay: " + payWay.toString()); + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); + } + + List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); + for (WxOrder o : orderList) { + checkSinglePayOrder(o, user, payWay); + } + + PayAdapterResult payResult = createPayOrder(appInfo, user, record,composeOrder, payWay, params); if (payResult.isSuccess()) { return new ResultData(Result.SUCCESS,"创建支付单成功",payResult.getData()); }else { @@ -328,17 +311,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } - private PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder,WxOrder order, EnumPayWay payWay,PayExtraParam params) { - /** - * 如果composeOrder存在,支付关联composeOrder - * 如果composeOrder不存在,支付关联WxOrder - */ - boolean isComposeOrder = isComposeOrder(record); - Long orderId = order.getId(); - if (isComposeOrder) { - orderId = composeOrder.getId(); - } - + private PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder, EnumPayWay payWay,PayExtraParam params) { IdWorker idworker = IdWorker.get(); EnumPayShare isShare = EnumPayShare.NO; @@ -351,7 +324,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { Date currentDate = new Date(); //一个订单只有一条支付记录。 WxPayOrder orderq = new WxPayOrder(); - orderq.setOrderId(orderId); + orderq.setOrderId(composeOrder.getMainOrderId()); List list = wxPayOrderMapper.findList(orderq); WxPayOrder oldRecord = null; if (null != list && list.size() > 0) { @@ -361,11 +334,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if (null != oldRecord) { //如果是已经支付成功,则不能再次支付。如果是支付中的,也不能再次支付,等待微信同步结果 if (oldRecord.getPayOrderStatus()==EnumPayStatus.PAY_STATUS_SUCCESS.getCode()) { - logger.error("已支付>>>" + order); + logger.error("已支付>>>" + record); throw new MallinkException(ErrorCode.PAY_ORDER_EXIST); //如果是支付中的,则调用微信接口查询支付状态 }else if (oldRecord.getPayOrderStatus()==EnumPayStatus.PAY_STATUS_WAIT.getCode()) { - record = handleWxOrderQuery(oldRecord,composeOrder,order,appInfo,payAccount,idworker,true); + record = handleWxOrderQuery(oldRecord,composeOrder,appInfo,payAccount,idworker,true); if (null == record) { throw new MallinkException(ErrorCode.PAY_ORDER_PAYING.getCode(),"订单微信查询支付状态失败!"); } @@ -391,7 +364,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } record.setId(id); - record.updateTenantInfo(order); + record.updateTenantInfo(appInfo.getTenantInfo()); record.setCUserId(user.getId()); record.setCreateTime(currentDate); record.setUpdateTime(currentDate); @@ -399,14 +372,12 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setPayTimeEnd(currentDate); // 支付单号 record.setPayOrderNo(String.valueOf(id)); - record.setPayAmount(order.getPayment()); + record.setPayAmount(composeOrder.getPayment()); record.setPayFrom(payWay.getCode()); record.setPayVendor(payWay.getCode()); record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); record.setShare(isShare.getCode()); - if (isComposeOrder) { - record.setComposeOrder(EnumComposeOrder.YES.getCode()); - } + record.setComposeOrder(composeOrder.getComposeOrderType()); if (isShare == EnumPayShare.YES) { // 分账金额 int iChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRate(), false); @@ -430,7 +401,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.debug("wxPayRecord md5 before:"+record.toString()); String beforemd5 = HashUtil.md5(record.toString()); - PayAdapterResult payResult = payServiceFactory.getPayAdapterService(payWay.getCode()).pay(payAccount, composeOrder,order, record,isShare,appInfo, currentDate, params); + PayAdapterResult payResult = payServiceFactory.getPayAdapterService(payWay.getCode()).pay(payAccount, record,composeOrder,isShare,appInfo, currentDate, params); String aftermd5 = HashUtil.md5(record.toString()); if (beforemd5.equals(aftermd5)) { logger.error("支付方式["+payWay.getCode()+"]支付接口【pay】过程中 WxPayOrder 未做更新.record:"+record.toString()); @@ -466,7 +437,12 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { try { // 1. check 订单 - WxOrder order = wxOrderMapper.selectById(record.getOrderId(),appInfo.getTenantId()); + WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(EnumComposeOrder.SINGLE.getCode()).getComposeOrder(record.getOrderId(), appInfo.getTenantId()); + if (composeOrder == null) { + logger.error("pay order, order not allow, repaymentReq: " + record.toString() + ", payWay: " + payWay.toString()); + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); + } + WxOrder order = composeOrder.getSingleOrder(); if (order == null) { logger.error("pay order, order not allow, repaymentReq: " + record.toString() + ", payWay: " + payWay.toString()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); @@ -486,7 +462,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { // 2. check 是否有支付订单 Date currentDate = new Date(); WxPayOrder pq = new WxPayOrder(); - pq.setOrderId(record.getOrderId()); + pq.setOrderId(EnumComposeOrder.getPayOrderId(order)); List list = wxPayOrderMapper.findList(pq); String payOrderNo = ""; if (list.size() <= 0) { @@ -534,7 +510,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.debug("wxPayRecord md5 before:"+record.toString()); String beforemd5 = HashUtil.md5(record.toString()); - PayAdapterResult payResult = payServiceFactory.getPayAdapterService(payWay.getCode()).pay(payAccount, null,order, record,isShare,appInfo, currentDate, params); + PayAdapterResult payResult = payServiceFactory.getPayAdapterService(payWay.getCode()).pay(payAccount, record,composeOrder,isShare,appInfo, currentDate, params); String aftermd5 = HashUtil.md5(record.toString()); if (beforemd5.equals(aftermd5)) { logger.error("支付方式["+payWay.getCode()+"]支付接口【pay】过程中 WxPayOrder 未做更新.record:"+record.toString()); @@ -810,8 +786,22 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } + @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void handler(WxPayOrder record,WxComposeOrder composeOrder,List composeChildOrders,WxOrder order, String transactionId,Long cUserId) { + public void handleOrderPaySuccess(WxPayOrder record, String transactionId) { + WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); + OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(record.getComposeOrder()); + WxComposeOrder composeOrder = orderAdapterService.getComposeOrder(record.getOrderId(), record.getTenantId()); + List orderList = orderAdapterService.getChildOrders(composeOrder, record.getTenantId()); + proxy.handler(record,composeOrder,orderList,transactionId,null); + //组合支付的订单,循环所有子订单 + for (WxOrder o : orderList) { + proxy.handleOrderPaySingleOrderSuccess(o,record, transactionId, false); + } + } + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void handler(WxPayOrder record,WxComposeOrder composeOrder,List composeChildOrders, String transactionId,Long cUserId) { Date currentDate = new Date(); EnumPayStatus payStatus = EnumPayStatus.getEnum(record.getPayOrderStatus()); // 判断支付状态 @@ -836,39 +826,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { "is paid success , orderId : " + record.getOrderId()); return; } - - if ((null != record.getComposeOrder()) && (EnumComposeOrder.YES.getCode().intValue() == record.getComposeOrder().intValue()) ) { - if (composeOrder == null) { - logger.error("pay success handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo()); - throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); - } - if (null != cUserId) { - composeOrder.setCUserId(cUserId); - wxComposeOrderMapper.updateCUserId(composeOrder); - - if (null != composeChildOrders) { - List ids = new ArrayList(); - for (WxOrder o : composeChildOrders) { - ids.add(o.getId()); - } - if (ids.size() > 0 ) { - WxOrder updateOrders = new WxOrder(); - updateOrders.setIds(ids); - updateOrders.setCUserId(cUserId); - updateOrders.updateTenantInfo(order); - wxOrderMapper.updateCUserId(updateOrders); - } - } - } - }else { - if (order == null) { - logger.error("pay success handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo()); - throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); - } - if (null != cUserId) { - order.setCUserId(cUserId); - wxOrderMapper.updateCUserId(order); - } + if (null != cUserId) { + orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).updateChildOrdersCUserId(composeOrder, composeChildOrders, cUserId); } // 修改支付订单状态 @@ -890,27 +849,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } - @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void handleOrderPaySuccess(WxPayOrder record, String transactionId) { - WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); - if (isComposeOrder(record)) { - WxComposeOrder composeOrder = wxComposeOrderMapper.selectById(record.getOrderId(), record.getTenantId()); - List orderList = getComposeChildOrders(composeOrder.getId(),record); - proxy.handler(record,composeOrder,orderList,null,transactionId,null); - //组合支付的订单,循环所有子订单 - for (WxOrder o : orderList) { - proxy.handleOrderPaySingleOrderSuccess(record, o, transactionId, false); - } - }else { - WxOrder order = wxOrderMapper.selectById(record.getOrderId(),record.getTenantId()); - proxy.handler(record,null,null,order,transactionId,null); - proxy.handleOrderPaySingleOrderSuccess(record, order, transactionId,false); - } - } - - @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void handleOrderPaySingleOrderSuccess(WxPayOrder record,WxOrder order, String transactionId,boolean isScheduleTask) { + public void handleOrderPaySingleOrderSuccess(WxOrder order,WxPayOrder record, String transactionId,boolean isScheduleTask) { Long productId = order.getProductId(); WxCoupon wxCoupon = wxCouponMapper.selectById(productId,order.getTenantId()); if(wxCoupon != null) { @@ -985,11 +925,13 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); - WxOrder order = wxOrderMapper.selectById(record.getOrderId(),record.getTenantId()); - proxy.handler(record, null, null, order, transcationId, basicUserId); + OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(record.getComposeOrder()); + WxComposeOrder composeOrder = orderAdapterService.getComposeOrder(record.getOrderId(), record.getTenantId()); + List orderList = orderAdapterService.getChildOrders(composeOrder, record.getTenantId()); + proxy.handler(record, composeOrder,orderList, transcationId, basicUserId); // B端收银台核销券处理, 收银台支付和券支付可能不是同一个人 WxPayOrder payOrderQ = new WxPayOrder(); - payOrderQ.setOrderId(order.getId()); + payOrderQ.setOrderId(composeOrder.getMainOrderId()); //payOrderQ.setPayFrom(EnumPayFrom.INSIDE_B.getCode()); //payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); try { @@ -997,7 +939,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if (unPayOrder != null) { // 更新券支付状态 try { - unPayOrder.setOrderId(order.getId()); + unPayOrder.setOrderId(composeOrder.getMainOrderId()); unPayOrder.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); unPayOrder.setPayVendor(payWay.getCode()); wxPayOrderMapper.updateById(unPayOrder); @@ -1020,9 +962,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } // 修改订单状态 - order.setCUserId(basicUserId); + //order.setCUserId(basicUserId); handler方法已经处理了 + try { - int _count = wxOrderService.microPayOrderSuccess(order); + int _count = wxOrderService.microPayOrderSuccess(composeOrder.getSingleOrder()); if (_count > 1) { logger.error("order micro pay count > 1"); throw new MallinkException(ErrorCode.ORDER_IS_FAIL); @@ -1045,7 +988,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if (record.getShare().equals(EnumPayShare.NO.getCode())) { //结算记录 try { - proxy.createMerchantSubsidy(record, order, new Date(),true); + proxy.createMerchantSubsidy(record, composeOrder.getSingleOrder(), new Date(),true); } catch (Exception e) { logger.error("收银台结算记录失败,{}", e.getMessage()); } @@ -1110,7 +1053,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { private void doCouponPayOrder(WxMerchantBUser user, WxPayOrder record, WxOrder order,EnumPayWay payWay) { // B端收银台核销券处理 WxPayOrder payOrderQ = new WxPayOrder(); - payOrderQ.setOrderId(order.getId()); + payOrderQ.setOrderId(EnumComposeOrder.getPayOrderId(order)); payOrderQ.setCUserId(record.getCUserId()); payOrderQ.setPayFrom(EnumPayFrom.INSIDE_B.getCode()); payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); @@ -1121,7 +1064,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { try { WxPayOrder payOrderCoupon = new WxPayOrder(); payOrderCoupon.setId(unPayOrder.getId()); - payOrderCoupon.setOrderId(order.getId()); + payOrderCoupon.setOrderId(EnumComposeOrder.getPayOrderId(order)); payOrderCoupon.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); wxPayOrderMapper.updateById(payOrderCoupon); } catch (Exception e) { @@ -1212,29 +1155,17 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { return; } - WxComposeOrder composeOrder = null; - WxOrder order = null; - boolean isComposeOrder = isComposeOrder(record); - List orderList = null; - if (isComposeOrder) { - composeOrder = wxComposeOrderMapper.selectById(record.getOrderId(), record.getTenantId()); - if (composeOrder == null) { - throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); - } - orderList = getComposeChildOrders(composeOrder.getId(),record); - for (WxOrder o : orderList) { - checkSingleOrder(o, record); - } - }else { - order = wxOrderMapper.selectById(record.getOrderId(),record.getTenantId()); - checkSingleOrder(order, record); - } - + OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(record.getComposeOrder()); + WxComposeOrder composeOrder = orderAdapterService.getComposeOrder(record.getOrderId(), record.getTenantId()); + List orderList = orderAdapterService.getChildOrders(composeOrder, record.getTenantId()); + for (WxOrder o : orderList) { + checkSingleOrder(o, record); + } if (record.getId() > 0) { // 有价券 if (EnumPayStatus.PAY_STATUS_FAIL.getCode() == status) { // 1. get appinfo - WxAppinfo appInfo = wxAppinfoService.getCAppInfo(order,EnumPayWay.getEnum(record.getPayVendor())); + WxAppinfo appInfo = wxAppinfoService.getCAppInfo(record,EnumPayWay.getEnum(record.getPayVendor())); // 前端支付取消, // 回调未返回,主动检查支付订单状态 try { @@ -1276,16 +1207,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { */ } else if (record.getPayOrderStatus() == EnumPayStatus.PAY_STATUS_CANCEL.getCode()) { try { - if (isComposeOrder && null != orderList) { - for (WxOrder o : orderList) { - wxOrderService.updateOrderStatus(o, EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); - } - }else { - int _count = wxOrderService.updateOrderStatus(order, EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); - if (_count > 1) { - throw new MallinkException(ErrorCode.ORDER_IS_FAIL); - } - } + for (WxOrder o : orderList) { + wxOrderService.updateOrderStatus(o, EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); + } } catch (Exception e) { logger.error(e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL); diff --git a/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java new file mode 100644 index 000000000..16c908df9 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java @@ -0,0 +1,47 @@ +package com.iformall.service.order; + +import java.util.List; + +import com.iformall.domain.dto.OrderComposeSaveDto; +import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumPayWay; +import com.iformall.service.order.entity.WxComposeOrder; + +public interface OrderAdapterService { + + /** + * 数据库创建组合主订单,不是wxOrder.单个的模式不用创建 + * @return + */ + WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay); + + /** + * 是否是一个数量一个订单。一个产品肯定是一个订单 + * @return + */ + boolean isOneNumberOneOrder(WxCoupon coupon); + + /** + * 查询订单信息,单个模式查询WxOrder + * @param mainOrderId + * @param tenantEntity + * @return + */ + WxComposeOrder getComposeOrder(Long mainOrderId,String tenantId); + + /** + * 查询子订单 + * @return + */ + List getChildOrders(WxComposeOrder composeOrder, String tenantId); + + /** + * 更新子订单cUserId + * @param orderList + * @param cUserId + */ + void updateChildOrdersCUserId(WxComposeOrder composeOrder,List orderList,Long cUserId); +} diff --git a/mallinkService/src/main/java/com/iformall/service/order/OrderFactory.java b/mallinkService/src/main/java/com/iformall/service/order/OrderFactory.java new file mode 100644 index 000000000..2e028df13 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/order/OrderFactory.java @@ -0,0 +1,20 @@ +package com.iformall.service.order; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.iformall.enums.EnumComposeOrder; +import com.iformall.service.order.impl.BatchOrderAdapterService; + +@Service +public class OrderFactory { + + @Autowired + BatchOrderAdapterService batchOrderAdapterService; + + public OrderAdapterService getOrderAdapterService(Integer composeOrderType) { + return null; + } + + +} diff --git a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java new file mode 100644 index 000000000..f99a99d20 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java @@ -0,0 +1,25 @@ +package com.iformall.service.order.entity; + +import com.iformall.domain.po.WxOrder; + +import lombok.Data; + +@Data +public class WxComposeOrder { + + public WxComposeOrder(Long mainOrderId,Integer composeOrderType) { + this.mainOrderId = mainOrderId; + this.composeOrderType = composeOrderType; + } + + private Long mainOrderId; + + private Integer composeOrderType; + + private Integer payment; + + private WxOrder singleOrder;//单个模式时不用重复查询 + + private Object mainOrder;//真正的主订单对象 + +} diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java new file mode 100644 index 000000000..3a8e70f56 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java @@ -0,0 +1,108 @@ +package com.iformall.service.order.impl; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import com.iformall.common.IdWorker; +import com.iformall.domain.dto.OrderComposeSaveDto; +import com.iformall.domain.po.WxBatchOrder; +import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumComposeOrder; +import com.iformall.enums.EnumPayWay; +import com.iformall.mapper.WxBatchOrderMapper; +import com.iformall.mapper.WxOrderMapper; +import com.iformall.service.WxOrderService; +import com.iformall.service.order.OrderAdapterService; +import com.iformall.service.order.entity.WxComposeOrder; +import com.iformall.service.order.util.OrderHelper; + +/** + * 购物车批量下单 + * @author alascor + * + */ +@Service +public class BatchOrderAdapterService implements OrderAdapterService { + + @Autowired + WxBatchOrderMapper wxBatchOrderMapper; + @Autowired + WxOrderMapper wxOrderMapper; + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + @Override + public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { + WxBatchOrder order =new WxBatchOrder(); + final IdWorker idWorker = IdWorker.get(); + order.setId(idWorker.nextId()); + order.setCUserId(user.getId()); + int payment = 0; + for (OrderComposeSaveDto ocsd : orderSave) { + boolean isPress = ocsd.getSignleOrder().getPress() != null ? ocsd.getSignleOrder().getPress() : false; + payment = payment+OrderHelper.getCouponPayment(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(),ocsd.getCount()); + } + order.setPayment(payment); + order.setCreateDate(new Date()); + wxBatchOrderMapper.insert(order); + return new WxComposeOrder(order.getId(),EnumComposeOrder.BATCH.getCode()); + } + + @Override + public boolean isOneNumberOneOrder(WxCoupon coupon) { + return coupon.oneNumberOneOrder(); + } + + @Override + public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { + WxBatchOrder order = wxBatchOrderMapper.selectById(mainOrderId, tenantId); + WxComposeOrder corder = new WxComposeOrder(order.getId(),EnumComposeOrder.BATCH.getCode()); + corder.setPayment(order.getPayment()); + corder.setMainOrder(order); + return corder; + } + + @Override + public List getChildOrders(WxComposeOrder composeOrder, String tenantId) { + WxOrder orderq = new WxOrder(); + orderq.setComposeOrderId(composeOrder.getMainOrderId()); + orderq.setComposeOrderType(EnumComposeOrder.BATCH.getCode()); + orderq.setTenantId(tenantId); + List orderList = wxOrderMapper.findList(orderq); + return orderList; + } + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + @Override + public void updateChildOrdersCUserId(WxComposeOrder composeOrder,List orderList, Long cUserId) { + if (null != cUserId) { + WxBatchOrder order = (WxBatchOrder) composeOrder.getMainOrder(); + order.setCUserId(cUserId); + wxBatchOrderMapper.updateCUserId(order); + + if (null != orderList) { + List ids = new ArrayList(); + for (WxOrder o : orderList) { + ids.add(o.getId()); + } + if (ids.size() > 0 ) { + WxOrder updateOrders = new WxOrder(); + updateOrders.setIds(ids); + updateOrders.setCUserId(cUserId); + updateOrders.updateTenantInfo(order); + wxOrderMapper.updateCUserId(updateOrders); + } + } + } + + } + +} diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java new file mode 100644 index 000000000..da706118b --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java @@ -0,0 +1,78 @@ +package com.iformall.service.order.impl; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import com.iformall.common.IdWorker; +import com.iformall.domain.dto.OrderComposeSaveDto; +import com.iformall.domain.po.WxBatchOrder; +import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumComposeOrder; +import com.iformall.enums.EnumPayWay; +import com.iformall.mapper.WxBatchOrderMapper; +import com.iformall.mapper.WxOrderMapper; +import com.iformall.service.order.OrderAdapterService; +import com.iformall.service.order.entity.WxComposeOrder; +import com.iformall.service.order.util.OrderHelper; + +/** + * 购物车批量下单 + * @author alascor + * + */ +@Service +public class SingleOrderAdapterService implements OrderAdapterService { + + @Autowired + WxOrderMapper wxOrderMapper; + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + @Override + public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { + //do nothing, + return new WxComposeOrder(0L, EnumComposeOrder.SINGLE.getCode()); + } + + @Override + public boolean isOneNumberOneOrder(WxCoupon coupon) { + return true; + } + + @Override + public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { + WxOrder wxOrder = wxOrderMapper.selectById(mainOrderId, tenantId); + WxComposeOrder corder = new WxComposeOrder(wxOrder.getId(),EnumComposeOrder.SINGLE.getCode()); + corder.setPayment(wxOrder.getPayment()); + corder.setSingleOrder(wxOrder); + return corder; + } + + @Override + public List getChildOrders(WxComposeOrder composeOrder, String tenantId) { + List list = new ArrayList(); + list.add(composeOrder.getSingleOrder()); + return list; + } + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + @Override + public void updateChildOrdersCUserId(WxComposeOrder composeOrder,List orderList, Long cUserId) { + WxOrder order = composeOrder.getSingleOrder(); + order.setCUserId(cUserId); + wxOrderMapper.updateCUserId(order); + } + + + + + +} diff --git a/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java b/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java new file mode 100644 index 000000000..77aa3c291 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java @@ -0,0 +1,26 @@ +package com.iformall.service.order.util; + +import com.iformall.domain.po.WxCoupon; +import com.iformall.enums.EnumCouponType; + +public class OrderHelper { + + public static int getCouponPayment(WxCoupon coupon,boolean isPress,Long orderGroupId,int couponNumber) { + // 4.1 券价格 + int payment = coupon.getSalePrice()*couponNumber; + //Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode(); + if (isPress || coupon.getType().equals(EnumCouponType.COUPON_PRESS.getCode())) { + // 砍价券 初始是全价即面额 + payment = coupon.getPrice()*couponNumber; + } + if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { + if (orderGroupId == null) { + // 拼团券 初始是全价即面额 + payment = coupon.getPrice()*couponNumber; + } else { + //orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode(); + } + } + return payment; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java index 97013e95c..fa7ecdae6 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java @@ -5,11 +5,12 @@ import java.util.Date; import java.util.Map; import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxComposeOrder; +import com.iformall.domain.po.WxBatchOrder; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxPayOrder; import com.iformall.enums.EnumPayShare; +import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; @@ -28,7 +29,7 @@ public interface PayAdapterService { * @return * @throws Exception */ - public PayAdapterResult pay(WxPayAccount payAccount,WxComposeOrder composeOrder,WxOrder order,WxPayOrder record ,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception; + public PayAdapterResult pay(WxPayAccount payAccount,WxPayOrder record ,WxComposeOrder composeOrder,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception; /** * 查询支付结果,调用对应端的API查询支付结果 diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java index 9e9661072..f11e1f44a 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java @@ -16,7 +16,7 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.PosCouponOrderVerify; import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxComposeOrder; +import com.iformall.domain.po.WxBatchOrder; import com.iformall.domain.po.WxCouponOrder; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java index c6290e5cc..ea62f5f82 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java @@ -7,11 +7,12 @@ import java.util.Map; import org.springframework.stereotype.Service; import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxComposeOrder; +import com.iformall.domain.po.WxBatchOrder; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxPayOrder; import com.iformall.enums.EnumPayShare; +import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.CDrivingPayService; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; @@ -22,7 +23,7 @@ import com.iformall.service.pay.service.pay.wx.BaseWxPayAdapterService; public class WxH5PayService extends BaseWxPayAdapterService implements CDrivingPayService{ @Override - public PayAdapterResult pay(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order, WxPayOrder record, EnumPayShare isShare, + public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record,WxComposeOrder composeOrder, EnumPayShare isShare, WxAppinfo appInfo, Date currentDate, PayExtraParam params) throws Exception { // TODO Auto-generated method stub return null; diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java index 9c7514669..d83eacabd 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java @@ -13,7 +13,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxComposeOrder; +import com.iformall.domain.po.WxBatchOrder; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxPayOrder; @@ -26,6 +26,7 @@ import com.iformall.pay.WxPay; import com.iformall.pay.WxPayOrderP; import com.iformall.pay.WxPayOrderSP; import com.iformall.pay.WxPayment; +import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.CDrivingPayService; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; @@ -60,7 +61,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen "\"NOT_UTF8\":{\"detail\":\"编码格式错误\",\"reason\":\"未使用指定编码格式\",\"resolution\":\"请使用UTF-8编码格式\"}}"); - private WxPayOrderP generateWxPayOrderP(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order, WxPayOrder record,String openId,String appId,Date currentDate) throws Exception { + private WxPayOrderP generateWxPayOrderP(WxPayAccount payAccount,WxComposeOrder composeOrder, WxPayOrder record,String openId,String appId,Date currentDate) throws Exception { // 统一下单 普通商户模式 String noncestr = Utility.generate32UUID(); WxPayOrderP wxPayOrderP = new WxPayOrderP(); @@ -68,30 +69,14 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen wxPayOrderP.setAppid(appId); wxPayOrderP.setMch_id(payAccount.getMchId()); wxPayOrderP.setNonce_str(noncestr); - if (null != composeOrder) { - wxPayOrderP.setBody("组合商品"); - }else { - wxPayOrderP.setBody(order.getDetail()); - } + wxPayOrderP.setBody("在线商品"); wxPayOrderP.setOut_trade_no(record.getPayOrderNo()); - if (null != composeOrder) { - wxPayOrderP.setTotal_fee(composeOrder.getPayment()); - }else { - wxPayOrderP.setTotal_fee(order.getPayment()); - } + wxPayOrderP.setTotal_fee(composeOrder.getPayment()); wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP - if (null != composeOrder) { - wxPayOrderP.setGoods_tag("组合商品"); - }else { - wxPayOrderP.setGoods_tag(String.valueOf(order.getProductId())); - } + wxPayOrderP.setGoods_tag("在线商品"); wxPayOrderP.setNotify_url(payAccount.getPayNotifyUrl()); wxPayOrderP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型 - if (null != composeOrder) { - wxPayOrderP.setProduct_id(String.valueOf(composeOrder.getId())); // 订单ID - }else { - wxPayOrderP.setProduct_id(String.valueOf(order.getId())); - } + wxPayOrderP.setProduct_id(String.valueOf(composeOrder.getMainOrderId())); // 订单ID wxPayOrderP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate)); Date futureDate = new Date(); futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); @@ -150,7 +135,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen - private WxPayOrderSP generateWxPayOrderSP(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order, WxPayOrder record,WxAppinfo appInfo,String openId,String appId,Date currentDate,EnumPayShare isShare) throws Exception { + private WxPayOrderSP generateWxPayOrderSP(WxPayAccount payAccount, WxComposeOrder composeOrder,WxPayOrder record,WxAppinfo appInfo,String openId,String appId,Date currentDate,EnumPayShare isShare) throws Exception { String noncestr = Utility.generate32UUID(); WxPayOrderSP wxPayOrderSP = new WxPayOrderSP(); wxPayOrderSP.setSub_openid(openId); @@ -159,27 +144,14 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen wxPayOrderSP.setSub_appid(appId); wxPayOrderSP.setSub_mch_id(payAccount.getSubMchId()); wxPayOrderSP.setNonce_str(noncestr); - if (null != composeOrder) { - wxPayOrderSP.setBody("组合商品"); - }else { - wxPayOrderSP.setBody(order.getDetail()); - } - + wxPayOrderSP.setBody("在线商品"); wxPayOrderSP.setOut_trade_no(record.getPayOrderNo()); - if (null != composeOrder) { - wxPayOrderSP.setTotal_fee(composeOrder.getPayment().toString()); - }else { - wxPayOrderSP.setTotal_fee(order.getPayment().toString()); - } + wxPayOrderSP.setTotal_fee(composeOrder.getPayment().toString()); wxPayOrderSP.setSpbill_create_ip(record.getIp()); // 终端IP - wxPayOrderSP.setGoods_tag(String.valueOf(order.getProductId())); // 券ID + wxPayOrderSP.setGoods_tag("在线商品"); // 券ID wxPayOrderSP.setNotify_url(payAccount.getPayNotifyUrl()); wxPayOrderSP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型 - if (null != composeOrder) { - wxPayOrderSP.setProduct_id("组合商品"); // 券ID - }else { - wxPayOrderSP.setProduct_id(String.valueOf(order.getProductId())); - } + wxPayOrderSP.setProduct_id(String.valueOf(composeOrder.getMainOrderId())); // wxPayOrderSP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate)); Date futureDate = new Date(); futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); @@ -242,7 +214,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen @Override - public PayAdapterResult pay(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order, WxPayOrder record,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception { + public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record,WxComposeOrder composeOrder,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception { if (null == params ) { throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"openId为空"); } @@ -252,7 +224,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen } //普通商户模式 if (payAccount.getType() == EnumPayMode.MCH.getCode()) { - WxPayOrderP wxPayOrderP = generateWxPayOrderP(payAccount,composeOrder,order,record,openId,appInfo.getAppId(),currentDate); + WxPayOrderP wxPayOrderP = generateWxPayOrderP(payAccount,composeOrder,record,openId,appInfo.getAppId(),currentDate); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderP)); log.info("pay order, wechat pushOrder, " + wxPayOrderP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); @@ -260,7 +232,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen } else { // 统一下单 // 服务商模式 - WxPayOrderSP wxPayOrderSP = generateWxPayOrderSP(payAccount,composeOrder,order,record,appInfo,openId,appInfo.getAppId(),currentDate,isShare); + WxPayOrderSP wxPayOrderSP = generateWxPayOrderSP(payAccount,composeOrder,record,appInfo,openId,appInfo.getAppId(),currentDate,isShare); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderSP)); log.info("pay order, wechat pushOrder, " + wxPayOrderSP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java index 7bf07dca4..6750533a9 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java @@ -12,7 +12,7 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxCUserBasicInfo; -import com.iformall.domain.po.WxComposeOrder; +import com.iformall.domain.po.WxBatchOrder; import com.iformall.domain.po.WxMall; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; @@ -30,6 +30,7 @@ import com.iformall.pay.WxMicroPayOrderSP; import com.iformall.pay.WxPay; import com.iformall.pay.WxPayment; import com.iformall.service.WxCUserService; +import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.CPassivePayService; import com.iformall.service.pay.service.pay.entity.CreateUser; @@ -46,7 +47,7 @@ import me.chanjar.weixin.common.error.WxErrorException; @Service public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implements CPassivePayService{ - private WxMicroPayOrderP generateWxMicroPayOrderP(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order, WxPayOrder record, EnumPayShare isShare, + private WxMicroPayOrderP generateWxMicroPayOrderP(WxPayAccount payAccount, WxComposeOrder composeOrder, WxPayOrder record, EnumPayShare isShare, WxAppinfo appInfo, Date currentDate,String bAppId,String bUserPhone) throws Exception { String noncestr = Utility.generate32UUID(); WxMicroPayOrderP wxPayOrderP = new WxMicroPayOrderP(); @@ -54,11 +55,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement wxPayOrderP.setMch_id(payAccount.getMchId()); wxPayOrderP.setDevice_info(bUserPhone); wxPayOrderP.setNonce_str(noncestr); - if (null != composeOrder) { - wxPayOrderP.setBody("组合商品"); - }else { - wxPayOrderP.setBody(order.getDetail()); - } + wxPayOrderP.setBody("在线商品"); wxPayOrderP.setOut_trade_no(record.getPayOrderNo()); wxPayOrderP.setTotal_fee(record.getPayAmount()); wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP @@ -104,7 +101,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement } - private WxMicroPayOrderSP generateWxMicroPayOrderSP(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order,WxPayOrder record, EnumPayShare isShare, + private WxMicroPayOrderSP generateWxMicroPayOrderSP(WxPayAccount payAccount, WxComposeOrder composeOrder,WxPayOrder record, EnumPayShare isShare, WxAppinfo appInfo, Date currentDate,String bUserPhone) throws Exception { String noncestr = Utility.generate32UUID(); WxMicroPayOrderSP wxPayOrderSP = new WxMicroPayOrderSP(); @@ -114,11 +111,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement wxPayOrderSP.setSub_mch_id(payAccount.getSubMchId()); wxPayOrderSP.setDevice_info(bUserPhone); wxPayOrderSP.setNonce_str(noncestr); - if (null != composeOrder) { - wxPayOrderSP.setBody("组合商品"); - }else { - wxPayOrderSP.setBody(order.getDetail()); - } + wxPayOrderSP.setBody("在线商品"); wxPayOrderSP.setOut_trade_no(record.getPayOrderNo()); wxPayOrderSP.setTotal_fee(record.getPayAmount()); wxPayOrderSP.setSpbill_create_ip(record.getIp()); @@ -170,7 +163,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement @Override - public PayAdapterResult pay(WxPayAccount payAccount, WxComposeOrder composeOrder,WxOrder order, WxPayOrder record, EnumPayShare isShare, + public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record, WxComposeOrder composeOrder, EnumPayShare isShare, WxAppinfo appInfo, Date currentDate, PayExtraParam params) throws Exception { if (payAccount.getType() == EnumPayMode.MCH.getCode()) { // 扫码支付 普通商户模式 @@ -183,12 +176,12 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"bUserPhone 不能为空"); } - WxMicroPayOrderP wxPayOrderP = generateWxMicroPayOrderP(payAccount, composeOrder,order, record, isShare, appInfo, currentDate, bAppId, bUserPhone); + WxMicroPayOrderP wxPayOrderP = generateWxMicroPayOrderP(payAccount, composeOrder,record, isShare, appInfo, currentDate, bAppId, bUserPhone); String response = WxPay.micropay(BeanUtils.toStringMap(wxPayOrderP)); log.info("pay order, wechat micropay, " + wxPayOrderP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); returnMap.put("payOrderId", record.getPayOrderNo()); - returnMap.put("orderId", String.valueOf(order.getId())); + returnMap.put("orderId", String.valueOf(composeOrder.getMainOrderId())); return getWxMicroPayOrderPResult(returnMap, record, payAccount); } else { // 统一下单 // 服务商模式 @@ -196,12 +189,12 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement if (StringUtils.isBlank(bUserPhone)) { throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"bUserPhone 不能为空"); } - WxMicroPayOrderSP wxPayOrderSP = generateWxMicroPayOrderSP(payAccount, composeOrder,order, record, isShare, appInfo, currentDate, bUserPhone); + WxMicroPayOrderSP wxPayOrderSP = generateWxMicroPayOrderSP(payAccount, composeOrder,record, isShare, appInfo, currentDate, bUserPhone); String response = WxPay.micropay(BeanUtils.toStringMap(wxPayOrderSP)); log.info("pay order, wechat micropay, " + wxPayOrderSP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); returnMap.put("payOrderId", record.getPayOrderNo()); - returnMap.put("orderId", String.valueOf(order.getId())); + returnMap.put("orderId", String.valueOf(composeOrder.getMainOrderId())); return getWxMicroPayOrderSPResutl(returnMap, record, payAccount); } } diff --git a/mallinkService/src/main/resources/mapper/WxComposeOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxBatchOrderMapper.xml similarity index 82% rename from mallinkService/src/main/resources/mapper/WxComposeOrderMapper.xml rename to mallinkService/src/main/resources/mapper/WxBatchOrderMapper.xml index ac455f688..ce3973f82 100644 --- a/mallinkService/src/main/resources/mapper/WxComposeOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBatchOrderMapper.xml @@ -1,7 +1,7 @@ - - + + @@ -47,23 +47,23 @@ - select - from wx_compose_order + from wx_batch_order - + select count(1) from wx_batch_order - - update wx_compose_order set `c_user_id` = #{cUserId} where id =#{id} and tenant_id=#{tenantId} + + update wx_batch_order set `c_user_id` = #{cUserId} where id =#{id} and tenant_id=#{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index a5cc0da3b..6e9623073 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -22,10 +22,13 @@ + + - `id`,`tenant_id`,`parent_tenant_id`,`coupon_id`,`coupon_type`,`c_user_id`,`owner_id`,`b_user_id`,`order_id`,`expired_time`,`coupon_order_status`,`create_date`,`update_date`,`coupon_price`, `auto_refund`, `verify_type`,`verify_remark`,`pay_vendor`,`send_merchant_id`,`send_merchant_user_id` + `id`,`tenant_id`,`parent_tenant_id`,`coupon_id`,`coupon_type`,`c_user_id`,`owner_id`,`b_user_id`,`order_id`,`expired_time`,`coupon_order_status`,`create_date`,`update_date`,`coupon_price`, `auto_refund`, + `verify_type`,`verify_remark`,`pay_vendor`,`send_merchant_id`,`send_merchant_user_id`,`compose_order_type`,`compose_order_id` @@ -101,6 +104,14 @@ and `send_merchant_user_id` = #{sendMerchantUserId} + + + and `compose_order_type` = #{composeOrderType} + + + + and `compose_order_id` = #{composeOrderId} + and id in diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index b86d7817e..2c5a5acb6 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -25,11 +25,12 @@ + `id`,`order_number`,`tenant_id`,`parent_tenant_id`,`c_user_id`,`coupon_channel_id`,`product_id`,`type`,`payment_type`,`payment`,`payment_time`,`order_status`,`create_date`,`update_date`,`detail`, - `press_end_date`,`press_current_num`,`press_current_value`,`order_group_id`,`form_id`,`total_payment`,`compose_order_id`,`coupon_number` + `press_end_date`,`press_current_num`,`press_current_value`,`order_group_id`,`form_id`,`total_payment`,`compose_order_id`,`coupon_number`,`compose_order_type` @@ -117,6 +118,10 @@ and `compose_order_id` = #{composeOrderId} + + + and `compose_order_type` = #{composeOrderType} + and `order_status` in From 5f72dcffbb3d36f502b384b83d3d48b2ee064940 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 9 Sep 2021 23:36:07 +0800 Subject: [PATCH 008/171] fix order --- .../java/com/iformall/controller/WxMicroPayController.java | 2 +- .../com/iformall/schedule/CouponOrderExpiringSchedule.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java index f4dcfbf64..4f5285202 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java @@ -103,7 +103,7 @@ public class WxMicroPayController extends BaseController { WxPayOrder record = new WxPayOrder(); record.updateTenantInfo(user); - record.setOrderId(order.getId()); + record.setOrderId(EnumComposeOrder.getPayOrderId(order)); record.setAuthCode(authCode); record.setPayAmount(order.getPayment()); record.setIp(ipStr); diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java index 935271bcc..7e5b0b755 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java @@ -162,7 +162,11 @@ public class CouponOrderExpiringSchedule { try { WxPayOrder wxPayOrder = new WxPayOrder(); wxPayOrder.updateTenantInfo(co); - wxPayOrder.setOrderId(co.getOrderId()); + Long orderId = co.getOrderId(); + if (!EnumComposeOrder.isSingle(co.getComposeOrderType())) { + orderId = co.getComposeOrderId(); + } + wxPayOrder.setOrderId(orderId); wxPayOrder.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); wxPayOrder = wxPayOrderMapper.selectOne(new QueryWrapper(wxPayOrder)); if (wxPayOrder != null && wxPayOrder.getShare().equals(EnumPayShare.YES.getCode())) { From 172dd4dcdf895a376a2255dc26dd2ccdc034016b Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Fri, 10 Sep 2021 10:30:29 +0800 Subject: [PATCH 009/171] fix order --- .../controller/WxPayOrderController.java | 53 +++++++++++-------- .../iformall/service/impl/PosServiceImpl.java | 12 ++--- .../schedule/OrderExpiringSchedule.java | 2 +- .../impl/WxCouponOrderServiceImpl.java | 2 +- .../service/impl/WxPayOrderServiceImpl.java | 2 +- .../impl/WxRefundOrderServiceImpl.java | 7 ++- 6 files changed, 44 insertions(+), 34 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index a7f6ee951..a466d30ad 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -144,12 +144,12 @@ public class WxPayOrderController extends BaseController { } } - @ApiOperation(value = "更新支付订单状态", notes = "{\"payOrderId\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") + @ApiOperation(value = "更新支付订单状态", notes = "{\"payOrderId\":\"string\",\"composeOrderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") @PostMapping("/updatePayOrder") public ResultData updatePayOrder(@RequestBody Map paramMap) { logger.info("/api/pay/updatePayOrder" + paramMap.toString()); String payOrderIdStr = (String) paramMap.get("payOrderId"); - String orderIdStr = (String) paramMap.get("orderId"); + String orderIdStr = (String) paramMap.get("composeOrderId"); String reasonStr = (String) paramMap.get("reason"); Integer status = (Integer) paramMap.get("status"); if (StringUtils.isBlank(orderIdStr)) { @@ -203,6 +203,8 @@ public class WxPayOrderController extends BaseController { WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId()); //查询微信订单状态并更新 + check(composeOrder,payOrder); + WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor())); //WxCUser user = getUser(); //WxAppinfo appInfo = getAppInfo(user.getAppId()); @@ -235,32 +237,41 @@ public class WxPayOrderController extends BaseController { } } - private boolean check(Long orderId,WxOrder order,WxPayOrder payOrder) { - if (null == order) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "未查询到Order["+orderId+"]."); - } - WxCoupon wxCoupon = wxCouponService.getById(order.getProductId(),order.getTenantId()); - if (null == wxCoupon) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "未查询到优惠券[orderId:"+orderId+"]."); - } - - //拼团的订单,如果查询到是拼团待付款的,则重新查询是否已经真的支付,其他的直接返回订单信息 - if (wxPayOrderService.isOrderGroupCoupon(payOrder, wxCoupon)) { - if (!order.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode())) { - return true; - } - }else { - //非拼团的订单,支付成功,关闭订单,撤销支付订单,支付转退款的,直接返回订单信息,其他需要查询真实支付状态 - if (payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())|| + private boolean check(WxComposeOrder composeOrder,WxPayOrder payOrder) { + if (EnumComposeOrder.isSingle(composeOrder.getComposeOrderType())) { + WxOrder order = composeOrder.getSingleOrder(); + if (null == order) { + throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "未查询到Order["+payOrder.getOrderId()+"]."); + } + WxCoupon wxCoupon = wxCouponService.getById(order.getProductId(),order.getTenantId()); + if (null == wxCoupon) { + throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "未查询到优惠券[orderId:"+payOrder.getOrderId()+"]."); + } + //拼团的订单,如果查询到是拼团待付款的,则重新查询是否已经真的支付,其他的直接返回订单信息 + if (wxPayOrderService.isOrderGroupCoupon(payOrder, wxCoupon)) { + if (!order.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode())) { + return true; + } + }else { + //非拼团的订单,支付成功,关闭订单,撤销支付订单,支付转退款的,直接返回订单信息,其他需要查询真实支付状态 + if (payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())|| + payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_CLOSE.getCode())|| + payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REVERSE.getCode())|| + payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REFUND.getCode())) { + return true; + } + } + }else { + if (payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())|| payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_CLOSE.getCode())|| payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REVERSE.getCode())|| payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REFUND.getCode())) { return true; } - } + } return false; } - + @ApiOperation("分页列表接口") @GetMapping("/list") @ApiImplicitParams({ diff --git a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java index 7a7528522..f7dc8d16c 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java @@ -2099,7 +2099,7 @@ public class PosServiceImpl implements PosService { payOrder.setId(idWorker.nextId()); payOrder.updateTenantInfo(merchantBUser); payOrder.setCUserId(memId); - payOrder.setOrderId(order.getId()); + payOrder.setOrderId(EnumComposeOrder.getPayOrderId(order)); payOrder.setCreateTime(curDate); payOrder.setUpdateTime(curDate); payOrder.setPayTimeStart(curDate); @@ -2140,7 +2140,7 @@ public class PosServiceImpl implements PosService { Long posPayOrderId, Integer neuPaymentAmount, Date neuPosPayOrderTime, String posPayOrderNo) { // 1. insert into PayOrder WxPayOrder payOrderQ = new WxPayOrder(); - payOrderQ.setOrderId(order.getId()); + payOrderQ.setOrderId(EnumComposeOrder.getPayOrderId(order)); payOrderQ.updateTenantInfo(merchantBUser); List payOrderList = payOrderMapper.findList(payOrderQ); WxPayOrder payOrder = null; @@ -2153,7 +2153,7 @@ public class PosServiceImpl implements PosService { payOrder.updateTenantInfo(merchantBUser); payOrder.setCUserId(memId); payOrder.setBUserId(merchantBUser.getId()); - payOrder.setOrderId(order.getId()); + payOrder.setOrderId(EnumComposeOrder.getPayOrderId(order)); payOrder.setCreateTime(curDate); payOrder.setUpdateTime(curDate); payOrder.setPayTimeStart(curDate); @@ -2238,7 +2238,7 @@ public class PosServiceImpl implements PosService { // 1. insert into PayOrder WxPayOrder payOrderQ = new WxPayOrder(); payOrderQ.updateTenantInfo(buUser); - payOrderQ.setOrderId(order.getId()); + payOrderQ.setOrderId(EnumComposeOrder.getPayOrderId(order)); List payOrderList = payOrderMapper.findList(payOrderQ); WxPayOrder payOrder = null; if (null == payOrderList || payOrderList.size()<=0) { @@ -2326,7 +2326,7 @@ public class PosServiceImpl implements PosService { payOrder.setTenantId(buUser.getTenantId()); payOrder.updateTenantInfo(buUser); payOrder.setCUserId(memId); - payOrder.setOrderId(order.getId()); + payOrder.setOrderId(EnumComposeOrder.getPayOrderId(order)); payOrder.setCreateTime(curDate); payOrder.setUpdateTime(curDate); payOrder.setPayTimeStart(curDate); @@ -2391,7 +2391,7 @@ public class PosServiceImpl implements PosService { WxPayOrder payOrderQ = new WxPayOrder(); payOrderQ.updateTenantInfo(refundOrder); payOrderQ.setCUserId(refundOrder.getCUserId()); - payOrderQ.setOrderId(refundOrder.getId()); + payOrderQ.setOrderId(EnumComposeOrder.getPayOrderId(refundOrder)); payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); payOrderQ.setPosPayOrderId(posPayOrderId); diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java index 2641b46be..0467fda8a 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java @@ -400,7 +400,7 @@ public class OrderExpiringSchedule { WxPayOrder payOrderQ = new WxPayOrder(); payOrderQ.updateTenantInfo(order); payOrderQ.setCUserId(order.getCUserId()); - payOrderQ.setOrderId(order.getId()); + payOrderQ.setOrderId(EnumComposeOrder.getPayOrderId(order)); //payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); WxPayOrder payOrder = null; 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 bb5c2a48c..43be6b2fe 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -906,7 +906,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { WxPayOrder payOrder = null; WxPayOrder payOrderQ = new WxPayOrder(); payOrderQ.updateTenantInfo(couponOrder); - payOrderQ.setOrderId(order.getId()); + payOrderQ.setOrderId(EnumComposeOrder.getPayOrderId(order)); payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); List payList = wxPayOrderMapper.selectList(new QueryWrapper(payOrderQ)); if (payList.size() > 0) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index f59d03a4c..afe771e79 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -1092,7 +1092,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); merchantSubsidy.setId(idWorker.nextId()); merchantSubsidy.updateTenantInfo(order); - merchantSubsidy.setOrderId(record.getOrderId()); + merchantSubsidy.setOrderId(order.getId()); merchantSubsidy.setOrderType(EnumOrderType.MICROPAY.getCode()); WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectById(order.getProductId()); merchantSubsidy.setMerchantId(wxMerchantBUser.getMerchantId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index cf3a23df6..4706b67a6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -128,7 +128,6 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { logger.error("券ID不存在:" + couponOrderId); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); } - WxOrder wxOrder = wxOrderMapper.selectById(wxCouponOrder.getOrderId(),wxCouponOrder.getTenantId()); if (wxOrder == null) { logger.error("订单ID不存在:" + couponOrderId); @@ -178,7 +177,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { WxPayOrder payOrderQ = new WxPayOrder(); payOrderQ.updateTenantInfo(wxCouponOrder); payOrderQ.setCUserId(wxOrder.getCUserId()); - payOrderQ.setOrderId(wxOrder.getId()); + payOrderQ.setOrderId(EnumComposeOrder.getPayOrderId(wxOrder)); payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); WxPayOrder payOrder = null; @@ -376,7 +375,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { WxPayOrder payOrderQ = new WxPayOrder(); payOrderQ.updateTenantInfo(wxOrder); payOrderQ.setCUserId(wxOrder.getCUserId()); - payOrderQ.setOrderId(wxOrder.getId()); + payOrderQ.setOrderId(EnumComposeOrder.getPayOrderId(wxOrder)); payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); WxPayOrder payOrder = null; @@ -598,7 +597,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { WxPayOrder payOrderQ = new WxPayOrder(); payOrderQ.updateTenantInfo(wxOrder); payOrderQ.setCUserId(wxOrder.getCUserId()); - payOrderQ.setOrderId(wxOrder.getId()); + payOrderQ.setOrderId(EnumComposeOrder.getPayOrderId(wxOrder)); //payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); WxPayOrder payOrder = null; From e68daab181c688d4263faf6e6d0008df04914027 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Fri, 10 Sep 2021 14:17:55 +0800 Subject: [PATCH 010/171] fix order --- .../db/migration/V202109070001__order.sql | 103 +++++++++++++++++- .../controller/WxMicroPayController.java | 10 +- .../controller/WxOrderController.java | 2 +- .../schedule/CouponOrderExpiringSchedule.java | 6 +- .../com/iformall/domain/dto/OrderSaveDto.java | 5 + .../java/com/iformall/domain/po/WxOrder.java | 4 +- .../com/iformall/domain/po/WxPayOrder.java | 15 +++ .../service/WxCouponOrderService.java | 3 +- .../impl/WxCouponOrderServiceImpl.java | 44 ++++++-- .../service/impl/WxOrderServiceImpl.java | 50 ++++----- .../service/impl/WxPayOrderServiceImpl.java | 41 +++++-- .../service/order/OrderAdapterService.java | 14 +++ .../entity/WxComposeChildOrderPrice.java | 19 ++++ .../entity/WxComposeChildOrderShare.java | 24 ++++ .../order/impl/BatchOrderAdapterService.java | 16 ++- .../order/impl/SingleOrderAdapterService.java | 19 +++- .../service/order/util/OrderHelper.java | 43 ++++++-- .../resources/mapper/WxPayOrderMapper.xml | 4 +- 18 files changed, 348 insertions(+), 74 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeChildOrderPrice.java create mode 100644 mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeChildOrderShare.java diff --git a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql index 3dbab2ade..a36797de0 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql @@ -718,4 +718,105 @@ ALTER TABLE wx_coupon_order_95 ADD COLUMN `compose_order_id` bigint(20) C ALTER TABLE wx_coupon_order_96 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; ALTER TABLE wx_coupon_order_97 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; ALTER TABLE wx_coupon_order_98 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; -ALTER TABLE wx_coupon_order_99 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; \ No newline at end of file +ALTER TABLE wx_coupon_order_99 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; + +ALTER TABLE wx_pay_order_0 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_1 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_2 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_3 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_4 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_5 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_6 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_7 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_8 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_9 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_10 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_11 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_12 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_13 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_14 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_15 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_16 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_17 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_18 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_19 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_20 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_21 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_22 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_23 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_24 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_25 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_26 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_27 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_28 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_29 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_30 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_31 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_32 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_33 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_34 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_35 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_36 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_37 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_38 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_39 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_40 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_41 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_42 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_43 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_44 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_45 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_46 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_47 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_48 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_49 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_50 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_51 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_52 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_53 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_54 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_55 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_56 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_57 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_58 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_59 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_60 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_61 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_62 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_63 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_64 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_65 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_66 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_67 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_68 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_69 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_70 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_71 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_72 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_73 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_74 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_75 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_76 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_77 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_78 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_79 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_80 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_81 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_82 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_83 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_84 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_85 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_86 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_87 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_88 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_89 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_90 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_91 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_92 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_93 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_94 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_95 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_96 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_97 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_98 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; +ALTER TABLE wx_pay_order_99 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; \ No newline at end of file diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java index 4f5285202..b693979ac 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java @@ -9,6 +9,8 @@ import com.iformall.domain.po.*; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.*; +import com.iformall.service.order.OrderFactory; +import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.utils.IPUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -57,6 +59,9 @@ public class WxMicroPayController extends BaseController { @Autowired private WxCUserBasicInfoService wxCUserBasicInfoService; + + @Autowired + OrderFactory orderFactory; @ApiOperation(value = "付款码支付订单", notes = "params:{\"authCode\":\"String\",\"totalFee\":\"支付金额\"},\n" + "注意:\n" + @@ -428,7 +433,8 @@ public class WxMicroPayController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } - WxOrder microOrder = wxOrderService.getById(orderId,wxMerchantBUser.getTenantId()); + WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(EnumComposeOrder.SINGLE.getCode()).getComposeOrder(orderId, wxMerchantBUser.getTenantId()); + WxOrder microOrder = composeOrder.getSingleOrder(); if (microOrder == null) { return new ResultData(ErrorCode.ORDER_IS_NOT_FIND); } @@ -449,7 +455,7 @@ public class WxMicroPayController extends BaseController { Integer remainPrice = payPrice; if (wxCouponOrder != null) { try { - couponPayOrder = wxCouponOrderService.microPayPreVerify(microOrder, wxCouponOrder, wxMerchantBUser, payPrice,payWay,ipStr,authCode); + couponPayOrder = wxCouponOrderService.microPayPreVerify(composeOrder, wxCouponOrder, wxMerchantBUser, payPrice,payWay,ipStr,authCode); //remainPrice = microOrder.getPayment() - couponPayOrder.getPayAmount(); remainPrice = couponPayOrder.getPayAmount(); // 更新实际支付金额 diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index e20fa4f11..a06339f97 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -88,7 +88,7 @@ public class WxOrderController extends BaseController { return wxOrderService.composeSaveOrder(EnumComposeOrder.BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); } - @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("singleSave") public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { Long memberId; diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java index 7e5b0b755..bf9d1ff7f 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java @@ -180,12 +180,12 @@ public class CouponOrderExpiringSchedule { wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); wxSharingOrderDto.updateTenantInfo(wxPayOrder); wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId()); - if (wxPayOrder.getRateAmount() != null) { + if (wxPayOrder.getChildOrderShare(co.getOrderId()).getRateAmount() != null) { // 实际分账金额为 分账金额 + 通道费差 - wxSharingOrderDto.setShareAmount(wxPayOrder.getShareAmount()+wxPayOrder.getRateAmount()); + wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(co.getOrderId()).getShareAmount()+wxPayOrder.getChildOrderShare(co.getOrderId()).getRateAmount()); } else { // 未设置通道费差 - wxSharingOrderDto.setShareAmount(wxPayOrder.getShareAmount()); + wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(co.getOrderId()).getShareAmount()); } wxProfitSharingOrderService.finishSharingOrder(wxSharingOrderDto,wxPayOrder.getPayVendor()); } diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java index 25d1c091f..52def9a31 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java @@ -21,5 +21,10 @@ public class OrderSaveDto implements Serializable { //被操作人的ID 供A端使用 private Long userId; + + public boolean isPressOrder() { + boolean isPress = this.getPress() != null ? this.getPress() : false; + return isPress; + } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java index b12710dcb..e170fb75d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java @@ -97,12 +97,12 @@ public class WxOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="composeOrderId") private Long composeOrderId; - @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="couponNumber") + @io.swagger.annotations.ApiModelProperty(value="商品数量",name="couponNumber") private Integer couponNumber; @io.swagger.annotations.ApiModelProperty(value="组合订单类型EnumComposeOrder",name="composeOrderType") private Integer composeOrderType; - + @TableField(exist = false) protected List statusS; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java index fefa053fe..00a69c1a6 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java @@ -1,7 +1,11 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.service.order.entity.WxComposeChildOrderShare; + import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -52,6 +56,17 @@ public class WxPayOrder extends TenantEntity { private Integer shareAmount; @io.swagger.annotations.ApiModelProperty(value="通道费差(购买时刻的通道费差,分账完结时使用)",name="rateAmount") private Integer rateAmount; + @io.swagger.annotations.ApiModelProperty(value="子订单分账金额json",name="childOrderShare") + private String childOrderShare; + + public WxComposeChildOrderShare getChildOrderShare(Long wxOrderId) { + Map childs = JSON.parseObject(this.childOrderShare, Map.class); + JSONObject childOrderShare = (JSONObject) childs.get(String.valueOf(wxOrderId)); + if (null != childOrderShare) { + return new WxComposeChildOrderShare(childOrderShare.getInteger("realPayMent"), childOrderShare.getInteger("shareAmount"), childOrderShare.getInteger("rateAmount")); + } + return null; + } @io.swagger.annotations.ApiModelProperty(value="支付失败原因",name="failReason") private String failReason; @io.swagger.annotations.ApiModelProperty(value="支付后结果来源(0:callback, 1:query)",name="payEndFrom") diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index 6f7416041..65289aeb7 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -7,6 +7,7 @@ import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.*; import com.iformall.enums.EnumPayWay; +import com.iformall.service.order.entity.WxComposeOrder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -206,7 +207,7 @@ public interface WxCouponOrderService { */ JSONArray queryMicroPayCouponOrder(WxMerchantBUser user, WxCUserBasicInfo cUser, Integer price); - WxPayOrder microPayPreVerify(WxOrder microOrder, WxCouponOrder couponOrder, WxMerchantBUser bUser, Integer price, EnumPayWay payWay,String ipstr,String authCode); + WxPayOrder microPayPreVerify(WxComposeOrder composeOrder, WxCouponOrder couponOrder, WxMerchantBUser bUser, Integer price, EnumPayWay payWay,String ipstr,String authCode); Integer microPayVerify(WxMerchantBUser bUser, Long couponOrderId,EnumPayWay payWay); 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 43be6b2fe..37f7a780b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.iformall.service.impl; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -25,6 +26,12 @@ import com.iformall.mapper.*; import com.iformall.mq.MqBaseProducer; import com.iformall.pay.WxPayConstant; import com.iformall.service.*; +import com.iformall.service.order.OrderAdapterService; +import com.iformall.service.order.OrderFactory; +import com.iformall.service.order.entity.WxComposeChildOrderPrice; +import com.iformall.service.order.entity.WxComposeChildOrderShare; +import com.iformall.service.order.entity.WxComposeOrder; +import com.iformall.service.order.util.OrderHelper; import com.iformall.service.pay.PayServiceFactory; import com.iformall.utils.Constant; import com.iformall.utils.DateUtils; @@ -152,6 +159,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Autowired RedisLock redisLock; + + @Autowired + OrderFactory orderFactory; private final SimpleDateFormat mydateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -670,13 +680,13 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { wxSharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode()); } wxSharingOrderDto.setPayAmount(wxPayOrder.getPayAmount()); - wxSharingOrderDto.setRateAmount(wxPayOrder.getRateAmount()); + wxSharingOrderDto.setRateAmount(wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getRateAmount()); wxSharingOrderDto.setOrderId(wxPayOrder.getId()); wxSharingOrderDto.setPayTimeStart(wxPayOrder.getPayTimeStart()); wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); wxSharingOrderDto.updateTenantInfo(wxPayOrder); wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId()); - wxSharingOrderDto.setShareAmount(wxPayOrder.getShareAmount()); + wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getShareAmount()); wxProfitSharingOrderService.createSharingOrder(wxSharingOrderDto,payWay); } } catch (Exception e) { @@ -1357,7 +1367,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxPayOrder microPayPreVerify(WxOrder microOrder, WxCouponOrder couponOrder, WxMerchantBUser bUser, Integer payPrice, EnumPayWay payWay,String ipstr,String authCode) { + public WxPayOrder microPayPreVerify(WxComposeOrder composeOrder, WxCouponOrder couponOrder, WxMerchantBUser bUser, Integer payPrice, EnumPayWay payWay,String ipstr,String authCode) { // 1. 获取券信息 WxCoupon wxCoupon = wxCouponMapper.selectById(couponOrder.getCouponId(),couponOrder.getTenantId()); if (wxCoupon == null) { @@ -1406,7 +1416,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify(); posCouponOrderVerify.updateTenantInfo(couponOrder); posCouponOrderVerify.setCouponOrderId(couponOrder.getId()); - posCouponOrderVerify.setPosOrderId(microOrder.getId()); + posCouponOrderVerify.setPosOrderId(composeOrder.getSingleOrder().getId()); posCouponOrderVerify.setOrderFrom(EnumOrderFrom.INSIDE.getCode()); posCouponOrderVerify.setState(EnumEnableType.Enable.getCode()); try { @@ -1441,7 +1451,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify(); posCouponOrderVerify.updateTenantInfo(couponOrder); posCouponOrderVerify.setCouponOrderId(couponOrder.getId()); - posCouponOrderVerify.setPosOrderId(microOrder.getId()); + posCouponOrderVerify.setPosOrderId(composeOrder.getSingleOrder().getId()); posCouponOrderVerify.setOrderFrom(EnumOrderFrom.INSIDE.getCode()); posCouponOrderVerify.setState(EnumEnableType.Enable.getCode()); try { @@ -1481,9 +1491,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { WxPayOrder payOrder = new WxPayOrder(); Date curDate = new Date(); payOrder.setId(payOrderId); - payOrder.updateTenantInfo(microOrder); - payOrder.setCUserId(microOrder.getCUserId()); - payOrder.setOrderId(microOrder.getId()); + payOrder.updateTenantInfo(composeOrder.getSingleOrder()); + payOrder.setCUserId(composeOrder.getSingleOrder().getCUserId()); + payOrder.setOrderId(composeOrder.getSingleOrder().getId()); payOrder.setCreateTime(curDate); payOrder.setUpdateTime(curDate); payOrder.setPayTimeStart(curDate); @@ -1491,7 +1501,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { payOrder.setPayOrderNo(String.valueOf(payOrderId)); payOrder.setIp(ipstr); payOrder.setAuthCode(authCode); - Integer payAmount = microOrder.getPayment() - wxCoupon.getPrice(); + Integer payAmount = composeOrder.getSingleOrder().getPayment() - wxCoupon.getPrice(); payOrder.setPayAmount(payAmount); // if (microOrder.getPayment() > wxCoupon.getPrice()) { // payOrder.setPayAmount(wxCoupon.getPrice()); @@ -1503,7 +1513,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { payOrder.setShare(shareCode); if (shareCode.intValue() == EnumPayShare.YES.getCode().intValue()) { // 分账金额 - int iChargeFee = PayUtils.getPayRate(payAmount, payAccount.getRate(), false); + int iChargeFee = OrderHelper.getMallCharge(payAmount, payAccount); Integer share_amount = payAmount - iChargeFee; payOrder.setShareAmount(share_amount); if(payAccount.getRealRate() != null) { @@ -1513,6 +1523,20 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { if (share_amount <= 0) { payOrder.setShare(EnumPayShare.NO.getCode()); } + + //设置子订单分账金额 + Map childShares = new HashMap(); + OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()); + List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); + for (WxOrder o : orderList) { + WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); + WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); + int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); + Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; + Integer orderRateAmount = PayUtils.getPayRate(price.getRealPayMent(), payAccount.getRealRate(), true); + childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); + } + payOrder.setChildOrderShare(JSON.toJSONString(childShares)); } payOrder.setPayFrom(EnumPayFrom.INSIDE_B.getCode()); payOrder.setPosPayOrderId(couponOrder.getId()); 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 171c9ed23..8f112178f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -21,7 +21,10 @@ import com.iformall.enums.*; import com.iformall.service.*; import com.iformall.service.order.OrderAdapterService; import com.iformall.service.order.OrderFactory; +import com.iformall.service.order.entity.WxComposeChildOrderPrice; +import com.iformall.service.order.entity.WxComposeChildOrderShare; import com.iformall.service.order.entity.WxComposeOrder; +import com.iformall.service.order.util.OrderHelper; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -1111,22 +1114,19 @@ public class WxOrderServiceImpl implements WxOrderService { cardInfo.setTransactionId(payOrder.getTransactionId()); if (payOrder.getShareAmount() != null) { // 开启分账 - fee = payOrder.getPayAmount() - payOrder.getShareAmount(); - cardInfo.setShareFeeAmount(payOrder.getShareAmount()); - cardInfo.setRemainingShareFeeAmount(payOrder.getShareAmount()); - cardInfo.setRateAmount(payOrder.getRateAmount()); + WxComposeChildOrderShare share = payOrder.getChildOrderShare(order.getId()); + fee = share.getRealPayMent() - share.getShareAmount(); + cardInfo.setShareFeeAmount(share.getShareAmount()); + cardInfo.setRemainingShareFeeAmount(share.getShareAmount()); + cardInfo.setRateAmount(share.getRateAmount()); } else { // 未开启分账 - fee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRate(), false); - Integer shareAmount = payOrder.getPayAmount() - fee; + Integer orderRealPayMent = payOrder.getChildOrderShare(order.getId()).getRealPayMent(); + fee = OrderHelper.getMallCharge(orderRealPayMent, payAccountQ); + Integer shareAmount = orderRealPayMent - fee; cardInfo.setShareFeeAmount(shareAmount); cardInfo.setRemainingShareFeeAmount(shareAmount); - if (payAccount.getRealRate() != null) { - int iRealChargeFee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRealRate(), true); - if (fee > iRealChargeFee) { - cardInfo.setRateAmount(fee - iRealChargeFee); - } - } + cardInfo.setRateAmount(OrderHelper.getRateAmount(orderRealPayMent, fee, payAccountQ)); } } } else { @@ -1749,13 +1749,13 @@ public class WxOrderServiceImpl implements WxOrderService { sharingOrder.setMerchantId(wxMerchantBUser.getMerchantId()); sharingOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode()); sharingOrder.setPayAmount(wxPayOrder.getPayAmount()); - sharingOrder.setRateAmount(wxPayOrder.getRateAmount()); + sharingOrder.setRateAmount(wxPayOrder.getChildOrderShare(orderId).getRateAmount()); sharingOrder.setOrderId(wxPayOrder.getId()); sharingOrder.setPayTimeStart(wxPayOrder.getPayTimeStart()); sharingOrder.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); sharingOrder.updateTenantInfo(wxPayOrder); sharingOrder.setTransactionId(wxPayOrder.getTransactionId()); - sharingOrder.setShareAmount(wxPayOrder.getShareAmount()); + sharingOrder.setShareAmount(wxPayOrder.getChildOrderShare(orderId).getShareAmount()); ResultData resultData = wxProfitSharingOrderService.createSharingOrder(sharingOrder,payWay.getCode()); } else { logger.error("微信分账: 未找到payorder or merchant at orderid-" + orderId); @@ -2007,7 +2007,6 @@ public class WxOrderServiceImpl implements WxOrderService { } for (int j =0 ; j < totalOrderCount ; j ++) { // 是否砍价 - boolean isPress = orderdto.getSignleOrder().getPress() != null ? orderdto.getSignleOrder().getPress() : false; WxOrder order = null; if (checkCouponIsFree(orderdto.getWxCoupon())) { // 免费券 @@ -2024,7 +2023,7 @@ public class WxOrderServiceImpl implements WxOrderService { } } else { // 有价券 - order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), isPress, orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId()); + order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId()); } } @@ -2115,20 +2114,9 @@ public class WxOrderServiceImpl implements WxOrderService { // 4. 保存订单 Long orderNumber; // 4.1 券价格 - int payment = coupon.getSalePrice()*couponNumber; - Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode(); - if (isPress || coupon.getType().equals(EnumCouponType.COUPON_PRESS.getCode())) { - // 砍价券 初始是全价即面额 - payment = coupon.getPrice()*couponNumber; - } - if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { - if (orderGroupId == null) { - // 拼团券 初始是全价即面额 - payment = coupon.getPrice()*couponNumber; - } else { - orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode(); - } - } + WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrderPrice(coupon, isPress, orderGroupId, couponNumber); + + Integer orderStatus = OrderHelper.getOrderStatusWxCoupon(coupon, orderGroupId); // 4.2 保存订单 WxOrder record = new WxOrder(); @@ -2136,7 +2124,7 @@ public class WxOrderServiceImpl implements WxOrderService { record.setCouponChannelId(couponChannelId); record.setOrderGroupId(orderGroupId); record.setFormId(formId); - record.setPayment(payment); + record.setPayment(price.getRealPayMent()); record.setOrderStatus(orderStatus); record.setComposeOrderId(composeOrder.getMainOrderId()); record.setComposeOrderType(composeOrder.getComposeOrderType()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index afe771e79..5892e17a8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -20,7 +20,10 @@ import com.iformall.service.*; import com.iformall.service.helper.WxPayOrderServiceHelper; import com.iformall.service.order.OrderAdapterService; import com.iformall.service.order.OrderFactory; +import com.iformall.service.order.entity.WxComposeChildOrderPrice; +import com.iformall.service.order.entity.WxComposeChildOrderShare; import com.iformall.service.order.entity.WxComposeOrder; +import com.iformall.service.order.util.OrderHelper; import com.iformall.service.pay.PayServiceFactory; import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.CDrivingPayService; @@ -380,15 +383,23 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setComposeOrder(composeOrder.getComposeOrderType()); if (isShare == EnumPayShare.YES) { // 分账金额 - int iChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRate(), false); - Integer share_amount = record.getPayAmount() - iChargeFee; + int mallCharge = OrderHelper.getMallCharge(record.getPayAmount(), payAccount); + Integer share_amount = record.getPayAmount() - mallCharge; record.setShareAmount(share_amount); - if(payAccount.getRealRate() != null) { - int iRealChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRealRate(), true); - if(iChargeFee > iRealChargeFee) { - record.setRateAmount(iChargeFee - iRealChargeFee); - } + record.setRateAmount(OrderHelper.getRateAmount(record.getPayAmount(),mallCharge, payAccount)); + //设置子订单分账金额 + Map childShares = new HashMap(); + OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()); + List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); + for (WxOrder o : orderList) { + WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); + WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); + int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); + Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; + Integer orderRateAmount = OrderHelper.getRateAmount(price.getRealPayMent(),orderMallCharge, payAccount); + childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); } + record.setChildOrderShare(JSON.toJSONString(childShares)); } int sqlRow = wxPayOrderMapper.insert(record); @@ -484,7 +495,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setShare(isShare.getCode()); if (isShare == EnumPayShare.YES) { // 分账金额 - int iChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRate(), false); + int iChargeFee = OrderHelper.getMallCharge(record.getPayAmount(), payAccount); Integer share_amount = record.getPayAmount() - iChargeFee; record.setShareAmount(share_amount); if(payAccount.getRealRate() != null) { @@ -495,6 +506,20 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { isShare = EnumPayShare.NO; record.setShare(isShare.getCode()); } + + //设置子订单分账金额 + Map childShares = new HashMap(); + OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()); + List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); + for (WxOrder o : orderList) { + WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); + WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); + int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); + Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; + Integer orderRateAmount = PayUtils.getPayRate(price.getRealPayMent(), payAccount.getRealRate(), true); + childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); + } + record.setChildOrderShare(JSON.toJSONString(childShares)); } int sqlRow = wxPayOrderMapper.insert(record); diff --git a/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java index 16c908df9..6e1800e97 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java @@ -8,6 +8,7 @@ import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.EnumPayWay; +import com.iformall.service.order.entity.WxComposeChildOrderPrice; import com.iformall.service.order.entity.WxComposeOrder; public interface OrderAdapterService { @@ -24,6 +25,19 @@ public interface OrderAdapterService { */ boolean isOneNumberOneOrder(WxCoupon coupon); + /** + * 查询每一个订单的产品的真实支付价格及补贴 + * @param coupon + * @return + */ + WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber); + + /** + * 计算每一个子订单的补贴 + * @return + */ + Integer calcuteChildOrderSubsidy(); + /** * 查询订单信息,单个模式查询WxOrder * @param mainOrderId diff --git a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeChildOrderPrice.java b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeChildOrderPrice.java new file mode 100644 index 000000000..5137adfd9 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeChildOrderPrice.java @@ -0,0 +1,19 @@ +package com.iformall.service.order.entity; + +import lombok.Data; + +@Data +public class WxComposeChildOrderPrice { + + public WxComposeChildOrderPrice(Integer productSinglePrice,Integer productNumber,Long productId) { + this.productSinglePrice = productSinglePrice; + this.productNumber = productNumber; + this.productId = productId; + this.realPayMent = productSinglePrice*productNumber; + } + + private Integer realPayMent;//真实支付价格 + private Integer productSinglePrice;//产品单价 + private Integer productNumber;//产品数量 + private Long productId;//产品编号 +} diff --git a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeChildOrderShare.java b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeChildOrderShare.java new file mode 100644 index 000000000..9b8af6eff --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeChildOrderShare.java @@ -0,0 +1,24 @@ +package com.iformall.service.order.entity; + +import lombok.Data; + +/** + * 子订单分账信息 + * @author alascor + * + */ +@Data +public class WxComposeChildOrderShare { + + public WxComposeChildOrderShare(Integer realPayMent,Integer shareAmount,Integer rateAmount) { + this.realPayMent = realPayMent; + this.shareAmount = shareAmount; + this.rateAmount = rateAmount; + } + + private Integer realPayMent; + + private Integer shareAmount; + + private Integer rateAmount; +} diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java index 3a8e70f56..76129f297 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java @@ -22,6 +22,7 @@ import com.iformall.mapper.WxBatchOrderMapper; import com.iformall.mapper.WxOrderMapper; import com.iformall.service.WxOrderService; import com.iformall.service.order.OrderAdapterService; +import com.iformall.service.order.entity.WxComposeChildOrderPrice; import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.order.util.OrderHelper; @@ -48,7 +49,8 @@ public class BatchOrderAdapterService implements OrderAdapterService { int payment = 0; for (OrderComposeSaveDto ocsd : orderSave) { boolean isPress = ocsd.getSignleOrder().getPress() != null ? ocsd.getSignleOrder().getPress() : false; - payment = payment+OrderHelper.getCouponPayment(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(),ocsd.getCount()); + WxComposeChildOrderPrice price = getChildOrderPrice(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(), ocsd.getCount()); + payment = payment+price.getRealPayMent(); } order.setPayment(payment); order.setCreateDate(new Date()); @@ -104,5 +106,17 @@ public class BatchOrderAdapterService implements OrderAdapterService { } } + + @Override + public WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber) { + Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId); + return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId()); + } + + @Override + public Integer calcuteChildOrderSubsidy() { + // TODO Auto-generated method stub + return null; + } } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java index da706118b..c16c8c33d 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java @@ -1,26 +1,21 @@ package com.iformall.service.order.impl; import java.util.ArrayList; -import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; - -import com.iformall.common.IdWorker; import com.iformall.domain.dto.OrderComposeSaveDto; -import com.iformall.domain.po.WxBatchOrder; import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxOrder; -import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.EnumComposeOrder; import com.iformall.enums.EnumPayWay; -import com.iformall.mapper.WxBatchOrderMapper; import com.iformall.mapper.WxOrderMapper; import com.iformall.service.order.OrderAdapterService; +import com.iformall.service.order.entity.WxComposeChildOrderPrice; import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.order.util.OrderHelper; @@ -71,6 +66,18 @@ public class SingleOrderAdapterService implements OrderAdapterService { wxOrderMapper.updateCUserId(order); } + @Override + public WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon, boolean isPress, Long orderGroupId, + Integer couponNumber) { + Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId); + return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId()); + } + + @Override + public Integer calcuteChildOrderSubsidy() { + return null; + } + diff --git a/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java b/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java index 77aa3c291..044c11e8d 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java @@ -1,26 +1,55 @@ package com.iformall.service.order.util; import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxPayAccount; import com.iformall.enums.EnumCouponType; +import com.iformall.enums.EnumOrderStatus; +import com.iformall.utils.PayUtils; public class OrderHelper { - public static int getCouponPayment(WxCoupon coupon,boolean isPress,Long orderGroupId,int couponNumber) { + public static int getCouponPerPayment(WxCoupon coupon,boolean isPress,Long orderGroupId) { // 4.1 券价格 - int payment = coupon.getSalePrice()*couponNumber; - //Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode(); + int payment = coupon.getSalePrice(); if (isPress || coupon.getType().equals(EnumCouponType.COUPON_PRESS.getCode())) { // 砍价券 初始是全价即面额 - payment = coupon.getPrice()*couponNumber; + payment = coupon.getPrice(); } if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { if (orderGroupId == null) { // 拼团券 初始是全价即面额 - payment = coupon.getPrice()*couponNumber; - } else { - //orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode(); + payment = coupon.getPrice(); } } return payment; } + + public static Integer getOrderStatusWxCoupon(WxCoupon coupon,Long orderGroupId) { + Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode(); + if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { + if (orderGroupId == null) { + // 拼团券 初始是全价即面额 + } else { + orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode(); + } + } + return orderStatus; + } + + //分账金额,扣掉商场设置的手续费率 + public static int getMallCharge(Integer payment,WxPayAccount payAccount) { + int iChargeFee = PayUtils.getPayRate(payment, payAccount.getRate(), false); + return iChargeFee; + } + + //费率差,微信、支付宝交易的费率. iChargeFee:商场扣掉的手续费 + public static Integer getRateAmount(Integer payment,int mallCharge, WxPayAccount payAccount) { + if(payAccount.getRealRate() != null) { + int iRealChargeFee = PayUtils.getPayRate(payment, payAccount.getRealRate(), true); + if(mallCharge > iRealChargeFee) { + return mallCharge - iRealChargeFee; + } + } + return null; + } } diff --git a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml index 31414355a..27afcea12 100644 --- a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml @@ -30,6 +30,7 @@ + @@ -37,7 +38,8 @@ `auth_code`,`ip`,`pay_amount`,`pay_time_start`,`pay_time_end`, `prepay_id`,`transaction_id`,`pay_vendor`,`pay_order_no`, `pay_order_status`,`share`,`share_amount`,`rate_amount`,`fail_reason`, - `pos_pay_order_id`,`pos_pay_order_time`,`pos_payment_type`,`pos_pay_order_no`,`pos_pay_des`,`compose_order` + `pos_pay_order_id`,`pos_pay_order_time`,`pos_payment_type`,`pos_pay_order_no`,`pos_pay_des`,`compose_order`, + `child_order_share` From dc32421ac66daadbeedba61903e086c63d8af63e Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Fri, 10 Sep 2021 18:11:27 +0800 Subject: [PATCH 011/171] fix order --- .../db/migration/V202109070001__order.sql | 2 +- .../controller/WxOrderController.java | 20 ++++- .../com/iformall/domain/po/WxBatchOrder.java | 6 -- .../java/com/iformall/domain/po/WxCoupon.java | 11 --- .../com/iformall/enums/EnumComposeOrder.java | 5 +- .../impl/WxCouponOrderServiceImpl.java | 18 ++-- .../service/impl/WxOrderServiceImpl.java | 86 +++++++++---------- .../service/impl/WxPayOrderServiceImpl.java | 6 +- .../impl/WxRefundOrderServiceImpl.java | 2 +- .../service/order/OrderAdapterService.java | 15 +++- .../iformall/service/order/OrderFactory.java | 25 +++++- .../order/impl/SingleOrderAdapterService.java | 10 +-- .../BaseBatchOrderAdapterService.java} | 46 ++++------ .../CouponPackageOrderAdapterService.java | 54 ++++++++++++ ...umberOneOrderBatchOrderAdapterService.java | 49 +++++++++++ ...umberOneOrderBatchOrderAdapterService.java | 49 +++++++++++ 16 files changed, 284 insertions(+), 120 deletions(-) rename mallinkService/src/main/java/com/iformall/service/order/impl/{BatchOrderAdapterService.java => batch/BaseBatchOrderAdapterService.java} (77%) create mode 100644 mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/order/impl/batch/MulityNumberOneOrderBatchOrderAdapterService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/order/impl/batch/OneNumberOneOrderBatchOrderAdapterService.java diff --git a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql index a36797de0..20408e5b6 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql @@ -819,4 +819,4 @@ ALTER TABLE wx_pay_order_95 ADD COLUMN `child_order_share` text COMMENT ' ALTER TABLE wx_pay_order_96 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; ALTER TABLE wx_pay_order_97 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; ALTER TABLE wx_pay_order_98 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; -ALTER TABLE wx_pay_order_99 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; \ No newline at end of file +ALTER TABLE wx_pay_order_99 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index a06339f97..b8e1b6fd6 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -75,17 +75,29 @@ public class WxOrderController extends BaseController { return wxOrderService.composeSaveOrder(EnumComposeOrder.PACKAGECOUPON,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); } + + @ApiOperation(value = "商品购物车组合下单", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") + @PostMapping("goodsShopCartSave") + public ResultData goodsShopCart(@RequestBody List orderSaveDto) { + Long memberId; + try { + memberId = getMemberId(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + return wxOrderService.composeSaveOrder(EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + } - @ApiOperation(value = "多个券多个数量组合下订单(购物车组合)", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") - @PostMapping("composeSave") - public ResultData composeSave(@RequestBody List orderSaveDto) { + @ApiOperation(value = "券购物车组合下单", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") + @PostMapping("couponShopCartSave") + public ResultData couponShopCartSave(@RequestBody List orderSaveDto) { Long memberId; try { memberId = getMemberId(); } catch (Exception e) { return new ResultData(Result.ERROR,e.getMessage()); } - return wxOrderService.composeSaveOrder(EnumComposeOrder.BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + return wxOrderService.composeSaveOrder(EnumComposeOrder.ONE_NUMBER_ORDER_BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); } @ApiOperation(value = "单个券单个订单,卡(分账导致无法批量下单)、拼团,砍价用", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java index 40febd9c7..77c0f8e43 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java @@ -1,13 +1,11 @@ package com.iformall.domain.po; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import java.util.Date; -import java.util.List; @TableName(value = "wx_batch_order") @Data @@ -30,8 +28,4 @@ public class WxBatchOrder extends TenantEntity { private Date createDate; @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; - - //返回给前端,跟之前的wxorder直接下单做区分 - @TableField(exist = false) - private String composeOrderTag = "1"; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java index d826704f9..c6cc96ca4 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java @@ -340,15 +340,4 @@ public class WxCoupon extends TenantEntity { } return false; } - - public boolean oneNumberOneOrder() { - if (type == null) { - return true; - } - if (type.intValue() == EnumCouponType.COUPON_DISTRIBUTION.getCode().intValue()) { - return false; - } - return true; - } - } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java index a4dd91090..46b50691d 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java @@ -8,8 +8,9 @@ import com.iformall.domain.po.WxOrder; public enum EnumComposeOrder { SINGLE(0, "单个订单类型,如拼团,砍价"), - BATCH(1, "多券种组合订单类型"), - PACKAGECOUPON(2,"券包组合订单类型") + ONE_NUMBER_ORDER_BATCH(1, "购物车式组合下单,1个数量1个订单(针对同样产品)"), + MULITY_NUMBER_ORDER_BATCH(2,"购物车式组合下单,多个数量1个订单(针对同样产品)"), + PACKAGECOUPON(3,"券包订单类型") ; public static EnumComposeOrder getEnum(Integer code) { 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 37f7a780b..91b30f6c9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -569,8 +569,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } else { //如果是组合的,则为多次 - if ((couponOrder.getComposeOrderType().intValue() == EnumComposeOrder.BATCH.getCode().intValue()) - || (couponOrder.getComposeOrderType().intValue() == EnumComposeOrder.PACKAGECOUPON.getCode().intValue())) { + if (EnumComposeOrder.isSingle(couponOrder.getComposeOrderType())) { try { // 核销分账 shareAfterVerify(couponOrder, bUser.getMerchantId(),couponOrder.getPayVendor(),true); @@ -741,7 +740,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { WxAppinfo wxAppinfo = wxAppinfoService.getCAppInfo(couponOrder,EnumPayWay.getEnum(couponOrder.getPayVendor())); WxPayAccount payAccount = wxPayAccountMapper.selectById(wxAppinfo.getPayId()); - Integer subsidyNum = coupon.getSubsidyNum(); + OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(couponOrder.getComposeOrderType()); + Integer subsidyNum = orderAdapterService.calcuteChildOrderSubsidy(coupon); if (subsidyNum == null || subsidyNum.intValue() == 0) { String parameter = couponMerchant.getParameter(); try { @@ -765,11 +765,13 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { return; } // 新补贴入库 - int iSubChargeFee = PayUtils.getPayRate(subsidyNum, payAccount.getRate(), false); + int iSubChargeFee = OrderHelper.getMallCharge(subsidyNum, payAccount); Integer realSubsidyFee = subsidyNum - iSubChargeFee; - int iPriceChargeFee = PayUtils.getPayRate(coupon.getSalePrice(), payAccount.getRate(), false); - Integer realPayment = coupon.getSalePrice() - iPriceChargeFee; + WxOrder order = wxOrderMapper.selectById(couponOrder.getOrderId(), couponOrder.getTenantId()); + WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, order.getOrderGroupId(), order.getCouponNumber()); + int iPriceChargeFee = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); + Integer realPayment = price.getRealPayMent() - iPriceChargeFee; WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); merchantSubsidy.setId(idWorker.nextId()); @@ -779,8 +781,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { merchantSubsidy.setMerchantId(merchantId); merchantSubsidy.setCouponOrderId(couponOrder.getId()); merchantSubsidy.setCouponType(couponOrder.getCouponType()); - merchantSubsidy.setOrderPayment(coupon.getPrice()); - merchantSubsidy.setReceiverPayment(coupon.getSalePrice()); + merchantSubsidy.setOrderPayment(price.getRealPayMent()); + merchantSubsidy.setReceiverPayment(price.getRealPayMent()); merchantSubsidy.setRealPayment(realPayment); merchantSubsidy.setSubsidy(subsidyNum); merchantSubsidy.setRealSubsidy(realSubsidyFee); 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 8f112178f..7e2751fbb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1995,54 +1995,54 @@ public class WxOrderServiceImpl implements WxOrderService { WxComposeOrder composeOrder = orderAdapterService.createDBMainOrder(user, orderSave, payWay); for (int i = 0 ; i < orderSave.size(); i ++) { OrderComposeSaveDto orderdto = orderSave.get(i); - - //券是一个数量一个订单, 实物是一个产品一个订单 - int totalOrderCount = 1; - if (orderAdapterService.isOneNumberOneOrder(orderdto.getWxCoupon())) { - totalOrderCount = orderdto.getCount(); - } - int perCouponNumber = 1; - if (totalOrderCount==1) { - perCouponNumber = orderdto.getCount(); - } - for (int j =0 ; j < totalOrderCount ; j ++) { - // 是否砍价 - WxOrder order = null; - if (checkCouponIsFree(orderdto.getWxCoupon())) { - // 免费券 - order = proxy.saveFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), null,payWay); - if (order != null) { - // 6. 下订单完成,发送内部消息 - // 下订单完成,发送内部消息 - try { - proxy.sendOrderSuccessActionMsg(order); - } catch (Exception e) { - logger.error("内部消息发送失败: " + e.getMessage(),e); - throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); - } - } - } else { - // 有价券 - order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId()); - } + //券一个数量创建一个订单 + boolean isOneNumberOneOrder = orderAdapterService.isOneNumberOneOrder(); + if (isOneNumberOneOrder) { + for (int j = 0; j < orderdto.getCount(); j++) { + proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), 1, orderdto, payWay); + } + }else { + proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), orderdto, payWay); } - - - // couponActionLog -// try { -// wxCouponActionLogService.addOne(order, order.getProductId(), order.getOrderNumber(), EnumCouponSendSendType.ACTIVE.getCode(), orderdto.getSignleOrder().getCouponChannelId(),0L); -// } catch (Exception e) { -// // 库存恢复 -// stockBack(order); -// logger.error("保存订单:" + e.getMessage()); -// throw new MallinkException(ErrorCode.ORDER_SAVE_ERR); -// } } - - return composeOrder; } + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public WxOrder handleSaveOrderForCouponSingle(WxComposeOrder composeOrder,WxCUserBasicInfo user,WxCoupon coupon,int perCouponNumber,OrderComposeSaveDto orderdto,EnumPayWay payWay) { + WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); + // 是否砍价 + WxOrder order = null; + if (checkCouponIsFree(coupon)) { + // 免费券 + order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), null,payWay); + if (order != null) { + // 6. 下订单完成,发送内部消息 + // 下订单完成,发送内部消息 + try { + proxy.sendOrderSuccessActionMsg(order); + } catch (Exception e) { + logger.error("内部消息发送失败: " + e.getMessage(),e); + throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); + } + } + } else { + // 有价券 + order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId()); + } + // couponActionLog +// try { +// wxCouponActionLogService.addOne(order, order.getProductId(), order.getOrderNumber(), EnumCouponSendSendType.ACTIVE.getCode(), orderdto.getSignleOrder().getCouponChannelId(),0L); +// } catch (Exception e) { +// // 库存恢复 +// stockBack(order); +// logger.error("保存订单:" + e.getMessage()); +// throw new MallinkException(ErrorCode.ORDER_SAVE_ERR); +// } + return order; + } + + @Override public boolean checkCouponIsFree(WxCoupon coupon) { return coupon.getSalePrice() == 0; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 5892e17a8..235e55eb3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -155,9 +155,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); } }else { - if ( null == composeOrder) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(),"composeOrder is null."); - } List orderList = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrders(composeOrder, oldRecord.getTenantId()); for (WxOrder o : orderList) { try { @@ -898,6 +895,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error(e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "订单更新"); } + + orderFactory.getOrderAdapterService(record.getComposeOrder()).doOthersAfterPaySuccess(order, record); + // 下订单完成,发送内部消息 try { wxOrderService.sendOrderSuccessActionMsg(order); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index 4706b67a6..cde4c3aee 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -278,7 +278,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { record.setTransactionId(payOrder.getTransactionId()); record.setCUserId(payOrder.getCUserId()); record.setTotalFee(payOrder.getPayAmount()); - record.setRefundFee(payOrder.getPayAmount()); + record.setRefundFee(payOrder.getChildOrderShare(rOrder.getId()).getRealPayMent()); record.setRefundTimeStart(currentDate); record.setRefundOrderStatus(EnumRefundStatus.REFUND_WAIT.getCode()); record.setRefundVendor(payOrder.getPayVendor()); diff --git a/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java index 6e1800e97..b7cedc1ef 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java @@ -6,7 +6,7 @@ import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxOrder; -import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.WxPayOrder; import com.iformall.enums.EnumPayWay; import com.iformall.service.order.entity.WxComposeChildOrderPrice; import com.iformall.service.order.entity.WxComposeOrder; @@ -23,10 +23,10 @@ public interface OrderAdapterService { * 是否是一个数量一个订单。一个产品肯定是一个订单 * @return */ - boolean isOneNumberOneOrder(WxCoupon coupon); + boolean isOneNumberOneOrder(); /** - * 查询每一个订单的产品的真实支付价格及补贴 + * 查询每一个订单的产品的真实支付价格 * @param coupon * @return */ @@ -36,7 +36,7 @@ public interface OrderAdapterService { * 计算每一个子订单的补贴 * @return */ - Integer calcuteChildOrderSubsidy(); + Integer calcuteChildOrderSubsidy(WxCoupon coupon); /** * 查询订单信息,单个模式查询WxOrder @@ -58,4 +58,11 @@ public interface OrderAdapterService { * @param cUserId */ void updateChildOrdersCUserId(WxComposeOrder composeOrder,List orderList,Long cUserId); + + /** + * 支付成功后,对订单进行附加的操作。 + * @param order + * @param record + */ + void doOthersAfterPaySuccess(WxOrder order,WxPayOrder record); } diff --git a/mallinkService/src/main/java/com/iformall/service/order/OrderFactory.java b/mallinkService/src/main/java/com/iformall/service/order/OrderFactory.java index 2e028df13..65e9326cb 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/OrderFactory.java +++ b/mallinkService/src/main/java/com/iformall/service/order/OrderFactory.java @@ -4,15 +4,36 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.enums.EnumComposeOrder; -import com.iformall.service.order.impl.BatchOrderAdapterService; +import com.iformall.service.order.impl.SingleOrderAdapterService; +import com.iformall.service.order.impl.batch.CouponPackageOrderAdapterService; +import com.iformall.service.order.impl.batch.MulityNumberOneOrderBatchOrderAdapterService; +import com.iformall.service.order.impl.batch.OneNumberOneOrderBatchOrderAdapterService; @Service public class OrderFactory { @Autowired - BatchOrderAdapterService batchOrderAdapterService; + OneNumberOneOrderBatchOrderAdapterService oneNumberOneOrderBatchOrderAdapterService; + + @Autowired + MulityNumberOneOrderBatchOrderAdapterService mulityNumberOneOrderBatchOrderAdapterService; + + @Autowired + SingleOrderAdapterService singleOrderAdapterService; + + @Autowired + CouponPackageOrderAdapterService couponPackageOrderAdapterService; public OrderAdapterService getOrderAdapterService(Integer composeOrderType) { + if (composeOrderType.intValue() == EnumComposeOrder.SINGLE.getCode().intValue()) { + return singleOrderAdapterService; + }else if (composeOrderType.intValue() == EnumComposeOrder.ONE_NUMBER_ORDER_BATCH.getCode().intValue()) { + return oneNumberOneOrderBatchOrderAdapterService; + }else if (composeOrderType.intValue() == EnumComposeOrder.PACKAGECOUPON.getCode().intValue()) { + return couponPackageOrderAdapterService; + }else if (composeOrderType.intValue() == EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH.getCode().intValue()) { + return mulityNumberOneOrderBatchOrderAdapterService; + } return null; } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java index c16c8c33d..26b452e8f 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java @@ -38,7 +38,7 @@ public class SingleOrderAdapterService implements OrderAdapterService { } @Override - public boolean isOneNumberOneOrder(WxCoupon coupon) { + public boolean isOneNumberOneOrder() { return true; } @@ -74,12 +74,8 @@ public class SingleOrderAdapterService implements OrderAdapterService { } @Override - public Integer calcuteChildOrderSubsidy() { - return null; + public Integer calcuteChildOrderSubsidy(WxCoupon coupon) { + return coupon.getSubsidyNum(); } - - - - } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java similarity index 77% rename from mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java rename to mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java index 76129f297..251d5f996 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java @@ -1,4 +1,4 @@ -package com.iformall.service.order.impl; +package com.iformall.service.order.impl.batch; import java.util.ArrayList; import java.util.Date; @@ -31,59 +31,55 @@ import com.iformall.service.order.util.OrderHelper; * @author alascor * */ -@Service -public class BatchOrderAdapterService implements OrderAdapterService { +public abstract class BaseBatchOrderAdapterService implements OrderAdapterService { @Autowired WxBatchOrderMapper wxBatchOrderMapper; @Autowired WxOrderMapper wxOrderMapper; - @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override - public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { + public WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber) { + Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId); + return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId()); + } + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + protected WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay,EnumComposeOrder composeOrderType) { WxBatchOrder order =new WxBatchOrder(); final IdWorker idWorker = IdWorker.get(); order.setId(idWorker.nextId()); order.setCUserId(user.getId()); int payment = 0; for (OrderComposeSaveDto ocsd : orderSave) { - boolean isPress = ocsd.getSignleOrder().getPress() != null ? ocsd.getSignleOrder().getPress() : false; + boolean isPress = ocsd.getSignleOrder().isPressOrder(); WxComposeChildOrderPrice price = getChildOrderPrice(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(), ocsd.getCount()); payment = payment+price.getRealPayMent(); } order.setPayment(payment); order.setCreateDate(new Date()); wxBatchOrderMapper.insert(order); - return new WxComposeOrder(order.getId(),EnumComposeOrder.BATCH.getCode()); - } - - @Override - public boolean isOneNumberOneOrder(WxCoupon coupon) { - return coupon.oneNumberOneOrder(); + return new WxComposeOrder(order.getId(),composeOrderType.getCode()); } - @Override - public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { + protected WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId,EnumComposeOrder composeOrderType) { WxBatchOrder order = wxBatchOrderMapper.selectById(mainOrderId, tenantId); - WxComposeOrder corder = new WxComposeOrder(order.getId(),EnumComposeOrder.BATCH.getCode()); + WxComposeOrder corder = new WxComposeOrder(order.getId(),composeOrderType.getCode()); corder.setPayment(order.getPayment()); corder.setMainOrder(order); return corder; } - @Override - public List getChildOrders(WxComposeOrder composeOrder, String tenantId) { + protected List getChildOrders(WxComposeOrder composeOrder, String tenantId,EnumComposeOrder composeOrderType) { WxOrder orderq = new WxOrder(); orderq.setComposeOrderId(composeOrder.getMainOrderId()); - orderq.setComposeOrderType(EnumComposeOrder.BATCH.getCode()); + orderq.setComposeOrderType(composeOrderType.getCode()); orderq.setTenantId(tenantId); List orderList = wxOrderMapper.findList(orderq); return orderList; } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - @Override public void updateChildOrdersCUserId(WxComposeOrder composeOrder,List orderList, Long cUserId) { if (null != cUserId) { WxBatchOrder order = (WxBatchOrder) composeOrder.getMainOrder(); @@ -107,16 +103,10 @@ public class BatchOrderAdapterService implements OrderAdapterService { } - @Override - public WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber) { - Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId); - return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId()); - } + @Override - public Integer calcuteChildOrderSubsidy() { - // TODO Auto-generated method stub - return null; + public Integer calcuteChildOrderSubsidy(WxCoupon coupon) { + return coupon.getSubsidyNum(); } - } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java new file mode 100644 index 000000000..c62b847a9 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java @@ -0,0 +1,54 @@ +package com.iformall.service.order.impl.batch; + +import java.util.List; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import com.iformall.domain.dto.OrderComposeSaveDto; +import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.WxPayOrder; +import com.iformall.enums.EnumComposeOrder; +import com.iformall.enums.EnumPayWay; +import com.iformall.service.order.entity.WxComposeOrder; +/** + * 券包批量下单 + * @author alascor + * + */ +@Service +public class CouponPackageOrderAdapterService extends BaseBatchOrderAdapterService { + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + @Override + public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { + return super.createDBMainOrder(user, orderSave, payWay, EnumComposeOrder.PACKAGECOUPON); + } + + @Override + public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { + return super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.PACKAGECOUPON); + } + + @Override + public List getChildOrders(WxComposeOrder composeOrder, String tenantId) { + return super.getChildOrders(composeOrder, tenantId, EnumComposeOrder.PACKAGECOUPON); + } + + @Override + public Integer calcuteChildOrderSubsidy(WxCoupon coupon) { + return coupon.getSubsidyNum(); + } + + @Override + public boolean isOneNumberOneOrder() { + return true; + } + + @Override + public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) { + //手动核销发券 + } + +} diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/MulityNumberOneOrderBatchOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/MulityNumberOneOrderBatchOrderAdapterService.java new file mode 100644 index 000000000..f11db0a7b --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/MulityNumberOneOrderBatchOrderAdapterService.java @@ -0,0 +1,49 @@ +package com.iformall.service.order.impl.batch; + + +import java.util.List; + +import org.springframework.stereotype.Service; + +import com.iformall.domain.dto.OrderComposeSaveDto; +import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.WxPayOrder; +import com.iformall.enums.EnumComposeOrder; +import com.iformall.enums.EnumPayWay; +import com.iformall.service.order.entity.WxComposeOrder; +/** + * 购物车批量下单 + * @author alascor + * + */ +@Service +public class MulityNumberOneOrderBatchOrderAdapterService extends BaseBatchOrderAdapterService { + + + @Override + public boolean isOneNumberOneOrder() { + return false; + } + + @Override + public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user, List orderSave, + EnumPayWay payWay) { + return super.createDBMainOrder(user, orderSave, payWay, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH); + } + + @Override + public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { + return super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH); + } + + @Override + public List getChildOrders(WxComposeOrder composeOrder, String tenantId) { + return super.getChildOrders(composeOrder, tenantId, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH); + } + + @Override + public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) { + } + +} diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/OneNumberOneOrderBatchOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/OneNumberOneOrderBatchOrderAdapterService.java new file mode 100644 index 000000000..4ee534d05 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/OneNumberOneOrderBatchOrderAdapterService.java @@ -0,0 +1,49 @@ +package com.iformall.service.order.impl.batch; + +import java.util.List; + +import org.springframework.stereotype.Service; + +import com.iformall.domain.dto.OrderComposeSaveDto; +import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.WxPayOrder; +import com.iformall.enums.EnumComposeOrder; +import com.iformall.enums.EnumPayWay; +import com.iformall.service.order.entity.WxComposeOrder; + +/** + * 购物车批量下单 + * @author alascor + * + */ +@Service +public class OneNumberOneOrderBatchOrderAdapterService extends BaseBatchOrderAdapterService { + + @Override + public boolean isOneNumberOneOrder() { + return true; + } + + @Override + public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user, List orderSave, + EnumPayWay payWay) { + return super.createDBMainOrder(user, orderSave, payWay, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH); + } + + @Override + public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { + return super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH); + } + + @Override + public List getChildOrders(WxComposeOrder composeOrder, String tenantId) { + return super.getChildOrders(composeOrder, tenantId, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH); + } + + @Override + public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) { + + } + +} From 7b4cc5f2b1c357fb1bd6a14b4e740af3936fa119 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Fri, 10 Sep 2021 18:27:46 +0800 Subject: [PATCH 012/171] fix order --- .../main/java/com/iformall/controller/WxOrderController.java | 2 +- .../java/com/iformall/controller/WxPayOrderController.java | 4 ++-- .../service/order/impl/SingleOrderAdapterService.java | 5 +++++ .../order/impl/batch/CouponPackageOrderAdapterService.java | 3 ++- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index b8e1b6fd6..e2e43f8b7 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -101,7 +101,7 @@ public class WxOrderController extends BaseController { } @ApiOperation(value = "单个券单个订单,卡(分账导致无法批量下单)、拼团,砍价用", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") - @PostMapping("singleSave") + @PostMapping("save") public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { Long memberId; try { diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index a466d30ad..a4d831d10 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -144,12 +144,12 @@ public class WxPayOrderController extends BaseController { } } - @ApiOperation(value = "更新支付订单状态", notes = "{\"payOrderId\":\"string\",\"composeOrderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") + @ApiOperation(value = "更新支付订单状态", notes = "{\"payOrderId\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") @PostMapping("/updatePayOrder") public ResultData updatePayOrder(@RequestBody Map paramMap) { logger.info("/api/pay/updatePayOrder" + paramMap.toString()); String payOrderIdStr = (String) paramMap.get("payOrderId"); - String orderIdStr = (String) paramMap.get("composeOrderId"); + String orderIdStr = (String) paramMap.get("orderId"); String reasonStr = (String) paramMap.get("reason"); Integer status = (Integer) paramMap.get("status"); if (StringUtils.isBlank(orderIdStr)) { diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java index 26b452e8f..f2bed6882 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java @@ -11,6 +11,7 @@ import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.WxPayOrder; import com.iformall.enums.EnumComposeOrder; import com.iformall.enums.EnumPayWay; import com.iformall.mapper.WxOrderMapper; @@ -78,4 +79,8 @@ public class SingleOrderAdapterService implements OrderAdapterService { return coupon.getSubsidyNum(); } + @Override + public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) { + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java index c62b847a9..29f454cec 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java @@ -38,7 +38,7 @@ public class CouponPackageOrderAdapterService extends BaseBatchOrderAdapterServi @Override public Integer calcuteChildOrderSubsidy(WxCoupon coupon) { - return coupon.getSubsidyNum(); + return 0; } @Override @@ -49,6 +49,7 @@ public class CouponPackageOrderAdapterService extends BaseBatchOrderAdapterServi @Override public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) { //手动核销发券 + } } From 429548e6b40a1e43f65f9842961960022e645f89 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Sun, 12 Sep 2021 09:49:09 +0800 Subject: [PATCH 013/171] fix order --- .../db/migration/V202109070001__order.sql | 103 ++++++++++++++++++ .../controller/WxOrderController.java | 1 + 2 files changed, 104 insertions(+) diff --git a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql index 20408e5b6..f28c0518f 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql @@ -820,3 +820,106 @@ ALTER TABLE wx_pay_order_96 ADD COLUMN `child_order_share` text COMMENT ' ALTER TABLE wx_pay_order_97 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; ALTER TABLE wx_pay_order_98 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; ALTER TABLE wx_pay_order_99 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; + +update wx_order_0 set compose_order_id = 0 ,coupon_number=1; +update wx_order_1 set compose_order_id = 0 ,coupon_number=1; +update wx_order_2 set compose_order_id = 0 ,coupon_number=1; +update wx_order_3 set compose_order_id = 0 ,coupon_number=1; +update wx_order_4 set compose_order_id = 0 ,coupon_number=1; +update wx_order_5 set compose_order_id = 0 ,coupon_number=1; +update wx_order_6 set compose_order_id = 0 ,coupon_number=1; +update wx_order_7 set compose_order_id = 0 ,coupon_number=1; +update wx_order_8 set compose_order_id = 0 ,coupon_number=1; +update wx_order_9 set compose_order_id = 0 ,coupon_number=1; +update wx_order_10 set compose_order_id = 0 ,coupon_number=1; +update wx_order_11 set compose_order_id = 0 ,coupon_number=1; +update wx_order_12 set compose_order_id = 0 ,coupon_number=1; +update wx_order_13 set compose_order_id = 0 ,coupon_number=1; +update wx_order_14 set compose_order_id = 0 ,coupon_number=1; +update wx_order_15 set compose_order_id = 0 ,coupon_number=1; +update wx_order_16 set compose_order_id = 0 ,coupon_number=1; +update wx_order_17 set compose_order_id = 0 ,coupon_number=1; +update wx_order_18 set compose_order_id = 0 ,coupon_number=1; +update wx_order_19 set compose_order_id = 0 ,coupon_number=1; +update wx_order_20 set compose_order_id = 0 ,coupon_number=1; +update wx_order_21 set compose_order_id = 0 ,coupon_number=1; +update wx_order_22 set compose_order_id = 0 ,coupon_number=1; +update wx_order_23 set compose_order_id = 0 ,coupon_number=1; +update wx_order_24 set compose_order_id = 0 ,coupon_number=1; +update wx_order_25 set compose_order_id = 0 ,coupon_number=1; +update wx_order_26 set compose_order_id = 0 ,coupon_number=1; +update wx_order_27 set compose_order_id = 0 ,coupon_number=1; +update wx_order_28 set compose_order_id = 0 ,coupon_number=1; +update wx_order_29 set compose_order_id = 0 ,coupon_number=1; +update wx_order_30 set compose_order_id = 0 ,coupon_number=1; +update wx_order_31 set compose_order_id = 0 ,coupon_number=1; +update wx_order_32 set compose_order_id = 0 ,coupon_number=1; +update wx_order_33 set compose_order_id = 0 ,coupon_number=1; +update wx_order_34 set compose_order_id = 0 ,coupon_number=1; +update wx_order_35 set compose_order_id = 0 ,coupon_number=1; +update wx_order_36 set compose_order_id = 0 ,coupon_number=1; +update wx_order_37 set compose_order_id = 0 ,coupon_number=1; +update wx_order_38 set compose_order_id = 0 ,coupon_number=1; +update wx_order_39 set compose_order_id = 0 ,coupon_number=1; +update wx_order_40 set compose_order_id = 0 ,coupon_number=1; +update wx_order_41 set compose_order_id = 0 ,coupon_number=1; +update wx_order_42 set compose_order_id = 0 ,coupon_number=1; +update wx_order_43 set compose_order_id = 0 ,coupon_number=1; +update wx_order_44 set compose_order_id = 0 ,coupon_number=1; +update wx_order_45 set compose_order_id = 0 ,coupon_number=1; +update wx_order_46 set compose_order_id = 0 ,coupon_number=1; +update wx_order_47 set compose_order_id = 0 ,coupon_number=1; +update wx_order_48 set compose_order_id = 0 ,coupon_number=1; +update wx_order_49 set compose_order_id = 0 ,coupon_number=1; +update wx_order_50 set compose_order_id = 0 ,coupon_number=1; +update wx_order_51 set compose_order_id = 0 ,coupon_number=1; +update wx_order_52 set compose_order_id = 0 ,coupon_number=1; +update wx_order_53 set compose_order_id = 0 ,coupon_number=1; +update wx_order_54 set compose_order_id = 0 ,coupon_number=1; +update wx_order_55 set compose_order_id = 0 ,coupon_number=1; +update wx_order_56 set compose_order_id = 0 ,coupon_number=1; +update wx_order_57 set compose_order_id = 0 ,coupon_number=1; +update wx_order_58 set compose_order_id = 0 ,coupon_number=1; +update wx_order_59 set compose_order_id = 0 ,coupon_number=1; +update wx_order_60 set compose_order_id = 0 ,coupon_number=1; +update wx_order_61 set compose_order_id = 0 ,coupon_number=1; +update wx_order_62 set compose_order_id = 0 ,coupon_number=1; +update wx_order_63 set compose_order_id = 0 ,coupon_number=1; +update wx_order_64 set compose_order_id = 0 ,coupon_number=1; +update wx_order_65 set compose_order_id = 0 ,coupon_number=1; +update wx_order_66 set compose_order_id = 0 ,coupon_number=1; +update wx_order_67 set compose_order_id = 0 ,coupon_number=1; +update wx_order_68 set compose_order_id = 0 ,coupon_number=1; +update wx_order_69 set compose_order_id = 0 ,coupon_number=1; +update wx_order_70 set compose_order_id = 0 ,coupon_number=1; +update wx_order_71 set compose_order_id = 0 ,coupon_number=1; +update wx_order_72 set compose_order_id = 0 ,coupon_number=1; +update wx_order_73 set compose_order_id = 0 ,coupon_number=1; +update wx_order_74 set compose_order_id = 0 ,coupon_number=1; +update wx_order_75 set compose_order_id = 0 ,coupon_number=1; +update wx_order_76 set compose_order_id = 0 ,coupon_number=1; +update wx_order_77 set compose_order_id = 0 ,coupon_number=1; +update wx_order_78 set compose_order_id = 0 ,coupon_number=1; +update wx_order_79 set compose_order_id = 0 ,coupon_number=1; +update wx_order_80 set compose_order_id = 0 ,coupon_number=1; +update wx_order_81 set compose_order_id = 0 ,coupon_number=1; +update wx_order_82 set compose_order_id = 0 ,coupon_number=1; +update wx_order_83 set compose_order_id = 0 ,coupon_number=1; +update wx_order_84 set compose_order_id = 0 ,coupon_number=1; +update wx_order_85 set compose_order_id = 0 ,coupon_number=1; +update wx_order_86 set compose_order_id = 0 ,coupon_number=1; +update wx_order_87 set compose_order_id = 0 ,coupon_number=1; +update wx_order_88 set compose_order_id = 0 ,coupon_number=1; +update wx_order_89 set compose_order_id = 0 ,coupon_number=1; +update wx_order_90 set compose_order_id = 0 ,coupon_number=1; +update wx_order_91 set compose_order_id = 0 ,coupon_number=1; +update wx_order_92 set compose_order_id = 0 ,coupon_number=1; +update wx_order_93 set compose_order_id = 0 ,coupon_number=1; +update wx_order_94 set compose_order_id = 0 ,coupon_number=1; +update wx_order_95 set compose_order_id = 0 ,coupon_number=1; +update wx_order_96 set compose_order_id = 0 ,coupon_number=1; +update wx_order_97 set compose_order_id = 0 ,coupon_number=1; +update wx_order_98 set compose_order_id = 0 ,coupon_number=1; +update wx_order_99 set compose_order_id = 0 ,coupon_number=1; + + diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index e2e43f8b7..b2b1f3ffe 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -103,6 +103,7 @@ public class WxOrderController extends BaseController { @ApiOperation(value = "单个券单个订单,卡(分账导致无法批量下单)、拼团,砍价用", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") @PostMapping("save") public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { + logger.info("save orderSaveDto:"+orderSaveDto); Long memberId; try { memberId = getMemberId(); From 11c66b0ee58bc629bf8375eea53098b4fa236005 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Sun, 12 Sep 2021 10:27:57 +0800 Subject: [PATCH 014/171] fix order --- .../com/iformall/service/impl/WxOrderServiceImpl.java | 10 +++++++--- .../service/order/impl/SingleOrderAdapterService.java | 1 - 2 files changed, 7 insertions(+), 4 deletions(-) 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 7e2751fbb..7ce009e46 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1993,18 +1993,23 @@ public class WxOrderServiceImpl implements WxOrderService { OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrderType.getCode()); WxComposeOrder composeOrder = orderAdapterService.createDBMainOrder(user, orderSave, payWay); + WxOrder lastOrder = null; for (int i = 0 ; i < orderSave.size(); i ++) { OrderComposeSaveDto orderdto = orderSave.get(i); //券一个数量创建一个订单 boolean isOneNumberOneOrder = orderAdapterService.isOneNumberOneOrder(); if (isOneNumberOneOrder) { for (int j = 0; j < orderdto.getCount(); j++) { - proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), 1, orderdto, payWay); + lastOrder = proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), 1, orderdto, payWay); } }else { - proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), orderdto, payWay); + lastOrder = proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), orderdto, payWay); } } + //如果没有orderId,则用lastOrder的信息 + if (null == composeOrder.getMainOrderId() || composeOrder.getMainOrderId().intValue() <= 0) { + return new WxComposeOrder(lastOrder.getId(), composeOrder.getComposeOrderType()); + } return composeOrder; } @@ -2418,7 +2423,6 @@ public class WxOrderServiceImpl implements WxOrderService { @Override public ResultData composeSaveOrder(EnumComposeOrder composeOrderType,List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) { - logger.info("composeSaveOrder: " + composeOrderSaveDto); try { if (null == composeOrderSaveDto || composeOrderSaveDto.size() <= 0 ) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"无商品信息"); diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java index f2bed6882..1c33be0aa 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java @@ -34,7 +34,6 @@ public class SingleOrderAdapterService implements OrderAdapterService { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { - //do nothing, return new WxComposeOrder(0L, EnumComposeOrder.SINGLE.getCode()); } From a1c2acf5169601ca1ea35d4656d0b7a46818b381 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Sun, 12 Sep 2021 10:40:40 +0800 Subject: [PATCH 015/171] fix order --- .../com/iformall/service/order/entity/WxComposeOrder.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java index f99a99d20..200078b97 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java @@ -22,4 +22,11 @@ public class WxComposeOrder { private Object mainOrder;//真正的主订单对象 + private Long Id; + + public Long getId() { + this.Id = this.mainOrderId; + return this.Id; + } + } From b0e8263313fcbe1bcb134e6108ac2cc4267164b8 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Sun, 12 Sep 2021 11:00:54 +0800 Subject: [PATCH 016/171] fix order --- .../com/iformall/controller/WxPayOrderController.java | 11 ++++++----- .../iformall/service/order/entity/WxComposeOrder.java | 1 + 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index a4d831d10..ed6edcd9e 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -95,11 +95,12 @@ public class WxPayOrderController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); } - String composeOrderType = paramMap.get("composeOrderType"); - if (StringUtils.isBlank(composeOrderType)) { - logger.info("composeOrderType不能为空: " + paramMap.toString()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "composeOrderType不能为空"); - } + String composeOrderType = "0"; +// String composeOrderType = paramMap.get("composeOrderType"); +// if (StringUtils.isBlank(composeOrderType)) { +// logger.info("composeOrderType不能为空: " + paramMap.toString()); +// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "composeOrderType不能为空"); +// } WxCUser user = getWxCUser(); if (!user.basicInfoIs()) { diff --git a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java index 200078b97..7af955bfd 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java @@ -22,6 +22,7 @@ public class WxComposeOrder { private Object mainOrder;//真正的主订单对象 + //TODO 调试用,兼容以前的接口 private Long Id; public Long getId() { From 6bdfac6971a727e836eed90079cf8853e470019d Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Sun, 12 Sep 2021 11:23:22 +0800 Subject: [PATCH 017/171] fix order --- .../db/migration/V202109070001__order.sql | 101 ++++++++++++++++++ .../controller/WxPayOrderController.java | 11 +- .../service/order/entity/WxComposeOrder.java | 8 -- 3 files changed, 106 insertions(+), 14 deletions(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql index f28c0518f..2f1a458e7 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql @@ -922,4 +922,105 @@ update wx_order_97 set compose_order_id = 0 ,coupon_number=1; update wx_order_98 set compose_order_id = 0 ,coupon_number=1; update wx_order_99 set compose_order_id = 0 ,coupon_number=1; +update wx_pay_order_0 set compose_order = 0 ; +update wx_pay_order_1 set compose_order = 0 ; +update wx_pay_order_2 set compose_order = 0 ; +update wx_pay_order_3 set compose_order = 0 ; +update wx_pay_order_4 set compose_order = 0 ; +update wx_pay_order_5 set compose_order = 0 ; +update wx_pay_order_6 set compose_order = 0 ; +update wx_pay_order_7 set compose_order = 0 ; +update wx_pay_order_8 set compose_order = 0 ; +update wx_pay_order_9 set compose_order = 0 ; +update wx_pay_order_10 set compose_order = 0 ; +update wx_pay_order_11 set compose_order = 0 ; +update wx_pay_order_12 set compose_order = 0 ; +update wx_pay_order_13 set compose_order = 0 ; +update wx_pay_order_14 set compose_order = 0 ; +update wx_pay_order_15 set compose_order = 0 ; +update wx_pay_order_16 set compose_order = 0 ; +update wx_pay_order_17 set compose_order = 0 ; +update wx_pay_order_18 set compose_order = 0 ; +update wx_pay_order_19 set compose_order = 0 ; +update wx_pay_order_20 set compose_order = 0 ; +update wx_pay_order_21 set compose_order = 0 ; +update wx_pay_order_22 set compose_order = 0 ; +update wx_pay_order_23 set compose_order = 0 ; +update wx_pay_order_24 set compose_order = 0 ; +update wx_pay_order_25 set compose_order = 0 ; +update wx_pay_order_26 set compose_order = 0 ; +update wx_pay_order_27 set compose_order = 0 ; +update wx_pay_order_28 set compose_order = 0 ; +update wx_pay_order_29 set compose_order = 0 ; +update wx_pay_order_30 set compose_order = 0 ; +update wx_pay_order_31 set compose_order = 0 ; +update wx_pay_order_32 set compose_order = 0 ; +update wx_pay_order_33 set compose_order = 0 ; +update wx_pay_order_34 set compose_order = 0 ; +update wx_pay_order_35 set compose_order = 0 ; +update wx_pay_order_36 set compose_order = 0 ; +update wx_pay_order_37 set compose_order = 0 ; +update wx_pay_order_38 set compose_order = 0 ; +update wx_pay_order_39 set compose_order = 0 ; +update wx_pay_order_40 set compose_order = 0 ; +update wx_pay_order_41 set compose_order = 0 ; +update wx_pay_order_42 set compose_order = 0 ; +update wx_pay_order_43 set compose_order = 0 ; +update wx_pay_order_44 set compose_order = 0 ; +update wx_pay_order_45 set compose_order = 0 ; +update wx_pay_order_46 set compose_order = 0 ; +update wx_pay_order_47 set compose_order = 0 ; +update wx_pay_order_48 set compose_order = 0 ; +update wx_pay_order_49 set compose_order = 0 ; +update wx_pay_order_50 set compose_order = 0 ; +update wx_pay_order_51 set compose_order = 0 ; +update wx_pay_order_52 set compose_order = 0 ; +update wx_pay_order_53 set compose_order = 0 ; +update wx_pay_order_54 set compose_order = 0 ; +update wx_pay_order_55 set compose_order = 0 ; +update wx_pay_order_56 set compose_order = 0 ; +update wx_pay_order_57 set compose_order = 0 ; +update wx_pay_order_58 set compose_order = 0 ; +update wx_pay_order_59 set compose_order = 0 ; +update wx_pay_order_60 set compose_order = 0 ; +update wx_pay_order_61 set compose_order = 0 ; +update wx_pay_order_62 set compose_order = 0 ; +update wx_pay_order_63 set compose_order = 0 ; +update wx_pay_order_64 set compose_order = 0 ; +update wx_pay_order_65 set compose_order = 0 ; +update wx_pay_order_66 set compose_order = 0 ; +update wx_pay_order_67 set compose_order = 0 ; +update wx_pay_order_68 set compose_order = 0 ; +update wx_pay_order_69 set compose_order = 0 ; +update wx_pay_order_70 set compose_order = 0 ; +update wx_pay_order_71 set compose_order = 0 ; +update wx_pay_order_72 set compose_order = 0 ; +update wx_pay_order_73 set compose_order = 0 ; +update wx_pay_order_74 set compose_order = 0 ; +update wx_pay_order_75 set compose_order = 0 ; +update wx_pay_order_76 set compose_order = 0 ; +update wx_pay_order_77 set compose_order = 0 ; +update wx_pay_order_78 set compose_order = 0 ; +update wx_pay_order_79 set compose_order = 0 ; +update wx_pay_order_80 set compose_order = 0 ; +update wx_pay_order_81 set compose_order = 0 ; +update wx_pay_order_82 set compose_order = 0 ; +update wx_pay_order_83 set compose_order = 0 ; +update wx_pay_order_84 set compose_order = 0 ; +update wx_pay_order_85 set compose_order = 0 ; +update wx_pay_order_86 set compose_order = 0 ; +update wx_pay_order_87 set compose_order = 0 ; +update wx_pay_order_88 set compose_order = 0 ; +update wx_pay_order_89 set compose_order = 0 ; +update wx_pay_order_90 set compose_order = 0 ; +update wx_pay_order_91 set compose_order = 0 ; +update wx_pay_order_92 set compose_order = 0 ; +update wx_pay_order_93 set compose_order = 0 ; +update wx_pay_order_94 set compose_order = 0 ; +update wx_pay_order_95 set compose_order = 0 ; +update wx_pay_order_96 set compose_order = 0 ; +update wx_pay_order_97 set compose_order = 0 ; +update wx_pay_order_98 set compose_order = 0 ; +update wx_pay_order_99 set compose_order = 0 ; + diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index ed6edcd9e..a4d831d10 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -95,12 +95,11 @@ public class WxPayOrderController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); } - String composeOrderType = "0"; -// String composeOrderType = paramMap.get("composeOrderType"); -// if (StringUtils.isBlank(composeOrderType)) { -// logger.info("composeOrderType不能为空: " + paramMap.toString()); -// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "composeOrderType不能为空"); -// } + String composeOrderType = paramMap.get("composeOrderType"); + if (StringUtils.isBlank(composeOrderType)) { + logger.info("composeOrderType不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "composeOrderType不能为空"); + } WxCUser user = getWxCUser(); if (!user.basicInfoIs()) { diff --git a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java index 7af955bfd..f99a99d20 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java @@ -22,12 +22,4 @@ public class WxComposeOrder { private Object mainOrder;//真正的主订单对象 - //TODO 调试用,兼容以前的接口 - private Long Id; - - public Long getId() { - this.Id = this.mainOrderId; - return this.Id; - } - } From a4c3915f9d33cd49e4ffad6759cf94b6851c353e Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Mon, 13 Sep 2021 09:49:42 +0800 Subject: [PATCH 018/171] fix order --- .../java/com/iformall/controller/WxPayOrderController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index a4d831d10..a466d30ad 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -144,12 +144,12 @@ public class WxPayOrderController extends BaseController { } } - @ApiOperation(value = "更新支付订单状态", notes = "{\"payOrderId\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") + @ApiOperation(value = "更新支付订单状态", notes = "{\"payOrderId\":\"string\",\"composeOrderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") @PostMapping("/updatePayOrder") public ResultData updatePayOrder(@RequestBody Map paramMap) { logger.info("/api/pay/updatePayOrder" + paramMap.toString()); String payOrderIdStr = (String) paramMap.get("payOrderId"); - String orderIdStr = (String) paramMap.get("orderId"); + String orderIdStr = (String) paramMap.get("composeOrderId"); String reasonStr = (String) paramMap.get("reason"); Integer status = (Integer) paramMap.get("status"); if (StringUtils.isBlank(orderIdStr)) { From 768020acada4af5ee86b08bda73d5466552790d6 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Mon, 13 Sep 2021 14:46:44 +0800 Subject: [PATCH 019/171] fix order --- .../main/java/com/iformall/domain/vo/WxOrderCouponVo.java | 5 +++++ .../src/main/resources/mapper/WxOrderMapper.xml | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java index b9846e2cc..c3df7e84e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java @@ -103,5 +103,10 @@ public class WxOrderCouponVo extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "补贴额", name = "subsidyNum") private Integer subsidyNum; + + @io.swagger.annotations.ApiModelProperty(value="组合订单类型EnumComposeOrder",name="composeOrderType") + private Integer composeOrderType; + @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="composeOrderId") + private Long composeOrderId; } diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 2c5a5acb6..66fcd973e 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -253,7 +253,7 @@ o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status,o.create_date,o.update_date, c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.detail,c.remark,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date, - co.id as coupon_order_id,co.coupon_order_status,c.support_transfer,c.subsidy_num + co.id as coupon_order_id,co.coupon_order_status,c.support_transfer,c.subsidy_num,co.compose_order_type,co.compose_order_id @@ -330,6 +330,9 @@ + + + o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status,o.create_date,o.update_date, - c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date + c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date, + co.compose_order_type,co.compose_order_id From 48b2d512eb654b7c779e54bbf6858ae5fc4b7d76 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Mon, 13 Sep 2021 16:41:17 +0800 Subject: [PATCH 021/171] fix order --- .../src/main/java/com/iformall/mapper/WxOrderMapper.java | 2 ++ .../java/com/iformall/service/impl/WxOrderServiceImpl.java | 1 + mallinkService/src/main/resources/mapper/WxOrderMapper.xml | 5 +++++ 3 files changed, 8 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java index c008002bd..b3b036bc4 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java @@ -66,5 +66,7 @@ public interface WxOrderMapper extends CommonMapper { void updateOrderStatusForGroup(@Param("tenantId")String tenantId); void updateCUserId(WxOrder updateOrder); + + void updateComposeOrderId(@Param("id")Long id,@Param("composeOrderId")Long composeOrderId,@Param("tenantId")String tenantId); } 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 7ce009e46..bf71ce643 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2008,6 +2008,7 @@ public class WxOrderServiceImpl implements WxOrderService { } //如果没有orderId,则用lastOrder的信息 if (null == composeOrder.getMainOrderId() || composeOrder.getMainOrderId().intValue() <= 0) { + wxOrderMapper.updateComposeOrderId(lastOrder.getId(), lastOrder.getId(), lastOrder.getTenantId()); return new WxComposeOrder(lastOrder.getId(), composeOrder.getComposeOrderType()); } return composeOrder; diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index f5b76c25f..6ba45cc63 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -1025,5 +1025,10 @@ + + update wx_order set compose_order_id = #{composeOrderId} where id = #{id} and tenant_id = #{tenantId} + + + From b85f4d9a0d2d52ccfb9452fdac37531d01905eaa Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Tue, 14 Sep 2021 11:09:07 +0800 Subject: [PATCH 022/171] fix order --- .../src/main/java/com/iformall/domain/po/WxBatchOrder.java | 2 ++ .../src/main/java/com/iformall/mapper/WxOrderMapper.java | 2 -- .../java/com/iformall/service/impl/WxOrderServiceImpl.java | 1 - mallinkService/src/main/resources/mapper/WxOrderMapper.xml | 6 ------ 4 files changed, 2 insertions(+), 9 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java index 77c0f8e43..1b98a8010 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java @@ -24,6 +24,8 @@ public class WxBatchOrder extends TenantEntity { private Long cUserId; @io.swagger.annotations.ApiModelProperty(value="支付金额(分):允许有负数,退款时为负值。",name="payment") private Integer payment; +// @io.swagger.annotations.ApiModelProperty(value="订单状态 已支付/未支付。已取消",name="orderStatus") +// private Integer orderStatus; @io.swagger.annotations.ApiModelProperty(value="创建时间/砍价开始时间",name="createDate") private Date createDate; @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java index b3b036bc4..face8ae1f 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java @@ -67,6 +67,4 @@ public interface WxOrderMapper extends CommonMapper { void updateCUserId(WxOrder updateOrder); - void updateComposeOrderId(@Param("id")Long id,@Param("composeOrderId")Long composeOrderId,@Param("tenantId")String tenantId); - } 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 bf71ce643..7ce009e46 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2008,7 +2008,6 @@ public class WxOrderServiceImpl implements WxOrderService { } //如果没有orderId,则用lastOrder的信息 if (null == composeOrder.getMainOrderId() || composeOrder.getMainOrderId().intValue() <= 0) { - wxOrderMapper.updateComposeOrderId(lastOrder.getId(), lastOrder.getId(), lastOrder.getTenantId()); return new WxComposeOrder(lastOrder.getId(), composeOrder.getComposeOrderType()); } return composeOrder; diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 6ba45cc63..37482d221 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -1025,10 +1025,4 @@ - - update wx_order set compose_order_id = #{composeOrderId} where id = #{id} and tenant_id = #{tenantId} - - - - From a0ee553bd06373d5cd4d1db867156b5a503eb988 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Tue, 14 Sep 2021 11:26:15 +0800 Subject: [PATCH 023/171] fix order --- .../java/com/iformall/domain/po/WxBatchOrder.java | 2 -- .../java/com/iformall/enums/EnumComposeOrder.java | 11 +++++++++++ .../iformall/service/impl/WxOrderServiceImpl.java | 13 +++++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java index 1b98a8010..77c0f8e43 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java @@ -24,8 +24,6 @@ public class WxBatchOrder extends TenantEntity { private Long cUserId; @io.swagger.annotations.ApiModelProperty(value="支付金额(分):允许有负数,退款时为负值。",name="payment") private Integer payment; -// @io.swagger.annotations.ApiModelProperty(value="订单状态 已支付/未支付。已取消",name="orderStatus") -// private Integer orderStatus; @io.swagger.annotations.ApiModelProperty(value="创建时间/砍价开始时间",name="createDate") private Date createDate; @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java index 46b50691d..b0c4e32ee 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java @@ -46,6 +46,7 @@ public enum EnumComposeOrder { } } + //是单个支付还是组合支付 public static boolean isSingle(Integer type) { if (type.intValue() == SINGLE.getCode().intValue()) { return true; @@ -53,4 +54,14 @@ public enum EnumComposeOrder { return false; } } + + //子订单是单个还是一起,购物车的子订单是单个,可以单个支付,券包的子订单不能单个支付 + public static boolean childOrderIsSingle(Integer type) { + if (type.intValue() == SINGLE.getCode().intValue() || type.intValue() == ONE_NUMBER_ORDER_BATCH.getCode().intValue() + || type.intValue() == MULITY_NUMBER_ORDER_BATCH.getCode().intValue()) { + return true; + }else { + return false; + } + } } 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 7ce009e46..bd2d184fa 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2080,7 +2080,11 @@ public class WxOrderServiceImpl implements WxOrderService { record.setFormId(formId); record.setOrderGroupId(0L); record.setComposeOrderId(composeOrder.getMainOrderId()); - record.setComposeOrderType(composeOrder.getComposeOrderType()); + if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) { + record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); + }else { + record.setComposeOrderType(composeOrder.getComposeOrderType()); + } record.setCouponNumber(couponNumber); try { proxy.saveFreeOrder(record, user, coupon); @@ -2132,7 +2136,12 @@ public class WxOrderServiceImpl implements WxOrderService { record.setPayment(price.getRealPayMent()); record.setOrderStatus(orderStatus); record.setComposeOrderId(composeOrder.getMainOrderId()); - record.setComposeOrderType(composeOrder.getComposeOrderType()); + if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) { + record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); + }else { + record.setComposeOrderType(composeOrder.getComposeOrderType()); + } + record.setCouponNumber(couponNumber); try { orderNumber = proxy.saveNoFreeOrder(record, user, coupon, isPress); From 160654b381441de76579dca3db28608c19df7253 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 14 Sep 2021 17:34:41 +0800 Subject: [PATCH 024/171] upd address --- .../controller/mem/UserBasicInfoAddressController.java | 3 +++ .../service/impl/UserBasicInfoAddressServiceImpl.java | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/UserBasicInfoAddressController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/UserBasicInfoAddressController.java index 91ddfe174..eea61baaf 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/UserBasicInfoAddressController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/UserBasicInfoAddressController.java @@ -53,6 +53,9 @@ public class UserBasicInfoAddressController extends BaseController { if(userBasicInfoAddress == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } + if(userBasicInfoAddress.getUserId() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + } userBasicInfoAddress.undateFinalTenantId(ifParentUpdateTenantInfo()); userBasicInfoAddressService.saveOrUpdate(userBasicInfoAddress); return new ResultData(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/UserBasicInfoAddressServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/UserBasicInfoAddressServiceImpl.java index 153c86bc5..f37b36ff5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/UserBasicInfoAddressServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/UserBasicInfoAddressServiceImpl.java @@ -8,6 +8,7 @@ import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.enums.EnumCarVendor; +import com.iformall.enums.EnumYesOrNo; import com.iformall.mapper.*; import com.iformall.service.*; import org.slf4j.Logger; @@ -46,6 +47,9 @@ public class UserBasicInfoAddressServiceImpl implements UserBasicInfoAddressServ record.setUpdateDate(now); userBasicInfoAddressMapper.updateById(record); } + if(record.getIsDefault() != null && record.getIsDefault().equals(EnumYesOrNo.YES.getCode())){ + userBasicInfoAddressMapper.updateUnDefault(record); + } } @Override From 2e8baeca609bda4c8e1e49bf13c93c2d1943b8b3 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 15 Sep 2021 11:12:31 +0800 Subject: [PATCH 025/171] fix order --- .../java/com/iformall/service/impl/WxOrderServiceImpl.java | 2 +- .../com/iformall/service/order/entity/WxComposeOrder.java | 3 ++- .../service/order/impl/SingleOrderAdapterService.java | 5 ++--- .../order/impl/batch/BaseBatchOrderAdapterService.java | 5 ++--- 4 files changed, 7 insertions(+), 8 deletions(-) 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 bd2d184fa..7ba15ea32 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2008,7 +2008,7 @@ public class WxOrderServiceImpl implements WxOrderService { } //如果没有orderId,则用lastOrder的信息 if (null == composeOrder.getMainOrderId() || composeOrder.getMainOrderId().intValue() <= 0) { - return new WxComposeOrder(lastOrder.getId(), composeOrder.getComposeOrderType()); + return new WxComposeOrder(lastOrder.getId(), composeOrder.getComposeOrderType(),lastOrder.getPayment()); } return composeOrder; } diff --git a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java index f99a99d20..41167902f 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java @@ -7,9 +7,10 @@ import lombok.Data; @Data public class WxComposeOrder { - public WxComposeOrder(Long mainOrderId,Integer composeOrderType) { + public WxComposeOrder(Long mainOrderId,Integer composeOrderType,Integer payment) { this.mainOrderId = mainOrderId; this.composeOrderType = composeOrderType; + this.payment = payment; } private Long mainOrderId; diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java index 1c33be0aa..a23162822 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java @@ -34,7 +34,7 @@ public class SingleOrderAdapterService implements OrderAdapterService { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { - return new WxComposeOrder(0L, EnumComposeOrder.SINGLE.getCode()); + return new WxComposeOrder(0L, EnumComposeOrder.SINGLE.getCode(),0); } @Override @@ -45,8 +45,7 @@ public class SingleOrderAdapterService implements OrderAdapterService { @Override public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { WxOrder wxOrder = wxOrderMapper.selectById(mainOrderId, tenantId); - WxComposeOrder corder = new WxComposeOrder(wxOrder.getId(),EnumComposeOrder.SINGLE.getCode()); - corder.setPayment(wxOrder.getPayment()); + WxComposeOrder corder = new WxComposeOrder(wxOrder.getId(),EnumComposeOrder.SINGLE.getCode(),wxOrder.getPayment()); corder.setSingleOrder(wxOrder); return corder; } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java index 251d5f996..c8e885f08 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java @@ -59,13 +59,12 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic order.setPayment(payment); order.setCreateDate(new Date()); wxBatchOrderMapper.insert(order); - return new WxComposeOrder(order.getId(),composeOrderType.getCode()); + return new WxComposeOrder(order.getId(),composeOrderType.getCode(),payment); } protected WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId,EnumComposeOrder composeOrderType) { WxBatchOrder order = wxBatchOrderMapper.selectById(mainOrderId, tenantId); - WxComposeOrder corder = new WxComposeOrder(order.getId(),composeOrderType.getCode()); - corder.setPayment(order.getPayment()); + WxComposeOrder corder = new WxComposeOrder(order.getId(),composeOrderType.getCode(),order.getPayment()); corder.setMainOrder(order); return corder; } From 6773fe8151820b541aa43502c5d1f1f40b92041b Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 15 Sep 2021 11:45:51 +0800 Subject: [PATCH 026/171] fix order --- .../src/main/java/com/iformall/domain/po/WxPayOrder.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java index 00a69c1a6..1e0039929 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java @@ -12,6 +12,8 @@ import lombok.ToString; import java.util.*; +import org.apache.commons.lang3.StringUtils; + @TableName(value = "wx_pay_order") @Data @EqualsAndHashCode(callSuper = true) @@ -60,6 +62,9 @@ public class WxPayOrder extends TenantEntity { private String childOrderShare; public WxComposeChildOrderShare getChildOrderShare(Long wxOrderId) { + if (StringUtils.isBlank(this.childOrderShare)) { + return new WxComposeChildOrderShare(this.payAmount, this.shareAmount, this.rateAmount); + } Map childs = JSON.parseObject(this.childOrderShare, Map.class); JSONObject childOrderShare = (JSONObject) childs.get(String.valueOf(wxOrderId)); if (null != childOrderShare) { From fe809cb64532994027c4ed0d5bb35528914dc6e9 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 15 Sep 2021 11:55:51 +0800 Subject: [PATCH 027/171] fix order --- .../com/iformall/domain/po/WxPayOrder.java | 4 +-- .../impl/WxCouponOrderServiceImpl.java | 18 +++++----- .../service/impl/WxPayOrderServiceImpl.java | 36 ++++++++++--------- .../order/impl/SingleOrderAdapterService.java | 4 +-- 4 files changed, 33 insertions(+), 29 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java index 1e0039929..194f1b84c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java @@ -58,8 +58,8 @@ public class WxPayOrder extends TenantEntity { private Integer shareAmount; @io.swagger.annotations.ApiModelProperty(value="通道费差(购买时刻的通道费差,分账完结时使用)",name="rateAmount") private Integer rateAmount; - @io.swagger.annotations.ApiModelProperty(value="子订单分账金额json",name="childOrderShare") - private String childOrderShare; +// @io.swagger.annotations.ApiModelProperty(value="子订单分账金额json",name="childOrderShare") +// private String childOrderShare; public WxComposeChildOrderShare getChildOrderShare(Long wxOrderId) { if (StringUtils.isBlank(this.childOrderShare)) { 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 91b30f6c9..4045a8f3b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -1530,15 +1530,17 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { Map childShares = new HashMap(); OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()); List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); - for (WxOrder o : orderList) { - WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); - WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); - int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); - Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; - Integer orderRateAmount = PayUtils.getPayRate(price.getRealPayMent(), payAccount.getRealRate(), true); - childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); + if (null != orderList && orderList.size() > 0) { + for (WxOrder o : orderList) { + WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); + WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); + int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); + Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; + Integer orderRateAmount = PayUtils.getPayRate(price.getRealPayMent(), payAccount.getRealRate(), true); + childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); + } + payOrder.setChildOrderShare(JSON.toJSONString(childShares)); } - payOrder.setChildOrderShare(JSON.toJSONString(childShares)); } payOrder.setPayFrom(EnumPayFrom.INSIDE_B.getCode()); payOrder.setPosPayOrderId(couponOrder.getId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 235e55eb3..b3c3dc7dd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -388,15 +388,17 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { Map childShares = new HashMap(); OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()); List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); - for (WxOrder o : orderList) { - WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); - WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); - int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); - Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; - Integer orderRateAmount = OrderHelper.getRateAmount(price.getRealPayMent(),orderMallCharge, payAccount); - childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); + if(null != orderList && orderList.size() > 0) { + for (WxOrder o : orderList) { + WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); + WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); + int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); + Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; + Integer orderRateAmount = OrderHelper.getRateAmount(price.getRealPayMent(),orderMallCharge, payAccount); + childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); + } + record.setChildOrderShare(JSON.toJSONString(childShares)); } - record.setChildOrderShare(JSON.toJSONString(childShares)); } int sqlRow = wxPayOrderMapper.insert(record); @@ -508,15 +510,17 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { Map childShares = new HashMap(); OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()); List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); - for (WxOrder o : orderList) { - WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); - WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); - int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); - Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; - Integer orderRateAmount = PayUtils.getPayRate(price.getRealPayMent(), payAccount.getRealRate(), true); - childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); + if (null != orderList && orderList.size() > 0 ) { + for (WxOrder o : orderList) { + WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); + WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); + int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); + Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; + Integer orderRateAmount = PayUtils.getPayRate(price.getRealPayMent(), payAccount.getRealRate(), true); + childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); + } + record.setChildOrderShare(JSON.toJSONString(childShares)); } - record.setChildOrderShare(JSON.toJSONString(childShares)); } int sqlRow = wxPayOrderMapper.insert(record); diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java index a23162822..953e161a8 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java @@ -52,9 +52,7 @@ public class SingleOrderAdapterService implements OrderAdapterService { @Override public List getChildOrders(WxComposeOrder composeOrder, String tenantId) { - List list = new ArrayList(); - list.add(composeOrder.getSingleOrder()); - return list; + return null; } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) From 5d912ca7f6e9a24ba3d8b3392b6ce6b7bee9c837 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 15 Sep 2021 11:56:44 +0800 Subject: [PATCH 028/171] fix order --- .../src/main/java/com/iformall/domain/po/WxPayOrder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java index 194f1b84c..1e0039929 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java @@ -58,8 +58,8 @@ public class WxPayOrder extends TenantEntity { private Integer shareAmount; @io.swagger.annotations.ApiModelProperty(value="通道费差(购买时刻的通道费差,分账完结时使用)",name="rateAmount") private Integer rateAmount; -// @io.swagger.annotations.ApiModelProperty(value="子订单分账金额json",name="childOrderShare") -// private String childOrderShare; + @io.swagger.annotations.ApiModelProperty(value="子订单分账金额json",name="childOrderShare") + private String childOrderShare; public WxComposeChildOrderShare getChildOrderShare(Long wxOrderId) { if (StringUtils.isBlank(this.childOrderShare)) { From 73d18311a8cc9cef79b48a4f0f17ef93b06c1d23 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 15 Sep 2021 12:49:37 +0800 Subject: [PATCH 029/171] fix order --- .../com/iformall/controller/WxPayOrderController.java | 8 ++++---- .../service/order/impl/SingleOrderAdapterService.java | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index a466d30ad..1e084917c 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -136,10 +136,10 @@ public class WxPayOrderController extends BaseController { record.setComposeOrder(Integer.parseInt(composeOrderType)); return wxPayOrderService.createPayOrder(appInfo, wxCUserBasicInfo, record, payWay,parm); } catch (MallinkException e) { - logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage()); + logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage(),e); return new ResultData(e.getErrorCode(), e.getMessage()); } catch (Exception e) { - logger.error("payment wechat, order create error, req 3: " + record.toString() + ", e:" + e.getMessage()); + logger.error("payment wechat, order create error, req 3: " + record.toString() + ", e:" + e.getMessage(),e); return new ResultData(ErrorCode.PAY_ORDER_ERROR, e.getMessage()); } } @@ -229,10 +229,10 @@ public class WxPayOrderController extends BaseController { } return new ResultData(Result.SUCCESS, "支付状态更新成功"); } catch (MallinkException e) { - logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage()); + logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage(),e); return new ResultData(e.getErrorCode(), e.getMessage()); } catch (Exception e) { - logger.error("支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); + logger.error("支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage(),e); return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); } } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java index 953e161a8..88711fc9e 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java @@ -52,7 +52,9 @@ public class SingleOrderAdapterService implements OrderAdapterService { @Override public List getChildOrders(WxComposeOrder composeOrder, String tenantId) { - return null; + List childOrders = new ArrayList(); + childOrders.add(composeOrder.getSingleOrder()); + return childOrders; } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) From 07396b4fc9bef84aafc4d2268535e8f4582b595d Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 15 Sep 2021 14:32:10 +0800 Subject: [PATCH 030/171] fix order --- .../com/iformall/service/impl/WxRefundOrderServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index cde4c3aee..e907c62b2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -278,7 +278,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { record.setTransactionId(payOrder.getTransactionId()); record.setCUserId(payOrder.getCUserId()); record.setTotalFee(payOrder.getPayAmount()); - record.setRefundFee(payOrder.getChildOrderShare(rOrder.getId()).getRealPayMent()); + record.setRefundFee(payOrder.getChildOrderShare(wxOrder.getId()).getRealPayMent()); record.setRefundTimeStart(currentDate); record.setRefundOrderStatus(EnumRefundStatus.REFUND_WAIT.getCode()); record.setRefundVendor(payOrder.getPayVendor()); From 7d180b013cb73eb4e8190a48f0d2d2d6bc73dc72 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 15 Sep 2021 16:32:48 +0800 Subject: [PATCH 031/171] fix order --- .../iformall/controller/market/WxCouponOrderController.java | 4 ++-- .../com/iformall/service/impl/WxRefundOrderServiceImpl.java | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderController.java index b5bbe516c..43980a21c 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderController.java @@ -113,10 +113,10 @@ public class WxCouponOrderController extends BaseController { wxRefundOrderService.createRefundOrder(appinfo, couponOrderId, EnumPayType.PAY_ADMIN_REFUND, null); return new ResultData(); } catch (MallinkException e) { - logger.error(e.getMessage()); + logger.error(e.getMessage(),e); return new ResultData(e.getErrorCode(), e.getMessage()); } catch (Exception e) { - logger.error(e.getMessage()); + logger.error(e.getMessage(),e); return new ResultData(ErrorCode.REFUND_ORDER_ERROR); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index e907c62b2..226b115f7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -222,6 +222,9 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { rOrder.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode()); rOrder.setCreateDate(currentDate); rOrder.setUpdateDate(currentDate); + rOrder.setComposeOrderId(wxOrder.getComposeOrderId()); + rOrder.setComposeOrderType(wxOrder.getComposeOrderType()); + rOrder.setCouponNumber(wxOrder.getCouponNumber()); try { wxOrderMapper.insert(rOrder); } catch (Exception e) { From 3897a6ad8fe2957660e600b521fa51c7b476ee65 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 15 Sep 2021 18:00:36 +0800 Subject: [PATCH 032/171] add field --- .../migration/V2021091500001__wx_coupon.sql | 1209 +++++++++++++++++ ...ql => V2021091500002__wx_user_address.sql} | 0 ...=> V2021091500003__wx_mall_permission.sql} | 5 +- .../java/com/iformall/domain/po/WxCoupon.java | 19 +- .../com/iformall/domain/po/WxCouponOrder.java | 29 +- .../java/com/iformall/domain/po/WxOrder.java | 25 +- .../iformall/enums/EnumCouponSendType.java | 3 +- .../com/iformall/enums/EnumCouponType.java | 1 + 8 files changed, 1285 insertions(+), 6 deletions(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V2021091500001__wx_coupon.sql rename mallinkAdmin/src/main/resources/db/migration/{V2021100100002__wx_user_address.sql => V2021091500002__wx_user_address.sql} (100%) rename mallinkAdmin/src/main/resources/db/migration/{V2021100100001__wx_mall_permission.sql => V2021091500003__wx_mall_permission.sql} (66%) diff --git a/mallinkAdmin/src/main/resources/db/migration/V2021091500001__wx_coupon.sql b/mallinkAdmin/src/main/resources/db/migration/V2021091500001__wx_coupon.sql new file mode 100644 index 000000000..7ad638c36 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2021091500001__wx_coupon.sql @@ -0,0 +1,1209 @@ +ALTER TABLE `mallink`.`wx_coupon_0` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_1` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_2` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_3` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_4` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_5` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_6` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_7` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_8` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_9` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_10` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_11` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_12` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_13` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_14` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_15` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_16` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_17` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_18` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_19` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_20` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_21` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_22` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_23` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_24` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_25` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_26` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_27` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_28` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_29` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_30` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_31` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_32` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_33` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_34` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_35` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_36` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_37` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_38` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_39` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_40` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_41` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_42` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_43` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_44` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_45` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_46` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_47` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_48` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_49` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_50` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_51` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_52` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_53` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_54` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_55` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_56` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_57` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_58` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_59` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_60` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_61` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_62` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_63` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_64` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_65` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_66` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_67` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_68` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_69` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_70` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_71` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_72` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_73` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_74` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_75` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_76` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_77` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_78` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_79` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_80` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_81` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_82` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_83` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_84` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_85` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_86` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_87` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_88` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_89` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_90` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_91` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_92` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_93` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_94` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_95` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_96` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_97` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_98` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; +ALTER TABLE `mallink`.`wx_coupon_99` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `sale_price`, +ADD COLUMN `gift_list` json COMMENT '卷包 子券' AFTER `source_type`; + + + +ALTER TABLE `mallink`.`wx_order_0` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_1` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_2` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_3` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_4` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_5` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_6` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_7` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_8` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_9` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_10` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_11` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_12` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_13` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_14` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_15` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_16` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_17` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_18` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_19` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_20` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_21` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_22` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_23` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_24` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_25` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_26` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_27` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_28` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_29` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_30` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_31` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_32` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_33` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_34` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_35` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_36` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_37` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_38` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_39` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_40` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_41` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_42` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_43` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_44` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_45` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_46` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_47` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_48` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_49` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_50` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_51` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_52` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_53` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_54` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_55` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_56` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_57` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_58` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_59` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_60` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_61` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_62` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_63` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_64` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_65` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_66` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_67` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_68` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_69` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_70` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_71` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_72` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_73` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_74` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_75` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_76` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_77` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_78` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_79` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_80` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_81` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_82` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_83` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_84` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_85` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_86` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_87` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_88` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_89` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_90` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_91` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_92` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_93` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_94` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_95` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_96` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_97` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_98` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; +ALTER TABLE `mallink`.`wx_order_99` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `payment`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`; + + + + + + +ALTER TABLE `mallink`.`wx_coupon_order_0` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_1` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_2` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_3` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_4` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_5` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_6` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_7` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_8` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_9` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_10` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_11` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_12` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_13` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_14` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_15` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_16` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_17` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_18` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_19` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_20` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_21` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_22` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_23` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_24` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_25` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_26` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_27` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_28` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_29` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_30` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_31` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_32` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_33` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_34` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_35` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_36` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_37` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_38` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_39` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_40` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_41` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_42` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_43` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_44` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_45` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_46` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_47` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_48` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_49` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_50` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_51` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_52` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_53` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_54` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_55` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_56` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_57` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_58` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_59` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_60` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_61` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_62` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_63` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_64` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_65` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_66` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_67` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_68` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_69` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_70` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_71` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_72` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_73` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_74` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_75` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_76` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_77` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_78` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_79` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_80` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_81` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_82` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_83` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_84` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_85` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_86` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_87` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_88` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_89` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_90` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_91` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_92` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_93` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_94` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_95` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_96` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_97` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_98` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; +ALTER TABLE `mallink`.`wx_coupon_order_99` +ADD COLUMN `freight_price` int(11) NOT NULL DEFAULT 0 COMMENT '运费' AFTER `compose_order_id`, +ADD COLUMN `shipping_address` json COMMENT '收货地址' AFTER `freight_price`, +ADD COLUMN `shipping_type` tinyint(2) NOT NULL DEFAULT 0 COMMENT '配送类型 0:默认(无) 1:自提 2:配送' AFTER `shipping_address`, +ADD COLUMN `delivery_info` json COMMENT '配送信息' AFTER `shipping_type`; diff --git a/mallinkAdmin/src/main/resources/db/migration/V2021100100002__wx_user_address.sql b/mallinkAdmin/src/main/resources/db/migration/V2021091500002__wx_user_address.sql similarity index 100% rename from mallinkAdmin/src/main/resources/db/migration/V2021100100002__wx_user_address.sql rename to mallinkAdmin/src/main/resources/db/migration/V2021091500002__wx_user_address.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V2021100100001__wx_mall_permission.sql b/mallinkAdmin/src/main/resources/db/migration/V2021091500003__wx_mall_permission.sql similarity index 66% rename from mallinkAdmin/src/main/resources/db/migration/V2021100100001__wx_mall_permission.sql rename to mallinkAdmin/src/main/resources/db/migration/V2021091500003__wx_mall_permission.sql index 6644c6825..c0292471e 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V2021100100001__wx_mall_permission.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V2021091500003__wx_mall_permission.sql @@ -1,9 +1,10 @@ --加可配送商品 INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (665, '可配送商品', 604, 'Y', NULL, 1, NULL, NULL, 'distributableCoupon', null, 0, 665); +INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (666, '券礼包', 604, 'Y', NULL, 1, NULL, NULL, 'couponGiftList', null, 0, 666); --加商品订单 INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (714, '商品订单', 610, 'Y', NULL, 1, NULL, NULL, 'distributableOrder', NULL, 0, 714); ---UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 209, 211, 212, 221, 222, 251, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 420, 421, 422, 501, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 661, 662, 663, 664, 665, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 686, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 712, 713, 714, 901, 902, 903, 904, 905, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 60701, 60702]' WHERE `id` = 1; +--UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 209, 211, 212, 221, 222, 251, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 420, 421, 422, 501, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 661, 662, 663, 664, 665, 666, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 686, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 712, 713, 714, 901, 902, 903, 904, 905, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 60701, 60702]' WHERE `id` = 1; -UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 209, 211, 212, 221, 222, 251, 299, 300, 301, 302, 303, 304, 305, 306, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 420, 421, 422, 501, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 661, 662, 663, 664, 665, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 686, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 712, 713, 714, 901, 902, 903, 904, 905, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 60701, 60702]' WHERE `id` = 1; +UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 209, 211, 212, 221, 222, 251, 299, 300, 301, 302, 303, 304, 305, 306, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 420, 421, 422, 501, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 661, 662, 663, 664, 665, 666, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 686, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 712, 713, 714, 901, 902, 903, 904, 905, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 60701, 60702]' WHERE `id` = 1; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java index c6cc96ca4..9c7a23e88 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java @@ -43,6 +43,10 @@ public class WxCoupon extends TenantEntity { @SortColumn(column = "use_price") private String usePriceStr; + @TableField(exist = false) + @SortColumn(column = "freight_price") + private String freightPriceStr; + @TableField(exist = false) @SortColumn(column = "price") private String priceStr; @@ -67,7 +71,7 @@ public class WxCoupon extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="查询-结束时间",name="enddate") private Date enddate; - @io.swagger.annotations.ApiModelProperty(value="券类型(1.满减券,2.代金券,3.团购券,4.礼品券,5.停车券,6.多商户券,8.砍价券,9.团购券,50.积分券,51.积分停车券,100.消费卡)",name="type") + @io.swagger.annotations.ApiModelProperty(value="券类型(1.满减券,2.代金券,3.团购券,4.礼品券,5.停车券,6.多商户券,8.砍价券,9.团购券,10.预购商品,11.可配送商品,12.券礼包,50.积分券,51.积分停车券,100.消费卡)",name="type") private Integer type; @io.swagger.annotations.ApiModelProperty(value="封面图",name="coverImg") private String coverImg; @@ -86,6 +90,8 @@ public class WxCoupon extends TenantEntity { private Integer salePrice; @io.swagger.annotations.ApiModelProperty(value="使用条件金额(适用于类型1,2,3,4)",name="usePrice") private Integer usePrice; + @io.swagger.annotations.ApiModelProperty(value="运费",name="freightPrice") + private Integer freightPrice; //EnumCouponUseLimitRule @io.swagger.annotations.ApiModelProperty(value="限领规则",name="useLimitRule") private Integer useLimitRule; @@ -213,6 +219,10 @@ public class WxCoupon extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="富文本内容",name="html") private String html; + //List String + @io.swagger.annotations.ApiModelProperty(value="卷包内容",name="giftList") + private String giftList; + @TableField(exist = false) @SortColumn(column = "press_count") private Integer pressSendCount; @@ -279,6 +289,13 @@ public class WxCoupon extends TenantEntity { return usePriceStr; } + public String getFreightPriceStr() { + if(freightPrice!=null) { + freightPriceStr = new BigDecimal(freightPrice).divide(new BigDecimal(100)).toString(); + } + return freightPriceStr; + } + public String getPriceStr() { if(price!=null) { priceStr = new BigDecimal(price).divide(new BigDecimal(100)).toString(); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java index 4e8f401ea..715c87161 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java @@ -1,13 +1,16 @@ package com.iformall.domain.po; +import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.iformall.common.SortColumn; import com.iformall.domain.po.base.TenantEntity; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; +import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.Date; @@ -21,7 +24,7 @@ public class WxCouponOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "卡券ID", name = "couponId") private Long couponId; - @io.swagger.annotations.ApiModelProperty(value = "券类型(1.满减券,2.代金券,3.团购券,4.礼品券,5.停车券,6.多商户券,8.砍价券,9.团购券,100.消费卡)", name = "couponType") + @io.swagger.annotations.ApiModelProperty(value = "券类型(1.满减券,2.代金券,3.团购券,4.礼品券,5.停车券,6.多商户券,8.砍价券,9.团购券,10.预购商品,11.可配送商品,12.券礼包,50.积分券,51.积分停车券,100.消费卡)", name = "couponType") private Integer couponType; @io.swagger.annotations.ApiModelProperty(value = "c端用户id", name = "cUserId") private Long cUserId; @@ -124,4 +127,28 @@ public class WxCouponOrder extends TenantEntity { this.cUserId = cUserId; } + + @io.swagger.annotations.ApiModelProperty(value="运费",name="freightPrice") + private Integer freightPrice; + + @TableField(exist = false) + @SortColumn(column = "freight_price") + private String freightPriceStr; + + public String getFreightPriceStr() { + if(freightPrice!=null) { + freightPriceStr = new BigDecimal(freightPrice).divide(new BigDecimal(100)).toString(); + } + return freightPriceStr; + } + + @io.swagger.annotations.ApiModelProperty(value="收货地址",name="shippingAddress") + private String shippingAddress; + + @io.swagger.annotations.ApiModelProperty(value="配送类型 0:默认(无) 1:自提 2:配送",name="shippingType") + private Integer shippingType; + + @io.swagger.annotations.ApiModelProperty(value="配送信息",name="deliveryInfo") + private String deliveryInfo; + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java index e170fb75d..efbeb162f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java @@ -3,6 +3,7 @@ package com.iformall.domain.po; import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.common.SortColumn; import com.iformall.domain.po.base.TenantEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -102,6 +103,8 @@ public class WxOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="组合订单类型EnumComposeOrder",name="composeOrderType") private Integer composeOrderType; + + @TableField(exist = false) protected List statusS; @@ -113,7 +116,7 @@ public class WxOrder extends TenantEntity { @TableField(exist = false) private String title; - @Excel(name = "商品属性", width = 20, orderNum = "4", replace = {"消费卡_1", "优惠券_2", "砍价_3", "拼团_4", " _-1"}) + @Excel(name = "商品属性", width = 20, orderNum = "4", replace = {"消费卡_1", "优惠券_2", "砍价_3", "拼团_4","可配送商品_5", " _-1"}) @TableField(exist = false) private Integer attribute; @@ -136,4 +139,24 @@ public class WxOrder extends TenantEntity { @TableField(exist = false) private String paymentStr; + @io.swagger.annotations.ApiModelProperty(value="运费",name="freightPrice") + private Integer freightPrice; + + @TableField(exist = false) + @SortColumn(column = "freight_price") + private String freightPriceStr; + + public String getFreightPriceStr() { + if(freightPrice!=null) { + freightPriceStr = new BigDecimal(freightPrice).divide(new BigDecimal(100)).toString(); + } + return freightPriceStr; + } + + @io.swagger.annotations.ApiModelProperty(value="收货地址",name="shippingAddress") + private String shippingAddress; + + @io.swagger.annotations.ApiModelProperty(value="配送类型 0:默认(无) 1:自提 2:配送",name="shippingType") + private Integer shippingType; + } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponSendType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponSendType.java index a5b426840..bf82d42d3 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponSendType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponSendType.java @@ -7,7 +7,8 @@ public enum EnumCouponSendType { // 1:主动领取 2:定向投放 ACTIVE(1,"主动领取"), - PASSIVE(2, "定向投放") + PASSIVE(2, "定向投放"), + GIFT(3, "礼包券") ; public static EnumCouponSendType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponType.java index 4f249c508..e38b7dbce 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponType.java @@ -17,6 +17,7 @@ public enum EnumCouponType { COUPON_GROUP(9, "团购券"), COUPON_PREORDER(10, "预购商品"), COUPON_DISTRIBUTION(11, "可配送商品"), + COUPON_GIFT(12, "券礼包"), COUPON_CREDIT(50,"积分券"), COUPON_CREDIT_PARK(51,"积分停车券"), CARD_MULTIMCH(100, "消费卡"), From 5d637b5e138516e30fb5d42129bc3d58776a9349 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 15 Sep 2021 18:18:07 +0800 Subject: [PATCH 033/171] fix order --- .../controller/WxOrderController.java | 10 +++++----- .../iformall/service/impl/PosServiceImpl.java | 7 ++++++- .../service/impl/WxOrderServiceImpl.java | 19 ++++++++++++++++--- .../impl/WxRefundOrderServiceImpl.java | 3 +++ 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index b2b1f3ffe..e97e87f0f 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -161,7 +161,7 @@ public class WxOrderController extends BaseController { orderId = Long.valueOf(orderIdStr); } catch (NumberFormatException e) { logger.error(e.getMessage()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "退款订单ID转换失败"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "退款订单ID转换失败:"+orderIdStr); } try { WxOrder order = wxOrderService.getById(orderId,getTenantInfo().getTenantId()); @@ -229,7 +229,7 @@ public class WxOrderController extends BaseController { id = Long.valueOf(orderId); } catch (NumberFormatException e) { logger.error("parse orderId failed"); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "订单ID转换异常"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "订单ID转换异常:"+orderId); } wxOrder.setId(id); Long memberId; @@ -285,7 +285,7 @@ public class WxOrderController extends BaseController { id = Long.valueOf(orderId); } catch (NumberFormatException e) { logger.error("parse orderId failed"); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "订单ID转换异常"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "订单ID转换异常:"+orderId); } WxOrder order = null; try { @@ -315,7 +315,7 @@ public class WxOrderController extends BaseController { id = Long.valueOf(couponId); } catch (NumberFormatException e) { logger.error("parse couponId failed"); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "券ID转换异常"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "券ID转换异常:"+couponId); } WxCoupon wxCoupon = null; try { @@ -384,7 +384,7 @@ public class WxOrderController extends BaseController { id = Long.valueOf(orderId); } catch (NumberFormatException e) { logger.error("parse orderId failed"); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "订单ID转换异常"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "订单ID转换异常:"+orderId); } wxOrder.setId(id); wxOrder.updateTenantInfo(getTenantInfo()); diff --git a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java index f7dc8d16c..3268e2704 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java @@ -2495,7 +2495,9 @@ public class PosServiceImpl implements PosService { order.setPosOrderId(posOrderId); order.setPosOrderCreateTime(posOrderTime.getTime()); order.setPosOrderCreateSn(orderCreateSn); - + order.setComposeOrderId(0L); + order.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); + order.setCouponNumber(1); try { orderMapper.insert(order); } catch (Exception e) { @@ -2576,6 +2578,9 @@ public class PosServiceImpl implements PosService { order.setPosOrderCreateTime(posOrderTime.getTime()); order.setPosOrderCreateSn(orderCreateSn); order.setOrderNumber(orderQ.getOrderNumber()); + order.setComposeOrderId(0L); + order.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); + order.setCouponNumber(1); try { orderMapper.insert(order); 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 7ba15ea32..fd9eff29d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -872,6 +872,9 @@ public class WxOrderServiceImpl implements WxOrderService { record.setDetail(bodyStr); record.setCreateDate(curr); record.setUpdateDate(curr); + record.setComposeOrderId(0L); + record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); + record.setCouponNumber(1); try { // 保存订单 @@ -929,6 +932,9 @@ public class WxOrderServiceImpl implements WxOrderService { record.setDetail(bodyStr); record.setCreateDate(curr); record.setUpdateDate(curr); + record.setComposeOrderId(0L); + record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); + record.setCouponNumber(1); try { // 保存订单 @@ -966,7 +972,9 @@ public class WxOrderServiceImpl implements WxOrderService { record.setDetail(bodyStr); record.setCreateDate(curr); record.setUpdateDate(curr); - + record.setComposeOrderId(0L); + record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); + record.setCouponNumber(1); try { // 保存订单 wxOrderMapper.insert(record); @@ -1204,7 +1212,8 @@ public class WxOrderServiceImpl implements WxOrderService { couponOrder.setCreateDate(curr); couponOrder.setUpdateDate(curr); couponOrder.setCouponPrice(order.getPayment()); - + couponOrder.setComposeOrderType(order.getComposeOrderType()); + couponOrder.setComposeOrderId(order.getComposeOrderId()); wxCouponOrderMapper.insert(couponOrder); /// 储值卡信息添加 @@ -1317,8 +1326,9 @@ public class WxOrderServiceImpl implements WxOrderService { record.setDetail(bodyStr); record.setCreateDate(curr); record.setUpdateDate(curr); + record.setComposeOrderId(0L); record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); - + record.setCouponNumber(1); // 保存订单 try { wxOrderMapper.insert(record); @@ -2195,6 +2205,9 @@ public class WxOrderServiceImpl implements WxOrderService { record.setPayment(0); record.setFormId(formId); record.setOrderGroupId(0L); + record.setComposeOrderId(0L); + record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); + record.setCouponNumber(1); try { saveFreeOrder(record, user, coupon); } catch (Exception e) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index 226b115f7..290037bdf 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -367,6 +367,9 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { rOrder.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode()); rOrder.setCreateDate(currentDate); rOrder.setUpdateDate(currentDate); + rOrder.setComposeOrderId(0L); + rOrder.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); + rOrder.setCouponNumber(1); try { wxOrderMapper.insert(rOrder); } catch (Exception e) { From e761f012c4cedb59f58b0611cf619f8e63b7103b Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 15 Sep 2021 18:59:07 +0800 Subject: [PATCH 034/171] fix order --- .../java/com/iformall/controller/WxOrderGroupController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderGroupController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderGroupController.java index 2de764783..a44003521 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderGroupController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderGroupController.java @@ -94,6 +94,7 @@ public class WxOrderGroupController extends BaseController { @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true), }) public ResultData toOrderGroup(@RequestBody WxOrderGroup wxOrderGroup) { + logger.info("toOrderGroup "+wxOrderGroup); if (wxOrderGroup.getId() == null) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "id不能为空"); } From 840a543a0f70ec7d0adb5bb705f6e46921ddc3d5 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 16 Sep 2021 10:56:15 +0800 Subject: [PATCH 035/171] fix order --- .../iformall/schedule/CouponOrderExpiringSchedule.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java index bf9d1ff7f..aea08e13a 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java @@ -58,7 +58,7 @@ public class CouponOrderExpiringSchedule { } - @Scheduled(cron = "0 0 5 * * ?") // 每天凌晨00:05 + @Scheduled(cron = "0 0/5 * * * ?") // 每天凌晨00:05 // @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 public void couponOrderExpiringSchedule() { @@ -71,7 +71,7 @@ public class CouponOrderExpiringSchedule { try { proxy.couponOrderExpire(co, true); } catch (Exception e) { - logger.error(e.getMessage()); + logger.error(e.getMessage(),e); } }); @@ -79,7 +79,7 @@ public class CouponOrderExpiringSchedule { } - @Scheduled(cron = "0 0 5 * * ?") // 每天凌晨00:05 + @Scheduled(cron = "0 0/5 * * * ?") // 每天凌晨00:05 // @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 public void couponOrderRefundSchedule() { CouponOrderExpiringSchedule proxy = (CouponOrderExpiringSchedule) AopContext.currentProxy(); @@ -90,7 +90,7 @@ public class CouponOrderExpiringSchedule { try { proxy.refund(co); }catch(Exception e) { - logger.error(e.getMessage()); + logger.error(e.getMessage(),e); } }); } @@ -191,7 +191,7 @@ public class CouponOrderExpiringSchedule { } } catch (MallinkException e) { - logger.error("券过期不退款: " + co.getId() + " ERROR:" + e.getMessage()); + logger.error("券过期不退款: " + co.getId() + " ERROR:" + e.getMessage(),e); throw new MallinkException(e.getErrorCode(), e.getMessage()); } From fe32c2561845e6de0700655cffb97122a7667d3f Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 16 Sep 2021 11:08:29 +0800 Subject: [PATCH 036/171] fix order --- .../com/iformall/schedule/CouponOrderExpiringSchedule.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java index aea08e13a..e37bc0325 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java @@ -58,7 +58,7 @@ public class CouponOrderExpiringSchedule { } - @Scheduled(cron = "0 0/5 * * * ?") // 每天凌晨00:05 + @Scheduled(cron = "0 */5 * * * ?") // 每天凌晨00:05 // @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 public void couponOrderExpiringSchedule() { @@ -79,7 +79,7 @@ public class CouponOrderExpiringSchedule { } - @Scheduled(cron = "0 0/5 * * * ?") // 每天凌晨00:05 + @Scheduled(cron = "0 */5 * * * ?") // 每天凌晨00:05 // @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 public void couponOrderRefundSchedule() { CouponOrderExpiringSchedule proxy = (CouponOrderExpiringSchedule) AopContext.currentProxy(); From b1c409934bc8ddb07c8a7235e37f7167d2ebee21 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 16 Sep 2021 11:18:54 +0800 Subject: [PATCH 037/171] fix order --- .../com/iformall/schedule/CouponOrderExpiringSchedule.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java index e37bc0325..96d50a243 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java @@ -58,7 +58,7 @@ public class CouponOrderExpiringSchedule { } - @Scheduled(cron = "0 */5 * * * ?") // 每天凌晨00:05 + @Scheduled(cron = "0 0 5 * * ?") // 每天凌晨00:05 // @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 public void couponOrderExpiringSchedule() { @@ -79,7 +79,7 @@ public class CouponOrderExpiringSchedule { } - @Scheduled(cron = "0 */5 * * * ?") // 每天凌晨00:05 + @Scheduled(cron = "0 0 5 * * ?") // 每天凌晨00:05 // @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 public void couponOrderRefundSchedule() { CouponOrderExpiringSchedule proxy = (CouponOrderExpiringSchedule) AopContext.currentProxy(); From 23d667623744f9fa88ab6dedf54f5636bd8b82e2 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 16 Sep 2021 11:56:31 +0800 Subject: [PATCH 038/171] fix order --- .../service/impl/WxPayOrderServiceImpl.java | 16 +++++++++------- .../service/order/OrderAdapterService.java | 7 +++++++ .../service/order/entity/WxComposeOrder.java | 4 +++- .../order/impl/SingleOrderAdapterService.java | 5 +++++ .../CouponPackageOrderAdapterService.java | 5 +++++ ...NumberOneOrderBatchOrderAdapterService.java | 6 ++++++ ...NumberOneOrderBatchOrderAdapterService.java | 6 ++++++ .../pay/service/pay/PayAdapterService.java | 2 +- .../pay/service/pay/wx/h5/WxH5PayService.java | 2 +- .../appPay/WxMiniAppPayAdapterService.java | 18 +++++++++--------- .../maPay/WxMiniMaPayAdapterService.java | 14 +++++++------- 11 files changed, 59 insertions(+), 26 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index b3c3dc7dd..393f00292 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -234,11 +234,12 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); + WxCoupon lastCoupon = null; for (WxOrder o : orderList) { - checkSinglePayOrder(o, user, payWay); + lastCoupon = checkSinglePayOrder(o, user, payWay); } - - PayAdapterResult payResult = createPayOrder(appInfo, user, record,composeOrder, payWay, params); + String productName = orderAdapterService.getPayProductName(lastCoupon); + PayAdapterResult payResult = createPayOrder(appInfo, user, record,composeOrder,productName, payWay, params); if (payResult.isSuccess()) { return new ResultData(Result.SUCCESS,"创建支付单成功",payResult.getData()); }else { @@ -247,7 +248,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } - private void checkSinglePayOrder(WxOrder order,WxCUserBasicInfo user,EnumPayWay payWay) { + private WxCoupon checkSinglePayOrder(WxOrder order,WxCUserBasicInfo user,EnumPayWay payWay) { if (!order.getOrderGroupId().equals(0L)) { if (order.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode())) { logger.error("支付时拼团已满>>" + order.getOrderGroupId()); @@ -309,9 +310,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if (order.getPaymentType() != EnumPayType.PAY_PAYMENT.getCode()) { throw new MallinkException(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); } + return wxCoupon; } - private PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder, EnumPayWay payWay,PayExtraParam params) { + private PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder,String productName, EnumPayWay payWay,PayExtraParam params) { IdWorker idworker = IdWorker.get(); EnumPayShare isShare = EnumPayShare.NO; @@ -411,7 +413,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.debug("wxPayRecord md5 before:"+record.toString()); String beforemd5 = HashUtil.md5(record.toString()); - PayAdapterResult payResult = payServiceFactory.getPayAdapterService(payWay.getCode()).pay(payAccount, record,composeOrder,isShare,appInfo, currentDate, params); + PayAdapterResult payResult = payServiceFactory.getPayAdapterService(payWay.getCode()).pay(payAccount, record,composeOrder,productName,isShare,appInfo, currentDate, params); String aftermd5 = HashUtil.md5(record.toString()); if (beforemd5.equals(aftermd5)) { logger.error("支付方式["+payWay.getCode()+"]支付接口【pay】过程中 WxPayOrder 未做更新.record:"+record.toString()); @@ -536,7 +538,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.debug("wxPayRecord md5 before:"+record.toString()); String beforemd5 = HashUtil.md5(record.toString()); - PayAdapterResult payResult = payServiceFactory.getPayAdapterService(payWay.getCode()).pay(payAccount, record,composeOrder,isShare,appInfo, currentDate, params); + PayAdapterResult payResult = payServiceFactory.getPayAdapterService(payWay.getCode()).pay(payAccount, record,composeOrder,"付款码支付",isShare,appInfo, currentDate, params); String aftermd5 = HashUtil.md5(record.toString()); if (beforemd5.equals(aftermd5)) { logger.error("支付方式["+payWay.getCode()+"]支付接口【pay】过程中 WxPayOrder 未做更新.record:"+record.toString()); diff --git a/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java index b7cedc1ef..b3e8f7f87 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java @@ -19,6 +19,13 @@ public interface OrderAdapterService { */ WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List orderSave,EnumPayWay payWay); + /** + * 获取支付时商品名称,供服务商API使用 + * @param lastCoupon + * @return + */ + String getPayProductName(WxCoupon lastCoupon); + /** * 是否是一个数量一个订单。一个产品肯定是一个订单 * @return diff --git a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java index 41167902f..1d3389dee 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java @@ -19,8 +19,10 @@ public class WxComposeOrder { private Integer payment; + private String productName;//支付时调用服务商接口使用 + private WxOrder singleOrder;//单个模式时不用重复查询 - private Object mainOrder;//真正的主订单对象 + private Object mainOrder;//真正的主订单对象,批量下单时才有 } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java index 88711fc9e..d30bef3b8 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java @@ -81,4 +81,9 @@ public class SingleOrderAdapterService implements OrderAdapterService { public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) { } + @Override + public String getPayProductName(WxCoupon lastCoupon) { + return lastCoupon.getTitle(); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java index 29f454cec..a9b9291fc 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java @@ -51,5 +51,10 @@ public class CouponPackageOrderAdapterService extends BaseBatchOrderAdapterServi //手动核销发券 } + + @Override + public String getPayProductName(WxCoupon lastCoupon) { + return "[券包]"+lastCoupon.getTitle(); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/MulityNumberOneOrderBatchOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/MulityNumberOneOrderBatchOrderAdapterService.java index f11db0a7b..f3981b0c5 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/MulityNumberOneOrderBatchOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/MulityNumberOneOrderBatchOrderAdapterService.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Service; import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayOrder; import com.iformall.enums.EnumComposeOrder; @@ -45,5 +46,10 @@ public class MulityNumberOneOrderBatchOrderAdapterService extends BaseBatchOrder @Override public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) { } + + @Override + public String getPayProductName(WxCoupon lastCoupon) { + return "批量支付商品"; + } } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/OneNumberOneOrderBatchOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/OneNumberOneOrderBatchOrderAdapterService.java index 4ee534d05..ae55fe9c5 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/OneNumberOneOrderBatchOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/OneNumberOneOrderBatchOrderAdapterService.java @@ -6,6 +6,7 @@ import org.springframework.stereotype.Service; import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayOrder; import com.iformall.enums.EnumComposeOrder; @@ -45,5 +46,10 @@ public class OneNumberOneOrderBatchOrderAdapterService extends BaseBatchOrderAda public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) { } + + @Override + public String getPayProductName(WxCoupon lastCoupon) { + return "批量支付商品"; + } } diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java index fa7ecdae6..ba31e3d9b 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/PayAdapterService.java @@ -29,7 +29,7 @@ public interface PayAdapterService { * @return * @throws Exception */ - public PayAdapterResult pay(WxPayAccount payAccount,WxPayOrder record ,WxComposeOrder composeOrder,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception; + public PayAdapterResult pay(WxPayAccount payAccount,WxPayOrder record ,WxComposeOrder composeOrder,String productName,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception; /** * 查询支付结果,调用对应端的API查询支付结果 diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java index ea62f5f82..ac81dfbbd 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/h5/WxH5PayService.java @@ -23,7 +23,7 @@ import com.iformall.service.pay.service.pay.wx.BaseWxPayAdapterService; public class WxH5PayService extends BaseWxPayAdapterService implements CDrivingPayService{ @Override - public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record,WxComposeOrder composeOrder, EnumPayShare isShare, + public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record,WxComposeOrder composeOrder,String productName, EnumPayShare isShare, WxAppinfo appInfo, Date currentDate, PayExtraParam params) throws Exception { // TODO Auto-generated method stub return null; diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java index d83eacabd..398371659 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/appPay/WxMiniAppPayAdapterService.java @@ -61,7 +61,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen "\"NOT_UTF8\":{\"detail\":\"编码格式错误\",\"reason\":\"未使用指定编码格式\",\"resolution\":\"请使用UTF-8编码格式\"}}"); - private WxPayOrderP generateWxPayOrderP(WxPayAccount payAccount,WxComposeOrder composeOrder, WxPayOrder record,String openId,String appId,Date currentDate) throws Exception { + private WxPayOrderP generateWxPayOrderP(WxPayAccount payAccount,WxComposeOrder composeOrder,String productName, WxPayOrder record,String openId,String appId,Date currentDate) throws Exception { // 统一下单 普通商户模式 String noncestr = Utility.generate32UUID(); WxPayOrderP wxPayOrderP = new WxPayOrderP(); @@ -69,11 +69,11 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen wxPayOrderP.setAppid(appId); wxPayOrderP.setMch_id(payAccount.getMchId()); wxPayOrderP.setNonce_str(noncestr); - wxPayOrderP.setBody("在线商品"); + wxPayOrderP.setBody(productName); wxPayOrderP.setOut_trade_no(record.getPayOrderNo()); wxPayOrderP.setTotal_fee(composeOrder.getPayment()); wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP - wxPayOrderP.setGoods_tag("在线商品"); + wxPayOrderP.setGoods_tag(productName); wxPayOrderP.setNotify_url(payAccount.getPayNotifyUrl()); wxPayOrderP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型 wxPayOrderP.setProduct_id(String.valueOf(composeOrder.getMainOrderId())); // 订单ID @@ -135,7 +135,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen - private WxPayOrderSP generateWxPayOrderSP(WxPayAccount payAccount, WxComposeOrder composeOrder,WxPayOrder record,WxAppinfo appInfo,String openId,String appId,Date currentDate,EnumPayShare isShare) throws Exception { + private WxPayOrderSP generateWxPayOrderSP(WxPayAccount payAccount, WxComposeOrder composeOrder,String productName,WxPayOrder record,WxAppinfo appInfo,String openId,String appId,Date currentDate,EnumPayShare isShare) throws Exception { String noncestr = Utility.generate32UUID(); WxPayOrderSP wxPayOrderSP = new WxPayOrderSP(); wxPayOrderSP.setSub_openid(openId); @@ -144,11 +144,11 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen wxPayOrderSP.setSub_appid(appId); wxPayOrderSP.setSub_mch_id(payAccount.getSubMchId()); wxPayOrderSP.setNonce_str(noncestr); - wxPayOrderSP.setBody("在线商品"); + wxPayOrderSP.setBody(productName); wxPayOrderSP.setOut_trade_no(record.getPayOrderNo()); wxPayOrderSP.setTotal_fee(composeOrder.getPayment().toString()); wxPayOrderSP.setSpbill_create_ip(record.getIp()); // 终端IP - wxPayOrderSP.setGoods_tag("在线商品"); // 券ID + wxPayOrderSP.setGoods_tag(productName); // 券ID wxPayOrderSP.setNotify_url(payAccount.getPayNotifyUrl()); wxPayOrderSP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型 wxPayOrderSP.setProduct_id(String.valueOf(composeOrder.getMainOrderId())); // @@ -214,7 +214,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen @Override - public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record,WxComposeOrder composeOrder,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception { + public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record,WxComposeOrder composeOrder,String productName,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception { if (null == params ) { throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"openId为空"); } @@ -224,7 +224,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen } //普通商户模式 if (payAccount.getType() == EnumPayMode.MCH.getCode()) { - WxPayOrderP wxPayOrderP = generateWxPayOrderP(payAccount,composeOrder,record,openId,appInfo.getAppId(),currentDate); + WxPayOrderP wxPayOrderP = generateWxPayOrderP(payAccount,composeOrder,productName,record,openId,appInfo.getAppId(),currentDate); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderP)); log.info("pay order, wechat pushOrder, " + wxPayOrderP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); @@ -232,7 +232,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayAdapterService implemen } else { // 统一下单 // 服务商模式 - WxPayOrderSP wxPayOrderSP = generateWxPayOrderSP(payAccount,composeOrder,record,appInfo,openId,appInfo.getAppId(),currentDate,isShare); + WxPayOrderSP wxPayOrderSP = generateWxPayOrderSP(payAccount,composeOrder,productName,record,appInfo,openId,appInfo.getAppId(),currentDate,isShare); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderSP)); log.info("pay order, wechat pushOrder, " + wxPayOrderSP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java index 6750533a9..828cd435e 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java @@ -47,7 +47,7 @@ import me.chanjar.weixin.common.error.WxErrorException; @Service public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implements CPassivePayService{ - private WxMicroPayOrderP generateWxMicroPayOrderP(WxPayAccount payAccount, WxComposeOrder composeOrder, WxPayOrder record, EnumPayShare isShare, + private WxMicroPayOrderP generateWxMicroPayOrderP(WxPayAccount payAccount, WxComposeOrder composeOrder, String productName,WxPayOrder record, EnumPayShare isShare, WxAppinfo appInfo, Date currentDate,String bAppId,String bUserPhone) throws Exception { String noncestr = Utility.generate32UUID(); WxMicroPayOrderP wxPayOrderP = new WxMicroPayOrderP(); @@ -55,7 +55,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement wxPayOrderP.setMch_id(payAccount.getMchId()); wxPayOrderP.setDevice_info(bUserPhone); wxPayOrderP.setNonce_str(noncestr); - wxPayOrderP.setBody("在线商品"); + wxPayOrderP.setBody(productName); wxPayOrderP.setOut_trade_no(record.getPayOrderNo()); wxPayOrderP.setTotal_fee(record.getPayAmount()); wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP @@ -101,7 +101,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement } - private WxMicroPayOrderSP generateWxMicroPayOrderSP(WxPayAccount payAccount, WxComposeOrder composeOrder,WxPayOrder record, EnumPayShare isShare, + private WxMicroPayOrderSP generateWxMicroPayOrderSP(WxPayAccount payAccount, WxComposeOrder composeOrder, String productName,WxPayOrder record, EnumPayShare isShare, WxAppinfo appInfo, Date currentDate,String bUserPhone) throws Exception { String noncestr = Utility.generate32UUID(); WxMicroPayOrderSP wxPayOrderSP = new WxMicroPayOrderSP(); @@ -111,7 +111,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement wxPayOrderSP.setSub_mch_id(payAccount.getSubMchId()); wxPayOrderSP.setDevice_info(bUserPhone); wxPayOrderSP.setNonce_str(noncestr); - wxPayOrderSP.setBody("在线商品"); + wxPayOrderSP.setBody(productName); wxPayOrderSP.setOut_trade_no(record.getPayOrderNo()); wxPayOrderSP.setTotal_fee(record.getPayAmount()); wxPayOrderSP.setSpbill_create_ip(record.getIp()); @@ -163,7 +163,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement @Override - public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record, WxComposeOrder composeOrder, EnumPayShare isShare, + public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record, WxComposeOrder composeOrder,String productName, EnumPayShare isShare, WxAppinfo appInfo, Date currentDate, PayExtraParam params) throws Exception { if (payAccount.getType() == EnumPayMode.MCH.getCode()) { // 扫码支付 普通商户模式 @@ -176,7 +176,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"bUserPhone 不能为空"); } - WxMicroPayOrderP wxPayOrderP = generateWxMicroPayOrderP(payAccount, composeOrder,record, isShare, appInfo, currentDate, bAppId, bUserPhone); + WxMicroPayOrderP wxPayOrderP = generateWxMicroPayOrderP(payAccount, composeOrder,productName,record, isShare, appInfo, currentDate, bAppId, bUserPhone); String response = WxPay.micropay(BeanUtils.toStringMap(wxPayOrderP)); log.info("pay order, wechat micropay, " + wxPayOrderP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); @@ -189,7 +189,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement if (StringUtils.isBlank(bUserPhone)) { throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"bUserPhone 不能为空"); } - WxMicroPayOrderSP wxPayOrderSP = generateWxMicroPayOrderSP(payAccount, composeOrder,record, isShare, appInfo, currentDate, bUserPhone); + WxMicroPayOrderSP wxPayOrderSP = generateWxMicroPayOrderSP(payAccount, composeOrder,productName,record, isShare, appInfo, currentDate, bUserPhone); String response = WxPay.micropay(BeanUtils.toStringMap(wxPayOrderSP)); log.info("pay order, wechat micropay, " + wxPayOrderSP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); From 6e2849239fe3aa9712ba636d9d75dad843b5fc64 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 16 Sep 2021 14:01:40 +0800 Subject: [PATCH 039/171] fix order --- .../service/impl/WxPayOrderServiceImpl.java | 22 ++++--------------- 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 393f00292..0a0aa94ba 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -507,22 +507,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { isShare = EnumPayShare.NO; record.setShare(isShare.getCode()); } - - //设置子订单分账金额 - Map childShares = new HashMap(); - OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()); - List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); - if (null != orderList && orderList.size() > 0 ) { - for (WxOrder o : orderList) { - WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); - WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); - int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); - Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; - Integer orderRateAmount = PayUtils.getPayRate(price.getRealPayMent(), payAccount.getRealRate(), true); - childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); - } - record.setChildOrderShare(JSON.toJSONString(childShares)); - } } int sqlRow = wxPayOrderMapper.insert(record); @@ -555,7 +539,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setFailReason("do handleMicroOrderPaySuccess() error."+e.getMessage()); wxPayOrderMapper.updateById(record); } catch (Exception ex) { - logger.error("pay order update error: " + ex.getMessage()); + logger.error("pay order update error: " + ex.getMessage(),e); throw new MallinkException(ErrorCode.DB_FAIL); } throw new MallinkException(ErrorCode.DB_FAIL); @@ -566,15 +550,17 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setFailReason(payResult.getMsg()); wxPayOrderMapper.updateById(record); } catch (Exception e) { - logger.error("pay order update error: " + record.toString()); + logger.error("pay order update error: " + record.toString(),e); throw new MallinkException(ErrorCode.DB_FAIL); } return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), payResult.getMsg(), payResult.getData()); } } catch (RuntimeException e) { + logger.error("pay order update error: " + record.toString(),e); throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); } catch (Exception e) { + logger.error("pay order update error: " + record.toString(),e); throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); } } From 0bed0151d900d6f59124d705002c0dcf2fff975c Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 16 Sep 2021 14:32:36 +0800 Subject: [PATCH 040/171] fix order --- .../java/com/iformall/service/impl/WxPayOrderServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 0a0aa94ba..1329ca3cc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -494,6 +494,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setPayVendor(payWay.getCode()); record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); record.setShare(isShare.getCode()); + record.setComposeOrder(EnumComposeOrder.SINGLE.getCode()); if (isShare == EnumPayShare.YES) { // 分账金额 int iChargeFee = OrderHelper.getMallCharge(record.getPayAmount(), payAccount); @@ -942,6 +943,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); + if (null == record.getComposeOrder()) { + record.setComposeOrder(EnumComposeOrder.SINGLE.getCode()); + } OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(record.getComposeOrder()); WxComposeOrder composeOrder = orderAdapterService.getComposeOrder(record.getOrderId(), record.getTenantId()); List orderList = orderAdapterService.getChildOrders(composeOrder, record.getTenantId()); From c5ffc6f6b9224e4923bcab795c65b8d116fc6f77 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 16 Sep 2021 14:39:33 +0800 Subject: [PATCH 041/171] fix order --- .../java/com/iformall/domain/vo/WxOrderCouponPressVo.java | 4 ++++ .../src/main/resources/mapper/WxOrderGroupMapper.xml | 3 ++- mallinkService/src/main/resources/mapper/WxOrderMapper.xml | 5 ++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponPressVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponPressVo.java index dd72774b9..bd16b9ef4 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponPressVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponPressVo.java @@ -47,4 +47,8 @@ public class WxOrderCouponPressVo extends WxOrder { @io.swagger.annotations.ApiModelProperty(value="商户列表",name="orderPressList") private List orderPressList; + + @io.swagger.annotations.ApiModelProperty(value="组合订单类型EnumComposeOrder",name="composeOrderType") + private Integer composeOrderType; + } diff --git a/mallinkService/src/main/resources/mapper/WxOrderGroupMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderGroupMapper.xml index 5a01072f0..4c55490b3 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderGroupMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderGroupMapper.xml @@ -78,7 +78,8 @@ c.sale_price salePrice,c.cover_img coverImg,g.remain_people remainPeople,c.id couponId,g.expired_date expiredDate,g.status,g.user_id firstUser,u.nick_name nickName,u.avatar_url avatarUrl,o.tenant_id tenantId,o.parent_tenant_id parentTenantId, o.coupon_channel_id couponChannelId,c.press_limit_num pressLimitNum, - (select status from wx_coupon_channel where id=o.coupon_channel_id) couponStatus + (select status from wx_coupon_channel where id=o.coupon_channel_id) couponStatus, + o.compose_order_type composeOrderType from wx_order o left join wx_coupon c on o.product_id=c.id left join wx_order_group g on o.order_group_id=g.id diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 37482d221..3cebd6098 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -897,6 +897,8 @@ + + @@ -944,7 +946,8 @@ o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status, o.create_date,o.update_date,o.press_end_date,o.press_current_num,o.press_current_value, - c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.unit,c.press_limit_num + c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.unit,c.press_limit_num, + o.compose_order_type From b6d10ffcaac01f79f5dc7f35c3c2d6c72b13510e Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 16 Sep 2021 14:59:16 +0800 Subject: [PATCH 042/171] fix order --- .../db/migration/V202109070001__order.sql | 600 +++++++++--------- 1 file changed, 300 insertions(+), 300 deletions(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql index 2f1a458e7..52f9e73cc 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql @@ -213,106 +213,106 @@ ALTER TABLE wx_order_97 ADD COLUMN `coupon_number` int(8) COMMENT '购买 ALTER TABLE wx_order_98 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; ALTER TABLE wx_order_99 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; -ALTER TABLE wx_pay_order_0 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_1 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_2 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_3 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_4 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_5 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_6 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_7 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_8 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_9 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_10 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_11 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_12 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_13 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_14 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_15 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_16 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_17 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_18 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_19 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_20 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_21 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_22 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_23 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_24 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_25 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_26 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_27 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_28 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_29 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_30 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_31 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_32 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_33 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_34 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_35 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_36 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_37 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_38 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_39 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_40 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_41 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_42 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_43 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_44 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_45 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_46 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_47 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_48 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_49 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_50 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_51 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_52 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_53 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_54 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_55 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_56 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_57 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_58 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_59 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_60 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_61 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_62 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_63 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_64 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_65 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_66 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_67 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_68 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_69 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_70 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_71 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_72 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_73 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_74 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_75 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_76 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_77 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_78 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_79 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_80 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_81 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_82 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_83 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_84 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_85 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_86 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_87 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_88 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_89 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_90 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_91 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_92 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_93 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_94 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_95 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_96 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_97 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_98 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; -ALTER TABLE wx_pay_order_99 ADD COLUMN `compose_order` TINYINT(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_0 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_1 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_2 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_3 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_4 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_5 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_6 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_7 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_8 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_9 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_10 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_11 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_12 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_13 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_14 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_15 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_16 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_17 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_18 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_19 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_20 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_21 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_22 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_23 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_24 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_25 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_26 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_27 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_28 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_29 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_30 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_31 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_32 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_33 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_34 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_35 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_36 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_37 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_38 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_39 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_40 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_41 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_42 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_43 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_44 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_45 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_46 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_47 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_48 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_49 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_50 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_51 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_52 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_53 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_54 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_55 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_56 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_57 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_58 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_59 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_60 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_61 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_62 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_63 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_64 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_65 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_66 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_67 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_68 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_69 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_70 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_71 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_72 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_73 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_74 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_75 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_76 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_77 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_78 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_79 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_80 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_81 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_82 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_83 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_84 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_85 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_86 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_87 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_88 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_89 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_90 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_91 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_92 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_93 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_94 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_95 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_96 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_97 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_98 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; +ALTER TABLE wx_pay_order_99 ADD COLUMN `compose_order` int(1) COMMENT '组合订单类型'; CREATE TABLE wx_batch_order_0 LIKE wx_batch_order; CREATE TABLE wx_batch_order_1 LIKE wx_batch_order; @@ -417,207 +417,207 @@ CREATE TABLE wx_batch_order_99 LIKE wx_batch_order; drop table wx_batch_order; -ALTER TABLE wx_coupon_order_0 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_1 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_2 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_3 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_4 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_5 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_6 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_7 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_8 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_9 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_10 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_11 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_12 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_13 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_14 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_15 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_16 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_17 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_18 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_19 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_20 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_21 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_22 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_23 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_24 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_25 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_26 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_27 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_28 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_29 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_30 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_31 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_32 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_33 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_34 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_35 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_36 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_37 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_38 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_39 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_40 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_41 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_42 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_43 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_44 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_45 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_46 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_47 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_48 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_49 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_50 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_51 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_52 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_53 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_54 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_55 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_56 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_57 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_58 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_59 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_60 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_61 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_62 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_63 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_64 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_65 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_66 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_67 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_68 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_69 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_70 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_71 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_72 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_73 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_74 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_75 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_76 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_77 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_78 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_79 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_80 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_81 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_82 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_83 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_84 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_85 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_86 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_87 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_88 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_89 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_90 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_91 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_92 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_93 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_94 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_95 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_96 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_97 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_98 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_coupon_order_99 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_0 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_1 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_2 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_3 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_4 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_5 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_6 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_7 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_8 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_9 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_10 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_11 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_12 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_13 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_14 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_15 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_16 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_17 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_18 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_19 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_20 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_21 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_22 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_23 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_24 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_25 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_26 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_27 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_28 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_29 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_30 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_31 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_32 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_33 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_34 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_35 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_36 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_37 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_38 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_39 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_40 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_41 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_42 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_43 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_44 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_45 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_46 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_47 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_48 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_49 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_50 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_51 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_52 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_53 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_54 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_55 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_56 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_57 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_58 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_59 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_60 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_61 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_62 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_63 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_64 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_65 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_66 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_67 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_68 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_69 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_70 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_71 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_72 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_73 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_74 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_75 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_76 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_77 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_78 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_79 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_80 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_81 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_82 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_83 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_84 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_85 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_86 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_87 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_88 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_89 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_90 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_91 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_92 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_93 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_94 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_95 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_96 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_97 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_98 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_coupon_order_99 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_0 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_1 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_2 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_3 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_4 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_5 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_6 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_7 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_8 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_9 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_10 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_11 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_12 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_13 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_14 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_15 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_16 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_17 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_18 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_19 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_20 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_21 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_22 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_23 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_24 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_25 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_26 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_27 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_28 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_29 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_30 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_31 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_32 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_33 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_34 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_35 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_36 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_37 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_38 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_39 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_40 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_41 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_42 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_43 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_44 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_45 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_46 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_47 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_48 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_49 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_50 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_51 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_52 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_53 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_54 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_55 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_56 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_57 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_58 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_59 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_60 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_61 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_62 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_63 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_64 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_65 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_66 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_67 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_68 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_69 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_70 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_71 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_72 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_73 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_74 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_75 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_76 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_77 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_78 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_79 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_80 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_81 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_82 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_83 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_84 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_85 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_86 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_87 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_88 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_89 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_90 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_91 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_92 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_93 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_94 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_95 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_96 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_97 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_98 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; -ALTER TABLE wx_order_99 ADD COLUMN `compose_order_type` tinyint(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_0 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_1 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_2 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_3 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_4 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_5 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_6 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_7 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_8 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_9 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_10 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_11 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_12 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_13 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_14 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_15 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_16 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_17 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_18 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_19 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_20 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_21 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_22 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_23 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_24 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_25 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_26 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_27 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_28 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_29 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_30 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_31 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_32 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_33 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_34 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_35 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_36 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_37 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_38 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_39 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_40 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_41 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_42 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_43 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_44 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_45 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_46 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_47 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_48 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_49 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_50 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_51 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_52 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_53 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_54 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_55 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_56 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_57 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_58 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_59 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_60 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_61 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_62 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_63 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_64 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_65 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_66 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_67 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_68 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_69 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_70 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_71 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_72 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_73 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_74 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_75 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_76 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_77 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_78 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_79 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_80 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_81 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_82 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_83 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_84 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_85 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_86 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_87 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_88 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_89 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_90 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_91 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_92 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_93 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_94 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_95 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_96 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_97 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_98 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; +ALTER TABLE wx_order_99 ADD COLUMN `compose_order_type` int(1) not null default 0 COMMENT '组合订单类型'; ALTER TABLE wx_coupon_order_0 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; ALTER TABLE wx_coupon_order_1 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号'; From 86b7f6b155a8561b9467aa9bd2e84e519584d677 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 16 Sep 2021 15:33:06 +0800 Subject: [PATCH 043/171] fix order --- .../java/com/iformall/controller/WxCouponOrderController.java | 3 ++- .../com/iformall/service/impl/WxCouponOrderServiceImpl.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 980031e13..7532e6f81 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -322,7 +322,8 @@ public class WxCouponOrderController extends BaseController { return new ResultData(couponOrder); } - + + @ApiOperation(value = "根据couponOrderId查询接口", notes = "{\"couponOrderId\":\"string\"}") @PostMapping("/findById") public ResultData findById(@RequestBody Map paramMap) { 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 4045a8f3b..d55cea112 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -572,14 +572,14 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { if (EnumComposeOrder.isSingle(couponOrder.getComposeOrderType())) { try { // 核销分账 - shareAfterVerify(couponOrder, bUser.getMerchantId(),couponOrder.getPayVendor(),true); + shareAfterVerify(couponOrder, bUser.getMerchantId(),couponOrder.getPayVendor(),false); } catch (Exception e) { logger.error("核销记账失败"+e.getMessage(),e); } }else { try { // 核销分账 - shareAfterVerify(couponOrder, bUser.getMerchantId(),couponOrder.getPayVendor(),false); + shareAfterVerify(couponOrder, bUser.getMerchantId(),couponOrder.getPayVendor(),true); } catch (Exception e) { logger.error("核销记账失败"+e.getMessage(),e); } From c041f696b9cc16c8d01a3ab77a9c0260c267148a Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 16 Sep 2021 18:12:36 +0800 Subject: [PATCH 044/171] fix order --- .../controller/WxPressOrderController.java | 1 + .../impl/WxCouponOrderServiceImpl.java | 24 ++++--------------- .../service/impl/WxOrderServiceImpl.java | 2 +- .../service/impl/WxPayOrderServiceImpl.java | 10 ++++---- .../service/order/OrderAdapterService.java | 2 +- .../order/impl/SingleOrderAdapterService.java | 16 +++++++------ .../batch/BaseBatchOrderAdapterService.java | 4 ++-- .../service/order/util/OrderHelper.java | 8 +++++++ 8 files changed, 30 insertions(+), 37 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java index 9cf63bf74..22a61dd54 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java @@ -223,6 +223,7 @@ public class WxPressOrderController extends BaseController { orderUpdatePress.updateTenantInfo(order); // 保存订单 wxOrderService.saveOrUpdate(orderUpdatePress); + // 发送砍价成功消息 if(index.equals(wxCouponCVo.getPressLimitNum())) { wxOrderPressService.sendPressComplateMsg(orderUpdatePress); 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 d55cea112..97207d1a0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -769,9 +769,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { Integer realSubsidyFee = subsidyNum - iSubChargeFee; WxOrder order = wxOrderMapper.selectById(couponOrder.getOrderId(), couponOrder.getTenantId()); - WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, order.getOrderGroupId(), order.getCouponNumber()); - int iPriceChargeFee = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); - Integer realPayment = price.getRealPayMent() - iPriceChargeFee; + int iPriceChargeFee = OrderHelper.getMallCharge(coupon.getSalePrice(), payAccount); + Integer realPayment = coupon.getSalePrice() - iPriceChargeFee; WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); merchantSubsidy.setId(idWorker.nextId()); @@ -781,8 +780,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { merchantSubsidy.setMerchantId(merchantId); merchantSubsidy.setCouponOrderId(couponOrder.getId()); merchantSubsidy.setCouponType(couponOrder.getCouponType()); - merchantSubsidy.setOrderPayment(price.getRealPayMent()); - merchantSubsidy.setReceiverPayment(price.getRealPayMent()); + merchantSubsidy.setOrderPayment(coupon.getPrice()); + merchantSubsidy.setReceiverPayment(coupon.getSalePrice()); merchantSubsidy.setRealPayment(realPayment); merchantSubsidy.setSubsidy(subsidyNum); merchantSubsidy.setRealSubsidy(realSubsidyFee); @@ -1526,21 +1525,6 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { payOrder.setShare(EnumPayShare.NO.getCode()); } - //设置子订单分账金额 - Map childShares = new HashMap(); - OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()); - List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); - if (null != orderList && orderList.size() > 0) { - for (WxOrder o : orderList) { - WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); - WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); - int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); - Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; - Integer orderRateAmount = PayUtils.getPayRate(price.getRealPayMent(), payAccount.getRealRate(), true); - childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); - } - payOrder.setChildOrderShare(JSON.toJSONString(childShares)); - } } payOrder.setPayFrom(EnumPayFrom.INSIDE_B.getCode()); payOrder.setPosPayOrderId(couponOrder.getId()); 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 fd9eff29d..64ef5eaa6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2133,7 +2133,7 @@ public class WxOrderServiceImpl implements WxOrderService { // 4. 保存订单 Long orderNumber; // 4.1 券价格 - WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrderPrice(coupon, isPress, orderGroupId, couponNumber); + WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildCouponOrderPrice(coupon, isPress, orderGroupId, couponNumber); Integer orderStatus = OrderHelper.getOrderStatusWxCoupon(coupon, orderGroupId); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 1329ca3cc..cef21235c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -392,12 +392,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); if(null != orderList && orderList.size() > 0) { for (WxOrder o : orderList) { - WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); - WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); - int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); - Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; - Integer orderRateAmount = OrderHelper.getRateAmount(price.getRealPayMent(),orderMallCharge, payAccount); - childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); + int orderMallCharge = OrderHelper.getMallCharge(o.getPayment(), payAccount); + Integer orderShareAmount = o.getPayment() - orderMallCharge; + Integer orderRateAmount = OrderHelper.getRateAmount(o.getPayment(),orderMallCharge, payAccount); + childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(o.getPayment(), orderShareAmount, orderRateAmount)); } record.setChildOrderShare(JSON.toJSONString(childShares)); } diff --git a/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java index b3e8f7f87..618a01b8a 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java @@ -37,7 +37,7 @@ public interface OrderAdapterService { * @param coupon * @return */ - WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber); + WxComposeChildOrderPrice getChildCouponOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber); /** * 计算每一个子订单的补贴 diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java index d30bef3b8..b9c67c996 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java @@ -41,6 +41,7 @@ public class SingleOrderAdapterService implements OrderAdapterService { public boolean isOneNumberOneOrder() { return true; } + @Override public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { @@ -49,6 +50,14 @@ public class SingleOrderAdapterService implements OrderAdapterService { corder.setSingleOrder(wxOrder); return corder; } + + @Override + public WxComposeChildOrderPrice getChildCouponOrderPrice(WxCoupon coupon, boolean isPress, Long orderGroupId, + Integer couponNumber) { + Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId); + return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId()); + } + @Override public List getChildOrders(WxComposeOrder composeOrder, String tenantId) { @@ -65,13 +74,6 @@ public class SingleOrderAdapterService implements OrderAdapterService { wxOrderMapper.updateCUserId(order); } - @Override - public WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon, boolean isPress, Long orderGroupId, - Integer couponNumber) { - Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId); - return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId()); - } - @Override public Integer calcuteChildOrderSubsidy(WxCoupon coupon) { return coupon.getSubsidyNum(); diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java index c8e885f08..b18e387c6 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java @@ -39,7 +39,7 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic WxOrderMapper wxOrderMapper; @Override - public WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber) { + public WxComposeChildOrderPrice getChildCouponOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber) { Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId); return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId()); } @@ -53,7 +53,7 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic int payment = 0; for (OrderComposeSaveDto ocsd : orderSave) { boolean isPress = ocsd.getSignleOrder().isPressOrder(); - WxComposeChildOrderPrice price = getChildOrderPrice(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(), ocsd.getCount()); + WxComposeChildOrderPrice price = getChildCouponOrderPrice(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(), ocsd.getCount()); payment = payment+price.getRealPayMent(); } order.setPayment(payment); diff --git a/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java b/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java index 044c11e8d..878c774e8 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java @@ -8,6 +8,14 @@ import com.iformall.utils.PayUtils; public class OrderHelper { + /** + * 砍价初始金额是price, 砍价完成会更新成salePrice + * + * @param coupon + * @param isPress + * @param orderGroupId + * @return + */ public static int getCouponPerPayment(WxCoupon coupon,boolean isPress,Long orderGroupId) { // 4.1 券价格 int payment = coupon.getSalePrice(); From 79790a81dc9907141f3ef15efef1ab8f40e75108 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Fri, 17 Sep 2021 11:23:57 +0800 Subject: [PATCH 045/171] fix order --- .../controller/app/WxAppinfoController.java | 7 ++++--- .../schedule/CouponExpiringSchedule.java | 2 +- .../com/iformall/mapper/WxCouponMapper.java | 3 ++- .../main/resources/mapper/WxCouponMapper.xml | 20 +++++++++++++------ 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/app/WxAppinfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/app/WxAppinfoController.java index fe4003535..951a101ec 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/app/WxAppinfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/app/WxAppinfoController.java @@ -10,6 +10,7 @@ import com.iformall.domain.po.WxMerchant; import com.iformall.enums.EnumPayWay; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxCouponChannelMapper; +import com.iformall.mapper.WxCouponMapper; import com.iformall.mapper.WxMerchantMapper; import com.iformall.service.QrCodeService; import com.iformall.utils.Constant; @@ -41,6 +42,9 @@ public class WxAppinfoController extends BaseController { @Autowired private WxCouponChannelMapper wxCouponChannelMapper; + + @Autowired + WxCouponMapper wxCouponMapper; ExecutorService fixedThreadPool = Executors.newFixedThreadPool(150); @@ -135,8 +139,5 @@ public class WxAppinfoController extends BaseController { } } - - - } diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponExpiringSchedule.java index c7052418a..751b0ac7e 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponExpiringSchedule.java @@ -53,7 +53,7 @@ public class CouponExpiringSchedule { for (WxMall mall : malls) { try { wxCouponMapper.offExpiriedCouponByValidDate(mall.getTenantId()); - wxCouponMapper.offExpiriedCouponByMerchantStatus(mall.getTenantId()); + wxCouponMapper.offExpiriedCouponByMerchantStatus(mall.getTenantId(),wxCouponMapper.getValidMerchantProductIds(mall.getTenantId())); wxCouponSendMapper.offExpiriedCouponSendByCouponStatus(mall.getTenantId()); wxCouponChannelMapper.offExpiriedCouponChannelByCouponStatus(mall.getTenantId()); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java index 7ab9e250d..104d13c02 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java @@ -31,7 +31,8 @@ public interface WxCouponMapper extends CommonMapper { void offExpiriedCouponByValidDate(@Param("tenantId")String tenantId); - void offExpiriedCouponByMerchantStatus(@Param("tenantId")String tenantId); + List getValidMerchantProductIds(@Param("tenantId")String tenantId); + void offExpiriedCouponByMerchantStatus(@Param("tenantId")String tenantId,@Param("validIds")List validIds); /** * 查询时间段内销售金额 diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 5351d42de..557001081 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -713,16 +713,24 @@ where status = 0 and tenant_id =#{tenantId} and valid_type = 1 and valid_end_date < now() - + update wx_coupon c SET c.status = 1, c.update_date = now() - where c.status = 0 and c.tenant_id =#{tenantId} and - (select count(*) from wx_coupon_merchant cm, wx_merchant m + where c.status = 0 and c.tenant_id =#{tenantId} + + and c.id not in + + #{idItem} + + + + + select ct.id as id,wc.id as couponId, - wc.tenant_id,wc.parent_tenant_id,wc.`type`,wc.`cover_img`,wc.`cover_picture`,wc.`detail_picture`,wc.`title`,wc.`sub_title`,wc.`sale_price`,wc.`use_price`,wc.`use_limit_rule`,wc.`use_limit_quantity`,wc.`send_type`, + wc.tenant_id,wc.parent_tenant_id,wc.`type`,wc.`cover_img`,wc.`cover_picture`,wc.`detail_picture`,wc.`title`,wc.`sub_title`,wc.`sale_price`,wc.`freight_price`,wc.`use_price`,wc.`use_limit_rule`,wc.`use_limit_quantity`,wc.`send_type`, wc.`valid_type`,wc.`valid_start_date`,wc.`valid_end_date`,wc.pick_start_date,wc.pick_end_date,wc.`valid_days`,wc.`detail`,wc.`price`,wc.tail_price,wc.orig_price,wc.`unit`,wc.`remain_inventory`,wc.`inventory`, wc.`remark`,wc.`status`,wc.`create_date`,wc.`update_date`,wc.`business`,wc.`sub_business`,wc.`support_transfer`,wc.`subsidy_num`,wc.`subsidy_type`, wc.`press_limit_num`, wc.`press_limit_hours`, wc.`auto_refund`,wc.`credit_price`,wc.`credit_refund`,wc.`conditions`, From 7cdc212b19fa917c6962f03f1c34b7c4dd05d615 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 23 Sep 2021 14:30:33 +0800 Subject: [PATCH 059/171] add debug log --- .../interceptor/RequestInterceptor.java | 2 +- .../TestControllerReturnAspect.java | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java diff --git a/mallinkCApi/src/main/java/com/iformall/interceptor/RequestInterceptor.java b/mallinkCApi/src/main/java/com/iformall/interceptor/RequestInterceptor.java index ff7e81880..916338575 100644 --- a/mallinkCApi/src/main/java/com/iformall/interceptor/RequestInterceptor.java +++ b/mallinkCApi/src/main/java/com/iformall/interceptor/RequestInterceptor.java @@ -118,6 +118,6 @@ public class RequestInterceptor extends HandlerInterceptorAdapter { @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - logger.debug("afterCompletion"); + logger.debug("afterCompletion:"); } } diff --git a/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java b/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java new file mode 100644 index 000000000..2370d530d --- /dev/null +++ b/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java @@ -0,0 +1,52 @@ +package com.iformall.interceptor; + +import javax.servlet.http.HttpServletRequest; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import com.alibaba.fastjson.JSON; + +import lombok.extern.slf4j.Slf4j; + + +/** + * 测试所有controler请求返回信息输出 + * @author alascor + * + */ +@Aspect +@Configuration +@Slf4j +public class TestControllerReturnAspect { + + + @Pointcut("execution(* com.iformall.controller.*Controller.*(..))") + public void excudeService() { + } + + @Around("excudeService()") + public Object doAround(ProceedingJoinPoint pjp) throws Throwable { + RequestAttributes ra = RequestContextHolder.getRequestAttributes(); + ServletRequestAttributes sra = (ServletRequestAttributes) ra; + HttpServletRequest request = sra.getRequest(); + + String method = request.getMethod(); + String uri = request.getRequestURI(); + String paraString = JSON.toJSONString(request.getParameterMap()); + log.info("***************************************************"); + log.info("请求开始, URI: {}, method: {}, params: {}", uri, method, paraString); + + // result的值就是被拦截方法的返回值 + Object result = pjp.proceed(); + log.info("请求结束,controller的返回值是 " + JSON.toJSONString(result)); + return result; + } + +} From 874009b64ca6cbe004a048ca247f4e4758ad9167 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 23 Sep 2021 14:51:21 +0800 Subject: [PATCH 060/171] add debug log --- .../TestControllerReturnAspect.java | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java b/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java index 2370d530d..bda74aff6 100644 --- a/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java +++ b/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java @@ -1,5 +1,8 @@ package com.iformall.interceptor; +import java.io.BufferedReader; +import java.io.IOException; + import javax.servlet.http.HttpServletRequest; import org.aspectj.lang.ProceedingJoinPoint; @@ -40,13 +43,29 @@ public class TestControllerReturnAspect { String method = request.getMethod(); String uri = request.getRequestURI(); String paraString = JSON.toJSONString(request.getParameterMap()); - log.info("***************************************************"); - log.info("请求开始, URI: {}, method: {}, params: {}", uri, method, paraString); + String requestBody = getBodyRequest(request); + //log.info("***************************************************"); + //log.info("请求开始, URI: {}, method: {}, params: {}", uri, method, paraString); // result的值就是被拦截方法的返回值 Object result = pjp.proceed(); - log.info("请求结束,controller的返回值是 " + JSON.toJSONString(result)); + log.info("请求结束,URI: {}, method: {}, params: {},requestBody:{}. 返回值:{} " ,uri, method, paraString,requestBody, JSON.toJSONString(result)); return result; } + private String getBodyRequest(HttpServletRequest request) throws IOException { + // 直接从HttpServletRequest的Reader流中获取RequestBody + BufferedReader reader = request.getReader(); + StringBuilder builder = new StringBuilder(); + String line = reader.readLine(); + while(line != null){ + builder.append(line); + line = reader.readLine(); + } + reader.close(); + + String reqBody = builder.toString(); + return reqBody; + } + } From bbfbbbcd7ade6e13e8d4ae2f9ff7c4f4b5474d12 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 23 Sep 2021 15:07:22 +0800 Subject: [PATCH 061/171] fix debug --- .../com/iformall/interceptor/TestControllerReturnAspect.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java b/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java index bda74aff6..958c19fa6 100644 --- a/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java +++ b/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java @@ -49,7 +49,7 @@ public class TestControllerReturnAspect { // result的值就是被拦截方法的返回值 Object result = pjp.proceed(); - log.info("请求结束,URI: {}, method: {}, params: {},requestBody:{}. 返回值:{} " ,uri, method, paraString,requestBody, JSON.toJSONString(result)); + log.info("开发调试请求结果日志,生产请关闭!!!!>>>>>>>>请求结束,URI: {}, method: {}, params: {},requestBody:{}. 返回值:{} " ,uri, method, paraString,requestBody, JSON.toJSONString(result)); return result; } From eb2797cee6da0ba2ed1fb2d26b041428b0e611fc Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 23 Sep 2021 18:29:45 +0800 Subject: [PATCH 062/171] fix debug log --- .../iformall/interceptor/TestControllerReturnAspect.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java b/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java index 958c19fa6..07e5d9259 100644 --- a/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java +++ b/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java @@ -24,17 +24,17 @@ import lombok.extern.slf4j.Slf4j; * @author alascor * */ -@Aspect -@Configuration +//@Aspect +//@Configuration @Slf4j public class TestControllerReturnAspect { - @Pointcut("execution(* com.iformall.controller.*Controller.*(..))") + //@Pointcut("execution(* com.iformall.controller.*Controller.*(..))") public void excudeService() { } - @Around("excudeService()") + //@Around("excudeService()") public Object doAround(ProceedingJoinPoint pjp) throws Throwable { RequestAttributes ra = RequestContextHolder.getRequestAttributes(); ServletRequestAttributes sra = (ServletRequestAttributes) ra; From e8a68cafb3b0dfb78f66ff240462edfd94e992e6 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 23 Sep 2021 18:39:23 +0800 Subject: [PATCH 063/171] wx_order add ShopingType --- .../controller/market/WxOrderController.java | 11 ++- .../WxCouponPasswordController.java | 4 +- .../domain/dto/OrderComposeSaveDto.java | 5 ++ .../enums/EnumOrderShopingStatus.java | 43 +++++++++++ .../iformall/enums/EnumOrderShopingType.java | 39 ++++++++++ .../com/iformall/service/WxOrderService.java | 16 ++-- .../service/impl/WxOrderServiceImpl.java | 73 ++++++++++--------- 7 files changed, 140 insertions(+), 51 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingType.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java index c08129702..a44fd7e08 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java @@ -15,10 +15,7 @@ import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.vo.WxMerchantSubsidyVo; import com.iformall.domain.vo.WxOrderQueryVo; -import com.iformall.enums.EnumCouponChannelStatus; -import com.iformall.enums.EnumCouponChannelType; -import com.iformall.enums.EnumPayWay; -import com.iformall.enums.EnumUserType; +import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxCUserService; @@ -186,11 +183,13 @@ public class WxOrderController extends BaseController { if (coupon == null) { return new ResultData(ErrorCode.COUPON_IS_EMPTY); } - if (!wxOrderService.checkCouponIsFree(coupon)) { + if (!wxOrderService.checkCouponIsFree(coupon,null)) { return new ResultData(ErrorCode.COUPON_IS_NOT_FREE); } // 免费券 - order = wxOrderService.saveFreeOrderForCoupon(null,user, coupon, 1,orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,EnumPayWay.PAY_WAY_NOT_UNPAY_CREDIT); + order = wxOrderService.saveFreeOrderForCoupon(null,user, coupon, 1, + orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,EnumPayWay.PAY_WAY_NOT_UNPAY_CREDIT, + EnumOrderShopingType.ONLINE_PURCHASE.getCode(),null); return new ResultData(order); } catch (MallinkException e) { logger.error(e.getMessage()); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java index 73ed43c9f..06e89bbe6 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java @@ -97,7 +97,9 @@ public class WxCouponPasswordController extends BaseController { // 3. 领取free coupon try { - WxOrder order = orderService.saveFreeOrderForCoupon(null,member, coupon, 1,null, formId, couponPassword.getId(),payWay); + WxOrder order = orderService.saveFreeOrderForCoupon(null,member, coupon, 1, + null, formId, couponPassword.getId(),payWay, + EnumOrderShopingType.ONLINE_PURCHASE.getCode(),null); } catch (MallinkException e) { setCouponPasswordStatus(couponPassword, EnumCouponPasswordStatus.getEnum(pwdStatus)); logger.error(e.getMessage(),e); diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java index aeaa052a6..5fd68fa13 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java @@ -1,5 +1,6 @@ package com.iformall.domain.dto; +import com.iformall.domain.po.UserBasicInfoAddress; import lombok.Data; import java.io.Serializable; @@ -14,6 +15,10 @@ public class OrderComposeSaveDto implements Serializable { OrderSaveDto signleOrder;//单个券/实物商品 int count;//购买数量 + + Integer shippingType = 0;//配送类型 + + UserBasicInfoAddress address;//配送地址 WxCoupon wxCoupon; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java new file mode 100644 index 000000000..463806a79 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java @@ -0,0 +1,43 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ + +public enum EnumOrderShopingStatus { + + ONLINE_PURCHASE(0,"线上购买"),//不需要发货 + + WAIT_SELF_MENTION(14,"已备货,待自提"), + ALREADY_SELF_MENTION(15,"已自提"), + + WAIT_DISTRIBUTION(24,"已发货,待签收"), + ALREADY_DISTRIBUTION(25,"已签收") + ; + + public static EnumOrderShopingStatus getEnum(Integer code) { + for (EnumOrderShopingStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumOrderShopingStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingType.java b/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingType.java new file mode 100644 index 000000000..145755007 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingType.java @@ -0,0 +1,39 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ + +public enum EnumOrderShopingType { + + ONLINE_PURCHASE(0,"线上购买"), + SELF_MENTION(1,"自提"), + DISTRIBUTION(2,"配送") + ; + + public static EnumOrderShopingType getEnum(Integer code) { + for (EnumOrderShopingType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumOrderShopingType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 58cf67c6c..7159cafab 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -10,13 +10,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.dto.OrderSaveDto; -import com.iformall.domain.po.WxCUserBasicInfo; -import com.iformall.domain.po.WxBatchOrder; -import com.iformall.domain.po.WxCoupon; -import com.iformall.domain.po.WxCouponOrder; -import com.iformall.domain.po.WxMerchant; -import com.iformall.domain.po.WxMerchantBUser; -import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxCouponSendVo; import com.iformall.domain.vo.WxOrderCouponPressVo; @@ -212,13 +206,15 @@ public interface WxOrderService { * 订单处理 * 1. 检查coupon是否免费 */ - boolean checkCouponIsFree(WxCoupon coupon); + boolean checkCouponIsFree(WxCoupon coupon,Integer shippingType); // 2. 创建免费订单, 领取 couponOrder - WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay); + WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder, WxCUserBasicInfo user, WxCoupon coupon, int couponNumber, + Long couponChannelId, String formId, Long couponPasswordId, EnumPayWay payWay, + Integer shippingType, UserBasicInfoAddress address); // 3. 创建有价订单 - WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, boolean isPress, Long orderGroupId, String formId); + WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,OrderComposeSaveDto orderdto); /** * 下订单成功后处理 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 2c6282c34..7a301a852 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -16,6 +16,7 @@ import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.iformall.domain.po.*; import com.iformall.domain.vo.*; import com.iformall.enums.*; import com.iformall.service.*; @@ -50,24 +51,6 @@ import com.iformall.common.ResultData; import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.dto.WxSharingOrderDto; -import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxBatchOrder; -import com.iformall.domain.po.WxCUserBasicInfo; -import com.iformall.domain.po.WxCardInfo; -import com.iformall.domain.po.WxCoupon; -import com.iformall.domain.po.WxCouponChannel; -import com.iformall.domain.po.WxCouponMerchant; -import com.iformall.domain.po.WxCouponOrder; -import com.iformall.domain.po.WxCouponPassword; -import com.iformall.domain.po.WxCouponSend; -import com.iformall.domain.po.WxCreditHistory; -import com.iformall.domain.po.WxMerchant; -import com.iformall.domain.po.WxMerchantBUser; -import com.iformall.domain.po.WxOrder; -import com.iformall.domain.po.WxOrderGroup; -import com.iformall.domain.po.WxOrderPress; -import com.iformall.domain.po.WxPayAccount; -import com.iformall.domain.po.WxPayOrder; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.msg.FmInsideOrderSuccessMsg; import com.iformall.exception.MallinkException; @@ -2028,9 +2011,12 @@ public class WxOrderServiceImpl implements WxOrderService { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); // 是否砍价 WxOrder order = null; - if (checkCouponIsFree(coupon)) { + if (checkCouponIsFree(coupon,orderdto.getShippingType())) { // 免费券 - order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), null,payWay); + order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber, + orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), + null,payWay, + orderdto.getShippingType(),orderdto.getAddress()); if (order != null) { // 6. 下订单完成,发送内部消息 // 下订单完成,发送内部消息 @@ -2043,7 +2029,7 @@ public class WxOrderServiceImpl implements WxOrderService { } } else { // 有价券 - order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId()); + order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto); } // couponActionLog // try { @@ -2059,13 +2045,18 @@ public class WxOrderServiceImpl implements WxOrderService { @Override - public boolean checkCouponIsFree(WxCoupon coupon) { - return coupon.getSalePrice() == 0; + public boolean checkCouponIsFree(WxCoupon coupon,Integer shippingType) { + if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(shippingType)){ + return coupon.getSalePrice().intValue() + coupon.getFreightPrice().intValue() == 0; + } + return coupon.getSalePrice().intValue() == 0; } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override - public WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay) { + public WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, + Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay, + Integer shippingType, UserBasicInfoAddress address) { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); // 减库存操作 String couponIdStr = String.valueOf(coupon.getId()); @@ -2089,6 +2080,11 @@ public class WxOrderServiceImpl implements WxOrderService { record.setPayment(0); record.setFormId(formId); record.setOrderGroupId(0L); + + record.setShippingType(shippingType); + if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(shippingType)){ + record.setShippingAddress(JSON.toJSONString(address)); + } if (null != composeOrder) { record.setComposeOrderId(composeOrder.getMainOrderId()); if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) { @@ -2120,7 +2116,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, boolean isPress, Long orderGroupId, String formId) { + public WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,OrderComposeSaveDto orderdto) { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); String couponIdStr = String.valueOf(coupon.getId()); // 3. 减库存操作 @@ -2138,17 +2134,26 @@ public class WxOrderServiceImpl implements WxOrderService { // 4. 保存订单 Long orderNumber; // 4.1 券价格 - WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildCouponOrderPrice(coupon, isPress, orderGroupId, couponNumber); + WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()) + .getChildCouponOrderPrice(coupon, orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), couponNumber); - Integer orderStatus = OrderHelper.getOrderStatusWxCoupon(coupon, orderGroupId); + Integer orderStatus = OrderHelper.getOrderStatusWxCoupon(coupon, orderdto.getSignleOrder().getOrderGroupId()); // 4.2 保存订单 WxOrder record = new WxOrder(); record.setType(orderType); - record.setCouponChannelId(couponChannelId); - record.setOrderGroupId(orderGroupId); - record.setFormId(formId); - record.setPayment(price.getRealPayMent()); + record.setCouponChannelId(orderdto.getSignleOrder().getCouponChannelId()); + record.setOrderGroupId(orderdto.getSignleOrder().getOrderGroupId()); + record.setFormId(orderdto.getSignleOrder().getFormId()); + + record.setPayment(price.getRealPayMent()+coupon.getFreightPrice());//加运费 + record.setFreightPrice(coupon.getFreightPrice()); + + record.setShippingType(orderdto.getShippingType()); + if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(orderdto.getShippingType())){ + record.setShippingAddress(JSON.toJSONString(orderdto.getAddress())); + } + record.setOrderStatus(orderStatus); record.setComposeOrderId(composeOrder.getMainOrderId()); if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) { @@ -2159,13 +2164,13 @@ public class WxOrderServiceImpl implements WxOrderService { record.setCouponNumber(couponNumber); try { - orderNumber = proxy.saveNoFreeOrder(record, user, coupon, isPress); + orderNumber = proxy.saveNoFreeOrder(record, user, coupon, orderdto.getSignleOrder().isPressOrder()); } catch (Exception e) { logger.error("保存订单:" + e.getMessage(),e); throw new MallinkException(ErrorCode.ORDER_SAVE_ERR.getCode(),"["+coupon.getTitle()+"]订单保存错误,"+e.getMessage()); } - if (isPress) { + if (orderdto.getSignleOrder().isPressOrder()) { // 5. 第一次砍价 try { proxy.firstPress(record, user, coupon, orderNumber); @@ -2590,7 +2595,7 @@ public class WxOrderServiceImpl implements WxOrderService { } } - if (!checkCouponIsFree(coupon)) { + if (!checkCouponIsFree(coupon,null)) { // 有价,拼团检查 if (isOrderGroup(orderSaveDto.getOrderGroupId())) { checkOrderGroup(wxCUserBasicInfo, orderSaveDto.getOrderGroupId(),coupon,premsg); From 81c100af9d4ab7d2c0d0885da520305d1cd43013 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Fri, 24 Sep 2021 09:50:09 +0800 Subject: [PATCH 064/171] fix test --- .../java/com/iformall/service/impl/WxOrderServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 2c6282c34..7c9ac30c8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2107,7 +2107,8 @@ public class WxOrderServiceImpl implements WxOrderService { logger.error("下订单错误:" + e.getMessage(),e); throw new MallinkException(ErrorCode.ORDER_SAVE_ERR.getCode(),"["+coupon.getTitle()+"]保存订单错误."+e.getMessage()); } - + Integer aaa = null; + System.out.println(aaa.intValue()); // 5. 创建couponOrder try { proxy.createCouponOrder(record, user, coupon, couponPasswordId,payWay,null,null); From 9d9eae78be8dc1afb473a4946a06f6143853dd90 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 24 Sep 2021 09:51:54 +0800 Subject: [PATCH 065/171] wx_order add ShopingStatus --- .../iformall/enums/EnumOrderShopingStatus.java | 6 ++++-- .../service/impl/WxOrderServiceImpl.java | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java index 463806a79..71b1ce46c 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java @@ -9,11 +9,13 @@ public enum EnumOrderShopingStatus { ONLINE_PURCHASE(0,"线上购买"),//不需要发货 + READY_SELF_MENTION(10,"自提商品准备中"), WAIT_SELF_MENTION(14,"已备货,待自提"), ALREADY_SELF_MENTION(15,"已自提"), - WAIT_DISTRIBUTION(24,"已发货,待签收"), - ALREADY_DISTRIBUTION(25,"已签收") + READY_DISTRIBUTION(20,"配送商品准备中"), + WAIT_DISTRIBUTION(24,"已发货,待收货"), + ALREADY_DISTRIBUTION(25,"已收货") ; public static EnumOrderShopingStatus getEnum(Integer code) { 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 7a301a852..4855d7f41 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1065,6 +1065,15 @@ public class WxOrderServiceImpl implements WxOrderService { } couponOrder.setComposeOrderType(order.getComposeOrderType()); couponOrder.setComposeOrderId(order.getComposeOrderId()); + + couponOrder.setFreightPrice(order.getFreightPrice()); + couponOrder.setShippingType(order.getShippingType()); + couponOrder.setShippingAddress(order.getShippingAddress()); + if(couponOrder.getShippingType() != null && EnumOrderShopingType.SELF_MENTION.getCode().equals(couponOrder.getShippingType())){ + couponOrder.setShippingStatus(EnumOrderShopingStatus.READY_SELF_MENTION.getCode()); + }else if(couponOrder.getShippingType() != null && EnumOrderShopingType.DISTRIBUTION.getCode().equals(couponOrder.getShippingType())){ + couponOrder.setShippingStatus(EnumOrderShopingStatus.READY_DISTRIBUTION.getCode()); + } //有支付信息,从支付信息中取渠道 if (null != payOrder) { couponOrder.setPayVendor(payOrder.getPayVendor()); @@ -1197,6 +1206,15 @@ public class WxOrderServiceImpl implements WxOrderService { couponOrder.setCouponPrice(order.getPayment()); couponOrder.setComposeOrderType(order.getComposeOrderType()); couponOrder.setComposeOrderId(order.getComposeOrderId()); + + couponOrder.setFreightPrice(order.getFreightPrice()); + couponOrder.setShippingType(order.getShippingType()); + couponOrder.setShippingAddress(order.getShippingAddress()); + if(couponOrder.getShippingType() != null && EnumOrderShopingType.SELF_MENTION.getCode().equals(couponOrder.getShippingType())){ + couponOrder.setShippingStatus(EnumOrderShopingStatus.READY_SELF_MENTION.getCode()); + }else if(couponOrder.getShippingType() != null && EnumOrderShopingType.DISTRIBUTION.getCode().equals(couponOrder.getShippingType())){ + couponOrder.setShippingStatus(EnumOrderShopingStatus.READY_DISTRIBUTION.getCode()); + } wxCouponOrderMapper.insert(couponOrder); /// 储值卡信息添加 From 33fb22c6db7fa0ec62a5b7c477ed4c645c0be8b0 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Fri, 24 Sep 2021 10:23:27 +0800 Subject: [PATCH 066/171] fix test --- .../com/iformall/service/impl/WxOrderServiceImpl.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) 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 3821cd378..d810e5dac 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2031,10 +2031,8 @@ public class WxOrderServiceImpl implements WxOrderService { WxOrder order = null; if (checkCouponIsFree(coupon,orderdto.getShippingType())) { // 免费券 - order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber, - orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), - null,payWay, - orderdto.getShippingType(),orderdto.getAddress()); + order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber,orderdto.getSignleOrder().getCouponChannelId(), + orderdto.getSignleOrder().getFormId(),null,payWay,orderdto.getShippingType(),orderdto.getAddress()); if (order != null) { // 6. 下订单完成,发送内部消息 // 下订单完成,发送内部消息 @@ -2121,8 +2119,6 @@ public class WxOrderServiceImpl implements WxOrderService { logger.error("下订单错误:" + e.getMessage(),e); throw new MallinkException(ErrorCode.ORDER_SAVE_ERR.getCode(),"["+coupon.getTitle()+"]保存订单错误."+e.getMessage()); } - Integer aaa = null; - System.out.println(aaa.intValue()); // 5. 创建couponOrder try { proxy.createCouponOrder(record, user, coupon, couponPasswordId,payWay,null,null); From e89eeab87c560c80850916972a0d6891b8bb8c9f Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Fri, 24 Sep 2021 10:58:35 +0800 Subject: [PATCH 067/171] fix order --- .../controller/market/WxOrderController.java | 2 +- .../WxCouponPasswordController.java | 2 +- .../controller/WxOrderController.java | 8 +-- .../com/iformall/service/WxOrderService.java | 8 +-- .../service/impl/WxGameServiceImpl.java | 2 +- .../service/impl/WxOrderServiceImpl.java | 52 ++++++++++--------- 6 files changed, 38 insertions(+), 36 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java index a44fd7e08..2822316d3 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java @@ -187,7 +187,7 @@ public class WxOrderController extends BaseController { return new ResultData(ErrorCode.COUPON_IS_NOT_FREE); } // 免费券 - order = wxOrderService.saveFreeOrderForCoupon(null,user, coupon, 1, + order = wxOrderService.saveFreeOrderForCoupon(false,null,user, coupon, 1, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,EnumPayWay.PAY_WAY_NOT_UNPAY_CREDIT, EnumOrderShopingType.ONLINE_PURCHASE.getCode(),null); return new ResultData(order); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java index 06e89bbe6..89c1b2e97 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java @@ -97,7 +97,7 @@ public class WxCouponPasswordController extends BaseController { // 3. 领取free coupon try { - WxOrder order = orderService.saveFreeOrderForCoupon(null,member, coupon, 1, + WxOrder order = orderService.saveFreeOrderForCoupon(false,null,member, coupon, 1, null, formId, couponPassword.getId(),payWay, EnumOrderShopingType.ONLINE_PURCHASE.getCode(),null); } catch (MallinkException e) { diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index e97e87f0f..32200326f 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -73,7 +73,7 @@ public class WxOrderController extends BaseController { return new ResultData(Result.ERROR,e.getMessage()); } - return wxOrderService.composeSaveOrder(EnumComposeOrder.PACKAGECOUPON,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + return wxOrderService.composeSaveOrder(false,EnumComposeOrder.PACKAGECOUPON,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); } @ApiOperation(value = "商品购物车组合下单", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") @@ -85,7 +85,7 @@ public class WxOrderController extends BaseController { } catch (Exception e) { return new ResultData(Result.ERROR,e.getMessage()); } - return wxOrderService.composeSaveOrder(EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + return wxOrderService.composeSaveOrder(true,EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); } @ApiOperation(value = "券购物车组合下单", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") @@ -97,7 +97,7 @@ public class WxOrderController extends BaseController { } catch (Exception e) { return new ResultData(Result.ERROR,e.getMessage()); } - return wxOrderService.composeSaveOrder(EnumComposeOrder.ONE_NUMBER_ORDER_BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + return wxOrderService.composeSaveOrder(false,EnumComposeOrder.ONE_NUMBER_ORDER_BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); } @ApiOperation(value = "单个券单个订单,卡(分账导致无法批量下单)、拼团,砍价用", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") @@ -115,7 +115,7 @@ public class WxOrderController extends BaseController { dto.setSignleOrder(orderSaveDto); dto.setCount(1); list.add(dto); - return wxOrderService.composeSaveOrder(EnumComposeOrder.SINGLE,list,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + return wxOrderService.composeSaveOrder(false,EnumComposeOrder.SINGLE,list,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); } @ApiOperation(value = "取消订单", notes = "{\"orderId\":\"string\"}") diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 7159cafab..af994b51c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -190,7 +190,7 @@ public interface WxOrderService { * @param coupon * @return */ - WxComposeOrder saveOrderForCoupon(EnumComposeOrder composeOrderType,WxCUserBasicInfo user, List orderSave,EnumPayWay payWay); + WxComposeOrder saveOrderForCoupon(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,WxCUserBasicInfo user, List orderSave,EnumPayWay payWay); void sendOrderSuccessActionMsg(WxOrder updateOrder); /** @@ -209,12 +209,12 @@ public interface WxOrderService { boolean checkCouponIsFree(WxCoupon coupon,Integer shippingType); // 2. 创建免费订单, 领取 couponOrder - WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder, WxCUserBasicInfo user, WxCoupon coupon, int couponNumber, + WxOrder saveFreeOrderForCoupon(boolean allowUnPayOrder,WxComposeOrder composeOrder, WxCUserBasicInfo user, WxCoupon coupon, int couponNumber, Long couponChannelId, String formId, Long couponPasswordId, EnumPayWay payWay, Integer shippingType, UserBasicInfoAddress address); // 3. 创建有价订单 - WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,OrderComposeSaveDto orderdto); + WxOrder saveNoFreeOrderForCoupon(boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,OrderComposeSaveDto orderdto); /** * 下订单成功后处理 @@ -241,5 +241,5 @@ public interface WxOrderService { //ResultData saveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); - ResultData composeSaveOrder(EnumComposeOrder composeOrderType,List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); + ResultData composeSaveOrder(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java index a76985657..717a6b250 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java @@ -460,7 +460,7 @@ public class WxGameServiceImpl implements WxGameService { ocsd.setSignleOrder(orderSaveDto); ocsd.setCount(1); orderSave.add(ocsd); - ResultData resultData1 = wxOrderService.composeSaveOrder(EnumComposeOrder.SINGLE,orderSave, userId, EnumPayWay.PAY_WAY_WECHAT, wxGame); + ResultData resultData1 = wxOrderService.composeSaveOrder(false,EnumComposeOrder.SINGLE,orderSave, userId, EnumPayWay.PAY_WAY_WECHAT, wxGame); if(resultData1.code == Result.SUCCESS && resultData1.data != null && resultData1.data instanceof WxComposeOrder){ WxComposeOrder order = (WxComposeOrder)resultData1.data; 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 d810e5dac..123661b58 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -565,7 +565,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param couponIdStr */ @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void stockReduce(WxCUserBasicInfo user, WxCoupon coupon, String couponIdStr,int number) { + public void stockReduce(boolean allowUnPayOrder,WxCUserBasicInfo user, WxCoupon coupon, String couponIdStr,int number) { //如果缓存中不存在这个key,则从coupon中取 if(!redisLock.hasCouponStockCache(coupon.getId())) { //此处需要加锁,防止并发设置 @@ -606,16 +606,18 @@ public class WxOrderServiceImpl implements WxOrderService { int count = 0; // 有价券 if (coupon.getSalePrice() > 0) { - // 检查是否未支付订单 - try { - count = getUserOrderCount(user, coupon); - } catch (Exception e) { - throw new MallinkException(ErrorCode.DB_FAIL.getCode(),"["+coupon.getTitle()+"]查询未支付订单失败."); - } - if (count > 0) { - logger.error("此券有未支付的订单, couponId: " + couponIdStr + ", count: " + count); - throw new MallinkException(ErrorCode.ORDER_UNPAID.getCode(),"["+coupon.getTitle()+"]您有未支付的订单."); - } + if (!allowUnPayOrder) { + // 检查是否未支付订单 + try { + count = getUserOrderCount(user, coupon); + } catch (Exception e) { + throw new MallinkException(ErrorCode.DB_FAIL.getCode(),"["+coupon.getTitle()+"]查询未支付订单失败."); + } + if (count > 0) { + logger.error("此券有未支付的订单, couponId: " + couponIdStr + ", count: " + count); + throw new MallinkException(ErrorCode.ORDER_UNPAID.getCode(),"["+coupon.getTitle()+"]您有未支付的订单."); + } + } } //检查拼团中的数量 try { @@ -1297,7 +1299,7 @@ public class WxOrderServiceImpl implements WxOrderService { } else { // 减库存操作 try { - stockReduce(user, coupon, couponIdStr,1); + stockReduce(false,user, coupon, couponIdStr,1); }catch(Exception e) { throw new MallinkException(ErrorCode.COUPON_STOCK_ERR.getCode(), e.getMessage()); } @@ -1990,7 +1992,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override - public WxComposeOrder saveOrderForCoupon(EnumComposeOrder composeOrderType,WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { + public WxComposeOrder saveOrderForCoupon(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); // 防止同一用户重复下单,1秒内 String key = new StringBuilder().append("saveComposeOrder:").append(user.getId()).toString(); @@ -2011,10 +2013,10 @@ public class WxOrderServiceImpl implements WxOrderService { boolean isOneNumberOneOrder = orderAdapterService.isOneNumberOneOrder(); if (isOneNumberOneOrder) { for (int j = 0; j < orderdto.getCount(); j++) { - lastOrder = proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), 1, orderdto, payWay); + lastOrder = proxy.handleSaveOrderForCouponSingle(allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), 1, orderdto, payWay); } }else { - lastOrder = proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), orderdto, payWay); + lastOrder = proxy.handleSaveOrderForCouponSingle(allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), orderdto, payWay); } } //如果没有orderId,则用lastOrder的信息 @@ -2025,13 +2027,13 @@ public class WxOrderServiceImpl implements WxOrderService { } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder handleSaveOrderForCouponSingle(WxComposeOrder composeOrder,WxCUserBasicInfo user,WxCoupon coupon,int perCouponNumber,OrderComposeSaveDto orderdto,EnumPayWay payWay) { + public WxOrder handleSaveOrderForCouponSingle(boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user,WxCoupon coupon,int perCouponNumber,OrderComposeSaveDto orderdto,EnumPayWay payWay) { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); // 是否砍价 WxOrder order = null; if (checkCouponIsFree(coupon,orderdto.getShippingType())) { // 免费券 - order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber,orderdto.getSignleOrder().getCouponChannelId(), + order = proxy.saveFreeOrderForCoupon(allowUnPayOrder,composeOrder,user, coupon,perCouponNumber,orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(),null,payWay,orderdto.getShippingType(),orderdto.getAddress()); if (order != null) { // 6. 下订单完成,发送内部消息 @@ -2045,7 +2047,7 @@ public class WxOrderServiceImpl implements WxOrderService { } } else { // 有价券 - order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto); + order = proxy.saveNoFreeOrderForCoupon(allowUnPayOrder,composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto); } // couponActionLog // try { @@ -2070,13 +2072,13 @@ public class WxOrderServiceImpl implements WxOrderService { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override - public WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, + public WxOrder saveFreeOrderForCoupon(boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay, Integer shippingType, UserBasicInfoAddress address) { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); // 减库存操作 String couponIdStr = String.valueOf(coupon.getId()); - proxy.stockReduce(user, coupon, couponIdStr,couponNumber); + proxy.stockReduce(allowUnPayOrder,user, coupon, couponIdStr,couponNumber); // 当积分券或者积分停车券时 则进行积分支付 Integer orderType; @@ -2131,11 +2133,11 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,OrderComposeSaveDto orderdto) { + public WxOrder saveNoFreeOrderForCoupon(boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,OrderComposeSaveDto orderdto) { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); String couponIdStr = String.valueOf(coupon.getId()); // 3. 减库存操作 - proxy.stockReduce(user, coupon, couponIdStr,couponNumber); + proxy.stockReduce(allowUnPayOrder,user, coupon, couponIdStr,couponNumber); // 3. 当积分券或者积分停车券时 则进行积分支付 Integer orderType; @@ -2210,7 +2212,7 @@ public class WxOrderServiceImpl implements WxOrderService { } // 2. 减库存操作 String couponIdStr = String.valueOf(coupon.getId()); - stockReduce(user, coupon, couponIdStr,1); + stockReduce(false,user, coupon, couponIdStr,1); // 3. 当积分券或者积分停车券时 则进行积分支付 Integer orderType; @@ -2469,7 +2471,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override - public ResultData composeSaveOrder(EnumComposeOrder composeOrderType,List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) { + public ResultData composeSaveOrder(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) { try { if (null == composeOrderSaveDto || composeOrderSaveDto.size() <= 0 ) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"无商品信息"); @@ -2493,7 +2495,7 @@ public class WxOrderServiceImpl implements WxOrderService { } WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); try { - WxComposeOrder order = proxy.saveOrderForCoupon(composeOrderType,wxCUserBasicInfo, composeOrderSaveDto, payWay); + WxComposeOrder order = proxy.saveOrderForCoupon(allowUnPayOrder,composeOrderType,wxCUserBasicInfo, composeOrderSaveDto, payWay); return new ResultData(order); } catch (MallinkException e) { logger.error("saveOrderForCoupon error.",e); From 735b60932c4531386d472837e1449b8f9bf7eac4 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Fri, 24 Sep 2021 11:26:30 +0800 Subject: [PATCH 068/171] fix order --- .../db/migration/V202109070001__order.sql | 200 ++++++++++++++++++ .../com/iformall/domain/po/WxCouponOrder.java | 3 + .../service/impl/WxOrderServiceImpl.java | 1 + .../resources/mapper/WxCouponOrderMapper.xml | 3 +- 4 files changed, 206 insertions(+), 1 deletion(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql index 52f9e73cc..911ed7672 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql @@ -1023,4 +1023,204 @@ update wx_pay_order_97 set compose_order = 0 ; update wx_pay_order_98 set compose_order = 0 ; update wx_pay_order_99 set compose_order = 0 ; +ALTER TABLE wx_coupon_order_0 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_1 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_2 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_3 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_4 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_5 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_6 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_7 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_8 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_9 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_10 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_11 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_12 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_13 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_14 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_15 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_16 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_17 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_18 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_19 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_20 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_21 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_22 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_23 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_24 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_25 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_26 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_27 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_28 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_29 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_30 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_31 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_32 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_33 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_34 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_35 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_36 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_37 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_38 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_39 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_40 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_41 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_42 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_43 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_44 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_45 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_46 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_47 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_48 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_49 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_50 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_51 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_52 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_53 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_54 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_55 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_56 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_57 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_58 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_59 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_60 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_61 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_62 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_63 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_64 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_65 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_66 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_67 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_68 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_69 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_70 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_71 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_72 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_73 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_74 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_75 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_76 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_77 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_78 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_79 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_80 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_81 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_82 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_83 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_84 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_85 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_86 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_87 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_88 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_89 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_90 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_91 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_92 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_93 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_94 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_95 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_96 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_97 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_98 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +ALTER TABLE wx_coupon_order_99 ADD COLUMN `coupon_number` int(8) COMMENT '购买券数量'; +update wx_coupon_order_0 set coupon_number = 1; +update wx_coupon_order_1 set coupon_number = 1; +update wx_coupon_order_2 set coupon_number = 1; +update wx_coupon_order_3 set coupon_number = 1; +update wx_coupon_order_4 set coupon_number = 1; +update wx_coupon_order_5 set coupon_number = 1; +update wx_coupon_order_6 set coupon_number = 1; +update wx_coupon_order_7 set coupon_number = 1; +update wx_coupon_order_8 set coupon_number = 1; +update wx_coupon_order_9 set coupon_number = 1; +update wx_coupon_order_10 set coupon_number = 1; +update wx_coupon_order_11 set coupon_number = 1; +update wx_coupon_order_12 set coupon_number = 1; +update wx_coupon_order_13 set coupon_number = 1; +update wx_coupon_order_14 set coupon_number = 1; +update wx_coupon_order_15 set coupon_number = 1; +update wx_coupon_order_16 set coupon_number = 1; +update wx_coupon_order_17 set coupon_number = 1; +update wx_coupon_order_18 set coupon_number = 1; +update wx_coupon_order_19 set coupon_number = 1; +update wx_coupon_order_20 set coupon_number = 1; +update wx_coupon_order_21 set coupon_number = 1; +update wx_coupon_order_22 set coupon_number = 1; +update wx_coupon_order_23 set coupon_number = 1; +update wx_coupon_order_24 set coupon_number = 1; +update wx_coupon_order_25 set coupon_number = 1; +update wx_coupon_order_26 set coupon_number = 1; +update wx_coupon_order_27 set coupon_number = 1; +update wx_coupon_order_28 set coupon_number = 1; +update wx_coupon_order_29 set coupon_number = 1; +update wx_coupon_order_30 set coupon_number = 1; +update wx_coupon_order_31 set coupon_number = 1; +update wx_coupon_order_32 set coupon_number = 1; +update wx_coupon_order_33 set coupon_number = 1; +update wx_coupon_order_34 set coupon_number = 1; +update wx_coupon_order_35 set coupon_number = 1; +update wx_coupon_order_36 set coupon_number = 1; +update wx_coupon_order_37 set coupon_number = 1; +update wx_coupon_order_38 set coupon_number = 1; +update wx_coupon_order_39 set coupon_number = 1; +update wx_coupon_order_40 set coupon_number = 1; +update wx_coupon_order_41 set coupon_number = 1; +update wx_coupon_order_42 set coupon_number = 1; +update wx_coupon_order_43 set coupon_number = 1; +update wx_coupon_order_44 set coupon_number = 1; +update wx_coupon_order_45 set coupon_number = 1; +update wx_coupon_order_46 set coupon_number = 1; +update wx_coupon_order_47 set coupon_number = 1; +update wx_coupon_order_48 set coupon_number = 1; +update wx_coupon_order_49 set coupon_number = 1; +update wx_coupon_order_50 set coupon_number = 1; +update wx_coupon_order_51 set coupon_number = 1; +update wx_coupon_order_52 set coupon_number = 1; +update wx_coupon_order_53 set coupon_number = 1; +update wx_coupon_order_54 set coupon_number = 1; +update wx_coupon_order_55 set coupon_number = 1; +update wx_coupon_order_56 set coupon_number = 1; +update wx_coupon_order_57 set coupon_number = 1; +update wx_coupon_order_58 set coupon_number = 1; +update wx_coupon_order_59 set coupon_number = 1; +update wx_coupon_order_60 set coupon_number = 1; +update wx_coupon_order_61 set coupon_number = 1; +update wx_coupon_order_62 set coupon_number = 1; +update wx_coupon_order_63 set coupon_number = 1; +update wx_coupon_order_64 set coupon_number = 1; +update wx_coupon_order_65 set coupon_number = 1; +update wx_coupon_order_66 set coupon_number = 1; +update wx_coupon_order_67 set coupon_number = 1; +update wx_coupon_order_68 set coupon_number = 1; +update wx_coupon_order_69 set coupon_number = 1; +update wx_coupon_order_70 set coupon_number = 1; +update wx_coupon_order_71 set coupon_number = 1; +update wx_coupon_order_72 set coupon_number = 1; +update wx_coupon_order_73 set coupon_number = 1; +update wx_coupon_order_74 set coupon_number = 1; +update wx_coupon_order_75 set coupon_number = 1; +update wx_coupon_order_76 set coupon_number = 1; +update wx_coupon_order_77 set coupon_number = 1; +update wx_coupon_order_78 set coupon_number = 1; +update wx_coupon_order_79 set coupon_number = 1; +update wx_coupon_order_80 set coupon_number = 1; +update wx_coupon_order_81 set coupon_number = 1; +update wx_coupon_order_82 set coupon_number = 1; +update wx_coupon_order_83 set coupon_number = 1; +update wx_coupon_order_84 set coupon_number = 1; +update wx_coupon_order_85 set coupon_number = 1; +update wx_coupon_order_86 set coupon_number = 1; +update wx_coupon_order_87 set coupon_number = 1; +update wx_coupon_order_88 set coupon_number = 1; +update wx_coupon_order_89 set coupon_number = 1; +update wx_coupon_order_90 set coupon_number = 1; +update wx_coupon_order_91 set coupon_number = 1; +update wx_coupon_order_92 set coupon_number = 1; +update wx_coupon_order_93 set coupon_number = 1; +update wx_coupon_order_94 set coupon_number = 1; +update wx_coupon_order_95 set coupon_number = 1; +update wx_coupon_order_96 set coupon_number = 1; +update wx_coupon_order_97 set coupon_number = 1; +update wx_coupon_order_98 set coupon_number = 1; +update wx_coupon_order_99 set coupon_number = 1; \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java index d0cfcec7a..ef959274b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java @@ -61,6 +61,9 @@ public class WxCouponOrder extends TenantEntity { private Integer composeOrderType; @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="composeOrderId") private Long composeOrderId; + + @io.swagger.annotations.ApiModelProperty(value="商品数量",name="couponNumber") + private Integer couponNumber; @TableField(exist = false) private String couponName; 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 123661b58..44da50f11 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1067,6 +1067,7 @@ public class WxOrderServiceImpl implements WxOrderService { } couponOrder.setComposeOrderType(order.getComposeOrderType()); couponOrder.setComposeOrderId(order.getComposeOrderId()); + couponOrder.setCouponNumber(order.getCouponNumber()); couponOrder.setFreightPrice(order.getFreightPrice()); couponOrder.setShippingType(order.getShippingType()); diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 6e9623073..b79ce7b6c 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -24,11 +24,12 @@ + `id`,`tenant_id`,`parent_tenant_id`,`coupon_id`,`coupon_type`,`c_user_id`,`owner_id`,`b_user_id`,`order_id`,`expired_time`,`coupon_order_status`,`create_date`,`update_date`,`coupon_price`, `auto_refund`, - `verify_type`,`verify_remark`,`pay_vendor`,`send_merchant_id`,`send_merchant_user_id`,`compose_order_type`,`compose_order_id` + `verify_type`,`verify_remark`,`pay_vendor`,`send_merchant_id`,`send_merchant_user_id`,`compose_order_type`,`compose_order_id`,`coupon_number` From e2e56b8e769d818fddedf63264804b94ffa40117 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Fri, 24 Sep 2021 12:06:01 +0800 Subject: [PATCH 069/171] fix bug --- .../iformall/interceptor/TestControllerReturnAspect.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java b/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java index 07e5d9259..958c19fa6 100644 --- a/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java +++ b/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java @@ -24,17 +24,17 @@ import lombok.extern.slf4j.Slf4j; * @author alascor * */ -//@Aspect -//@Configuration +@Aspect +@Configuration @Slf4j public class TestControllerReturnAspect { - //@Pointcut("execution(* com.iformall.controller.*Controller.*(..))") + @Pointcut("execution(* com.iformall.controller.*Controller.*(..))") public void excudeService() { } - //@Around("excudeService()") + @Around("excudeService()") public Object doAround(ProceedingJoinPoint pjp) throws Throwable { RequestAttributes ra = RequestContextHolder.getRequestAttributes(); ServletRequestAttributes sra = (ServletRequestAttributes) ra; From 3812b20dba363702f777bed6c1da881b8fa4d546 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Fri, 24 Sep 2021 14:12:58 +0800 Subject: [PATCH 070/171] fix debug --- .../iformall/interceptor/TestControllerReturnAspect.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java b/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java index 958c19fa6..07e5d9259 100644 --- a/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java +++ b/mallinkCApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java @@ -24,17 +24,17 @@ import lombok.extern.slf4j.Slf4j; * @author alascor * */ -@Aspect -@Configuration +//@Aspect +//@Configuration @Slf4j public class TestControllerReturnAspect { - @Pointcut("execution(* com.iformall.controller.*Controller.*(..))") + //@Pointcut("execution(* com.iformall.controller.*Controller.*(..))") public void excudeService() { } - @Around("excudeService()") + //@Around("excudeService()") public Object doAround(ProceedingJoinPoint pjp) throws Throwable { RequestAttributes ra = RequestContextHolder.getRequestAttributes(); ServletRequestAttributes sra = (ServletRequestAttributes) ra; From 97127bde161da62e32121431d97899ed04096a4e Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 24 Sep 2021 14:53:57 +0800 Subject: [PATCH 071/171] wx_order add ShopingStatus --- .../java/com/iformall/domain/po/WxOrder.java | 1 + .../resources/mapper/WxCouponOrderMapper.xml | 42 ++++++++++++++++-- .../main/resources/mapper/WxOrderMapper.xml | 43 +++++++++++++------ 3 files changed, 70 insertions(+), 16 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java index efbeb162f..8ae6b5681 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java @@ -159,4 +159,5 @@ public class WxOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="配送类型 0:默认(无) 1:自提 2:配送",name="shippingType") private Integer shippingType; + } diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 6e9623073..b6c6c7332 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -24,11 +24,18 @@ + + + + + + `id`,`tenant_id`,`parent_tenant_id`,`coupon_id`,`coupon_type`,`c_user_id`,`owner_id`,`b_user_id`,`order_id`,`expired_time`,`coupon_order_status`,`create_date`,`update_date`,`coupon_price`, `auto_refund`, - `verify_type`,`verify_remark`,`pay_vendor`,`send_merchant_id`,`send_merchant_user_id`,`compose_order_type`,`compose_order_id` + `verify_type`,`verify_remark`,`pay_vendor`,`send_merchant_id`,`send_merchant_user_id`,`compose_order_type`,`compose_order_id`, + `freight_price`,`shipping_type`,`shipping_address`,`shipping_status`,`delivery_info` @@ -113,6 +120,14 @@ and `compose_order_id` = #{composeOrderId} + + and `shipping_type` = #{shippingType} + + + + and `shipping_status` = #{shippingStatus} + + and id in @@ -726,6 +741,12 @@ + + + + + + @@ -772,6 +793,12 @@ + + + + + + @@ -814,7 +841,9 @@ --> co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.expired_time,co.coupon_order_status,co.order_id, - co.create_date,co.update_date,co.coupon_price, co.verify_type, co.verify_remark,co.pay_vendor,c.title,c.sale_price,c.use_price,c.price, + co.create_date,co.update_date,co.coupon_price, co.verify_type, co.verify_remark,co.pay_vendor, + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`, + c.title,c.sale_price,c.use_price,c.price, co.send_merchant_id,c.unit,c.auto_refund,c.business,c.subsidy_type,c.source_type,ms.subsidy subsidy_num, (CASE WHEN couc.mc = 1 THEN m1.name ELSE '[多商户通用]' END) AS merchant_name, (CASE WHEN couc.mc = 1 THEN m1.id ELSE 0 END) AS merchant_id, @@ -824,6 +853,7 @@ co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id, co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark, co.pay_vendor, + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`, c.type,c.title,c.sale_price,c.use_price,c.price,c.unit,c.auto_refund,c.business,c.subsidy_type,ms.subsidy subsidy_num, bu.name, bu.phone as bphone, cu.phone, @@ -847,7 +877,7 @@ RIGHT JOIN ( SELECT co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.c_user_id,co.b_user_id,co.order_id,co.coupon_type, co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.auto_refund,co.verify_type,co.verify_remark,co.pay_vendor - ,co.send_merchant_id + ,co.send_merchant_id,co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info` FROM wx_coupon_order co WHERE 1=1 and co.`tenant_id` = #{tenantId} @@ -976,6 +1006,7 @@ co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id,co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark,co.pay_vendor, + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`, c.type,c.title,c.sale_price,c.use_price,c.price,c.unit, bu.name, cu.phone @@ -983,6 +1014,7 @@ co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id,co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark,co.pay_vendor, + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`, c.type,c.title,c.sale_price,c.use_price,c.price,c.unit, cu.phone @@ -1033,7 +1065,9 @@ - co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id,co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark,co.pay_vendor + co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id, + co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark,co.pay_vendor, + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info` @@ -453,6 +464,7 @@ + @@ -469,7 +481,7 @@ o.`id`,o.`order_number`,o.`tenant_id`,o.`parent_tenant_id`,o.`c_user_id`,o.`coupon_channel_id`,o.`product_id`,o.`type`, - o.`payment_type`,o.`payment`,o.`payment_time`,o.`order_status`,o.`create_date`,o.`update_date`,o.`detail`, + o.`payment_type`,o.`payment`,o.`payment_time`,o.`freight_price`,o.`order_status`,o.`create_date`,o.`update_date`,o.`detail`, m.name as merchant_name, bu.name, bu.phone as bphone, cubi.phone, cubi.nick_name, cubi.name c_user_name @@ -514,6 +526,7 @@ + @@ -532,7 +545,7 @@ o.`id`,o.`order_number`,o.`tenant_id`,o.`c_user_id`,o.`coupon_channel_id`,o.`product_id`,o.`type`, - o.`payment_type`,o.`payment`,o.`payment_time`,o.`order_status`,o.`create_date`,o.`update_date`,o.`detail`, + o.`payment_type`,o.`payment`,o.`payment_time`,o.`freight_price`,o.`order_status`,o.`create_date`,o.`update_date`,o.`detail`, m.name as merchant_name, bu.name, bu.phone as bphone, cubi.phone, cubi.nick_name, cubi.name c_user_name, po.id as pay_order_id, po.transaction_id @@ -691,6 +704,7 @@ + @@ -876,6 +890,7 @@ + @@ -899,6 +914,9 @@ + + + @@ -914,6 +932,7 @@ + @@ -944,14 +963,14 @@ - o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status, + o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.`freight_price`,o.order_status, o.create_date,o.update_date,o.press_end_date,o.press_current_num,o.press_current_value, c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.unit,c.press_limit_num, - o.compose_order_type + o.compose_order_type,o.`shipping_type`,o.`shipping_address` - o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status, + o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.`freight_price`,o.order_status, o.create_date,o.update_date,o.press_end_date,o.press_current_num,o.press_current_value, c.type as coupon_type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.unit,c.detail,c.remark,c.press_limit_num, co.id as coupon_order_id,co.coupon_order_status From 8f5291bc4e59a083ebd1db09256f34c29482dc13 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 24 Sep 2021 15:03:57 +0800 Subject: [PATCH 072/171] wx_coupon_order add --- .../resources/mapper/WxCouponOrderMapper.xml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index e637eb31f..77b277cb9 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -1115,11 +1115,13 @@ co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id,co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark,co.pay_vendor, + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`, c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.detail,c.remark,c.valid_type,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date,c.auto_refund - co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id,co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark,co.pay_vendor + co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id,co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark,co.pay_vendor, + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info` @@ -1140,7 +1142,12 @@ - + + + + + + @@ -1192,6 +1199,12 @@ + + + + + + @@ -1245,6 +1258,7 @@ --> co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark,co.pay_vendor, + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info` c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.unit,c.valid_type,c.valid_start_date,c.valid_end_date,c.auto_refund From a9ff3a0c68de0dd14dd68b88c5b4ac5f77c0b542 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 24 Sep 2021 15:37:20 +0800 Subject: [PATCH 073/171] wx_coupon_order add --- .../src/main/resources/mapper/WxCouponOrderMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 77b277cb9..d83f94de1 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -1258,7 +1258,7 @@ --> co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark,co.pay_vendor, - co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info` + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`, c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.unit,c.valid_type,c.valid_start_date,c.valid_end_date,c.auto_refund From 91fa95119c5a62230fd67fe1c5948af78b478429 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 24 Sep 2021 16:49:55 +0800 Subject: [PATCH 074/171] wx_coupon_order add --- .../iformall/domain/vo/WxOrderCouponVo.java | 23 +++++++++++++++++++ .../resources/mapper/WxCouponOrderMapper.xml | 16 ++++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java index c3df7e84e..38f191bc3 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java @@ -2,10 +2,12 @@ package com.iformall.domain.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.iformall.common.SortColumn; import com.iformall.domain.po.base.TenantEntity; import lombok.Data; import lombok.EqualsAndHashCode; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -109,4 +111,25 @@ public class WxOrderCouponVo extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="composeOrderId") private Long composeOrderId; + + @io.swagger.annotations.ApiModelProperty(value="运费",name="freightPrice") + private Integer freightPrice; + + @TableField(exist = false) + @SortColumn(column = "freight_price") + private String freightPriceStr; + + public String getFreightPriceStr() { + if(freightPrice!=null) { + freightPriceStr = new BigDecimal(freightPrice).divide(new BigDecimal(100)).toString(); + } + return freightPriceStr; + } + + @io.swagger.annotations.ApiModelProperty(value="收货地址",name="shippingAddress") + private String shippingAddress; + + @io.swagger.annotations.ApiModelProperty(value="配送类型 0:默认(无) 1:自提 2:配送",name="shippingType") + private Integer shippingType; + } diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index d83f94de1..c79bc0199 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -1268,9 +1268,19 @@ where 1=1 and co.coupon_id = c.id - and co.coupon_type != 5 - and co.coupon_type != 51 - and co.coupon_type < 100 + + + and co.coupon_type = #{couponType} + + + and co.coupon_type != 5 + and co.coupon_type != 11 + and co.coupon_type != 12 + and co.coupon_type != 51 + and co.coupon_type < 100 + + + and co.c_user_id = #{cUserId} From df0091e0e11d51ebb80a53cdeac60038dc8fdea9 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Sun, 26 Sep 2021 11:17:44 +0800 Subject: [PATCH 075/171] fix order --- .../java/com/iformall/service/impl/WxPayOrderServiceImpl.java | 2 +- .../java/com/iformall/service/order/entity/WxComposeOrder.java | 3 ++- .../iformall/service/order/impl/SingleOrderAdapterService.java | 1 + .../service/order/impl/batch/BaseBatchOrderAdapterService.java | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index c99418095..b914658da 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -366,7 +366,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } record.setId(id); - record.updateTenantInfo(appInfo.getTenantInfo()); + record.updateTenantInfo(composeOrder); record.setCUserId(user.getId()); record.setCreateTime(currentDate); record.setUpdateTime(currentDate); diff --git a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java index 1d3389dee..2ef5c7753 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java @@ -1,11 +1,12 @@ package com.iformall.service.order.entity; import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.base.TenantEntity; import lombok.Data; @Data -public class WxComposeOrder { +public class WxComposeOrder extends TenantEntity{ public WxComposeOrder(Long mainOrderId,Integer composeOrderType,Integer payment) { this.mainOrderId = mainOrderId; diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java index b9c67c996..8ab3dfcb9 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java @@ -47,6 +47,7 @@ public class SingleOrderAdapterService implements OrderAdapterService { public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { WxOrder wxOrder = wxOrderMapper.selectById(mainOrderId, tenantId); WxComposeOrder corder = new WxComposeOrder(wxOrder.getId(),EnumComposeOrder.SINGLE.getCode(),wxOrder.getPayment()); + corder.updateTenantInfo(wxOrder); corder.setSingleOrder(wxOrder); return corder; } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java index b18e387c6..243df9164 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java @@ -65,6 +65,7 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic protected WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId,EnumComposeOrder composeOrderType) { WxBatchOrder order = wxBatchOrderMapper.selectById(mainOrderId, tenantId); WxComposeOrder corder = new WxComposeOrder(order.getId(),composeOrderType.getCode(),order.getPayment()); + corder.updateTenantInfo(order); corder.setMainOrder(order); return corder; } From ee7f28a01af35b4bbb8f6141855513c01208337b Mon Sep 17 00:00:00 2001 From: xhxu Date: Sun, 26 Sep 2021 14:35:18 +0800 Subject: [PATCH 076/171] update --- .../iformall/domain/po/base/BaseTenantEntity.java | 12 ++++++------ .../impl/WxCuserFloatingLayerServiceImpl.java | 14 +++++++------- .../msg/impl/SendWeappUniformMsgServiceImpl.java | 8 ++++---- .../iformall/controller/TtUserGrantController.java | 2 +- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/base/BaseTenantEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/base/BaseTenantEntity.java index 9fd1d9e59..610520691 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/base/BaseTenantEntity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/base/BaseTenantEntity.java @@ -65,12 +65,12 @@ public class BaseTenantEntity extends BaseEntity { } } - public TenantEntity getTenantInfo() { - TenantEntity tenantEntity = new TenantEntity(); - tenantEntity.setTenantId(tenantId); - tenantEntity.setParentTenantId(parentTenantId); - return tenantEntity; - } +// public TenantEntity getTenantInfo() { +// TenantEntity tenantEntity = new TenantEntity(); +// tenantEntity.setTenantId(tenantId); +// tenantEntity.setParentTenantId(parentTenantId); +// return tenantEntity; +// } public String getTenantId() { return tenantId; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCuserFloatingLayerServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCuserFloatingLayerServiceImpl.java index 161a4129e..7fb655ae8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCuserFloatingLayerServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCuserFloatingLayerServiceImpl.java @@ -46,16 +46,16 @@ public class WxCuserFloatingLayerServiceImpl implements WxCuserFloatingLayerServ public WxFloatingLayer getFloatingLayer(String openId, String appId) { WxAppinfo appinfo = appinfoMapper.findByAppId(appId); if (StringUtils.isBlank(openId)) { - return getWxFloatingLayer(appinfo.getTenantInfo()); + return getWxFloatingLayer(appinfo.getTenantId()); } //1 查看是否存在用户,用户不存在 直接返回浮层信息 WxCUser user = new WxCUser(); user.setOpenId(openId); user.setAppId(appId); - user.updateTenantInfo(appinfo); + user.setTenantId(appinfo.getTenantId()); WxCUser byOpenId = wxCUserMapper.findByOpenId(user); if (byOpenId == null) { - return getWxFloatingLayer(appinfo.getTenantInfo()); + return getWxFloatingLayer(appinfo.getTenantId()); } //2 用户存在 查看是否已有弹出记录 没有 保存记录后返回浮层信息 WxCuserFloatingLayer wxCuserFloatingLayerQuery = new WxCuserFloatingLayer(); @@ -68,7 +68,7 @@ public class WxCuserFloatingLayerServiceImpl implements WxCuserFloatingLayerServ logger.error("用户 {} 已弹过浮层",byOpenId.getId()); return null; } - return getWxFloatingLayer(byOpenId); + return getWxFloatingLayer(byOpenId.getTenantId()); //merge from develop: 分支逻辑 // WxFloatingLayer wxFloatingLayer = getWxFloatingLayer(byOpenId); // if (wxFloatingLayer != null) { @@ -84,15 +84,15 @@ public class WxCuserFloatingLayerServiceImpl implements WxCuserFloatingLayerServ wxCuserFloatingLayer = new WxCuserFloatingLayer(); final IdWorker idWorker = IdWorker.get(); wxCuserFloatingLayer.setId(idWorker.nextId()); + wxCuserFloatingLayer.setTenantId(wxCUser.getTenantId()); wxCuserFloatingLayer.setUserId(wxCUser.getId()); - wxCuserFloatingLayer.updateTenantInfo(wxCUser); wxCuserFloatingLayer.setCreateTime(new Date()); wxCuserFloatingLayerMapper.insert(wxCuserFloatingLayer); } - public WxFloatingLayer getWxFloatingLayer(TenantEntity tenantEntity) { + public WxFloatingLayer getWxFloatingLayer(String tenantId) { WxFloatingLayer wxFloatingLayer = new WxFloatingLayer(); - wxFloatingLayer.updateTenantInfo(tenantEntity); + wxFloatingLayer.setTenantId(tenantId); wxFloatingLayer.setStatus(EnumFloatingLayerStatus.STATUS_THROW_IN.getCode()); return wxFloatingLayerMapper.selectOne(new QueryWrapper<>(wxFloatingLayer)); } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendWeappUniformMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendWeappUniformMsgServiceImpl.java index 9fa7e6af0..e3ae39ed4 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendWeappUniformMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendWeappUniformMsgServiceImpl.java @@ -47,10 +47,10 @@ public class SendWeappUniformMsgServiceImpl implements MsgSendService { public void send(BaseMsg baseMsg) throws Exception{ AppUniformMsg appUniformMsg = (AppUniformMsg)baseMsg; - TenantEntity tenantEntity = appUniformMsg.getTenantInfo(); - if (StringUtils.isBlank(tenantEntity.getTenantId())) { + String tenantId = appUniformMsg.getTenantId(); + if (StringUtils.isBlank(tenantId)) { WxAppinfo appinfo = appinfoMapper.findByAppId(appUniformMsg.getAppId()); - tenantEntity = appinfo.getTenantInfo(); + tenantId = appinfo.getTenantId(); } WxTemplateMsg msg = null; @@ -58,7 +58,7 @@ public class SendWeappUniformMsgServiceImpl implements MsgSendService { // 查询信息模板 WxTemplateMsg msgQ = new WxTemplateMsg(); - msgQ.updateTenantInfo(tenantEntity); + msgQ.setTenantId(tenantId); msgQ.setType(appUniformMsg.getTemplateType()); try { msg = wxTemplateMsgMapper.selectOne(new QueryWrapper(msgQ)); diff --git a/mallinkTTCApi/src/main/java/com/iformall/controller/TtUserGrantController.java b/mallinkTTCApi/src/main/java/com/iformall/controller/TtUserGrantController.java index 8483c518e..171b3aaaa 100644 --- a/mallinkTTCApi/src/main/java/com/iformall/controller/TtUserGrantController.java +++ b/mallinkTTCApi/src/main/java/com/iformall/controller/TtUserGrantController.java @@ -128,7 +128,7 @@ public class TtUserGrantController extends BaseController { String ipaddress = IPUtil.getIpAddr(request); TtCUser newUser = new TtCUser(); - newUser.updateTenantInfo(wxAppinfo.getTenantInfo()); + newUser.setTenantId(wxAppinfo.getTenantId()); newUser.setAppId(appId); newUser.setOpenId(openId); From 5ccba52b531fd7446efcb4f24a41995793eca1b1 Mon Sep 17 00:00:00 2001 From: xhxu Date: Sun, 26 Sep 2021 17:27:49 +0800 Subject: [PATCH 077/171] update --- .../controller/WxOrderController.java | 33 +++++++++++++++++++ .../com/iformall/service/WxOrderService.java | 2 ++ .../service/impl/WxOrderServiceImpl.java | 5 +++ 3 files changed, 40 insertions(+) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 32200326f..f5359105a 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -401,5 +401,38 @@ public class WxOrderController extends BaseController { } } + @ApiOperation("购物车订单详情接口") + @GetMapping("goodsDetail") + @ApiImplicitParams({ + @ApiImplicitParam(name = "orderId", value = "订单id", dataType = "String", paramType = "query", required = true) + }) + public ResultData goodsDetail(String mainOrderId) { + if (StringUtils.isBlank(mainOrderId) || mainOrderId.equalsIgnoreCase(Constant.UNDEFINED)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + // c端用户应该只能看到自己的订单细节 + WxOrder wxOrder = new WxOrder(); + Long composeOrderId = 0L; + try { + composeOrderId = Long.valueOf(mainOrderId); + } catch (NumberFormatException e) { + logger.error("parse composeOrderId failed"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "订单ID转换异常:"+mainOrderId); + } + wxOrder.setComposeOrderId(composeOrderId); + Long memberId; + try { + memberId = getMemberId(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + wxOrder.setCUserId(memberId); + List wxOrders = wxOrderService.goodsDetailCUserVo(wxOrder); + if (wxOrders == null) + return new ResultData(ErrorCode.ORDER_IS_NOT_FIND); + + return new ResultData(wxOrders); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index af994b51c..48df81196 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -154,6 +154,7 @@ public interface WxOrderService { WxOrderCouponVo detailCUserVo(WxOrder record); + List goodsDetailCUserVo(WxOrder wxOrder); void stockBack(WxOrder updateOrder); @@ -242,4 +243,5 @@ public interface WxOrderService { //ResultData saveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); ResultData composeSaveOrder(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); + } 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 44da50f11..1296c30b5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1742,6 +1742,11 @@ public class WxOrderServiceImpl implements WxOrderService { return null; } + @Override + public List goodsDetailCUserVo(WxOrder record) { + return wxOrderMapper.selectDetailOfCUser(record); + } + @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public void shareForMicroPay(TenantEntity tenantEntity, Long orderId, Long payOrderId,EnumPayWay payWay) { From 05d8cd38d0eb087afb11d347e9e9cf6b86271f98 Mon Sep 17 00:00:00 2001 From: xhxu Date: Sun, 26 Sep 2021 17:34:27 +0800 Subject: [PATCH 078/171] composeOrderId --- mallinkService/src/main/resources/mapper/WxOrderMapper.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 5d7d06044..4c4fa1f12 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -381,6 +381,9 @@ and o.`parent_tenant_id` = #{parentTenantId} + + and o.`compose_order_id` = #{composeOrderId} + AND o.order_status = #{orderStatus} @@ -403,6 +406,10 @@ and o.`parent_tenant_id` = #{parentTenantId} + + + and o.`compose_order_id` = #{composeOrderId} + and o.id = #{id} From cb0cc65b1700e448b30a784f254a30415714881f Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Sun, 26 Sep 2021 17:35:33 +0800 Subject: [PATCH 079/171] fix bug --- .../com/iformall/enums/EnumComposeOrder.java | 16 ++++++++-------- .../service/impl/WxOrderServiceImpl.java | 18 +++++++++--------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java index b0c4e32ee..0e0c0b12f 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java @@ -56,12 +56,12 @@ public enum EnumComposeOrder { } //子订单是单个还是一起,购物车的子订单是单个,可以单个支付,券包的子订单不能单个支付 - public static boolean childOrderIsSingle(Integer type) { - if (type.intValue() == SINGLE.getCode().intValue() || type.intValue() == ONE_NUMBER_ORDER_BATCH.getCode().intValue() - || type.intValue() == MULITY_NUMBER_ORDER_BATCH.getCode().intValue()) { - return true; - }else { - return false; - } - } +// public static boolean childOrderIsSingle(Integer type) { +// if (type.intValue() == SINGLE.getCode().intValue() || type.intValue() == ONE_NUMBER_ORDER_BATCH.getCode().intValue() +// || type.intValue() == MULITY_NUMBER_ORDER_BATCH.getCode().intValue()) { +// return true; +// }else { +// return false; +// } +// } } 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 44da50f11..e446cfe25 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2021,7 +2021,7 @@ public class WxOrderServiceImpl implements WxOrderService { } } //如果没有orderId,则用lastOrder的信息 - if (null == composeOrder.getMainOrderId() || composeOrder.getMainOrderId().intValue() <= 0) { + if (null == composeOrder.getMainOrderId() || composeOrder.getMainOrderId() <= 0) { return new WxComposeOrder(lastOrder.getId(), composeOrder.getComposeOrderType(),lastOrder.getPayment()); } return composeOrder; @@ -2106,11 +2106,11 @@ public class WxOrderServiceImpl implements WxOrderService { } if (null != composeOrder) { record.setComposeOrderId(composeOrder.getMainOrderId()); - if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) { - record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); - }else { + //if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) { + // record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); + //}else { record.setComposeOrderType(composeOrder.getComposeOrderType()); - } + //} }else { record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); record.setComposeOrderId(0L); @@ -2174,11 +2174,11 @@ public class WxOrderServiceImpl implements WxOrderService { record.setOrderStatus(orderStatus); record.setComposeOrderId(composeOrder.getMainOrderId()); - if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) { - record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); - }else { + //if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) { + // record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); + //}else { record.setComposeOrderType(composeOrder.getComposeOrderType()); - } + //} record.setCouponNumber(couponNumber); try { From 6dbed7cc3cb83cefe20b335ae883cf31fb498fb9 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Sun, 26 Sep 2021 18:27:20 +0800 Subject: [PATCH 080/171] fix bug --- .../java/com/iformall/service/impl/WxOrderServiceImpl.java | 2 +- .../order/impl/batch/BaseBatchOrderAdapterService.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) 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 9ea544df0..43b3b05ac 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2169,7 +2169,7 @@ public class WxOrderServiceImpl implements WxOrderService { record.setOrderGroupId(orderdto.getSignleOrder().getOrderGroupId()); record.setFormId(orderdto.getSignleOrder().getFormId()); - record.setPayment(price.getRealPayMent()+coupon.getFreightPrice());//加运费 + record.setPayment(price.getRealPayMent()); record.setFreightPrice(coupon.getFreightPrice()); record.setShippingType(orderdto.getShippingType()); diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java index 243df9164..255e6a027 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java @@ -17,6 +17,7 @@ import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.EnumComposeOrder; +import com.iformall.enums.EnumOrderShopingType; import com.iformall.enums.EnumPayWay; import com.iformall.mapper.WxBatchOrderMapper; import com.iformall.mapper.WxOrderMapper; @@ -55,6 +56,10 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic boolean isPress = ocsd.getSignleOrder().isPressOrder(); WxComposeChildOrderPrice price = getChildCouponOrderPrice(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(), ocsd.getCount()); payment = payment+price.getRealPayMent(); + //在线配送加上运费 + if (EnumOrderShopingType.DISTRIBUTION.getCode().equals(ocsd.getShippingType())) { + payment = payment + ocsd.getWxCoupon().getFreightPrice(); + } } order.setPayment(payment); order.setCreateDate(new Date()); From 9947659740e7d6ffc010e49dad944f6442b988ec Mon Sep 17 00:00:00 2001 From: xhxu Date: Sun, 26 Sep 2021 18:34:09 +0800 Subject: [PATCH 081/171] freightPrice --- .../main/java/com/iformall/domain/vo/WxOrderCouponVo.java | 6 ++++++ .../java/com/iformall/service/impl/WxOrderServiceImpl.java | 3 +-- mallinkService/src/main/resources/mapper/WxOrderMapper.xml | 7 +++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java index 38f191bc3..976255e97 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java @@ -132,4 +132,10 @@ public class WxOrderCouponVo extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="配送类型 0:默认(无) 1:自提 2:配送",name="shippingType") private Integer shippingType; + @io.swagger.annotations.ApiModelProperty(value="配送状态 0:默认(无) 1*:自提 2*:配送",name="shippingStatus") + private Integer shippingStatus; + + @io.swagger.annotations.ApiModelProperty(value="配送信息",name="deliveryInfo") + private String deliveryInfo; + } 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 43b3b05ac..ce9b81dab 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2170,10 +2170,9 @@ public class WxOrderServiceImpl implements WxOrderService { record.setFormId(orderdto.getSignleOrder().getFormId()); record.setPayment(price.getRealPayMent()); - record.setFreightPrice(coupon.getFreightPrice()); - record.setShippingType(orderdto.getShippingType()); if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(orderdto.getShippingType())){ + record.setFreightPrice(coupon.getFreightPrice()); record.setShippingAddress(JSON.toJSONString(orderdto.getAddress())); } diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 4c4fa1f12..4ed341455 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -344,6 +344,8 @@ + + --> - o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.`freight_price`,o.order_status,o.create_date,o.update_date, + o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status,o.create_date,o.update_date, c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date, - o.compose_order_type,o.compose_order_id,o.`shipping_type`,o.`shipping_address` + o.compose_order_type,o.compose_order_id, + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info` From 2157563fd1d52c8f990a6aef0c7b8be3e3caa691 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 27 Sep 2021 19:27:38 +0800 Subject: [PATCH 087/171] goodsList --- .../controller/WxCouponOrderController.java | 14 ++++ .../iformall/mapper/WxCouponOrderMapper.java | 2 + .../service/WxCouponOrderService.java | 2 + .../impl/WxCouponOrderServiceImpl.java | 5 ++ .../resources/mapper/WxCouponOrderMapper.xml | 76 +++++++++++++++++++ 5 files changed, 99 insertions(+) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 60f4b3fb1..1da38baa1 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -7,6 +7,7 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.domain.vo.WxCouponCVo; +import com.iformall.domain.vo.WxCouponOrderBVo; import com.iformall.domain.vo.WxCouponOrderCVo; import com.iformall.enums.EnumCouponType; import com.iformall.enums.EnumCouponValidType; @@ -70,6 +71,19 @@ public class WxCouponOrderController extends BaseController { return new ResultData(page); } + @ApiOperation("分页列表接口") + @GetMapping("goodsList") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData goodsList(@ModelAttribute WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize) { + if (null == wxCouponOrder) wxCouponOrder = new WxCouponOrder(); + wxCouponOrder.setMerchantId(getLoginBUser().getMerchantId()); + wxCouponOrder.setCouponType(EnumCouponType.COUPON_DISTRIBUTION.getCode()); + final PageInfo page = wxCouponOrderService.goodsListAsPage(wxCouponOrder, pageNum, pageSize); + return new ResultData(page); + } + @ApiOperation("根据id更新接口") @PostMapping("update") public ResultData update(@RequestBody WxCouponOrder wxCouponOrder) { diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java index 1fa0f4d48..e5c04634c 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java @@ -94,4 +94,6 @@ public interface WxCouponOrderMapper extends CommonMapper { List cardDeferCouponOrderId(@Param("couponId")Long couponId,@Param("tenantId")String tenantId); Integer findWriteOffCount(WxCouponOrder wxCouponOrder); + + WxCouponOrderBVo findGoodsList(WxCouponOrder record); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index c82ef5e39..669610531 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -228,4 +228,6 @@ public interface WxCouponOrderService { void statisticsWriteOff(WxCouponOrder wxCouponOrder, Map resultMap); Integer findCount(WxCouponOrder wxCouponOrder); + + PageInfo goodsListAsPage(WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize); } 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 19924b954..4c989b0fa 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -1742,4 +1742,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { return wxCouponOrderMapper.findCount(wxCouponOrder); } + @Override + public PageInfo goodsListAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findGoodsList(record)); + } + } diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index c79bc0199..c8c518302 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -993,6 +993,82 @@ + + - select co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id, co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark, co.pay_vendor, From 2ceb4a7d27d2df266ee67ae8d6c590643f0fc769 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 28 Sep 2021 17:57:08 +0800 Subject: [PATCH 090/171] update couponOrder --- .../controller/WxCouponOrderController.java | 25 +++++++++--- .../controller/WxOrderController.java | 39 +++++++++++++++++++ .../com/iformall/domain/po/WxCouponOrder.java | 4 ++ .../enums/EnumOrderShopingStatus.java | 5 +++ .../iformall/mapper/WxCouponOrderMapper.java | 2 +- .../com/iformall/mapper/WxOrderMapper.java | 3 +- .../service/WxCouponOrderService.java | 2 +- .../com/iformall/service/WxOrderService.java | 1 + .../impl/WxCouponOrderServiceImpl.java | 2 +- .../service/impl/WxOrderServiceImpl.java | 7 +++- .../resources/mapper/WxCouponOrderMapper.xml | 8 +++- .../main/resources/mapper/WxOrderMapper.xml | 24 ++++++++++++ 12 files changed, 111 insertions(+), 11 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 5041bc3fe..def9e4020 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -25,7 +25,9 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.Date; +import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -74,11 +76,24 @@ public class WxCouponOrderController extends BaseController { @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - public ResultData goodsList(@ModelAttribute WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize) { - if (null == wxCouponOrder) wxCouponOrder = new WxCouponOrder(); - wxCouponOrder.setMerchantId(getLoginBUser().getMerchantId()); - wxCouponOrder.setCouponType(EnumCouponType.COUPON_DISTRIBUTION.getCode()); - final PageInfo page = wxCouponOrderService.goodsListAsPage(wxCouponOrder, pageNum, pageSize); + public ResultData goodsList(@ModelAttribute WxCouponOrderBVo wxCouponOrderBvo, Integer pageNum, Integer pageSize) { + if (null == wxCouponOrderBvo) wxCouponOrderBvo = new WxCouponOrderBVo(); + wxCouponOrderBvo.setMerchantId(getLoginBUser().getMerchantId()); + wxCouponOrderBvo.setCouponType(EnumCouponType.COUPON_DISTRIBUTION.getCode()); + List shippingStatuss = new ArrayList<>(); + if(EnumOrderShopingStatus.WAIT_SENG_GOODS.getCode().equals(wxCouponOrderBvo.getShippingStatus())){ + shippingStatuss.add(EnumOrderShopingStatus.READY_SELF_MENTION.getCode()); + shippingStatuss.add(EnumOrderShopingStatus.READY_DISTRIBUTION.getCode()); + }else if(EnumOrderShopingStatus.SENG_GOODS.getCode().equals(wxCouponOrderBvo.getShippingStatus())){ + shippingStatuss.add(EnumOrderShopingStatus.WAIT_SELF_MENTION.getCode()); + shippingStatuss.add(EnumOrderShopingStatus.WAIT_DISTRIBUTION.getCode()); + }else if(EnumOrderShopingStatus.FINISH_SENG_GOODS.getCode().equals(wxCouponOrderBvo.getShippingStatus())){ + wxCouponOrderBvo.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); + } + if(shippingStatuss.size() > 0){ + wxCouponOrderBvo.setShippingStatuss(shippingStatuss); + } + final PageInfo page = wxCouponOrderService.goodsListAsPage(wxCouponOrderBvo, pageNum, pageSize); return new ResultData(page); } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index f5359105a..f51827083 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -435,4 +435,43 @@ public class WxOrderController extends BaseController { } + @ApiOperation("分页订单列表接口") + @GetMapping("listGoods") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true), + }) + public ResultData listGoods(@ModelAttribute WxOrder wxOrder, Integer pageNum, Integer pageSize) { + // c端用户应该只能看到自己的订单 + if (wxOrder == null){ + wxOrder = new WxOrder(); + } + Long memberId; + try { + memberId = getMemberId(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + wxOrder.setCUserId(memberId); + wxOrder.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); + final PageInfo page = wxOrderService.listGoodsCAsPage(wxOrder, pageNum, pageSize); + + Date now = new Date(); + page.getList().stream().forEach(oc->{ + if (oc.getValidStartDate() != null && oc.getValidEndDate() != null ) { + if (oc.getValidStartDate().getTime() > now.getTime()) { + oc.setValidStatus(EnumCouponOrderValidStatus.PREPARED.getCode()); + } else if (oc.getValidEndDate().getTime() < now.getTime()) { + oc.setValidStatus(EnumCouponOrderValidStatus.ENDED.getCode()); + } else { + oc.setValidStatus(EnumCouponChannelActivityStatus.STARTED.getCode()); + } + } + }); + + + return new ResultData(page); + } + + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java index ef959274b..7ab4c659e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java @@ -12,6 +12,7 @@ import lombok.ToString; import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.Date; +import java.util.List; @TableName(value = "wx_coupon_order") @Data @@ -156,4 +157,7 @@ public class WxCouponOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="配送信息",name="deliveryInfo") private String deliveryInfo; + @TableField(exist = false) + private List shippingStatuss; + } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java index 71b1ce46c..59e9c74da 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java @@ -9,6 +9,11 @@ public enum EnumOrderShopingStatus { ONLINE_PURCHASE(0,"线上购买"),//不需要发货 + WAIT_SENG_GOODS(1,"待发货(查询用)"), + SENG_GOODS(2,"已发货(查询用)"), + FINISH_SENG_GOODS(3,"已完成(查询用)"), + + READY_SELF_MENTION(10,"自提商品准备中"), WAIT_SELF_MENTION(14,"已备货,待自提"), ALREADY_SELF_MENTION(15,"已自提"), diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java index e5c04634c..1fe5eba52 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java @@ -95,5 +95,5 @@ public interface WxCouponOrderMapper extends CommonMapper { Integer findWriteOffCount(WxCouponOrder wxCouponOrder); - WxCouponOrderBVo findGoodsList(WxCouponOrder record); + List findGoodsList(WxCouponOrderBVo record); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java index face8ae1f..6d14bab25 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java @@ -66,5 +66,6 @@ public interface WxOrderMapper extends CommonMapper { void updateOrderStatusForGroup(@Param("tenantId")String tenantId); void updateCUserId(WxOrder updateOrder); - + + List listGoodsCAsPage(WxOrder record); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index 669610531..eeec70312 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -229,5 +229,5 @@ public interface WxCouponOrderService { Integer findCount(WxCouponOrder wxCouponOrder); - PageInfo goodsListAsPage(WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize); + PageInfo goodsListAsPage(WxCouponOrderBVo couponOrderBvo, Integer pageNum, Integer pageSize); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 48df81196..9842d0848 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -244,4 +244,5 @@ public interface WxOrderService { ResultData composeSaveOrder(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); + PageInfo listGoodsCAsPage(WxOrder wxOrder, Integer pageNum, Integer pageSize); } 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 4c989b0fa..3f4eaa437 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -1743,7 +1743,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } @Override - public PageInfo goodsListAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { + public PageInfo goodsListAsPage(WxCouponOrderBVo record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findGoodsList(record)); } 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 fd4294b38..eeea75c16 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2519,7 +2519,12 @@ public class WxOrderServiceImpl implements WxOrderService { } - + + @Override + public PageInfo listGoodsCAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.listGoodsCAsPage(record)); + } + private WxCoupon singleOrderCheck(OrderSaveDto orderSaveDto,int productCount,WxCUserBasicInfo wxCUserBasicInfo,EnumPayWay payWay,TenantEntity tenantEntity,int curindex,boolean singleProduct) { logger.info("OrderSave: " + orderSaveDto); String premsg = ""; diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index d0f4b2031..a0e07c4c7 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -993,7 +993,7 @@ - select co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id, co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark, co.pay_vendor, @@ -1026,6 +1026,12 @@ and co.coupon_order_status = #{couponOrderStatus} + + and co.`shipping_status` in + + #{idItem} + + AND co.create_date > #{startDate,jdbcType=TIMESTAMP} diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 02bd0dacc..ac33b8d66 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -394,6 +394,30 @@ order by ${sortColumns} + + From fab0b2348ce27efe7c3961a8523ed7eaae00c0dc Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 29 Sep 2021 16:54:21 +0800 Subject: [PATCH 094/171] update couponOrder --- .../controller/WxOrderController.java | 14 -- .../iformall/domain/vo/WxOrderCouponVo.java | 5 + .../com/iformall/enums/EnumComposeOrder.java | 3 +- .../service/impl/WxOrderServiceImpl.java | 11 +- .../main/resources/mapper/WxOrderMapper.xml | 122 ++++++++++++++++-- 5 files changed, 130 insertions(+), 25 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index f51827083..ff4a729c4 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -456,20 +456,6 @@ public class WxOrderController extends BaseController { wxOrder.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); final PageInfo page = wxOrderService.listGoodsCAsPage(wxOrder, pageNum, pageSize); - Date now = new Date(); - page.getList().stream().forEach(oc->{ - if (oc.getValidStartDate() != null && oc.getValidEndDate() != null ) { - if (oc.getValidStartDate().getTime() > now.getTime()) { - oc.setValidStatus(EnumCouponOrderValidStatus.PREPARED.getCode()); - } else if (oc.getValidEndDate().getTime() < now.getTime()) { - oc.setValidStatus(EnumCouponOrderValidStatus.ENDED.getCode()); - } else { - oc.setValidStatus(EnumCouponChannelActivityStatus.STARTED.getCode()); - } - } - }); - - return new ResultData(page); } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java index 976255e97..a7a5c30f3 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java @@ -22,6 +22,11 @@ public class WxOrderCouponVo extends TenantEntity { @TableField(exist = false) private Integer validStatus; + @TableField(exist = false) + private Integer level; + @TableField(exist = false) + private List orderCouponVoList; + /** 基础购买到的券信息 */ @io.swagger.annotations.ApiModelProperty(value="订单码;正反向交易保持一致。",name="orderNumber") private Long orderNumber; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java index 0e0c0b12f..0e35883cf 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java @@ -10,7 +10,8 @@ public enum EnumComposeOrder { SINGLE(0, "单个订单类型,如拼团,砍价"), ONE_NUMBER_ORDER_BATCH(1, "购物车式组合下单,1个数量1个订单(针对同样产品)"), MULITY_NUMBER_ORDER_BATCH(2,"购物车式组合下单,多个数量1个订单(针对同样产品)"), - PACKAGECOUPON(3,"券包订单类型") + PACKAGECOUPON(3,"券包订单类型"), + PACKAGECOUPON_SUB(4,"券包子订单类型") ; public static EnumComposeOrder getEnum(Integer code) { 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 eeea75c16..1c0a6ad95 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2522,7 +2522,16 @@ public class WxOrderServiceImpl implements WxOrderService { @Override public PageInfo listGoodsCAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.listGoodsCAsPage(record)); + PageInfo page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.listGoodsCAsPage(record)); + page.getList().stream().forEach(oc->{ + if(oc.getLevel().equals(1)){ + record.setComposeOrderId(oc.getComposeOrderId()); + record.setOrderStatus(oc.getOrderStatus()); + oc.setOrderCouponVoList(wxOrderMapper.findListOfCUser(record)); + } + }); + + return page; } private WxCoupon singleOrderCheck(OrderSaveDto orderSaveDto,int productCount,WxCUserBasicInfo wxCUserBasicInfo,EnumPayWay payWay,TenantEntity tenantEntity,int curindex,boolean singleProduct) { diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 865cde0ee..aca495e0b 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -299,9 +299,12 @@ - + + + + @@ -348,6 +351,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + order by ${sortColumns} - + select * from( + + select 0 level,o.compose_order_type,o.compose_order_id,o.order_status,o.create_date, + o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.update_date, + c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date, + o.`freight_price`,o.`shipping_type`,o.`shipping_address` from wx_coupon c,wx_order o - left join wx_coupon_order co on co.order_id = o.id - where o.product_id = c.id and o.order_status in (0,1,2,3,4,5) + where o.product_id = c.id and o.order_status in (0,2) + and o.compose_order_type in (0,3) + and o.compose_order_id = 0 and o.c_user_id = #{cUserId} @@ -409,13 +468,58 @@ and o.`parent_tenant_id` = #{parentTenantId} - - and o.`compose_order_id` = #{composeOrderId} + + AND o.order_status = #{orderStatus} + + + union all + + select 0 level, o.compose_order_type,o.compose_order_id,o.order_status,o.create_date, + o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.update_date, + c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date, + o.`freight_price`,o.`shipping_type`,o.`shipping_address` + from wx_coupon c,wx_order o + where o.product_id = c.id and o.order_status in (1,3,4,5) + and o.compose_order_type in (0,1,2,3) + + and o.c_user_id = #{cUserId} + + + and o.`tenant_id` = #{tenantId} + + + and o.`parent_tenant_id` = #{parentTenantId} AND o.order_status = #{orderStatus} - order by ${sortColumns} + + union all + + select 1 level,o.compose_order_type,o.compose_order_id,o.order_status,min(create_date) create_date, + null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null , + null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null , + null ,null ,null + from wx_order o + where o.order_status in (0,2) + and o.compose_order_type in (1,2) + and o.compose_order_id > 0 + + and o.c_user_id = #{cUserId} + + + and o.`tenant_id` = #{tenantId} + + + and o.`parent_tenant_id` = #{parentTenantId} + + + AND o.order_status = #{orderStatus} + + group by o.compose_order_type,o.compose_order_id + + ) a + order by a.create_date desc @@ -451,10 +453,10 @@ + + + + @@ -450,6 +457,9 @@ and o.`compose_order_id` = #{composeOrderId} + + and o.`parent_order_id` = #{parentOrderId} + AND o.order_status = #{orderStatus} @@ -467,6 +477,7 @@ where o.product_id = c.id and o.order_status in (0,2) and o.compose_order_type = 0 and o.compose_order_id = 0 + and o.parent_order_id = 0 and o.c_user_id = #{cUserId} @@ -489,6 +500,7 @@ from wx_coupon c,wx_order o where o.product_id = c.id and o.order_status in (1,3,4,5) and o.compose_order_type in (0,1,2,3) + and o.parent_order_id = 0 and o.c_user_id = #{cUserId} @@ -512,6 +524,7 @@ where o.order_status in (0,2) and o.compose_order_type in (1,2,3) and o.compose_order_id > 0 + and o.parent_order_id = 0 and o.c_user_id = #{cUserId} @@ -550,6 +563,10 @@ and o.`compose_order_id` = #{composeOrderId} + + + and o.`parent_order_id` = #{parentOrderId} + and o.id = #{id} From 77035ae8a2d600432ef797020af1657338061a15 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 13 Oct 2021 09:56:04 +0800 Subject: [PATCH 143/171] update gift --- .../src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java index f9a12c6ae..4ff756555 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java @@ -117,6 +117,9 @@ public class WxOrderCouponVo extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="composeOrderId") private Long composeOrderId; + @io.swagger.annotations.ApiModelProperty(value="父订单编号",name="parentOrderId") + private Long parentOrderId; + @io.swagger.annotations.ApiModelProperty(value="商品数量",name="couponNumber") private Integer couponNumber; From b212ad706ed252447f2af8566cce9531d07da534 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 13 Oct 2021 11:18:52 +0800 Subject: [PATCH 144/171] update gift --- mallinkService/src/main/resources/mapper/WxOrderMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index b7eebfef3..01adaa994 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -435,7 +435,7 @@ o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status,o.create_date,o.update_date, c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date, o.compose_order_type,o.compose_order_id, - o.`coupon_number`,o.`freight_price`,o.`shipping_type`,o.`shipping_address`,o.parent_order_id, + o.`coupon_number`,o.`freight_price`,o.`shipping_type`,o.`shipping_address`,o.parent_order_id - + + From a4965a6052cae2ca62f5de503fcc487e13c61f43 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 19 Oct 2021 11:13:55 +0800 Subject: [PATCH 166/171] update gift --- .../main/java/com/iformall/service/impl/WxOrderServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 212def034..678e00654 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1387,7 +1387,7 @@ public class WxOrderServiceImpl implements WxOrderService { throw new MallinkException(ErrorCode.COUPON_IS_EMPTY); } if (coupon.getStatus() == EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode()) { - logger.error("券已下架, couponId: " + couponId); + logger.error("券已作废, couponId: " + couponId); throw new MallinkException(ErrorCode.COUPON_IS_TAKE_OFF.getCode(), coupon.getTitle() + ErrorCode.COUPON_IS_TAKE_OFF.getMessage()); } if (coupon.getSendType() != 3 || coupon.getSalePrice() != 0) { From a3ca902bf74cd04a900b0835395d6a08ac2a29a9 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 19 Oct 2021 13:44:08 +0800 Subject: [PATCH 167/171] update gift --- .../src/main/resources/mapper/WxCouponOrderMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 64565ddd8..8a06e0518 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -763,7 +763,7 @@ From 8b0dfc237ae91d2e51f0e584a69cdbd87b2d1471 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 19 Oct 2021 14:36:32 +0800 Subject: [PATCH 168/171] update gift --- .../src/main/resources/mapper/WxCouponOrderMapper.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 8a06e0518..4b816ecdf 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -967,6 +967,10 @@ and co.`shipping_type` = #{shippingType} + + + and co.`shipping_status` = #{shippingStatus} + From 30c3ca8f0d68fd2fc3d88552b094dad7948f06b5 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 20 Oct 2021 10:49:28 +0800 Subject: [PATCH 169/171] update gift --- .../java/com/iformall/schedule/CouponOrderExpiringSchedule.java | 2 +- .../com/iformall/service/impl/WxCouponOrderServiceImpl.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java index eab86260c..7ec13fed2 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java @@ -115,7 +115,7 @@ public class CouponOrderExpiringSchedule { } @Scheduled(cron = "0 0 5 * * ?") // 每天凌晨00:05 - // @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 +// @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 public void couponOrderGoodsVerifySchedule() {//14天确认收获 系统自动核销 List malls = getMalls(); 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 4d0ce01e7..30cd52805 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -428,6 +428,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { if(EnumCouponType.COUPON_DISTRIBUTION.getCode().equals(wxCoupon.getType())){ //可配送商品 WxCouponMerchant wxCouponMerchant = new WxCouponMerchant(); + wxCouponMerchant.updateTenantInfo(wxCoupon); wxCouponMerchant.setProductId(wxCoupon.getId()); wxCouponMerchant.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode()); WxCouponMerchant cm = null; From e9c756373138481a26357f718edba601f8bf9b03 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 20 Oct 2021 16:40:00 +0800 Subject: [PATCH 170/171] update gift --- .../main/java/com/iformall/domain/vo/WxCouponOrderBVo.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java index a07b193ca..52c796c9c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java @@ -249,5 +249,12 @@ public class WxCouponOrderBVo extends WxCouponOrder { } return couponPriceStr; } + @Excel(name = "配送类型", width = 50, orderNum = "16", replace = {"线上购买_0", "到店自提_1", "配送到家_2"}) + @io.swagger.annotations.ApiModelProperty(value="配送类型 0:默认(无) 1:自提 2:配送",name="shippingType") + private Integer shippingType; + + @Excel(name = "配送状态", width = 50, orderNum = "17", replace = {"线上购买_0", "待自提_10", "待自提_14", "已自提_15", "待发货_20", "待收货_24", "已收货_25"}) + @io.swagger.annotations.ApiModelProperty(value="配送状态 0:默认(无) 1*:自提 2*:配送",name="shippingStatus") + private Integer shippingStatus; } From 2441604b979e102ec5c6db00454290b4e5c3b9aa Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 21 Oct 2021 11:10:49 +0800 Subject: [PATCH 171/171] update gift --- .../src/main/resources/mapper/WxCouponOrderMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 4b816ecdf..61536355e 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -763,7 +763,7 @@