From 67ed1ff35244a68f3e9bd182447500cd6f46448a Mon Sep 17 00:00:00 2001 From: winter Date: Fri, 27 May 2022 22:39:46 +0800 Subject: [PATCH 01/97] =?UTF-8?q?fix=20=E6=B7=BB=E5=8A=A0=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E6=8E=A8=E9=80=81=E8=AE=A2=E5=8D=95=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxOrderController.java | 21 +++ .../domain/dto/PlatPushOrderSaveDto.java | 32 ++++ .../com/iformall/service/WxOrderService.java | 8 +- .../service/impl/WxOrderServiceImpl.java | 158 ++++++++++++++---- .../service/order/OrderAdapterService.java | 5 + .../order/impl/SingleOrderAdapterService.java | 10 +- .../batch/BaseBatchOrderAdapterService.java | 27 ++- .../CouponPackageOrderAdapterService.java | 10 +- ...umberOneOrderBatchOrderAdapterService.java | 10 +- ...umberOneOrderBatchOrderAdapterService.java | 10 ++ 10 files changed, 252 insertions(+), 39 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/dto/PlatPushOrderSaveDto.java diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 92c32c30b..1ecab3107 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -8,6 +8,7 @@ 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.dto.PlatPushOrderSaveDto; import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.vo.WxCouponCVo; @@ -138,6 +139,26 @@ public class WxOrderController extends BaseController { return wxOrderService.composeSaveOrder(false,EnumComposeOrder.SINGLE,list,memberId,getPayWay(),getTenantInfo()); } + @ApiOperation(value = "抖音支付2.0与下单回调推送订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") + @PostMapping("save") + public ResultData douyinPushOrder(@RequestBody Map param) { + logger.info("save douyinPushOrder:"+param); + Long memberId; + try { + memberId = getMemberId(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + + List list = new ArrayList<>(); + PlatPushOrderSaveDto dto = new PlatPushOrderSaveDto(); + //TODO 从抖音推送的订单中取信息 + list.add(dto); + return wxOrderService.platPushSaveOrder(false,EnumComposeOrder.ONE_NUMBER_ORDER_BATCH,list,memberId,getPayWay(),getTenantInfo()); + } + + + @ApiOperation(value = "取消订单", notes = "{\"orderId\":\"string\"}") @PostMapping("cancel") public ResultData cancelOrder(@RequestBody Map paramMap) { diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/PlatPushOrderSaveDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/PlatPushOrderSaveDto.java new file mode 100644 index 000000000..f3c7cd65a --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/dto/PlatPushOrderSaveDto.java @@ -0,0 +1,32 @@ +package com.iformall.domain.dto; + +import lombok.Data; +import java.io.Serializable; + +import com.iformall.domain.po.UserBasicInfoAddress; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxCouponChannel; + +@Data +public class PlatPushOrderSaveDto implements Serializable { + + private static final long serialVersionUID = 1L; + + Long couponChannelId;//【传入参数】渠道商品编号,对饮我们系统的编号 + + int count;//【传入参数】购买数量 + + Long orderGroupId;//【传入参数】拼团主订单号 + + boolean isPress = false;//【传入参数】,是否砍价 + String formId ; //【传入参数】,非必传 + + Integer shippingType = 0;//EnumOrderShopingType【传入参数】配送类型 + UserBasicInfoAddress address;//【传入参数】配送地址 + + String extParam;//【传入参数】json,额外的信息,可能每个平台不一样 + + WxCoupon wxCoupon;//【非传入参数】。 + WxCouponChannel wxCouponChannel;//【非传入参数】。 + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index dc5d323de..29bc1c445 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -11,6 +11,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.dto.PlatPushOrderSaveDto; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxCouponSendVo; @@ -215,8 +216,8 @@ public interface WxOrderService { Integer shippingType, UserBasicInfoAddress address); // 3. 创建有价订单 - WxOrder saveNoFreeOrderForCoupon(Date orderDate,boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,WxCouponChannel couponChannel, - OrderComposeSaveDto orderdto,EnumPayWay payWay); + WxOrder saveNoFreeOrderForCoupon(Date orderDate,boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, + boolean isPressOrder,Long orderGroupId,String formId,Integer shippinType,UserBasicInfoAddress address,WxCouponChannel couponChannel,EnumPayWay payWay); /** * 下订单成功后处理 @@ -244,6 +245,9 @@ 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); + + //平台推送订单,如抖音支付2.0 + ResultData platPushSaveOrder(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,List platPushOrderList,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); void sendInsideOrderPushMsg(TenantEntity tenantEntity,Long composeOrderId); 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 b87fe3b16..bb44ec319 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -57,6 +57,7 @@ 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.PlatPushOrderSaveDto; import com.iformall.domain.dto.WxSharingOrderDto; import com.iformall.domain.po.base.TenantEntity; import com.iformall.exception.MallinkException; @@ -2765,6 +2766,51 @@ public class WxOrderServiceImpl implements WxOrderService { @Autowired @Qualifier("cUserBasicInfoRedisTemplate") RedisTemplate cUserBasicInfoRedisTemplate; + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public WxComposeOrder savePlatPushOrderForCoupon(TenantEntity tenantEntity,boolean allowUnPayOrder,EnumComposeOrder composeOrderType,WxCUserBasicInfo user,List platPushOrderList,EnumPayWay payWay) { + WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); + // 防止同一用户重复下单,1秒内 + String key = new StringBuilder().append("savePlatPushOrder:").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); + + OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrderType.getCode()); + //从这里开始,就需要锁住渠道的价格,不能修改 + WxComposeOrder composeOrder = orderAdapterService.createDBMainOrderByPushOrder(tenantEntity,user, platPushOrderList, payWay); + Date orderDate = new Date(); + WxOrder lastOrder = null; + for (int i = 0 ; i < platPushOrderList.size(); i ++) { + PlatPushOrderSaveDto orderdto = platPushOrderList.get(i); + + Map couponChannelMap = composeOrder.getCouponChannelMap(); + Long couponChannelId = orderdto.getCouponChannelId(); + WxCouponChannel couponChannel = couponChannelMap.get(couponChannelId); + orderdto.setWxCouponChannel(couponChannel); + + //券一个数量创建一个订单 + boolean isOneNumberOneOrder = orderAdapterService.isOneNumberOneOrder(); + if (isOneNumberOneOrder) { + for (int j = 0; j < orderdto.getCount(); j++) { + lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), 1, + orderdto.isPress(),orderdto.getOrderGroupId(),orderdto.getFormId(),orderdto.getShippingType(),orderdto.getAddress(),orderdto.getWxCouponChannel(), payWay); + } + }else { + lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), + orderdto.isPress(),orderdto.getOrderGroupId(),orderdto.getFormId(),orderdto.getShippingType(),orderdto.getAddress(),orderdto.getWxCouponChannel(), payWay); + } + } + //如果没有orderId,则用lastOrder的信息 + if (EnumComposeOrder.isSingle(composeOrderType.getCode())) { + composeOrder.setSingleOrder(lastOrder); + } + return composeOrder; + } + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public WxComposeOrder saveOrderForCoupon(TenantEntity tenantEntity,boolean allowUnPayOrder,EnumComposeOrder composeOrderType,WxCUserBasicInfo user,List orderSave,EnumPayWay payWay) { @@ -2795,10 +2841,14 @@ public class WxOrderServiceImpl implements WxOrderService { boolean isOneNumberOneOrder = orderAdapterService.isOneNumberOneOrder(); if (isOneNumberOneOrder) { for (int j = 0; j < orderdto.getCount(); j++) { - lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), 1, orderdto, payWay); + lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), 1, + orderdto.getSignleOrder().isPressOrder(),orderdto.getSignleOrder().getOrderGroupId(),orderdto.getSignleOrder().getFormId(), + orderdto.getShippingType(),orderdto.getAddress(),orderdto.getWxCouponChannel(), payWay); } }else { - lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), orderdto, payWay); + lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), + orderdto.getSignleOrder().isPressOrder(),orderdto.getSignleOrder().getOrderGroupId(),orderdto.getSignleOrder().getFormId(), + orderdto.getShippingType(),orderdto.getAddress(),orderdto.getWxCouponChannel(), payWay); } } //如果没有orderId,则用lastOrder的信息 @@ -2809,15 +2859,15 @@ public class WxOrderServiceImpl implements WxOrderService { } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder handleSaveOrderForCouponSingle(Date orderDate,boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user,WxCoupon coupon,int perCouponNumber,OrderComposeSaveDto orderdto,EnumPayWay payWay) { + public WxOrder handleSaveOrderForCouponSingle(Date orderDate,boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user,WxCoupon coupon,int perCouponNumber, + boolean isPressOrder,Long orderGroupId,String formId,Integer shippinType,UserBasicInfoAddress address,WxCouponChannel couponChannel,EnumPayWay payWay) { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); // 是否砍价 WxOrder order = null; - WxCouponChannel couponChannel = orderdto.getWxCouponChannel(); - if (checkCouponIsFree(coupon,couponChannel,orderdto.getShippingType())) { + if (checkCouponIsFree(coupon,couponChannel,shippinType)) { // 免费券 order = proxy.saveFreeOrderForCoupon(orderDate,allowUnPayOrder,composeOrder,user, coupon,perCouponNumber,couponChannel, - orderdto.getSignleOrder().getFormId(),null,payWay,orderdto.getShippingType(),orderdto.getAddress()); + formId,null,payWay,shippinType,address); if (order != null) { // 6. 下订单完成,发送内部消息 // 下订单完成,发送内部消息 @@ -2830,7 +2880,8 @@ public class WxOrderServiceImpl implements WxOrderService { } } else { // 有价券 - order = proxy.saveNoFreeOrderForCoupon(orderDate,allowUnPayOrder,composeOrder,user, orderdto.getWxCoupon(),perCouponNumber,couponChannel,orderdto,payWay); + order = proxy.saveNoFreeOrderForCoupon(orderDate,allowUnPayOrder,composeOrder,user, coupon,perCouponNumber,isPressOrder, + orderGroupId,formId,shippinType,address,couponChannel,payWay); } // couponActionLog // try { @@ -2936,7 +2987,8 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveNoFreeOrderForCoupon(Date orderDate,boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,WxCouponChannel couponChannel,OrderComposeSaveDto orderdto,EnumPayWay payWay) { + public WxOrder saveNoFreeOrderForCoupon(Date orderDate,boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, + boolean isPressOrder,Long orderGroupId,String formId,Integer shippinType,UserBasicInfoAddress address,WxCouponChannel couponChannel,EnumPayWay payWay) { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); // 3. 减库存操作。所有的订单都跟减库存操作时的订单详情保持一致 @@ -2970,22 +3022,22 @@ public class WxOrderServiceImpl implements WxOrderService { Long orderNumber; // 4.1 价格 渠道/券 WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()) - .getChildCouponOrderPrice(orderdto,coupon,couponChannel, orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), couponNumber); + .getChildCouponOrderPrice(shippinType,coupon,couponChannel, isPressOrder, orderGroupId, couponNumber); - Integer orderStatus = OrderHelper.getOrderStatusWxCoupon(coupon, orderdto.getSignleOrder().getOrderGroupId()); + Integer orderStatus = OrderHelper.getOrderStatusWxCoupon(coupon, orderGroupId); // 4.2 保存订单 WxOrder record = new WxOrder(); record.setType(orderType); record.setPayVendor(payWay.getCode()); - record.setCouponChannelId(orderdto.getSignleOrder().getCouponChannelId()); - record.setOrderGroupId(orderdto.getSignleOrder().getOrderGroupId()); - record.setFormId(orderdto.getSignleOrder().getFormId()); + record.setCouponChannelId(couponChannel.getId()); + record.setOrderGroupId(orderGroupId); + record.setFormId(formId); record.setPayment(price.getRealPayMent()); - record.setShippingType(orderdto.getShippingType()); - if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(orderdto.getShippingType())){ + record.setShippingType(shippinType); + if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(shippinType)){ record.setFreightPrice(coupon.getFreightPrice()); - record.setShippingAddress(JSON.toJSONString(orderdto.getAddress())); + record.setShippingAddress(JSON.toJSONString(address)); } record.setOrderStatus(orderStatus); @@ -2998,13 +3050,13 @@ public class WxOrderServiceImpl implements WxOrderService { record.setCouponNumber(couponNumber); try { - orderNumber = proxy.saveNoFreeOrder(orderDate,record, user, coupon, orderdto.getSignleOrder().isPressOrder()); + orderNumber = proxy.saveNoFreeOrder(orderDate,record, user, coupon, isPressOrder); } catch (Exception e) { logger.error("保存订单:" + e.getMessage(),e); throw new MallinkException(ErrorCode.ORDER_SAVE_ERR.getCode(),"["+coupon.getTitle()+"]订单保存错误,"+e.getMessage()); } - if (orderdto.getSignleOrder().isPressOrder()) { + if (isPressOrder) { // 5. 第一次砍价 try { proxy.firstPress(orderDate,record, user, coupon, orderNumber); @@ -3315,7 +3367,8 @@ public class WxOrderServiceImpl implements WxOrderService { for ( int i =0 ; i< composeOrderSaveDto.size(); i++ ) { OrderComposeSaveDto ocsd = composeOrderSaveDto.get(i); - WxCoupon coupon = singleOrderCheck(ocsd.getSignleOrder(),ocsd.getCount(),wxCUserBasicInfo,payWay,tenantEntity,i+1,singleProduct); + WxCoupon coupon = singleOrderCheck(ocsd.getSignleOrder().getCouponChannelId(),ocsd.getSignleOrder().getOrderGroupId(),ocsd.getCount(), + wxCUserBasicInfo,payWay,tenantEntity,i+1,singleProduct); ocsd.setWxCoupon(coupon); } WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); @@ -3338,6 +3391,50 @@ public class WxOrderServiceImpl implements WxOrderService { } } + + @Override + public ResultData platPushSaveOrder(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,List platPushOrderList,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) { + try { + if (null == platPushOrderList || platPushOrderList.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 (platPushOrderList.size() == 1) { + singleProduct = true; + } + + for ( int i =0 ; i< platPushOrderList.size(); i++ ) { + PlatPushOrderSaveDto ocsd = platPushOrderList.get(i); + WxCoupon coupon = singleOrderCheck(ocsd.getCouponChannelId(),ocsd.getOrderGroupId(),ocsd.getCount(),wxCUserBasicInfo,payWay,tenantEntity,i+1,singleProduct); + ocsd.setWxCoupon(coupon); + } + WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); + try { + WxComposeOrder order = proxy.savePlatPushOrderForCoupon(tenantEntity,allowUnPayOrder,composeOrderType,wxCUserBasicInfo, platPushOrderList, 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 void sendInsideOrderPushMsg(TenantEntity tenantEntity,Long composeOrderId) { @@ -3459,26 +3556,25 @@ public class WxOrderServiceImpl implements WxOrderService { // } - private WxCoupon singleOrderCheck(OrderSaveDto orderSaveDto,int productCount,WxCUserBasicInfo wxCUserBasicInfo,EnumPayWay payWay,TenantEntity tenantEntity,int curindex,boolean singleProduct) { - logger.info("OrderSave: " + orderSaveDto); + private WxCoupon singleOrderCheck(Long couponChannelId,Long orderGroupId,int productCount,WxCUserBasicInfo wxCUserBasicInfo,EnumPayWay payWay,TenantEntity tenantEntity,int curindex,boolean singleProduct) { String premsg = ""; if (singleProduct) { premsg = "此券"; }else { premsg = "第["+curindex+"]张券"; } - if (orderSaveDto.getCouponChannelId() == null) { + if (couponChannelId == null) { throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), premsg+"couponChannelId不能为空"); } - WxCouponChannel wxCouponChannel = wxCouponChannelService.getById(orderSaveDto.getCouponChannelId(),tenantEntity.getTenantId()); + WxCouponChannel wxCouponChannel = wxCouponChannelService.getById(couponChannelId,tenantEntity.getTenantId()); if (wxCouponChannel == null) { - logger.error("couponChannelId find error, " + orderSaveDto.getCouponChannelId()); + logger.error("couponChannelId find error, " + couponChannelId); throw new MallinkException(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF.getCode(),premsg+"投放渠道不存在"); } if (!singleProduct) { premsg = premsg+"【"+wxCouponChannel.getTitle()+"】"; } - couponChannelCheck(orderSaveDto, wxCouponChannel,premsg); + couponChannelCheck(wxCouponChannel,premsg); WxCoupon coupon = wxCouponService.getById(wxCouponChannel.getCouponId(),wxCouponChannel.getTenantId()); if (null == coupon) { @@ -3499,7 +3595,7 @@ public class WxOrderServiceImpl implements WxOrderService { WxCouponCVo wxCouponCVo = null; - String key = "cc:" + orderSaveDto.getCouponChannelId(); + String key = "cc:" + couponChannelId; ValueOperations operations = cdRedisTemplate.opsForValue(); // 缓存 boolean hasKey = cdRedisTemplate.hasKey(key); @@ -3508,7 +3604,7 @@ public class WxOrderServiceImpl implements WxOrderService { wxCouponCVo = operations.get(key); } else { // 游戏没有入缓存,需要从数据库中读取 - wxCouponCVo = wxCouponChannelService.findDetailVo(orderSaveDto.getCouponChannelId(),wxCouponChannel.getTenantId(),false); + wxCouponCVo = wxCouponChannelService.findDetailVo(couponChannelId,wxCouponChannel.getTenantId(),false); if (wxCouponCVo != null) { // 游戏优化,进缓存 cdRedisTemplate.opsForValue().set(key, wxCouponCVo, 3600, TimeUnit.SECONDS); @@ -3565,7 +3661,7 @@ public class WxOrderServiceImpl implements WxOrderService { couponUserCheck(wxCUserBasicInfo, wxCouponCVo,premsg); - Long couponId = orderSaveDto.getCouponId() == null ? wxCouponChannel.getCouponId() : orderSaveDto.getCouponId(); + Long couponId = wxCouponChannel.getCouponId(); if (couponId == null) { logger.error("couponChannelId或者couponId不能为空"); throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), premsg+"couponChannelId或者couponId不能为空"); @@ -3582,14 +3678,14 @@ public class WxOrderServiceImpl implements WxOrderService { if (!checkCouponIsFree(coupon,wxCouponChannel,null)) { // 有价,拼团检查 - if (isOrderGroup(orderSaveDto.getOrderGroupId())) { - checkOrderGroup(wxCUserBasicInfo, orderSaveDto.getOrderGroupId(),coupon,premsg); + if (isOrderGroup(orderGroupId)) { + checkOrderGroup(wxCUserBasicInfo, orderGroupId,coupon,premsg); } } return coupon; } - private void couponChannelCheck(OrderSaveDto orderSaveDto, WxCouponChannel wxCouponChannel,String premsg) { + private void couponChannelCheck(WxCouponChannel wxCouponChannel,String premsg) { if (wxCouponChannel.getTargetAd().equals(EnumCouponChannelType.COUPON_CHANNEL_ID_TIMED.getCode())) { Date now = new Date(); if (wxCouponChannel.getBeginTime().getTime() > now.getTime()) { 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 5168a097f..9fa481af6 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java @@ -4,6 +4,7 @@ import java.util.Date; import java.util.List; import com.iformall.domain.dto.OrderComposeSaveDto; +import com.iformall.domain.dto.PlatPushOrderSaveDto; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.EnumPayWay; @@ -20,6 +21,9 @@ public interface OrderAdapterService { WxComposeOrder createDBMainOrder(TenantEntity tenantEntity,WxCUserBasicInfo user,int payment,EnumPayWay payWay); + //第三方平台推送过来的订单 + WxComposeOrder createDBMainOrderByPushOrder(TenantEntity tenantEntity,WxCUserBasicInfo user,List platPushOrderList,EnumPayWay payWay); + /** * 获取支付时商品名称,供服务商API使用 * @param lastCoupon @@ -39,6 +43,7 @@ public interface OrderAdapterService { * @return */ WxComposeChildOrderPrice getChildCouponOrderPrice(OrderComposeSaveDto orderdto,WxCoupon coupon,WxCouponChannel couponChannel,boolean isPress,Long orderGroupId,Integer couponNumber); + WxComposeChildOrderPrice getChildCouponOrderPrice(Integer shippingType,WxCoupon coupon,WxCouponChannel couponChannel,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 ec369460c..688858a82 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 @@ -14,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional; import com.iformall.common.IdWorker; import com.iformall.domain.dto.OrderComposeSaveDto; +import com.iformall.domain.dto.PlatPushOrderSaveDto; import com.iformall.enums.EnumComposeOrder; import com.iformall.enums.EnumOrderShopingType; import com.iformall.enums.EnumPayWay; @@ -51,6 +52,13 @@ public class SingleOrderAdapterService extends BaseBatchOrderAdapterService { return super.createDBMainOrder(tenantEntity,user, payment, payWay, EnumComposeOrder.SINGLE,null); } + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + @Override + public WxComposeOrder createDBMainOrderByPushOrder(TenantEntity tenantEntity, WxCUserBasicInfo user, + List platPushOrderList, EnumPayWay payWay) { + return super.createDBMainOrderForPushOrders(tenantEntity, user, platPushOrderList, payWay, EnumComposeOrder.SINGLE); + } + @Override public boolean isOneNumberOneOrder() { return true; @@ -88,6 +96,4 @@ public class SingleOrderAdapterService extends BaseBatchOrderAdapterService { return lastCoupon.getTitle(); } - - } 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 6b7ab73ec..c430e4cd1 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 @@ -13,6 +13,7 @@ import org.springframework.transaction.annotation.Transactional; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.domain.dto.OrderComposeSaveDto; +import com.iformall.domain.dto.PlatPushOrderSaveDto; import com.iformall.domain.po.WxBatchOrder; import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCoupon; @@ -60,15 +61,21 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic @Override public WxComposeChildOrderPrice getChildCouponOrderPrice(OrderComposeSaveDto orderdto,WxCoupon coupon,WxCouponChannel couponChannel,boolean isPress,Long orderGroupId,Integer couponNumber) { + return getChildCouponOrderPrice(orderdto.getShippingType(),coupon,couponChannel,isPress,orderGroupId,couponNumber); + } + + @Override + public WxComposeChildOrderPrice getChildCouponOrderPrice(Integer shippingType,WxCoupon coupon,WxCouponChannel couponChannel,boolean isPress,Long orderGroupId,Integer couponNumber) { Integer perPrice = OrderHelper.getCouponPerPayment(coupon,couponChannel, isPress, orderGroupId); Integer freightPrice = 0; //在线配送加上运费 - if (EnumOrderShopingType.DISTRIBUTION.getCode().equals(orderdto.getShippingType())) { + if (EnumOrderShopingType.DISTRIBUTION.getCode().equals(shippingType)) { freightPrice = coupon.getFreightPrice(); } return new WxComposeChildOrderPrice(perPrice, couponNumber, freightPrice, coupon.getId()); } + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) protected WxComposeOrder createDBMainOrder(TenantEntity tenantEntity,WxCUserBasicInfo user,List orderSave,EnumPayWay payWay,EnumComposeOrder composeOrderType) { int payment = 0; @@ -87,6 +94,24 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic return createDBMainOrder(tenantEntity, user, payment, payWay, composeOrderType,couponChannelMap); } + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + protected WxComposeOrder createDBMainOrderForPushOrders(TenantEntity tenantEntity,WxCUserBasicInfo user,List platPushOrderList,EnumPayWay payWay,EnumComposeOrder composeOrderType) { + int payment = 0; + Map couponChannelMap = new HashMap(); + for (PlatPushOrderSaveDto ocsd : platPushOrderList) { + WxCouponChannel wxCouponChannel = wxCouponChannelService.getById(ocsd.getCouponChannelId(),tenantEntity.getTenantId()); + if (null == wxCouponChannel) { + throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR.getCode(),"渠道不存在:"+ocsd.getCouponChannelId()); + } + boolean isPress = ocsd.isPress(); + WxComposeChildOrderPrice price = getChildCouponOrderPrice(ocsd.getShippingType(),ocsd.getWxCoupon(),wxCouponChannel, isPress, ocsd.getOrderGroupId(), ocsd.getCount()); + payment = payment+price.getRealPayMent(); + couponChannelMap.put(wxCouponChannel.getId(), wxCouponChannel); + } + + return createDBMainOrder(tenantEntity, user, payment, payWay, composeOrderType,couponChannelMap); + } + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) protected WxComposeOrder createDBMainOrder(TenantEntity tenantEntity,WxCUserBasicInfo user,int payment,EnumPayWay payWay,EnumComposeOrder composeOrderType,Map couponChannelMap) { //判断是否poi订单 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 c4ebb524e..0ba70d080 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 @@ -17,6 +17,7 @@ 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.dto.PlatPushOrderSaveDto; import com.iformall.service.order.entity.WxComposeOrder; /** * 券包批量下单 @@ -40,6 +41,13 @@ public class CouponPackageOrderAdapterService extends BaseBatchOrderAdapterServi EnumPayWay payWay) { return super.createDBMainOrder(tenantEntity, user, payment, payWay, EnumComposeOrder.PACKAGECOUPON,null); } + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + @Override + public WxComposeOrder createDBMainOrderByPushOrder(TenantEntity tenantEntity, WxCUserBasicInfo user, + List platPushOrderList, EnumPayWay payWay) { + return super.createDBMainOrderForPushOrders(tenantEntity, user, platPushOrderList, payWay, EnumComposeOrder.PACKAGECOUPON); + } @Override public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { @@ -73,6 +81,4 @@ public class CouponPackageOrderAdapterService extends BaseBatchOrderAdapterServi 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 541e7490e..ca6ffc98e 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 @@ -11,6 +11,7 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.iformall.domain.dto.OrderComposeSaveDto; +import com.iformall.domain.dto.PlatPushOrderSaveDto; import com.iformall.enums.EnumComposeOrder; import com.iformall.enums.EnumPayWay; import com.iformall.service.order.entity.WxComposeOrder; @@ -42,6 +43,14 @@ public class MulityNumberOneOrderBatchOrderAdapterService extends BaseBatchOrder return super.createDBMainOrder(tenantEntity,user, payment, payWay, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH,null); } + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + @Override + public WxComposeOrder createDBMainOrderByPushOrder(TenantEntity tenantEntity, WxCUserBasicInfo user, + List platPushOrderList, EnumPayWay payWay) { + return super.createDBMainOrderForPushOrders(tenantEntity, user, platPushOrderList, payWay, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH); + } + + @Override public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { return super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH); @@ -61,6 +70,5 @@ public class MulityNumberOneOrderBatchOrderAdapterService extends BaseBatchOrder 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 abed93602..9bbe973ed 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 @@ -10,6 +10,7 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.iformall.domain.dto.OrderComposeSaveDto; +import com.iformall.domain.dto.PlatPushOrderSaveDto; import com.iformall.enums.EnumComposeOrder; import com.iformall.enums.EnumPayWay; import com.iformall.service.order.entity.WxComposeOrder; @@ -40,6 +41,13 @@ public class OneNumberOneOrderBatchOrderAdapterService extends BaseBatchOrderAda EnumPayWay payWay) { return super.createDBMainOrder(tenantEntity,user, payment, payWay, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH,null); } + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + @Override + public WxComposeOrder createDBMainOrderByPushOrder(TenantEntity tenantEntity, WxCUserBasicInfo user, + List platPushOrderList, EnumPayWay payWay) { + return super.createDBMainOrderForPushOrders(tenantEntity, user, platPushOrderList, payWay, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH); + } @Override public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { @@ -62,5 +70,7 @@ public class OneNumberOneOrderBatchOrderAdapterService extends BaseBatchOrderAda } + + } From 30fb203202e6d0cbeecfbc798b72450884b2bb06 Mon Sep 17 00:00:00 2001 From: winter Date: Fri, 27 May 2022 22:44:54 +0800 Subject: [PATCH 02/97] fix bug --- .../main/java/com/iformall/controller/WxOrderController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 1ecab3107..a70c73d90 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -140,7 +140,7 @@ public class WxOrderController extends BaseController { } @ApiOperation(value = "抖音支付2.0与下单回调推送订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") - @PostMapping("save") + @PostMapping("douyinPushOrder") public ResultData douyinPushOrder(@RequestBody Map param) { logger.info("save douyinPushOrder:"+param); Long memberId; From 50529ac9f182caa7796a88562915782e0507adb2 Mon Sep 17 00:00:00 2001 From: winter Date: Sun, 29 May 2022 11:31:16 +0800 Subject: [PATCH 03/97] fix --- .../migration/V2022052700002__push_order.sql | 101 ++++++++++++++++++ .../com/iformall/domain/po/WxBatchOrder.java | 3 + .../com/iformall/service/WxOrderService.java | 4 +- .../service/impl/WxOrderServiceImpl.java | 22 ++-- .../batch/BaseBatchOrderAdapterService.java | 5 +- .../resources/mapper/WxBatchOrderMapper.xml | 5 +- 6 files changed, 125 insertions(+), 15 deletions(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V2022052700002__push_order.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022052700002__push_order.sql b/mallinkAdmin/src/main/resources/db/migration/V2022052700002__push_order.sql new file mode 100644 index 000000000..41d1b9db3 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2022052700002__push_order.sql @@ -0,0 +1,101 @@ +ALTER TABLE wx_batch_order_0 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_1 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_2 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_3 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_4 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_5 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_6 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_7 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_8 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_9 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_10 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_11 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_12 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_13 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_14 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_15 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_16 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_17 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_18 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_19 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_20 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_21 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_22 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_23 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_24 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_25 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_26 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_27 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_28 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_29 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_30 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_31 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_32 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_33 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_34 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_35 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_36 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_37 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_38 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_39 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_40 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_41 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_42 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_43 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_44 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_45 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_46 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_47 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_48 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_49 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_50 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_51 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_52 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_53 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_54 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_55 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_56 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_57 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_58 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_59 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_60 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_61 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_62 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_63 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_64 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_65 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_66 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_67 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_68 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_69 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_70 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_71 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_72 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_73 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_74 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_75 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_76 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_77 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_78 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_79 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_80 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_81 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_82 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_83 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_84 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_85 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_86 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_87 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_88 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_89 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_90 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_91 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_92 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_93 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_94 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_95 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_96 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_97 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_98 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_99 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_batch_order_ ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; \ No newline at end of file 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 f96e0d7fd..a0bf97718 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java @@ -42,6 +42,9 @@ public class WxBatchOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "EnumYesOrNo是否抖音poi订单", name = "isTtPoiOrder") private Integer isTtPoiOrder; + + @io.swagger.annotations.ApiModelProperty(value = "额外参数", name = "extParam") + private String extParam; @TableField(exist = false) @io.swagger.annotations.ApiModelProperty(value = "订单集合", name = "orders") diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 29bc1c445..82c9398d7 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -212,12 +212,12 @@ public interface WxOrderService { // 2. 创建免费订单, 领取 couponOrder WxOrder saveFreeOrderForCoupon(Date orderDate,boolean allowUnPayOrder,WxComposeOrder composeOrder, WxCUserBasicInfo user, WxCoupon coupon, int couponNumber, - WxCouponChannel couponChannel, String formId, Long couponPasswordId, EnumPayWay payWay, + WxCouponChannel couponChannel, String formId, Long couponPasswordId,String extParam, EnumPayWay payWay, Integer shippingType, UserBasicInfoAddress address); // 3. 创建有价订单 WxOrder saveNoFreeOrderForCoupon(Date orderDate,boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, - boolean isPressOrder,Long orderGroupId,String formId,Integer shippinType,UserBasicInfoAddress address,WxCouponChannel couponChannel,EnumPayWay payWay); + boolean isPressOrder,Long orderGroupId,String formId,Integer shippinType,UserBasicInfoAddress address,String extParam,WxCouponChannel couponChannel,EnumPayWay payWay); /** * 下订单成功后处理 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 bb44ec319..31be9b8e8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2797,11 +2797,13 @@ public class WxOrderServiceImpl implements WxOrderService { if (isOneNumberOneOrder) { for (int j = 0; j < orderdto.getCount(); j++) { lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), 1, - orderdto.isPress(),orderdto.getOrderGroupId(),orderdto.getFormId(),orderdto.getShippingType(),orderdto.getAddress(),orderdto.getWxCouponChannel(), payWay); + orderdto.isPress(),orderdto.getOrderGroupId(),orderdto.getFormId(),orderdto.getShippingType(),orderdto.getAddress(),orderdto.getExtParam(), + orderdto.getWxCouponChannel(), payWay); } }else { lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), - orderdto.isPress(),orderdto.getOrderGroupId(),orderdto.getFormId(),orderdto.getShippingType(),orderdto.getAddress(),orderdto.getWxCouponChannel(), payWay); + orderdto.isPress(),orderdto.getOrderGroupId(),orderdto.getFormId(),orderdto.getShippingType(),orderdto.getAddress(),orderdto.getExtParam(), + orderdto.getWxCouponChannel(), payWay); } } //如果没有orderId,则用lastOrder的信息 @@ -2843,12 +2845,12 @@ public class WxOrderServiceImpl implements WxOrderService { for (int j = 0; j < orderdto.getCount(); j++) { lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), 1, orderdto.getSignleOrder().isPressOrder(),orderdto.getSignleOrder().getOrderGroupId(),orderdto.getSignleOrder().getFormId(), - orderdto.getShippingType(),orderdto.getAddress(),orderdto.getWxCouponChannel(), payWay); + orderdto.getShippingType(),orderdto.getAddress(),null,orderdto.getWxCouponChannel(), payWay); } }else { lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), orderdto.getSignleOrder().isPressOrder(),orderdto.getSignleOrder().getOrderGroupId(),orderdto.getSignleOrder().getFormId(), - orderdto.getShippingType(),orderdto.getAddress(),orderdto.getWxCouponChannel(), payWay); + orderdto.getShippingType(),orderdto.getAddress(),null,orderdto.getWxCouponChannel(), payWay); } } //如果没有orderId,则用lastOrder的信息 @@ -2860,14 +2862,14 @@ public class WxOrderServiceImpl implements WxOrderService { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public WxOrder handleSaveOrderForCouponSingle(Date orderDate,boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user,WxCoupon coupon,int perCouponNumber, - boolean isPressOrder,Long orderGroupId,String formId,Integer shippinType,UserBasicInfoAddress address,WxCouponChannel couponChannel,EnumPayWay payWay) { + boolean isPressOrder,Long orderGroupId,String formId,Integer shippinType,UserBasicInfoAddress address,String extParam,WxCouponChannel couponChannel,EnumPayWay payWay) { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); // 是否砍价 WxOrder order = null; if (checkCouponIsFree(coupon,couponChannel,shippinType)) { // 免费券 order = proxy.saveFreeOrderForCoupon(orderDate,allowUnPayOrder,composeOrder,user, coupon,perCouponNumber,couponChannel, - formId,null,payWay,shippinType,address); + formId,null,extParam,payWay,shippinType,address); if (order != null) { // 6. 下订单完成,发送内部消息 // 下订单完成,发送内部消息 @@ -2881,7 +2883,7 @@ public class WxOrderServiceImpl implements WxOrderService { } else { // 有价券 order = proxy.saveNoFreeOrderForCoupon(orderDate,allowUnPayOrder,composeOrder,user, coupon,perCouponNumber,isPressOrder, - orderGroupId,formId,shippinType,address,couponChannel,payWay); + orderGroupId,formId,shippinType,address,extParam,couponChannel,payWay); } // couponActionLog // try { @@ -2920,7 +2922,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override public WxOrder saveFreeOrderForCoupon(Date orderDate,boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, - WxCouponChannel couponChannel, String formId, Long couponPasswordId,EnumPayWay payWay, + WxCouponChannel couponChannel, String formId, Long couponPasswordId,String extParam,EnumPayWay payWay, Integer shippingType, UserBasicInfoAddress address) { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); @@ -2961,6 +2963,7 @@ public class WxOrderServiceImpl implements WxOrderService { record.setPayment(0); record.setFormId(formId); record.setOrderGroupId(0L); + record.setExtParam(extParam);; record.setShippingType(shippingType); if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(shippingType)){ @@ -2988,7 +2991,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public WxOrder saveNoFreeOrderForCoupon(Date orderDate,boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, - boolean isPressOrder,Long orderGroupId,String formId,Integer shippinType,UserBasicInfoAddress address,WxCouponChannel couponChannel,EnumPayWay payWay) { + boolean isPressOrder,Long orderGroupId,String formId,Integer shippinType,UserBasicInfoAddress address,String extParam,WxCouponChannel couponChannel,EnumPayWay payWay) { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); // 3. 减库存操作。所有的订单都跟减库存操作时的订单详情保持一致 @@ -3049,6 +3052,7 @@ public class WxOrderServiceImpl implements WxOrderService { //} record.setCouponNumber(couponNumber); + record.setExtParam(extParam);; try { orderNumber = proxy.saveNoFreeOrder(orderDate,record, user, coupon, isPressOrder); } catch (Exception e) { 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 c430e4cd1..99ceba075 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 @@ -91,7 +91,7 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic couponChannelMap.put(wxCouponChannel.getId(), wxCouponChannel); } - return createDBMainOrder(tenantEntity, user, payment, payWay, composeOrderType,couponChannelMap); + return createDBMainOrder(tenantEntity, user, payment, null,payWay, composeOrderType,couponChannelMap); } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @@ -113,7 +113,7 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - protected WxComposeOrder createDBMainOrder(TenantEntity tenantEntity,WxCUserBasicInfo user,int payment,EnumPayWay payWay,EnumComposeOrder composeOrderType,Map couponChannelMap) { + protected WxComposeOrder createDBMainOrder(TenantEntity tenantEntity,WxCUserBasicInfo user,int payment,String extParam,EnumPayWay payWay,EnumComposeOrder composeOrderType,Map couponChannelMap) { //判断是否poi订单 Integer isTtPoiOrder = null; try{ @@ -133,6 +133,7 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic order.setOrderType(composeOrderType.getCode()); order.setIsTtPoiOrder(isTtPoiOrder); order.setCreateDate(new Date()); + order.setExtParam(extParam); wxBatchOrderMapper.insert(order); WxComposeOrder composeOrder = new WxComposeOrder(order.getId(), composeOrderType.getCode(), payment); composeOrder.updateTenantInfo(tenantEntity); diff --git a/mallinkService/src/main/resources/mapper/WxBatchOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxBatchOrderMapper.xml index bde2fa25a..cc12a7cbb 100644 --- a/mallinkService/src/main/resources/mapper/WxBatchOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBatchOrderMapper.xml @@ -7,15 +7,16 @@ + - + - `id`,`tenant_id`,`parent_tenant_id`,`c_user_id`,`payment`,`pay_vendor`,`order_type`,`is_tt_poi_order`,`create_date`,`update_date` + `id`,`tenant_id`,`parent_tenant_id`,`c_user_id`,`payment`,`ext_param`,`pay_vendor`,`order_type`,`is_tt_poi_order`,`create_date`,`update_date` From 0cd98504581a5bb367f844408019da2f172e2e09 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Sun, 29 May 2022 13:05:28 +0800 Subject: [PATCH 04/97] fix bug --- .../migration/V2022052700002__push_order.sql | 303 ++++++++++++------ .../controller/WxOrderController.java | 2 +- .../com/iformall/domain/po/WxCouponOrder.java | 18 ++ .../java/com/iformall/domain/po/WxOrder.java | 17 + .../service/impl/WxOrderServiceImpl.java | 1 + .../resources/mapper/WxCouponOrderMapper.xml | 23 +- .../main/resources/mapper/WxOrderMapper.xml | 7 +- 7 files changed, 255 insertions(+), 116 deletions(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022052700002__push_order.sql b/mallinkAdmin/src/main/resources/db/migration/V2022052700002__push_order.sql index 41d1b9db3..326a564b9 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V2022052700002__push_order.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V2022052700002__push_order.sql @@ -1,101 +1,202 @@ -ALTER TABLE wx_batch_order_0 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_1 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_2 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_3 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_4 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_5 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_6 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_7 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_8 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_9 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_10 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_11 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_12 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_13 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_14 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_15 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_16 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_17 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_18 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_19 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_20 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_21 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_22 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_23 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_24 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_25 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_26 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_27 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_28 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_29 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_30 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_31 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_32 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_33 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_34 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_35 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_36 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_37 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_38 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_39 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_40 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_41 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_42 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_43 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_44 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_45 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_46 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_47 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_48 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_49 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_50 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_51 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_52 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_53 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_54 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_55 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_56 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_57 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_58 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_59 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_60 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_61 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_62 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_63 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_64 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_65 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_66 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_67 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_68 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_69 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_70 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_71 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_72 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_73 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_74 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_75 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_76 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_77 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_78 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_79 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_80 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_81 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_82 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_83 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_84 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_85 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_86 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_87 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_88 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_89 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_90 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_91 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_92 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_93 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_94 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_95 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_96 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_97 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_98 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_99 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; -ALTER TABLE wx_batch_order_ ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; \ No newline at end of file +ALTER TABLE wx_order_0 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_1 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_2 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_3 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_4 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_5 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_6 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_7 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_8 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_9 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_10 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_11 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_12 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_13 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_14 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_15 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_16 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_17 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_18 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_19 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_20 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_21 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_22 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_23 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_24 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_25 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_26 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_27 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_28 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_29 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_30 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_31 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_32 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_33 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_34 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_35 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_36 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_37 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_38 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_39 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_40 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_41 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_42 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_43 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_44 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_45 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_46 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_47 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_48 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_49 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_50 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_51 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_52 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_53 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_54 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_55 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_56 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_57 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_58 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_59 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_60 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_61 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_62 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_63 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_64 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_65 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_66 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_67 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_68 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_69 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_70 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_71 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_72 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_73 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_74 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_75 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_76 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_77 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_78 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_79 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_80 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_81 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_82 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_83 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_84 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_85 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_86 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_87 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_88 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_89 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_90 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_91 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_92 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_93 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_94 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_95 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_96 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_97 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_98 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_order_99 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; + +ALTER TABLE wx_coupon_order_0 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_1 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_2 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_3 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_4 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_5 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_6 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_7 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_8 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_9 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_10 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_11 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_12 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_13 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_14 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_15 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_16 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_17 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_18 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_19 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_20 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_21 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_22 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_23 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_24 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_25 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_26 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_27 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_28 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_29 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_30 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_31 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_32 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_33 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_34 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_35 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_36 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_37 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_38 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_39 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_40 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_41 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_42 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_43 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_44 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_45 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_46 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_47 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_48 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_49 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_50 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_51 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_52 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_53 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_54 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_55 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_56 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_57 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_58 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_59 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_60 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_61 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_62 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_63 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_64 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_65 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_66 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_67 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_68 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_69 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_70 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_71 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_72 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_73 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_74 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_75 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_76 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_77 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_78 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_79 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_80 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_81 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_82 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_83 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_84 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_85 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_86 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_87 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_88 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_89 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_90 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_91 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_92 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_93 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_94 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_95 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_96 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_97 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_98 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; +ALTER TABLE wx_coupon_order_99 ADD COLUMN `ext_param` VARCHAR(1000) COMMENT '额外参数,用于第三方平台'; + diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index a70c73d90..ea754dba0 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -152,7 +152,7 @@ public class WxOrderController extends BaseController { List list = new ArrayList<>(); PlatPushOrderSaveDto dto = new PlatPushOrderSaveDto(); - //TODO 从抖音推送的订单中取信息 + //TODO 从抖音推送的订单中取信息,每个订单里面有extParam,用来放第三方平台匹配的参数信息 list.add(dto); return wxOrderService.platPushSaveOrder(false,EnumComposeOrder.ONE_NUMBER_ORDER_BATCH,list,memberId,getPayWay(),getTenantInfo()); } 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 61d7a5292..ea550a2e6 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java @@ -1,5 +1,8 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; @@ -83,6 +86,21 @@ public class WxCouponOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="补贴",name="subsidy") private Integer subsidy; + + @io.swagger.annotations.ApiModelProperty(value="额外参数,用于第三方平台",name="extParam") + private String extParam; + + public Object getExpParamValue(String key) { + if (StringUtils.isBlank(extParam)) { + return null; + } + JSONObject o = JSON.parseObject(extParam); + if (null == o ) { + return null; + } + return o.get(key); + } + @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 9feeede8c..2ee93600a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java @@ -1,6 +1,10 @@ package com.iformall.domain.po; import cn.afterturn.easypoi.excel.annotation.Excel; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.common.SortColumn; @@ -119,6 +123,19 @@ public class WxOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="父订单编号",name="parentOrderId") private Long parentOrderId; + @io.swagger.annotations.ApiModelProperty(value="额外参数,用于第三方平台",name="extParam") + private String extParam; + + public Object getExpParamValue(String key) { + if (StringUtils.isBlank(extParam)) { + return null; + } + JSONObject o = JSON.parseObject(extParam); + if (null == o ) { + return null; + } + return o.get(key); + } @TableField(exist = false) protected List couponIds; 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 31be9b8e8..70b911a52 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1343,6 +1343,7 @@ public class WxOrderServiceImpl implements WxOrderService { couponOrder.setAutoRefund(coupon.getAutoRefund()); couponOrder.setOrderId(order.getId()); couponOrder.setExpiredTime(valid_date); + couponOrder.setExtParam(order.getExtParam()); if (null != merchantId) { couponOrder.setSendMerchantId(merchantId); } diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 2a74d8e21..fd3709e64 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -30,6 +30,7 @@ + @@ -40,7 +41,7 @@ `id`,`tenant_id`,`parent_tenant_id`,`coupon_id`,`coupon_type`,`c_user_id`,`owner_id`,`b_user_id`,`b_merchant_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`,`parent_coupon_order_id`,`coupon_number`, - `freight_price`,`shipping_type`,`shipping_address`,`shipping_status`,`delivery_info`,`subsidy` + `freight_price`,`shipping_type`,`shipping_address`,`shipping_status`,`delivery_info`,`subsidy`,`ext_param` @@ -161,7 +162,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.b_merchant_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` + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`,co.ext_param from wx_coupon_order co where co.tenant_id = #{tenantId} @@ -698,7 +699,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.b_merchant_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`,co.subsidy + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`,co.subsidy,co.ext_param FROM wx_coupon_order co where co.id = #{id} and co.tenant_id = #{tenantId} @@ -792,7 +793,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.b_merchant_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` + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`,co.ext_param FROM wx_coupon_order co where co.`tenant_id` = #{tenantId} @@ -857,7 +858,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.b_merchant_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` + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`,co.ext_param from wx_coupon_order co where co.coupon_order_status = '1' and co.tenant_id = #{tenantId} @@ -896,7 +897,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.b_merchant_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` + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`,co.ext_param from wx_coupon_order co where co.id = #{id} and co.tenant_id = #{tenantId} @@ -944,7 +945,7 @@ select 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.compose_order_type,o.compose_order_id,o.`coupon_number`,o.`freight_price`,o.`shipping_type`,o.`shipping_address`,o.parent_order_id + 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.ext_param from wx_order o where o.order_status in (0,1,2,3,4,5) @@ -360,7 +361,7 @@ + select from tt_goods_category + + + + + + From 78655a0aab446a99a28f034c9120b437cc30e208 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 7 Jun 2022 15:37:44 +0800 Subject: [PATCH 20/97] //tt product --- .../src/main/java/com/iformall/domain/po/WxCoupon.java | 5 ----- 1 file changed, 5 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 e92c78c83..e3edd1448 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java @@ -17,8 +17,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.math.BigDecimal; @@ -32,7 +30,6 @@ import java.util.Map; @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) public class WxCoupon extends TenantEntity { - private final Logger logger = LoggerFactory.getLogger(this.getClass()); protected Long id; @@ -269,7 +266,6 @@ public class WxCoupon extends TenantEntity { } } }catch(Exception e){ - logger.error("wxCoupon productAttrs 转换异常"+e.getMessage()); } } @@ -293,7 +289,6 @@ public class WxCoupon extends TenantEntity { } } }catch(Exception e){ - logger.error("wxCoupon skuAttrs 转换异常"+e.getMessage()); } } From 5966b536e305172a16504c7bf6273512b6bffc67 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 7 Jun 2022 16:52:23 +0800 Subject: [PATCH 21/97] //tt product --- .../controller/market/WxCouponController.java | 40 +++++++++++++++++-- .../service/TtGoodsCategoryService.java | 2 +- .../com/iformall/service/WxCouponService.java | 5 ++- .../impl/TtGoodsCategoryServiceImpl.java | 19 +++++---- .../service/impl/WxCouponServiceImpl.java | 16 ++++++++ 5 files changed, 67 insertions(+), 15 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index c9f320365..125a9496d 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -230,6 +230,40 @@ public class WxCouponController extends BaseController { return result; } + @ApiOperation("根据id更新接口") + @PostMapping("continueAdd") + @SystemControllerLog(description = "继续添加") + public ResultData continueAdd(@RequestBody WxCoupon wxCoupon) { + logger.debug("[" + getIpAddr() + "] WxCouponController::update"); + if (wxCoupon.getId() == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + if(wxCoupon.getProductType() == null || wxCoupon.getCategoryId() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "缺少必要参数"); + } + + wxCoupon.updateTenantInfo(getTenantInfo()); + if(EnumDelFlag.YES.getCode().equals(wxCoupon.getIsDel())){ + WxCouponChannel query = new WxCouponChannel(); + query.updateTenantInfo(wxCoupon); + query.setCouponId(wxCoupon.getId()); + query.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); + if (CollectionUtils.isNotEmpty(wxCouponChannelMapper.findList(query))) { + return new ResultData(ResultData.ERROR, "有活动正在上架,请先下架。"); + } + } + + WxCoupon coupon = wxCouponService.getById(wxCoupon.getId(),wxCoupon.getTenantId()); + if (null == coupon) { + return new ResultData(ResultData.ERROR, "券未查询到。"+wxCoupon.getId()); + } + + ResultData result = wxCouponService.updateTtProduct(wxCoupon); + CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); + CouponCacheUtils.removeCouponMerchantCache(redisTemplate, wxCoupon.getId()); + return result; + } + @ApiOperation("根据id更新库存及有效期接口") @PostMapping("updateStokeAndValidDate") @SystemControllerLog(description = "券投放-库存/有效期更新") @@ -565,9 +599,9 @@ public class WxCouponController extends BaseController { try { GoodsTemplateGet goodsTemplateGet = ttMerchantPoiService.getTtWebService(getTenantInfo()).getGoodsService().templateGet(categoryId, productType); - GoodsTemplateGet admintemp = ttGoodsCategoryService.adminIsShow(goodsTemplateGet); - ttGoodsCategoryService.handTemplate(admintemp,coupon); - return new ResultData(admintemp); + ttGoodsCategoryService.adminIsShow(goodsTemplateGet); + ttGoodsCategoryService.handTemplate(goodsTemplateGet,coupon); + return new ResultData(goodsTemplateGet); } catch (WxErrorException e) { e.printStackTrace(); return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); diff --git a/mallinkService/src/main/java/com/iformall/service/TtGoodsCategoryService.java b/mallinkService/src/main/java/com/iformall/service/TtGoodsCategoryService.java index 86252cfc7..de4e0555a 100644 --- a/mallinkService/src/main/java/com/iformall/service/TtGoodsCategoryService.java +++ b/mallinkService/src/main/java/com/iformall/service/TtGoodsCategoryService.java @@ -20,7 +20,7 @@ public interface TtGoodsCategoryService { /** * A端是否显示处理 */ - GoodsTemplateGet adminIsShow(GoodsTemplateGet temp); + void adminIsShow(GoodsTemplateGet temp); /** diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java index f0a7d0e4e..dd5aa8aa4 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java @@ -85,6 +85,8 @@ public interface WxCouponService { * @param record */ ResultData saveOrUpdate(WxCoupon record); + + ResultData updateTtProduct(WxCoupon wxCoupon); /** * 更新实体 * @@ -269,5 +271,6 @@ public interface WxCouponService { Map getCouponMap(List couponIds, TenantEntity tenantEntity); List getCouponMerchantList(TenantEntity tenantInfo, Long couponId); - + + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java index 7192e7065..e9f040257 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java @@ -101,23 +101,22 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { * @return */ @Override - public GoodsTemplateGet adminIsShow(GoodsTemplateGet temp) { - GoodsTemplateGet newAttr = new GoodsTemplateGet(); - List productAttrs = new ArrayList<>(); + public void adminIsShow(GoodsTemplateGet temp) { for (GoodsTemplateGet.ProductAttrs attr: temp.getProductAttrs()) { - if(!getProductAdminIsNotShowKey().contains(attr.getKey())){ - productAttrs.add(attr); + if(getProductAdminIsNotShowKey().contains(attr.getKey())){ + attr.setIsShow(false); + }else{ + attr.setIsShow(true); } } - newAttr.setProductAttrs(productAttrs); List skuAttrs = new ArrayList<>(); for (GoodsTemplateGet.ProductAttrs attr: temp.getProductAttrs()) { - if(!getAttrAdminIsNotShowKey().contains(attr.getKey())){ - skuAttrs.add(attr); + if(getAttrAdminIsNotShowKey().contains(attr.getKey())){ + attr.setIsShow(false); + }else{ + attr.setIsShow(true); } } - newAttr.setSkuAttrs(skuAttrs); - return newAttr; } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index d7d31067c..d6ff57a49 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -642,6 +642,22 @@ public class WxCouponServiceImpl implements WxCouponService { return new ResultData(record.getId()); } + @Override + public ResultData updateTtProduct(WxCoupon record) { + WxCoupon coupon = new WxCoupon(); + coupon.setId(record.getId()); + coupon.updateTenantInfo(record); + coupon.setProductType(record.getProductType()); + coupon.setCategoryId(record.getCategoryId()); + coupon.setProductAttrs(record.getProductAttrs()); + coupon.setSkuAttrs(record.getSkuAttrs()); + coupon.setUpdateDate(new Date()); + wxCouponMapper.updateById(coupon); + //清空缓存 + clearCache(record); + return new ResultData(record.getId()); + } + /** * 清除c端首页券列表缓存 From be0ada3c82fef892606afe80bdad771223495630 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 7 Jun 2022 17:22:51 +0800 Subject: [PATCH 22/97] //tt product --- .../iformall/service/impl/TtGoodsCategoryServiceImpl.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java index e9f040257..68c21aadb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java @@ -84,7 +84,7 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { return keyList; } - private List getAttrAdminIsNotShowKey(){ + private List getSkuAttrAdminIsNotShowKey(){ List keyList = new ArrayList<>(); keyList.add("code_source_type"); //券码生成方式 默认2 // keyList.add("commodity"); //菜品搭配 @@ -109,9 +109,8 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { attr.setIsShow(true); } } - List skuAttrs = new ArrayList<>(); - for (GoodsTemplateGet.ProductAttrs attr: temp.getProductAttrs()) { - if(getAttrAdminIsNotShowKey().contains(attr.getKey())){ + for (GoodsTemplateGet.ProductAttrs attr: temp.getSkuAttrs()) { + if(getSkuAttrAdminIsNotShowKey().contains(attr.getKey())){ attr.setIsShow(false); }else{ attr.setIsShow(true); From 17ecf44ff7641c191b51cc201b2790af394f86c4 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Jun 2022 14:50:16 +0800 Subject: [PATCH 23/97] //tt product --- .../controller/market/WxCouponController.java | 16 + .../V2022060700001__coupon_product.sql | 2 +- .../domain/po/TtCouponChannelPoi.java | 5 +- .../java/com/iformall/domain/po/WxCoupon.java | 8 +- .../douyin/web/bean/GoodsTemplateGet.java | 4 +- .../iformall/enums/EnumCouponChannelType.java | 1 + .../service/TtGoodsCategoryService.java | 5 + .../service/WxCouponChannelService.java | 3 + .../com/iformall/service/WxCouponService.java | 1 + .../impl/TtGoodsCategoryServiceImpl.java | 312 +++++++++++++++++- .../impl/WxCouponChannelServiceImpl.java | 4 + .../service/impl/WxCouponServiceImpl.java | 157 ++++++++- 12 files changed, 494 insertions(+), 24 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index 125a9496d..077097a05 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -609,4 +609,20 @@ public class WxCouponController extends BaseController { } + @ApiOperation("提交审核") + @PostMapping("/goods/product/save") + @SystemControllerLog(description = "提交审核") + public ResultData productSave(@RequestBody WxCoupon wxCoupon) { + if (wxCoupon.getId() == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + WxCoupon coupon = wxCouponService.getById(wxCoupon.getId(), getTenantInfo().getTenantId()); + if(coupon == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + + ResultData result = wxCouponService.productSave(coupon); + return result; + } + } diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022060700001__coupon_product.sql b/mallinkAdmin/src/main/resources/db/migration/V2022060700001__coupon_product.sql index cde68d781..c7592f2d4 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V2022060700001__coupon_product.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V2022060700001__coupon_product.sql @@ -1,5 +1,5 @@ ALTER TABLE `mallink`.`tt_coupon_channel_poi` -ADD COLUMN `coupon_id` bigint(20) NOT NULL AFTER `parent_tenant_id`; +ADD COLUMN `coupon_channel_id` bigint(20) NOT NULL AFTER `parent_tenant_id`; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/TtCouponChannelPoi.java b/mallinkService/src/main/java/com/iformall/domain/po/TtCouponChannelPoi.java index cdd8c0eba..183a0cf3e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/TtCouponChannelPoi.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/TtCouponChannelPoi.java @@ -17,7 +17,10 @@ import java.util.Date; @EqualsAndHashCode(callSuper = true) public class TtCouponChannelPoi extends TenantEntity { - protected Long id;//coupon_channel_id + protected Long id;//coupon_id + + @io.swagger.annotations.ApiModelProperty(value="couponChannelId",name="couponChannelId") + private Long couponChannelId; @io.swagger.annotations.ApiModelProperty(value="spuId",name="spuId") private String spuId; 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 e3edd1448..4cd44e360 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java @@ -261,8 +261,8 @@ public class WxCoupon extends TenantEntity { try{ List productAttrs = JSONObject.parseArray(this.productAttrs, GoodsTemplateGet.ProductAttrs.class); for (GoodsTemplateGet.ProductAttrs attr:productAttrs) { - if(StringUtils.isNotBlank(attr.getValue())){ - productAttrKeyValueMap.put(attr.getKey(),attr.getValue()); + if(StringUtils.isNotBlank(attr.getData())){ + productAttrKeyValueMap.put(attr.getKey(),attr.getData()); } } }catch(Exception e){ @@ -284,8 +284,8 @@ public class WxCoupon extends TenantEntity { try{ List skuAttrs = JSONObject.parseArray(this.skuAttrs, GoodsTemplateGet.ProductAttrs.class); for (GoodsTemplateGet.ProductAttrs attr:skuAttrs) { - if(StringUtils.isNotBlank(attr.getValue())){ - skuAttrKeyValueMap.put(attr.getKey(),attr.getValue()); + if(StringUtils.isNotBlank(attr.getData())){ + skuAttrKeyValueMap.put(attr.getKey(),attr.getData()); } } }catch(Exception e){ diff --git a/mallinkService/src/main/java/com/iformall/douyin/web/bean/GoodsTemplateGet.java b/mallinkService/src/main/java/com/iformall/douyin/web/bean/GoodsTemplateGet.java index abd678b96..0f8c0e633 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/web/bean/GoodsTemplateGet.java +++ b/mallinkService/src/main/java/com/iformall/douyin/web/bean/GoodsTemplateGet.java @@ -83,8 +83,8 @@ public class GoodsTemplateGet implements Serializable { @SerializedName(value = "value_type") private String valueType; - @SerializedName(value = "value") - private String value; + @SerializedName(value = "data") + private String data; } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java index 37868742c..d60cea909 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java @@ -16,6 +16,7 @@ public enum EnumCouponChannelType { COUPON_CHANNEL_ID_CREDIT(50, "积分商城"), COUPON_CHANNEL_ID_H5(100, "DSP的H5页面"), + COUPON_CHANNEL_ID_DOUYIN_SAVE_LIST(11, "抖音商品库审核列表"), COUPON_CHANNEL_ID_DOUYIN_LIST(101, "抖音列表"), COUPON_CHANNEL_ID_WXLIVE_LIST(102, "微信直播列表") diff --git a/mallinkService/src/main/java/com/iformall/service/TtGoodsCategoryService.java b/mallinkService/src/main/java/com/iformall/service/TtGoodsCategoryService.java index de4e0555a..4366fa472 100644 --- a/mallinkService/src/main/java/com/iformall/service/TtGoodsCategoryService.java +++ b/mallinkService/src/main/java/com/iformall/service/TtGoodsCategoryService.java @@ -28,4 +28,9 @@ public interface TtGoodsCategoryService { * @param temp */ void handTemplate(GoodsTemplateGet temp, WxCoupon coupon); + + /** + * 处理系统属性和默认属性 + */ + void handDefaultAttr(WxCoupon coupon,List productAttrs,List skuAttrs); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java index bc66a3a06..9aaf26858 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java @@ -6,6 +6,7 @@ import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.vo.WxCouponCVo; +import com.iformall.domain.vo.WxCouponChannelAddVo; import com.iformall.domain.vo.WxCouponChannelVo; import java.util.Date; @@ -53,6 +54,8 @@ public interface WxCouponChannelService { ResultData addBatch(String type,String[] ids, String[] channelId, TenantEntity tenantEntity, Date showBeginTime, Date beginTime, Date endTime,Integer channelPrice,Integer channelStock); + WxCouponChannelAddVo addCouponChannel(Long couponid, Integer channelId, TenantEntity tenantEntity, Date showBeginTime, Date beginTime, Date endTime, Integer channelPrice, Integer channelStock); + void updateStatusByCouponId(Long couponId,TenantEntity tenantEntity,int status); ResultData change(WxCouponChannel wxCouponChannel); diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java index dd5aa8aa4..a20127341 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java @@ -273,4 +273,5 @@ public interface WxCouponService { List getCouponMerchantList(TenantEntity tenantInfo, Long couponId); + ResultData productSave(WxCoupon coupon); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java index 68c21aadb..5913ebb8d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java @@ -1,10 +1,16 @@ package com.iformall.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.iformall.domain.po.TtGoodsCategory; import com.iformall.domain.po.WxCoupon; import com.iformall.douyin.web.bean.GoodsTemplateGet; +import com.iformall.enums.EnumCouponValidType; import com.iformall.mapper.TtGoodsCategoryMapper; import com.iformall.service.TtGoodsCategoryService; +import com.iformall.utils.DataUtil; +import com.iformall.utils.DateUtils; +import me.chanjar.weixin.common.util.DataUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,8 +56,8 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { private List getProductAdminIsNotShowKey(){ List keyList = new ArrayList<>(); -// keyList.add("appointment"); //预约信息 默认不可预约 -// keyList.add("auto_renew"); //是否开启自动延期 默认不开启 + keyList.add("appointment"); //预约信息 默认不可预约 + keyList.add("auto_renew"); //是否开启自动延期 默认不开启 // keyList.add("bring_out_meal"); //是否可以外带餐食 默认否 keyList.add("can_no_use_date");//不可使用日期 默认无 keyList.add("customer_reserved_info");//留资规则 非必填 @@ -75,10 +81,10 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { // keyList.add("rec_person_num_max");//最多使用人数 keyList.add("RefundPolicy");//退款政策 keyList.add("refund_need_merchant_confirm");//退款是否需商家审核 默认否 - keyList.add("show_channel");//投放渠道 默认1-不限制 +// keyList.add("show_channel");//投放渠道 默认1-不限制 keyList.add("SortWeight");//排序权重 非必填 // keyList.add("superimposed_discounts");//可以享受店内其他优惠 -// keyList.add("TagList");//标签列表 非必填 + keyList.add("TagList");//标签列表 非必填 keyList.add("use_date");//使用日期 对应券有效期 keyList.add("use_time");//使用时间 默认全天可用 return keyList; @@ -125,7 +131,7 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { for (GoodsTemplateGet.ProductAttrs attr: temp.getProductAttrs()) { String value = coupon.getProductAttrKeyValueMap().get(attr.getKey()); if(StringUtils.isNotBlank(value)){ - attr.setValue(value); + attr.setData(value); } } } @@ -133,10 +139,304 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { for (GoodsTemplateGet.ProductAttrs attr: temp.getProductAttrs()) { String value = coupon.getSkuAttrKeyValueMap().get(attr.getKey()); if(StringUtils.isNotBlank(value)){ - attr.setValue(value); + attr.setData(value); } } } } + @Override + public void handDefaultAttr(WxCoupon coupon, List productAttrs, List skuAttrs) { + for (GoodsTemplateGet.ProductAttrs attr: productAttrs) { + //预约信息 默认不可预约 + if("appointment".equals(attr.getKey())){ + JSONObject jsonObject = new JSONObject(); + jsonObject.put("need_appointment",false); + jsonObject.put("ahead_day_num",0); + attr.setData(jsonObject.toJSONString()); + } + //是否开启自动延期 默认不开启 + else if("auto_renew".equals(attr.getKey())){ + attr.setData("false"); + } + //是否可以外带餐食 默认否------页面填写 +// else if("bring_out_meal".equals(attr.getKey())){ +// attr.setValue("false"); +// } + //不可使用日期 默认不开启 + else if("can_no_use_date".equals(attr.getKey())){ + JSONObject jsonObject = new JSONObject(); + jsonObject.put("enable",false); + attr.setData(jsonObject.toJSONString()); + } + + /** + * 留资规则 ---暂无 + * "struct CustomerReservedInfoStruct { + * 1: required bool allow //是否留资 + * 2: optional bool allow_tel //可以留电话 + * 3: optional bool allow_name // 可以留姓名 + * 4: optional bool allow_identity // 可以留身份证 + * 5: optional bool require_for_tel //手机号是否必传 【默认非必传】 + * 10: optional bool need_for_all // 是否每张券都需要留资 + * }" + */ +// else if("customer_reserved_info".equals(attr.getKey())){ +// JSONObject jsonObject = new JSONObject(); +// +// attr.setValue(jsonObject.toJSONString()); +// } + + /** + * 其他说明信息 默认无------页面填写 + * "enum OtherNoteTypeEnum { + * TEXT = 1 // 文本 + * IMG = 2 // 图片 + * } + * + * struct NoteStruct { + * 1: optional OtherNoteTypeEnum note_type + * 2: optional string content + * }" + */ +// else if("description_rich_text".equals(attr.getKey())){ +// JSONArray jsonArray = new JSONArray(); +// +// attr.setValue(jsonArray.toJSONString()); +// } + /** + * 长图 默认无------页面填写 + * "struct ImageStruct { + * 1: optional string name + * 3: optional string url + * }" + */ +// else if("detail_image_list".equals(attr.getKey())){ +// JSONArray jsonArray = new JSONArray(); +// +// attr.setValue(jsonArray.toJSONString()); +// } + /** + * 菜品图 默认无------页面填写 + * "struct ImageStruct { + * 1: optional string name + * 3: optional string url + * }" + */ +// else if("dishes_image_list".equals(attr.getKey())){ +// JSONArray jsonArray = new JSONArray(); +// +// attr.setValue(jsonArray.toJSONString()); +// } + //入口类型 默认小程序 1:H5 2:小程序 3:抖音 4:lynx + else if("EntryType".equals(attr.getKey())){ + if(StringUtils.isBlank(attr.getData())){ + attr.setData("2"); + } + } + /** + * 环境图 默认无------页面填写 + * "struct ImageStruct { + * 1: optional string name + * 3: optional string url + * }" + */ +// else if("environment_image_list".equals(attr.getKey())){ +// JSONArray jsonArray = new JSONArray(); +// +// attr.setValue(jsonArray.toJSONString()); +// } + //是否可以打包 默认不开启-------页面填写 + else if("free_pack".equals(attr.getKey())){ + if(StringUtils.isBlank(attr.getData())){ + attr.setData("false"); + } + } + /** + * 前台品类标签 ----页面填写 + * - 门票 + * - 项目 + * - 团购 + * - 一日游 + * - 多日游 + * - 旅行跟拍 + * - 含房套餐 + * - 美食套餐 + * - 美食单品 + * - 单景区门票 + * - 单景区套票 + * - 多景区联票 + * - 游玩项目票 + * - 门店项目票 + * - 门店服务 + * - 代金券 + * - 日历房 + * - 单房型 + * - 其他 + * - 测试 + */ +// else if("FrontCategoryTag".equals(attr.getKey())){ +// JSONArray jsonArray = new JSONArray(); +// jsonArray.add() +// attr.setValue(jsonArray.toJSONString()); +// } + /** + * 封面图 系统对应 + * "struct ImageStruct { + * 1: optional string name + * 3: optional string url + * }" + */ + else if("image_list".equals(attr.getKey())){ + JSONArray jsonArray = new JSONArray(); + List strings = JSONArray.parseArray(coupon.getCoverPicture(), String.class); + for (String url: strings) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("url",url); + jsonArray.add(jsonObject); + } + attr.setData(jsonArray.toJSONString()); + } + /** + * 商品行业类型(IndustryType)的枚举 -- 默认无 + * 传指定的中文字符串: + * - 门票 + * - 一日游 + * - 多日游 + * - 旅拍 + * - 其他 + */ +// else if("IndustryType".equals(attr.getKey())){ +// attr.setValue(); +// } + //是否立即确认 默认无 +// else if("IsConfirmImme".equals(attr.getKey())){ +// attr.setValue("false"); +// } + //小程序资源id 默认无 +// else if("MpResourceID".equals(attr.getKey())){ +// attr.setValue(""); +// } + //小程序分账类型 默认无 +// else if("MpSettleType".equals(attr.getKey())){ +// attr.setValue(""); +// } + //使用规则 页面填写 +// else if("Notification".equals(attr.getKey())){ +// attr.setValue("[]"); +// } + //是否可以使用包间 页面填写 + else if("private_room".equals(attr.getKey())){ + if(StringUtils.isBlank(attr.getData())){ + attr.setData("false"); + } + } + //实名信息 默认无 +// else if("real_name_info".equals(attr.getKey())){ +// JSONObject jsonObject = new JSONObject(); +// jsonObject.put("enable",false); +// jsonObject.put("scene",0); +// attr.setData(jsonObject.toJSONString()); +// } + //推荐语 默认无 页面填写 +// else if("RecommendWord".equals(attr.getKey())){ +// attr.setData(""); +// } + //建议使用人数 页面填写 +// else if("rec_person_num".equals(attr.getKey())){ +// attr.setData(""); +// } + //最多使用人数 页面填写 +// else if("rec_person_num_max".equals(attr.getKey())){ +// attr.setData(""); +// } + //退款政策 默认1 1-允许退款 2-不可退款 3-有条件退 + else if("RefundPolicy".equals(attr.getKey())){ + if(StringUtils.isBlank(attr.getData())){ + attr.setData("1"); + } + } + //退款是否需商家审核 默认false + else if("refund_need_merchant_confirm".equals(attr.getKey())){ + if(StringUtils.isBlank(attr.getData())){ + attr.setData("false"); + } + } + //投放渠道 默认1 1-不限制 2-仅直播间可见 ----页面填写 + else if("show_channel".equals(attr.getKey())){ + if(StringUtils.isBlank(attr.getData())){ + attr.setData("1"); + } + } + //排序权重 默认无 +// else if("SortWeight".equals(attr.getKey())){ +// attr.setData("1"); +// } + //可以享受店内其他优惠 ----页面填写 +// else if("superimposed_discounts".equals(attr.getKey())){ +// attr.setData("false"); +// } + //标签列表 默认无 +// else if("TagList".equals(attr.getKey())){ +// attr.setData(""); +// } + //小程序提单页跳转 默认无 +// else if("trade_url".equals(attr.getKey())){ +// attr.setData(""); +// } + //使用日期 ----对应券有效期 + else if("use_date".equals(attr.getKey())){ + JSONObject jsonObject = new JSONObject(); + if(EnumCouponValidType.BETWEEN_TWO_TIME.getCode().equals(coupon.getValidType())){ + jsonObject.put("use_date_type",1); + jsonObject.put("use_start_date",DateUtils.date2String(coupon.getValidStartDate(),"yyyy-MM-dd")); + jsonObject.put("use_end_date",DateUtils.date2String(coupon.getValidEndDate(),"yyyy-MM-dd")); + }else if(EnumCouponValidType.DAYS_AFTER_RECEIVING.getCode().equals(coupon.getValidType())){ + jsonObject.put("use_date_type",2); + jsonObject.put("day_duration",coupon.getValidDays()); + } + + attr.setData(jsonObject.toJSONString()); + } + //使用日期 ----默认全天 + else if("use_date".equals(attr.getKey())){ + JSONObject jsonObject = new JSONObject(); + jsonObject.put("use_time_type",1); + attr.setData(jsonObject.toJSONString()); + } + + } + + for (GoodsTemplateGet.ProductAttrs attr: skuAttrs) { + //券码生成方式 默认2 1-抖音码 2-三方码 3-预导码 + if("code_source_type".equals(attr.getKey())){ + attr.setData("2"); + } + //菜品搭配 页面填写 + else if("commodity".equals(attr.getKey())){ + + } + //限制购买 系统对应 + else if("limit_rule".equals(attr.getKey())){ + JSONObject jsonObject = new JSONObject(); + jsonObject.put("is_limit",true); + jsonObject.put("total_buy_num",coupon.getUseLimitQuantity()); + attr.setData(jsonObject.toJSONString()); + } + //市场价 系统对应 非必填 +// else if("market_price".equals(attr.getKey())){ +// attr.setData(coupon.getPrice().toString()); +// } + //收款方式 测试一下1-总店结算 2-分店结算 + else if("settle_type".equals(attr.getKey())){ + attr.setData("1"); + } + //团购使用方式 1-到店核销 + else if("use_type".equals(attr.getKey())){ + attr.setData("1"); + } + + } + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java index e238863e5..003b027a2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java @@ -546,6 +546,7 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { return false; } + @Override public WxCouponChannelAddVo addCouponChannel(Long couponid,Integer channelId, TenantEntity tenantEntity,Date showBeginTime,Date beginTime,Date endTime,Integer channelPrice,Integer channelStock){ WxCouponChannelAddVo vo = new WxCouponChannelAddVo(); @@ -603,10 +604,13 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { // 投放渠道 if(channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_LIST.getCode()) || // 列表 + channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_CARD.getCode()) || // 卡频道 channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_PRESS.getCode()) || // 砍价 channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_ORDER_GROUP.getCode()) || // 拼团 channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_CREDIT.getCode()) || // 积分商城 + channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_SAVE_LIST.getCode()) || + channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()) || channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_WXLIVE_LIST.getCode()) //微信直播列表 ){ // 默认投放结束时间为有效时间之后 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index d6ff57a49..98f627467 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -19,6 +19,9 @@ import com.iformall.domain.vo.*; import com.iformall.domain.vo.excel.WxCardData; import com.iformall.domain.vo.excel.WxCouponData; import com.iformall.domain.vo.excel.WxPressData; +import com.iformall.douyin.web.api.TtWebService; +import com.iformall.douyin.web.bean.GoodsTemplateGet; +import com.iformall.douyin.web.bean.Product; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; @@ -28,6 +31,8 @@ import com.iformall.service.excel.WxCardDataExporter; import com.iformall.service.excel.WxCouponDataExporter; import com.iformall.service.excel.WxPressDataExporter; +import com.iformall.utils.Constant; +import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -123,6 +128,15 @@ public class WxCouponServiceImpl implements WxCouponService { @Autowired WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper; + @Autowired + private TtMerchantPoiService ttMerchantPoiService; + + @Autowired + private TtGoodsCategoryService ttGoodsCategoryService; + + @Autowired + TtCouponChannelPoiMapper ttCouponChannelPoiMapper; + @Autowired private MqBaseProducer mqBaseProducer; @@ -349,16 +363,16 @@ public class WxCouponServiceImpl implements WxCouponService { if (StringUtils.isNotEmpty(record.getSubsidyNumStr())) { record.setSubsidyNum(new BigDecimal(record.getSubsidyNumStr()).multiply(new BigDecimal(100)).intValue()); } - if (EnumCouponType.COUPON_DOUYIN.getCode().equals(record.getType())){ - if(StringUtils.isBlank(record.getItemGroup())){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"团购详情不能为"); - } - try{ - JSON.parseArray(record.getItemGroup()); - }catch(Exception e){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"团购详情格式不正确"); - } - } +// if (EnumCouponType.COUPON_DOUYIN.getCode().equals(record.getType())){ +// if(StringUtils.isBlank(record.getItemGroup())){ +// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"团购详情不能为"); +// } +// try{ +// JSON.parseArray(record.getItemGroup()); +// }catch(Exception e){ +// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"团购详情格式不正确"); +// } +// } if (StringUtils.isBlank(record.getCoverPicture())) { List strList = new ArrayList(); if (StringUtils.isNotBlank(record.getCoverImg())) { @@ -644,6 +658,30 @@ public class WxCouponServiceImpl implements WxCouponService { @Override public ResultData updateTtProduct(WxCoupon record) { + if(StringUtils.isBlank(record.getProductAttrs()) || StringUtils.isBlank(record.getSkuAttrs())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + } + try{ + List productAttrs = JSONObject.parseArray(record.getProductAttrs(), GoodsTemplateGet.ProductAttrs.class); + List skuAttrs = JSONObject.parseArray(record.getSkuAttrs(), GoodsTemplateGet.ProductAttrs.class); + ttGoodsCategoryService.handDefaultAttr(record,productAttrs,skuAttrs); + for (GoodsTemplateGet.ProductAttrs attr:productAttrs) { + attr.setIsShow(null); + if(attr.getIsRequired() && StringUtils.isBlank(attr.getData())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"product属性" +attr.getName()+" 为空"); + } + } + record.setProductAttrs(JSONObject.toJSONString(productAttrs)); + for (GoodsTemplateGet.ProductAttrs attr:skuAttrs) { + attr.setIsShow(null); + if(attr.getIsRequired() && StringUtils.isBlank(attr.getData())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"sku属性 "+attr.getName()+" 为空"); + } + } + record.setSkuAttrs(JSONObject.toJSONString(skuAttrs)); + }catch(Exception e){ + return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR); + } WxCoupon coupon = new WxCoupon(); coupon.setId(record.getId()); coupon.updateTenantInfo(record); @@ -1153,5 +1191,104 @@ public class WxCouponServiceImpl implements WxCouponService { return merchantList; } + @Override + @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) + public ResultData productSave(WxCoupon coupon) { + if(coupon.getProductType() == null || coupon.getCategoryId() == null + || coupon.getProductAttrKeyValueMap().isEmpty() + || coupon.getSkuAttrKeyValueMap().isEmpty()){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该券缺少必要属性"); + } + //添加到审核渠道 + WxCouponChannelAddVo wxCouponChannelAddVo = wxCouponChannelService.addCouponChannel(coupon.getId(), EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_SAVE_LIST.getCode(), + coupon, null, null, null, null, null); + + //提交审核 + try { + List couponMerchantList = getCouponMerchantList(coupon, coupon.getId()); + List merchantList = couponMerchantList.stream().sorted(Comparator.comparing(m -> m.getTtPoi(), Comparator.nullsLast(String::compareTo))).collect(toList()); + + TtWebService ttWebService = ttMerchantPoiService.getTtWebService(coupon); + Product product = new Product(); + Product.ProductStruct prostruct = new Product.ProductStruct(); + prostruct.setOutId(coupon.getId().toString()); + prostruct.setProductName(coupon.getTitle()); + prostruct.setCategoryId(coupon.getCategoryId()); + prostruct.setProductType(coupon.getProductType()); + prostruct.setBizLine(5);//默认小程序 + prostruct.setAccountName(merchantList.get(0).getMerchantName()); + // prostruct.setSoldStartTime(); + // prostruct.setSoldEndTime(); + prostruct.setOutUrl(getGoodsEntrySchema(ttWebService.getTtWebConfig().getAppid(),wxCouponChannelAddVo.getId())); + List poiList = new ArrayList(); + for (WxMerchantVo mvo:merchantList){ + Product.PoiStruct poiStruct = new Product.PoiStruct(); + poiStruct.setSupplierExtId(mvo.getId().toString()); + poiList.add(poiStruct); + } + prostruct.setPoiList(poiList); + prostruct.setAttrKeyValueMap(coupon.getProductAttrKeyValueMap()); + product.setProduct(prostruct); + + Product.SkuStruct skuStruct = new Product.SkuStruct(); + skuStruct.setSkuName(coupon.getTitle()); + skuStruct.setOriginAmount(coupon.getPrice()); + skuStruct.setActualAmount(coupon.getSalePrice()); + Product.StockStruct stockStruct = new Product.StockStruct(); + stockStruct.setLimitType(1); + stockStruct.setStockQty(coupon.getInventory()); + skuStruct.setStock(stockStruct); + skuStruct.setStatus(1); + skuStruct.setAttrKeyValueMap(coupon.getSkuAttrKeyValueMap()); + product.setSku(skuStruct); + + String productId = ttWebService.getGoodsService().productSave(product); + syncCouponChannelPoi(coupon,wxCouponChannelAddVo.getId(),productId); + return new ResultData(); + + } catch (WxErrorException e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } catch (Exception e){ + logger.error(e.getMessage()); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + } + + private void syncCouponChannelPoi(WxCoupon coupon,Long couponChannelId,String productId){ + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(coupon.getId()); + Date date = new Date(); + if(ttCouponChannelPoi != null){ + ttCouponChannelPoi.setCouponChannelId(couponChannelId); + ttCouponChannelPoi.setSpuId(productId); + ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_auditing.getCode()); + ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_auditing.getCode()); + ttCouponChannelPoi.setLastStatusDesc(""); + ttCouponChannelPoi.setUpdateDate(date); + ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); + }else{ + ttCouponChannelPoi = new TtCouponChannelPoi(); + ttCouponChannelPoi.setId(coupon.getId()); + ttCouponChannelPoi.updateTenantInfo(coupon); + ttCouponChannelPoi.setCouponChannelId(couponChannelId); + ttCouponChannelPoi.setSpuId(productId); + ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_auditing.getCode()); + ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_auditing.getCode()); + ttCouponChannelPoi.setCreateDate(date); + ttCouponChannelPoi.setUpdateDate(date); + ttCouponChannelPoiMapper.insert(ttCouponChannelPoi); + } + } + + private String getGoodsEntrySchema(String appid,Long couponChannelId){ + Map map = new HashMap<>(); + map.put("app_id",appid); + map.put("path", Constant.mainPageUrl); + Map paramMap = new HashMap<>(); + paramMap.put("type","cd"); + paramMap.put("couponChannelId",couponChannelId); + map.put("params",JSON.toJSONString(paramMap)); + return JSON.toJSONString(map); + } } From ed07990a64fd775cab1d898767897108202b2183 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Jun 2022 15:16:38 +0800 Subject: [PATCH 24/97] //tt product --- .../com/iformall/controller/callback/TtWebController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java index ed5987298..56386546a 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java @@ -36,16 +36,16 @@ public class TtWebController extends BaseController { logger.info("抖音开放平台通知-----parameterMap{}"+parameterMap); try { String header = request.getHeader("X-Douyin-Signature"); - logger.info("抖音开放平台通知-----header.X-Douyin-Signature{}"+parameterMap); + logger.info("抖音开放平台通知-----header.X-Douyin-Signature{}"+header); // Map parameterMap = JSONObject.parseObject(body, Map.class); String event = (String) parameterMap.get("event"); logger.info("抖音开放平台通知-----event{}"+event); String client_key = (String) parameterMap.get("client_key"); logger.info("抖音开放平台通知-----client_key{}"+client_key); - JSONObject content = (JSONObject) parameterMap.get("content"); + Map content = (HashMap) parameterMap.get("content"); logger.info("抖音开放平台通知-----content{}"+content.toString()); - String challenge = content.getString("challenge"); + String challenge = content.get("challenge").toString(); logger.info("抖音开放平台通知-----content.challenge{}"+challenge); resultMap.put("challenge",challenge); From f8d7e8ce4da233ce6d8820072af004d6af7ab6aa Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Jun 2022 15:59:12 +0800 Subject: [PATCH 25/97] //tt product callback --- .../controller/callback/TtWebController.java | 45 ++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java index 56386546a..0ba90949d 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java @@ -1,21 +1,36 @@ package com.iformall.controller.callback; -import com.alibaba.fastjson.JSONObject; import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxAppinfo; +import com.iformall.service.MailService; +import com.iformall.service.WxAppinfoService; +import com.iformall.utils.DateUtils; +import me.chanjar.weixin.common.util.crypto.SHA1; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.util.Date; import java.util.HashMap; import java.util.Map; + @RestController @RequestMapping("/ttweb/notify") public class TtWebController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Autowired + private String fmExceptionEmails; + + @Autowired + private MailService mailService; + + @Autowired + private WxAppinfoService wxAppinfoService; /** * { @@ -34,15 +49,34 @@ public class TtWebController extends BaseController { // String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); logger.info("抖音开放平台通知-----parameterMap{}"+parameterMap); + String client_key = (String) parameterMap.get("client_key"); + logger.info("抖音开放平台通知-----client_key{}"+client_key); + WxAppinfo appInfo = wxAppinfoService.getByAppId(client_key); + + String header = request.getHeader("X-Douyin-Signature"); + logger.info("抖音开放平台通知-----header.X-Douyin-Signature{}"+header); + + String gen = SHA1.gen(appInfo.getSecret(), parameterMap.toString()); + + //发邮件 + String[] receivers = fmExceptionEmails.split(","); + StringBuilder sb = new StringBuilder(); + sb.append(DateUtils.date2String(new Date())); + sb.append("\n"); + sb.append("抖音开放平台通知{}"+parameterMap.toString()); + sb.append("\n"); + sb.append("SHA1.gen{}"+gen); + sb.append("\n"); + sb.append("header{}"+header); + //发送邮件 + mailService.sendSimpleMail(receivers, "抖音开放平台通知", sb.toString()); + try { - String header = request.getHeader("X-Douyin-Signature"); - logger.info("抖音开放平台通知-----header.X-Douyin-Signature{}"+header); // Map parameterMap = JSONObject.parseObject(body, Map.class); String event = (String) parameterMap.get("event"); logger.info("抖音开放平台通知-----event{}"+event); - String client_key = (String) parameterMap.get("client_key"); - logger.info("抖音开放平台通知-----client_key{}"+client_key); + Map content = (HashMap) parameterMap.get("content"); logger.info("抖音开放平台通知-----content{}"+content.toString()); String challenge = content.get("challenge").toString(); @@ -52,6 +86,7 @@ public class TtWebController extends BaseController { return resultMap; } catch (Exception e){ logger.error(e.getMessage()); + resultMap.put("err_code",1000); resultMap.put("err_tips","error"); return resultMap; } From 6ca2393c4dc5b8fecdbc9a8d07564fb3779bc1b5 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Jun 2022 16:38:08 +0800 Subject: [PATCH 26/97] //tt product --- .../db/migration/V2022060800001__mall_permission.sql | 4 ++++ .../com/iformall/service/impl/WxCouponServiceImpl.java | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V2022060800001__mall_permission.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022060800001__mall_permission.sql b/mallinkAdmin/src/main/resources/db/migration/V2022060800001__mall_permission.sql new file mode 100644 index 000000000..7d33fb566 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2022060800001__mall_permission.sql @@ -0,0 +1,4 @@ +INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (679, '抖音商品库', 606, 'Y', NULL, 1, NULL, NULL, 'dygoods', NULL, 0, 679); + + +UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 4, 5, 6, 50, 105, 110, 201, 205, 202, 211, 212, 221, 222, 223, 251, 409, 410, 411, 416, 500, 502, 504, 505, 506, 507, 508, 511, 512, 521, 522, 523, 531, 532, 591, 592, 595, 602, 605, 606, 607, 610, 647, 671, 679, 680, 711, 901, 902, 904, 907, 60702]' WHERE `id` = 11; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index 98f627467..7cad3d40a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -57,7 +57,7 @@ import static java.util.stream.Collectors.toList; @Service -public class WxCouponServiceImpl implements WxCouponService { +public class WxCouponServiceImpl
implements WxCouponService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired @@ -680,6 +680,7 @@ public class WxCouponServiceImpl implements WxCouponService { } record.setSkuAttrs(JSONObject.toJSONString(skuAttrs)); }catch(Exception e){ + e.printStackTrace(); return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR); } WxCoupon coupon = new WxCoupon(); @@ -696,6 +697,12 @@ public class WxCouponServiceImpl implements WxCouponService { return new ResultData(record.getId()); } + public static void main(String[] args) { + String str = "[{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"appointment\",\"name\":\"预约信息\",\"valueDemo\":\"\",\"valueType\":\"APPOINTMENT\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"auto_renew\",\"name\":\"是否开启自动延期\",\"valueDemo\":\"\",\"valueType\":\"BOOL\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"bring_out_meal\",\"name\":\"是否可以外带餐食\",\"valueDemo\":\"\",\"valueType\":\"BOOL\",\"data\":\"false\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"can_no_use_date\",\"name\":\"不可使用日期\",\"valueDemo\":\"\",\"valueType\":\"CAN_NO_USE_DATE\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"customer_reserved_info\",\"name\":\"留资规则\",\"valueDemo\":\"\",\"valueType\":\"CUSTOMER_RESERVED_INFO\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":false,\"isShow\":true,\"key\":\"description_rich_text\",\"name\":\"其他说明信息\",\"valueDemo\":\"\",\"valueType\":\"NOTE\",\"data\":\"\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":false,\"isShow\":true,\"key\":\"detail_image_list\",\"name\":\"长图\",\"valueDemo\":\"\",\"valueType\":\"IMAGE\",\"data\":\"\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":false,\"isShow\":true,\"key\":\"dishes_image_list\",\"name\":\"菜品图\",\"valueDemo\":\"\",\"valueType\":\"IMAGE\",\"data\":\"\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"EntryType\",\"name\":\"入口类型\",\"valueDemo\":\"1:H5 2:小程序 3:抖音 4:lynx\",\"valueType\":\"INT64\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":false,\"isShow\":true,\"key\":\"environment_image_list\",\"name\":\"环境图\",\"valueDemo\":\"\",\"valueType\":\"IMAGE\",\"data\":\"\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"free_pack\",\"name\":\"是否可以打包\",\"valueDemo\":\"\",\"valueType\":\"BOOL\",\"data\":\"false\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":false,\"isShow\":true,\"key\":\"FrontCategoryTag\",\"name\":\"前台品类标签\",\"valueDemo\":\"\",\"valueType\":\"STRING\",\"data\":\"[{\\\"value\\\":\\\"\\\"}]\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":true,\"isShow\":false,\"key\":\"image_list\",\"name\":\"封面图\",\"valueDemo\":\"\",\"valueType\":\"IMAGE\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"IndustryType\",\"name\":\"商品行业类型\",\"valueDemo\":\"\",\"valueType\":\"STRING\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"IsConfirmImme\",\"name\":\"是否立即确认\",\"valueDemo\":\"\",\"valueType\":\"BOOL\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"MpResourceID\",\"name\":\"小程序资源id\",\"valueDemo\":\"\",\"valueType\":\"STRING\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"MpSettleType\",\"name\":\"小程序分账类型\",\"valueDemo\":\"1-包销 2-代销\",\"valueType\":\"INT64\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":true,\"isShow\":true,\"key\":\"Notification\",\"name\":\"使用规则\",\"valueDemo\":\"\",\"valueType\":\"NOTIFICATION\",\"data\":\"[{\\\"value\\\":\\\"\\\",\\\"content\\\":\\\"1\\\",\\\"title\\\":\\\"2\\\"}]\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"private_room\",\"name\":\"是否可以使用包间\",\"valueDemo\":\"\",\"valueType\":\"BOOL\",\"data\":\"false\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"real_name_info\",\"name\":\"实名信息\",\"valueDemo\":\"\",\"valueType\":\"REAL_NAME_INFO\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":true,\"key\":\"RecommendWord\",\"name\":\"推荐语\",\"valueDemo\":\"\",\"valueType\":\"STRING\",\"data\":\"\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"rec_person_num\",\"name\":\"建议使用人数\",\"valueDemo\":\"\",\"valueType\":\"INT64\",\"data\":\"1\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"rec_person_num_max\",\"name\":\"最多使用人数\",\"valueDemo\":\"\",\"valueType\":\"INT64\",\"data\":\"22\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"RefundPolicy\",\"name\":\"退款政策\",\"valueDemo\":\"1-允许退款 2-不可退款 3-有条件退\",\"valueType\":\"INT64\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"refund_need_merchant_confirm\",\"name\":\"退款是否需商家审核\",\"valueDemo\":\"\",\"valueType\":\"BOOL\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"show_channel\",\"name\":\"投放渠道\",\"valueDemo\":\"1-不限制 2-仅直播间可见\",\"valueType\":\"INT64\",\"data\":\"1\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"SortWeight\",\"name\":\"排序权重\",\"valueDemo\":\"\",\"valueType\":\"INT64\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"superimposed_discounts\",\"name\":\"可以享受店内其他优惠\",\"valueDemo\":\"\",\"valueType\":\"BOOL\",\"data\":\"false\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"TagList\",\"name\":\"标签列表\",\"valueDemo\":\"\",\"valueType\":\"STRING\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":true,\"key\":\"trade_url\",\"name\":\"小程序提单页跳转\",\"valueDemo\":\"\",\"valueType\":\"STRING\",\"data\":\"\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"use_date\",\"name\":\"使用日期\",\"valueDemo\":\"\",\"valueType\":\"USE_DATE\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"use_time\",\"name\":\"使用时间\",\"valueDemo\":\"\",\"valueType\":\"USE_TIME\"}]"; + List productAttrs = JSONObject.parseArray(str, GoodsTemplateGet.ProductAttrs.class); + System.out.println(productAttrs); + } + /** * 清除c端首页券列表缓存 From 3d011812cd3b98126ef78cb894a2a7978d8f79f9 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Jun 2022 16:57:41 +0800 Subject: [PATCH 27/97] //tt product --- .../com/iformall/controller/market/WxCouponController.java | 7 ++++++- .../com/iformall/service/impl/WxCouponServiceImpl.java | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index 077097a05..698d3350b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -258,7 +258,12 @@ public class WxCouponController extends BaseController { return new ResultData(ResultData.ERROR, "券未查询到。"+wxCoupon.getId()); } - ResultData result = wxCouponService.updateTtProduct(wxCoupon); + coupon.setProductType(wxCoupon.getProductType()); + coupon.setCategoryId(wxCoupon.getCategoryId()); + coupon.setProductAttrs(wxCoupon.getProductAttrs()); + coupon.setSkuAttrs(wxCoupon.getSkuAttrs()); + + ResultData result = wxCouponService.updateTtProduct(coupon); CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); CouponCacheUtils.removeCouponMerchantCache(redisTemplate, wxCoupon.getId()); return result; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index 7cad3d40a..d631fdc12 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -680,7 +680,7 @@ public class WxCouponServiceImpl
implements WxCouponService { } record.setSkuAttrs(JSONObject.toJSONString(skuAttrs)); }catch(Exception e){ - e.printStackTrace(); + logger.error(e.getMessage(),e); return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR); } WxCoupon coupon = new WxCoupon(); From b4bb391495f89ae02f944daee27437095fcc4cb9 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Jun 2022 17:03:29 +0800 Subject: [PATCH 28/97] //tt product --- .../iformall/service/impl/TtGoodsCategoryServiceImpl.java | 2 +- .../java/com/iformall/service/impl/WxCouponServiceImpl.java | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java index 5913ebb8d..9bbe491de 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java @@ -399,7 +399,7 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { attr.setData(jsonObject.toJSONString()); } //使用日期 ----默认全天 - else if("use_date".equals(attr.getKey())){ + else if("use_time".equals(attr.getKey())){ JSONObject jsonObject = new JSONObject(); jsonObject.put("use_time_type",1); attr.setData(jsonObject.toJSONString()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index d631fdc12..b20c43620 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -697,12 +697,6 @@ public class WxCouponServiceImpl
implements WxCouponService { return new ResultData(record.getId()); } - public static void main(String[] args) { - String str = "[{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"appointment\",\"name\":\"预约信息\",\"valueDemo\":\"\",\"valueType\":\"APPOINTMENT\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"auto_renew\",\"name\":\"是否开启自动延期\",\"valueDemo\":\"\",\"valueType\":\"BOOL\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"bring_out_meal\",\"name\":\"是否可以外带餐食\",\"valueDemo\":\"\",\"valueType\":\"BOOL\",\"data\":\"false\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"can_no_use_date\",\"name\":\"不可使用日期\",\"valueDemo\":\"\",\"valueType\":\"CAN_NO_USE_DATE\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"customer_reserved_info\",\"name\":\"留资规则\",\"valueDemo\":\"\",\"valueType\":\"CUSTOMER_RESERVED_INFO\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":false,\"isShow\":true,\"key\":\"description_rich_text\",\"name\":\"其他说明信息\",\"valueDemo\":\"\",\"valueType\":\"NOTE\",\"data\":\"\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":false,\"isShow\":true,\"key\":\"detail_image_list\",\"name\":\"长图\",\"valueDemo\":\"\",\"valueType\":\"IMAGE\",\"data\":\"\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":false,\"isShow\":true,\"key\":\"dishes_image_list\",\"name\":\"菜品图\",\"valueDemo\":\"\",\"valueType\":\"IMAGE\",\"data\":\"\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"EntryType\",\"name\":\"入口类型\",\"valueDemo\":\"1:H5 2:小程序 3:抖音 4:lynx\",\"valueType\":\"INT64\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":false,\"isShow\":true,\"key\":\"environment_image_list\",\"name\":\"环境图\",\"valueDemo\":\"\",\"valueType\":\"IMAGE\",\"data\":\"\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"free_pack\",\"name\":\"是否可以打包\",\"valueDemo\":\"\",\"valueType\":\"BOOL\",\"data\":\"false\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":false,\"isShow\":true,\"key\":\"FrontCategoryTag\",\"name\":\"前台品类标签\",\"valueDemo\":\"\",\"valueType\":\"STRING\",\"data\":\"[{\\\"value\\\":\\\"\\\"}]\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":true,\"isShow\":false,\"key\":\"image_list\",\"name\":\"封面图\",\"valueDemo\":\"\",\"valueType\":\"IMAGE\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"IndustryType\",\"name\":\"商品行业类型\",\"valueDemo\":\"\",\"valueType\":\"STRING\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"IsConfirmImme\",\"name\":\"是否立即确认\",\"valueDemo\":\"\",\"valueType\":\"BOOL\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"MpResourceID\",\"name\":\"小程序资源id\",\"valueDemo\":\"\",\"valueType\":\"STRING\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"MpSettleType\",\"name\":\"小程序分账类型\",\"valueDemo\":\"1-包销 2-代销\",\"valueType\":\"INT64\"},{\"desc\":\"\",\"isMulti\":true,\"isRequired\":true,\"isShow\":true,\"key\":\"Notification\",\"name\":\"使用规则\",\"valueDemo\":\"\",\"valueType\":\"NOTIFICATION\",\"data\":\"[{\\\"value\\\":\\\"\\\",\\\"content\\\":\\\"1\\\",\\\"title\\\":\\\"2\\\"}]\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"private_room\",\"name\":\"是否可以使用包间\",\"valueDemo\":\"\",\"valueType\":\"BOOL\",\"data\":\"false\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"real_name_info\",\"name\":\"实名信息\",\"valueDemo\":\"\",\"valueType\":\"REAL_NAME_INFO\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":true,\"key\":\"RecommendWord\",\"name\":\"推荐语\",\"valueDemo\":\"\",\"valueType\":\"STRING\",\"data\":\"\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"rec_person_num\",\"name\":\"建议使用人数\",\"valueDemo\":\"\",\"valueType\":\"INT64\",\"data\":\"1\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"rec_person_num_max\",\"name\":\"最多使用人数\",\"valueDemo\":\"\",\"valueType\":\"INT64\",\"data\":\"22\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"RefundPolicy\",\"name\":\"退款政策\",\"valueDemo\":\"1-允许退款 2-不可退款 3-有条件退\",\"valueType\":\"INT64\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"refund_need_merchant_confirm\",\"name\":\"退款是否需商家审核\",\"valueDemo\":\"\",\"valueType\":\"BOOL\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"show_channel\",\"name\":\"投放渠道\",\"valueDemo\":\"1-不限制 2-仅直播间可见\",\"valueType\":\"INT64\",\"data\":\"1\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"SortWeight\",\"name\":\"排序权重\",\"valueDemo\":\"\",\"valueType\":\"INT64\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":true,\"key\":\"superimposed_discounts\",\"name\":\"可以享受店内其他优惠\",\"valueDemo\":\"\",\"valueType\":\"BOOL\",\"data\":\"false\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":false,\"key\":\"TagList\",\"name\":\"标签列表\",\"valueDemo\":\"\",\"valueType\":\"STRING\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":false,\"isShow\":true,\"key\":\"trade_url\",\"name\":\"小程序提单页跳转\",\"valueDemo\":\"\",\"valueType\":\"STRING\",\"data\":\"\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"use_date\",\"name\":\"使用日期\",\"valueDemo\":\"\",\"valueType\":\"USE_DATE\"},{\"desc\":\"\",\"isMulti\":false,\"isRequired\":true,\"isShow\":false,\"key\":\"use_time\",\"name\":\"使用时间\",\"valueDemo\":\"\",\"valueType\":\"USE_TIME\"}]"; - List productAttrs = JSONObject.parseArray(str, GoodsTemplateGet.ProductAttrs.class); - System.out.println(productAttrs); - } - /** * 清除c端首页券列表缓存 From 8517fc65d710ede894927a65156cbba99430c861 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Jun 2022 17:15:00 +0800 Subject: [PATCH 29/97] //tt product --- .../impl/TtGoodsCategoryServiceImpl.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java index 9bbe491de..e818c1538 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java @@ -8,9 +8,7 @@ import com.iformall.douyin.web.bean.GoodsTemplateGet; import com.iformall.enums.EnumCouponValidType; import com.iformall.mapper.TtGoodsCategoryMapper; import com.iformall.service.TtGoodsCategoryService; -import com.iformall.utils.DataUtil; import com.iformall.utils.DateUtils; -import me.chanjar.weixin.common.util.DataUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,7 +63,7 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { // keyList.add("detail_image_list");//长图 非必填 // keyList.add("dishes_image_list");//菜品图 非必填 keyList.add("EntryType");//入口类型 默认 2:小程序 -// keyList.add("environment_image_list");//环境图 非必填 + keyList.add("environment_image_list");//环境图 对应详情图 // keyList.add("free_pack");//是否可以打包 默认否 // keyList.add("FrontCategoryTag");//前台品类标签 非必填 keyList.add("image_list");//封面图 对应系统商品图----------------------- @@ -235,17 +233,24 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { } } /** - * 环境图 默认无------页面填写 + * 环境图 默认无------对应详情图 * "struct ImageStruct { * 1: optional string name * 3: optional string url * }" */ -// else if("environment_image_list".equals(attr.getKey())){ -// JSONArray jsonArray = new JSONArray(); -// -// attr.setValue(jsonArray.toJSONString()); -// } + else if("environment_image_list".equals(attr.getKey())){ + JSONArray jsonArray = new JSONArray(); + List strings = JSONArray.parseArray(coupon.getDetailPicture(), String.class); + if(strings != null && strings.size() > 0){ + for (String url: strings) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("url",url); + jsonArray.add(jsonObject); + } + } + attr.setData(jsonArray.toJSONString()); + } //是否可以打包 默认不开启-------页面填写 else if("free_pack".equals(attr.getKey())){ if(StringUtils.isBlank(attr.getData())){ @@ -290,10 +295,12 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { else if("image_list".equals(attr.getKey())){ JSONArray jsonArray = new JSONArray(); List strings = JSONArray.parseArray(coupon.getCoverPicture(), String.class); - for (String url: strings) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("url",url); - jsonArray.add(jsonObject); + if(strings != null && strings.size() > 0){ + for (String url: strings) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("url",url); + jsonArray.add(jsonObject); + } } attr.setData(jsonArray.toJSONString()); } From 287e6b44907baaf91253883629c4566cc603c4c2 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Jun 2022 17:31:04 +0800 Subject: [PATCH 30/97] //tt product --- .../src/main/resources/mapper/WxCouponMapper.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 9aeace5e7..018e82805 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -55,6 +55,8 @@ + + @@ -113,7 +115,7 @@ c.`valid_type`,c.`valid_start_date`,c.`valid_end_date`,c.pick_start_date,c.pick_end_date,c.`valid_days`,c.`detail`,c.`price`,c.tail_price,c.orig_price,c.`unit`,c.`remain_inventory`,c.`inventory`, c.`remark`,c.`status`,c.`create_date`,c.`update_date`,c.`business`,c.`sub_business`,c.`support_transfer`,c.`subsidy_num`,c.`subsidy_type`, c.`press_limit_num`, c.`press_limit_hours`, c.`auto_refund`,c.`credit_price`,c.`credit_refund`,c.`put_apply_status`,c.`stock_apply_status`,c.`cancle_apply_status`, - c.`conditions`,c.approval_type,c.content_type,c.source_type,c.password_support,c.gift_list + c.`conditions`,c.approval_type,c.content_type,c.source_type,c.password_support,c.gift_list,c.product_type,c.category_id @@ -718,6 +720,9 @@ + + + From 216a65bc39375afc50077c9247df306d98248020 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Jun 2022 18:59:08 +0800 Subject: [PATCH 31/97] //tt product --- .../controller/market/WxCouponController.java | 22 +++++++++++- .../com/iformall/domain/vo/TtCouponVo.java | 34 +++++++++++++++++++ .../com/iformall/mapper/WxCouponMapper.java | 3 ++ .../com/iformall/service/WxCouponService.java | 6 ++++ .../impl/TtGoodsCategoryServiceImpl.java | 1 - .../service/impl/WxCouponServiceImpl.java | 12 ++++++- .../main/resources/mapper/WxCouponMapper.xml | 13 +++++++ 7 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/TtCouponVo.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index 698d3350b..28823db69 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -13,6 +13,7 @@ import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.po.WxCouponPassword; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.TtCouponVo; import com.iformall.domain.vo.WxCouponStatisVo; import com.iformall.douyin.web.bean.GoodsTemplateGet; import com.iformall.enums.*; @@ -69,6 +70,25 @@ public class WxCouponController extends BaseController { @Qualifier("objectCommonRedisTemplate") RedisTemplate redisTemplate; + @ApiOperation("分页列表接口") + @GetMapping("ttgoodslist") + @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 ttgoodslist(@ModelAttribute TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxCouponController::ttgoodslist"); + if (ttCouponVo == null) ttCouponVo = new TtCouponVo(); + ttCouponVo.updateTenantInfo(getTenantInfo()); + ttCouponVo.setType(EnumCouponType.COUPON_DOUYIN.getCode()); + if(StringUtils.isNotBlank(ttCouponVo.getSortColumn())){ + String coryColumn = "c."+ttCouponVo.getSortColumns(); + ttCouponVo.setSortColumns(coryColumn); + ttCouponVo.setSortColumn(null); + } + return wxCouponService.ttgoodslist(ttCouponVo, pageNum, pageSize); + } + @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @@ -597,7 +617,7 @@ public class WxCouponController extends BaseController { if(couponId == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } - WxCoupon coupon = wxCouponService.getById(couponId, getTenantInfo().getTenantId()); + WxCoupon coupon = wxCouponService.getAttrsById(couponId, getTenantInfo().getTenantId()); if(coupon == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponVo.java new file mode 100644 index 000000000..059c519b5 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponVo.java @@ -0,0 +1,34 @@ +package com.iformall.domain.vo; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.iformall.domain.po.WxCoupon; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.io.Serializable; + +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class TtCouponVo extends WxCoupon implements Serializable { + private static final long serialVersionUID = 1L; + + @io.swagger.annotations.ApiModelProperty(value="couponChannelId",name="couponChannelId") + private Long couponChannelId; + + @io.swagger.annotations.ApiModelProperty(value="spuId",name="spuId") + private String spuId; + + @io.swagger.annotations.ApiModelProperty(value="状态:0-审核中,1-上架,2-下架,3-审核拒绝 4-审核通过",name="status") + private Integer status; + + @io.swagger.annotations.ApiModelProperty(value="描述",name="statusDesc") + private String statusDesc; + + @io.swagger.annotations.ApiModelProperty(value="状态:0-审核中,1-上架,2-下架,3-审核拒绝 4-审核通过",name="lastStatus") + private Integer lastStatus; + + @io.swagger.annotations.ApiModelProperty(value="描述",name="lastStatusDesc") + private String lastStatusDesc; +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java index 6e5f61e64..40dc53672 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java @@ -30,6 +30,8 @@ public interface WxCouponMapper extends CommonMapper { List findSendCouponIds(@Param("expired")Integer expired,@Param("tenantId")String tenantId); WxCoupon selectById(@Param("id")Long id,@Param("tenantId")String tenantId); + + WxCoupon getAttrsById(@Param("id")Long id, @Param("tenantId")String tenantId); WxCoupon getPriceAndStock(@Param("id")Long id,@Param("tenantId")String tenantId); List batchGetPriceAndStock(@Param("ids")List ids,@Param("tenantId")String tenantId); @@ -118,4 +120,5 @@ public interface WxCouponMapper extends CommonMapper { List newfindCList(WxCoupon couponQ); List findIdsListHasConditons(WxCoupon couponQ); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java index a20127341..e518b9f44 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java @@ -9,12 +9,14 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.TtCouponVo; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponStatisVo; import com.iformall.domain.vo.WxMerchantVo; public interface WxCouponService { + ResultData ttgoodslist(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize); ResultData list(TenantEntity tenantEntity,WxCoupon wxCoupon, Integer pageNum, Integer pageSize); @@ -79,6 +81,8 @@ public interface WxCouponService { WxCouponCVo getVoById(Long id,String tenantId); WxCouponCVo getVoStatusById(Long id,String tenantId); + + WxCoupon getAttrsById(Long couponId, String tenantId); /** * 保存或更新实体 * @@ -274,4 +278,6 @@ public interface WxCouponService { ResultData productSave(WxCoupon coupon); + + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java index e818c1538..89f352856 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java @@ -125,7 +125,6 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { @Override public void handTemplate(GoodsTemplateGet temp, WxCoupon coupon) { if(!coupon.getProductAttrKeyValueMap().isEmpty()){ - List productAttrs = new ArrayList<>(); for (GoodsTemplateGet.ProductAttrs attr: temp.getProductAttrs()) { String value = coupon.getProductAttrKeyValueMap().get(attr.getKey()); if(StringUtils.isNotBlank(value)){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index b20c43620..26fc53f8a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -57,7 +57,7 @@ import static java.util.stream.Collectors.toList; @Service -public class WxCouponServiceImpl
implements WxCouponService { +public class WxCouponServiceImpl implements WxCouponService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired @@ -140,6 +140,11 @@ public class WxCouponServiceImpl
implements WxCouponService { @Autowired private MqBaseProducer mqBaseProducer; + @Override + public ResultData ttgoodslist(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { + return null; + } + @Override public ResultData list(TenantEntity tenantEntity,WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { if (null == wxCoupon) wxCoupon = new WxCoupon(); @@ -302,6 +307,11 @@ public class WxCouponServiceImpl
implements WxCouponService { return wxCouponCVo; } + @Override + public WxCoupon getAttrsById(Long id, String tenantId) { + return wxCouponMapper.getAttrsById(id,tenantId); + } + private Long parseMerchantId(JSONObject merchantParam){ return Long.valueOf(merchantParam.getString("id")); diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 018e82805..f7069666d 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -326,6 +326,19 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From bd5d8d526ea5b70f0f202b5cc40ea30e8ec9ade4 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Jun 2022 20:11:07 +0800 Subject: [PATCH 34/97] //tt product --- mallinkService/src/main/resources/mapper/WxCouponMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 414e1d642..736e593f6 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -1319,7 +1319,7 @@ - + @@ -1362,7 +1362,7 @@ - select c.`id`,c.`tenant_id`,c.`parent_tenant_id`,c.`type`,c.`cover_img`, c.`title`,c.`sub_title`,c.`sale_price`,c.`freight_price`,c.`send_type`, c.`valid_type`,c.`valid_start_date`,c.`valid_end_date`,c.pick_start_date,c.pick_end_date, From 383aa286e95a4fdb9688274c77e2aa6ed08bf03c Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Jun 2022 20:35:56 +0800 Subject: [PATCH 35/97] //tt product --- .../controller/market/WxCouponController.java | 7 +++++-- .../java/com/iformall/service/WxCouponService.java | 2 +- .../iformall/service/impl/WxCouponServiceImpl.java | 12 +++++++----- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index f87c5a94d..d441c5fc9 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -648,8 +648,11 @@ public class WxCouponController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } - ResultData result = wxCouponService.productSave(coupon); - return result; + try { + return wxCouponService.productSave(coupon); + } catch (Exception e) { + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } } } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java index e518b9f44..19beb0a0b 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java @@ -277,7 +277,7 @@ public interface WxCouponService { List getCouponMerchantList(TenantEntity tenantInfo, Long couponId); - ResultData productSave(WxCoupon coupon); + ResultData productSave(WxCoupon coupon) throws Exception; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index f17f6f7aa..cb32992b4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -1240,7 +1240,7 @@ public class WxCouponServiceImpl implements WxCouponService { @Override @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) - public ResultData productSave(WxCoupon coupon) { + public ResultData productSave(WxCoupon coupon) throws Exception { WxCoupon ttattrs = this.getAttrsById(coupon.getId(), coupon.getTenantId()); if(ttattrs.getProductType() == null || ttattrs.getCategoryId() == null || ttattrs.getProductAttrKeyValueMap().isEmpty() @@ -1295,11 +1295,13 @@ public class WxCouponServiceImpl implements WxCouponService { return new ResultData(); } catch (WxErrorException e) { - logger.error(e.getMessage()); - return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + throw new Exception(e); +// logger.error(e.getMessage()); +// return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); } catch (Exception e){ - logger.error(e.getMessage()); - return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + throw e; +// logger.error(e.getMessage()); +// return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); } } From f0055385cc1fabf6b990a9bb4e75e3ba1e75dfe8 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 8 Jun 2022 20:54:06 +0800 Subject: [PATCH 36/97] //tt product --- .../com/iformall/service/impl/WxCouponServiceImpl.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index cb32992b4..15bd7e296 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -137,6 +137,9 @@ public class WxCouponServiceImpl implements WxCouponService { @Autowired TtCouponChannelPoiMapper ttCouponChannelPoiMapper; + @Autowired + WxAppinfoService wxAppinfoService; + @Autowired private MqBaseProducer mqBaseProducer; @@ -1267,7 +1270,7 @@ public class WxCouponServiceImpl implements WxCouponService { prostruct.setAccountName(merchantList.get(0).getMerchantName()); // prostruct.setSoldStartTime(); // prostruct.setSoldEndTime(); - prostruct.setOutUrl(getGoodsEntrySchema(ttWebService.getTtWebConfig().getAppid(),wxCouponChannelAddVo.getId())); + prostruct.setOutUrl(getGoodsEntrySchema(coupon,wxCouponChannelAddVo.getId())); List poiList = new ArrayList(); for (WxMerchantVo mvo:merchantList){ Product.PoiStruct poiStruct = new Product.PoiStruct(); @@ -1330,9 +1333,10 @@ public class WxCouponServiceImpl implements WxCouponService { } } - private String getGoodsEntrySchema(String appid,Long couponChannelId){ + private String getGoodsEntrySchema(TenantEntity tenantEntity,Long couponChannelId){ + WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity, EnumAppPlat.TOUTIAO); Map map = new HashMap<>(); - map.put("app_id",appid); + map.put("app_id",cAppInfo.getAppId()); map.put("path", Constant.mainPageUrl); Map paramMap = new HashMap<>(); paramMap.put("type","cd"); From 01054613c5e294fc1e06d0a544aabcb752592bb8 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 9 Jun 2022 13:40:43 +0800 Subject: [PATCH 37/97] //tt product --- .../market/WxCouponChannelController.java | 1 + .../com/iformall/domain/po/WxMerchant.java | 4 ++ .../com/iformall/domain/vo/WxMerchantVo.java | 5 ++ .../enums/EnumCouponChannelStatus.java | 4 ++ .../service/impl/WxCouponServiceImpl.java | 70 +++++++++++++++---- .../service/impl/WxMerchantServiceImpl.java | 2 + 6 files changed, 71 insertions(+), 15 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java index 22c79f62f..4f2fbbae5 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java @@ -52,6 +52,7 @@ public class WxCouponChannelController extends BaseController { @Autowired @Qualifier("objectCommonRedisTemplate") RedisTemplate redisTemplate; + @ApiOperation("分页列表接口") @GetMapping("list") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java index 413c1d7f6..c4fa93c1f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java @@ -346,6 +346,10 @@ public class WxMerchant extends TenantEntity { @TableField(exist = false) private String addr; + @io.swagger.annotations.ApiModelProperty(value=" supplierExtId",name="supplierExtId") + @TableField(exist = false) + private String supplierExtId; + @io.swagger.annotations.ApiModelProperty(value="ttPoi",name="ttPoi") @TableField(exist = false) private String ttPoi; diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantVo.java index 9d62e49f4..fbd2c1ed0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantVo.java @@ -101,6 +101,10 @@ public class WxMerchantVo extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "置顶时间", name = "topTime") private Date topTime; + @io.swagger.annotations.ApiModelProperty(value=" supplierExtId",name="supplierExtId") + @TableField(exist = false) + private String supplierExtId; + @io.swagger.annotations.ApiModelProperty(value="ttPoi",name="ttPoi") @TableField(exist = false) private String ttPoi; @@ -132,6 +136,7 @@ public class WxMerchantVo extends TenantEntity { this.linkLinePhone = m.getLinkLinePhone(); this.topTime = m.getTopTime(); this.addr = m.getAddr(); + this.supplierExtId = m.getSupplierExtId(); this.ttPoi = m.getTtPoi(); this.longitude = m.getLongitude(); this.latitude = m.getLatitude(); diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelStatus.java index 3cf00a521..e8283dceb 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelStatus.java @@ -7,8 +7,12 @@ public enum EnumCouponChannelStatus { // 0-草稿/待生效;1-已生效/已发布/已投放;2-已下架; + STATUS_BEFORE(-1, "预上线"),//审核用 + STATUS_THROW_IN(0, "已上架"), STATUS_TAKE_OFFF(1, "已下架"), + + STATUS_AFTER(2, "作废"), ; public static EnumCouponChannelStatus getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index 15bd7e296..03da4cf59 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -1250,14 +1250,59 @@ public class WxCouponServiceImpl implements WxCouponService { || ttattrs.getSkuAttrKeyValueMap().isEmpty()){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该券缺少必要属性"); } - //添加到审核渠道 - WxCouponChannelAddVo wxCouponChannelAddVo = wxCouponChannelService.addCouponChannel(coupon.getId(), EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_SAVE_LIST.getCode(), - coupon, null, null, null, null, null); + if(coupon.getStatus() != EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()) { + return new ResultData(ErrorCode.COUPON_ORDER_IS_INVALID); + } + + //获取门店 + List couponMerchantList = getCouponMerchantList(coupon, coupon.getId()); + List poiList = new ArrayList(); + for (WxMerchantVo mvo:couponMerchantList){ + if(StringUtils.isNotBlank(mvo.getSupplierExtId())){ + Product.PoiStruct poiStruct = new Product.PoiStruct(); + poiStruct.setSupplierExtId(mvo.getTtPoi()); + poiList.add(poiStruct); + } + } + if(poiList.isEmpty()){ + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"未找到poi门店"); + } + + //查询是否有上架的 + WxCouponChannel wxCouponChannelQuery = new WxCouponChannel(); + wxCouponChannelQuery.updateTenantInfo(coupon); + wxCouponChannelQuery.setCouponId(coupon.getId()); + wxCouponChannelQuery.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); + wxCouponChannelQuery.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); + List wxCouponChannels = wxCouponChannelMapper.findList(wxCouponChannelQuery); + if(wxCouponChannels.size() > 0){ + return new ResultData(ErrorCode.COUPON_CHANNEL_IS_EXISTED); + } + //预审核的作废掉 重新投放 + wxCouponChannelQuery.setStatus(EnumCouponChannelStatus.STATUS_BEFORE.getCode()); + WxCouponChannel updCouponChannel = new WxCouponChannel(); + updCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_AFTER.getCode()); + updCouponChannel.setUpdateDate(new Date()); + wxCouponChannelMapper.update(updCouponChannel,new QueryWrapper<>(wxCouponChannelQuery)); + //投放预审核 + WxCouponChannel wxCouponChannel = new WxCouponChannel(); + final IdWorker idWorker = IdWorker.get(); + wxCouponChannel.setId(idWorker.nextId()); + wxCouponChannel.updateTenantInfo(coupon); + wxCouponChannel.setShowBeginTime(new Date()); + wxCouponChannel.setBeginTime(new Date()); + wxCouponChannel.setEndTime(coupon.getValidEndDate()); + wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_AFTER.getCode()); + wxCouponChannel.setCouponId(coupon.getId()); + wxCouponChannel.setType(coupon.getType()); + wxCouponChannel.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); + wxCouponChannel.setBusiness(coupon.getBusiness()); + wxCouponChannel.setSubBusiness(coupon.getSubBusiness()); + wxCouponChannel.setTitle(coupon.getTitle()); + wxCouponChannelMapper.insert(wxCouponChannel); //提交审核 try { - List couponMerchantList = getCouponMerchantList(coupon, coupon.getId()); - List merchantList = couponMerchantList.stream().sorted(Comparator.comparing(m -> m.getTtPoi(), Comparator.nullsLast(String::compareTo))).collect(toList()); TtWebService ttWebService = ttMerchantPoiService.getTtWebService(coupon); Product product = new Product(); @@ -1267,16 +1312,11 @@ public class WxCouponServiceImpl implements WxCouponService { prostruct.setCategoryId(ttattrs.getCategoryId()); prostruct.setProductType(ttattrs.getProductType()); prostruct.setBizLine(5);//默认小程序 - prostruct.setAccountName(merchantList.get(0).getMerchantName()); + prostruct.setAccountName(couponMerchantList.get(0).getMerchantName()); // prostruct.setSoldStartTime(); // prostruct.setSoldEndTime(); - prostruct.setOutUrl(getGoodsEntrySchema(coupon,wxCouponChannelAddVo.getId())); - List poiList = new ArrayList(); - for (WxMerchantVo mvo:merchantList){ - Product.PoiStruct poiStruct = new Product.PoiStruct(); - poiStruct.setSupplierExtId(mvo.getId().toString()); - poiList.add(poiStruct); - } + prostruct.setOutUrl(getGoodsEntrySchema(coupon,wxCouponChannel.getId())); + prostruct.setPoiList(poiList); prostruct.setAttrKeyValueMap(ttattrs.getProductAttrKeyValueMap()); product.setProduct(prostruct); @@ -1294,11 +1334,11 @@ public class WxCouponServiceImpl implements WxCouponService { product.setSku(skuStruct); String productId = ttWebService.getGoodsService().productSave(product); - syncCouponChannelPoi(coupon,wxCouponChannelAddVo.getId(),productId); + syncCouponChannelPoi(coupon,wxCouponChannel.getId(),productId); return new ResultData(); } catch (WxErrorException e) { - throw new Exception(e); + throw new Exception(e.getMessage()); // logger.error(e.getMessage()); // return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); } catch (Exception e){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index a16db4d29..7d0d3c061 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -1331,6 +1331,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { TtMerchantPoi poi = poiMap.get(m.getId()); if(null != poi){ m.setAddr(poi.getAddress()); + m.setSupplierExtId(poi.getSupplierExtId()); m.setTtPoi(poi.getPoiId()); m.setLongitude(poi.getLongitude()); m.setLatitude(poi.getLatitude()); @@ -1399,6 +1400,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { vo.setShopVoList(merchantShopVoList.get(vo.getId())); } vo.setAddr(m.getAddr()); + vo.setSupplierExtId(m.getSupplierExtId()); vo.setTtPoi(m.getTtPoi()); vo.setLongitude(m.getLongitude()); vo.setLatitude(m.getLatitude()); From c49cc57f2b5d842a8a824907e9e390b68676771d Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 9 Jun 2022 13:53:57 +0800 Subject: [PATCH 38/97] //tt product --- .../src/main/java/com/iformall/domain/vo/TtCouponVo.java | 4 ++-- .../src/main/resources/mapper/WxCouponMapper.xml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponVo.java index 059c519b5..a583d30cf 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponVo.java @@ -20,8 +20,8 @@ public class TtCouponVo extends WxCoupon implements Serializable { @io.swagger.annotations.ApiModelProperty(value="spuId",name="spuId") private String spuId; - @io.swagger.annotations.ApiModelProperty(value="状态:0-审核中,1-上架,2-下架,3-审核拒绝 4-审核通过",name="status") - private Integer status; + @io.swagger.annotations.ApiModelProperty(value="状态:0-审核中,1-上架,2-下架,3-审核拒绝 4-审核通过",name="poiStatus") + private Integer poiStatus; @io.swagger.annotations.ApiModelProperty(value="描述",name="statusDesc") private String statusDesc; diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 736e593f6..4863bd466 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -1355,7 +1355,7 @@ - + @@ -1370,7 +1370,7 @@ c.`status`,c.`create_date`,c.`update_date`,c.`business`,c.`sub_business`, c.`auto_refund`,c.`credit_price`,c.`credit_refund`, c.content_type,c.source_type,c.product_type,c.category_id, - poi.coupon_channel_id,poi.spu_id,poi.status,poi.status_desc,poi.last_status,poi.last_status_desc + poi.coupon_channel_id,poi.spu_id,poi.status poi_status,poi.status_desc,poi.last_status,poi.last_status_desc from wx_coupon c left join tt_coupon_channel_poi poi on poi.id = c.id where c.`type` = #{type} @@ -1414,8 +1414,8 @@ and poi.`spu_id` = #{spuId} - - and poi.`status` = #{status} + + and poi.`status` = #{poiStatus} From 119f794971e911842d8ed362ce085e85990609d1 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 9 Jun 2022 14:14:57 +0800 Subject: [PATCH 39/97] //tt product --- .../java/com/iformall/service/impl/WxCouponServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index 03da4cf59..b45c06c12 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -1260,7 +1260,7 @@ public class WxCouponServiceImpl implements WxCouponService { for (WxMerchantVo mvo:couponMerchantList){ if(StringUtils.isNotBlank(mvo.getSupplierExtId())){ Product.PoiStruct poiStruct = new Product.PoiStruct(); - poiStruct.setSupplierExtId(mvo.getTtPoi()); + poiStruct.setSupplierExtId(mvo.getSupplierExtId()); poiList.add(poiStruct); } } From e8192529c3eac7c47f669563d37b47953c5f038f Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 9 Jun 2022 14:23:05 +0800 Subject: [PATCH 40/97] //tt product --- .../web/api/impl/TtWebGoodsServiceImpl.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/douyin/web/api/impl/TtWebGoodsServiceImpl.java b/mallinkService/src/main/java/com/iformall/douyin/web/api/impl/TtWebGoodsServiceImpl.java index 755722769..76e00bd7d 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/web/api/impl/TtWebGoodsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/douyin/web/api/impl/TtWebGoodsServiceImpl.java @@ -62,10 +62,10 @@ public class TtWebGoodsServiceImpl implements TtWebGoodsService { String result = this.service.execute(getExecutor, apiUrl, param); BaseGoodsResult baseResult = GSON.fromJson(result, BaseGoodsResult.class); if(baseResult.isSuccess()){ - JsonObject object = (JsonObject) baseResult.getData(); - if(object != null){ - JsonObject product_draft_list = object.getAsJsonObject("product_draft_list"); - List list = GSON.fromJson(product_draft_list.toString(), + Map map = (Map) baseResult.getData(); + if(map != null){ + String product_draft_list = map.get("product_draft_list").toString(); + List list = GSON.fromJson(product_draft_list, new TypeReference>() {}.getType()); return list; } @@ -114,10 +114,10 @@ public class TtWebGoodsServiceImpl implements TtWebGoodsService { String result = this.service.execute(getExecutor, apiUrl, param); BaseGoodsResult baseResult = GSON.fromJson(result, BaseGoodsResult.class); if(baseResult.isSuccess()){ - JsonObject object = (JsonObject) baseResult.getData(); - if(object != null){ - JsonObject product_online_list = object.getAsJsonObject("product_online_list"); - List list = GSON.fromJson(product_online_list.toString(), + Map map = (Map) baseResult.getData(); + if(map != null){ + String product_online_list = map.get("product_online_list").toString(); + List list = GSON.fromJson(product_online_list, new TypeReference>() {}.getType()); return list; } @@ -160,8 +160,8 @@ public class TtWebGoodsServiceImpl implements TtWebGoodsService { String result = this.service.execute(postExecutor, apiUrl, GSON.toJson(product)); BaseGoodsResult baseResult = GSON.fromJson(result, BaseGoodsResult.class); if(baseResult.isSuccess()){ - JsonObject data = (JsonObject) baseResult.getData(); - return GsonHelper.getString(data,"product_id"); + Map map = (Map) baseResult.getData(); + return map.get("product_id").toString(); }else{ throw new WxErrorException(WxError.builder().errorCode(baseResult.getErrCode()).errorMsg(baseResult.getErrMsg()).build()); } From fd9a4bb0e592dd1643a4b4942e32d5f90aaf989f Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 9 Jun 2022 14:38:42 +0800 Subject: [PATCH 41/97] //tt product --- .../java/com/iformall/service/impl/WxCouponServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index b45c06c12..c4770f118 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -145,6 +145,9 @@ public class WxCouponServiceImpl implements WxCouponService { @Override public ResultData ttgoodslist(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { + if(StringUtils.isBlank(ttCouponVo.getSortColumns())){ + ttCouponVo.setSortColumns(BaseEntity.SortField.CCreateDate_DESC, BaseEntity.SortField.CId_DESC); + } PageInfo pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxCouponMapper.ttgoodslist(ttCouponVo)); List couponList = pageInfo.getList(); From 73c159ff2d919d8c0fe646e50e8d1ea312b7d0b4 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 9 Jun 2022 16:19:29 +0800 Subject: [PATCH 42/97] //tt product --- .../controller/callback/TtWebController.java | 75 ++++++++++++------- .../mapper/TtCouponChannelPoiMapper.java | 2 + .../com/iformall/service/WxCouponService.java | 2 + .../service/impl/WxCouponServiceImpl.java | 9 ++- .../mapper/TtCouponChannelPoiMapper.xml | 10 +++ 5 files changed, 71 insertions(+), 27 deletions(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java index 0ba90949d..837c802d7 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java @@ -1,9 +1,14 @@ package com.iformall.controller.callback; +import com.alibaba.fastjson.JSON; import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.TtCouponChannelPoi; import com.iformall.domain.po.WxAppinfo; +import com.iformall.enums.EnumSpuSyncStatus; import com.iformall.service.MailService; import com.iformall.service.WxAppinfoService; +import com.iformall.service.WxCouponChannelService; +import com.iformall.service.WxCouponService; import com.iformall.utils.DateUtils; import me.chanjar.weixin.common.util.crypto.SHA1; import org.slf4j.Logger; @@ -32,6 +37,9 @@ public class TtWebController extends BaseController { @Autowired private WxAppinfoService wxAppinfoService; + @Autowired + private WxCouponService wxCouponService; + /** * { * "event": "verify_webhook", @@ -45,50 +53,67 @@ public class TtWebController extends BaseController { @ResponseBody public Map notice( @RequestBody Map parameterMap,HttpServletRequest request){ logger.debug("[" + getIpAddr() + "] TtOrderCallbackController::notice"); + logger.info("抖音开放平台通知-----{}"+JSON.toJSONString(parameterMap)); Map resultMap = new HashMap<>(); - -// String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); - logger.info("抖音开放平台通知-----parameterMap{}"+parameterMap); + String event = (String) parameterMap.get("event"); String client_key = (String) parameterMap.get("client_key"); - logger.info("抖音开放平台通知-----client_key{}"+client_key); WxAppinfo appInfo = wxAppinfoService.getByAppId(client_key); + if(appInfo == null){ + resultMap.put("err_code",1000); + resultMap.put("err_tips","error"); + return resultMap; + } + Map content = (HashMap) parameterMap.get("content"); String header = request.getHeader("X-Douyin-Signature"); - logger.info("抖音开放平台通知-----header.X-Douyin-Signature{}"+header); - - String gen = SHA1.gen(appInfo.getSecret(), parameterMap.toString()); - + String sha1gen = SHA1.gen(appInfo.getSecret(), JSON.toJSONString(parameterMap)); //发邮件 String[] receivers = fmExceptionEmails.split(","); StringBuilder sb = new StringBuilder(); sb.append(DateUtils.date2String(new Date())); sb.append("\n"); - sb.append("抖音开放平台通知{}"+parameterMap.toString()); + sb.append("抖音开放平台通知{}"+JSON.toJSONString(parameterMap)); sb.append("\n"); - sb.append("SHA1.gen{}"+gen); + sb.append("sha1gen{}"+sha1gen); sb.append("\n"); sb.append("header{}"+header); //发送邮件 mailService.sendSimpleMail(receivers, "抖音开放平台通知", sb.toString()); - try { -// Map parameterMap = JSONObject.parseObject(body, Map.class); - - String event = (String) parameterMap.get("event"); - logger.info("抖音开放平台通知-----event{}"+event); - - Map content = (HashMap) parameterMap.get("content"); - logger.info("抖音开放平台通知-----content{}"+content.toString()); - String challenge = content.get("challenge").toString(); - logger.info("抖音开放平台通知-----content.challenge{}"+challenge); - + if("verify_webhook".equals(event)){ + String challenge = (String) content.get("challenge"); resultMap.put("challenge",challenge); return resultMap; - } catch (Exception e){ - logger.error(e.getMessage()); - resultMap.put("err_code",1000); - resultMap.put("err_tips","error"); + }else if("life_goods_audit".equals(event)){ + String product_id = content.get("product_id").toString(); + String reason = (String) content.get("reason"); + String status = (String) content.get("status"); + + TtCouponChannelPoi couponChannelPoi = new TtCouponChannelPoi(); + couponChannelPoi.updateTenantInfo(appInfo); + couponChannelPoi.setSpuId(product_id); + if("FAIL".equals(status)){ + couponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_rejection.getCode()); + couponChannelPoi.setLastStatusDesc(reason); + + }else if("SUCCESS".equals(status)){ + couponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_pass.getCode()); + couponChannelPoi.setLastStatusDesc(reason); + + }else{ + resultMap.put("err_code",1000); + resultMap.put("err_tips","error"); + return resultMap; + } + wxCouponService.handlerTtGoodsAudit(couponChannelPoi); + resultMap.put("err_code",0); + resultMap.put("err_tips","success"); return resultMap; } + + resultMap.put("err_code",1000); + resultMap.put("err_tips","error"); + return resultMap; } + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java b/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java index 019934e66..a1c9318b5 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java @@ -13,4 +13,6 @@ public interface TtCouponChannelPoiMapper extends CommonMapper findIdList(TtCouponChannelPoi record); Integer getPoiPutOnCount(@Param("tenantId")String tenantId, @Param("ids")List ids); + + int updateBySpuId(TtCouponChannelPoi couponChannelPoi); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java index 19beb0a0b..c33b48c27 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java @@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletResponse; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; +import com.iformall.domain.po.TtCouponChannelPoi; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.TtCouponVo; @@ -280,4 +281,5 @@ public interface WxCouponService { ResultData productSave(WxCoupon coupon) throws Exception; + int handlerTtGoodsAudit(TtCouponChannelPoi couponChannelPoi); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index c4770f118..efe13ecf5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -1351,13 +1351,18 @@ public class WxCouponServiceImpl implements WxCouponService { } } + @Override + public int handlerTtGoodsAudit(TtCouponChannelPoi couponChannelPoi) { + return ttCouponChannelPoiMapper.updateBySpuId(couponChannelPoi); + } + private void syncCouponChannelPoi(WxCoupon coupon,Long couponChannelId,String productId){ TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(coupon.getId()); Date date = new Date(); if(ttCouponChannelPoi != null){ ttCouponChannelPoi.setCouponChannelId(couponChannelId); ttCouponChannelPoi.setSpuId(productId); - ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_auditing.getCode()); +// ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_auditing.getCode()); ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_auditing.getCode()); ttCouponChannelPoi.setLastStatusDesc(""); ttCouponChannelPoi.setUpdateDate(date); @@ -1368,7 +1373,7 @@ public class WxCouponServiceImpl implements WxCouponService { ttCouponChannelPoi.updateTenantInfo(coupon); ttCouponChannelPoi.setCouponChannelId(couponChannelId); ttCouponChannelPoi.setSpuId(productId); - ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_auditing.getCode()); +// ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_auditing.getCode()); ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_auditing.getCode()); ttCouponChannelPoi.setCreateDate(date); ttCouponChannelPoi.setUpdateDate(date); diff --git a/mallinkService/src/main/resources/mapper/TtCouponChannelPoiMapper.xml b/mallinkService/src/main/resources/mapper/TtCouponChannelPoiMapper.xml index be4e34675..24bf2f52c 100644 --- a/mallinkService/src/main/resources/mapper/TtCouponChannelPoiMapper.xml +++ b/mallinkService/src/main/resources/mapper/TtCouponChannelPoiMapper.xml @@ -95,4 +95,14 @@ + + + update wx_bill_property set update_date = now() + ,`status` = #{status} + ,`last_status` = #{statusDesc} + ,`last_status` = #{lastStatus} + ,`last_status_desc` = #{lastStatusDesc} + where `spu_id` = #{spuId} + + From af8ccc5f77f7ee8bbb6c3edbb32d5af8fea70c50 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 9 Jun 2022 17:08:14 +0800 Subject: [PATCH 43/97] //tt product --- .../controller/market/WxCouponController.java | 20 ++++++ .../com/iformall/enums/EnumSpuSyncStatus.java | 1 + .../com/iformall/service/WxCouponService.java | 4 ++ .../service/impl/WxCouponServiceImpl.java | 68 +++++++++++++++++++ 4 files changed, 93 insertions(+) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index d441c5fc9..cf60c27b2 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -655,4 +655,24 @@ public class WxCouponController extends BaseController { } } + @ApiOperation("实时查询审核状态") + @GetMapping("/goods/product/draft") + @SystemControllerLog(description = "实时查询审核状态") + public ResultData productDraft(Long id) { + if (id == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + return wxCouponService.productDraftGet(id); + } + + @ApiOperation("实时查询线上商品状态") + @GetMapping("/goods/product/online") + @SystemControllerLog(description = "实时查询审核状态") + public ResultData productOnline(Long id) { + if (id == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + return wxCouponService.productOnlineGet(id); + } + } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumSpuSyncStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumSpuSyncStatus.java index 537553ae3..43de3788a 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumSpuSyncStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumSpuSyncStatus.java @@ -11,6 +11,7 @@ public enum EnumSpuSyncStatus { sync_pull_off(2, "下架"), sync_audit_rejection(3, "审核拒绝"), sync_audit_pass(4, "审核通过"), + sync_audit_disable(5, "封禁"), ; public static EnumSpuSyncStatus getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java index c33b48c27..38110856c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java @@ -282,4 +282,8 @@ public interface WxCouponService { int handlerTtGoodsAudit(TtCouponChannelPoi couponChannelPoi); + + ResultData productDraftGet(Long id); + + ResultData productOnlineGet(Long id); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index efe13ecf5..343b39bfa 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -1356,6 +1356,74 @@ public class WxCouponServiceImpl implements WxCouponService { return ttCouponChannelPoiMapper.updateBySpuId(couponChannelPoi); } + @Override + public ResultData productDraftGet(Long id) { + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(id); + if(ttCouponChannelPoi == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该商品未提交审核"); + } + try { + TtWebService ttWebService = ttMerchantPoiService.getTtWebService(ttCouponChannelPoi); + List products = ttWebService.getGoodsService().productDraftGet(null, ttCouponChannelPoi.getId().toString()); + if(products.size() > 0){ + Product product = products.get(0); + if(product.getDraftStatus().intValue() == 12 && !EnumSpuSyncStatus.sync_audit_rejection.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_rejection.getCode()); + ttCouponChannelPoi.setLastStatusDesc(product.getAuditMsg()); + ttCouponChannelPoi.setUpdateDate(new Date()); + ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); + + }else if(product.getDraftStatus().intValue() == 1 && !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_pass.getCode()); + ttCouponChannelPoi.setLastStatusDesc(""); + ttCouponChannelPoi.setUpdateDate(new Date()); + ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); + } + + return new ResultData(product); + }else{ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未查询到审核数据"); + } + } catch (WxErrorException e) { + e.printStackTrace(); + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),e.getMessage()); + } + } + + @Override + public ResultData productOnlineGet(Long id) { + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(id); + if(ttCouponChannelPoi == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该商品未提交审核"); + } + try { + TtWebService ttWebService = ttMerchantPoiService.getTtWebService(ttCouponChannelPoi); + List products = ttWebService.getGoodsService().productOnlineGet(null, ttCouponChannelPoi.getId().toString()); + if(products.size() > 0){ + Product product = products.get(0); + if(product.getOnlineStatus().intValue() == 1 && !EnumSpuSyncStatus.sync_put_on.getCode().equals(ttCouponChannelPoi.getStatus())){ + ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_put_on.getCode()); + ttCouponChannelPoi.setUpdateDate(new Date()); + ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); + }else if(product.getOnlineStatus().intValue() == 2 && !EnumSpuSyncStatus.sync_pull_off.getCode().equals(ttCouponChannelPoi.getStatus())){ + ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_pull_off.getCode()); + ttCouponChannelPoi.setUpdateDate(new Date()); + ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); + }else if(product.getOnlineStatus().intValue() == 3 && !EnumSpuSyncStatus.sync_audit_disable.getCode().equals(ttCouponChannelPoi.getStatus())){ + ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_audit_disable.getCode()); + ttCouponChannelPoi.setUpdateDate(new Date()); + ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); + } + return new ResultData(product); + }else{ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未查询到在线数据"); + } + } catch (WxErrorException e) { + e.printStackTrace(); + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),e.getMessage()); + } + } + private void syncCouponChannelPoi(WxCoupon coupon,Long couponChannelId,String productId){ TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(coupon.getId()); Date date = new Date(); From abc9b58b79c162346d4b986dbdd1a3aa95af3c9e Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 9 Jun 2022 17:55:24 +0800 Subject: [PATCH 44/97] //tt product --- .../market/TtCouponGoodsController.java | 158 +++++++++ .../controller/market/WxCouponController.java | 94 ------ .../controller/callback/TtWebController.java | 26 +- .../iformall/domain/vo/TtCouponChannelVo.java | 204 +++++++++++ .../com/iformall/mapper/WxCouponMapper.java | 2 +- .../service/TtCouponGoodsService.java | 21 ++ .../com/iformall/service/WxCouponService.java | 11 - .../impl/TtCouponGoodsServiceImpl.java | 319 ++++++++++++++++++ .../service/impl/WxCouponServiceImpl.java | 269 --------------- .../main/resources/mapper/WxCouponMapper.xml | 2 +- 10 files changed, 719 insertions(+), 387 deletions(-) create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/TtCouponChannelVo.java create mode 100644 mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java new file mode 100644 index 000000000..05f15eb16 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java @@ -0,0 +1,158 @@ +package com.iformall.controller.market; + +import com.iformall.annotation.SystemControllerLog; +import com.iformall.annotation.TenantIgnore; +import com.iformall.common.ErrorCode; +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.vo.TtCouponChannelVo; +import com.iformall.domain.vo.TtCouponVo; +import com.iformall.domain.vo.WxCouponChannelVo; +import com.iformall.douyin.web.bean.GoodsTemplateGet; +import com.iformall.enums.*; +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 me.chanjar.weixin.common.error.WxErrorException; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +@RestController +@RequestMapping("ttgoods") +@Api(description = "抖音商品库") +public class TtCouponGoodsController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxCouponService wxCouponService; + + @Autowired + private TtCouponGoodsService ttCouponGoodsService; + + @Autowired + private TtMerchantPoiService ttMerchantPoiService; + + @Autowired + private TtGoodsCategoryService ttGoodsCategoryService; + + @ApiOperation("分页列表接口") + @GetMapping("couponList") + @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 couponList(@ModelAttribute TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxCouponController::couponList"); + if (ttCouponVo == null) ttCouponVo = new TtCouponVo(); + ttCouponVo.updateTenantInfo(getTenantInfo()); + ttCouponVo.setType(EnumCouponType.COUPON_DOUYIN.getCode()); + if(StringUtils.isNotBlank(ttCouponVo.getSortColumn())){ + String coryColumn = "c."+ttCouponVo.getSortColumns(); + ttCouponVo.setSortColumns(coryColumn); + ttCouponVo.setSortColumn(null); + } + if (ttCouponVo.getStatus() != null && ttCouponVo.getStatus() == -1) + ttCouponVo.setStatus(null); + return ttCouponGoodsService.couponList(ttCouponVo, pageNum, pageSize); + } + +// @ApiOperation("分页列表接口") +// @GetMapping("channelList") +// @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 channelList(@ModelAttribute TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize) { +// logger.debug("[" + getIpAddr() + "] WxCouponController::channelList"); +// if (ttChannelVo == null) ttChannelVo = new TtCouponChannelVo(); +// if (ttChannelVo.getStatus() != null && ttChannelVo.getStatus() == -1) { +// ttChannelVo.setStatus(null); +// } +// ttChannelVo.updateTenantInfo(getTenantInfo()); +// ttCouponVo.setType(EnumCouponType.COUPON_DOUYIN.getCode()); +// if(StringUtils.isNotBlank(ttCouponVo.getSortColumn())){ +// String coryColumn = "c."+ttCouponVo.getSortColumns(); +// ttCouponVo.setSortColumns(coryColumn); +// ttCouponVo.setSortColumn(null); +// } +// if (ttCouponVo.getStatus() != null && ttCouponVo.getStatus() == -1) +// ttCouponVo.setStatus(null); +// return ttCouponGoodsService.channelList(ttCouponVo, pageNum, pageSize); +// } + + @ApiOperation("根据类目获取商品模板") + @GetMapping("getTemplate") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + @SystemControllerLog(description = "根据类目获取商品模板") + public ResultData getGoodsTemplate(Long couponId,Integer categoryId,Integer productType) { + logger.debug("[" + getIpAddr() + "] WxCouponController::getGoodsTemplate"); + if(productType == null){ + productType = 1; + } + if(couponId == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + WxCoupon coupon = wxCouponService.getAttrsById(couponId, getTenantInfo().getTenantId()); + if(coupon == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + + try { + GoodsTemplateGet goodsTemplateGet = ttMerchantPoiService.getTtWebService(getTenantInfo()).getGoodsService().templateGet(categoryId, productType); + ttGoodsCategoryService.adminIsShow(goodsTemplateGet); + ttGoodsCategoryService.handTemplate(goodsTemplateGet,coupon); + return new ResultData(goodsTemplateGet); + } catch (WxErrorException e) { + e.printStackTrace(); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + + } + + @ApiOperation("提交审核") + @PostMapping("product/save") + @SystemControllerLog(description = "提交审核") + public ResultData productSave(@RequestBody WxCoupon wxCoupon) { + if (wxCoupon.getId() == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + WxCoupon coupon = wxCouponService.getById(wxCoupon.getId(), getTenantInfo().getTenantId()); + if(coupon == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + + try { + return ttCouponGoodsService.productSave(coupon); + } catch (Exception e) { + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + } + + @ApiOperation("实时查询审核状态") + @GetMapping("product/draft") + @SystemControllerLog(description = "实时查询审核状态") + public ResultData productDraft(Long id) { + if (id == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + return ttCouponGoodsService.productDraftGet(id); + } + + @ApiOperation("实时查询线上商品状态") + @GetMapping("product/online") + @SystemControllerLog(description = "实时查询审核状态") + public ResultData productOnline(Long id) { + if (id == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + return ttCouponGoodsService.productOnlineGet(id); + } + +} diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index cf60c27b2..9fe2ff85f 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -59,38 +59,12 @@ public class WxCouponController extends BaseController { @Autowired private WxMallService wxMallService; @Autowired - private TtMerchantPoiService ttMerchantPoiService; - - @Autowired - private TtGoodsCategoryService ttGoodsCategoryService; - @Autowired RedisLock redisLock; @Autowired @Qualifier("objectCommonRedisTemplate") RedisTemplate redisTemplate; - @ApiOperation("分页列表接口") - @GetMapping("ttgoodslist") - @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 ttgoodslist(@ModelAttribute TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { - logger.debug("[" + getIpAddr() + "] WxCouponController::ttgoodslist"); - if (ttCouponVo == null) ttCouponVo = new TtCouponVo(); - ttCouponVo.updateTenantInfo(getTenantInfo()); - ttCouponVo.setType(EnumCouponType.COUPON_DOUYIN.getCode()); - if(StringUtils.isNotBlank(ttCouponVo.getSortColumn())){ - String coryColumn = "c."+ttCouponVo.getSortColumns(); - ttCouponVo.setSortColumns(coryColumn); - ttCouponVo.setSortColumn(null); - } - if (ttCouponVo.getStatus() != null && ttCouponVo.getStatus() == -1) - ttCouponVo.setStatus(null); - return wxCouponService.ttgoodslist(ttCouponVo, pageNum, pageSize); - } - @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @@ -607,72 +581,4 @@ public class WxCouponController extends BaseController { return result; } - @ApiOperation("根据类目获取商品模板") - @GetMapping("/goods/getTemplate") - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - @SystemControllerLog(description = "根据类目获取商品模板") - public ResultData getGoodsTemplate(Long couponId,Integer categoryId,Integer productType) { - logger.debug("[" + getIpAddr() + "] WxCouponController::getGoodsTemplate"); - if(productType == null){ - productType = 1; - } - if(couponId == null){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); - } - WxCoupon coupon = wxCouponService.getAttrsById(couponId, getTenantInfo().getTenantId()); - if(coupon == null){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); - } - - try { - GoodsTemplateGet goodsTemplateGet = ttMerchantPoiService.getTtWebService(getTenantInfo()).getGoodsService().templateGet(categoryId, productType); - ttGoodsCategoryService.adminIsShow(goodsTemplateGet); - ttGoodsCategoryService.handTemplate(goodsTemplateGet,coupon); - return new ResultData(goodsTemplateGet); - } catch (WxErrorException e) { - e.printStackTrace(); - return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); - } - - } - - @ApiOperation("提交审核") - @PostMapping("/goods/product/save") - @SystemControllerLog(description = "提交审核") - public ResultData productSave(@RequestBody WxCoupon wxCoupon) { - if (wxCoupon.getId() == null) { - return new ResultData(ResultData.ERROR, "缺少id"); - } - WxCoupon coupon = wxCouponService.getById(wxCoupon.getId(), getTenantInfo().getTenantId()); - if(coupon == null){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); - } - - try { - return wxCouponService.productSave(coupon); - } catch (Exception e) { - return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); - } - } - - @ApiOperation("实时查询审核状态") - @GetMapping("/goods/product/draft") - @SystemControllerLog(description = "实时查询审核状态") - public ResultData productDraft(Long id) { - if (id == null) { - return new ResultData(ResultData.ERROR, "缺少id"); - } - return wxCouponService.productDraftGet(id); - } - - @ApiOperation("实时查询线上商品状态") - @GetMapping("/goods/product/online") - @SystemControllerLog(description = "实时查询审核状态") - public ResultData productOnline(Long id) { - if (id == null) { - return new ResultData(ResultData.ERROR, "缺少id"); - } - return wxCouponService.productOnlineGet(id); - } - } diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java index 837c802d7..21f87acf7 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java @@ -1,14 +1,12 @@ package com.iformall.controller.callback; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.TtCouponChannelPoi; import com.iformall.domain.po.WxAppinfo; import com.iformall.enums.EnumSpuSyncStatus; -import com.iformall.service.MailService; -import com.iformall.service.WxAppinfoService; -import com.iformall.service.WxCouponChannelService; -import com.iformall.service.WxCouponService; +import com.iformall.service.*; import com.iformall.utils.DateUtils; import me.chanjar.weixin.common.util.crypto.SHA1; import org.slf4j.Logger; @@ -38,7 +36,7 @@ public class TtWebController extends BaseController { private WxAppinfoService wxAppinfoService; @Autowired - private WxCouponService wxCouponService; + private TtCouponGoodsService ttCouponGoodsService; /** * { @@ -63,7 +61,6 @@ public class TtWebController extends BaseController { resultMap.put("err_tips","error"); return resultMap; } - Map content = (HashMap) parameterMap.get("content"); String header = request.getHeader("X-Douyin-Signature"); String sha1gen = SHA1.gen(appInfo.getSecret(), JSON.toJSONString(parameterMap)); @@ -80,14 +77,21 @@ public class TtWebController extends BaseController { //发送邮件 mailService.sendSimpleMail(receivers, "抖音开放平台通知", sb.toString()); + + String content = (String) parameterMap.get("content"); + JSONObject jsonObject = JSON.parseObject(content); if("verify_webhook".equals(event)){ - String challenge = (String) content.get("challenge"); + String challenge = jsonObject.getString("challenge"); +// String challenge = (String) content.get("challenge"); resultMap.put("challenge",challenge); return resultMap; }else if("life_goods_audit".equals(event)){ - String product_id = content.get("product_id").toString(); - String reason = (String) content.get("reason"); - String status = (String) content.get("status"); + String product_id = jsonObject.getString("product_id"); + String reason = jsonObject.getString("reason"); + String status = jsonObject.getString("status"); +// String product_id = content.get("product_id").toString(); +// String reason = (String) content.get("reason"); +// String status = (String) content.get("status"); TtCouponChannelPoi couponChannelPoi = new TtCouponChannelPoi(); couponChannelPoi.updateTenantInfo(appInfo); @@ -105,7 +109,7 @@ public class TtWebController extends BaseController { resultMap.put("err_tips","error"); return resultMap; } - wxCouponService.handlerTtGoodsAudit(couponChannelPoi); + ttCouponGoodsService.handlerTtGoodsAudit(couponChannelPoi); resultMap.put("err_code",0); resultMap.put("err_tips","success"); return resultMap; diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponChannelVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponChannelVo.java new file mode 100644 index 000000000..7881a0f02 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponChannelVo.java @@ -0,0 +1,204 @@ +package com.iformall.domain.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxCouponChannel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * Created by syf on 2018/8/22. + */ +@JsonIgnoreProperties(value = {"handler"}) +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class TtCouponChannelVo extends WxCouponChannel implements Serializable { + private static final long serialVersionUID = 1L; + + @TableField(exist = false) + private Integer activityStatus; + + @io.swagger.annotations.ApiModelProperty(value="总库存",name="inventory") + private Integer inventory; + @io.swagger.annotations.ApiModelProperty(value="剩余库存",name="remainInventory") + private Integer remainInventory; + @io.swagger.annotations.ApiModelProperty(value="封面图",name="coverImg") + private String coverImg; + @io.swagger.annotations.ApiModelProperty(value="券名称",name="title") + private String title; + @io.swagger.annotations.ApiModelProperty(value="副标题",name="subTitle") + private String subTitle; + @io.swagger.annotations.ApiModelProperty(value="售价(适用于类型2,3,4,5)",name="salePrice") + private Integer salePrice; + @io.swagger.annotations.ApiModelProperty(value="使用条件金额(适用于类型1,2,3,4)",name="usePrice") + private Integer usePrice; + @io.swagger.annotations.ApiModelProperty(value="面额",name="price") + private Integer price; + + @io.swagger.annotations.ApiModelProperty(value="尾款(适用于类型9)",name="tailPrice") + private Integer tailPrice; + @io.swagger.annotations.ApiModelProperty(value="原价(适用于类型9)",name="origPrice") + private Integer origPrice; + + @io.swagger.annotations.ApiModelProperty(value="单位0:钱分,1:小时",name="unit") + private Integer unit; + + //EnumCouponUseLimitRule + @io.swagger.annotations.ApiModelProperty(value="限领规则",name="useLimitRule") + private Integer useLimitRule; + @io.swagger.annotations.ApiModelProperty(value="限领张数",name="useLimitQuantity") + private Integer useLimitQuantity; + + @io.swagger.annotations.ApiModelProperty(value="1.主动领取2.定向投放",name="sendType") + private Integer sendType; + + @io.swagger.annotations.ApiModelProperty(value="过期退款(0:正常,1不退)",name="autoRefund") + private Integer autoRefund; + + @io.swagger.annotations.ApiModelProperty(value="有效时间类型1.时间范围(valid_start_date,valid_end_date). 2领取后几日有效(valid_days)",name="validType") + private Integer validType; + @io.swagger.annotations.ApiModelProperty(value="有效日期-开始",name="validStartDate") + private Date validStartDate; + @io.swagger.annotations.ApiModelProperty(value="有效日期-结束",name="validEndDate") + private Date validEndDate; + @io.swagger.annotations.ApiModelProperty(value="自领取之日几日有效,(停车券当天有效)",name="validDays") + private Integer validDays; + + @io.swagger.annotations.ApiModelProperty(value="有效日期-开始",name="pickStartDate") + private Date pickStartDate; + @io.swagger.annotations.ApiModelProperty(value="有效日期-结束",name="pickEndDate") + private Date pickEndDate; + + @io.swagger.annotations.ApiModelProperty(value="积分售价(适用于类型10,11)",name="creditPrice") + private Integer creditPrice; + + @io.swagger.annotations.ApiModelProperty(value="领取条件",name="condition") + private String conditions; + + @io.swagger.annotations.ApiModelProperty(value="内容类型(0:小程序页面类型,1:富文本类型)",name="contentType") + private Integer contentType; + + @TableField(exist = false) + private String detail; + + @TableField(exist = false) + private String salePriceStr; + + @TableField(exist = false) + private String usePriceStr; + + @TableField(exist = false) + private String priceStr; + + @TableField(exist = false) + private String tailPriceStr; + + @TableField(exist = false) + private String origPriceStr; + + @TableField(exist = false) + private String qrCode; + + @io.swagger.annotations.ApiModelProperty(value="商户列表",name="merchantVoList") + private List merchantVoList; + + @TableField(exist = false) + private Integer gameWeight; + + @io.swagger.annotations.ApiModelProperty(value = "是否可转赠", name = "supportTransfer") + private Integer supportTransfer; + + @io.swagger.annotations.ApiModelProperty(value = "砍价/拼团人数", name = "pressLimitNum") + private Integer pressLimitNum; + + @Override + public String getSalePriceStr() { + if(salePrice!=null) { + salePriceStr = new BigDecimal(salePrice).divide(new BigDecimal(100)).toString(); + } + return salePriceStr; + } + @Override + public String getUsePriceStr() { + if(usePrice!=null) { + usePriceStr = new BigDecimal(usePrice).divide(new BigDecimal(100)).toString(); + } + return usePriceStr; + } + + @Override + public String getPriceStr() { + if(price!=null) { + priceStr = new BigDecimal(price).divide(new BigDecimal(100)).toString(); + } + return priceStr; + } + + public String getTailPriceStr() { + if(tailPrice!=null) { + tailPriceStr = new BigDecimal(tailPrice).divide(new BigDecimal(100)).toString(); + } + return tailPriceStr; + } + + public String getOrigPriceStr() { + if(origPrice!=null) { + origPriceStr = new BigDecimal(origPrice).divide(new BigDecimal(100)).toString(); + } + return origPriceStr; + } + + @Override + public String getTitle() { + return title; + } + + @Override + public void setTitle(String title) { + this.title = title; + } + + /** + * 可能字段不全, 使用时先确认 + * @param c + */ + public void setWxCoupon(WxCoupon c){ + if(c != null){ + this.setRemainInventory(c.getRemainInventory()); + this.setSalePrice(c.getSalePrice()); + this.setInventory(c.getInventory()); + this.setCoverImg(c.getCoverImg()); + this.setSubTitle(c.getSubTitle()); + this.setUsePrice(c.getUsePrice()); + this.setPrice(c.getPrice()); + this.setTailPrice(c.getTailPrice()); + this.setOrigPrice(c.getOrigPrice()); + this.setUnit(c.getUnit()); + this.setUseLimitRule(c.getUseLimitRule()); + this.setUseLimitQuantity(c.getUseLimitQuantity()); + this.setSendType(c.getSendType()); + this.setSupportTransfer(c.getSupportTransfer()); + this.setPressLimitNum(c.getPressLimitNum()); + this.setAutoRefund(c.getAutoRefund()); + this.setConditions(c.getConditions()); + this.setValidType(c.getValidType()); + this.setValidStartDate(c.getValidStartDate()); + this.setValidEndDate(c.getValidEndDate()); + this.setPickStartDate(c.getPickStartDate()); + this.setPickEndDate(c.getPickEndDate()); + this.setValidDays(c.getValidDays()); + this.setCreditPrice(c.getCreditPrice()); + this.setContentType(c.getContentType()); + this.setSourceType(c.getSourceType()); + } + + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java index 20758a52f..c24a5d863 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java @@ -122,5 +122,5 @@ public interface WxCouponMapper extends CommonMapper { List findIdsListHasConditons(WxCoupon couponQ); - List ttgoodslist(TtCouponVo ttCouponVo); + List ttCouponList(TtCouponVo ttCouponVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java new file mode 100644 index 000000000..392e90b56 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java @@ -0,0 +1,21 @@ +package com.iformall.service; + +import com.iformall.common.ResultData; +import com.iformall.domain.po.TtCouponChannelPoi; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.vo.TtCouponVo; + +public interface TtCouponGoodsService { + + ResultData couponList(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize); + + + ResultData productSave(WxCoupon coupon) throws Exception; + + + int handlerTtGoodsAudit(TtCouponChannelPoi couponChannelPoi); + + ResultData productDraftGet(Long id); + + ResultData productOnlineGet(Long id); +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java index 38110856c..59eb94372 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java @@ -17,8 +17,6 @@ import com.iformall.domain.vo.WxMerchantVo; public interface WxCouponService { - ResultData ttgoodslist(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize); - ResultData list(TenantEntity tenantEntity,WxCoupon wxCoupon, Integer pageNum, Integer pageSize); List list(WxCoupon wxCoupon); @@ -277,13 +275,4 @@ public interface WxCouponService { List getCouponMerchantList(TenantEntity tenantInfo, Long couponId); - - ResultData productSave(WxCoupon coupon) throws Exception; - - - int handlerTtGoodsAudit(TtCouponChannelPoi couponChannelPoi); - - ResultData productDraftGet(Long id); - - ResultData productOnlineGet(Long id); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java new file mode 100644 index 000000000..43d6df5a9 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java @@ -0,0 +1,319 @@ +package com.iformall.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; +import com.iformall.common.IdWorker; +import com.iformall.common.ResultData; +import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseEntity; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.*; +import com.iformall.douyin.web.api.TtWebService; +import com.iformall.douyin.web.bean.Product; +import com.iformall.enums.*; +import com.iformall.mapper.*; +import com.iformall.service.*; +import com.iformall.utils.Constant; +import me.chanjar.weixin.common.error.WxErrorException; +import org.apache.commons.lang3.StringUtils; +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.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +import static java.util.stream.Collectors.toList; + + +@Service +public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + WxCouponMapper wxCouponMapper; + + @Autowired + WxCouponService wxCouponService; + + @Autowired + WxCouponChannelMapper wxCouponChannelMapper; + + @Autowired + private TtMerchantPoiService ttMerchantPoiService; + + @Autowired + TtCouponChannelPoiMapper ttCouponChannelPoiMapper; + + @Autowired + WxAppinfoService wxAppinfoService; + + @Override + public ResultData couponList(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { + if(StringUtils.isBlank(ttCouponVo.getSortColumns())){ + ttCouponVo.setSortColumns(BaseEntity.SortField.CCreateDate_DESC, BaseEntity.SortField.CId_DESC); + } + PageInfo pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxCouponMapper.ttCouponList(ttCouponVo)); + List couponList = pageInfo.getList(); + + if(!couponList.isEmpty()){ + List ids = couponList.stream().map(p -> p.getId()).collect(toList()); + WxCouponChannel wxCouponChannel = new WxCouponChannel(); + wxCouponChannel.updateTenantInfo(ttCouponVo); + wxCouponChannel.setCouponIds(ids); + wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); + //上架状态 + List list = wxCouponChannelMapper.findList(wxCouponChannel); + if (!list.isEmpty()) { + Map> groupBy = list.stream().collect(Collectors.groupingBy(WxCouponChannel::getCouponId)); + for (TtCouponVo temp : couponList) { + if (groupBy.get(temp.getId()) != null) { + List channels = new ArrayList<>(); + for (WxCouponChannel tempchannel : groupBy.get(temp.getId())) { + if (!channels.contains(tempchannel.getTargetAd())) { + channels.add(tempchannel.getTargetAd()); + } + } + String sss = JSON.toJSONString(channels); + temp.setChannels(sss); + } else { + temp.setChannels(""); + } + + } + } else { + for (TtCouponVo temp : couponList) { + temp.setChannels(""); + } + + } + } + return new ResultData(pageInfo); + } + + @Override + @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) + public ResultData productSave(WxCoupon coupon) throws Exception { + WxCoupon ttattrs = wxCouponService.getAttrsById(coupon.getId(), coupon.getTenantId()); + if(ttattrs.getProductType() == null || ttattrs.getCategoryId() == null + || ttattrs.getProductAttrKeyValueMap().isEmpty() + || ttattrs.getSkuAttrKeyValueMap().isEmpty()){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该券缺少必要属性"); + } + if(coupon.getStatus() != EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()) { + return new ResultData(ErrorCode.COUPON_ORDER_IS_INVALID); + } + + //获取门店 + List couponMerchantList = wxCouponService.getCouponMerchantList(coupon, coupon.getId()); + List poiList = new ArrayList(); + for (WxMerchantVo mvo:couponMerchantList){ + if(StringUtils.isNotBlank(mvo.getSupplierExtId())){ + Product.PoiStruct poiStruct = new Product.PoiStruct(); + poiStruct.setSupplierExtId(mvo.getSupplierExtId()); + poiList.add(poiStruct); + } + } + if(poiList.isEmpty()){ + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"未找到poi门店"); + } + + //查询是否有上架的 + WxCouponChannel wxCouponChannelQuery = new WxCouponChannel(); + wxCouponChannelQuery.updateTenantInfo(coupon); + wxCouponChannelQuery.setCouponId(coupon.getId()); + wxCouponChannelQuery.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); + wxCouponChannelQuery.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); + List wxCouponChannels = wxCouponChannelMapper.findList(wxCouponChannelQuery); + if(wxCouponChannels.size() > 0){ + return new ResultData(ErrorCode.COUPON_CHANNEL_IS_EXISTED); + } + //预审核的作废掉 重新投放 + wxCouponChannelQuery.setStatus(EnumCouponChannelStatus.STATUS_BEFORE.getCode()); + WxCouponChannel updCouponChannel = new WxCouponChannel(); + updCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_AFTER.getCode()); + updCouponChannel.setUpdateDate(new Date()); + wxCouponChannelMapper.update(updCouponChannel,new QueryWrapper<>(wxCouponChannelQuery)); + //投放预审核 + WxCouponChannel wxCouponChannel = new WxCouponChannel(); + final IdWorker idWorker = IdWorker.get(); + wxCouponChannel.setId(idWorker.nextId()); + wxCouponChannel.updateTenantInfo(coupon); + wxCouponChannel.setShowBeginTime(new Date()); + wxCouponChannel.setBeginTime(new Date()); + wxCouponChannel.setEndTime(coupon.getValidEndDate()); + wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_AFTER.getCode()); + wxCouponChannel.setCouponId(coupon.getId()); + wxCouponChannel.setType(coupon.getType()); + wxCouponChannel.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); + wxCouponChannel.setBusiness(coupon.getBusiness()); + wxCouponChannel.setSubBusiness(coupon.getSubBusiness()); + wxCouponChannel.setTitle(coupon.getTitle()); + wxCouponChannelMapper.insert(wxCouponChannel); + + //提交审核 + try { + + TtWebService ttWebService = ttMerchantPoiService.getTtWebService(coupon); + Product product = new Product(); + Product.ProductStruct prostruct = new Product.ProductStruct(); + prostruct.setOutId(coupon.getId().toString()); + prostruct.setProductName(coupon.getTitle()); + prostruct.setCategoryId(ttattrs.getCategoryId()); + prostruct.setProductType(ttattrs.getProductType()); + prostruct.setBizLine(5);//默认小程序 + prostruct.setAccountName(couponMerchantList.get(0).getMerchantName()); + // prostruct.setSoldStartTime(); + // prostruct.setSoldEndTime(); + prostruct.setOutUrl(getGoodsEntrySchema(coupon,wxCouponChannel.getId())); + + prostruct.setPoiList(poiList); + prostruct.setAttrKeyValueMap(ttattrs.getProductAttrKeyValueMap()); + product.setProduct(prostruct); + + Product.SkuStruct skuStruct = new Product.SkuStruct(); + skuStruct.setSkuName(coupon.getTitle()); + skuStruct.setOriginAmount(coupon.getPrice()); + skuStruct.setActualAmount(coupon.getSalePrice()); + Product.StockStruct stockStruct = new Product.StockStruct(); + stockStruct.setLimitType(1); + stockStruct.setStockQty(coupon.getInventory()); + skuStruct.setStock(stockStruct); + skuStruct.setStatus(1); + skuStruct.setAttrKeyValueMap(ttattrs.getSkuAttrKeyValueMap()); + product.setSku(skuStruct); + + String productId = ttWebService.getGoodsService().productSave(product); + syncCouponChannelPoi(coupon,wxCouponChannel.getId(),productId); + return new ResultData(); + + } catch (WxErrorException e) { + throw new Exception(e.getMessage()); +// logger.error(e.getMessage()); +// return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } catch (Exception e){ + throw e; +// logger.error(e.getMessage()); +// return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + } + + @Override + public int handlerTtGoodsAudit(TtCouponChannelPoi couponChannelPoi) { + return ttCouponChannelPoiMapper.updateBySpuId(couponChannelPoi); + } + + @Override + public ResultData productDraftGet(Long id) { + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(id); + if(ttCouponChannelPoi == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该商品未提交审核"); + } + try { + TtWebService ttWebService = ttMerchantPoiService.getTtWebService(ttCouponChannelPoi); + List products = ttWebService.getGoodsService().productDraftGet(null, ttCouponChannelPoi.getId().toString()); + if(products.size() > 0){ + Product product = products.get(0); + if(product.getDraftStatus().intValue() == 12 && !EnumSpuSyncStatus.sync_audit_rejection.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_rejection.getCode()); + ttCouponChannelPoi.setLastStatusDesc(product.getAuditMsg()); + ttCouponChannelPoi.setUpdateDate(new Date()); + ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); + + }else if(product.getDraftStatus().intValue() == 1 && !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_pass.getCode()); + ttCouponChannelPoi.setLastStatusDesc(""); + ttCouponChannelPoi.setUpdateDate(new Date()); + ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); + } + + return new ResultData(product); + }else{ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未查询到审核数据"); + } + } catch (WxErrorException e) { + e.printStackTrace(); + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),e.getMessage()); + } + } + + @Override + public ResultData productOnlineGet(Long id) { + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(id); + if(ttCouponChannelPoi == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该商品未提交审核"); + } + try { + TtWebService ttWebService = ttMerchantPoiService.getTtWebService(ttCouponChannelPoi); + List products = ttWebService.getGoodsService().productOnlineGet(null, ttCouponChannelPoi.getId().toString()); + if(products.size() > 0){ + Product product = products.get(0); + if(product.getOnlineStatus().intValue() == 1 && !EnumSpuSyncStatus.sync_put_on.getCode().equals(ttCouponChannelPoi.getStatus())){ + ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_put_on.getCode()); + ttCouponChannelPoi.setUpdateDate(new Date()); + ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); + }else if(product.getOnlineStatus().intValue() == 2 && !EnumSpuSyncStatus.sync_pull_off.getCode().equals(ttCouponChannelPoi.getStatus())){ + ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_pull_off.getCode()); + ttCouponChannelPoi.setUpdateDate(new Date()); + ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); + }else if(product.getOnlineStatus().intValue() == 3 && !EnumSpuSyncStatus.sync_audit_disable.getCode().equals(ttCouponChannelPoi.getStatus())){ + ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_audit_disable.getCode()); + ttCouponChannelPoi.setUpdateDate(new Date()); + ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); + } + return new ResultData(product); + }else{ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未查询到在线数据"); + } + } catch (WxErrorException e) { + e.printStackTrace(); + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),e.getMessage()); + } + } + + private void syncCouponChannelPoi(WxCoupon coupon,Long couponChannelId,String productId){ + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(coupon.getId()); + Date date = new Date(); + if(ttCouponChannelPoi != null){ + ttCouponChannelPoi.setCouponChannelId(couponChannelId); + ttCouponChannelPoi.setSpuId(productId); +// ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_auditing.getCode()); + ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_auditing.getCode()); + ttCouponChannelPoi.setLastStatusDesc(""); + ttCouponChannelPoi.setUpdateDate(date); + ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); + }else{ + ttCouponChannelPoi = new TtCouponChannelPoi(); + ttCouponChannelPoi.setId(coupon.getId()); + ttCouponChannelPoi.updateTenantInfo(coupon); + ttCouponChannelPoi.setCouponChannelId(couponChannelId); + ttCouponChannelPoi.setSpuId(productId); +// ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_auditing.getCode()); + ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_auditing.getCode()); + ttCouponChannelPoi.setCreateDate(date); + ttCouponChannelPoi.setUpdateDate(date); + ttCouponChannelPoiMapper.insert(ttCouponChannelPoi); + } + } + + private String getGoodsEntrySchema(TenantEntity tenantEntity,Long couponChannelId){ + WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity, EnumAppPlat.TOUTIAO); + Map map = new HashMap<>(); + map.put("app_id",cAppInfo.getAppId()); + map.put("path", Constant.mainPageUrl); + Map paramMap = new HashMap<>(); + paramMap.put("type","cd"); + paramMap.put("couponChannelId",couponChannelId); + map.put("params",JSON.toJSONString(paramMap)); + return JSON.toJSONString(map); + } + +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index 343b39bfa..70a2efe9f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -19,9 +19,7 @@ import com.iformall.domain.vo.*; import com.iformall.domain.vo.excel.WxCardData; import com.iformall.domain.vo.excel.WxCouponData; import com.iformall.domain.vo.excel.WxPressData; -import com.iformall.douyin.web.api.TtWebService; import com.iformall.douyin.web.bean.GoodsTemplateGet; -import com.iformall.douyin.web.bean.Product; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; @@ -31,8 +29,6 @@ import com.iformall.service.excel.WxCardDataExporter; import com.iformall.service.excel.WxCouponDataExporter; import com.iformall.service.excel.WxPressDataExporter; -import com.iformall.utils.Constant; -import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -128,14 +124,9 @@ public class WxCouponServiceImpl implements WxCouponService { @Autowired WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper; - @Autowired - private TtMerchantPoiService ttMerchantPoiService; - @Autowired private TtGoodsCategoryService ttGoodsCategoryService; - @Autowired - TtCouponChannelPoiMapper ttCouponChannelPoiMapper; @Autowired WxAppinfoService wxAppinfoService; @@ -143,49 +134,6 @@ public class WxCouponServiceImpl implements WxCouponService { @Autowired private MqBaseProducer mqBaseProducer; - @Override - public ResultData ttgoodslist(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { - if(StringUtils.isBlank(ttCouponVo.getSortColumns())){ - ttCouponVo.setSortColumns(BaseEntity.SortField.CCreateDate_DESC, BaseEntity.SortField.CId_DESC); - } - PageInfo pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxCouponMapper.ttgoodslist(ttCouponVo)); - List couponList = pageInfo.getList(); - - if(!couponList.isEmpty()){ - List ids = couponList.stream().map(p -> p.getId()).collect(toList()); - WxCouponChannel wxCouponChannel = new WxCouponChannel(); - wxCouponChannel.updateTenantInfo(ttCouponVo); - wxCouponChannel.setCouponIds(ids); - wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); - //上架状态 - List list = wxCouponChannelMapper.findList(wxCouponChannel); - if (!list.isEmpty()) { - Map> groupBy = list.stream().collect(Collectors.groupingBy(WxCouponChannel::getCouponId)); - for (TtCouponVo temp : couponList) { - if (groupBy.get(temp.getId()) != null) { - List channels = new ArrayList<>(); - for (WxCouponChannel tempchannel : groupBy.get(temp.getId())) { - if (!channels.contains(tempchannel.getTargetAd())) { - channels.add(tempchannel.getTargetAd()); - } - } - String sss = JSON.toJSONString(channels); - temp.setChannels(sss); - } else { - temp.setChannels(""); - } - - } - } else { - for (TtCouponVo temp : couponList) { - temp.setChannels(""); - } - - } - } - return new ResultData(pageInfo); - } - @Override public ResultData list(TenantEntity tenantEntity,WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { if (null == wxCoupon) wxCoupon = new WxCoupon(); @@ -1244,221 +1192,4 @@ public class WxCouponServiceImpl implements WxCouponService { return merchantList; } - @Override - @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) - public ResultData productSave(WxCoupon coupon) throws Exception { - WxCoupon ttattrs = this.getAttrsById(coupon.getId(), coupon.getTenantId()); - if(ttattrs.getProductType() == null || ttattrs.getCategoryId() == null - || ttattrs.getProductAttrKeyValueMap().isEmpty() - || ttattrs.getSkuAttrKeyValueMap().isEmpty()){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该券缺少必要属性"); - } - if(coupon.getStatus() != EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()) { - return new ResultData(ErrorCode.COUPON_ORDER_IS_INVALID); - } - - //获取门店 - List couponMerchantList = getCouponMerchantList(coupon, coupon.getId()); - List poiList = new ArrayList(); - for (WxMerchantVo mvo:couponMerchantList){ - if(StringUtils.isNotBlank(mvo.getSupplierExtId())){ - Product.PoiStruct poiStruct = new Product.PoiStruct(); - poiStruct.setSupplierExtId(mvo.getSupplierExtId()); - poiList.add(poiStruct); - } - } - if(poiList.isEmpty()){ - return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"未找到poi门店"); - } - - //查询是否有上架的 - WxCouponChannel wxCouponChannelQuery = new WxCouponChannel(); - wxCouponChannelQuery.updateTenantInfo(coupon); - wxCouponChannelQuery.setCouponId(coupon.getId()); - wxCouponChannelQuery.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); - wxCouponChannelQuery.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); - List wxCouponChannels = wxCouponChannelMapper.findList(wxCouponChannelQuery); - if(wxCouponChannels.size() > 0){ - return new ResultData(ErrorCode.COUPON_CHANNEL_IS_EXISTED); - } - //预审核的作废掉 重新投放 - wxCouponChannelQuery.setStatus(EnumCouponChannelStatus.STATUS_BEFORE.getCode()); - WxCouponChannel updCouponChannel = new WxCouponChannel(); - updCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_AFTER.getCode()); - updCouponChannel.setUpdateDate(new Date()); - wxCouponChannelMapper.update(updCouponChannel,new QueryWrapper<>(wxCouponChannelQuery)); - //投放预审核 - WxCouponChannel wxCouponChannel = new WxCouponChannel(); - final IdWorker idWorker = IdWorker.get(); - wxCouponChannel.setId(idWorker.nextId()); - wxCouponChannel.updateTenantInfo(coupon); - wxCouponChannel.setShowBeginTime(new Date()); - wxCouponChannel.setBeginTime(new Date()); - wxCouponChannel.setEndTime(coupon.getValidEndDate()); - wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_AFTER.getCode()); - wxCouponChannel.setCouponId(coupon.getId()); - wxCouponChannel.setType(coupon.getType()); - wxCouponChannel.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); - wxCouponChannel.setBusiness(coupon.getBusiness()); - wxCouponChannel.setSubBusiness(coupon.getSubBusiness()); - wxCouponChannel.setTitle(coupon.getTitle()); - wxCouponChannelMapper.insert(wxCouponChannel); - - //提交审核 - try { - - TtWebService ttWebService = ttMerchantPoiService.getTtWebService(coupon); - Product product = new Product(); - Product.ProductStruct prostruct = new Product.ProductStruct(); - prostruct.setOutId(coupon.getId().toString()); - prostruct.setProductName(coupon.getTitle()); - prostruct.setCategoryId(ttattrs.getCategoryId()); - prostruct.setProductType(ttattrs.getProductType()); - prostruct.setBizLine(5);//默认小程序 - prostruct.setAccountName(couponMerchantList.get(0).getMerchantName()); - // prostruct.setSoldStartTime(); - // prostruct.setSoldEndTime(); - prostruct.setOutUrl(getGoodsEntrySchema(coupon,wxCouponChannel.getId())); - - prostruct.setPoiList(poiList); - prostruct.setAttrKeyValueMap(ttattrs.getProductAttrKeyValueMap()); - product.setProduct(prostruct); - - Product.SkuStruct skuStruct = new Product.SkuStruct(); - skuStruct.setSkuName(coupon.getTitle()); - skuStruct.setOriginAmount(coupon.getPrice()); - skuStruct.setActualAmount(coupon.getSalePrice()); - Product.StockStruct stockStruct = new Product.StockStruct(); - stockStruct.setLimitType(1); - stockStruct.setStockQty(coupon.getInventory()); - skuStruct.setStock(stockStruct); - skuStruct.setStatus(1); - skuStruct.setAttrKeyValueMap(ttattrs.getSkuAttrKeyValueMap()); - product.setSku(skuStruct); - - String productId = ttWebService.getGoodsService().productSave(product); - syncCouponChannelPoi(coupon,wxCouponChannel.getId(),productId); - return new ResultData(); - - } catch (WxErrorException e) { - throw new Exception(e.getMessage()); -// logger.error(e.getMessage()); -// return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); - } catch (Exception e){ - throw e; -// logger.error(e.getMessage()); -// return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); - } - } - - @Override - public int handlerTtGoodsAudit(TtCouponChannelPoi couponChannelPoi) { - return ttCouponChannelPoiMapper.updateBySpuId(couponChannelPoi); - } - - @Override - public ResultData productDraftGet(Long id) { - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(id); - if(ttCouponChannelPoi == null){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该商品未提交审核"); - } - try { - TtWebService ttWebService = ttMerchantPoiService.getTtWebService(ttCouponChannelPoi); - List products = ttWebService.getGoodsService().productDraftGet(null, ttCouponChannelPoi.getId().toString()); - if(products.size() > 0){ - Product product = products.get(0); - if(product.getDraftStatus().intValue() == 12 && !EnumSpuSyncStatus.sync_audit_rejection.getCode().equals(ttCouponChannelPoi.getLastStatus())){ - ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_rejection.getCode()); - ttCouponChannelPoi.setLastStatusDesc(product.getAuditMsg()); - ttCouponChannelPoi.setUpdateDate(new Date()); - ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); - - }else if(product.getDraftStatus().intValue() == 1 && !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ - ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_pass.getCode()); - ttCouponChannelPoi.setLastStatusDesc(""); - ttCouponChannelPoi.setUpdateDate(new Date()); - ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); - } - - return new ResultData(product); - }else{ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未查询到审核数据"); - } - } catch (WxErrorException e) { - e.printStackTrace(); - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),e.getMessage()); - } - } - - @Override - public ResultData productOnlineGet(Long id) { - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(id); - if(ttCouponChannelPoi == null){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该商品未提交审核"); - } - try { - TtWebService ttWebService = ttMerchantPoiService.getTtWebService(ttCouponChannelPoi); - List products = ttWebService.getGoodsService().productOnlineGet(null, ttCouponChannelPoi.getId().toString()); - if(products.size() > 0){ - Product product = products.get(0); - if(product.getOnlineStatus().intValue() == 1 && !EnumSpuSyncStatus.sync_put_on.getCode().equals(ttCouponChannelPoi.getStatus())){ - ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_put_on.getCode()); - ttCouponChannelPoi.setUpdateDate(new Date()); - ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); - }else if(product.getOnlineStatus().intValue() == 2 && !EnumSpuSyncStatus.sync_pull_off.getCode().equals(ttCouponChannelPoi.getStatus())){ - ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_pull_off.getCode()); - ttCouponChannelPoi.setUpdateDate(new Date()); - ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); - }else if(product.getOnlineStatus().intValue() == 3 && !EnumSpuSyncStatus.sync_audit_disable.getCode().equals(ttCouponChannelPoi.getStatus())){ - ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_audit_disable.getCode()); - ttCouponChannelPoi.setUpdateDate(new Date()); - ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); - } - return new ResultData(product); - }else{ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未查询到在线数据"); - } - } catch (WxErrorException e) { - e.printStackTrace(); - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),e.getMessage()); - } - } - - private void syncCouponChannelPoi(WxCoupon coupon,Long couponChannelId,String productId){ - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(coupon.getId()); - Date date = new Date(); - if(ttCouponChannelPoi != null){ - ttCouponChannelPoi.setCouponChannelId(couponChannelId); - ttCouponChannelPoi.setSpuId(productId); -// ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_auditing.getCode()); - ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_auditing.getCode()); - ttCouponChannelPoi.setLastStatusDesc(""); - ttCouponChannelPoi.setUpdateDate(date); - ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); - }else{ - ttCouponChannelPoi = new TtCouponChannelPoi(); - ttCouponChannelPoi.setId(coupon.getId()); - ttCouponChannelPoi.updateTenantInfo(coupon); - ttCouponChannelPoi.setCouponChannelId(couponChannelId); - ttCouponChannelPoi.setSpuId(productId); -// ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_auditing.getCode()); - ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_auditing.getCode()); - ttCouponChannelPoi.setCreateDate(date); - ttCouponChannelPoi.setUpdateDate(date); - ttCouponChannelPoiMapper.insert(ttCouponChannelPoi); - } - } - - private String getGoodsEntrySchema(TenantEntity tenantEntity,Long couponChannelId){ - WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity, EnumAppPlat.TOUTIAO); - Map map = new HashMap<>(); - map.put("app_id",cAppInfo.getAppId()); - map.put("path", Constant.mainPageUrl); - Map paramMap = new HashMap<>(); - paramMap.put("type","cd"); - paramMap.put("couponChannelId",couponChannelId); - map.put("params",JSON.toJSONString(paramMap)); - return JSON.toJSONString(map); - } - } diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 4863bd466..7c801549f 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -1362,7 +1362,7 @@ - select c.`id`,c.`tenant_id`,c.`parent_tenant_id`,c.`type`,c.`cover_img`, c.`title`,c.`sub_title`,c.`sale_price`,c.`freight_price`,c.`send_type`, c.`valid_type`,c.`valid_start_date`,c.`valid_end_date`,c.pick_start_date,c.pick_end_date, From b3a6ae96fd8c148c6ff998b869987db741d8666e Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 9 Jun 2022 18:27:22 +0800 Subject: [PATCH 45/97] //tt product --- .../douyin/web/api/impl/TtWebGoodsServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/douyin/web/api/impl/TtWebGoodsServiceImpl.java b/mallinkService/src/main/java/com/iformall/douyin/web/api/impl/TtWebGoodsServiceImpl.java index 76e00bd7d..80c6d6799 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/web/api/impl/TtWebGoodsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/douyin/web/api/impl/TtWebGoodsServiceImpl.java @@ -64,8 +64,8 @@ public class TtWebGoodsServiceImpl implements TtWebGoodsService { if(baseResult.isSuccess()){ Map map = (Map) baseResult.getData(); if(map != null){ - String product_draft_list = map.get("product_draft_list").toString(); - List list = GSON.fromJson(product_draft_list, + Object product_draft_list = map.get("product_draft_list"); + List list = GSON.fromJson(GSON.toJson(product_draft_list), new TypeReference>() {}.getType()); return list; } @@ -116,8 +116,8 @@ public class TtWebGoodsServiceImpl implements TtWebGoodsService { if(baseResult.isSuccess()){ Map map = (Map) baseResult.getData(); if(map != null){ - String product_online_list = map.get("product_online_list").toString(); - List list = GSON.fromJson(product_online_list, + Object product_online_list = map.get("product_online_list"); + List list = GSON.fromJson(GSON.toJson(product_online_list), new TypeReference>() {}.getType()); return list; } From 87ade0836d46627b791ab1392a0a05d32aa5455b Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 9 Jun 2022 20:08:25 +0800 Subject: [PATCH 46/97] //tt product --- .../market/TtCouponGoodsController.java | 56 +++--- .../V2022060800001__mall_permission.sql | 4 - .../iformall/domain/vo/TtCouponChannelVo.java | 185 ++---------------- .../iformall/enums/EnumCouponChannelType.java | 1 - .../mapper/WxCouponChannelMapper.java | 2 + .../service/TtCouponGoodsService.java | 3 + .../service/WxCouponChannelService.java | 3 + .../impl/TtCouponGoodsServiceImpl.java | 12 +- .../impl/WxCouponChannelServiceImpl.java | 27 ++- .../mapper/WxCouponChannelMapper.xml | 131 +++++++++++++ 10 files changed, 211 insertions(+), 213 deletions(-) delete mode 100644 mallinkAdmin/src/main/resources/db/migration/V2022060800001__mall_permission.sql diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java index 05f15eb16..6343ffea9 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java @@ -1,14 +1,13 @@ package com.iformall.controller.market; import com.iformall.annotation.SystemControllerLog; -import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.vo.TtCouponChannelVo; import com.iformall.domain.vo.TtCouponVo; -import com.iformall.domain.vo.WxCouponChannelVo; import com.iformall.douyin.web.bean.GoodsTemplateGet; import com.iformall.enums.*; import com.iformall.service.*; @@ -57,35 +56,42 @@ public class TtCouponGoodsController extends BaseController { String coryColumn = "c."+ttCouponVo.getSortColumns(); ttCouponVo.setSortColumns(coryColumn); ttCouponVo.setSortColumn(null); + }else{ + ttCouponVo.setSortColumns(BaseEntity.SortField.CCreateDate_DESC, BaseEntity.SortField.CId_DESC); } if (ttCouponVo.getStatus() != null && ttCouponVo.getStatus() == -1) ttCouponVo.setStatus(null); return ttCouponGoodsService.couponList(ttCouponVo, pageNum, pageSize); } -// @ApiOperation("分页列表接口") -// @GetMapping("channelList") -// @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 channelList(@ModelAttribute TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize) { -// logger.debug("[" + getIpAddr() + "] WxCouponController::channelList"); -// if (ttChannelVo == null) ttChannelVo = new TtCouponChannelVo(); -// if (ttChannelVo.getStatus() != null && ttChannelVo.getStatus() == -1) { -// ttChannelVo.setStatus(null); -// } -// ttChannelVo.updateTenantInfo(getTenantInfo()); -// ttCouponVo.setType(EnumCouponType.COUPON_DOUYIN.getCode()); -// if(StringUtils.isNotBlank(ttCouponVo.getSortColumn())){ -// String coryColumn = "c."+ttCouponVo.getSortColumns(); -// ttCouponVo.setSortColumns(coryColumn); -// ttCouponVo.setSortColumn(null); -// } -// if (ttCouponVo.getStatus() != null && ttCouponVo.getStatus() == -1) -// ttCouponVo.setStatus(null); -// return ttCouponGoodsService.channelList(ttCouponVo, pageNum, pageSize); -// } + @ApiOperation("分页列表接口") + @GetMapping("channelList") + @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 channelList(@ModelAttribute TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxCouponController::channelList"); + if (ttChannelVo == null) ttChannelVo = new TtCouponChannelVo(); + if (ttChannelVo.getStatus() != null && ttChannelVo.getStatus() == -1) { + ttChannelVo.setStatus(null); + } + ttChannelVo.updateTenantInfo(getTenantInfo()); + ttChannelVo.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); + if(null == ttChannelVo.getSourceType()){ + ttChannelVo.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); + } + + if(StringUtils.isNotBlank(ttChannelVo.getSortColumn())){ + String coryColumn = "cc."+ttChannelVo.getSortColumns(); + ttChannelVo.setSortColumns(coryColumn); + ttChannelVo.setSortColumn(null); + }else{ + ttChannelVo.setSortColumns(BaseEntity.SortField.CCUpdateDate_DESC); + } + + return ttCouponGoodsService.channelList(ttChannelVo, pageNum, pageSize); + } @ApiOperation("根据类目获取商品模板") @GetMapping("getTemplate") diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022060800001__mall_permission.sql b/mallinkAdmin/src/main/resources/db/migration/V2022060800001__mall_permission.sql deleted file mode 100644 index 7d33fb566..000000000 --- a/mallinkAdmin/src/main/resources/db/migration/V2022060800001__mall_permission.sql +++ /dev/null @@ -1,4 +0,0 @@ -INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (679, '抖音商品库', 606, 'Y', NULL, 1, NULL, NULL, 'dygoods', NULL, 0, 679); - - -UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 4, 5, 6, 50, 105, 110, 201, 205, 202, 211, 212, 221, 222, 223, 251, 409, 410, 411, 416, 500, 502, 504, 505, 506, 507, 508, 511, 512, 521, 522, 523, 531, 532, 591, 592, 595, 602, 605, 606, 607, 610, 647, 671, 679, 680, 711, 901, 902, 904, 907, 60702]' WHERE `id` = 11; diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponChannelVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponChannelVo.java index 7881a0f02..797de8b5c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponChannelVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/TtCouponChannelVo.java @@ -20,185 +20,22 @@ import java.util.List; @Data @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) -public class TtCouponChannelVo extends WxCouponChannel implements Serializable { +public class TtCouponChannelVo extends WxCouponChannelVo implements Serializable { private static final long serialVersionUID = 1L; - @TableField(exist = false) - private Integer activityStatus; + @io.swagger.annotations.ApiModelProperty(value="spuId",name="spuId") + private String spuId; - @io.swagger.annotations.ApiModelProperty(value="总库存",name="inventory") - private Integer inventory; - @io.swagger.annotations.ApiModelProperty(value="剩余库存",name="remainInventory") - private Integer remainInventory; - @io.swagger.annotations.ApiModelProperty(value="封面图",name="coverImg") - private String coverImg; - @io.swagger.annotations.ApiModelProperty(value="券名称",name="title") - private String title; - @io.swagger.annotations.ApiModelProperty(value="副标题",name="subTitle") - private String subTitle; - @io.swagger.annotations.ApiModelProperty(value="售价(适用于类型2,3,4,5)",name="salePrice") - private Integer salePrice; - @io.swagger.annotations.ApiModelProperty(value="使用条件金额(适用于类型1,2,3,4)",name="usePrice") - private Integer usePrice; - @io.swagger.annotations.ApiModelProperty(value="面额",name="price") - private Integer price; + @io.swagger.annotations.ApiModelProperty(value="状态:0-审核中,1-上架,2-下架,3-审核拒绝 4-审核通过",name="poiStatus") + private Integer poiStatus; - @io.swagger.annotations.ApiModelProperty(value="尾款(适用于类型9)",name="tailPrice") - private Integer tailPrice; - @io.swagger.annotations.ApiModelProperty(value="原价(适用于类型9)",name="origPrice") - private Integer origPrice; + @io.swagger.annotations.ApiModelProperty(value="描述",name="statusDesc") + private String statusDesc; - @io.swagger.annotations.ApiModelProperty(value="单位0:钱分,1:小时",name="unit") - private Integer unit; + @io.swagger.annotations.ApiModelProperty(value="状态:0-审核中,1-上架,2-下架,3-审核拒绝 4-审核通过",name="lastStatus") + private Integer lastStatus; - //EnumCouponUseLimitRule - @io.swagger.annotations.ApiModelProperty(value="限领规则",name="useLimitRule") - private Integer useLimitRule; - @io.swagger.annotations.ApiModelProperty(value="限领张数",name="useLimitQuantity") - private Integer useLimitQuantity; + @io.swagger.annotations.ApiModelProperty(value="描述",name="lastStatusDesc") + private String lastStatusDesc; - @io.swagger.annotations.ApiModelProperty(value="1.主动领取2.定向投放",name="sendType") - private Integer sendType; - - @io.swagger.annotations.ApiModelProperty(value="过期退款(0:正常,1不退)",name="autoRefund") - private Integer autoRefund; - - @io.swagger.annotations.ApiModelProperty(value="有效时间类型1.时间范围(valid_start_date,valid_end_date). 2领取后几日有效(valid_days)",name="validType") - private Integer validType; - @io.swagger.annotations.ApiModelProperty(value="有效日期-开始",name="validStartDate") - private Date validStartDate; - @io.swagger.annotations.ApiModelProperty(value="有效日期-结束",name="validEndDate") - private Date validEndDate; - @io.swagger.annotations.ApiModelProperty(value="自领取之日几日有效,(停车券当天有效)",name="validDays") - private Integer validDays; - - @io.swagger.annotations.ApiModelProperty(value="有效日期-开始",name="pickStartDate") - private Date pickStartDate; - @io.swagger.annotations.ApiModelProperty(value="有效日期-结束",name="pickEndDate") - private Date pickEndDate; - - @io.swagger.annotations.ApiModelProperty(value="积分售价(适用于类型10,11)",name="creditPrice") - private Integer creditPrice; - - @io.swagger.annotations.ApiModelProperty(value="领取条件",name="condition") - private String conditions; - - @io.swagger.annotations.ApiModelProperty(value="内容类型(0:小程序页面类型,1:富文本类型)",name="contentType") - private Integer contentType; - - @TableField(exist = false) - private String detail; - - @TableField(exist = false) - private String salePriceStr; - - @TableField(exist = false) - private String usePriceStr; - - @TableField(exist = false) - private String priceStr; - - @TableField(exist = false) - private String tailPriceStr; - - @TableField(exist = false) - private String origPriceStr; - - @TableField(exist = false) - private String qrCode; - - @io.swagger.annotations.ApiModelProperty(value="商户列表",name="merchantVoList") - private List merchantVoList; - - @TableField(exist = false) - private Integer gameWeight; - - @io.swagger.annotations.ApiModelProperty(value = "是否可转赠", name = "supportTransfer") - private Integer supportTransfer; - - @io.swagger.annotations.ApiModelProperty(value = "砍价/拼团人数", name = "pressLimitNum") - private Integer pressLimitNum; - - @Override - public String getSalePriceStr() { - if(salePrice!=null) { - salePriceStr = new BigDecimal(salePrice).divide(new BigDecimal(100)).toString(); - } - return salePriceStr; - } - @Override - public String getUsePriceStr() { - if(usePrice!=null) { - usePriceStr = new BigDecimal(usePrice).divide(new BigDecimal(100)).toString(); - } - return usePriceStr; - } - - @Override - public String getPriceStr() { - if(price!=null) { - priceStr = new BigDecimal(price).divide(new BigDecimal(100)).toString(); - } - return priceStr; - } - - public String getTailPriceStr() { - if(tailPrice!=null) { - tailPriceStr = new BigDecimal(tailPrice).divide(new BigDecimal(100)).toString(); - } - return tailPriceStr; - } - - public String getOrigPriceStr() { - if(origPrice!=null) { - origPriceStr = new BigDecimal(origPrice).divide(new BigDecimal(100)).toString(); - } - return origPriceStr; - } - - @Override - public String getTitle() { - return title; - } - - @Override - public void setTitle(String title) { - this.title = title; - } - - /** - * 可能字段不全, 使用时先确认 - * @param c - */ - public void setWxCoupon(WxCoupon c){ - if(c != null){ - this.setRemainInventory(c.getRemainInventory()); - this.setSalePrice(c.getSalePrice()); - this.setInventory(c.getInventory()); - this.setCoverImg(c.getCoverImg()); - this.setSubTitle(c.getSubTitle()); - this.setUsePrice(c.getUsePrice()); - this.setPrice(c.getPrice()); - this.setTailPrice(c.getTailPrice()); - this.setOrigPrice(c.getOrigPrice()); - this.setUnit(c.getUnit()); - this.setUseLimitRule(c.getUseLimitRule()); - this.setUseLimitQuantity(c.getUseLimitQuantity()); - this.setSendType(c.getSendType()); - this.setSupportTransfer(c.getSupportTransfer()); - this.setPressLimitNum(c.getPressLimitNum()); - this.setAutoRefund(c.getAutoRefund()); - this.setConditions(c.getConditions()); - this.setValidType(c.getValidType()); - this.setValidStartDate(c.getValidStartDate()); - this.setValidEndDate(c.getValidEndDate()); - this.setPickStartDate(c.getPickStartDate()); - this.setPickEndDate(c.getPickEndDate()); - this.setValidDays(c.getValidDays()); - this.setCreditPrice(c.getCreditPrice()); - this.setContentType(c.getContentType()); - this.setSourceType(c.getSourceType()); - } - - } } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java index d60cea909..37868742c 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java @@ -16,7 +16,6 @@ public enum EnumCouponChannelType { COUPON_CHANNEL_ID_CREDIT(50, "积分商城"), COUPON_CHANNEL_ID_H5(100, "DSP的H5页面"), - COUPON_CHANNEL_ID_DOUYIN_SAVE_LIST(11, "抖音商品库审核列表"), COUPON_CHANNEL_ID_DOUYIN_LIST(101, "抖音列表"), COUPON_CHANNEL_ID_WXLIVE_LIST(102, "微信直播列表") diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java index 6f1b56785..87bafb55b 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java @@ -5,6 +5,7 @@ import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxTopic; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.WxCouponChannel; +import com.iformall.domain.vo.TtCouponChannelVo; import org.apache.ibatis.annotations.Param; public interface WxCouponChannelMapper extends CommonMapper { @@ -72,4 +73,5 @@ public interface WxCouponChannelMapper extends CommonMapper batGetPriceAndStock(@Param("ids")List ids,@Param("tenantId")String tenantId); + List ttChannelList(TtCouponChannelVo ttChannelVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java index 392e90b56..d8ecb9084 100644 --- a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java +++ b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java @@ -3,12 +3,14 @@ package com.iformall.service; import com.iformall.common.ResultData; import com.iformall.domain.po.TtCouponChannelPoi; import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.vo.TtCouponChannelVo; import com.iformall.domain.vo.TtCouponVo; public interface TtCouponGoodsService { ResultData couponList(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize); + ResultData channelList(TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize); ResultData productSave(WxCoupon coupon) throws Exception; @@ -18,4 +20,5 @@ public interface TtCouponGoodsService { ResultData productDraftGet(Long id); ResultData productOnlineGet(Long id); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java index 9aaf26858..fad89f87d 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java @@ -5,6 +5,7 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; +import com.iformall.domain.vo.TtCouponChannelVo; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelAddVo; import com.iformall.domain.vo.WxCouponChannelVo; @@ -77,4 +78,6 @@ public interface WxCouponChannelService { List getPriceAndStock(TenantEntity tenantEntity,List couponChannelIds); ResultData getCouponChannelPoi(TenantEntity tenantInfo, Long id); + + PageInfo ttChannelList(TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java index 43d6df5a9..ffda4d2c8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java @@ -47,6 +47,9 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { @Autowired WxCouponChannelMapper wxCouponChannelMapper; + @Autowired + WxCouponChannelService wxCouponChannelService; + @Autowired private TtMerchantPoiService ttMerchantPoiService; @@ -58,9 +61,6 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { @Override public ResultData couponList(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { - if(StringUtils.isBlank(ttCouponVo.getSortColumns())){ - ttCouponVo.setSortColumns(BaseEntity.SortField.CCreateDate_DESC, BaseEntity.SortField.CId_DESC); - } PageInfo pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxCouponMapper.ttCouponList(ttCouponVo)); List couponList = pageInfo.getList(); @@ -99,6 +99,12 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { return new ResultData(pageInfo); } + @Override + public ResultData channelList(TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize) { + PageInfo ttCouponChannelVoPageInfo = wxCouponChannelService.ttChannelList(ttChannelVo, pageNum, pageSize); + return new ResultData(ttCouponChannelVoPageInfo); + } + @Override @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) public ResultData productSave(WxCoupon coupon) throws Exception { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java index 003b027a2..ffa685f5c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java @@ -12,10 +12,7 @@ import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.po.WxMall; import com.iformall.domain.po.msg.FmInsideProductPushMsg; -import com.iformall.domain.vo.WxCouponCVo; -import com.iformall.domain.vo.WxCouponChannelAddVo; -import com.iformall.domain.vo.WxCouponChannelVo; -import com.iformall.domain.vo.WxMerchantVo; +import com.iformall.domain.vo.*; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; @@ -609,7 +606,6 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_PRESS.getCode()) || // 砍价 channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_ORDER_GROUP.getCode()) || // 拼团 channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_CREDIT.getCode()) || // 积分商城 - channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_SAVE_LIST.getCode()) || channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()) || channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_WXLIVE_LIST.getCode()) //微信直播列表 ){ @@ -805,7 +801,26 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { return new ResultData(ErrorCode.SYS_NULLPOINTER_ERROR.getCode(),"未找到可用的数据"); } - @Override + @Override + public PageInfo ttChannelList(TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize) { + handleCouponIds(ttChannelVo); + if(ttChannelVo.getId() != null && ttChannelVo.getId().equals(-999L)){ + return new PageInfo(); + } + PageInfo pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxCouponChannelMapper.ttChannelList(ttChannelVo)); + List list = pageInfo.getList(); + + if(list != null && !list.isEmpty()){ + List couponIds = list.stream().map(cc -> cc.getCouponId()).collect(Collectors.toList()); + Map couponMap = wxCouponService.getCouponMap(couponIds,ttChannelVo); + for (TtCouponChannelVo ccv:list) { + ccv.setWxCoupon(couponMap.get(ccv.getCouponId())); + } + } + return pageInfo; + } + + @Override public WxCouponChannel getPriceAndStock(TenantEntity tenantEntity, Long couponChannelId) { return wxCouponChannelMapper.getPriceAndStock(couponChannelId, tenantEntity.getTenantId()); } diff --git a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml index cd9e02f86..b96ed214f 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml @@ -400,4 +400,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 64558bb28ed9f6ec443e7f812e5fab548d2fc3ee Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 9 Jun 2022 20:51:50 +0800 Subject: [PATCH 47/97] //tt product --- .../src/main/resources/mapper/WxCouponChannelMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml index b96ed214f..f69862b47 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml @@ -401,7 +401,7 @@ - + From 9395c7bc44d4e6af2391c54388848748a14ea909 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 9 Jun 2022 21:02:19 +0800 Subject: [PATCH 48/97] //tt product --- .../market/TtCouponGoodsController.java | 9 ++++----- .../market/WxCouponChannelController.java | 17 ++++++++++++++++ .../mapper/TtCouponChannelPoiMapper.java | 4 ++++ .../service/TtCouponGoodsService.java | 5 +++-- .../service/WxCouponChannelService.java | 2 ++ .../impl/TtCouponGoodsServiceImpl.java | 10 +++++----- .../impl/TtMerchantPoiServiceImpl.java | 6 +++--- .../impl/WxCouponChannelServiceImpl.java | 20 ++++++++++++++++++- .../mapper/TtCouponChannelPoiMapper.xml | 14 +++++++++++++ 9 files changed, 71 insertions(+), 16 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java index 6343ffea9..b2113ac6e 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java @@ -73,9 +73,6 @@ public class TtCouponGoodsController extends BaseController { public ResultData channelList(@ModelAttribute TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize) { logger.debug("[" + getIpAddr() + "] WxCouponController::channelList"); if (ttChannelVo == null) ttChannelVo = new TtCouponChannelVo(); - if (ttChannelVo.getStatus() != null && ttChannelVo.getStatus() == -1) { - ttChannelVo.setStatus(null); - } ttChannelVo.updateTenantInfo(getTenantInfo()); ttChannelVo.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); if(null == ttChannelVo.getSourceType()){ @@ -148,7 +145,7 @@ public class TtCouponGoodsController extends BaseController { if (id == null) { return new ResultData(ResultData.ERROR, "缺少id"); } - return ttCouponGoodsService.productDraftGet(id); + return ttCouponGoodsService.productDraftGet(getTenantInfo(),id); } @ApiOperation("实时查询线上商品状态") @@ -158,7 +155,9 @@ public class TtCouponGoodsController extends BaseController { if (id == null) { return new ResultData(ResultData.ERROR, "缺少id"); } - return ttCouponGoodsService.productOnlineGet(id); + return ttCouponGoodsService.productOnlineGet(getTenantInfo(),id); } + + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java index 4f2fbbae5..aabd2912f 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java @@ -99,6 +99,23 @@ public class WxCouponChannelController extends BaseController { return resultData; } + @ApiOperation("预审核上架") + @PostMapping("updateOnline") + @SystemControllerLog(description = "预审核上架") + public ResultData updateOnline(@RequestBody WxCouponChannel wxCouponChannel) { + wxCouponChannel.updateTenantInfo(getTenantInfo()); + if (wxCouponChannel.getId() == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + ResultData resultData = wxCouponChannelService.updateOnline(wxCouponChannel); + if(resultData.code == 200){ + CouponCacheUtils.removeCouponChannelCache(redisTemplate, wxCouponChannel.getId()); + CouponCacheUtils.removeDouyinLivePageCache(redisTemplate, wxCouponChannel.getTenantId(), null, null); + } + + return resultData; + } + @ApiOperation("根据id查询接口") diff --git a/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java b/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java index a1c9318b5..7ce8ad0f7 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java @@ -15,4 +15,8 @@ public interface TtCouponChannelPoiMapper extends CommonMapper ids); int updateBySpuId(TtCouponChannelPoi couponChannelPoi); + + TtCouponChannelPoi selectById(@Param("tenantId")String tenantId,@Param("id")Long id); + + TtCouponChannelPoi selectByChannelId(@Param("tenantId")String tenantId,@Param("channelId")Long channelId); } diff --git a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java index d8ecb9084..41a90efee 100644 --- a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java +++ b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java @@ -3,6 +3,7 @@ package com.iformall.service; import com.iformall.common.ResultData; import com.iformall.domain.po.TtCouponChannelPoi; import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.TtCouponChannelVo; import com.iformall.domain.vo.TtCouponVo; @@ -17,8 +18,8 @@ public interface TtCouponGoodsService { int handlerTtGoodsAudit(TtCouponChannelPoi couponChannelPoi); - ResultData productDraftGet(Long id); + ResultData productDraftGet(TenantEntity tenantEntity,Long id); - ResultData productOnlineGet(Long id); + ResultData productOnlineGet(TenantEntity tenantEntity,Long id); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java index fad89f87d..7db48b56b 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java @@ -80,4 +80,6 @@ public interface WxCouponChannelService { ResultData getCouponChannelPoi(TenantEntity tenantInfo, Long id); PageInfo ttChannelList(TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize); + + ResultData updateOnline(WxCouponChannel wxCouponChannel); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java index ffda4d2c8..d2c79e153 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java @@ -218,8 +218,8 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { } @Override - public ResultData productDraftGet(Long id) { - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(id); + public ResultData productDraftGet(TenantEntity tenantEntity,Long id) { + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(tenantEntity.getTenantId(),id); if(ttCouponChannelPoi == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该商品未提交审核"); } @@ -252,8 +252,8 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { } @Override - public ResultData productOnlineGet(Long id) { - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(id); + public ResultData productOnlineGet(TenantEntity tenantEntity,Long id) { + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(tenantEntity.getTenantId(),id); if(ttCouponChannelPoi == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该商品未提交审核"); } @@ -286,7 +286,7 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { } private void syncCouponChannelPoi(WxCoupon coupon,Long couponChannelId,String productId){ - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(coupon.getId()); + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(coupon.getTenantId(),coupon.getId()); Date date = new Date(); if(ttCouponChannelPoi != null){ ttCouponChannelPoi.setCouponChannelId(couponChannelId); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtMerchantPoiServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtMerchantPoiServiceImpl.java index 4490a9dfa..8d1eb5155 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtMerchantPoiServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtMerchantPoiServiceImpl.java @@ -613,7 +613,7 @@ public class TtMerchantPoiServiceImpl implements TtMerchantPoiService { } private void syncCouponChannelPoi(WxCouponChannel ccUpd){ - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(ccUpd.getId()); + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(ccUpd.getTenantId(),ccUpd.getId()); if(ttCouponChannelPoi != null){ ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_auditing.getCode()); ttCouponChannelPoi.setLastStatusDesc(""); @@ -806,7 +806,7 @@ public class TtMerchantPoiServiceImpl implements TtMerchantPoiService { TtSpuSync spuDetail = spuGetResult.getSpuDetail(); if(spuDetail != null && StringUtils.isNotBlank(spuDetail.getSpuId()) && StringUtils.isNotBlank(spuDetail.getSpuExtId()) && spuDetail.getStatus() != null){ - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(Long.parseLong(spuDetail.getSpuExtId())); + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(tenantInfo.getTenantId(),Long.parseLong(spuDetail.getSpuExtId())); if(ttCouponChannelPoi != null && !spuDetail.getStatus().equals(ttCouponChannelPoi.getStatus())){ TtCouponChannelPoi ccPoi = new TtCouponChannelPoi(); ccPoi.setId(ttCouponChannelPoi.getId()); @@ -831,7 +831,7 @@ public class TtMerchantPoiServiceImpl implements TtMerchantPoiService { TtSpuSync spuDraft = spuDraftList.get(0); if(spuDraft != null && StringUtils.isNotBlank(spuDraft.getSpuId()) && StringUtils.isNotBlank(spuDraft.getSpuExtId()) && spuDraft.getStatus() != null){ - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(Long.parseLong(spuDraft.getSpuExtId())); + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(tenantInfo.getTenantId(),Long.parseLong(spuDraft.getSpuExtId())); if(ttCouponChannelPoi != null && !spuDraft.getStatus().equals(ttCouponChannelPoi.getStatus())){ TtCouponChannelPoi ccPoi = new TtCouponChannelPoi(); ccPoi.setId(ttCouponChannelPoi.getId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java index ffa685f5c..c25d4132e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java @@ -794,7 +794,7 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { @Override public ResultData getCouponChannelPoi(TenantEntity tenantInfo, Long id) { - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(id); + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(tenantInfo.getTenantId(),id); if(ttCouponChannelPoi != null && ttCouponChannelPoi.getStatus() != null && ttCouponChannelPoi.getStatus().intValue() > 0){ return new ResultData(ttCouponChannelPoi); } @@ -820,6 +820,24 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { return pageInfo; } + @Override + public ResultData updateOnline(WxCouponChannel wxCouponChannel) { + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectByChannelId(wxCouponChannel.getTenantId(),wxCouponChannel.getId()); + if(ttCouponChannelPoi == null || !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该商品未提交审核或审核未通过"); + } + Date date = new Date(); + WxCouponChannel updChannel = new WxCouponChannel(); + updChannel.setId(wxCouponChannel.getId()); + updChannel.updateTenantInfo(wxCouponChannel); + updChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); + wxCouponChannel.setShowBeginTime(date); + wxCouponChannel.setBeginTime(date); + wxCouponChannel.setUpdateDate(date); + wxCouponChannelMapper.updateById(updChannel); + return new ResultData(); + } + @Override public WxCouponChannel getPriceAndStock(TenantEntity tenantEntity, Long couponChannelId) { return wxCouponChannelMapper.getPriceAndStock(couponChannelId, tenantEntity.getTenantId()); diff --git a/mallinkService/src/main/resources/mapper/TtCouponChannelPoiMapper.xml b/mallinkService/src/main/resources/mapper/TtCouponChannelPoiMapper.xml index 24bf2f52c..15e1685f0 100644 --- a/mallinkService/src/main/resources/mapper/TtCouponChannelPoiMapper.xml +++ b/mallinkService/src/main/resources/mapper/TtCouponChannelPoiMapper.xml @@ -70,6 +70,20 @@ from tt_coupon_channel_poi + + + + - + select distinct coupon_id from wx_coupon_channel where status = 0 and tenant_id = #{tenantId} and end_time < now() - and `tt_spu_id` is not null @@ -203,11 +202,10 @@ where status = 0 and tenant_id = #{tenantId} and end_time < now() - + select distinct cc.coupon_id from wx_coupon_channel cc, wx_coupon c where cc.coupon_id = c.id and c.valid_type = 1 and c.valid_end_date < now() and cc.status = 0 and cc.tenant_id = #{tenantId} - and cc.`tt_spu_id` is not null @@ -215,11 +213,10 @@ where cc.status = 0 and cc.tenant_id = #{tenantId} and cc.coupon_id = c.id and c.valid_type = 1 and c.valid_end_date < now() - + select distinct cc.coupon_id from wx_coupon_channel cc, wx_coupon c where cc.coupon_id = c.id and c.status = 1 and cc.status = 0 and cc.tenant_id = #{tenantId} - and cc.`tt_spu_id` is not null @@ -359,14 +356,6 @@ order by ${sortColumns} - - - update wx_coupon_channel SET channel_stock = channel_stock - #{number} where id = #{id} and tenant_id =#{tenantId} and channel_stock is not null and channel_stock - #{number} >= 0 From e44fea9d2d8e458c0c7652e16e47d6cd39af4125 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 10 Jun 2022 15:03:45 +0800 Subject: [PATCH 53/97] //tt product --- .../iformall/service/impl/TtCouponGoodsServiceImpl.java | 2 +- .../com/iformall/service/impl/WxCouponServiceImpl.java | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java index 3c35860eb..41e9e94e3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java @@ -154,7 +154,7 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { wxCouponChannel.setId(idWorker.nextId()); wxCouponChannel.updateTenantInfo(coupon); wxCouponChannel.setShowBeginTime(new Date()); - wxCouponChannel.setBeginTime(new Date()); +// wxCouponChannel.setBeginTime(new Date()); wxCouponChannel.setEndTime(coupon.getValidEndDate()); wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_BEFORE.getCode()); wxCouponChannel.setCouponId(coupon.getId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index 44e9b947f..32fe1f7c1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -981,7 +981,12 @@ public class WxCouponServiceImpl implements WxCouponService { if(ret != 1) { throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "数据库更新数量错误"); } - //todo 更新库存后同步 + // 更新库存后同步 + try{ + spuStockSync(wxCoupon,wxCoupon.getId()); + }catch(Exception e){ + logger.error("send spuStockSync error: " + e.getMessage()); + } // 5. 更新coupon channel 有效期 if(wxCoupon.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())) { From ffa60d65f54aa793d3ada146df90ef18df600a43 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 10 Jun 2022 15:26:09 +0800 Subject: [PATCH 54/97] //tt product --- .../java/com/iformall/enums/EnumPushType.java | 3 ++- .../service/TtCouponGoodsService.java | 2 ++ .../impl/TtCouponGoodsServiceImpl.java | 26 +++++++++++++++++++ .../service/impl/WxCouponServiceImpl.java | 26 +++++++++++++++++-- .../FmInsideProductPushMsgServiceImpl.java | 2 ++ 5 files changed, 56 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumPushType.java b/mallinkService/src/main/java/com/iformall/enums/EnumPushType.java index 9989176bf..fdbae5e68 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumPushType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumPushType.java @@ -5,10 +5,11 @@ package com.iformall.enums; */ public enum EnumPushType { - // 1-B端, 2-C端, 3-服务号, 4-订阅号 + // SPU_STATUS_SYNC(1, "同步状态"), SPU_STOCK_SYNC(2, "同步库存"), + SPU_FREE_AUDIT_SYNC(3, "免审修改"), ; public static EnumPushType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java index adcf68944..726ac8a95 100644 --- a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java +++ b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java @@ -25,4 +25,6 @@ public interface TtCouponGoodsService { ResultData productOperate(TenantEntity tenantInfo, Long id); ResultData productStockSync(TenantEntity tenantInfo, Long id); + + ResultData productFreeAudit(TenantEntity tenantInfo, Long id); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java index 41e9e94e3..c667fe06f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java @@ -348,6 +348,32 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { } } + @Override + public ResultData productFreeAudit(TenantEntity tenantInfo, Long id) { + WxCoupon wxCoupon = wxCouponMapper.selectById(id, tenantInfo.getTenantId()); + if(wxCoupon == null || EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode().equals(wxCoupon.getStatus())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未找到或已作废"); + } + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(tenantInfo.getTenantId(),id); + if(ttCouponChannelPoi == null || !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未提交审核或审核未通过"); + } + try { + TtWebService ttWebService = ttMerchantPoiService.getTtWebService(ttCouponChannelPoi); + boolean b = ttWebService.getGoodsService().productFreeAudit(null,wxCoupon.getId().toString(), + wxCoupon.getValidEndDate().getTime(),wxCoupon.getInventory()); + if(b){ + return new ResultData(); + }else{ + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"修改失败"); + } + + } catch (WxErrorException e) { + e.printStackTrace(); + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),e.getMessage()); + } + } + private void syncCouponChannelPoi(WxCoupon coupon,Long couponChannelId,String productId){ TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(coupon.getTenantId(),coupon.getId()); Date date = new Date(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index 32fe1f7c1..4de080f0b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -981,9 +981,9 @@ public class WxCouponServiceImpl implements WxCouponService { if(ret != 1) { throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "数据库更新数量错误"); } - // 更新库存后同步 + // 免审修改 try{ - spuStockSync(wxCoupon,wxCoupon.getId()); + spuFreeAuditSync(wxCoupon,wxCoupon.getId()); }catch(Exception e){ logger.error("send spuStockSync error: " + e.getMessage()); } @@ -1064,6 +1064,28 @@ public class WxCouponServiceImpl implements WxCouponService { logger.info(">>>>>>>>>>>send FmInsideProductPushMsg :"+productPush); mqBaseProducer.sendMessage(productPush, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); +// }).start(); + + } + + private void spuFreeAuditSync(TenantEntity tenantEntity,Long couponId){ +// new Thread(() -> { +// //1秒之后同步poi +// try { +// Thread.currentThread().sleep(1000); +// } catch (Exception e) { +// logger.error("sleep error: " + e.getMessage()); +// } + + FmInsideProductPushMsg productPush = new FmInsideProductPushMsg(); + productPush.setDelayTimeLevel(3); + productPush.setMsgType(EnumMsgRecordType.INSIDE_PRODUCT_PUSH.getCode()); + productPush.updateTenantInfo(tenantEntity); + productPush.setCouponId(couponId); + productPush.setSyncType(EnumPushType.SPU_FREE_AUDIT_SYNC); + logger.info(">>>>>>>>>>>send FmInsideProductPushMsg :"+productPush); + mqBaseProducer.sendMessage(productPush, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + // }).start(); } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideProductPushMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideProductPushMsgServiceImpl.java index 4a93820e1..6cefce384 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideProductPushMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideProductPushMsgServiceImpl.java @@ -38,6 +38,8 @@ public class FmInsideProductPushMsgServiceImpl implements MsgSendService { }else if(EnumPushType.SPU_STOCK_SYNC.equals(msg.getSyncType())){ ttCouponGoodsService.productOperate(msg.getTenantInfo(),msg.getCouponId()); // poiService.spuStockSync(msg.getTenantInfo(),msg.getCouponId()); + }else if(EnumPushType.SPU_FREE_AUDIT_SYNC.equals(msg.getSyncType())){ + ttCouponGoodsService.productFreeAudit(msg.getTenantInfo(),msg.getCouponId()); } } From 248a2123eba4554af8e3daaae3499ed30ce2cc56 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 10 Jun 2022 17:04:12 +0800 Subject: [PATCH 55/97] //tt product --- .../service/impl/TtGoodsCategoryServiceImpl.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java index 8800d0d20..e4e54deac 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtGoodsCategoryServiceImpl.java @@ -57,7 +57,7 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { keyList.add("appointment"); //预约信息 默认不可预约 keyList.add("auto_renew"); //是否开启自动延期 默认不开启 // keyList.add("bring_out_meal"); //是否可以外带餐食 默认否 - keyList.add("can_no_use_date");//不可使用日期 默认无 +// keyList.add("can_no_use_date");//不可使用日期 默认无 keyList.add("customer_reserved_info");//留资规则 非必填 // keyList.add("description_rich_text");//其他说明信息 非必填 // keyList.add("detail_image_list");//长图 非必填 @@ -161,11 +161,11 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { // attr.setValue("false"); // } //不可使用日期 默认不开启 - else if("can_no_use_date".equals(attr.getKey())){ - JSONObject jsonObject = new JSONObject(); - jsonObject.put("enable",false); - attr.setData(jsonObject.toJSONString()); - } +// else if("can_no_use_date".equals(attr.getKey())){ +// JSONObject jsonObject = new JSONObject(); +// jsonObject.put("enable",false); +// attr.setData(jsonObject.toJSONString()); +// } /** * 留资规则 ---暂无 From 35ec4313a070e1e6a849fb947ab43baa7355b640 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 10 Jun 2022 18:02:53 +0800 Subject: [PATCH 56/97] //tt product --- .../resources/db/migration/V2022061000001__banner_add.sql | 4 ++++ .../main/java/com/iformall/service/TtCouponGoodsService.java | 1 - .../com/iformall/service/impl/TtCouponGoodsServiceImpl.java | 2 +- .../java/com/iformall/service/impl/WxCampaignServiceImpl.java | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V2022061000001__banner_add.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022061000001__banner_add.sql b/mallinkAdmin/src/main/resources/db/migration/V2022061000001__banner_add.sql new file mode 100644 index 000000000..79dbad18e --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2022061000001__banner_add.sql @@ -0,0 +1,4 @@ +INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (676, '抖音宣传页', 605, 'Y', NULL, 1, NULL, NULL, 'ttxcList', NULL, 0, 671); + + +UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 4, 5, 6, 50, 105, 110, 201, 205, 202, 211, 212, 221, 222, 223, 251, 409, 410, 411, 416, 500, 502, 504, 505, 506, 507, 508, 511, 512, 521, 522, 523, 531, 532, 591, 592, 595, 602, 605, 606, 607, 610, 647, 671, 675, 676, 680, 711, 901, 902, 904, 907, 60702]' WHERE `id` = 11; diff --git a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java index 726ac8a95..553ae9407 100644 --- a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java +++ b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java @@ -15,7 +15,6 @@ public interface TtCouponGoodsService { ResultData productSave(WxCoupon coupon) throws Exception; - int handlerTtGoodsAudit(TtCouponChannelPoi couponChannelPoi); ResultData productDraftGet(TenantEntity tenantEntity,Long id); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java index c667fe06f..2f6ef6656 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java @@ -361,7 +361,7 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { try { TtWebService ttWebService = ttMerchantPoiService.getTtWebService(ttCouponChannelPoi); boolean b = ttWebService.getGoodsService().productFreeAudit(null,wxCoupon.getId().toString(), - wxCoupon.getValidEndDate().getTime(),wxCoupon.getInventory()); + null,wxCoupon.getInventory()); if(b){ return new ResultData(); }else{ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java index 2231e832d..701ea5ad5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java @@ -176,7 +176,7 @@ public class WxCampaignServiceImpl implements WxCampaignService { } //type 为固定格式才会有券的信息 才会有投放的问题 - couponInject(wxCampaign); +// couponInject(wxCampaign); return new ResultData(Result.SUCCESS,"操作成功"); } From e6c5c2db0d6c3f40c78f5fea464edebf04408f1a Mon Sep 17 00:00:00 2001 From: xhxu Date: Sat, 11 Jun 2022 13:25:07 +0800 Subject: [PATCH 57/97] //tt product --- .../java/com/iformall/controller/callback/TtWebController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java index 21f87acf7..31397aaa4 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java @@ -100,7 +100,7 @@ public class TtWebController extends BaseController { couponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_rejection.getCode()); couponChannelPoi.setLastStatusDesc(reason); - }else if("SUCCESS".equals(status)){ + }else if("PASS".equals(status)){ couponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_pass.getCode()); couponChannelPoi.setLastStatusDesc(reason); From 237dfde30d3bf622b8a7d7bc1383d226063e4db4 Mon Sep 17 00:00:00 2001 From: xhxu Date: Sat, 11 Jun 2022 15:12:08 +0800 Subject: [PATCH 58/97] //tt product --- .../main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java b/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java index 7ce8ad0f7..5c8e02be6 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java @@ -18,5 +18,5 @@ public interface TtCouponChannelPoiMapper extends CommonMapper Date: Sat, 11 Jun 2022 15:39:00 +0800 Subject: [PATCH 59/97] //tt product --- .../controller/WxOrderController.java | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 42bde72af..b07107ef8 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -1,6 +1,7 @@ package com.iformall.controller; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.binarywang.wxpay.bean.ecommerce.SignatureHeader; @@ -173,6 +174,31 @@ public class WxOrderController extends BaseController { JSONObject jsonObject = JSONObject.parseObject(body); String app_id = jsonObject.getString("app_id"); String open_id = jsonObject.getString("open_id"); + //透传字段 + String cp_extra = jsonObject.getString("cp_extra"); + if(StringUtils.isBlank(cp_extra)){ + map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); + map.put("err_tips","缺少透传字段"); + return map; + } + Map couponMap = new HashMap<>(); + try{ + JSONArray jsonArray = JSONObject.parseArray(cp_extra); + for(int i=0;i list = new ArrayList<>(); for (CreateOrderCallback.Good good:createOrderCallback.getGoods()) { PlatPushOrderSaveDto dto = new PlatPushOrderSaveDto(); - dto.setCouponChannelId(Long.parseLong(good.getGoodsId())); + dto.setCouponChannelId(couponMap.get(good.getGoodsId())); dto.setCount(good.getQuantity()); dto.setExtParam(good.getItemOrderInfoList().toString()); list.add(dto); From 38379aba80fadc45ae98b003505ef498c3d33943 Mon Sep 17 00:00:00 2001 From: xhxu Date: Sat, 11 Jun 2022 16:30:16 +0800 Subject: [PATCH 60/97] //tt product --- .../com/iformall/controller/WxOrderController.java | 6 +++--- .../service/impl/TtCouponGoodsServiceImpl.java | 12 ++++++++++++ .../service/impl/WxCouponChannelServiceImpl.java | 9 +++++---- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index b07107ef8..000851e4f 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -185,10 +185,10 @@ public class WxOrderController extends BaseController { try{ JSONArray jsonArray = JSONObject.parseArray(cp_extra); for(int i=0;i 0){ return new ResultData(ttCouponChannelPoi); } @@ -811,9 +811,10 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { updChannel.setId(wxCouponChannel.getId()); updChannel.updateTenantInfo(wxCouponChannel); updChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); - wxCouponChannel.setShowBeginTime(date); - wxCouponChannel.setBeginTime(date); - wxCouponChannel.setUpdateDate(date); + updChannel.setTtSpuId(ttCouponChannelPoi.getSpuId()); + updChannel.setShowBeginTime(date); + updChannel.setBeginTime(date); + updChannel.setUpdateDate(date); wxCouponChannelMapper.updateById(updChannel); return new ResultData(); } From afb6a312e8fef40e34d5ddd341175284092578c2 Mon Sep 17 00:00:00 2001 From: xhxu Date: Sat, 11 Jun 2022 17:26:50 +0800 Subject: [PATCH 61/97] //tt product --- .../controller/WxOrderController.java | 23 +++++++------------ 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 000851e4f..215826192 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -175,22 +175,15 @@ public class WxOrderController extends BaseController { String app_id = jsonObject.getString("app_id"); String open_id = jsonObject.getString("open_id"); //透传字段 - String cp_extra = jsonObject.getString("cp_extra"); - if(StringUtils.isBlank(cp_extra)){ - map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); - map.put("err_tips","缺少透传字段"); - return map; - } - Map couponMap = new HashMap<>(); + Map couponMap = new HashMap<>(); try{ - JSONArray jsonArray = JSONObject.parseArray(cp_extra); - for(int i=0;i list = new ArrayList<>(); for (CreateOrderCallback.Good good:createOrderCallback.getGoods()) { PlatPushOrderSaveDto dto = new PlatPushOrderSaveDto(); - dto.setCouponChannelId(couponMap.get(good.getGoodsId())); + dto.setCouponChannelId(Long.parseLong(couponMap.get(good.getGoodsId()))); dto.setCount(good.getQuantity()); dto.setExtParam(good.getItemOrderInfoList().toString()); list.add(dto); From 356659fc1581afb8ea0a36ef629dfcb27e640068 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 14 Jun 2022 18:17:48 +0800 Subject: [PATCH 62/97] //tt product --- .../controller/WxOrderController.java | 65 +++++++ .../controller/callback/TtPayController.java | 121 +++++++++--- .../schedule/OrderExpiringSchedule.java | 2 +- .../schedule/TtOrderPushErrorSchedule.java | 28 +-- .../com/iformall/domain/po/WxBatchOrder.java | 14 ++ .../payv2/result/TtPayOrderQueryV2Result.java | 2 +- .../com/iformall/service/WxOrderService.java | 2 + .../service/impl/WxOrderServiceImpl.java | 13 +- .../service/impl/WxPayOrderServiceImpl.java | 178 ++++++++++++++---- .../FmInsideCouponVerifyMsgServiceImpl.java | 2 +- .../pay/douyin/BaseTtPayAdapterService.java | 42 ++++- .../main/java/com/iformall/utils/Utility.java | 5 + 12 files changed, 378 insertions(+), 96 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 215826192..ac10b5979 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -289,6 +289,71 @@ public class WxOrderController extends BaseController { map.put("params", JSON.toJSONString(paramMap)); return map; } + + @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 orderIdStr = (String) paramMap.get("composeOrderId"); + if (StringUtils.isBlank(orderIdStr)) { + logger.info("orderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); + } + Long orderId = 0L; + try { + orderId = Long.valueOf(orderIdStr); + } catch (NumberFormatException e) { + logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); + } + + WxBatchOrder batchOrder = wxOrderService.getWxBatchOrder(getTenantInfo(),orderId); + if(batchOrder == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "未找到订单"); + } + + WxPayOrder payOrder = new WxPayOrder(); + payOrder.setOrderId(orderId); + payOrder.updateTenantInfo(getTenantInfo()); + payOrder.setPayVendor(getPayWay().getCode()); + payOrder.setComposeOrder(batchOrder.getOrderType()); + + try { + WxPayOrder byObj = wxPayOrderService.getByObj(payOrder); + if(byObj != null){ + return new ResultData(Result.SUCCESS, "支付状态更新成功"); + }else{ + + + WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId()); + + WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor()).getPlat()); + //WxCUser user = getUser(); + //WxAppinfo appInfo = getAppInfo(user.getAppId()); + if (null == appInfo) { + return new ResultData(ErrorCode.PAY_ORDER_ERROR, "当前支付类型["+payOrder.getPayVendor()+"]找不到C端appInfo"); + } + WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); + try { + WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, composeOrder,appInfo, payAccount, IdWorker.get(),false); + if (null != wo) { + return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); + } + }catch(MallinkException e) { + //已经同步了微信的支付状态,表示已经更新 + return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); + } + + return new ResultData(ErrorCode.PAY_ORDER_ERROR, "查询微信订单支付状态失败,请稍后!"); + } + } catch (MallinkException e) { + 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(),e); + return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); + } + } diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java index 015305307..ad61419aa 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java @@ -2,25 +2,28 @@ package com.iformall.controller.callback; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.github.binarywang.wxpay.bean.ecommerce.SignatureHeader; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxBatchOrder; 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.FmInsideNotifyRefundSuccessMsg; import com.iformall.douyin.pay.DouYinPayHelper; +import com.iformall.douyin.pay.TtPayService; +import com.iformall.douyin.payv2.result.CreateOrderCallback; import com.iformall.enums.*; import com.iformall.interceptor.BodyReaderHttpServletRequestWrapper; import com.iformall.mq.MqBaseProducer; -import com.iformall.service.WxAppinfoService; -import com.iformall.service.WxPayAccountService; -import com.iformall.service.WxPayOrderService; -import com.iformall.service.WxRefundOrderService; +import com.iformall.service.*; 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.MaUtil; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,6 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; @@ -50,6 +54,9 @@ public class TtPayController extends BaseController { @Autowired private WxPayOrderService wxPayOrderService; + @Autowired + private WxOrderService wxOrderService; + @Autowired private OrderFactory orderFactory; @@ -59,6 +66,9 @@ public class TtPayController extends BaseController { @Autowired private MqBaseProducer mqBaseProducer; + @Autowired + private MaUtil maUtil; + /** * timestamp number Unix 时间戳,10 位,整型数 * nonce string 随机数 @@ -75,51 +85,102 @@ public class TtPayController extends BaseController { */ @PostMapping(value = "/orderPay") @ResponseBody - public Map createOrder( @RequestBody Map parameterMap){ + public Map createOrder( @RequestBody Map parameterMap,HttpServletRequest request){ logger.debug("[" + getIpAddr() + "] TtOrderCallbackController::orderPay"); Map resultMap = new HashMap<>(); // String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); - logger.info("抖音支付通知-----body{}"+parameterMap); +// Map parameterMap = JSONObject.parseObject(body, Map.class); + logger.info("抖音通知-----body{}"+parameterMap); try { - -// Map parameterMap = JSONObject.parseObject(body, Map.class); - - String timestamp = (String) parameterMap.get("timestamp"); - String nonce = (String) parameterMap.get("nonce"); -// {"appid":"tt9da4eb19029c2bb301","cp_orderno":"557490321114062848","cp_extra":"","way":"2","channel_no":"2021052622001418391405536769","channel_gateway_no":"12105260162116189897","payment_order_no":"2021052622001418391405536769","out_channel_order_no":"","total_amount":100} String msg = (String) parameterMap.get("msg"); String type = (String) parameterMap.get("type"); - String msgSignature = (String) parameterMap.get("msg_signature"); + String version = (String) parameterMap.get("version"); Map pMap = JSONObject.parseObject(msg, Map.class); - String appid = (String) pMap.get("appid"); - WxAppinfo appinfo = appinfoService.getByAppId(appid); - WxPayAccount payAccount = payAccountService.getById(appinfo.getPayId()); - Map paramMap = new HashMap<>(); - paramMap.put("token",payAccount.getNotifyToken()); - paramMap.put("timestamp",timestamp); - paramMap.put("nonce",nonce); - paramMap.put("msg",msg); - String sign = DouYinPayHelper.getTTBackSign(paramMap, "SHA1"); - if(!msgSignature.equalsIgnoreCase(sign)){ - resultMap.put("err_tips","error"); - return resultMap; + + String appid; + WxAppinfo appinfo; + WxPayAccount payAccount; + String out_order_no; + + if(StringUtils.isNotBlank(version) && "2.0".equals(version)){//支付2.0 回调 + String msgSignature = request.getHeader("Byte-Signature"); + String timestamp = request.getHeader("Byte-Timestamp"); + String nonce = request.getHeader("Byte-Nonce-Str"); + + appid = (String) pMap.get("app_id"); + appinfo = appinfoService.getByAppId(appid); + payAccount = payAccountService.getById(appinfo.getPayId()); + + TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); + String beforeSign = String.format("%s\n%s\n%s\n", + timestamp, + nonce, + JSON.toJSONString(parameterMap)); + boolean verify = ttPayService.getConfig().getVerifier().verify(beforeSign.getBytes(StandardCharsets.UTF_8), msgSignature); + if(!verify){ + logger.info("抖音通知(2.0)-----{}签名效验失败"); + resultMap.put("err_tips","error"); + return resultMap; + } + logger.info("抖音通知(2.0)-----{}签名效验成功"); + + out_order_no = (String)pMap.get("out_order_no"); + + }else{ + String msgSignature = (String) parameterMap.get("msg_signature"); + String timestamp = (String) parameterMap.get("timestamp"); + String nonce = (String) parameterMap.get("nonce"); + + appid = (String) pMap.get("appid"); + appinfo = appinfoService.getByAppId(appid); + payAccount = payAccountService.getById(appinfo.getPayId()); + + Map paramMap = new HashMap<>(); + paramMap.put("token",payAccount.getNotifyToken()); + paramMap.put("timestamp",timestamp); + paramMap.put("nonce",nonce); + paramMap.put("msg",msg); + String sign = DouYinPayHelper.getTTBackSign(paramMap, "SHA1"); + if(!msgSignature.equalsIgnoreCase(sign)){ + logger.info("抖音通知-----{}签名效验失败"); + resultMap.put("err_tips","error"); + return resultMap; + } + logger.info("抖音通知-----{}签名效验成功"); + + out_order_no = (String) pMap.get("cp_orderno"); } + + if("payment".equals(type)){//支付回调 - String cp_orderno = (String) pMap.get("cp_orderno");//开发者传入订单号 String way = (String) pMap.get("way");//2-支付宝,1-微信 - if (!StringUtils.isNotBlank(cp_orderno)) { + if (!StringUtils.isNotBlank(out_order_no)) { try { - Long payOrderId = Long.valueOf(cp_orderno); - WxPayOrder wxpayOrder = wxPayOrderService.getById(payOrderId, appinfo.getTenantId()); + Long orderId = Long.valueOf(out_order_no); + WxPayOrder wxpayOrder = wxPayOrderService.getById(orderId, appinfo.getTenantId()); + if(wxpayOrder == null){ + TenantEntity tenantEntity = new TenantEntity(); + tenantEntity.setTenantId(appinfo.getTenantId()); + tenantEntity.setParentTenantId(appinfo.getParentTenantId()); + WxBatchOrder batchOrder = wxOrderService.getWxBatchOrder(tenantEntity,orderId); + if(batchOrder == null){ + logger.error("未找到订单"+orderId); + } + wxpayOrder = new WxPayOrder(); + wxpayOrder.setOrderId(orderId); + wxpayOrder.updateTenantInfo(tenantEntity); + wxpayOrder.setPayVendor(batchOrder.getPayVendor()); + wxpayOrder.setComposeOrder(batchOrder.getOrderType()); + } PayQueryAdapterResult queryResult = payServiceFactory.getPayAdapterService(wxpayOrder.getPayVendor()).queryPayStatus(wxpayOrder, appinfo, payAccount); if (EnumPayStatus.PAY_STATUS_SUCCESS.getCode() == queryResult.getCode()) { WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(wxpayOrder.getComposeOrder()).getComposeOrder(wxpayOrder.getOrderId(), wxpayOrder.getTenantId()); wxPayOrderService.handleSuccessOrder(wxpayOrder, composeOrder, queryResult, true,false); } } catch (NumberFormatException e) { - logger.error("payOrderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); + logger.error("payOrderId参数不正确: " + toString() + ", e:" + e.getMessage()); } } diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java index 5051d3e9e..f56dec4ef 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java @@ -353,7 +353,7 @@ public class OrderExpiringSchedule { wxOrderMapper.updateById(updateOrder); logger.info("券订单: " + order.getId() + " create at " + order.getCreateDate() + " expired at " + new Date()); - wxOrderService.sendInsideOrderPushMsg(order,order.getComposeOrderId()); +// wxOrderService.sendInsideOrderPushMsg(order,order.getComposeOrderId()); } diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/TtOrderPushErrorSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/TtOrderPushErrorSchedule.java index d91f80c46..6503895b9 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/TtOrderPushErrorSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/TtOrderPushErrorSchedule.java @@ -23,19 +23,19 @@ public class TtOrderPushErrorSchedule { @Autowired private WxOrderService wxOrderService; - @Async - @Scheduled(cron = "0 0 1 * * ?") - public void OrderPushErrorTaskSchedule() { - List orderPushErrors = ttOrderPushErrorMapper.findList(new TtOrderPushError()); - if(orderPushErrors != null && orderPushErrors.size() > 0){ - for (TtOrderPushError error:orderPushErrors) { - try{ - wxOrderService.sendInsideOrderPushMsg(error,error.getId()); - }catch(Exception e){ - logger.error("订单同步重试error"); - } - } - } - } +// @Async +// @Scheduled(cron = "0 0 1 * * ?") +// public void OrderPushErrorTaskSchedule() { +// List orderPushErrors = ttOrderPushErrorMapper.findList(new TtOrderPushError()); +// if(orderPushErrors != null && orderPushErrors.size() > 0){ +// for (TtOrderPushError error:orderPushErrors) { +// try{ +// wxOrderService.sendInsideOrderPushMsg(error,error.getId()); +// }catch(Exception e){ +// logger.error("订单同步重试error"); +// } +// } +// } +// } } \ No newline at end of file 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 aefe01c89..a00ce763a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java @@ -1,5 +1,8 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; @@ -59,4 +62,15 @@ public class WxBatchOrder extends TenantEntity { return null; } + public Object getExpParamValue(String key) { + if (StringUtils.isBlank(extParam)) { + return null; + } + JSONObject o = JSON.parseObject(extParam); + if (null == o ) { + return null; + } + return o.get(key); + } + } diff --git a/mallinkService/src/main/java/com/iformall/douyin/payv2/result/TtPayOrderQueryV2Result.java b/mallinkService/src/main/java/com/iformall/douyin/payv2/result/TtPayOrderQueryV2Result.java index 64fd25204..b6d23e911 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/payv2/result/TtPayOrderQueryV2Result.java +++ b/mallinkService/src/main/java/com/iformall/douyin/payv2/result/TtPayOrderQueryV2Result.java @@ -106,7 +106,7 @@ public class TtPayOrderQueryV2Result implements Serializable { * 担保支付单id */ @SerializedName(value = "payment_order_id") - private Integer paymentOrderId; + private String paymentOrderId; /** * 订单核销类型: diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 0d1b898ab..4fdff5c8d 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -258,4 +258,6 @@ public interface WxOrderService { WxBatchOrder batchOrderDetail(WxBatchOrder border); void cancelOrderBatchOrder(WxBatchOrder border,WxPayOrder payOrder); + + WxBatchOrder getWxBatchOrder(TenantEntity tenantInfo, Long orderId); } 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 3f8515053..862298d7a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2266,10 +2266,10 @@ public class WxOrderServiceImpl implements WxOrderService { logger.error("订单状态更新失败, e:" + e.getMessage(),e); throw new MallinkException(ErrorCode.ORDER_UPDATE_ERR); } - if(ret == 1){ - //订单同步 - sendInsideOrderPushMsg(oldOrder,oldOrder.getComposeOrderId()); - } +// if(ret == 1){ +// //订单同步 +// sendInsideOrderPushMsg(oldOrder,oldOrder.getComposeOrderId()); +// } return ret; } @@ -3554,6 +3554,11 @@ public class WxOrderServiceImpl implements WxOrderService { } + @Override + public WxBatchOrder getWxBatchOrder(TenantEntity tenantInfo, Long orderId) { + return wxBatchOrderMapper.selectById(orderId,tenantInfo.getTenantId()); + } + private Map> getBatchOrderMap(TenantEntity tenantEntity,List batchOrderIds){ WxOrder recordQ = new WxOrder(); recordQ.updateTenantInfo(tenantEntity); 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 be862facf..f3b1e9899 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -12,6 +12,7 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.douyin.payv2.result.TtPayOrderQueryV2Result; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; @@ -130,14 +131,112 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { @Override 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(); - //因为此处是处理订单支付成功了但是订单状态为未支付成功的异常状态,库存不应该再扣减 - //更新wxPayOrder - oldRecord.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); + if(EnumPayWay.PAY_WAY_TT.getCode().equals(oldRecord.getPayVendor()) && oldRecord.getId() == null){ + EnumPayShare isShare = EnumPayShare.NO; + WxAppinfo appInfo = wxAppinfoService.getCAppInfo(oldRecord, EnumPayWay.getEnum(oldRecord.getPayVendor()).getPlat()); + WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); + if (payAccount.checkShare()) { + isShare = EnumPayShare.YES; + } + + TtPayOrderQueryV2Result result = (TtPayOrderQueryV2Result) queryResult.getData(); + + WxBatchOrder batchOrder = wxBatchOrderMapper.selectById(oldRecord.getOrderId(), oldRecord.getTenantId()); + String open_id = (String) batchOrder.getExpParamValue("open_id"); + + oldRecord.setId(oldRecord.getOrderId()); + oldRecord.setOpenId(open_id); + oldRecord.setComposeOrder(batchOrder.getOrderType()); + + oldRecord.setCreateTime(curDate); + oldRecord.setUpdateTime(curDate); + oldRecord.setPayTimeStart(batchOrder.getCreateDate()); + + oldRecord.setPayOrderNo(result.getPaymentOrderId()); + oldRecord.setPayAmount(result.getTotalFee()); + + oldRecord.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); + oldRecord.setTtPayWay(result.getPayChannel()); + + String timEndStr = queryResult.getEndTimeStr(); + Date timeEnd = null; + try { + timeEnd = Utility.getDateFromString(timEndStr); + } catch (ParseException e) { + logger.error("解析timeEnd失败"); + timeEnd = new Date(); + } + oldRecord.setPayTimeEnd(timeEnd); + oldRecord.setPayEndFrom(EnumPayEndFrom.QUERY.getCode()); + oldRecord.setTransactionId(queryResult.getTransactionId()); + + oldRecord.setShare(isShare.getCode()); + if (isShare == EnumPayShare.YES) { + PayShareAdapterService payShareServie = payServiceFactory.getPayShareAdapterService(oldRecord.getPayVendor()); + + PayShareCalculateAmount recordShareAmount = payShareServie.calculateAmount(oldRecord.getPayAmount(), payAccount); + // 分账金额 + Integer share_amount = recordShareAmount.getShareAmount(); + oldRecord.setShareAmount(share_amount); + oldRecord.setRateAmount(recordShareAmount.getRateAmount()); + //设置子订单分账金额 + 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) { + PayShareCalculateAmount oShareAmount = payShareServie.calculateAmount(o.getPayment(), payAccount); + Integer orderShareAmount = oShareAmount.getShareAmount(); + Integer orderRateAmount = oShareAmount.getRateAmount(); + childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(o.getPayment(), orderShareAmount, orderRateAmount)); + } + oldRecord.setChildOrderShare(JSON.toJSONString(childShares)); + } + } + + int sqlRow = wxPayOrderMapper.insert(oldRecord); + + WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); + if (!EnumComposeOrder.isSingle(composeOrder.getComposeOrderType())) { + //如果是组合订单的单独处理。如定时处理的单个订单 + if (isOneChildOrder) { + //处理其他信息 + try { + proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, queryResult.getTransactionId(),isScheduleTask); + }catch(Exception e) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + }else { + List orderList = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrders(composeOrder, oldRecord.getTenantId()); + for (WxOrder o : orderList) { + try { + proxy.handleOrderPaySingleOrderSuccess(o,oldRecord, queryResult.getTransactionId(), isScheduleTask); + }catch(Exception e) { + logger.error("handleSuccessOrder error.",e); + } + } + } + }else { + //处理其他信息 + try { + proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, queryResult.getTransactionId(),isScheduleTask); + }catch(Exception e) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + } + + + + + + }else if(oldRecord.getId() != null && oldRecord.getPayOrderStatus() != EnumPayStatus.PAY_STATUS_SUCCESS.getCode()){ + WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); + //因为此处是处理订单支付成功了但是订单状态为未支付成功的异常状态,库存不应该再扣减 + //更新wxPayOrder + oldRecord.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); oldRecord.setTtPayWay(queryResult.getWay()); - String timEndStr = queryResult.getEndTimeStr(); - Date timeEnd = null; + String timEndStr = queryResult.getEndTimeStr(); + Date timeEnd = null; try { timeEnd = Utility.getDateFromString(timEndStr); } catch (ParseException e) { @@ -149,39 +248,38 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { String transactionId = queryResult.getTransactionId(); oldRecord.setTransactionId(transactionId); oldRecord.setUpdateTime(curDate); - wxPayOrderMapper.updateById(oldRecord); - - if (!EnumComposeOrder.isSingle(composeOrder.getComposeOrderType())) { - //如果是组合订单的单独处理。如定时处理的单个订单 - if (isOneChildOrder) { - //处理其他信息 - try { - proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, transactionId,isScheduleTask); - }catch(Exception e) { - throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); - } - }else { - List orderList = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrders(composeOrder, oldRecord.getTenantId()); - for (WxOrder o : orderList) { - try { - proxy.handleOrderPaySingleOrderSuccess(o,oldRecord, transactionId, isScheduleTask); - }catch(Exception e) { - logger.error("handleSuccessOrder error.",e); - } - } - } - }else { - //处理其他信息 - try { - proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, transactionId,isScheduleTask); - }catch(Exception e) { - throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); - } - } - //订单同步消息 - wxOrderService.sendInsideOrderPushMsg(composeOrder,composeOrder.getMainOrderId()); + wxPayOrderMapper.updateById(oldRecord); - } + if (!EnumComposeOrder.isSingle(composeOrder.getComposeOrderType())) { + //如果是组合订单的单独处理。如定时处理的单个订单 + if (isOneChildOrder) { + //处理其他信息 + try { + proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, transactionId,isScheduleTask); + }catch(Exception e) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + }else { + List orderList = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrders(composeOrder, oldRecord.getTenantId()); + for (WxOrder o : orderList) { + try { + proxy.handleOrderPaySingleOrderSuccess(o,oldRecord, transactionId, isScheduleTask); + }catch(Exception e) { + logger.error("handleSuccessOrder error.",e); + } + } + } + }else { + //处理其他信息 + try { + proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, transactionId,isScheduleTask); + }catch(Exception e) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + } + //订单同步消息 +// wxOrderService.sendInsideOrderPushMsg(composeOrder,composeOrder.getMainOrderId()); + } } @@ -250,7 +348,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { String productName = orderAdapterService.getPayProductName(lastCoupon); PayAdapterResult payResult = createPayOrder(appInfo, user, record,composeOrder,productName, payWay, params); if (payResult.isSuccess()) { - wxOrderService.sendInsideOrderPushMsg(composeOrder,composeOrder.getMainOrderId()); +// wxOrderService.sendInsideOrderPushMsg(composeOrder,composeOrder.getMainOrderId()); return new ResultData(Result.SUCCESS,"创建支付单成功",payResult.getData()); }else { return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), payResult.getMsg(), payResult.getData()); diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java index 8b7967063..ae2b5f171 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java @@ -49,7 +49,7 @@ public class FmInsideCouponVerifyMsgServiceImpl implements MsgSendService { throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "门店未找到" + msg.getMerchantId()); } - orderService.sendInsideOrderPushMsg(couponOrder,couponOrder.getComposeOrderId()); +// orderService.sendInsideOrderPushMsg(couponOrder,couponOrder.getComposeOrderId()); couponOrderService.actionAfterVerify(couponOrder, merchant); } diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/BaseTtPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/BaseTtPayAdapterService.java index 49631c36e..778249fa7 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/BaseTtPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/BaseTtPayAdapterService.java @@ -1,12 +1,16 @@ package com.iformall.service.pay.service.pay.douyin; +import com.iformall.common.ErrorCode; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxPayOrder; import com.iformall.douyin.miniapp.api.TtMaService; import com.iformall.douyin.pay.DouYinPayHelper; +import com.iformall.douyin.pay.TtPayService; import com.iformall.douyin.pay.orderQuery.OrderQueryResult; +import com.iformall.douyin.payv2.result.TtPayOrderQueryV2Result; import com.iformall.enums.EnumPayStatus; +import com.iformall.exception.MallinkException; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; import com.iformall.utils.MaUtil; @@ -21,14 +25,43 @@ import java.io.File; @Slf4j public class BaseTtPayAdapterService { + @Autowired + protected MaUtil maUtil; + protected PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception { - OrderQueryResult orderQueryResult = DouYinPayHelper.orderQuery(appInfo.getAppId(), payAccount.getApiKey(), oldRecord.getPayOrderNo(), null); - int code = DouYinPayHelper.getPayStatusFromOrderQueryResult(orderQueryResult,oldRecord.getPayOrderNo()); - PayQueryAdapterResult result = new PayQueryAdapterResult(code, EnumPayStatus.getEnum(code).getMessage(),orderQueryResult.getWay(), orderQueryResult,oldRecord.getTransactionId(),orderQueryResult.getPayTime()); + TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount); + TtPayOrderQueryV2Result ttPayOrderQueryV2Result = ttPayService.queryOrderV2(null, oldRecord.getOrderId().toString()); + int code = getPayStatusFromOrderQueryResult(ttPayOrderQueryV2Result); + PayQueryAdapterResult result = new PayQueryAdapterResult(code, EnumPayStatus.getEnum(code).getMessage(), + ttPayOrderQueryV2Result.getPayChannel(), ttPayOrderQueryV2Result,ttPayOrderQueryV2Result.getOrderId(),ttPayOrderQueryV2Result.getPayTime()); + +// OrderQueryResult orderQueryResult = DouYinPayHelper.orderQuery(appInfo.getAppId(), payAccount.getApiKey(), oldRecord.getPayOrderNo(), null); +// int code = DouYinPayHelper.getPayStatusFromOrderQueryResult(orderQueryResult,oldRecord.getPayOrderNo()); +// PayQueryAdapterResult result = new PayQueryAdapterResult(code, EnumPayStatus.getEnum(code).getMessage(),orderQueryResult.getWay(), orderQueryResult,oldRecord.getTransactionId(),orderQueryResult.getPayTime()); return result; } + private int getPayStatusFromOrderQueryResult(TtPayOrderQueryV2Result result){ + if(result == null){ + return EnumPayStatus.PAY_STATUS_ORDER_NOT_EXISTS.getCode(); + } + String orderStatus = result.getOrderStatus(); + if(StringUtils.isBlank(orderStatus)){ + return EnumPayStatus.PAY_STATUS_FAIL.getCode(); + }else if("PROCESS".equals(orderStatus)){ + return EnumPayStatus.PAY_STATUS_WAIT.getCode(); + }else if("SUCCESS".equals(orderStatus)){ + return EnumPayStatus.PAY_STATUS_SUCCESS.getCode(); + }else if("FAIL".equals(orderStatus)){ + return EnumPayStatus.PAY_STATUS_FAIL.getCode(); + }else if("TIMEOUT".equals(orderStatus)){ + return EnumPayStatus.PAY_STATUS_FAIL.getCode(); + } + throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "订单查询抖音支付状态失败"+result.getOutOrderNo()); + } + + protected int queryPayStatus(PayQueryAdapterResult statusObject, String orderOutNo) throws Exception { return statusObject.getCode(); } @@ -46,8 +79,7 @@ public class BaseTtPayAdapterService { return new PayAdapterResult(true, "订单撤销成功", null, null); } - @Autowired - protected MaUtil maUtil; + protected File getQrCode(WxAppinfo appinfo,String pageUrl,int type,String sceneParam) throws WxErrorException { TtMaService ttappService = maUtil.getTtMaService(appinfo); diff --git a/mallinkService/src/main/java/com/iformall/utils/Utility.java b/mallinkService/src/main/java/com/iformall/utils/Utility.java index 89ef682b6..879a09333 100644 --- a/mallinkService/src/main/java/com/iformall/utils/Utility.java +++ b/mallinkService/src/main/java/com/iformall/utils/Utility.java @@ -538,6 +538,11 @@ public final class Utility { return sdf.parse(timeEnd); } + public static Date getDateTtFromString(String timeEnd) throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return sdf.parse(timeEnd); + } + public static String getOrderNo() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = sdf.format(new Date()); From b7282f39a34bd1a815d321c090781fe6772f0ab0 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 15 Jun 2022 13:16:20 +0800 Subject: [PATCH 63/97] //tt product --- .../controller/WxOrderController.java | 12 +- .../java/com/iformall/mq/MqBaseConsumer.java | 7 + .../schedule/OrderRefundAuditSchedule.java | 75 ++++++++ .../domain/po/msg/FmInsideOrderPushMsg.java | 3 + .../douyin/pay/ProfitSharingV2Service.java | 2 +- .../pay/impl/ProfitSharingV2ServiceImpl.java | 4 +- .../payv2/result/CreateOrderCallback.java | 2 +- .../com/iformall/enums/EnumMsgRecordType.java | 2 + .../com/iformall/service/WxOrderService.java | 4 + .../service/impl/WxOrderServiceImpl.java | 27 +++ .../service/impl/WxPayOrderServiceImpl.java | 4 +- .../FmInsideCouponVerifyMsgServiceImpl.java | 2 +- ...InsideOrderPushDeliveryMsgServiceImpl.java | 110 ++++++++++++ .../pay/douyin/BaseTtPayAdapterService.java | 2 +- .../refund/douyin/TtRefundAdapterService.java | 97 ++++++++--- .../share/douyin/TtPayShareService.java | 162 ++++++++++++------ 16 files changed, 418 insertions(+), 97 deletions(-) create mode 100644 mallinkSchedule/src/main/java/com/iformall/schedule/OrderRefundAuditSchedule.java create mode 100644 mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index ac10b5979..07bb123fe 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -241,7 +241,7 @@ public class WxOrderController extends BaseController { WxComposeOrder order = (WxComposeOrder) resultData.data; Map data = new HashMap<>(); data.put("out_order_no",order.getMainOrderId()); - data.put("order_entry_schema",getOrderEntrySchema(order.getMainOrderId())); + data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(order.getMainOrderId())); List> goodsValid = new ArrayList<>(); for (Long goodId:order.getCouponChannelMap().keySet()) { Map goodsValidMap = new HashMap<>(); @@ -280,16 +280,6 @@ public class WxOrderController extends BaseController { } } - private Map getOrderEntrySchema(Long batchOrderId){ - Map map = new HashMap<>(); - map.put("path", Constant.mainPageUrl); - Map paramMap = new HashMap<>(); - paramMap.put("type","dt"); - paramMap.put("orderId",batchOrderId); - map.put("params", JSON.toJSONString(paramMap)); - return map; - } - @ApiOperation(value = "更新订单状态", notes = "{\"payOrderId\":\"string\",\"composeOrderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") @PostMapping("/updatePayOrder") public ResultData updatePayOrder(@RequestBody Map paramMap) { diff --git a/mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java b/mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java index 28fb57791..bd3c494f6 100644 --- a/mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java +++ b/mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java @@ -39,6 +39,8 @@ public class MqBaseConsumer { @Autowired private FmInsideOrderPushMsgServiceImpl fmInsideOrderPushMsgService; @Autowired + private FmInsideOrderPushDeliveryMsgServiceImpl fmInsideOrderPushDeliveryMsgServiceImpl; + @Autowired private FmInsideCLoginMsgServiceImpl fmInsideCLoginMsgService; @Autowired private MqBaseProducer mqBaseProducer; @@ -115,6 +117,11 @@ public class MqBaseConsumer { FmInsideOrderPushMsg msg = (FmInsideOrderPushMsg)JsonUtil.readValue(message,FmInsideOrderPushMsg.class); fmInsideOrderPushMsgService.send(msg); } + else if(EnumMsgRecordType.INSIDE_ORDER_PUSH_DELIVERY.getCode().equals(baseMsg.getMsgType())) { + // 内部消息 - 2.0核销同步 + FmInsideOrderPushMsg msg = (FmInsideOrderPushMsg)JsonUtil.readValue(message,FmInsideOrderPushMsg.class); + fmInsideOrderPushDeliveryMsgServiceImpl.send(msg); + } //else if(EnumMsgRecordType.INSIDE_NOTIFY_PAY_SUCCESS.getCode().equals(baseMsg.getMsgType())) { // 内部消息 - 微信支付通知 //FmInsideNotifyPaySuccessMsg msg = (FmInsideNotifyPaySuccessMsg)JsonUtil.readValue(message,FmInsideNotifyPaySuccessMsg.class); diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderRefundAuditSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderRefundAuditSchedule.java new file mode 100644 index 000000000..04297ee79 --- /dev/null +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderRefundAuditSchedule.java @@ -0,0 +1,75 @@ +package com.iformall.schedule; + + +import com.iformall.domain.po.*; +import com.iformall.douyin.pay.TtPayService; +import com.iformall.douyin.pay.exception.TtPayException; +import com.iformall.douyin.payv2.request.TtRefundAuditMsgRequest; +import com.iformall.enums.*; +import com.iformall.mapper.*; +import com.iformall.utils.MaUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class OrderRefundAuditSchedule { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + WxOrderMapper wxOrderMapper; + + @Autowired + WxAppinfoMapper wxAppinfoMapper; + + @Autowired + WxRefundOrderMapper wxRefundOrderMapper; + + @Autowired + WxPayAccountMapper wxPayAccountMapper; + + @Autowired + MaUtil maUtil; + + + private List getAppInfos() { + WxAppinfo appinfo =new WxAppinfo(); + appinfo.setPlat(EnumAppPlat.TOUTIAO.getCode()); + appinfo.setType(EnumAppType.C.getCode()); + return wxAppinfoMapper.findList(appinfo); + } + + @Scheduled(cron = "0 */10 * * * *?") // 每10分钟检查一次 + //@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 + public void merchantAuditCallback() { + List appInfos = getAppInfos(); + for (WxAppinfo appinfo : appInfos) { + WxRefundOrder refundOrder = new WxRefundOrder(); + refundOrder.updateTenantInfo(appinfo); + refundOrder.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode()); + List list = wxRefundOrderMapper.findList(refundOrder); + if(list != null && list.size() > 0){ + WxPayAccount payAccount = wxPayAccountMapper.selectById(appinfo.getPayId()); + TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); + for (WxRefundOrder order:list) { + try { + TtRefundAuditMsgRequest request = new TtRefundAuditMsgRequest(); + request.setOutRefundNo(order.getId().toString()); + request.setRefundAuditStatus(1); + ttPayService.merchantAuditCallback(request); + } catch (TtPayException e) { + e.printStackTrace(); + } + } + + } + + } + } + + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderPushMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderPushMsg.java index 3423fbe04..de0ce14d8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderPushMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderPushMsg.java @@ -12,4 +12,7 @@ public class FmInsideOrderPushMsg extends BaseMsg{ @io.swagger.annotations.ApiModelProperty(value = "", name = "composeOrderId") private Long batchOrderId; + @io.swagger.annotations.ApiModelProperty(value = "", name = "couponOrderId") + private Long couponOrderId; + } diff --git a/mallinkService/src/main/java/com/iformall/douyin/pay/ProfitSharingV2Service.java b/mallinkService/src/main/java/com/iformall/douyin/pay/ProfitSharingV2Service.java index 5eec923a7..2468d6a96 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/pay/ProfitSharingV2Service.java +++ b/mallinkService/src/main/java/com/iformall/douyin/pay/ProfitSharingV2Service.java @@ -43,6 +43,6 @@ public interface ProfitSharingV2Service { * - 注意:对于担保交易和交易1.0的订单,如果需要根据order_id/out_order_no查询订单的分账记录,建议使用order_id(抖音开平侧支付单id查询),若使用out_order_no可能存在查询不到的情况 * */ - ProfitSharingResult getProfitSharingResult(String order_id) throws TtPayException; + ProfitSharingResult getProfitSharingResult(String out_settle_no) throws TtPayException; } diff --git a/mallinkService/src/main/java/com/iformall/douyin/pay/impl/ProfitSharingV2ServiceImpl.java b/mallinkService/src/main/java/com/iformall/douyin/pay/impl/ProfitSharingV2ServiceImpl.java index f54c2af61..534ad0700 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/pay/impl/ProfitSharingV2ServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/douyin/pay/impl/ProfitSharingV2ServiceImpl.java @@ -44,10 +44,10 @@ public class ProfitSharingV2ServiceImpl implements ProfitSharingV2Service { } @Override - public ProfitSharingResult getProfitSharingResult(String order_id) throws TtPayException { + public ProfitSharingResult getProfitSharingResult(String out_settle_no) throws TtPayException { String url = String.format("%s/api/apps/trade/v2/query_settle", this.payService.getPayBaseUrl()); JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("order_id",order_id); + jsonObject.addProperty("out_settle_no",out_settle_no); String result = this.payService.postV2(url,jsonObject.toString()); return GSON.fromJson(result, ProfitSharingResult.class); } diff --git a/mallinkService/src/main/java/com/iformall/douyin/payv2/result/CreateOrderCallback.java b/mallinkService/src/main/java/com/iformall/douyin/payv2/result/CreateOrderCallback.java index 5e75ea8cc..f7aa1b86f 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/payv2/result/CreateOrderCallback.java +++ b/mallinkService/src/main/java/com/iformall/douyin/payv2/result/CreateOrderCallback.java @@ -199,7 +199,7 @@ public class CreateOrderCallback implements Serializable { * 是 * 商品item_order信息,详情见 item_order_info_list部分 */ - @SerializedName(value = "item_order_info_list") + @SerializedName(value = "item_order_info") protected List itemOrderInfoList; } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java index 0188072e3..c59c7279b 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java @@ -25,6 +25,8 @@ public enum EnumMsgRecordType { INSIDE_PRODUCT_PUSH(109, "商品状态或库存同步"), MALL_COO_USER_PUSH(110, "猫酷同步会员"), + + INSIDE_ORDER_PUSH_DELIVERY(200, "2.0核销同步"), ; public static EnumMsgRecordType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 4fdff5c8d..3133c6558 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -251,6 +251,8 @@ public interface WxOrderService { void sendInsideOrderPushMsg(TenantEntity tenantEntity,Long composeOrderId); + void sendInsideOrderPushDeliveryMsg(TenantEntity tenantEntity,Long composeOrderId,Long couponOrderId); + PageInfo listGoodsCAsPage(WxOrder wxOrder, Integer pageNum, Integer pageSize); PageInfo listBatchOrderAsPage(WxOrder wxOrder, Integer pageNum, Integer pageSize); @@ -260,4 +262,6 @@ public interface WxOrderService { void cancelOrderBatchOrder(WxBatchOrder border,WxPayOrder payOrder); WxBatchOrder getWxBatchOrder(TenantEntity tenantInfo, Long orderId); + + Map getOrderEntrySchema(Long mainOrderId); } 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 862298d7a..1defb8e17 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -3470,6 +3470,22 @@ public class WxOrderServiceImpl implements WxOrderService { } + @Override + public void sendInsideOrderPushDeliveryMsg(TenantEntity tenantEntity, Long composeOrderId,Long couponOrderId) { + try{ + FmInsideOrderPushMsg orderPush = new FmInsideOrderPushMsg(); + orderPush.setDelayTimeLevel(5); + orderPush.setMsgType(EnumMsgRecordType.INSIDE_ORDER_PUSH_DELIVERY.getCode()); + orderPush.updateTenantInfo(tenantEntity); + orderPush.setBatchOrderId(composeOrderId); + orderPush.setCouponOrderId(couponOrderId); + logger.info(">>>>>>>>>>>send sendInsideOrderPushMsg :"+orderPush); + mqBaseProducer.sendMessage(orderPush, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + }catch(Exception e){ + logger.info(">>>>>>>>>>>send sendInsideOrderPushMsg : error"+e.getMessage()); + } + } + //TODO 待优化重做 @Override public PageInfo listGoodsCAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { @@ -3559,6 +3575,17 @@ public class WxOrderServiceImpl implements WxOrderService { return wxBatchOrderMapper.selectById(orderId,tenantInfo.getTenantId()); } + @Override + public Map getOrderEntrySchema(Long mainOrderId) { + Map map = new HashMap<>(); + map.put("path", Constant.mainPageUrl); + Map paramMap = new HashMap<>(); + paramMap.put("type","dt"); + paramMap.put("orderId",mainOrderId); + map.put("params", JSON.toJSONString(paramMap)); + return map; + } + private Map> getBatchOrderMap(TenantEntity tenantEntity,List batchOrderIds){ WxOrder recordQ = new WxOrder(); recordQ.updateTenantInfo(tenantEntity); 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 f3b1e9899..709915e15 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -152,7 +152,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { oldRecord.setUpdateTime(curDate); oldRecord.setPayTimeStart(batchOrder.getCreateDate()); - oldRecord.setPayOrderNo(result.getPaymentOrderId()); + oldRecord.setPayOrderNo(result.getOutOrderNo()); oldRecord.setPayAmount(result.getTotalFee()); oldRecord.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); @@ -168,7 +168,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } oldRecord.setPayTimeEnd(timeEnd); oldRecord.setPayEndFrom(EnumPayEndFrom.QUERY.getCode()); - oldRecord.setTransactionId(queryResult.getTransactionId()); + oldRecord.setTransactionId(result.getPaymentOrderId()); oldRecord.setShare(isShare.getCode()); if (isShare == EnumPayShare.YES) { diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java index ae2b5f171..8427d040e 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java @@ -48,7 +48,7 @@ public class FmInsideCouponVerifyMsgServiceImpl implements MsgSendService { logger.error("门店未找到: " + msg.getMerchantId()); throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "门店未找到" + msg.getMerchantId()); } - + orderService.sendInsideOrderPushDeliveryMsg(couponOrder,null,couponOrder.getId()); // orderService.sendInsideOrderPushMsg(couponOrder,couponOrder.getComposeOrderId()); couponOrderService.actionAfterVerify(couponOrder, merchant); diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java new file mode 100644 index 000000000..bdda52e04 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java @@ -0,0 +1,110 @@ +package com.iformall.service.msg.impl; + +import com.alibaba.fastjson.JSONObject; +import com.iformall.common.ErrorCode; +import com.iformall.common.ResultData; +import com.iformall.domain.po.*; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.msg.BaseMsg; +import com.iformall.domain.po.msg.FmInsideOrderPushMsg; +import com.iformall.douyin.pay.TtPayService; +import com.iformall.douyin.payv2.request.TtOrderPushDeliveryRequest; +import com.iformall.enums.*; +import com.iformall.exception.MallinkException; +import com.iformall.mapper.TtCUserMapper; +import com.iformall.mapper.TtOrderPushErrorMapper; +import com.iformall.mapper.WxPayOrderMapper; +import com.iformall.service.*; +import com.iformall.service.msg.MsgSendService; +import com.iformall.service.pay.PayServiceFactory; +import com.iformall.service.pay.service.pay.entity.PayAdapterResult; +import com.iformall.utils.MaUtil; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * + * @author Stormeye Wu + * @date 2019/5/10 + */ +@Service +public class FmInsideOrderPushDeliveryMsgServiceImpl implements MsgSendService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxAppinfoService wxAppinfoService; + + @Autowired + private WxPayAccountService wxPayAccountService; + + @Autowired + private WxCouponOrderService wxCouponOrderService; + + @Autowired + private WxOrderService wxOrderService; + + @Autowired + private WxMerchantService wxMerchantService; + + @Autowired + private TtMerchantPoiService ttMerchantPoiService; + + @Autowired + private MaUtil maUtil; + + + @Override + public void send(BaseMsg baseMsg) throws Exception{ + FmInsideOrderPushMsg msg = (FmInsideOrderPushMsg)baseMsg; + + try{ + Thread.currentThread().sleep(1000);//延时秒 + }catch(Exception e){} + + TenantEntity tenantEntity = new TenantEntity(); + tenantEntity.setTenantId(msg.getTenantId()); + tenantEntity.setParentTenantId(msg.getParentTenantId()); + + WxCouponOrder couponOrder = wxCouponOrderService.getById(msg.getCouponOrderId(), tenantEntity.getTenantId()); + if(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode().equals(couponOrder.getCouponOrderStatus()) + && EnumPayWay.PAY_WAY_TT.getCode().equals(couponOrder.getPayVendor())){ + WxOrder order = wxOrderService.getById(couponOrder.getOrderId(), tenantEntity.getTenantId()); + String item_order_id = (String) order.getExpParamValue("item_order_id"); + WxMerchant merchant = wxMerchantService.getById(couponOrder.getBMerchantId()); + String shop_name = merchant.getName(); + String ext_valid_shop_id = couponOrder.getBMerchantId().toString(); + TtMerchantPoi poi = ttMerchantPoiService.getById(couponOrder.getBMerchantId()); + + + + WxAppinfo appinfo = wxAppinfoService.getCAppInfo(tenantEntity,EnumPayWay.PAY_WAY_TT.getPlat()); + WxPayAccount payAccount = wxPayAccountService.getById(appinfo.getPayId()); + TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); + + TtOrderPushDeliveryRequest request = new TtOrderPushDeliveryRequest(); + List itemOrderList = new ArrayList<>(); + TtOrderPushDeliveryRequest.ItemOrder itemOrder = new TtOrderPushDeliveryRequest.ItemOrder(); + itemOrder.setItemOrderId(item_order_id); + itemOrderList.add(itemOrder); + request.setItemOrderList(itemOrderList); + JSONObject poiInfo = new JSONObject(); + poiInfo.put("shop_name",shop_name); + poiInfo.put("ext_valid_shop_id",ext_valid_shop_id); + if(poi != null){ + poiInfo.put("valid_poi_id_str",poi.getPoiId()); + } + request.setPoiInfo(poiInfo.toJSONString()); + ttPayService.pushDelivery(request); + } + + } + + +} diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/BaseTtPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/BaseTtPayAdapterService.java index 778249fa7..aa4dcfdfb 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/BaseTtPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/BaseTtPayAdapterService.java @@ -34,7 +34,7 @@ public class BaseTtPayAdapterService { TtPayOrderQueryV2Result ttPayOrderQueryV2Result = ttPayService.queryOrderV2(null, oldRecord.getOrderId().toString()); int code = getPayStatusFromOrderQueryResult(ttPayOrderQueryV2Result); PayQueryAdapterResult result = new PayQueryAdapterResult(code, EnumPayStatus.getEnum(code).getMessage(), - ttPayOrderQueryV2Result.getPayChannel(), ttPayOrderQueryV2Result,ttPayOrderQueryV2Result.getOrderId(),ttPayOrderQueryV2Result.getPayTime()); + ttPayOrderQueryV2Result.getPayChannel(), ttPayOrderQueryV2Result,ttPayOrderQueryV2Result.getPaymentOrderId(),ttPayOrderQueryV2Result.getPayTime()); // OrderQueryResult orderQueryResult = DouYinPayHelper.orderQuery(appInfo.getAppId(), payAccount.getApiKey(), oldRecord.getPayOrderNo(), null); // int code = DouYinPayHelper.getPayStatusFromOrderQueryResult(orderQueryResult,oldRecord.getPayOrderNo()); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java index 2383fa92f..be532b25c 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java @@ -1,15 +1,17 @@ package com.iformall.service.pay.service.refund.douyin; +import com.alibaba.fastjson.JSON; import com.iformall.common.ErrorCode; -import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxPayAccount; -import com.iformall.domain.po.WxPayOrder; -import com.iformall.domain.po.WxRefundOrder; +import com.iformall.domain.po.*; import com.iformall.douyin.pay.DouYinPayHelper; +import com.iformall.douyin.pay.TtPayService; +import com.iformall.douyin.pay.exception.TtPayException; import com.iformall.douyin.pay.orderQuery.QueryRefundResult; import com.iformall.douyin.pay.preOrder.CreateRefund; import com.iformall.douyin.pay.preOrder.CreateRefundResult; +import com.iformall.douyin.payv2.request.TtPayRefundV2Request; +import com.iformall.douyin.payv2.result.TtPayRefundV2Result; import com.iformall.enums.EnumPayType; import com.iformall.enums.EnumPayWay; import com.iformall.enums.EnumRefundStatus; @@ -18,46 +20,87 @@ import com.iformall.mapper.WxAppinfoMapper; import com.iformall.mapper.WxPayAccountMapper; import com.iformall.mapper.WxPayOrderMapper; import com.iformall.mapper.WxRefundOrderMapper; +import com.iformall.service.WxOrderService; import com.iformall.service.pay.service.refund.RefundPayAdapterService; import com.iformall.service.pay.service.refund.entity.RefundAdapterResult; import com.iformall.service.pay.service.refund.entity.RefundNotifyAdapterResult; +import com.iformall.utils.Constant; +import com.iformall.utils.MaUtil; import com.iformall.utils.XmlUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Map; -import java.util.SortedMap; -import java.util.TreeMap; +import java.util.*; @Slf4j @Service public class TtRefundAdapterService implements RefundPayAdapterService{ + + @Autowired + MaUtil maUtil; + + @Autowired + WxOrderService wxOrderService; @Override public RefundAdapterResult refund(WxPayAccount payAccount,WxAppinfo appInfo,WxRefundOrder record,WxPayOrder payOrder,EnumPayType payType) { - CreateRefund createRefund = new CreateRefund(); - createRefund.setAppId(appInfo.getAppId()); - createRefund.setSalt(payAccount.getApiKey()); - createRefund.setOutOrderNo(payOrder.getPayOrderNo()); - createRefund.setOutRefundNo(String.valueOf(record.getId())); - if (payType == EnumPayType.PAY_B_REFUND) { - createRefund.setReason("B端商户退款"); - } else if (payType == EnumPayType.PAY_ADMIN_REFUND) { - createRefund.setReason("管理端商户退款"); - } else if (payType == EnumPayType.PAY_AUTO_REFUND) { - createRefund.setReason("超期自动退款"); - } else if (payType == EnumPayType.PAY_C_REFUND){ - createRefund.setReason("用户自己退款"); - } - createRefund.setRefundAmount(record.getRefundFee()); - CreateRefundResult refund = DouYinPayHelper.createRefund(createRefund); - if(refund.isSuccess()){ - return new RefundAdapterResult(true, EnumRefundStatus.REFUND_REQ_SUCCESS.getCode(), "退款订单申请成功", refund); - }else{ - return new RefundAdapterResult(false,EnumRefundStatus.REFUND_REQ_FAIL.getCode(),refund.getMsg(),refund); + try { + TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount); + TtPayRefundV2Request request = new TtPayRefundV2Request(); + request.setOutOrderNo(payOrder.getPayOrderNo()); + request.setOutRefundNo(record.getId().toString()); + TtPayRefundV2Request.PageEntry pageEntry = new TtPayRefundV2Request.PageEntry(); + pageEntry.setPath(Constant.mainPageUrl); + Map paramMap = new HashMap<>(); + paramMap.put("type","dt"); + paramMap.put("orderId",payOrder.getId()); + pageEntry.setParams(JSON.toJSONString(paramMap)); + request.setOrderEntrySchema(pageEntry); + WxOrder order = wxOrderService.getById(record.getOrderId(), appInfo.getTenantId()); + if(StringUtils.isBlank(order.getExtParam())){ + request.setRefundTotalAmount(order.getPayment()); + }else{ + List list = new ArrayList<>(); + TtPayRefundV2Request.OrderDetail orderDetail = new TtPayRefundV2Request.OrderDetail(); + String refund_total_amount = (String) order.getExpParamValue("refund_total_amount"); + orderDetail.setItemOrderId(refund_total_amount); + list.add(orderDetail); + request.setItemOrderDetail(list); + } + + TtPayRefundV2Result result1 = ttPayService.refundV2(request); + return new RefundAdapterResult(true, EnumRefundStatus.REFUND_REQ_SUCCESS.getCode(), "退款订单申请成功", result1); + + } catch (TtPayException e) { + e.printStackTrace(); + return new RefundAdapterResult(false,EnumRefundStatus.REFUND_REQ_FAIL.getCode(),e.getMessage(),null); } + +// CreateRefund createRefund = new CreateRefund(); +// createRefund.setAppId(appInfo.getAppId()); +// createRefund.setSalt(payAccount.getApiKey()); +// createRefund.setOutOrderNo(payOrder.getPayOrderNo()); +// createRefund.setOutRefundNo(String.valueOf(record.getId())); +// if (payType == EnumPayType.PAY_B_REFUND) { +// createRefund.setReason("B端商户退款"); +// } else if (payType == EnumPayType.PAY_ADMIN_REFUND) { +// createRefund.setReason("管理端商户退款"); +// } else if (payType == EnumPayType.PAY_AUTO_REFUND) { +// createRefund.setReason("超期自动退款"); +// } else if (payType == EnumPayType.PAY_C_REFUND){ +// createRefund.setReason("用户自己退款"); +// } +// createRefund.setRefundAmount(record.getRefundFee()); +// +// CreateRefundResult refund = DouYinPayHelper.createRefund(createRefund); +// if(refund.isSuccess()){ +// return new RefundAdapterResult(true, EnumRefundStatus.REFUND_REQ_SUCCESS.getCode(), "退款订单申请成功", refund); +// }else{ +// return new RefundAdapterResult(false,EnumRefundStatus.REFUND_REQ_FAIL.getCode(),refund.getMsg(),refund); +// } } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java index a3d0822b3..1b17bb57b 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java @@ -6,9 +6,13 @@ import com.alibaba.fastjson.JSONObject; import com.iformall.common.ErrorCode; import com.iformall.domain.po.*; import com.iformall.douyin.pay.DouYinPayHelper; +import com.iformall.douyin.pay.TtPayService; +import com.iformall.douyin.pay.exception.TtPayException; import com.iformall.douyin.pay.orderQuery.QuerySettleResult; import com.iformall.douyin.pay.preOrder.Settle; import com.iformall.douyin.pay.preOrder.SettleResult; +import com.iformall.douyin.payv2.request.ProfitSharingRequest; +import com.iformall.douyin.payv2.result.ProfitSharingResult; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.order.util.OrderHelper; @@ -18,7 +22,9 @@ import com.iformall.service.pay.service.share.entity.PayShareQueryResult; import com.iformall.service.pay.service.share.entity.PayShareResult; import com.iformall.service.pay.service.share.entity.ShareAccountResult; import com.iformall.service.pay.service.share.entity.ShareNotifyAdapterResult; +import com.iformall.utils.MaUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -30,6 +36,9 @@ import java.util.Map; @Service public class TtPayShareService extends PayShareBaseAdapterService{ + @Autowired + MaUtil maUtil; + @Override public Integer getSubsidyType() { return EnumMerchantSubsidyType.DOUYIN.getCode(); @@ -49,71 +58,122 @@ public class TtPayShareService extends PayShareBaseAdapterService{ @Override public PayShareResult noReciverShare(WxAppinfo appInfo,WxPayAccount payAccount,WxProfitSharingOrder record,String transcationId,Integer amount) { - Settle settle = new Settle(); - settle.setAppId(appInfo.getAppId()); - settle.setSalt(payAccount.getApiKey()); - settle.setOutSettleNo(record.getId().toString()); - settle.setOutOrderNo(record.getOrderId().toString()); - settle.setSettleDesc("自主完结分账"); -// if(order.getSettlementAmount() != null && order.getSettlementAmount().intValue() > 0){ -// List list = new ArrayList<>(); -// Map settleParams = new HashMap<>(); -// settleParams.put("merchant_uid",merchantUid); -// settleParams.put("amount",order.getPayment()-order.getSettlementAmount()); -// list.add(settleParams); -// settle.setSettleParams(JSON.toJSONString(list)); -// } - SettleResult settleResult = DouYinPayHelper.settle(settle); - - if (settleResult.isSuccess()) { - return new PayShareResult(true, null,"success", settleResult,settleResult.getSettleNo()); - }else{ - return new PayShareResult(false, EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode(),settleResult.getMsg(), null,null); + try { + TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount); + ProfitSharingRequest request = new ProfitSharingRequest(); + request.setOutOrderNo(record.getOrderId().toString()); + request.setOutSettleNo(record.getId().toString()); + request.setSettleDesc("自主完结分账"); + String settleId = ttPayService.getProfitSharingV2Service().profitSharing(request); + return new PayShareResult(true, null,"success", null,settleId); + } catch (TtPayException e) { + e.printStackTrace(); + return new PayShareResult(false, EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode(),e.getMessage(), null,null); } + + +// Settle settle = new Settle(); +// settle.setAppId(appInfo.getAppId()); +// settle.setSalt(payAccount.getApiKey()); +// settle.setOutSettleNo(record.getId().toString()); +// settle.setOutOrderNo(record.getOrderId().toString()); +// settle.setSettleDesc("自主完结分账"); +//// if(order.getSettlementAmount() != null && order.getSettlementAmount().intValue() > 0){ +//// List list = new ArrayList<>(); +//// Map settleParams = new HashMap<>(); +//// settleParams.put("merchant_uid",merchantUid); +//// settleParams.put("amount",order.getPayment()-order.getSettlementAmount()); +//// list.add(settleParams); +//// settle.setSettleParams(JSON.toJSONString(list)); +//// } +// SettleResult settleResult = DouYinPayHelper.settle(settle); +// +// if (settleResult.isSuccess()) { +// return new PayShareResult(true, null,"success", settleResult,settleResult.getSettleNo()); +// }else{ +// return new PayShareResult(false, EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode(),settleResult.getMsg(), null,null); +// } } @Override public PayShareResult haveReciversShare(WxAppinfo appInfo,WxPayAccount payAccount,WxProfitSharingOrder record,String transcationId,JSONArray receivers,EnumProfitSharingOrderType shareType ) throws MallinkException { - - Settle settle = new Settle(); - settle.setAppId(appInfo.getAppId()); - settle.setSalt(payAccount.getApiKey()); - settle.setOutSettleNo(record.getId().toString()); - settle.setOutOrderNo(record.getOrderId().toString()); - settle.setSettleDesc("自主完结分账"); - - List list = new ArrayList<>(); - for (Object o: receivers) { - JSONObject jo = (JSONObject) o; - Map settleParams = new HashMap<>(); - settleParams.put("merchant_uid",jo.getString("account")); - settleParams.put("amount",jo.getInteger("amount")); - list.add(settleParams); + try { + TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount); + ProfitSharingRequest request = new ProfitSharingRequest(); + request.setOutOrderNo(record.getOrderId().toString()); + request.setOutSettleNo(record.getId().toString()); + request.setSettleDesc("自主完结分账"); + List list = new ArrayList<>(); + for (Object o: receivers) { + JSONObject jo = (JSONObject) o; + Map settleParams = new HashMap<>(); + settleParams.put("merchant_uid",jo.getString("account")); + settleParams.put("amount",jo.getInteger("amount")); + list.add(settleParams); + } + request.setSettleParams(JSON.toJSONString(list)); + String settleId = ttPayService.getProfitSharingV2Service().profitSharing(request); + return new PayShareResult(true, null,"success", null,settleId); + } catch (TtPayException e) { + e.printStackTrace(); + return new PayShareResult(false, EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode(),e.getMessage(), null,null); } - settle.setSettleParams(JSON.toJSONString(list)); - SettleResult settleResult = DouYinPayHelper.settle(settle); - - if (settleResult.isSuccess()) { - return new PayShareResult(true, null,"success", settleResult,settleResult.getSettleNo()); - }else{ - return new PayShareResult(false, EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode(),settleResult.getMsg(), null,null); - } +// Settle settle = new Settle(); +// settle.setAppId(appInfo.getAppId()); +// settle.setSalt(payAccount.getApiKey()); +// settle.setOutSettleNo(record.getId().toString()); +// settle.setOutOrderNo(record.getOrderId().toString()); +// settle.setSettleDesc("自主完结分账"); +// +// List list = new ArrayList<>(); +// for (Object o: receivers) { +// JSONObject jo = (JSONObject) o; +// Map settleParams = new HashMap<>(); +// settleParams.put("merchant_uid",jo.getString("account")); +// settleParams.put("amount",jo.getInteger("amount")); +// list.add(settleParams); +// } +// +// settle.setSettleParams(JSON.toJSONString(list)); +// SettleResult settleResult = DouYinPayHelper.settle(settle); +// +// if (settleResult.isSuccess()) { +// return new PayShareResult(true, null,"success", settleResult,settleResult.getSettleNo()); +// }else{ +// return new PayShareResult(false, EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode(),settleResult.getMsg(), null,null); +// } } @Override public PayShareQueryResult shareQuery(WxAppinfo appInfo, WxPayAccount payAccount, WxProfitSharingOrder record) throws MallinkException { - - QuerySettleResult querySettleResult = DouYinPayHelper.settleQuery(appInfo.getAppId(), payAccount.getApiKey(), record.getId().toString(), null); - if(querySettleResult != null){ - if(querySettleResult.getSettleStatus().equals("SUCCESS")){ - return new PayShareQueryResult(true, 5, "success",querySettleResult, null); - }else if(querySettleResult.getSettleStatus().equals("FAIL")){ - return new PayShareQueryResult(true, 6, "fail",querySettleResult, null); + try { + TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount); + ProfitSharingResult profitSharingResult = ttPayService.getProfitSharingV2Service().getProfitSharingResult(record.getId().toString()); + if(profitSharingResult.isSuccess()){ + ProfitSharingResult.Receiver receiver = profitSharingResult.getData().get(0); + if("SUCCESS".equals(receiver.getSettleStatus())){ + return new PayShareQueryResult(true, 5, "success",receiver, null); + } else if("FAIL".equals(receiver.getSettleStatus())){ + return new PayShareQueryResult(true, 6, "fail",receiver, null); + } } + throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), profitSharingResult.getErrTips()); + } catch (TtPayException e) { + e.printStackTrace(); + throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), e.getMessage()); } - throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), querySettleResult.getMsg()); + +// QuerySettleResult querySettleResult = DouYinPayHelper.settleQuery(appInfo.getAppId(), payAccount.getApiKey(), record.getId().toString(), null); +// if(querySettleResult != null){ +// if(querySettleResult.getSettleStatus().equals("SUCCESS")){ +// return new PayShareQueryResult(true, 5, "success",querySettleResult, null); +// }else if(querySettleResult.getSettleStatus().equals("FAIL")){ +// return new PayShareQueryResult(true, 6, "fail",querySettleResult, null); +// } +// } +// throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), querySettleResult.getMsg()); } @Override From 4d458e0f1e89d1cebe1be02fafb54455eb4b6343 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 15 Jun 2022 14:22:29 +0800 Subject: [PATCH 64/97] //tt product --- .../controller/WxOrderController.java | 9 ++++--- .../controller/callback/TtPayController.java | 27 ++++++++++++++----- 2 files changed, 27 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 07bb123fe..f5201464b 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -172,12 +172,15 @@ public class WxOrderController extends BaseController { logger.info("支付2.0预下单回调---body{}"+body); JSONObject jsonObject = JSONObject.parseObject(body); - String app_id = jsonObject.getString("app_id"); - String open_id = jsonObject.getString("open_id"); + String msg = jsonObject.getString("msg"); + + JSONObject msgObject = JSONObject.parseObject(msg); + String app_id = msgObject.getString("app_id"); + String open_id = msgObject.getString("open_id"); //透传字段 Map couponMap = new HashMap<>(); try{ - String cp_extra = jsonObject.getString("cp_extra"); + String cp_extra = msgObject.getString("cp_extra"); if(StringUtils.isBlank(cp_extra)){ map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); map.put("err_tips","缺少透传字段"); diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java index ad61419aa..3d8c83f04 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java @@ -102,9 +102,10 @@ public class TtPayController extends BaseController { String appid; WxAppinfo appinfo; WxPayAccount payAccount; - String out_order_no; + Boolean is2_0 = false; if(StringUtils.isNotBlank(version) && "2.0".equals(version)){//支付2.0 回调 + is2_0 = true; String msgSignature = request.getHeader("Byte-Signature"); String timestamp = request.getHeader("Byte-Timestamp"); String nonce = request.getHeader("Byte-Nonce-Str"); @@ -126,7 +127,6 @@ public class TtPayController extends BaseController { } logger.info("抖音通知(2.0)-----{}签名效验成功"); - out_order_no = (String)pMap.get("out_order_no"); }else{ String msgSignature = (String) parameterMap.get("msg_signature"); @@ -150,11 +150,16 @@ public class TtPayController extends BaseController { } logger.info("抖音通知-----{}签名效验成功"); - out_order_no = (String) pMap.get("cp_orderno"); } if("payment".equals(type)){//支付回调 + String out_order_no; + if(is2_0){ + out_order_no = (String)pMap.get("out_order_no"); + }else{ + out_order_no = (String) pMap.get("cp_orderno"); + } String way = (String) pMap.get("way");//2-支付宝,1-微信 if (!StringUtils.isNotBlank(out_order_no)) { try { @@ -187,9 +192,17 @@ public class TtPayController extends BaseController { resultMap.put("err_no",0); resultMap.put("err_tips","success"); }else if("refund".equals(type)){//退款回调 - String cp_refundno = (String) pMap.get("cp_refundno"); - String status = (String) pMap.get("status"); - Integer refund_amount = (Integer) pMap.get("refund_amount"); + String cp_refundno,status; + Integer refund_amount; + if(is2_0){ + cp_refundno = (String) pMap.get("out_refund_no"); + status = (String) pMap.get("status"); + refund_amount = (Integer) pMap.get("refund_total_amount"); + }else{ + cp_refundno = (String) pMap.get("cp_refundno"); + status = (String) pMap.get("status"); + refund_amount = (Integer) pMap.get("refund_amount"); + } Map map = new HashMap<>(); map.put("appid",appid); @@ -211,6 +224,8 @@ public class TtPayController extends BaseController { resultMap.put("err_no",0); resultMap.put("err_tips","success"); + }else if("settle".equals(type)){ + } return resultMap; From d2bfb4bb85c420153c8f4aa1538a87019e6bee38 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 15 Jun 2022 14:59:54 +0800 Subject: [PATCH 65/97] //tt product --- .../java/com/iformall/controller/WxOrderController.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index f5201464b..f654011ea 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -16,6 +16,7 @@ import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.dto.PlatPushOrderSaveDto; import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.tt.TtCUser; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxOrderCouponPressVo; @@ -209,9 +210,11 @@ public class WxOrderController extends BaseController { map.put("err_tips","未找到支付配置"); return map; } + TenantEntity tenantEntity = new TenantEntity(); + tenantEntity.updateTenantInfo(appinfo); //验证用户 Long memberId = null; - TtCUser cuser = (TtCUser) cuserFactory.getCUserService(EnumAppPlat.TOUTIAO).getByOpenId(open_id, appinfo.getTenantId()); + TtCUser cuser = (TtCUser) cuserFactory.getCUserService(EnumAppPlat.TOUTIAO).getByOpenId(open_id, tenantEntity.getTenantId()); if(cuser != null && cuser.getUserId() != null){ memberId = cuser.getUserId(); } @@ -239,7 +242,7 @@ public class WxOrderController extends BaseController { list.add(dto); } - ResultData resultData = wxOrderService.platPushSaveOrder(false, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH, allExtParam.toString(), list, memberId, EnumPayWay.PAY_WAY_TT, getTenantInfo()); + ResultData resultData = wxOrderService.platPushSaveOrder(false, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH, allExtParam.toString(), list, memberId, EnumPayWay.PAY_WAY_TT, tenantEntity); if(resultData.code == 200){ WxComposeOrder order = (WxComposeOrder) resultData.data; Map data = new HashMap<>(); From 6c1bdef2d535fbc6c7527c26d46b643c63ec3960 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 15 Jun 2022 15:22:23 +0800 Subject: [PATCH 66/97] //tt product --- .../main/java/com/iformall/controller/WxOrderController.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index f654011ea..d82aabd81 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -243,6 +243,7 @@ public class WxOrderController extends BaseController { } ResultData resultData = wxOrderService.platPushSaveOrder(false, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH, allExtParam.toString(), list, memberId, EnumPayWay.PAY_WAY_TT, tenantEntity); + logger.info("resultData{}"+JSON.toJSONString(resultData)); if(resultData.code == 200){ WxComposeOrder order = (WxComposeOrder) resultData.data; Map data = new HashMap<>(); @@ -266,6 +267,7 @@ public class WxOrderController extends BaseController { map.put("data",data); map.put("err_no",0); map.put("err_tips",resultData.message); + logger.info("resultData{}"+JSON.toJSONString(map)); return map; }else{ map.put("err_no",resultData.code); From 86fe2a145a76965df73dc88749934fa93c9e0330 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 15 Jun 2022 15:39:34 +0800 Subject: [PATCH 67/97] //tt product --- .../main/java/com/iformall/controller/WxOrderController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index d82aabd81..c72340f87 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -247,7 +247,7 @@ public class WxOrderController extends BaseController { if(resultData.code == 200){ WxComposeOrder order = (WxComposeOrder) resultData.data; Map data = new HashMap<>(); - data.put("out_order_no",order.getMainOrderId()); + data.put("out_order_no",order.getMainOrderId().toString()); data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(order.getMainOrderId())); List> goodsValid = new ArrayList<>(); for (Long goodId:order.getCouponChannelMap().keySet()) { From 6796de4a9e3e2db7044d4d629393f348e57363f5 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 15 Jun 2022 15:58:51 +0800 Subject: [PATCH 68/97] //tt product --- .../java/com/iformall/controller/WxOrderController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index c72340f87..bc03e7146 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -250,10 +250,10 @@ public class WxOrderController extends BaseController { data.put("out_order_no",order.getMainOrderId().toString()); data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(order.getMainOrderId())); List> goodsValid = new ArrayList<>(); - for (Long goodId:order.getCouponChannelMap().keySet()) { + for (Long couponChannelId:order.getCouponChannelMap().keySet()) { Map goodsValidMap = new HashMap<>(); - goodsValidMap.put("goods_id",goodId.toString()); - WxCouponChannel couponChannel = order.getCouponChannelMap().get(goodId); + WxCouponChannel couponChannel = order.getCouponChannelMap().get(couponChannelId); + goodsValidMap.put("goods_id",couponChannel.getTtSpuId()); WxCoupon wxCoupon = order.getCouponMap().get(couponChannel.getCouponId()); if(EnumCouponValidType.BETWEEN_TWO_TIME.getCode().equals(wxCoupon.getValidType())){ goodsValidMap.put("valid_start_time",wxCoupon.getValidStartDate().getTime()); From d296abc574c69cf6ba7feb854d90f75b03d72800 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 15 Jun 2022 16:13:47 +0800 Subject: [PATCH 69/97] //tt product --- .../main/java/com/iformall/controller/WxOrderController.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index bc03e7146..62ad41661 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -248,6 +248,7 @@ public class WxOrderController extends BaseController { WxComposeOrder order = (WxComposeOrder) resultData.data; Map data = new HashMap<>(); data.put("out_order_no",order.getMainOrderId().toString()); + data.put("pay_expire_seconds",300); data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(order.getMainOrderId())); List> goodsValid = new ArrayList<>(); for (Long couponChannelId:order.getCouponChannelMap().keySet()) { @@ -264,6 +265,7 @@ public class WxOrderController extends BaseController { goodsValid.add(goodsValidMap); } data.put("order_valid_time",goodsValid); + map.put("data",data); map.put("err_no",0); map.put("err_tips",resultData.message); From e83b5328335c4fb80bcf6dad434ca7f3563e97e9 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 15 Jun 2022 18:27:55 +0800 Subject: [PATCH 70/97] //tt product --- .../controller/WxOrderController.java | 100 +++++++++--------- .../service/impl/WxPayOrderServiceImpl.java | 2 +- .../com/iformall/sms/aliyun/AliyunSMS.java | 2 +- 3 files changed, 52 insertions(+), 52 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 62ad41661..2b9dbacfe 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -160,6 +160,7 @@ public class WxOrderController extends BaseController { @ApiOperation(value = "抖音支付2.0与下单回调推送订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") @PostMapping("douyinPushOrder") public Map douyinPushOrder(HttpServletRequest request) { + Map map = new HashMap(); SignatureHeader header = new SignatureHeader(); @@ -171,60 +172,60 @@ public class WxOrderController extends BaseController { String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); logger.info("支付2.0预下单回调---body{}"+body); - - JSONObject jsonObject = JSONObject.parseObject(body); - String msg = jsonObject.getString("msg"); - - JSONObject msgObject = JSONObject.parseObject(msg); - String app_id = msgObject.getString("app_id"); - String open_id = msgObject.getString("open_id"); - //透传字段 - Map couponMap = new HashMap<>(); - try{ - String cp_extra = msgObject.getString("cp_extra"); - if(StringUtils.isBlank(cp_extra)){ + try { + JSONObject jsonObject = JSONObject.parseObject(body); + String msg = jsonObject.getString("msg"); + + JSONObject msgObject = JSONObject.parseObject(msg); + String app_id = msgObject.getString("app_id"); + String open_id = msgObject.getString("open_id"); + //透传字段 + Map couponMap = new HashMap<>(); + try{ + String cp_extra = msgObject.getString("cp_extra"); + if(StringUtils.isBlank(cp_extra)){ + map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); + map.put("err_tips","缺少透传字段"); + return map; + } + couponMap = JSONObject.parseObject(cp_extra, Map.class); + }catch(Exception e){ + } + if(couponMap.isEmpty()){ map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); - map.put("err_tips","缺少透传字段"); + map.put("err_tips","透传字段格式不正确"); + return map; + } + + //验证app + WxAppinfo appinfo = wxAppinfoService.getByAppId(app_id); + if(appinfo == null || !EnumAppPlat.TOUTIAO.getCode().equals(appinfo.getPlat()) + || !EnumAppType.C.getCode().equals(appinfo.getType())){ + map.put("err_no",ErrorCode.APP_ID_NOT_FOUND.getCode()); + map.put("err_tips",ErrorCode.APP_ID_NOT_FOUND.getMessage()); + return map; + } + WxPayAccount payAccount = wxPayAccountService.getById(appinfo.getPayId()); + if(payAccount == null){ + map.put("err_no",ErrorCode.API_KEY_NOT_FOUND.getCode()); + map.put("err_tips","未找到支付配置"); + return map; + } + TenantEntity tenantEntity = new TenantEntity(); + tenantEntity.updateTenantInfo(appinfo); + //验证用户 + Long memberId = null; + TtCUser cuser = (TtCUser) cuserFactory.getCUserService(EnumAppPlat.TOUTIAO).getByOpenId(open_id, tenantEntity.getTenantId()); + if(cuser != null && cuser.getUserId() != null){ + memberId = cuser.getUserId(); + } + if(memberId == null){ + map.put("err_no",ErrorCode.USER_NOT_MEMBER.getCode()); + map.put("err_tips",ErrorCode.USER_NOT_MEMBER.getMessage()); return map; } - couponMap = JSONObject.parseObject(cp_extra, Map.class); - }catch(Exception e){ - } - if(couponMap.isEmpty()){ - map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); - map.put("err_tips","透传字段格式不正确"); - return map; - } - //验证app - WxAppinfo appinfo = wxAppinfoService.getByAppId(app_id); - if(appinfo == null || !EnumAppPlat.TOUTIAO.getCode().equals(appinfo.getPlat()) - || !EnumAppType.C.getCode().equals(appinfo.getType())){ - map.put("err_no",ErrorCode.APP_ID_NOT_FOUND.getCode()); - map.put("err_tips",ErrorCode.APP_ID_NOT_FOUND.getMessage()); - return map; - } - WxPayAccount payAccount = wxPayAccountService.getById(appinfo.getPayId()); - if(payAccount == null){ - map.put("err_no",ErrorCode.API_KEY_NOT_FOUND.getCode()); - map.put("err_tips","未找到支付配置"); - return map; - } - TenantEntity tenantEntity = new TenantEntity(); - tenantEntity.updateTenantInfo(appinfo); - //验证用户 - Long memberId = null; - TtCUser cuser = (TtCUser) cuserFactory.getCUserService(EnumAppPlat.TOUTIAO).getByOpenId(open_id, tenantEntity.getTenantId()); - if(cuser != null && cuser.getUserId() != null){ - memberId = cuser.getUserId(); - } - if(memberId == null){ - map.put("err_no",ErrorCode.USER_NOT_MEMBER.getCode()); - map.put("err_tips",ErrorCode.USER_NOT_MEMBER.getMessage()); - return map; - } - try { TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); CreateOrderCallback createOrderCallback = ttPayService.parseOrderNotifyV2Result(body, header); JSONObject allExtParam = new JSONObject(); @@ -383,7 +384,6 @@ public class WxOrderController extends BaseController { if (null != payOrder) { WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId()); //查询微信订单状态并更新 - boolean hasCompleted = wxPayOrderService.hasCompleted(composeOrder,payOrder); if (!hasCompleted) { WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor()).getPlat()); 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 709915e15..c99bd45e6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -1463,7 +1463,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { }else if(list != null && list.size() > 1){ throw new MallinkException(ErrorCode.PAY_ORDER_ERROR); } - throw new MallinkException(ErrorCode.PAY_ORDER_NOT_FOUND); + return null; } @Override diff --git a/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java b/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java index fd313e741..aa78f7516 100644 --- a/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java +++ b/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java @@ -317,7 +317,7 @@ public class AliyunSMS implements SMSExcutor { e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); } QuerySmsTemplateRequest request = new QuerySmsTemplateRequest(); - request.setTemplateCode("SMS_239312983"); + request.setTemplateCode("SMS_243451989"); DefaultAcsClient acsClient = new DefaultAcsClient(profile); QuerySmsTemplateResponse response = null; From caa63e7c7ef85dcd09bf76b88f0d23091c66248d Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 15 Jun 2022 20:53:06 +0800 Subject: [PATCH 71/97] //tt product --- .../controller/WxOrderController.java | 130 +++++++++--------- .../controller/callback/TtPayController.java | 5 - .../service/impl/WxPayOrderServiceImpl.java | 111 ++------------- 3 files changed, 73 insertions(+), 173 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 2b9dbacfe..756a6e378 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -249,7 +249,7 @@ public class WxOrderController extends BaseController { WxComposeOrder order = (WxComposeOrder) resultData.data; Map data = new HashMap<>(); data.put("out_order_no",order.getMainOrderId().toString()); - data.put("pay_expire_seconds",300); +// data.put("pay_expire_seconds",300); data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(order.getMainOrderId())); List> goodsValid = new ArrayList<>(); for (Long couponChannelId:order.getCouponChannelMap().keySet()) { @@ -291,70 +291,70 @@ public class WxOrderController extends BaseController { } } - @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 orderIdStr = (String) paramMap.get("composeOrderId"); - if (StringUtils.isBlank(orderIdStr)) { - logger.info("orderId不能为空: " + paramMap.toString()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); - } - Long orderId = 0L; - try { - orderId = Long.valueOf(orderIdStr); - } catch (NumberFormatException e) { - logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); - } - - WxBatchOrder batchOrder = wxOrderService.getWxBatchOrder(getTenantInfo(),orderId); - if(batchOrder == null){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "未找到订单"); - } - - WxPayOrder payOrder = new WxPayOrder(); - payOrder.setOrderId(orderId); - payOrder.updateTenantInfo(getTenantInfo()); - payOrder.setPayVendor(getPayWay().getCode()); - payOrder.setComposeOrder(batchOrder.getOrderType()); - - try { - WxPayOrder byObj = wxPayOrderService.getByObj(payOrder); - if(byObj != null){ - return new ResultData(Result.SUCCESS, "支付状态更新成功"); - }else{ - - - WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId()); - - WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor()).getPlat()); - //WxCUser user = getUser(); - //WxAppinfo appInfo = getAppInfo(user.getAppId()); - if (null == appInfo) { - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "当前支付类型["+payOrder.getPayVendor()+"]找不到C端appInfo"); - } - WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); - try { - WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, composeOrder,appInfo, payAccount, IdWorker.get(),false); - if (null != wo) { - return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); - } - }catch(MallinkException e) { - //已经同步了微信的支付状态,表示已经更新 - return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); - } - - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "查询微信订单支付状态失败,请稍后!"); - } - } catch (MallinkException e) { - 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(),e); - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); - } - } +// @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 orderIdStr = (String) paramMap.get("composeOrderId"); +// if (StringUtils.isBlank(orderIdStr)) { +// logger.info("orderId不能为空: " + paramMap.toString()); +// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); +// } +// Long orderId = 0L; +// try { +// orderId = Long.valueOf(orderIdStr); +// } catch (NumberFormatException e) { +// logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); +// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); +// } +// +// WxBatchOrder batchOrder = wxOrderService.getWxBatchOrder(getTenantInfo(),orderId); +// if(batchOrder == null){ +// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "未找到订单"); +// } +// +// WxPayOrder payOrder = new WxPayOrder(); +// payOrder.setOrderId(orderId); +// payOrder.updateTenantInfo(getTenantInfo()); +// payOrder.setPayVendor(getPayWay().getCode()); +// payOrder.setComposeOrder(batchOrder.getOrderType()); +// +// try { +// WxPayOrder byObj = wxPayOrderService.getByObj(payOrder); +// if(byObj != null){ +// return new ResultData(Result.SUCCESS, "支付状态更新成功"); +// }else{ +// +// +// WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId()); +// +// WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor()).getPlat()); +// //WxCUser user = getUser(); +// //WxAppinfo appInfo = getAppInfo(user.getAppId()); +// if (null == appInfo) { +// return new ResultData(ErrorCode.PAY_ORDER_ERROR, "当前支付类型["+payOrder.getPayVendor()+"]找不到C端appInfo"); +// } +// WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); +// try { +// WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, composeOrder,appInfo, payAccount, IdWorker.get(),false); +// if (null != wo) { +// return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); +// } +// }catch(MallinkException e) { +// //已经同步了微信的支付状态,表示已经更新 +// return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); +// } +// +// return new ResultData(ErrorCode.PAY_ORDER_ERROR, "查询微信订单支付状态失败,请稍后!"); +// } +// } catch (MallinkException e) { +// 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(),e); +// return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); +// } +// } diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java index 3d8c83f04..5a7055528 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java @@ -173,11 +173,6 @@ public class TtPayController extends BaseController { if(batchOrder == null){ logger.error("未找到订单"+orderId); } - wxpayOrder = new WxPayOrder(); - wxpayOrder.setOrderId(orderId); - wxpayOrder.updateTenantInfo(tenantEntity); - wxpayOrder.setPayVendor(batchOrder.getPayVendor()); - wxpayOrder.setComposeOrder(batchOrder.getOrderType()); } PayQueryAdapterResult queryResult = payServiceFactory.getPayAdapterService(wxpayOrder.getPayVendor()).queryPayStatus(wxpayOrder, appinfo, payAccount); if (EnumPayStatus.PAY_STATUS_SUCCESS.getCode() == queryResult.getCode()) { 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 c99bd45e6..be1d203f5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -131,105 +131,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { @Override public void handleSuccessOrder(WxPayOrder oldRecord,WxComposeOrder composeOrder,PayQueryAdapterResult queryResult,boolean isScheduleTask,boolean isOneChildOrder) { Date curDate = new Date(); - if(EnumPayWay.PAY_WAY_TT.getCode().equals(oldRecord.getPayVendor()) && oldRecord.getId() == null){ - EnumPayShare isShare = EnumPayShare.NO; - WxAppinfo appInfo = wxAppinfoService.getCAppInfo(oldRecord, EnumPayWay.getEnum(oldRecord.getPayVendor()).getPlat()); - WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); - if (payAccount.checkShare()) { - isShare = EnumPayShare.YES; - } - - TtPayOrderQueryV2Result result = (TtPayOrderQueryV2Result) queryResult.getData(); - - WxBatchOrder batchOrder = wxBatchOrderMapper.selectById(oldRecord.getOrderId(), oldRecord.getTenantId()); - String open_id = (String) batchOrder.getExpParamValue("open_id"); - - oldRecord.setId(oldRecord.getOrderId()); - oldRecord.setOpenId(open_id); - oldRecord.setComposeOrder(batchOrder.getOrderType()); - - oldRecord.setCreateTime(curDate); - oldRecord.setUpdateTime(curDate); - oldRecord.setPayTimeStart(batchOrder.getCreateDate()); - - oldRecord.setPayOrderNo(result.getOutOrderNo()); - oldRecord.setPayAmount(result.getTotalFee()); - - oldRecord.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); - oldRecord.setTtPayWay(result.getPayChannel()); - - String timEndStr = queryResult.getEndTimeStr(); - Date timeEnd = null; - try { - timeEnd = Utility.getDateFromString(timEndStr); - } catch (ParseException e) { - logger.error("解析timeEnd失败"); - timeEnd = new Date(); - } - oldRecord.setPayTimeEnd(timeEnd); - oldRecord.setPayEndFrom(EnumPayEndFrom.QUERY.getCode()); - oldRecord.setTransactionId(result.getPaymentOrderId()); - - oldRecord.setShare(isShare.getCode()); - if (isShare == EnumPayShare.YES) { - PayShareAdapterService payShareServie = payServiceFactory.getPayShareAdapterService(oldRecord.getPayVendor()); - - PayShareCalculateAmount recordShareAmount = payShareServie.calculateAmount(oldRecord.getPayAmount(), payAccount); - // 分账金额 - Integer share_amount = recordShareAmount.getShareAmount(); - oldRecord.setShareAmount(share_amount); - oldRecord.setRateAmount(recordShareAmount.getRateAmount()); - //设置子订单分账金额 - 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) { - PayShareCalculateAmount oShareAmount = payShareServie.calculateAmount(o.getPayment(), payAccount); - Integer orderShareAmount = oShareAmount.getShareAmount(); - Integer orderRateAmount = oShareAmount.getRateAmount(); - childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(o.getPayment(), orderShareAmount, orderRateAmount)); - } - oldRecord.setChildOrderShare(JSON.toJSONString(childShares)); - } - } - - int sqlRow = wxPayOrderMapper.insert(oldRecord); - - WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); - if (!EnumComposeOrder.isSingle(composeOrder.getComposeOrderType())) { - //如果是组合订单的单独处理。如定时处理的单个订单 - if (isOneChildOrder) { - //处理其他信息 - try { - proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, queryResult.getTransactionId(),isScheduleTask); - }catch(Exception e) { - throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); - } - }else { - List orderList = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrders(composeOrder, oldRecord.getTenantId()); - for (WxOrder o : orderList) { - try { - proxy.handleOrderPaySingleOrderSuccess(o,oldRecord, queryResult.getTransactionId(), isScheduleTask); - }catch(Exception e) { - logger.error("handleSuccessOrder error.",e); - } - } - } - }else { - //处理其他信息 - try { - proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, queryResult.getTransactionId(),isScheduleTask); - }catch(Exception e) { - throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); - } - } - - - - - - }else if(oldRecord.getId() != null && oldRecord.getPayOrderStatus() != EnumPayStatus.PAY_STATUS_SUCCESS.getCode()){ + if(oldRecord.getPayOrderStatus() != EnumPayStatus.PAY_STATUS_SUCCESS.getCode()){ WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); //因为此处是处理订单支付成功了但是订单状态为未支付成功的异常状态,库存不应该再扣减 //更新wxPayOrder @@ -468,11 +370,14 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } }else { { + // 3.1 创建支付订单 - Long id = idworker.nextId(); - if (null == id || id.longValue() <=0) { - throw new MallinkException(ErrorCode.PAY_ORDER_PAYING.getCode(),"订单支付流水号生成失败!new payorder:"+record.getOrderId()+",id:"+id); - } +// Long id = idworker.nextId(); +// if (null == id || id.longValue() <=0) { +// throw new MallinkException(ErrorCode.PAY_ORDER_PAYING.getCode(),"订单支付流水号生成失败!new payorder:"+record.getOrderId()+",id:"+id); +// } + + Long id = record.getOrderId();//支付订单号=订单号 record.setId(id); record.updateTenantInfo(composeOrder); From ee244aa8865d3b9e5a2a8efdd28165fd6ba7794d Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 15 Jun 2022 21:24:24 +0800 Subject: [PATCH 72/97] //tt product --- .../controller/WxPayOrderController.java | 31 +++++++++++++++++-- .../iformall/service/WxPayOrderService.java | 2 +- .../service/impl/WxPayOrderServiceImpl.java | 15 +++++++-- 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index b1ff51f35..71e52a096 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -100,10 +100,11 @@ public class WxPayOrderController extends BaseController { return new ResultData(ErrorCode.USER_IS_NOT_MEMBER.getCode(), "暂未成为会员,请授权手机号"); } - return _create(orderIdStr,composeOrderType,user.getUserId(),getPayWay(),user.getAppId(),new PayExtraParam("openId",user.getOpenId()),request); + return _create(orderIdStr,composeOrderType,user.getUserId(),getPayWay(),user.getAppId(),new PayExtraParam("openId",user.getOpenId()),true,request); } - private ResultData _create(String orderIdStr,String composeOrderType,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,boolean isCreatePay,HttpServletRequest request) { WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(userId,getFinalTenantId()); if ( null == wxCUserBasicInfo) { logger.error("会员用户不存在."+userId); @@ -128,7 +129,7 @@ public class WxPayOrderController extends BaseController { try { record.setIp(IPUtil.getIpAddr(request)); record.setComposeOrder(Integer.parseInt(composeOrderType)); - return wxPayOrderService.createPayOrder(appInfo, wxCUserBasicInfo, record, payWay,parm); + return wxPayOrderService.createPayOrder(appInfo, wxCUserBasicInfo, record, payWay,parm,isCreatePay); } catch (MallinkException e) { logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage(),e); return new ResultData(e.getErrorCode(), e.getMessage()); @@ -138,6 +139,30 @@ public class WxPayOrderController extends BaseController { } } + @RequestMapping(value = "/ttcreatev2", method = RequestMethod.POST) + public ResultData _ttcreatev2(@RequestBody Map paramMap, HttpServletRequest request) throws Exception { + logger.info("/api/pay/create" + paramMap.toString()); + String orderIdStr = paramMap.get("orderId"); + if (StringUtils.isBlank(orderIdStr)) { + logger.info("orderId不能为空: " + paramMap.toString()); + 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不能为空"); + } + + CUser user = getCUser(); + if (!user.basicInfoIs()) { + logger.error("暂未成为会员,请授权手机号"); + return new ResultData(ErrorCode.USER_IS_NOT_MEMBER.getCode(), "暂未成为会员,请授权手机号"); + } + + return _create(orderIdStr,composeOrderType,user.getUserId(),getPayWay(),user.getAppId(),new PayExtraParam("openId",user.getOpenId()),false,request); + } + @ApiOperation(value = "更新支付订单状态", notes = "{\"payOrderId\":\"string\",\"composeOrderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") @PostMapping("/updatePayOrder") public ResultData updatePayOrder(@RequestBody Map paramMap) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java index 2d8b13c63..71a604958 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java @@ -34,7 +34,7 @@ public interface WxPayOrderService { * @param payWay * @return */ - ResultData createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user, WxPayOrder record, EnumPayWay payWay,PayExtraParam params); + ResultData createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user, WxPayOrder record, EnumPayWay payWay,PayExtraParam params,boolean isCreatePay); /** * 刷卡支付订单 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 be1d203f5..cab2b7a77 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -229,7 +229,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } @Override - public ResultData createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user, WxPayOrder record, EnumPayWay payWay,PayExtraParam params) { + public ResultData createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user, WxPayOrder record, EnumPayWay payWay,PayExtraParam params,boolean isCreatePay) { /* * 如果是组合订单(非拼团、砍价),则结算按照主订单来结算。 * //如果是组合订单,则wxPayOrder对应的是WxcomposeOrder.为了兼容之前的,需要把支付相关信息也保存到子订单里面去 @@ -248,7 +248,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { lastCoupon = checkSinglePayOrder(o, user, payWay); } String productName = orderAdapterService.getPayProductName(lastCoupon); - PayAdapterResult payResult = createPayOrder(appInfo, user, record,composeOrder,productName, payWay, params); + PayAdapterResult payResult = createPayOrder(appInfo, user, record,composeOrder,productName, payWay, params,isCreatePay); if (payResult.isSuccess()) { // wxOrderService.sendInsideOrderPushMsg(composeOrder,composeOrder.getMainOrderId()); return new ResultData(Result.SUCCESS,"创建支付单成功",payResult.getData()); @@ -323,7 +323,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { return wxCoupon; } - private PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder,String productName, EnumPayWay payWay,PayExtraParam params) { + private PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder, + String productName, EnumPayWay payWay,PayExtraParam params,boolean isCreatePay) { IdWorker idworker = IdWorker.get(); EnumPayShare isShare = EnumPayShare.NO; @@ -424,6 +425,14 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } } + if(!isCreatePay){ + PayAdapterResult par = new PayAdapterResult(); + par.setSuccess(true); + Map map = new HashMap<>(); + map.put("outOrderNo",record.getOrderId().toString()); + par.setData(map); + return par; + } logger.debug("wxPayRecord md5 before:"+record.toString()); String beforemd5 = HashUtil.md5(record.toString()); From 302af584149c6f9e368f5050ccd5a7e87a604840 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 10:02:30 +0800 Subject: [PATCH 73/97] //tt product --- .../controller/WxOrderController.java | 30 +++++++++---------- .../douyin/payv2/result/BaseTtPayResult.java | 2 -- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 756a6e378..4c9de54eb 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -251,21 +251,21 @@ public class WxOrderController extends BaseController { data.put("out_order_no",order.getMainOrderId().toString()); // data.put("pay_expire_seconds",300); data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(order.getMainOrderId())); - List> goodsValid = new ArrayList<>(); - for (Long couponChannelId:order.getCouponChannelMap().keySet()) { - Map goodsValidMap = new HashMap<>(); - WxCouponChannel couponChannel = order.getCouponChannelMap().get(couponChannelId); - goodsValidMap.put("goods_id",couponChannel.getTtSpuId()); - WxCoupon wxCoupon = order.getCouponMap().get(couponChannel.getCouponId()); - if(EnumCouponValidType.BETWEEN_TWO_TIME.getCode().equals(wxCoupon.getValidType())){ - goodsValidMap.put("valid_start_time",wxCoupon.getValidStartDate().getTime()); - goodsValidMap.put("valid_end_time",wxCoupon.getValidEndDate().getTime()); - }else{ - goodsValidMap.put("valid_duration",(long)wxCoupon.getValidDays()*24*3600*1000); - } - goodsValid.add(goodsValidMap); - } - data.put("order_valid_time",goodsValid); +// List> goodsValid = new ArrayList<>(); +// for (Long couponChannelId:order.getCouponChannelMap().keySet()) { +// Map goodsValidMap = new HashMap<>(); +// WxCouponChannel couponChannel = order.getCouponChannelMap().get(couponChannelId); +// goodsValidMap.put("goods_id",couponChannel.getTtSpuId()); +// WxCoupon wxCoupon = order.getCouponMap().get(couponChannel.getCouponId()); +// if(EnumCouponValidType.BETWEEN_TWO_TIME.getCode().equals(wxCoupon.getValidType())){ +// goodsValidMap.put("valid_start_time",wxCoupon.getValidStartDate().getTime()); +// goodsValidMap.put("valid_end_time",wxCoupon.getValidEndDate().getTime()); +// }else{ +// goodsValidMap.put("valid_duration",(long)wxCoupon.getValidDays()*24*3600*1000); +// } +// goodsValid.add(goodsValidMap); +// } +// data.put("order_valid_time",goodsValid); map.put("data",data); map.put("err_no",0); diff --git a/mallinkService/src/main/java/com/iformall/douyin/payv2/result/BaseTtPayResult.java b/mallinkService/src/main/java/com/iformall/douyin/payv2/result/BaseTtPayResult.java index 06ed10e24..ecb3395a3 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/payv2/result/BaseTtPayResult.java +++ b/mallinkService/src/main/java/com/iformall/douyin/payv2/result/BaseTtPayResult.java @@ -4,8 +4,6 @@ import com.google.gson.annotations.SerializedName; import lombok.Data; import lombok.NoArgsConstructor; import me.chanjar.weixin.common.util.json.WxGsonBuilder; -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.ss.formula.functions.T; import org.slf4j.Logger; import org.slf4j.LoggerFactory; From cccec8df2d40d1daf50e0f10d6adfa94fdb8b072 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 10:59:35 +0800 Subject: [PATCH 74/97] //tt product --- .../iformall/service/WxPayOrderService.java | 3 +++ .../service/impl/WxOrderServiceImpl.java | 25 ++++++++++++++++--- .../service/impl/WxPayOrderServiceImpl.java | 4 +-- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java index 71a604958..1a3935099 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java @@ -36,6 +36,9 @@ public interface WxPayOrderService { */ ResultData createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user, WxPayOrder record, EnumPayWay payWay,PayExtraParam params,boolean isCreatePay); + PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder, + String productName, EnumPayWay payWay,PayExtraParam params,boolean isCreatePay); + /** * 刷卡支付订单 * 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 1defb8e17..a69bb5a7c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -34,6 +34,8 @@ 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.entity.PayAdapterResult; import com.iformall.utils.*; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -914,7 +916,7 @@ public class WxOrderServiceImpl implements WxOrderService { * * @param user * @param coupon - * @param couponIdStr + * @param */ @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public StockReduceResult stockReduce(boolean allowUnPayOrder,WxCUserBasicInfo user, WxCoupon coupon, WxCouponChannel couponChannel,int number) { @@ -2770,7 +2772,8 @@ public class WxOrderServiceImpl implements WxOrderService { RedisTemplate cUserBasicInfoRedisTemplate; @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxComposeOrder savePlatPushOrderForCoupon(TenantEntity tenantEntity,boolean allowUnPayOrder,EnumComposeOrder composeOrderType,WxCUserBasicInfo user,String allExtParam,List platPushOrderList,EnumPayWay payWay) { + public WxComposeOrder savePlatPushOrderForCoupon(TenantEntity tenantEntity,boolean allowUnPayOrder,EnumComposeOrder composeOrderType, + WxCUserBasicInfo user,String allExtParam,List platPushOrderList,EnumPayWay payWay) throws Exception { WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); // 防止同一用户重复下单,1秒内 String key = new StringBuilder().append("savePlatPushOrder:").append(user.getId()).toString(); @@ -2786,9 +2789,11 @@ public class WxOrderServiceImpl implements WxOrderService { WxComposeOrder composeOrder = orderAdapterService.createDBMainOrderByPushOrder(tenantEntity,user, allExtParam,platPushOrderList, payWay); Date orderDate = new Date(); WxOrder lastOrder = null; + WxCoupon lastCoupon = null; for (int i = 0 ; i < platPushOrderList.size(); i ++) { PlatPushOrderSaveDto orderdto = platPushOrderList.get(i); - + lastCoupon = orderdto.getWxCoupon(); + Map couponChannelMap = composeOrder.getCouponChannelMap(); Long couponChannelId = orderdto.getCouponChannelId(); WxCouponChannel couponChannel = couponChannelMap.get(couponChannelId); @@ -2824,7 +2829,19 @@ public class WxOrderServiceImpl implements WxOrderService { if (EnumComposeOrder.isSingle(composeOrderType.getCode())) { composeOrder.setSingleOrder(lastOrder); } - return composeOrder; + WxPayOrder record = new WxPayOrder(); + record.updateTenantInfo(tenantEntity); + record.setOrderId(composeOrder.getMainOrderId()); + record.setComposeOrder(composeOrder.getComposeOrderType()); + record.setOpenId((String) composeOrder.getMainOrder().getExpParamValue("open_id")); + String productName = orderAdapterService.getPayProductName(lastCoupon); + WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity, payWay.getPlat()); + PayAdapterResult payResult = wxPayOrderService.createPayOrder(cAppInfo, user, record,composeOrder,productName, payWay, new PayExtraParam("openId",record.getOpenId()),false); + if(payResult.isSuccess()){ + return composeOrder; + }else{ + throw new Exception(payResult.getMsg()); + } } 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 cab2b7a77..47683c3ff 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -322,8 +322,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } return wxCoupon; } - - private PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder, + @Override + public PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder, String productName, EnumPayWay payWay,PayExtraParam params,boolean isCreatePay) { IdWorker idworker = IdWorker.get(); EnumPayShare isShare = EnumPayShare.NO; From 089cdc964c92911f0f3ffaaffac63340070e161d Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 11:08:37 +0800 Subject: [PATCH 75/97] //tt product --- .../service/order/impl/batch/BaseBatchOrderAdapterService.java | 1 + 1 file changed, 1 insertion(+) 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 9ce1d8b0d..4b5517a55 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 @@ -141,6 +141,7 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic order.setExtParam(allExtParam); wxBatchOrderMapper.insert(order); WxComposeOrder composeOrder = new WxComposeOrder(order.getId(), composeOrderType.getCode(), payment); + composeOrder.setMainOrder(order); composeOrder.updateTenantInfo(tenantEntity); if (null != couponChannelMap) { composeOrder.setCouponChannelMap(couponChannelMap); From 8d0204a7f8015a1896335b87200cb2ac2e324456 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 12:24:56 +0800 Subject: [PATCH 76/97] //tt product --- .../main/java/com/iformall/controller/WxOrderController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 4c9de54eb..18e0e4fbc 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -135,7 +135,7 @@ public class WxOrderController extends BaseController { } catch (Exception e) { return new ResultData(Result.ERROR,e.getMessage()); } - return wxOrderService.composeSaveOrder(false,EnumComposeOrder.ONE_NUMBER_ORDER_BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); + return wxOrderService.composeSaveOrder(false,EnumComposeOrder.ONE_NUMBER_ORDER_BATCH,orderSaveDto,memberId,getPayWay(),getTenantInfo()); } @ApiOperation(value = "单个券单个订单,卡(分账导致无法批量下单)、拼团,砍价用", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") @@ -243,7 +243,7 @@ public class WxOrderController extends BaseController { list.add(dto); } - ResultData resultData = wxOrderService.platPushSaveOrder(false, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH, allExtParam.toString(), list, memberId, EnumPayWay.PAY_WAY_TT, tenantEntity); + ResultData resultData = wxOrderService.platPushSaveOrder(true, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH, allExtParam.toString(), list, memberId, EnumPayWay.PAY_WAY_TT, tenantEntity); logger.info("resultData{}"+JSON.toJSONString(resultData)); if(resultData.code == 200){ WxComposeOrder order = (WxComposeOrder) resultData.data; From a69176a60a4da006b74dccb4de9a2b67bb7693ac Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 13:32:58 +0800 Subject: [PATCH 77/97] //tt product --- .../com/iformall/controller/callback/JinMaoController.java | 2 +- .../com/iformall/douyin/payv2/auth/TtPayCredentials.java | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/JinMaoController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/JinMaoController.java index 878632ae6..810d6a7f8 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/JinMaoController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/JinMaoController.java @@ -219,7 +219,7 @@ public class JinMaoController extends BaseController { try { inputStream = request.getInputStream(); String paramStr = IOUtils.toString(inputStream, "utf-8"); - logger.info("dfh heartBeat: {}",paramStr); +// logger.info("dfh heartBeat: {}",paramStr); if (StringUtils.isBlank(paramStr)) { generateHeartBeatResult(response,"unvalid param", "参数不能为空paramStr",currentTime); return ; diff --git a/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java b/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java index 73c7485db..4d557d715 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java +++ b/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java @@ -51,7 +51,7 @@ public class TtPayCredentials implements Credentials { long timestamp = generateTimestamp(); String message = buildMessage(nonceStr, timestamp, request); - log.debug("authorization message=[{}]", message); + log.info("authorization message=[{}]", message); Signer.SignatureResult signature = signer.sign(message.getBytes(StandardCharsets.UTF_8)); @@ -60,7 +60,9 @@ public class TtPayCredentials implements Credentials { + "timestamp=\"" + timestamp + "\"," + "key_version=\"" + signature.certificateSerialNumber + "\"," + "signature=\"" + signature.sign + "\""; - log.debug("authorization token=[{}]", token); + log.info("authorization token=[{}]", token); + + System.out.println("token---------------------------"+token); return token; } From ed2c9897e84d90579d14c34509951bbc17377f91 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 13:43:41 +0800 Subject: [PATCH 78/97] //tt product --- .../com/iformall/schedule/SharingOrderResultSchedule.java | 4 ++-- .../java/com/iformall/douyin/payv2/auth/TtPayCredentials.java | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderResultSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderResultSchedule.java index 953dc805f..6f14872c2 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderResultSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderResultSchedule.java @@ -35,8 +35,8 @@ public class SharingOrderResultSchedule { } @Async - @Scheduled(cron = "0 15 0 * * ?") // 每天凌晨3:00更新分账结果 - //@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 +// @Scheduled(cron = "0 15 0 * * ?") // 每天凌晨3:00更新分账结果 + @Scheduled(cron = "*/30 * * * * ?") // 测试10秒中一次 public void sharingOrderResultSchedule() { List malls = getMalls(); for (WxMall mall: malls) { diff --git a/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java b/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java index 4d557d715..fb5ecf854 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java +++ b/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java @@ -53,6 +53,8 @@ public class TtPayCredentials implements Credentials { String message = buildMessage(nonceStr, timestamp, request); log.info("authorization message=[{}]", message); + System.out.println("message---------------------------"+message); + Signer.SignatureResult signature = signer.sign(message.getBytes(StandardCharsets.UTF_8)); String token = "appid=\"" + getAppId() + "\"," From 9670c9b5a64da8486f8fc66dc2ef1626a2d26fc0 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 15:22:16 +0800 Subject: [PATCH 79/97] //tt product --- .../java/com/iformall/schedule/SharingOrderRedoSchedule.java | 4 ++-- .../com/iformall/schedule/SharingOrderResultSchedule.java | 4 ++-- .../java/com/iformall/douyin/payv2/auth/TtPayCredentials.java | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java index df5236caf..6ab6e7c0f 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java @@ -42,8 +42,8 @@ public class SharingOrderRedoSchedule { } @Async - @Scheduled(cron = "0 0 2 * * ?") // 每天凌晨02:00分账重试 -// @Scheduled(cron = "0 0 0/1 * * ?") // 测试 +// @Scheduled(cron = "0 0 2 * * ?") // 每天凌晨02:00分账重试 + @Scheduled(cron = "0 0/10 * * * ?") // 测试 public void sharingOrderResultSchedule() { List malls = getMalls(); for (WxMall mall: malls) { diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderResultSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderResultSchedule.java index 6f14872c2..db80d01fd 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderResultSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderResultSchedule.java @@ -35,8 +35,8 @@ public class SharingOrderResultSchedule { } @Async -// @Scheduled(cron = "0 15 0 * * ?") // 每天凌晨3:00更新分账结果 - @Scheduled(cron = "*/30 * * * * ?") // 测试10秒中一次 + @Scheduled(cron = "0 15 0 * * ?") // 每天凌晨3:00更新分账结果 +// @Scheduled(cron = "*/30 * * * * ?") // 测试10秒中一次 public void sharingOrderResultSchedule() { List malls = getMalls(); for (WxMall mall: malls) { diff --git a/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java b/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java index fb5ecf854..dca5f3295 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java +++ b/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java @@ -53,7 +53,7 @@ public class TtPayCredentials implements Credentials { String message = buildMessage(nonceStr, timestamp, request); log.info("authorization message=[{}]", message); - System.out.println("message---------------------------"+message); +// System.out.println("message---------------------------"+message); Signer.SignatureResult signature = signer.sign(message.getBytes(StandardCharsets.UTF_8)); @@ -64,7 +64,7 @@ public class TtPayCredentials implements Credentials { + "signature=\"" + signature.sign + "\""; log.info("authorization token=[{}]", token); - System.out.println("token---------------------------"+token); +// System.out.println("token---------------------------"+token); return token; } From aa80e671a3974a251b20048a7890640795d0ea70 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 15:58:08 +0800 Subject: [PATCH 80/97] //tt product --- .../main/java/com/iformall/service/impl/WxOrderServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) 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 a69bb5a7c..bf88aa168 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2804,6 +2804,7 @@ public class WxOrderServiceImpl implements WxOrderService { if (isOneNumberOneOrder) { JSONArray jsonArray = new JSONArray(); if(StringUtils.isNotBlank(orderdto.getExtParam())){ + logger.info("orderdto.getExtParam()---------------------------"+orderdto.getExtParam()); try{ jsonArray = JSONArray.parseArray(orderdto.getExtParam()); }catch(Exception e){ @@ -2815,6 +2816,7 @@ public class WxOrderServiceImpl implements WxOrderService { if(jsonArray != null && !jsonArray.isEmpty()){ extParam = jsonArray.get(j).toString(); } + logger.info("extParam---------------------------"+extParam); lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), 1, orderdto.isPress(),orderdto.getOrderGroupId(),orderdto.getFormId(),orderdto.getShippingType(),orderdto.getAddress(),extParam, orderdto.getWxCouponChannel(), payWay); From e78a414759d8abf73d699e2ed2c73c65bca08738 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 16:19:47 +0800 Subject: [PATCH 81/97] //tt product --- .../main/java/com/iformall/controller/WxOrderController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 18e0e4fbc..216c43cbb 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -239,11 +239,11 @@ public class WxOrderController extends BaseController { PlatPushOrderSaveDto dto = new PlatPushOrderSaveDto(); dto.setCouponChannelId(Long.parseLong(couponMap.get(good.getGoodsId()))); dto.setCount(good.getQuantity()); - dto.setExtParam(good.getItemOrderInfoList().toString()); + dto.setExtParam(JSON.toJSONString(good.getItemOrderInfoList())); list.add(dto); } - ResultData resultData = wxOrderService.platPushSaveOrder(true, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH, allExtParam.toString(), list, memberId, EnumPayWay.PAY_WAY_TT, tenantEntity); + ResultData resultData = wxOrderService.platPushSaveOrder(true, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH, allExtParam.toJSONString(), list, memberId, EnumPayWay.PAY_WAY_TT, tenantEntity); logger.info("resultData{}"+JSON.toJSONString(resultData)); if(resultData.code == 200){ WxComposeOrder order = (WxComposeOrder) resultData.data; From df82787d8bb4564af8e6fb49dc9400efc8644961 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 16:40:37 +0800 Subject: [PATCH 82/97] //tt product --- .../msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java | 4 ++-- .../pay/service/refund/douyin/TtRefundAdapterService.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java index bdda52e04..8f50cb899 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java @@ -76,7 +76,7 @@ public class FmInsideOrderPushDeliveryMsgServiceImpl implements MsgSendService { if(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode().equals(couponOrder.getCouponOrderStatus()) && EnumPayWay.PAY_WAY_TT.getCode().equals(couponOrder.getPayVendor())){ WxOrder order = wxOrderService.getById(couponOrder.getOrderId(), tenantEntity.getTenantId()); - String item_order_id = (String) order.getExpParamValue("item_order_id"); + String itemOrderId = (String) order.getExpParamValue("itemOrderId"); WxMerchant merchant = wxMerchantService.getById(couponOrder.getBMerchantId()); String shop_name = merchant.getName(); String ext_valid_shop_id = couponOrder.getBMerchantId().toString(); @@ -91,7 +91,7 @@ public class FmInsideOrderPushDeliveryMsgServiceImpl implements MsgSendService { TtOrderPushDeliveryRequest request = new TtOrderPushDeliveryRequest(); List itemOrderList = new ArrayList<>(); TtOrderPushDeliveryRequest.ItemOrder itemOrder = new TtOrderPushDeliveryRequest.ItemOrder(); - itemOrder.setItemOrderId(item_order_id); + itemOrder.setItemOrderId(itemOrderId); itemOrderList.add(itemOrder); request.setItemOrderList(itemOrderList); JSONObject poiInfo = new JSONObject(); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java index be532b25c..e9ef17945 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java @@ -65,8 +65,8 @@ public class TtRefundAdapterService implements RefundPayAdapterService{ }else{ List list = new ArrayList<>(); TtPayRefundV2Request.OrderDetail orderDetail = new TtPayRefundV2Request.OrderDetail(); - String refund_total_amount = (String) order.getExpParamValue("refund_total_amount"); - orderDetail.setItemOrderId(refund_total_amount); + String itemOrderId = (String) order.getExpParamValue("itemOrderId"); + orderDetail.setItemOrderId(itemOrderId); list.add(orderDetail); request.setItemOrderDetail(list); } From 7a3ec486f970d21fd04eb2d6208f4acc5cfa11bc Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 16:58:42 +0800 Subject: [PATCH 83/97] //tt product --- .../java/com/iformall/douyin/payv2/auth/TtPayCredentials.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java b/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java index dca5f3295..cc83b4e95 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java +++ b/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java @@ -79,7 +79,7 @@ public class TtPayCredentials implements Credentials { String body = ""; // PATCH,POST,PUT - body = EntityUtils.toString(((HttpEntityEnclosingRequest) request).getEntity()); + body = EntityUtils.toString(((HttpEntityEnclosingRequest) request).getEntity(),StandardCharsets.UTF_8); return request.getRequestLine().getMethod() + "\n" + canonicalUrl + "\n" From e7bd68a65e0ca7cea2d6689e3aa23212bc0ba9a8 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Thu, 16 Jun 2022 17:22:37 +0800 Subject: [PATCH 84/97] =?UTF-8?q?=E5=A2=9E=E5=8A=A0b=E7=AB=AF=E6=A0=B8?= =?UTF-8?q?=E9=94=80=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/WxCouponOrderController.java | 2 +- .../controller/WxCouponOrderController.java | 31 ++++++++++++ .../iformall/domain/vo/WxCouponOrderBVo.java | 2 + .../service/WxCouponOrderService.java | 2 +- .../impl/WxCouponOrderServiceImpl.java | 47 ++++++++++++------- 5 files changed, 64 insertions(+), 20 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 fc4a16334..e32a132ef 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderController.java @@ -123,7 +123,7 @@ public class WxCouponOrderController extends BaseController { wxCouponOrder.getMerchantName().isEmpty()) { wxCouponOrder.setMerchantName(null); } - wxCouponOrderService.exportData(wxCouponOrder, request, response); + wxCouponOrderService.exportData(false,wxCouponOrder, request, response); } } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 037b100e9..7d1c47292 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -2,6 +2,7 @@ package com.iformall.controller; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; +import com.iformall.annotation.AuthIgnore; import com.iformall.annotation.RedisCache; import com.iformall.common.ErrorCode; import com.iformall.common.Result; @@ -35,6 +36,9 @@ import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + @RestController @RequestMapping("/api/couponOrder") @Api(description = "卡券相关接口") @@ -463,4 +467,31 @@ public class WxCouponOrderController extends BaseController { } return new ResultData(); } + + @ApiOperation(value = "B端核销列表链接") + @GetMapping("/getVerifiedExportUrl") + public ResultData getVerifiedExportUrl(@ModelAttribute WxCouponOrderBVo wxCouponOrder) { + if (wxCouponOrder == null) wxCouponOrder = new WxCouponOrderBVo(); + wxCouponOrder.updateTenantInfo(getTenantInfo()); + StringBuffer sb = new StringBuffer("/api/couponOrder/unLogin/verifiedExport?verifyMerchantId=").append(this.getLoginBUser().getMerchantId()); + if (null != wxCouponOrder.getVerifyStartDate()) { + sb.append("&verifyStartDate=").append(wxCouponOrder.getVerifyStartDate()); + } + if (null != wxCouponOrder.getVerifyEndDate()) { + sb.append("&verifyEndDate=").append(wxCouponOrder.getVerifyEndDate()); + } + return new ResultData(sb.toString()); + + } + + @GetMapping("/unLogin/verifiedExport") + @AuthIgnore + public void verifiedExport(@ModelAttribute WxCouponOrderBVo wxCouponOrder, HttpServletRequest request, HttpServletResponse response) { + logger.debug("[" + getIpAddr() + "] WxCouponOrderController::exportData"); + if (wxCouponOrder == null) { + return; + } + wxCouponOrderService.exportData(true,wxCouponOrder, request, response); + } + } 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 34f65d7cc..ab0343d1d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java @@ -220,6 +220,8 @@ public class WxCouponOrderBVo extends WxCouponOrder { @Excel(name = "核销商户", width = 50, orderNum = "4") @TableField(exist = false) private String verifyMerchantName; + @TableField(exist = false) + private Long verifyMerchantId; @TableField(exist = false) private Long floor; diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index 554abc34f..5ee0ce87e 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -196,7 +196,7 @@ public interface WxCouponOrderService { ResultData queryCardStatus(WxCouponOrder wxCouponOrder); - void exportData(WxCouponOrderBVo wxCouponOrder, HttpServletRequest request, HttpServletResponse response); + void exportData(boolean cUserEntry,WxCouponOrderBVo wxCouponOrder, HttpServletRequest request, HttpServletResponse response); /** * B端-收银台-支持优惠券 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 41ba881d9..eb962d93d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -832,12 +832,12 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { retPageInfo.setPageSize(pageSize); retPageInfo.setPages(pageInfo.getPages()); retPageInfo.setTotal(pageInfo.getTotal()); - retPageInfo.setList(handleQueryResult(pageInfo.getList(), wxCouponOrderBVo)); + retPageInfo.setList(handleQueryResult(false,pageInfo.getList(), wxCouponOrderBVo)); return new ResultData(retPageInfo); } - private List handleQueryResult(List list,TenantEntity tenantEntity) { + private List handleQueryResult(boolean cUserEntry,List list,TenantEntity tenantEntity) { if (null != list && list.size() > 0) { @@ -984,8 +984,13 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { WxCUserBasicInfo basicInfo = cUserMap.get(co.getCUserId()); if (null != basicInfo) { - co.setcuserPhone(basicInfo.getPhone()); - co.setUserNickName(basicInfo.getNickName()); + if (!cUserEntry) { + co.setcuserPhone(basicInfo.getPhone()); + co.setUserNickName(basicInfo.getNickName()); + }else { + co.setcuserPhone("保密"); + co.setUserNickName("保密"); + } } Long bMechantId = co.getBMerchantId(); @@ -1155,18 +1160,24 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } //核销商户 - String verifyMerchantName = StringUtils.trimToNull(wxCouponOrder.getVerifyMerchantName()); - if (null != verifyMerchantName) { - WxMerchant merchantQ2 = new WxMerchant(); - merchantQ2.updateTenantInfo(wxCouponOrder); - merchantQ2.setName(verifyMerchantName); - List merchantIds = wxMerchantMapper.findIdList(merchantQ2); - if (null == merchantIds || merchantIds.size() <= 0 ){ - //throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"核销商户名称查询不到商户记录."); - wxCouponOrder.setId(-999L); - return; - } + if (null != wxCouponOrder.getVerifyMerchantId()) { + List merchantIds = new ArrayList(); + merchantIds.add(wxCouponOrder.getVerifyMerchantId()) ; wxCouponOrder.setBMerchantIdList(merchantIds); + }else { + String verifyMerchantName = StringUtils.trimToNull(wxCouponOrder.getVerifyMerchantName()); + if (null != verifyMerchantName) { + WxMerchant merchantQ2 = new WxMerchant(); + merchantQ2.updateTenantInfo(wxCouponOrder); + merchantQ2.setName(verifyMerchantName); + List merchantIds = wxMerchantMapper.findIdList(merchantQ2); + if (null == merchantIds || merchantIds.size() <= 0 ){ + //throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"核销商户名称查询不到商户记录."); + wxCouponOrder.setId(-999L); + return; + } + wxCouponOrder.setBMerchantIdList(merchantIds); + } } } @@ -1188,14 +1199,14 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } @Override - public void exportData(WxCouponOrderBVo wxCouponOrder, HttpServletRequest request, HttpServletResponse response) { + public void exportData(boolean cUserEntry,WxCouponOrderBVo wxCouponOrder, HttpServletRequest request, HttpServletResponse response) { String filename = "券订单"; if(EnumCouponType.COUPON_DISTRIBUTION.getCode().equals(wxCouponOrder.getCouponType())){ filename = "商品订单"; } handleWxCouponOrderBVoQueryParam(wxCouponOrder); List list = wxCouponOrderMapper.findListOfAdmin(wxCouponOrder); - List bolist = handleQueryResult(list,wxCouponOrder); + List bolist = handleQueryResult(cUserEntry,list,wxCouponOrder); excelService.exportCsv(bolist, null, filename, WxCouponOrderBVo.class, filename + ".csv", response, false); } @@ -2823,7 +2834,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { retPageInfo.setPageSize(pageSize); retPageInfo.setPages(pageInfo.getPages()); retPageInfo.setTotal(pageInfo.getTotal()); - retPageInfo.setList(handleQueryResult(pageInfo.getList(), record)); + retPageInfo.setList(handleQueryResult(false,pageInfo.getList(), record)); return retPageInfo; } From 198c862b495a9c307c36ae7ef07188788151036e Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 17:23:58 +0800 Subject: [PATCH 85/97] //tt product --- .../java/com/iformall/schedule/OrderRefundAuditSchedule.java | 1 + .../pay/service/refund/douyin/TtRefundAdapterService.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderRefundAuditSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderRefundAuditSchedule.java index 04297ee79..b095d7f6c 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderRefundAuditSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderRefundAuditSchedule.java @@ -46,6 +46,7 @@ public class OrderRefundAuditSchedule { @Scheduled(cron = "0 */10 * * * *?") // 每10分钟检查一次 //@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 public void merchantAuditCallback() { + logger.info("退款自动审核start"); List appInfos = getAppInfos(); for (WxAppinfo appinfo : appInfos) { WxRefundOrder refundOrder = new WxRefundOrder(); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java index e9ef17945..df2ba9179 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java @@ -72,6 +72,8 @@ public class TtRefundAdapterService implements RefundPayAdapterService{ } TtPayRefundV2Result result1 = ttPayService.refundV2(request); + record.setRefundId(result1.getRefundId()); +// record.setRefundVendor(payOrder.getTtPayWay()); return new RefundAdapterResult(true, EnumRefundStatus.REFUND_REQ_SUCCESS.getCode(), "退款订单申请成功", result1); } catch (TtPayException e) { From 6dc583c54cdd26f593b6785044cd6055b08a37c0 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Thu, 16 Jun 2022 17:55:59 +0800 Subject: [PATCH 86/97] fix bug --- .../java/com/iformall/controller/WxCouponOrderController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 7d1c47292..cc1f2baaa 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -473,7 +473,8 @@ public class WxCouponOrderController extends BaseController { public ResultData getVerifiedExportUrl(@ModelAttribute WxCouponOrderBVo wxCouponOrder) { if (wxCouponOrder == null) wxCouponOrder = new WxCouponOrderBVo(); wxCouponOrder.updateTenantInfo(getTenantInfo()); - StringBuffer sb = new StringBuffer("/api/couponOrder/unLogin/verifiedExport?verifyMerchantId=").append(this.getLoginBUser().getMerchantId()); + StringBuffer sb = new StringBuffer("/api/couponOrder/unLogin/verifiedExport?verifyMerchantId=").append(this.getLoginBUser().getMerchantId()) + .append("&tenantId="+wxCouponOrder.getTenantId()); if (null != wxCouponOrder.getVerifyStartDate()) { sb.append("&verifyStartDate=").append(wxCouponOrder.getVerifyStartDate()); } From 610e5d015588cec0859b003c87a0f6322f647845 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 17:56:11 +0800 Subject: [PATCH 87/97] //tt product --- .../com/iformall/douyin/payv2/auth/TtPayCredentials.java | 2 +- .../service/pay/service/share/douyin/TtPayShareService.java | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java b/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java index cc83b4e95..dca5f3295 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java +++ b/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java @@ -79,7 +79,7 @@ public class TtPayCredentials implements Credentials { String body = ""; // PATCH,POST,PUT - body = EntityUtils.toString(((HttpEntityEnclosingRequest) request).getEntity(),StandardCharsets.UTF_8); + body = EntityUtils.toString(((HttpEntityEnclosingRequest) request).getEntity()); return request.getRequestLine().getMethod() + "\n" + canonicalUrl + "\n" diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java index 1b17bb57b..d43d70f02 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java @@ -63,7 +63,8 @@ public class TtPayShareService extends PayShareBaseAdapterService{ ProfitSharingRequest request = new ProfitSharingRequest(); request.setOutOrderNo(record.getOrderId().toString()); request.setOutSettleNo(record.getId().toString()); - request.setSettleDesc("自主完结分账"); + String desc = "收款帐号完结分账"; + request.setSettleDesc(desc); String settleId = ttPayService.getProfitSharingV2Service().profitSharing(request); return new PayShareResult(true, null,"success", null,settleId); } catch (TtPayException e) { @@ -102,7 +103,8 @@ public class TtPayShareService extends PayShareBaseAdapterService{ ProfitSharingRequest request = new ProfitSharingRequest(); request.setOutOrderNo(record.getOrderId().toString()); request.setOutSettleNo(record.getId().toString()); - request.setSettleDesc("自主完结分账"); + String desc = "门店完结分账"; + request.setSettleDesc(desc); List list = new ArrayList<>(); for (Object o: receivers) { JSONObject jo = (JSONObject) o; From cfa550ad737d0535f4351fae86d5e694eeae5146 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Thu, 16 Jun 2022 18:28:19 +0800 Subject: [PATCH 88/97] fix bug --- .../controller/WxCouponOrderController.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index cc1f2baaa..8420759ac 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -471,9 +471,18 @@ public class WxCouponOrderController extends BaseController { @ApiOperation(value = "B端核销列表链接") @GetMapping("/getVerifiedExportUrl") public ResultData getVerifiedExportUrl(@ModelAttribute WxCouponOrderBVo wxCouponOrder) { + //只有B端管理员才能操作这个 + WxMerchantBUser buser = this.getLoginBUser(); + WxMerchant merchantQ= new WxMerchant(); + merchantQ.updateTenantInfo(buser); + merchantQ.setId(buser.getId()); + WxMerchant merchant = wxMerchantService.findOne(merchantQ); + if (!(buser.getPhone().equals(merchant.getLinkPhone()))) { + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"只有商户管理员才能进行此操作"); + } if (wxCouponOrder == null) wxCouponOrder = new WxCouponOrderBVo(); wxCouponOrder.updateTenantInfo(getTenantInfo()); - StringBuffer sb = new StringBuffer("/api/couponOrder/unLogin/verifiedExport?verifyMerchantId=").append(this.getLoginBUser().getMerchantId()) + StringBuffer sb = new StringBuffer("/api/couponOrder/unLogin/verifiedExport?verifyMerchantId=").append(buser.getMerchantId()) .append("&tenantId="+wxCouponOrder.getTenantId()); if (null != wxCouponOrder.getVerifyStartDate()) { sb.append("&verifyStartDate=").append(wxCouponOrder.getVerifyStartDate()); @@ -492,6 +501,8 @@ public class WxCouponOrderController extends BaseController { if (wxCouponOrder == null) { return; } + wxCouponOrder.setStartDate(DateUtils.stringToDate("2022-01-01 00:00:00",DateUtils.DATE_TIME_PATTERN)); + wxCouponOrder.setEndDate(DateUtils.stringToDate("2122-01-01 00:00:00",DateUtils.DATE_TIME_PATTERN)); wxCouponOrderService.exportData(true,wxCouponOrder, request, response); } From 7530603843fa34691e53875bbde5b87f543941b3 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Thu, 16 Jun 2022 18:33:20 +0800 Subject: [PATCH 89/97] fix bug --- .../java/com/iformall/controller/WxCouponOrderController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 8420759ac..f7b08ce25 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -475,7 +475,7 @@ public class WxCouponOrderController extends BaseController { WxMerchantBUser buser = this.getLoginBUser(); WxMerchant merchantQ= new WxMerchant(); merchantQ.updateTenantInfo(buser); - merchantQ.setId(buser.getId()); + merchantQ.setId(buser.getMerchantId()); WxMerchant merchant = wxMerchantService.findOne(merchantQ); if (!(buser.getPhone().equals(merchant.getLinkPhone()))) { return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"只有商户管理员才能进行此操作"); From b080af5f32b15ffcfe2a7a01fbef560ee009b5b6 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 16 Jun 2022 19:06:21 +0800 Subject: [PATCH 90/97] //tt product --- .../service/pay/service/share/douyin/TtPayShareService.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java index d43d70f02..e65094ec5 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java @@ -63,8 +63,7 @@ public class TtPayShareService extends PayShareBaseAdapterService{ ProfitSharingRequest request = new ProfitSharingRequest(); request.setOutOrderNo(record.getOrderId().toString()); request.setOutSettleNo(record.getId().toString()); - String desc = "收款帐号完结分账"; - request.setSettleDesc(desc); + request.setSettleDesc("mall_reciver_share"); String settleId = ttPayService.getProfitSharingV2Service().profitSharing(request); return new PayShareResult(true, null,"success", null,settleId); } catch (TtPayException e) { @@ -103,8 +102,7 @@ public class TtPayShareService extends PayShareBaseAdapterService{ ProfitSharingRequest request = new ProfitSharingRequest(); request.setOutOrderNo(record.getOrderId().toString()); request.setOutSettleNo(record.getId().toString()); - String desc = "门店完结分账"; - request.setSettleDesc(desc); + request.setSettleDesc("merchant_reciver_share"); List list = new ArrayList<>(); for (Object o: receivers) { JSONObject jo = (JSONObject) o; From c3154c6226a45337f2a06cd4ab8b8c7792af9ba7 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 17 Jun 2022 10:43:49 +0800 Subject: [PATCH 91/97] //tt product --- .../com/iformall/schedule/SharingOrderResultSchedule.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderResultSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderResultSchedule.java index db80d01fd..55efd27fb 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderResultSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderResultSchedule.java @@ -35,8 +35,8 @@ public class SharingOrderResultSchedule { } @Async - @Scheduled(cron = "0 15 0 * * ?") // 每天凌晨3:00更新分账结果 -// @Scheduled(cron = "*/30 * * * * ?") // 测试10秒中一次 +// @Scheduled(cron = "0 15 0 * * ?") // 每天凌晨3:00更新分账结果 + @Scheduled(cron = "* */15 * * * ?") // 测试10秒中一次 public void sharingOrderResultSchedule() { List malls = getMalls(); for (WxMall mall: malls) { From a7e2e7f2d8b5fd9279a867689c2a49db1b9c115b Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 17 Jun 2022 14:21:39 +0800 Subject: [PATCH 92/97] //tt product --- .../controller/market/WxOrderController.java | 33 +++++++---- .../com/iformall/service/WxOrderService.java | 1 + .../iformall/service/WxPayOrderService.java | 8 +++ .../service/impl/WxPayOrderServiceImpl.java | 13 ++++ .../miniApp/TtMiniAppPayAdapterService.java | 59 ++++++++++--------- 5 files changed, 75 insertions(+), 39 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 43a95630b..6d8139b24 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java @@ -7,24 +7,17 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.dto.OrderSaveDto; -import com.iformall.domain.po.WxCUser; -import com.iformall.domain.po.WxCUserBasicInfo; -import com.iformall.domain.po.WxCoupon; -import com.iformall.domain.po.WxCouponChannel; -import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.vo.WxMerchantSubsidyVo; import com.iformall.domain.vo.WxOrderQueryVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; -import com.iformall.service.WxCUserBasicInfoService; -import com.iformall.service.WxCUserService; -import com.iformall.service.WxCouponChannelService; -import com.iformall.service.WxCouponService; -import com.iformall.service.WxOrderService; +import com.iformall.service.*; import com.iformall.service.order.OrderFactory; import com.iformall.service.order.entity.WxComposeOrder; +import com.iformall.utils.MaUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -54,6 +47,9 @@ public class WxOrderController extends BaseController { @Autowired private WxOrderService wxOrderService; + @Autowired + private WxPayOrderService wxPayOrderService; + @Autowired private WxCUserService wxCUserService; @@ -62,7 +58,7 @@ public class WxOrderController extends BaseController { @Autowired private WxCUserBasicInfoService wxCUserBasicInfoService; - + @Autowired OrderFactory orderFactory; @@ -268,4 +264,19 @@ public class WxOrderController extends BaseController { } + @ApiOperation("查看抖音订单状态") + @GetMapping("/ttorderQuery") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + @SystemControllerLog(description = "订单管理-id查询") + public ResultData ttorderQuery(Long id) { + logger.debug("[" + getIpAddr() + "] WxOrderController::ttorderQuery"); + WxBatchOrder wxBatchOrder = wxOrderService.getWxBatchOrder(getTenantInfo(), id); + if(wxBatchOrder == null || !EnumPayWay.PAY_WAY_TT.getCode().equals(wxBatchOrder.getPayVendor())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "订单未找到或不支持"); + } + return new ResultData(wxPayOrderService.ttorderQuery(wxBatchOrder)); + + } + + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 3133c6558..6ec6392c9 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.dto.OrderSaveDto; diff --git a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java index 1a3935099..f17afc8e7 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java @@ -3,6 +3,7 @@ package com.iformall.service; import java.util.*; import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; @@ -160,4 +161,11 @@ public interface WxPayOrderService { boolean hasCompleted(WxComposeOrder composeOrder, WxPayOrder payOrder); + + /** + * 只douyin查询,不做任何操作 + * @param wxBatchOrder + * @return + */ + PayQueryAdapterResult ttorderQuery(WxBatchOrder wxBatchOrder); } 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 47683c3ff..cb868f312 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -997,6 +997,19 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { return false; } + @Override + public PayQueryAdapterResult ttorderQuery(WxBatchOrder wxBatchOrder) { + WxAppinfo appInfo = wxAppinfoService.getCAppInfo(wxBatchOrder,EnumPayWay.getEnum(wxBatchOrder.getPayVendor()).getPlat()); + WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); + WxPayOrder payOrder = new WxPayOrder(); + payOrder.setOrderId(wxBatchOrder.getId()); + try { + return payServiceFactory.getPayAdapterService(wxBatchOrder.getPayVendor()).queryPayStatus(payOrder, appInfo, payAccount); + } catch (Exception e) { + return new PayQueryAdapterResult(ErrorCode.SYS_SERVER_ERROR.getCode(), e.getMessage(),wxBatchOrder.getPayVendor(),null,null,null); + } + } + @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java index 60de0552e..0e22e1abf 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java @@ -51,6 +51,9 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen @Override public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record,WxComposeOrder composeOrder,String productName,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception { + + throw new Exception("请升级抖音版本"); + // 新下单接口 // TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount); // TtPayUnifiedOrderV2Request request = new TtPayUnifiedOrderV2Request(); @@ -58,34 +61,34 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen // // TtPayUnifiedOrderV2Result result = ttPayService.createOrderV2(request); - DouYinCreatePreOrder preOrder = new DouYinCreatePreOrder(); - preOrder.setAppId(appInfo.getAppId()); - preOrder.setSercrect(appInfo.getSecret()); - preOrder.setSalt(payAccount.getApiKey()); - preOrder.setOutOrderNo(record.getPayOrderNo()); - preOrder.setTotalAmount(composeOrder.getPayment()); - preOrder.setSubject(productName); - preOrder.setBody(productName); - preOrder.setValidTime(30*60); -// preOrder.setNotifyUrl();//回调地址 -// preOrder.setThirdpartyId();//第三方服务商ID -// preOrder.setStoreId(record.getStoreId()); - CreatePreOrderResult preOrderResult = DouYinPayHelper.createPreOrder(preOrder); - - if(preOrderResult.isSuccess()){ -// record.setPrepayId(preOrderResult.getOrderId()); - record.setTransactionId(preOrderResult.getOrderId()); - }else{ - record.setFailReason(preOrderResult.getMsg()); - } - record.setUpdateTime(new Date()); - - PayAdapterResult par = new PayAdapterResult(); - par.setSuccess(preOrderResult.isSuccess()); - par.setMsg(preOrderResult.getMsg()); - par.setTransactionId(preOrderResult.getOrderId()); - par.setData(preOrderResult); - return par; +// DouYinCreatePreOrder preOrder = new DouYinCreatePreOrder(); +// preOrder.setAppId(appInfo.getAppId()); +// preOrder.setSercrect(appInfo.getSecret()); +// preOrder.setSalt(payAccount.getApiKey()); +// preOrder.setOutOrderNo(record.getPayOrderNo()); +// preOrder.setTotalAmount(composeOrder.getPayment()); +// preOrder.setSubject(productName); +// preOrder.setBody(productName); +// preOrder.setValidTime(30*60); +//// preOrder.setNotifyUrl();//回调地址 +//// preOrder.setThirdpartyId();//第三方服务商ID +//// preOrder.setStoreId(record.getStoreId()); +// CreatePreOrderResult preOrderResult = DouYinPayHelper.createPreOrder(preOrder); +// +// if(preOrderResult.isSuccess()){ +//// record.setPrepayId(preOrderResult.getOrderId()); +// record.setTransactionId(preOrderResult.getOrderId()); +// }else{ +// record.setFailReason(preOrderResult.getMsg()); +// } +// record.setUpdateTime(new Date()); +// +// PayAdapterResult par = new PayAdapterResult(); +// par.setSuccess(preOrderResult.isSuccess()); +// par.setMsg(preOrderResult.getMsg()); +// par.setTransactionId(preOrderResult.getOrderId()); +// par.setData(preOrderResult); +// return par; } @Override From 8977a0426bf8b80020bebfef5b472f44fb9c3f76 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 17 Jun 2022 14:40:26 +0800 Subject: [PATCH 93/97] //tt product --- .../iformall/controller/market/WxOrderController.java | 10 +++++----- .../java/com/iformall/service/WxPayOrderService.java | 3 ++- .../iformall/service/impl/WxPayOrderServiceImpl.java | 10 +++++----- 3 files changed, 12 insertions(+), 11 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 6d8139b24..dacec16b8 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java @@ -270,11 +270,11 @@ public class WxOrderController extends BaseController { @SystemControllerLog(description = "订单管理-id查询") public ResultData ttorderQuery(Long id) { logger.debug("[" + getIpAddr() + "] WxOrderController::ttorderQuery"); - WxBatchOrder wxBatchOrder = wxOrderService.getWxBatchOrder(getTenantInfo(), id); - if(wxBatchOrder == null || !EnumPayWay.PAY_WAY_TT.getCode().equals(wxBatchOrder.getPayVendor())){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "订单未找到或不支持"); - } - return new ResultData(wxPayOrderService.ttorderQuery(wxBatchOrder)); +// WxBatchOrder wxBatchOrder = wxOrderService.getWxBatchOrder(getTenantInfo(), id); +// if(wxBatchOrder == null || !EnumPayWay.PAY_WAY_TT.getCode().equals(wxBatchOrder.getPayVendor())){ +// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "订单未找到或不支持"); +// } + return new ResultData(wxPayOrderService.ttorderQuery(getTenantInfo(),id)); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java index f17afc8e7..4031e7032 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java @@ -14,6 +14,7 @@ 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.domain.po.base.TenantEntity; import com.iformall.enums.EnumComposeOrder; import com.iformall.enums.EnumPayShare; import com.iformall.enums.EnumPayWay; @@ -167,5 +168,5 @@ public interface WxPayOrderService { * @param wxBatchOrder * @return */ - PayQueryAdapterResult ttorderQuery(WxBatchOrder wxBatchOrder); + PayQueryAdapterResult ttorderQuery(TenantEntity tenantInfo, Long id); } 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 cb868f312..6a2afe7d6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -998,15 +998,15 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } @Override - public PayQueryAdapterResult ttorderQuery(WxBatchOrder wxBatchOrder) { - WxAppinfo appInfo = wxAppinfoService.getCAppInfo(wxBatchOrder,EnumPayWay.getEnum(wxBatchOrder.getPayVendor()).getPlat()); + public PayQueryAdapterResult ttorderQuery(TenantEntity tenantInfo, Long id) { + WxAppinfo appInfo = wxAppinfoService.getCAppInfo(tenantInfo,EnumAppPlat.TOUTIAO); WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); WxPayOrder payOrder = new WxPayOrder(); - payOrder.setOrderId(wxBatchOrder.getId()); + payOrder.setOrderId(id); try { - return payServiceFactory.getPayAdapterService(wxBatchOrder.getPayVendor()).queryPayStatus(payOrder, appInfo, payAccount); + return payServiceFactory.getPayAdapterService(EnumPayWay.PAY_WAY_TT.getCode()).queryPayStatus(payOrder, appInfo, payAccount); } catch (Exception e) { - return new PayQueryAdapterResult(ErrorCode.SYS_SERVER_ERROR.getCode(), e.getMessage(),wxBatchOrder.getPayVendor(),null,null,null); + return new PayQueryAdapterResult(ErrorCode.SYS_SERVER_ERROR.getCode(), e.getMessage(),EnumPayWay.PAY_WAY_TT.getCode(),null,null,null); } } From 0ddf03a880e487f36da9961b1d693f9fa40f5a9f Mon Sep 17 00:00:00 2001 From: xhxu Date: Sat, 18 Jun 2022 20:11:27 +0800 Subject: [PATCH 94/97] //tt product --- .../java/com/iformall/service/impl/WxPayOrderServiceImpl.java | 2 +- .../service/pay/service/pay/douyin/BaseTtPayAdapterService.java | 2 +- 2 files changed, 2 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 6a2afe7d6..27b89b520 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -1002,7 +1002,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { WxAppinfo appInfo = wxAppinfoService.getCAppInfo(tenantInfo,EnumAppPlat.TOUTIAO); WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); WxPayOrder payOrder = new WxPayOrder(); - payOrder.setOrderId(id); + payOrder.setPayOrderNo(id.toString()); try { return payServiceFactory.getPayAdapterService(EnumPayWay.PAY_WAY_TT.getCode()).queryPayStatus(payOrder, appInfo, payAccount); } catch (Exception e) { diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/BaseTtPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/BaseTtPayAdapterService.java index aa4dcfdfb..daef8701c 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/BaseTtPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/BaseTtPayAdapterService.java @@ -31,7 +31,7 @@ public class BaseTtPayAdapterService { protected PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception { TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount); - TtPayOrderQueryV2Result ttPayOrderQueryV2Result = ttPayService.queryOrderV2(null, oldRecord.getOrderId().toString()); + TtPayOrderQueryV2Result ttPayOrderQueryV2Result = ttPayService.queryOrderV2(null, oldRecord.getPayOrderNo()); int code = getPayStatusFromOrderQueryResult(ttPayOrderQueryV2Result); PayQueryAdapterResult result = new PayQueryAdapterResult(code, EnumPayStatus.getEnum(code).getMessage(), ttPayOrderQueryV2Result.getPayChannel(), ttPayOrderQueryV2Result,ttPayOrderQueryV2Result.getPaymentOrderId(),ttPayOrderQueryV2Result.getPayTime()); From bda241e92bda961c6152d81bd59fba6584402b76 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 21 Jun 2022 01:11:48 +0800 Subject: [PATCH 95/97] //tt push --- .../schedule/TtOrderPushErrorSchedule.java | 28 +++--- .../pay/impl/TtPayServiceApacheHttpImpl.java | 2 +- .../douyin/payv2/auth/TtPayCredentials.java | 2 +- ...InsideOrderPushDeliveryMsgServiceImpl.java | 88 +++++++++++++------ 4 files changed, 75 insertions(+), 45 deletions(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/TtOrderPushErrorSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/TtOrderPushErrorSchedule.java index 6503895b9..78dddb7a4 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/TtOrderPushErrorSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/TtOrderPushErrorSchedule.java @@ -23,19 +23,19 @@ public class TtOrderPushErrorSchedule { @Autowired private WxOrderService wxOrderService; -// @Async -// @Scheduled(cron = "0 0 1 * * ?") -// public void OrderPushErrorTaskSchedule() { -// List orderPushErrors = ttOrderPushErrorMapper.findList(new TtOrderPushError()); -// if(orderPushErrors != null && orderPushErrors.size() > 0){ -// for (TtOrderPushError error:orderPushErrors) { -// try{ -// wxOrderService.sendInsideOrderPushMsg(error,error.getId()); -// }catch(Exception e){ -// logger.error("订单同步重试error"); -// } -// } -// } -// } + @Async + @Scheduled(cron = "0 0 */2 * * ?") + public void OrderPushErrorTaskSchedule() { + List orderPushErrors = ttOrderPushErrorMapper.findList(new TtOrderPushError()); + if(orderPushErrors != null && orderPushErrors.size() > 0){ + for (TtOrderPushError error:orderPushErrors) { + try{ + wxOrderService.sendInsideOrderPushDeliveryMsg(error,null,error.getId()); + }catch(Exception e){ + logger.error("订单同步重试error"); + } + } + } + } } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/douyin/pay/impl/TtPayServiceApacheHttpImpl.java b/mallinkService/src/main/java/com/iformall/douyin/pay/impl/TtPayServiceApacheHttpImpl.java index e6082e374..0eeef429e 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/pay/impl/TtPayServiceApacheHttpImpl.java +++ b/mallinkService/src/main/java/com/iformall/douyin/pay/impl/TtPayServiceApacheHttpImpl.java @@ -120,7 +120,7 @@ public class TtPayServiceApacheHttpImpl extends BaseTtPayServiceImpl { private StringEntity createEntry(String requestStr) { try { - return new StringEntity(new String(requestStr.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1)); + return new StringEntity(new String(requestStr.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8)); } catch (UnsupportedEncodingException e) { //cannot happen this.log.error(e.getMessage(), e); diff --git a/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java b/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java index dca5f3295..cc83b4e95 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java +++ b/mallinkService/src/main/java/com/iformall/douyin/payv2/auth/TtPayCredentials.java @@ -79,7 +79,7 @@ public class TtPayCredentials implements Credentials { String body = ""; // PATCH,POST,PUT - body = EntityUtils.toString(((HttpEntityEnclosingRequest) request).getEntity()); + body = EntityUtils.toString(((HttpEntityEnclosingRequest) request).getEntity(),StandardCharsets.UTF_8); return request.getRequestLine().getMethod() + "\n" + canonicalUrl + "\n" diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java index 8f50cb899..acbf226df 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java @@ -59,6 +59,10 @@ public class FmInsideOrderPushDeliveryMsgServiceImpl implements MsgSendService { @Autowired private MaUtil maUtil; + @Autowired + private TtOrderPushErrorMapper ttOrderPushErrorMapper; + + @Override public void send(BaseMsg baseMsg) throws Exception{ @@ -72,39 +76,65 @@ public class FmInsideOrderPushDeliveryMsgServiceImpl implements MsgSendService { tenantEntity.setTenantId(msg.getTenantId()); tenantEntity.setParentTenantId(msg.getParentTenantId()); - WxCouponOrder couponOrder = wxCouponOrderService.getById(msg.getCouponOrderId(), tenantEntity.getTenantId()); - if(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode().equals(couponOrder.getCouponOrderStatus()) - && EnumPayWay.PAY_WAY_TT.getCode().equals(couponOrder.getPayVendor())){ - WxOrder order = wxOrderService.getById(couponOrder.getOrderId(), tenantEntity.getTenantId()); - String itemOrderId = (String) order.getExpParamValue("itemOrderId"); - WxMerchant merchant = wxMerchantService.getById(couponOrder.getBMerchantId()); - String shop_name = merchant.getName(); - String ext_valid_shop_id = couponOrder.getBMerchantId().toString(); - TtMerchantPoi poi = ttMerchantPoiService.getById(couponOrder.getBMerchantId()); - - - - WxAppinfo appinfo = wxAppinfoService.getCAppInfo(tenantEntity,EnumPayWay.PAY_WAY_TT.getPlat()); - WxPayAccount payAccount = wxPayAccountService.getById(appinfo.getPayId()); - TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); - - TtOrderPushDeliveryRequest request = new TtOrderPushDeliveryRequest(); - List itemOrderList = new ArrayList<>(); - TtOrderPushDeliveryRequest.ItemOrder itemOrder = new TtOrderPushDeliveryRequest.ItemOrder(); - itemOrder.setItemOrderId(itemOrderId); - itemOrderList.add(itemOrder); - request.setItemOrderList(itemOrderList); - JSONObject poiInfo = new JSONObject(); - poiInfo.put("shop_name",shop_name); - poiInfo.put("ext_valid_shop_id",ext_valid_shop_id); - if(poi != null){ - poiInfo.put("valid_poi_id_str",poi.getPoiId()); + try{ + WxCouponOrder couponOrder = wxCouponOrderService.getById(msg.getCouponOrderId(), tenantEntity.getTenantId()); + if(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode().equals(couponOrder.getCouponOrderStatus()) + && EnumPayWay.PAY_WAY_TT.getCode().equals(couponOrder.getPayVendor())){ + WxOrder order = wxOrderService.getById(couponOrder.getOrderId(), tenantEntity.getTenantId()); + String itemOrderId = (String) order.getExpParamValue("itemOrderId"); + WxMerchant merchant = wxMerchantService.getById(couponOrder.getBMerchantId()); + String shop_name = merchant.getName(); + String ext_valid_shop_id = couponOrder.getBMerchantId().toString(); + TtMerchantPoi poi = ttMerchantPoiService.getById(couponOrder.getBMerchantId()); + + + WxAppinfo appinfo = wxAppinfoService.getCAppInfo(tenantEntity,EnumPayWay.PAY_WAY_TT.getPlat()); + WxPayAccount payAccount = wxPayAccountService.getById(appinfo.getPayId()); + TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); + + TtOrderPushDeliveryRequest request = new TtOrderPushDeliveryRequest(); + List itemOrderList = new ArrayList<>(); + TtOrderPushDeliveryRequest.ItemOrder itemOrder = new TtOrderPushDeliveryRequest.ItemOrder(); + itemOrder.setItemOrderId(itemOrderId); + itemOrderList.add(itemOrder); + request.setItemOrderList(itemOrderList); + JSONObject poiInfo = new JSONObject(); + poiInfo.put("shop_name",shop_name); + poiInfo.put("ext_valid_shop_id",ext_valid_shop_id); + if(poi != null){ + poiInfo.put("valid_poi_id_str",poi.getPoiId()); + } + request.setPoiInfo(poiInfo.toJSONString()); + boolean b = ttPayService.pushDelivery(request); + if(b){ + ttOrderPushErrorMapper.deleteById(msg.getCouponOrderId()); + } } - request.setPoiInfo(poiInfo.toJSONString()); - ttPayService.pushDelivery(request); + }catch(Exception e){ + TtOrderPushError pushError = new TtOrderPushError(); + pushError.setId(msg.getCouponOrderId()); + pushError.updateTenantInfo(tenantEntity); + pushError.setErrMsg(e.getMessage()); + saveOrUpdate(pushError); } } + private void saveOrUpdate(TtOrderPushError pushError){ + Date now = new Date(); + TtOrderPushError pushError1 = ttOrderPushErrorMapper.selectById(pushError.getId()); + if(pushError1 != null){ + pushError1.setErrMsg(pushError.getErrMsg()); + pushError1.setUpdateDate(now); + ttOrderPushErrorMapper.updateById(pushError1); + }else{ + pushError.setCreateDate(now); + pushError.setUpdateDate(now); + ttOrderPushErrorMapper.insert(pushError); + } + } + + + } From 5de64e1e74a7e970a98ab6be947ae60fe3ee2214 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 21 Jun 2022 13:35:55 +0800 Subject: [PATCH 96/97] //tt push --- .../msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java index acbf226df..e1b57f58b 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java @@ -93,6 +93,7 @@ public class FmInsideOrderPushDeliveryMsgServiceImpl implements MsgSendService { TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); TtOrderPushDeliveryRequest request = new TtOrderPushDeliveryRequest(); + request.setOutOrderNo(order.getComposeOrderId().toString()); List itemOrderList = new ArrayList<>(); TtOrderPushDeliveryRequest.ItemOrder itemOrder = new TtOrderPushDeliveryRequest.ItemOrder(); itemOrder.setItemOrderId(itemOrderId); From 4204188398c68b15e785b937fe37a81df6c893a3 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 21 Jun 2022 16:17:13 +0800 Subject: [PATCH 97/97] //tt send --- .../com/iformall/service/impl/WxCouponOrderServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 eb962d93d..70ecd8245 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -1686,8 +1686,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { try { //如果是抖音支付 只能单次分账 if(EnumPayWay.PAY_WAY_TT.getCode().equals(payWay) && mulityShare){ - logger.error("抖音支付 只能单次分账: "); - return; + mulityShare = false; +// logger.error("抖音支付 只能单次分账: "); +// return; } WxPayOrder wxPayOrder = new WxPayOrder(); // Long orderId = couponOrder.getOrderId();