Parcourir la source

Merge branch 'mp-server-test' into 'master'

Mp server test

See merge request quanshu/mp-server!848
zhong chunping il y a 2 ans
Parent
commit
6f18d55406
28 fichiers modifiés avec 605 ajouts et 338 suppressions
  1. 1 1
      mp-admin/src/main/java/com/qs/mp/web/controller/api/callback/AlipayCallBackController.java
  2. 2 1
      mp-admin/src/main/java/com/qs/mp/web/controller/api/callback/PayCallBackController.java
  3. 1 1
      mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/mall/ChannelOrderController.java
  4. 25 5
      mp-admin/src/main/java/com/qs/mp/web/controller/api/common/UserController.java
  5. 20 5
      mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserDeliverOrderController.java
  6. 6 2
      mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserShareController.java
  7. 18 4
      mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserTicketOrderController.java
  8. 2 0
      mp-admin/src/main/resources/application.yml
  9. 75 0
      mp-common/src/main/java/com/qs/mp/common/enums/AppSourceEnum.java
  10. 1 1
      mp-common/src/main/java/com/qs/mp/common/enums/AsyncTaskTypeEnum.java
  11. 1 1
      mp-framework/src/main/java/com/qs/mp/framework/config/SecurityConfig.java
  12. 3 0
      mp-service/src/main/java/com/qs/mp/channel/domain/param/OrderPayParam.java
  13. 10 0
      mp-service/src/main/java/com/qs/mp/framework/service/impl/WxSubscribeMessageImpl.java
  14. 2 1
      mp-service/src/main/java/com/qs/mp/pay/service/IWalletService.java
  15. 27 12
      mp-service/src/main/java/com/qs/mp/pay/service/impl/WalletServiceImpl.java
  16. 10 0
      mp-service/src/main/java/com/qs/mp/system/domain/SysUser.java
  17. 18 4
      mp-service/src/main/java/com/qs/mp/system/domain/vo/WxLoginParams.java
  18. 8 0
      mp-service/src/main/java/com/qs/mp/user/domain/UserDeliverOrder.java
  19. 9 0
      mp-service/src/main/java/com/qs/mp/user/domain/UserTicketOrder.java
  20. 16 13
      mp-service/src/main/java/com/qs/mp/user/domain/param/DeliverOrderParam.java
  21. 3 0
      mp-service/src/main/java/com/qs/mp/user/domain/param/TicketOrderParam.java
  22. 20 0
      mp-service/src/main/java/com/qs/mp/user/domain/param/UserInfoQueryParam.java
  23. 30 28
      mp-service/src/main/java/com/qs/mp/user/domain/vo/DeliverOrderSettleVO.java
  24. 60 44
      mp-service/src/main/java/com/qs/mp/user/domain/vo/TicketOrderSettleVO.java
  25. 18 10
      mp-service/src/main/java/com/qs/mp/user/domain/vo/UserCoupon4OrderVO.java
  26. 212 204
      mp-service/src/main/java/com/qs/mp/user/service/impl/UserDeliverOrderServiceImpl.java
  27. 4 0
      mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java
  28. 3 1
      mp-service/src/main/resources/mapper/system/SysUserMapper.xml

+ 1 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/callback/AlipayCallBackController.java

@@ -121,7 +121,7 @@ public class AlipayCallBackController {
       responseWrite(response,"fail");
       return;
     }
-    PayOrder payOrder =  new PayOrder();
+    PayOrder payOrder = payOrderService.getById(order.getOrderId());
     payOrder.setOrderId(order.getOrderId());
     payOrder.setOrderNo(tradeNo);
     payOrder.setCompleteDate(completeDate);

+ 2 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/callback/PayCallBackController.java

@@ -77,7 +77,8 @@ public class PayCallBackController {
       responseWrite(response,"error");
       return;
     }
-    PayOrder payOrder =  new PayOrder();
+
+    PayOrder payOrder = payOrderService.getById(shopOrderNo);
     payOrder.setOrderId(shopOrderNo);
     payOrder.setOrderNo(orderNo);
     payOrder.setCompleteDate(completeDate);

+ 1 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/mall/ChannelOrderController.java

@@ -355,7 +355,7 @@ public class ChannelOrderController extends BaseApiController {
     ChannelOrder channelOrder = channelOrderService.getById(param.getOrderId());
     JSONObject jsonObject;
     try {
-      jsonObject = walletService.pay(BizTypeEnum.CHANNEL_ORDER, param.getOrderId(), channelOpenId, channelOrder.getPayAmt(), channelOrder.getTitle());
+      jsonObject = walletService.pay(BizTypeEnum.CHANNEL_ORDER, param.getOrderId(), channelOpenId, channelOrder.getPayAmt(), channelOrder.getTitle(), AppSourceEnum.CHANNEL.getValue());
     }catch (ServiceException e) {
       LogUtil.error(logger, e, "根据经销商采购订单创建支付单失败。userId:{0},orderId:{1}", new Object[]{userId, param.getOrderId()});
       return AjaxResult.error(e.getMessage());

+ 25 - 5
mp-admin/src/main/java/com/qs/mp/web/controller/api/common/UserController.java

@@ -21,6 +21,7 @@ import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.service.IChannelService;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.domain.vo.AliPhoneDecryptVO;
+import com.qs.mp.common.enums.AppSourceEnum;
 import com.qs.mp.common.enums.UserIdentityEnum;
 import com.qs.mp.common.enums.WxActTypeEnum;
 import com.qs.mp.common.jsms.JSMSUtils;
@@ -38,6 +39,7 @@ import com.qs.mp.framework.web.service.SysLoginService;
 import com.qs.mp.system.domain.SysUser;
 import com.qs.mp.system.domain.vo.WxLoginParams;
 import com.qs.mp.system.service.ISysUserService;
+import com.qs.mp.user.domain.param.UserInfoQueryParam;
 import com.qs.mp.utils.SecurityUtils;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
@@ -296,9 +298,10 @@ public class UserController extends BaseApiController {
     public AjaxResult wxauth(@RequestBody WxLoginParams wxLoginParams) {
         String appId = channelAppId;
         String appSecret = channelAppSecret;
+        AppSourceEnum appSourceEnum = AppSourceEnum.getByValue(wxLoginParams.getAppSource());
         if (wxLoginParams.getIdentity() == UserIdentityEnum.USER.ordinal()) {
-            appId = userAppId;
-            appSecret = userAppSecret;
+            appId = appSourceEnum.getAppId();
+            appSecret = appSourceEnum.getAppSecret();
         }
         //调用微信后台接口获取openId
         String res = wxLoginCheck(wxLoginParams.getCode(), appId, appSecret);
@@ -316,7 +319,11 @@ public class UserController extends BaseApiController {
         SysUser user = new SysUser();
         user.setUserId(loginUser.getUserId());
         if (wxLoginParams.getIdentity() == UserIdentityEnum.USER.ordinal()) {
-            user.setOpenId(openId);
+            if (AppSourceEnum.MSDQ.equals(appSourceEnum)) {
+                user.setMsdqOpenId(openId);
+            } else {
+                user.setOpenId(openId);
+            }
         } else {
             user.setChannelOpenId(openId);
         }
@@ -365,6 +372,12 @@ public class UserController extends BaseApiController {
     public AjaxResult wxauthMobile(@RequestBody WxLoginParams wxLoginParams) {
         String appId = userAppId;
         String appSecret = userAppSecret;
+        AppSourceEnum appSourceEnum = AppSourceEnum.getByValue(wxLoginParams.getAppSource());
+        if (AppSourceEnum.MSDQ.equals(appSourceEnum)) {
+            appId = AppSourceEnum.MSDQ.getAppId();
+        }
+
+
     /*if (UserIdentityEnum.isChannel(wxLoginParams.getIdentity())) {
       appId = channelAppId;
       appSecret = channelAppSecret;
@@ -468,10 +481,12 @@ public class UserController extends BaseApiController {
      */
     @ApiOperation("查询当前登录用户信息")
     @RequestMapping(value = "/user/getLoginUserinfo", method = RequestMethod.POST)
-    public AjaxResult getLoginUserinfo(@RequestBody JSONObject params) {
+    public AjaxResult getLoginUserinfo(@RequestBody UserInfoQueryParam param) {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         SysUser sysUser = sysUserService.selectUserById(SecurityUtils.getUserId());
 
+        AppSourceEnum appSourceEnum = AppSourceEnum.getByValue(param.getAppSource());
+
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("userName", sysUser.getUserName());
         jsonObject.put("avatar", sysUser.getAvatar());
@@ -481,7 +496,12 @@ public class UserController extends BaseApiController {
         } else {
             jsonObject.put("nickName", sysUser.getNickName());
         }
-        jsonObject.put("openId", sysUser.getOpenId());
+        if (AppSourceEnum.MSDQ.equals(appSourceEnum)) {
+            jsonObject.put("openId", sysUser.getMsdqOpenId());
+        } else {
+            jsonObject.put("openId", sysUser.getOpenId());
+        }
+
         jsonObject.put("channelOpenId", sysUser.getChannelOpenId());
         jsonObject.put("aliuserId", sysUser.getAliuserId());
         JSONArray roleKeys = new JSONArray();

+ 20 - 5
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserDeliverOrderController.java

@@ -260,6 +260,9 @@ public class UserDeliverOrderController extends BaseApiController {
         orderSettleVO.setPayAmt(orderAmt + freightAmt);
         orderSettleVO.setPrizeList(prizeStorageList);
 
+        AppSourceEnum appSourceEnum = AppSourceEnum.getByValue(param.getAppSource());
+        orderSettleVO.setAppId(appSourceEnum.getAppId());
+
         // 缓存订单结算对象
         redisCache.setCacheObject(RedisKey.build(RedisKey.USER_DELIVER_ORDER_KEY, userId), orderSettleVO, 10,
             TimeUnit.MINUTES);
@@ -318,26 +321,38 @@ public class UserDeliverOrderController extends BaseApiController {
     public AjaxResult pay(@Valid @RequestBody OrderPayParam param) {
         Long userId = SecurityUtils.getLoginUser().getUserId();
         SysUser sysUser = sysUserService.selectUserById(userId);
+        String openId = "";
         if (param.getPayType() == 1) {
             if (StringUtils.isBlank(sysUser.getAliuserId())) {
                 return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1026);
             }
         } else {
-            if (StringUtils.isBlank(sysUser.getOpenId())) {
-                return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1005);
+            AppSourceEnum appSourceEnum = AppSourceEnum.getByValue(param.getAppSource());
+            if (AppSourceEnum.MSDQ.equals(appSourceEnum)) {
+                if (StringUtils.isBlank(sysUser.getMsdqOpenId())) {
+                    return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1005);
+                }
+                openId = sysUser.getMsdqOpenId();
+            } else {
+                if (StringUtils.isBlank(sysUser.getOpenId())) {
+                    return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1005);
+                }
+                openId = sysUser.getOpenId();
             }
+
         }
         UserDeliverOrder deliverOrder = userDeliverOrderService.getById(param.getOrderId());
         JSONObject jsonObject;
         try {
             if (param.getPayType() == 1) {
                 // 支付宝支付
-                jsonObject = walletService.directAliPay(BizTypeEnum.DELIVER_ORDER, param.getOrderId(), sysUser.getAliuserId(),
+                jsonObject = walletService.directAliPay(BizTypeEnum.DELIVER_ORDER, param.getOrderId(),
+                    sysUser.getAliuserId(),
                     deliverOrder.getPayAmt(), "盲票--提货订单");
             } else {
                 // 微信支付
-                jsonObject = walletService.pay(BizTypeEnum.TICKET_ORDER, param.getOrderId(), sysUser.getOpenId(),
-                    deliverOrder.getPayAmt(), "盲票--提货订单");
+                jsonObject = walletService.pay(BizTypeEnum.DELIVER_ORDER, param.getOrderId(), openId,
+                    deliverOrder.getPayAmt(), "盲票--提货订单", param.getAppSource());
             }
         } catch (ServiceException e) {
             LogUtil.error(logger, e, "根据提货单创建支付单失败。userId:{0},orderId:{1}", new Object[]{userId, param.getOrderId()});

+ 6 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserShareController.java

@@ -3,6 +3,7 @@ package com.qs.mp.web.controller.api.user;
 import com.alibaba.fastjson.JSONObject;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.domain.AjaxResult.Type;
+import com.qs.mp.common.enums.AppSourceEnum;
 import com.qs.mp.framework.service.IWxUrlLinkService;
 import com.qs.mp.user.domain.vo.UserShareVO;
 import com.qs.mp.utils.SecurityUtils;
@@ -45,13 +46,16 @@ public class UserShareController extends BaseApiController {
 	public AjaxResult generateInviteCode(@RequestBody  JSONObject jsonObject) {
 		String boxId = jsonObject.getString("boxId"); // 票组ID
 		String type = jsonObject.getString("type"); // 分享类型,1/2
+		Integer appSource = jsonObject.getInteger("appSource");
+		AppSourceEnum appSourceEnum = AppSourceEnum.getByValue(appSource);
+		String appId = appSourceEnum.getAppId();
 		Long userId = SecurityUtils.getUserId();
 		if (UserShareVO.SHARE_TYPE_SITE.equals(type) && StringUtils.isBlank(boxId)) {
 			// 经销商分享,默认到盲票小程序首页
-			String rst = wxUrlLinkService.generateUnlimitCode("", userId + "&" + type, userAppId);
+			String rst = wxUrlLinkService.generateUnlimitCode("", userId + "&" + type, appId);
 			return new AjaxResult(Type.SUCCESS, "", rst);
 		}
-		String rst = wxUrlLinkService.generateUnlimitCode("pages/ticketBox/detail", boxId + "&" + userId + "&" + type, userAppId);
+		String rst = wxUrlLinkService.generateUnlimitCode("pages/ticketBox/detail", boxId + "&" + userId + "&" + type, appId);
 		return new AjaxResult(Type.SUCCESS, "", rst);
 	}
 }

+ 18 - 4
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserTicketOrderController.java

@@ -13,6 +13,7 @@ import com.qs.mp.channel.domain.param.OrderPayParam;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.core.redis.RedisCache;
+import com.qs.mp.common.enums.AppSourceEnum;
 import com.qs.mp.common.enums.BizTypeEnum;
 import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.common.enums.MqTopicType;
@@ -155,6 +156,9 @@ public class UserTicketOrderController extends BaseApiController {
         orderSettleVO.setPicUrl(ticketBox.getPicUrl());
         orderSettleVO.setTitle(ticketBox.getTitle());
 
+        AppSourceEnum appSourceEnum = AppSourceEnum.getByValue(param.getAppSource());
+        orderSettleVO.setAppId(appSourceEnum.getAppId());
+
         // 缓存订单结算对象
         redisCache.setCacheObject(RedisKey.build(RedisKey.USER_TICKET_ORDER_KEY, userId), orderSettleVO, 10,
             TimeUnit.MINUTES);
@@ -210,13 +214,23 @@ public class UserTicketOrderController extends BaseApiController {
     public AjaxResult pay(@Valid @RequestBody OrderPayParam param) {
         Long userId = SecurityUtils.getLoginUser().getUserId();
         SysUser sysUser = sysUserService.selectUserById(userId);
+        String openId = "";
         if (param.getPayType() == 1) {
             if (StringUtils.isBlank(sysUser.getAliuserId())) {
                 return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1026);
             }
         } else {
-            if (StringUtils.isBlank(sysUser.getOpenId())) {
-                return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1005);
+            AppSourceEnum appSourceEnum = AppSourceEnum.getByValue(param.getAppSource());
+            if (AppSourceEnum.MSDQ.equals(appSourceEnum)) {
+                if (StringUtils.isBlank(sysUser.getMsdqOpenId())) {
+                    return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1005);
+                }
+                openId = sysUser.getMsdqOpenId();
+            } else {
+                if (StringUtils.isBlank(sysUser.getOpenId())) {
+                    return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1005);
+                }
+                openId = sysUser.getOpenId();
             }
         }
 
@@ -229,8 +243,8 @@ public class UserTicketOrderController extends BaseApiController {
                     ticketOrder.getPayAmt(), ticketOrder.getTitle());
             } else {
                 // 微信支付
-                jsonObject = walletService.pay(BizTypeEnum.TICKET_ORDER, param.getOrderId(), sysUser.getOpenId(),
-                    ticketOrder.getPayAmt(), ticketOrder.getTitle());
+                jsonObject = walletService.pay(BizTypeEnum.TICKET_ORDER, param.getOrderId(), openId,
+                    ticketOrder.getPayAmt(), ticketOrder.getTitle(), param.getAppSource());
             }
         } catch (ServiceException e) {
             LogUtil.error(logger, e, "根据盲票购买订单创建支付单失败。userId:{0},orderId:{1}",

+ 2 - 0
mp-admin/src/main/resources/application.yml

@@ -155,6 +155,8 @@ pay:
   user-sign: 614140724fb74085be8aef8bebc538ed
   channel-shopNo: 1647504328218
   channel-sign: 0e0c00555fee4549b1a88af4d988415b
+  msdq-shopNo: 1657242588900
+  msdq-sign: e39069383c6944a18abc0b03a4ad0217
 
 #幸运数字加密密钥对
 rsa:

+ 75 - 0
mp-common/src/main/java/com/qs/mp/common/enums/AppSourceEnum.java

@@ -0,0 +1,75 @@
+package com.qs.mp.common.enums;
+
+import com.baomidou.mybatisplus.annotation.IEnum;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 小程序来源枚举
+ * @author Cup
+ * @date 2022/7/11
+ */
+@ApiModel("小程序来源枚举")
+public enum AppSourceEnum implements IEnum<Integer> {
+
+    /**
+     * 盲票AppId
+     */
+    MP(1,"wx8533800e393dbd6b", "f7a104e09d6c2e55445be2a45c4ab551"),
+    /**
+     * 马上兑券AppId
+     */
+    MSDQ(2,"wxffb4598e70b9f871", "1c7ba0eed8c0287b8800b089e3c9d102"),
+
+    /**
+     * 支付宝盲票AppID
+     */
+    ALI_MP(3, "2021003127607930", null),
+
+    /**
+     * 票赢填写AppID
+     */
+    CHANNEL(4, "wxc3a684f1196f6e15", "7708655ba65f04de2a42f23d20ab4134");
+
+    private Integer value;
+
+    private String appId;
+
+    private String appSecret;
+
+
+    AppSourceEnum(Integer value, String appId, String appSecret) {
+        this.value = value;
+        this.appId = appId;
+        this.appSecret = appSecret;
+    }
+
+    public static AppSourceEnum getByValue(Integer value){
+        for (AppSourceEnum appSourceEnum : AppSourceEnum.values()) {
+            if (appSourceEnum.getValue().equals(value)) {
+                return appSourceEnum;
+            }
+        }
+        return AppSourceEnum.MP;
+    }
+
+    public String getAppSecret() {
+        return appSecret;
+    }
+
+    @Override
+    public Integer getValue() {
+        return value;
+    }
+
+    public String getAppId() {
+        return appId;
+    }
+
+    @Override
+    public String toString() {
+        return "AppSourceEnum{" +
+            "value='" + value + '\'' +
+            ", appId='" + appId + '\'' +
+            '}';
+    }
+}

+ 1 - 1
mp-common/src/main/java/com/qs/mp/common/enums/AsyncTaskTypeEnum.java

@@ -32,7 +32,7 @@ public enum AsyncTaskTypeEnum implements IEnum<Integer> {
         return value;
     }
 
-    public static AsyncTaskTypeEnum getByValue(String value){
+    public static AsyncTaskTypeEnum getByValue(Integer value){
         for (AsyncTaskTypeEnum asyncTaskTypeEnum : AsyncTaskTypeEnum.values()) {
             if (asyncTaskTypeEnum.getValue().equals(value)) {
                 return asyncTaskTypeEnum;

+ 1 - 1
mp-framework/src/main/java/com/qs/mp/framework/config/SecurityConfig.java

@@ -150,7 +150,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                     "/api/v1/mp/user/marketing/recent",
                     "/api/v1/mp/open/link/**",
                     "/api/v1/mp/user/mall/ticket/detail/new",
-                    "/api/v1/mp/user/mall/ticket/prize/list/*"
+                    "/api/v1/mp/user/ticket/prize/list/*"
                 ).permitAll()
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()

+ 3 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/param/OrderPayParam.java

@@ -21,4 +21,7 @@ public class OrderPayParam {
 
 	@ApiModelProperty(value = "用户openID",required=true)
 	private String openId;
+
+	@ApiModelProperty("小程序,1盲票,2码上兑券,3支付宝盲票")
+	private Integer appSource;
 }

+ 10 - 0
mp-service/src/main/java/com/qs/mp/framework/service/impl/WxSubscribeMessageImpl.java

@@ -3,6 +3,7 @@ package com.qs.mp.framework.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.qs.mp.admin.domain.Marketing;
 import com.qs.mp.common.utils.LogUtil;
+import com.qs.mp.common.utils.StringUtils;
 import com.qs.mp.common.utils.http.HttpUtils;
 import com.qs.mp.framework.domain.WxSubscribeMessage;
 import com.qs.mp.framework.service.IAppTokenService;
@@ -45,6 +46,9 @@ public class WxSubscribeMessageImpl implements IWxSubscribeMessage {
   @Override
   public boolean sendMarketingStart(Long userId, Marketing marketing) {
     String openId = getOpenIdByUserId(userId);
+    if (StringUtils.isBlank(openId)) {
+      return true;
+    }
     WxSubscribeMessage wxSubscribeMessage = new WxSubscribeMessage(userAppId, openId, state);
     wxSubscribeMessage.buildMarketingStartSuccessMessage(marketing);
     return this.sendNotify(userId, marketing.getId().toString(), wxSubscribeMessage);
@@ -53,6 +57,9 @@ public class WxSubscribeMessageImpl implements IWxSubscribeMessage {
   @Override
   public void sendMarketingHelp(Long userId, Marketing marketing) {
     String openId = getOpenIdByUserId(userId);
+    if (StringUtils.isBlank(openId)) {
+      return;
+    }
     WxSubscribeMessage wxSubscribeMessage = new WxSubscribeMessage(userAppId, openId, state);
     wxSubscribeMessage.buildMarketingHelpSuccessMessage(marketing);
     this.sendNotify(userId, marketing.getId().toString(), wxSubscribeMessage);
@@ -61,6 +68,9 @@ public class WxSubscribeMessageImpl implements IWxSubscribeMessage {
   @Override
   public boolean sendMarketingLottery(Long userId, Marketing marketing) {
     String openId = getOpenIdByUserId(userId);
+    if (StringUtils.isBlank(openId)) {
+      return true;
+    }
     WxSubscribeMessage wxSubscribeMessage = new WxSubscribeMessage(userAppId, openId, state);
     wxSubscribeMessage.buildMarketingLotterySuccessMessage(marketing);
     return this.sendNotify(userId, marketing.getId().toString(), wxSubscribeMessage);

+ 2 - 1
mp-service/src/main/java/com/qs/mp/pay/service/IWalletService.java

@@ -43,10 +43,11 @@ public interface IWalletService {
    * @param openId
    * @param money
    * @param orderRemark
+   * @param appSource
    * @return
    */
   JSONObject pay(BizTypeEnum bizType, String bizId, String openId, int money,
-      String orderRemark);
+      String orderRemark, Integer appSource);
 
 
   /**

+ 27 - 12
mp-service/src/main/java/com/qs/mp/pay/service/impl/WalletServiceImpl.java

@@ -10,6 +10,7 @@ import com.alipay.api.response.AlipayTradeCreateResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.channel.service.IChannelOrderService;
+import com.qs.mp.common.enums.AppSourceEnum;
 import com.qs.mp.common.enums.AsyncTaskTypeEnum;
 import com.qs.mp.common.enums.BizTypeEnum;
 import com.qs.mp.common.enums.MqTopicType;
@@ -90,6 +91,12 @@ public class WalletServiceImpl implements IWalletService {
   @Value("${pay.user-sign}")
   private String userPaySign;  //用户端商户签名
 
+  @Value("${pay.msdq-shopNo}")
+  private String msdqPayShopNo;
+
+  @Value("${pay.msdq-shopNo}")
+  private String msdqPaySign;
+
   @Value("${pay.channel-shopNo}")
   private String channelPayShopNo;  //渠道端商户号
   @Value("${pay.channel-sign}")
@@ -223,15 +230,24 @@ public class WalletServiceImpl implements IWalletService {
 
   @Override
   public JSONObject pay(BizTypeEnum bizType, String bizId, String openId, int money,
-      String orderRemark) {
+      String orderRemark, Integer appSource) {
     String reqUrl = baseUrl + "/pay/payMoneyCTB";
     String appId = channelAppId;
     String payShopNo = channelPayShopNo;
     String paySign = channelPaySign;
+
+    AppSourceEnum appSourceEnum = AppSourceEnum.getByValue(appSource);
     if (bizType == BizTypeEnum.TICKET_ORDER || bizType == BizTypeEnum.DELIVER_ORDER) {
-      appId = userAppId;
-      payShopNo = userPayShopNo;
-      paySign = userPaySign;
+      appId = appSourceEnum.getAppId();
+      // 区分微信小程序
+      if (AppSourceEnum.MSDQ.equals(appSourceEnum)) {
+        payShopNo = msdqPayShopNo;
+        paySign = msdqPaySign;
+      } else {
+        payShopNo = userPayShopNo;
+        paySign = userPaySign;
+      }
+
     }
     JSONObject params = buildPayOrderReqData(payShopNo, paySign, money, openId, appId, orderRemark, PAY_RESOURCE, PAY_RESOURCE_TYPE);
     String result = OkHttpUtil.postJsonParams(reqUrl, params.toJSONString());
@@ -318,18 +334,17 @@ public class WalletServiceImpl implements IWalletService {
 
     //查询统一支付订单表,查询订单类型,然后根据不同类型做对应的逻辑处理
     //查询支付状态为1:支付成功,2:订单创建成功,等待支付。
-    PayOrder order = payOrderService.getById(orderNo);
     LogUtil.info(logger, "支付回调,bizType:{0},bizId:{1}" ,
-        new Object[]{order.getBizType(), order.getBizId()});
-    if (BizTypeEnum.CHANNEL_ORDER == order.getBizType()) {
+        new Object[]{payOrder.getBizType(), payOrder.getBizId()});
+    if (BizTypeEnum.CHANNEL_ORDER == payOrder.getBizType()) {
       // 渠道盲票采购订单支付成功,调用业务订单服务处理
-      channelOrderService.paySuccess(order);
-    } else if (BizTypeEnum.TICKET_ORDER == order.getBizType()) {
+      channelOrderService.paySuccess(payOrder);
+    } else if (BizTypeEnum.TICKET_ORDER == payOrder.getBizType()) {
       // 用户盲票购买订单支付成功,调用业务订单服务处理
-      userTicketOrderService.paySuccess(order);
-    } else if (BizTypeEnum.DELIVER_ORDER == order.getBizType()) {
+      userTicketOrderService.paySuccess(payOrder);
+    } else if (BizTypeEnum.DELIVER_ORDER == payOrder.getBizType()) {
       // 用户提货订单支付成功,调用业务订单服务处理
-      userDeliverOrderService.paySuccess(order);
+      userDeliverOrderService.paySuccess(payOrder);
     } else {
       //数据结构异常,告警
       LogUtil.error(logger, "该业务单据类型未支持,orderNo:" + orderNo);

+ 10 - 0
mp-service/src/main/java/com/qs/mp/system/domain/SysUser.java

@@ -101,6 +101,8 @@ public class SysUser extends BaseEntity
     private String gzhOpenId; // 关注公众号的openid
     private String openId;   //绑定微信用户端小程序openId
     private String channelOpenId;   //绑定微信渠道端小程序openId
+
+    private String msdqOpenId;  // 码上兑券小程序openId
     private String unionId;  //用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回
     private String sessionKey; //会话密钥
 
@@ -146,6 +148,14 @@ public class SysUser extends BaseEntity
         this.channelOpenId = channelOpenId;
     }
 
+    public String getMsdqOpenId() {
+        return msdqOpenId;
+    }
+
+    public void setMsdqOpenId(String msdqOpenId) {
+        this.msdqOpenId = msdqOpenId;
+    }
+
     public String getUnionId() {
         return unionId;
     }

+ 18 - 4
mp-service/src/main/java/com/qs/mp/system/domain/vo/WxLoginParams.java

@@ -1,5 +1,7 @@
 package com.qs.mp.system.domain.vo;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -7,18 +9,30 @@ import lombok.Data;
  *
  */
 @Data
+@ApiModel("微信登录入参类")
 public class WxLoginParams {
 
-    private String code;   //微信返回code,用于服务端换取鉴权信息
+    @ApiModelProperty("微信返回code,用于服务端换取鉴权信息")
+    private String code;
+    @ApiModelProperty("用户昵称")
     private String nickName;
+    @ApiModelProperty("用户头像")
     private String avatarUrl;
     /** 微信手机号授权信息,兼容基础类库2.22.1以下版本 */
-    private String encryptedData; // 包括敏感数据在内的完整用户信息的加密数据
-    private String iv; // 加密算法的初始向量
-    private String loginCode; // 调用wx.login获取的code
+    @ApiModelProperty("包括敏感数据在内的完整用户信息的加密数据")
+    private String encryptedData;
+    @ApiModelProperty("加密算法的初始向量")
+    private String iv;
+    @ApiModelProperty("调用wx.login获取的code")
+    private String loginCode;
     /**
      * 登录身份
      */
+    @ApiModelProperty("登录身份")
     private int identity;
 
+
+    @ApiModelProperty("小程序,1盲票,2码上兑券,3支付宝盲票")
+    private Integer appSource;
+
 }

+ 8 - 0
mp-service/src/main/java/com/qs/mp/user/domain/UserDeliverOrder.java

@@ -134,6 +134,14 @@ public class UserDeliverOrder implements Serializable {
   @ApiModelProperty("确认收货时间")
   private Date confirmTime;
 
+  @ApiModelProperty("来源小程序id")
+  @TableField("app_id")
+  private String appId;
+
+  @ApiModelProperty("支付类型1支付宝,2微信,10支付宝直连")
+  @TableField("pay_type")
+  private String payType;
+
   @ApiModelProperty("支付时间")
   @TableField("pay_time")
   private Date payTime;

+ 9 - 0
mp-service/src/main/java/com/qs/mp/user/domain/UserTicketOrder.java

@@ -147,6 +147,15 @@ public class UserTicketOrder implements Serializable {
   @TableField("channel_id")
   private Long channelId;
 
+
+  @ApiModelProperty("来源小程序id")
+  @TableField("app_id")
+  private String appId;
+
+  @ApiModelProperty("支付类型1支付宝,2微信,10支付宝直连")
+  @TableField("pay_type")
+  private String payType;
+
   @ApiModelProperty("支付时间")
   @TableField("pay_time")
   private Date payTime;

+ 16 - 13
mp-service/src/main/java/com/qs/mp/user/domain/param/DeliverOrderParam.java

@@ -7,25 +7,28 @@ import java.util.List;
 import javax.validation.constraints.NotEmpty;
 import lombok.Data;
 
-@ApiModel(value= "提货订单参数")
+@ApiModel(value = "提货订单参数")
 @Data
 public class DeliverOrderParam {
 
-	@ApiModelProperty("订单来源:1提货订单,2现金购买")
-	private DeliverOrderResourceEnum resource;
+    @ApiModelProperty("订单来源:1提货订单,2现金购买")
+    private DeliverOrderResourceEnum resource;
 
-	@ApiModelProperty("商品id")
-	private Long goodsId;
+    @ApiModelProperty("商品id")
+    private Long goodsId;
 
-	@ApiModelProperty("sku Id")
-	private Long skuId;
+    @ApiModelProperty("sku Id")
+    private Long skuId;
 
-	@ApiModelProperty("商品数量")
-	private Integer num;
+    @ApiModelProperty("商品数量")
+    private Integer num;
 
-	@ApiModelProperty(value = "奖品库IDs",required=true)
-	private List<String> ids;
+    @ApiModelProperty(value = "奖品库IDs", required = true)
+    private List<String> ids;
 
-	@ApiModelProperty(value = "地址ID",required=false)
-	private Long addrId;
+    @ApiModelProperty(value = "地址ID", required = false)
+    private Long addrId;
+
+    @ApiModelProperty("小程序,1盲票,2码上兑券,3支付宝盲票")
+    private Integer appSource;
 }

+ 3 - 0
mp-service/src/main/java/com/qs/mp/user/domain/param/TicketOrderParam.java

@@ -23,4 +23,7 @@ public class TicketOrderParam {
 
 	@ApiModelProperty(value = "系统自动选择优惠券,1代表系统自动选择,忽略couponIds,首次请求时传1;0代表以传入的couponIds为准",required=false)
 	private Integer autoCoupon;
+
+	@ApiModelProperty("小程序,1盲票,2码上兑券,3支付宝盲票")
+	private Integer appSource;
 }

+ 20 - 0
mp-service/src/main/java/com/qs/mp/user/domain/param/UserInfoQueryParam.java

@@ -0,0 +1,20 @@
+package com.qs.mp.user.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 用户信息查询入参类
+ * @author Cup
+ * @date 2022/7/11
+ */
+@ApiModel("用户信息查询入参类")
+@Data
+public class UserInfoQueryParam {
+
+
+    @ApiModelProperty("小程序,1盲票,2码上兑券")
+    private Integer appSource;
+
+}

+ 30 - 28
mp-service/src/main/java/com/qs/mp/user/domain/vo/DeliverOrderSettleVO.java

@@ -19,41 +19,43 @@ import lombok.Data;
 @ApiModel("用户提货订单结算出参类")
 public class DeliverOrderSettleVO {
 
-  @ApiModelProperty("订单来源:1提货订单,2现金购买")
-  private Integer resource;
+    @ApiModelProperty("订单来源:1提货订单,2现金购买")
+    private Integer resource;
 
 
-  @ApiModelProperty("用户配送地址")
-  private UserAddr addr;
+    @ApiModelProperty("用户配送地址")
+    private UserAddr addr;
 
-  /**
-   * 订单金额
-   */
-  @ApiModelProperty("订单金额")
-  private Integer orderAmt = 0;
+    /**
+     * 订单金额
+     */
+    @ApiModelProperty("订单金额")
+    private Integer orderAmt = 0;
 
-  /**
-   * 运费
-   */
-  @ApiModelProperty("运费")
-  private Integer freightAmt = 0;
+    /**
+     * 运费
+     */
+    @ApiModelProperty("运费")
+    private Integer freightAmt = 0;
 
-  @ApiModelProperty("运费模板类型 1发货,2不发货")
-  private Integer freightType;
+    @ApiModelProperty("运费模板类型 1发货,2不发货")
+    private Integer freightType;
 
-  @ApiModelProperty("运费备注")
-  private String freightRemark;
+    @ApiModelProperty("运费备注")
+    private String freightRemark;
 
-  /**
-   * 实付金额
-   */
-  @ApiModelProperty("实付金额")
-  private Integer payAmt = 0;
+    /**
+     * 实付金额
+     */
+    @ApiModelProperty("实付金额")
+    private Integer payAmt = 0;
 
-  /**
-   * 奖品库列表
-   */
-  @ApiModelProperty("奖品库列表")
-  List<UserPrizeStorage> prizeList = new ArrayList<>();
+    /**
+     * 奖品库列表
+     */
+    @ApiModelProperty("奖品库列表")
+    List<UserPrizeStorage> prizeList = new ArrayList<>();
 
+    @ApiModelProperty("小程序Id")
+    private String appId;
 }

+ 60 - 44
mp-service/src/main/java/com/qs/mp/user/domain/vo/TicketOrderSettleVO.java

@@ -1,5 +1,7 @@
 package com.qs.mp.user.domain.vo;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import java.util.ArrayList;
 import java.util.List;
 import lombok.Data;
@@ -9,51 +11,65 @@ import lombok.Data;
  * @Date 2022/3/3
  */
 @Data
+@ApiModel("盲票订单结算出参类")
 public class TicketOrderSettleVO {
 
-  /**
-   * 订单金额
-   */
-  private Integer orderAmt = 0;
-
-  /**
-   * 优惠金额
-   */
-  private Integer discountAmt = 0;
-
-  /**
-   * 实付金额
-   */
-  private Integer payAmt = 0;
-
-  /**
-   * 票组ID
-   */
-  private String boxId;
-
-  /**
-   * 订购数量
-   */
-  private Integer orderNum;
-
-  /**
-   * 盲票ID
-   */
-  private String ticketId;
-
-  /**
-   * 盲票图片
-   */
-  private String picUrl;
-
-  /**
-   * 盲票标题
-   */
-  private String title;
-
-  /**
-   * 使用优惠券列表
-   */
-  List<UserCoupon4OrderVO> couponList = new ArrayList<>();
+    /**
+     * 订单金额
+     */
+    @ApiModelProperty("订单金额")
+    private Integer orderAmt = 0;
+
+    /**
+     * 优惠金额
+     */
+    @ApiModelProperty("优惠金额")
+    private Integer discountAmt = 0;
+
+    /**
+     * 实付金额
+     */
+    @ApiModelProperty("实付金额")
+    private Integer payAmt = 0;
+
+    /**
+     * 票组ID
+     */
+    @ApiModelProperty("票组id")
+    private String boxId;
+
+    /**
+     * 订购数量
+     */
+    @ApiModelProperty("订购数量")
+    private Integer orderNum;
+
+    /**
+     * 盲票ID
+     */
+    @ApiModelProperty("盲票id")
+    private String ticketId;
+
+    /**
+     * 盲票图片
+     */
+    @ApiModelProperty("盲票图片")
+    private String picUrl;
+
+    /**
+     * 盲票标题
+     */
+    @ApiModelProperty("盲票图片")
+    private String title;
+
+
+    @ApiModelProperty("小程序appId")
+    private String appId;
+
+    /**
+     * 使用优惠券列表
+     */
+    @ApiModelProperty("使用优惠券列表")
+    List<UserCoupon4OrderVO> couponList = new ArrayList<>();
 
 }

+ 18 - 10
mp-service/src/main/java/com/qs/mp/user/domain/vo/UserCoupon4OrderVO.java

@@ -6,6 +6,8 @@ import com.qs.mp.common.enums.CouponDiscountTypeEnum;
 import com.qs.mp.common.enums.CouponTypeEnum;
 import com.qs.mp.common.enums.CouponUseAreaEnum;
 import com.qs.mp.user.domain.UserCoupon;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -14,20 +16,26 @@ import lombok.Data;
  * @create 2022-03-07 20:45:43
  */
 @Data
+@ApiModel("盲票购买时的优惠券")
 public class UserCoupon4OrderVO {
-  private String id;
 
-  private String title;
+    @ApiModelProperty("id")
+    private String id;
 
-  /**
-   * 图片
-   */
-  private String picUrl;
+    @ApiModelProperty("标题")
+    private String title;
 
-  /**
-   * 优惠金额(比例)
-   */
-  private Integer discount;
+    /**
+     * 图片
+     */
+    @ApiModelProperty("图片")
+    private String picUrl;
+
+    /**
+     * 优惠金额(比例)
+     */
+    @ApiModelProperty("优惠金额(比例)")
+    private Integer discount;
 
 
 }

+ 212 - 204
mp-service/src/main/java/com/qs/mp/user/service/impl/UserDeliverOrderServiceImpl.java

@@ -54,140 +54,144 @@ import org.springframework.util.Assert;
  * @since 2022-03-07
  */
 @Service
-public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMapper, UserDeliverOrder> implements IUserDeliverOrderService {
+public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMapper, UserDeliverOrder> implements
+    IUserDeliverOrderService {
 
-  protected final Logger logger = LoggerFactory.getLogger(this.getClass());
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
 
-  @Autowired
-  private BizIdGenerator bizIdGenerator;
+    @Autowired
+    private BizIdGenerator bizIdGenerator;
 
-  @Autowired
-  private IUserDeliverOrderService userDeliverOrderService;
+    @Autowired
+    private IUserDeliverOrderService userDeliverOrderService;
 
-  @Autowired
-  private IUserDeliverOrderItemService userDeliverOrderItemService;
+    @Autowired
+    private IUserDeliverOrderItemService userDeliverOrderItemService;
 
-  @Autowired
-  private IUserPrizeStorageService userPrizeStorageService;
+    @Autowired
+    private IUserPrizeStorageService userPrizeStorageService;
 
-  @Autowired
-  private IGoodsService goodsService;
+    @Autowired
+    private IGoodsService goodsService;
 
-  @Autowired
-  private IGoodsSkuService goodsSkuService;
+    @Autowired
+    private IGoodsSkuService goodsSkuService;
 
-  @Autowired
-  private IDeliveryCompanyService deliveryCompanyService;
+    @Autowired
+    private IDeliveryCompanyService deliveryCompanyService;
 
-  @Override
-  @Transactional
-  public String submitOrder(Long userId, String memo, DeliverOrderSettleVO orderSettleVO) {
-
-
-
-
-    UserDeliverOrder userDeliverOrder = new UserDeliverOrder();
-    userDeliverOrder.setOrderId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
-    userDeliverOrder.setUserId(userId);
-    userDeliverOrder.setResource(DeliverOrderResourceEnum.getByValue(orderSettleVO.getResource()));
-    UserAddr userAddr = orderSettleVO.getAddr();
-    userDeliverOrder.setReceiver(userAddr.getReceiver());
-    userDeliverOrder.setTel(userAddr.getMobile());
-    userDeliverOrder.setProvince(userAddr.getProvince());
-    userDeliverOrder.setCity(userAddr.getCity());
-    userDeliverOrder.setArea(userAddr.getArea());
-    userDeliverOrder.setAddress(userAddr.getAddr());
-    userDeliverOrder.setOrderNum(orderSettleVO.getPrizeList().stream().mapToInt(UserPrizeStorage::getGoodsNum).sum());
-    userDeliverOrder.setPayAmt(orderSettleVO.getPayAmt());
-    userDeliverOrder.setFreightAmt(orderSettleVO.getFreightAmt());
-    userDeliverOrder.setMemo(memo);
-    if (orderSettleVO.getPayAmt() > 0) {
-      userDeliverOrder.setStatus(DeliverOrderStatusEnum.NOT_PAY);
-    } else {
-      userDeliverOrder.setStatus(DeliverOrderStatusEnum.NOT_DELIVER);
-    }
-    save(userDeliverOrder);
-
-    for (UserPrizeStorage prizeStorage : orderSettleVO.getPrizeList()) {
-      UserDeliverOrderItem orderItem = new UserDeliverOrderItem();
-      orderItem.setItemId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
-      orderItem.setOrderId(userDeliverOrder.getOrderId());
-      orderItem.setStorageId(prizeStorage.getStorageId());
-      orderItem.setGoodsId(prizeStorage.getGoodsId());
-      orderItem.setSkuId(prizeStorage.getSkuId());
-      orderItem.setProperties(prizeStorage.getProperties());
-      orderItem.setTitle(prizeStorage.getTitle());
-      orderItem.setPicUrl(prizeStorage.getPicUrl());
-      orderItem.setGoodsNum(prizeStorage.getGoodsNum());
-      // 设置供应商id和采购链接
-      Goods goods = goodsService.getById(prizeStorage.getGoodsId());
-      orderItem.setSupplierId(goods.getSupplierId());
-      orderItem.setShoppingLink(goods.getShoppingLink());
-
-      userDeliverOrderItemService.save(orderItem);
-        if (DeliverOrderResourceEnum.PAYMENT.getValue().equals(orderSettleVO.getResource())) {
-            // 现金购买需要校验和锁库存
-            if (Objects.nonNull(prizeStorage.getSkuId()) && prizeStorage.getSkuId() != 0) {
-                GoodsSku goodsSku = goodsSkuService.getById(prizeStorage.getSkuId());
-                if (goodsSku.getQuantity() < prizeStorage.getGoodsNum()) {
-                    throw new ServiceException(prizeStorage.getTitle() + "库存不足,请重新下单");
-                }
+    @Override
+    @Transactional
+    public String submitOrder(Long userId, String memo, DeliverOrderSettleVO orderSettleVO) {
+
+        UserDeliverOrder userDeliverOrder = new UserDeliverOrder();
+        userDeliverOrder.setOrderId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
+        userDeliverOrder.setUserId(userId);
+        userDeliverOrder.setResource(DeliverOrderResourceEnum.getByValue(orderSettleVO.getResource()));
+        UserAddr userAddr = orderSettleVO.getAddr();
+        userDeliverOrder.setReceiver(userAddr.getReceiver());
+        userDeliverOrder.setTel(userAddr.getMobile());
+        userDeliverOrder.setProvince(userAddr.getProvince());
+        userDeliverOrder.setCity(userAddr.getCity());
+        userDeliverOrder.setArea(userAddr.getArea());
+        userDeliverOrder.setAddress(userAddr.getAddr());
+        userDeliverOrder.setOrderNum(
+            orderSettleVO.getPrizeList().stream().mapToInt(UserPrizeStorage::getGoodsNum).sum());
+        userDeliverOrder.setPayAmt(orderSettleVO.getPayAmt());
+        userDeliverOrder.setFreightAmt(orderSettleVO.getFreightAmt());
+        userDeliverOrder.setAppId(orderSettleVO.getAppId());
+        userDeliverOrder.setMemo(memo);
+        if (orderSettleVO.getPayAmt() > 0) {
+            userDeliverOrder.setStatus(DeliverOrderStatusEnum.NOT_PAY);
+        } else {
+            userDeliverOrder.setStatus(DeliverOrderStatusEnum.NOT_DELIVER);
+        }
+        save(userDeliverOrder);
+
+        for (UserPrizeStorage prizeStorage : orderSettleVO.getPrizeList()) {
+            UserDeliverOrderItem orderItem = new UserDeliverOrderItem();
+            orderItem.setItemId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
+            orderItem.setOrderId(userDeliverOrder.getOrderId());
+            orderItem.setStorageId(prizeStorage.getStorageId());
+            orderItem.setGoodsId(prizeStorage.getGoodsId());
+            orderItem.setSkuId(prizeStorage.getSkuId());
+            orderItem.setProperties(prizeStorage.getProperties());
+            orderItem.setTitle(prizeStorage.getTitle());
+            orderItem.setPicUrl(prizeStorage.getPicUrl());
+            orderItem.setGoodsNum(prizeStorage.getGoodsNum());
+            // 设置供应商id和采购链接
+            Goods goods = goodsService.getById(prizeStorage.getGoodsId());
+            orderItem.setSupplierId(goods.getSupplierId());
+            orderItem.setShoppingLink(goods.getShoppingLink());
+
+            userDeliverOrderItemService.save(orderItem);
+            if (DeliverOrderResourceEnum.PAYMENT.getValue().equals(orderSettleVO.getResource())) {
+                // 现金购买需要校验和锁库存
+                if (Objects.nonNull(prizeStorage.getSkuId()) && prizeStorage.getSkuId() != 0) {
+                    GoodsSku goodsSku = goodsSkuService.getById(prizeStorage.getSkuId());
+                    if (goodsSku.getQuantity() < prizeStorage.getGoodsNum()) {
+                        throw new ServiceException(prizeStorage.getTitle() + "库存不足,请重新下单");
+                    }
 
-                // 更新库存
-                boolean updateSku = goodsSkuService.update(new LambdaUpdateWrapper<GoodsSku>()
+                    // 更新库存
+                    boolean updateSku = goodsSkuService.update(new LambdaUpdateWrapper<GoodsSku>()
                         .set(GoodsSku::getQuantity, goodsSku.getQuantity() - prizeStorage.getGoodsNum())
                         .set(GoodsSku::getSoldQty, goodsSku.getSoldQty() + prizeStorage.getGoodsNum())
                         .eq(GoodsSku::getSkuId, goodsSku.getSkuId())
                         .eq(GoodsSku::getQuantity, goodsSku.getQuantity())
                         .eq(GoodsSku::getSoldQty, goodsSku.getSoldQty()));
-                Assert.isTrue(updateSku, "现金购买商品更新SKU库存失败。goodsId:" + goodsSku.getGoodsId() + ",skuId:" + goodsSku.getSkuId());
+                    Assert.isTrue(updateSku,
+                        "现金购买商品更新SKU库存失败。goodsId:" + goodsSku.getGoodsId() + ",skuId:" + goodsSku.getSkuId());
 
-            } else {
-                if (goods.getQuantity() < prizeStorage.getGoodsNum()) {
-                    throw new ServiceException(prizeStorage.getTitle() + "库存不足,请重新下单");
-                }
-                // 更新库存
-                boolean updateGoods = goodsService.update(new LambdaUpdateWrapper<Goods>()
-                        .set(goods.getQuantity() - prizeStorage.getGoodsNum() == 0, Goods::getStatus, GoodsStatusEnum.PUT_OFF)
+                } else {
+                    if (goods.getQuantity() < prizeStorage.getGoodsNum()) {
+                        throw new ServiceException(prizeStorage.getTitle() + "库存不足,请重新下单");
+                    }
+                    // 更新库存
+                    boolean updateGoods = goodsService.update(new LambdaUpdateWrapper<Goods>()
+                        .set(goods.getQuantity() - prizeStorage.getGoodsNum() == 0, Goods::getStatus,
+                            GoodsStatusEnum.PUT_OFF)
                         .set(Goods::getQuantity, goods.getQuantity() - prizeStorage.getGoodsNum())
                         .set(Goods::getExchangedQty, goods.getExchangedQty() + prizeStorage.getGoodsNum())
-                        .eq(Goods::getGoodsId, goods.getGoodsId()).eq(Goods::getQuantity, goods.getQuantity()).eq(Goods::getExchangedQty, goods.getExchangedQty()));
-                Assert.isTrue(updateGoods, "现金购买商品更新GOODS库存失败。goodsId:" + goods.getGoodsId() );
-            }
+                        .eq(Goods::getGoodsId, goods.getGoodsId()).eq(Goods::getQuantity, goods.getQuantity())
+                        .eq(Goods::getExchangedQty, goods.getExchangedQty()));
+                    Assert.isTrue(updateGoods, "现金购买商品更新GOODS库存失败。goodsId:" + goods.getGoodsId());
+                }
 
-        } else {
-            boolean rtn = userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
+            } else {
+                boolean rtn = userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
                     .set(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.HAS_DISTRIBUTED)
                     .eq(UserPrizeStorage::getStorageId, prizeStorage.getStorageId()));
 
-            Assert.isTrue(rtn, "提交提货订单时,更新状态失败。userDeliverOrder:" + JSONObject.toJSONString(userDeliverOrder));
+                Assert.isTrue(rtn, "提交提货订单时,更新状态失败。userDeliverOrder:" + JSONObject.toJSONString(userDeliverOrder));
+
+            }
 
         }
 
+        return userDeliverOrder.getOrderId();
     }
 
-    return userDeliverOrder.getOrderId();
-  }
-
 
     @Override
-  @Transactional(rollbackFor = Exception.class)
-  public boolean cancelOrder(String orderId) {
-    UserDeliverOrder userDeliverOrder = getById(orderId);
-    if (userDeliverOrder.getStatus() != DeliverOrderStatusEnum.NOT_PAY) {
-      LogUtil.warn(logger, "取消提货订单时,订单状态不是待支付,忽略。orderId:{0}, status:{1}",
-          orderId, userDeliverOrder.getStatus());
-      return false;
-    }
-    List<UserDeliverOrderItem> orderItemList = userDeliverOrderItemService.list(new LambdaQueryWrapper<UserDeliverOrderItem>()
-            .eq(UserDeliverOrderItem::getOrderId, userDeliverOrder.getOrderId()));
-    if (DeliverOrderResourceEnum.PAYMENT.equals(userDeliverOrder.getResource())) {
-        // 恢复商品库存状态
-        for (UserDeliverOrderItem orderItem : orderItemList) {
-            if (Objects.nonNull(orderItem.getSkuId()) && orderItem.getSkuId() != 0) {
-                GoodsSku goodsSku = goodsSkuService.getById(orderItem.getSkuId());
-                if (Objects.nonNull(goodsSku)) {
-                    boolean updateSku = goodsSkuService.update(new LambdaUpdateWrapper<GoodsSku>()
+    @Transactional(rollbackFor = Exception.class)
+    public boolean cancelOrder(String orderId) {
+        UserDeliverOrder userDeliverOrder = getById(orderId);
+        if (userDeliverOrder.getStatus() != DeliverOrderStatusEnum.NOT_PAY) {
+            LogUtil.warn(logger, "取消提货订单时,订单状态不是待支付,忽略。orderId:{0}, status:{1}",
+                orderId, userDeliverOrder.getStatus());
+            return false;
+        }
+        List<UserDeliverOrderItem> orderItemList = userDeliverOrderItemService.list(
+            new LambdaQueryWrapper<UserDeliverOrderItem>()
+                .eq(UserDeliverOrderItem::getOrderId, userDeliverOrder.getOrderId()));
+        if (DeliverOrderResourceEnum.PAYMENT.equals(userDeliverOrder.getResource())) {
+            // 恢复商品库存状态
+            for (UserDeliverOrderItem orderItem : orderItemList) {
+                if (Objects.nonNull(orderItem.getSkuId()) && orderItem.getSkuId() != 0) {
+                    GoodsSku goodsSku = goodsSkuService.getById(orderItem.getSkuId());
+                    if (Objects.nonNull(goodsSku)) {
+                        boolean updateSku = goodsSkuService.update(new LambdaUpdateWrapper<GoodsSku>()
                             .set(GoodsSku::getQuantity, goodsSku.getQuantity() + orderItem.getGoodsNum())
                             .set(GoodsSku::getSoldQty, goodsSku.getSoldQty() - orderItem.getGoodsNum())
                             .eq(GoodsSku::getSkuId, goodsSku.getSkuId())
@@ -195,79 +199,80 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
                             .eq(GoodsSku::getQuantity, goodsSku.getQuantity())
                             .eq(GoodsSku::getSoldQty, goodsSku.getSoldQty()));
 
-                    Assert.isTrue(updateSku, "现金购买商品取消订单更新SKU库存失败。goodsId:" + goodsSku.getGoodsId() + ",skuId:" + goodsSku.getSkuId());
-                }
-            } else {
-                Goods goods = goodsService.getById(orderItem.getGoodsId());
-                // 更新库存
-                boolean updateGoods = goodsService.update(new LambdaUpdateWrapper<Goods>()
+                        Assert.isTrue(updateSku,
+                            "现金购买商品取消订单更新SKU库存失败。goodsId:" + goodsSku.getGoodsId() + ",skuId:" + goodsSku.getSkuId());
+                    }
+                } else {
+                    Goods goods = goodsService.getById(orderItem.getGoodsId());
+                    // 更新库存
+                    boolean updateGoods = goodsService.update(new LambdaUpdateWrapper<Goods>()
                         .set(Goods::getStatus, GoodsStatusEnum.PUT_ON)
                         .set(Goods::getQuantity, goods.getQuantity() + orderItem.getGoodsNum())
                         .set(Goods::getExchangedQty, goods.getExchangedQty() - orderItem.getGoodsNum())
                         .eq(Goods::getGoodsId, goods.getGoodsId())
                         .eq(Goods::getQuantity, goods.getQuantity())
                         .eq(Goods::getExchangedQty, goods.getExchangedQty()));
-                Assert.isTrue(updateGoods, "现金购买商品取消订单更新GOODS库存失败。goodsId:" + goods.getGoodsId() );
+                    Assert.isTrue(updateGoods, "现金购买商品取消订单更新GOODS库存失败。goodsId:" + goods.getGoodsId());
+                }
             }
-        }
-    }else {
-        // 恢复奖品库状态
-        for (UserDeliverOrderItem orderItem : orderItemList) {
-            boolean rtn = userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
+        } else {
+            // 恢复奖品库状态
+            for (UserDeliverOrderItem orderItem : orderItemList) {
+                boolean rtn = userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
                     .set(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.NOT_DISTRIBUTED)
                     .eq(UserPrizeStorage::getStorageId, orderItem.getStorageId())
                     .eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.HAS_DISTRIBUTED));
-            Assert.isTrue(rtn, "取消提货订单时,更新奖品库里奖品状态失败。orderItem:" + JSONObject.toJSONString(orderItem));
+                Assert.isTrue(rtn, "取消提货订单时,更新奖品库里奖品状态失败。orderItem:" + JSONObject.toJSONString(orderItem));
+            }
         }
+        userDeliverOrder.setStatus(DeliverOrderStatusEnum.CANCELED);
+        boolean updateRst = updateById(userDeliverOrder);
+        Assert.isTrue(updateRst, "取消提货订单时,更新提货订单状态失败。userDeliverOrder:" + JSONObject.toJSONString(userDeliverOrder));
+
+        return true;
     }
-    userDeliverOrder.setStatus(DeliverOrderStatusEnum.CANCELED);
-    boolean updateRst = updateById(userDeliverOrder);
-    Assert.isTrue(updateRst, "取消提货订单时,更新提货订单状态失败。userDeliverOrder:" + JSONObject.toJSONString(userDeliverOrder));
-
-
-    return true;
-  }
-
-  @Override
-  @Transactional
-  public boolean paySuccess(PayOrder payOrder) {
-    UserDeliverOrder deliverOrder = getById(payOrder.getBizId());
-    if (null == deliverOrder || deliverOrder.getStatus() != DeliverOrderStatusEnum.NOT_PAY) {
-      LogUtil.error(logger, "支付回调用户提货订单处理,订单状态异常,不是待支付。payOrder:{0}, deliverOrder:{1}",
-          JSONObject.toJSONString(payOrder), JSONObject.toJSONString(deliverOrder));
-      throw new ServiceException("支付回调用户提货订单处理,订单状态异常,不是待支付。orderId:" + payOrder.getBizId());
+
+    @Override
+    @Transactional
+    public boolean paySuccess(PayOrder payOrder) {
+        UserDeliverOrder deliverOrder = getById(payOrder.getBizId());
+        if (null == deliverOrder || deliverOrder.getStatus() != DeliverOrderStatusEnum.NOT_PAY) {
+            LogUtil.error(logger, "支付回调用户提货订单处理,订单状态异常,不是待支付。payOrder:{0}, deliverOrder:{1}",
+                JSONObject.toJSONString(payOrder), JSONObject.toJSONString(deliverOrder));
+            throw new ServiceException("支付回调用户提货订单处理,订单状态异常,不是待支付。orderId:" + payOrder.getBizId());
+        }
+        deliverOrder.setStatus(DeliverOrderStatusEnum.NOT_DELIVER);
+        deliverOrder.setPayTime(DateUtils.parseDate(payOrder.getCompleteDate()));
+        deliverOrder.setPayType(payOrder.getPayResource());
+        boolean rst = updateById(deliverOrder);
+        Assert.isTrue(rst, "支付回调用户提货订单处理,更新订单状态失败,orderId:" + deliverOrder.getOrderId());
+        return false;
     }
-    deliverOrder.setStatus(DeliverOrderStatusEnum.NOT_DELIVER);
-      deliverOrder.setPayTime(DateUtils.parseDate(payOrder.getCompleteDate()));
-    boolean rst = updateById(deliverOrder);
-    Assert.isTrue(rst, "支付回调用户提货订单处理,更新订单状态失败,orderId:" + deliverOrder.getOrderId());
-    return false;
-  }
-
-	@Override
-	public List<UserDeliverOrderVO> selectUserDeliverOrderVoList(Wrapper<UserDeliverOrder> wrapper) {
-		return getBaseMapper().selectUserDeliverOrderVoList(wrapper);
-	}
-
-	@Override
-	public int selectUserDeliverOrderCount(Wrapper<UserDeliverOrder> wrapper) {
-		return getBaseMapper().selectUserDeliverOrderCount(wrapper);
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public boolean userDeliverOrderShip(String orderId, List<UserDeliverOrderItem> itemList) {
-		boolean res = userDeliverOrderItemService.updateBatchById(itemList);
-		if(res) {
-			// 检测订单是否全部提货完成
-			LambdaQueryWrapper<UserDeliverOrderItem> queryWrapper = new LambdaQueryWrapper<UserDeliverOrderItem>();
-			queryWrapper.eq(UserDeliverOrderItem::getOrderId, orderId);
-			queryWrapper.isNull(UserDeliverOrderItem::getDeliveryTime);
-			int noShipCnt = userDeliverOrderItemService.count(queryWrapper);
-			// 部分发货是订单状态仍保留待发货状态, 全部发完的时候再修改订单状态为待收货
-			LambdaUpdateWrapper<UserDeliverOrder> updateWrapper = new LambdaUpdateWrapper<UserDeliverOrder>();
-			updateWrapper.eq(UserDeliverOrder::getOrderId, orderId);
-			if(noShipCnt == 0) {
+
+    @Override
+    public List<UserDeliverOrderVO> selectUserDeliverOrderVoList(Wrapper<UserDeliverOrder> wrapper) {
+        return getBaseMapper().selectUserDeliverOrderVoList(wrapper);
+    }
+
+    @Override
+    public int selectUserDeliverOrderCount(Wrapper<UserDeliverOrder> wrapper) {
+        return getBaseMapper().selectUserDeliverOrderCount(wrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean userDeliverOrderShip(String orderId, List<UserDeliverOrderItem> itemList) {
+        boolean res = userDeliverOrderItemService.updateBatchById(itemList);
+        if (res) {
+            // 检测订单是否全部提货完成
+            LambdaQueryWrapper<UserDeliverOrderItem> queryWrapper = new LambdaQueryWrapper<UserDeliverOrderItem>();
+            queryWrapper.eq(UserDeliverOrderItem::getOrderId, orderId);
+            queryWrapper.isNull(UserDeliverOrderItem::getDeliveryTime);
+            int noShipCnt = userDeliverOrderItemService.count(queryWrapper);
+            // 部分发货是订单状态仍保留待发货状态, 全部发完的时候再修改订单状态为待收货
+            LambdaUpdateWrapper<UserDeliverOrder> updateWrapper = new LambdaUpdateWrapper<UserDeliverOrder>();
+            updateWrapper.eq(UserDeliverOrder::getOrderId, orderId);
+            if (noShipCnt == 0) {
                 // 判断订单是否全部都是无需物流; 有发货时间并且物流单号是空的就是无需物流
                 LambdaQueryWrapper<UserDeliverOrderItem> userDeliverOrderItemLambdaQueryWrapper = new LambdaQueryWrapper<>();
                 userDeliverOrderItemLambdaQueryWrapper.eq(UserDeliverOrderItem::getOrderId, orderId);
@@ -291,13 +296,13 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
                     updateWrapper.set(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.NOT_CONFIRM);
                 }
 
-            }else {
-				updateWrapper.set(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.PART_DELIVER);
-			}
-			return userDeliverOrderService.update(updateWrapper);
-		}
-		return false;
-	}
+            } else {
+                updateWrapper.set(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.PART_DELIVER);
+            }
+            return userDeliverOrderService.update(updateWrapper);
+        }
+        return false;
+    }
 
     @Override
     public String batchShip(List<DeliverOrderExcel> deliverOrderExcelList) {
@@ -312,8 +317,9 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
             String failContent = "";
             boolean flag = true;
 
-
-            DeliveryCompany deliveryCompany = deliveryCompanyService.getOne(new LambdaQueryWrapper<DeliveryCompany>().eq(DeliveryCompany::getCompanyName, deliverOrderExcel.getCompanyName()));
+            DeliveryCompany deliveryCompany = deliveryCompanyService.getOne(
+                new LambdaQueryWrapper<DeliveryCompany>().eq(DeliveryCompany::getCompanyName,
+                    deliverOrderExcel.getCompanyName()));
             if (Objects.isNull(deliveryCompany)) {
                 flag = false;
                 failContent = "物流公司不存在";
@@ -331,7 +337,8 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
                     flag = false;
                     failContent = "订单不存在";
                 } else {
-                    if (!DeliverOrderStatusEnum.NOT_DELIVER.equals(userDeliverOrder.getStatus()) && !DeliverOrderStatusEnum.PART_DELIVER.equals(userDeliverOrder.getStatus())) {
+                    if (!DeliverOrderStatusEnum.NOT_DELIVER.equals(userDeliverOrder.getStatus())
+                        && !DeliverOrderStatusEnum.PART_DELIVER.equals(userDeliverOrder.getStatus())) {
                         flag = false;
                         failContent = "订单状态不为待发货和部分发货";
                     }
@@ -340,7 +347,8 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
 
             if (flag) {
                 // 校验订单信息
-                UserDeliverOrderItem userDeliverOrderItem = userDeliverOrderItemService.getById(deliverOrderExcel.getItemId());
+                UserDeliverOrderItem userDeliverOrderItem = userDeliverOrderItemService.getById(
+                    deliverOrderExcel.getItemId());
                 if (Objects.isNull(userDeliverOrderItem)) {
                     flag = false;
                     failContent = "订单明细ID不存在";
@@ -368,27 +376,27 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
             if (!flag) {
                 failNum++;
                 failSb.append("订单编号:")
-                        .append(deliverOrderExcel.getOrderId())
-                        .append("&nbsp;&nbsp;&nbsp;&nbsp;商品ID:")
-                        .append(deliverOrderExcel.getGoodsId())
-                        .append("&nbsp;&nbsp;&nbsp;&nbsp;商品名称:")
-                        .append(deliverOrderExcel.getTitle())
-                        .append("&nbsp;&nbsp;&nbsp;&nbsp;发货失败原因:")
-                        .append(failContent)
-                        .append("<br>");
+                    .append(deliverOrderExcel.getOrderId())
+                    .append("&nbsp;&nbsp;&nbsp;&nbsp;商品ID:")
+                    .append(deliverOrderExcel.getGoodsId())
+                    .append("&nbsp;&nbsp;&nbsp;&nbsp;商品名称:")
+                    .append(deliverOrderExcel.getTitle())
+                    .append("&nbsp;&nbsp;&nbsp;&nbsp;发货失败原因:")
+                    .append(failContent)
+                    .append("<br>");
             } else {
                 successNum++;
             }
         }
 
         sb.append("<div>发货成功:")
-                .append(successNum)
-                .append("<br>")
-                .append("发货失败:")
-                .append(failNum)
-                .append("<br>")
-                .append(failSb)
-                .append("</div>");
+            .append(successNum)
+            .append("<br>")
+            .append("发货失败:")
+            .append(failNum)
+            .append("<br>")
+            .append(failSb)
+            .append("</div>");
 
         return sb.toString();
     }
@@ -404,9 +412,9 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
             if (DeliverTypeEnum.NO_DELIVER.getValue().equals(deliveryType)) {
                 // 无需物流,设置物流信息为空
                 res = userDeliverOrderItemService.update(new LambdaUpdateWrapper<UserDeliverOrderItem>()
-                        .set(UserDeliverOrderItem::getDeliveryId, null)
-                        .set(UserDeliverOrderItem::getDeliveryFlowId, null)
-                        .eq(UserDeliverOrderItem::getItemId, itemId));
+                    .set(UserDeliverOrderItem::getDeliveryId, null)
+                    .set(UserDeliverOrderItem::getDeliveryFlowId, null)
+                    .eq(UserDeliverOrderItem::getItemId, itemId));
                 // 查询判断是否所有都是无需物流
                 LambdaQueryWrapper<UserDeliverOrderItem> userDeliverOrderItemLambdaQueryWrapper = new LambdaQueryWrapper<>();
                 userDeliverOrderItemLambdaQueryWrapper.eq(UserDeliverOrderItem::getOrderId, shipParam.getOrderId());
@@ -422,19 +430,19 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
                 // 如果相等则表示所有商品都是无需物流,直接设置订单状态为已完成,并且设置订单的发货和收货时间
                 if (orderItemCount == noNeedShipCnt) {
                     res = userDeliverOrderService.update(new LambdaUpdateWrapper<UserDeliverOrder>()
-                            .set(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.FINISHED)
-                            .set(UserDeliverOrder::getConfirmTime, new Date())
-                            .set(UserDeliverOrder::getDeliveryTime, new Date())
-                            .eq(UserDeliverOrder::getOrderId, shipParam.getOrderId()));
+                        .set(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.FINISHED)
+                        .set(UserDeliverOrder::getConfirmTime, new Date())
+                        .set(UserDeliverOrder::getDeliveryTime, new Date())
+                        .eq(UserDeliverOrder::getOrderId, shipParam.getOrderId()));
                 }
 
 
             } else if (DeliverTypeEnum.DELIVER.getValue().equals(deliveryType)) {
                 // 快递发货,原逻辑
                 res = userDeliverOrderItemService.update(new LambdaUpdateWrapper<UserDeliverOrderItem>()
-                        .set(UserDeliverOrderItem::getDeliveryId, shipParam.getDeliveryId())
-                        .set(UserDeliverOrderItem::getDeliveryFlowId, shipParam.getDeliveryFlowId())
-                        .eq(UserDeliverOrderItem::getItemId, itemId));
+                    .set(UserDeliverOrderItem::getDeliveryId, shipParam.getDeliveryId())
+                    .set(UserDeliverOrderItem::getDeliveryFlowId, shipParam.getDeliveryFlowId())
+                    .eq(UserDeliverOrderItem::getItemId, itemId));
             }
 
         }
@@ -442,9 +450,9 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
     }
 
     @Override
-	public UserDeliverOrderVO selectUserDeliverOrderVo(String orderId) {
-		return getBaseMapper().selectUserDeliverOrderVo(orderId);
-	}
+    public UserDeliverOrderVO selectUserDeliverOrderVo(String orderId) {
+        return getBaseMapper().selectUserDeliverOrderVo(orderId);
+    }
 
 
 }

+ 4 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java

@@ -187,6 +187,7 @@ public class UserTicketOrderServiceImpl extends
         userTicketOrder.setMemo("");
         userTicketOrder.setResource(TicketTypeEnum.ONLINE);
         userTicketOrder.setCouponInfo(couponIds);
+        userTicketOrder.setAppId(orderSettleVO.getAppId());
         userTicketOrder.setStatus(UserTicketOrderStatusEnum.NOT_PAY);
         if (orderSettleVO.getPayAmt() == 0) {
             userTicketOrder.setCommStatus(CommStatusEnum.YES); // 无需结佣,直接置为已结佣
@@ -285,6 +286,7 @@ public class UserTicketOrderServiceImpl extends
         ticketOrder.setPayAmt(orderSettleVO.getPayAmt());
         ticketOrder.setTicketNum(1);
         ticketOrder.setMemo("");
+        ticketOrder.setAppId(orderSettleVO.getAppId());
         ticketOrder.setResource(TicketTypeEnum.OFFLINE);
         ticketOrder.setCouponInfo(couponIds);
         ticketOrder.setStatus(UserTicketOrderStatusEnum.NOT_PAY);
@@ -426,6 +428,7 @@ public class UserTicketOrderServiceImpl extends
             throw new ServiceException("支付回调用户购票订单处理,订单状态异常,不是待支付。orderId:" + payOrder.getBizId());
         }
         ticketOrder.setPayTime(DateUtils.parseDate(payOrder.getCompleteDate()));
+        ticketOrder.setPayType(payOrder.getPayResource());
 
         // 插入异步任务
         Assert.isTrue(asyncTaskService.insertAsyncTask(AsyncTaskTypeEnum.TICKET_PAY, payOrder.getBizId()),
@@ -485,6 +488,7 @@ public class UserTicketOrderServiceImpl extends
             new LambdaUpdateWrapper<UserTicketOrder>().set(UserTicketOrder::getStatus,
                     UserTicketOrderStatusEnum.FINISHED)
                 .set(UserTicketOrder::getPayTime, ticketOrder.getPayTime())
+                .set(UserTicketOrder::getPayType, ticketOrder.getPayType())
                 .eq(UserTicketOrder::getOrderId, ticketOrder.getOrderId())
                 .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.NOT_PAY));
         Assert.isTrue(updateRst, "支付回调用户购票订单处理,更新订单状态失败,orderId:" + ticketOrder.getOrderId());

+ 3 - 1
mp-service/src/main/resources/mapper/system/SysUserMapper.xml

@@ -25,6 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="remark"       column="remark"       />
 		<result property="gzhOpenId"       column="gzh_open_id"       />
 		<result property="openId"       column="open_id"       />
+		<result property="msdqOpenId"       column="msdq_open_id"       />
 		<result property="aliuserId"       column="aliuser_id"       />
 		<result property="channelOpenId"       column="channel_open_id"       />
 		<result property="unionId"       column="union_id"       />
@@ -54,7 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 	<sql id="selectUserVo">
         select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
-        u.gzh_open_id,u.open_id,u.aliuser_id,u.channel_open_id,u.union_id,u.session_key,d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status,
+        u.gzh_open_id,u.open_id,u.msdq_open_id,u.aliuser_id,u.channel_open_id,u.union_id,u.session_key,d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status,
         r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
         from sys_user u
 		    left join sys_dept d on u.dept_id = d.dept_id
@@ -204,6 +205,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="openId != null">open_id = #{openId},</if>
 			<if test="aliuserId != null ">aliuser_id = #{aliuserId},</if>
 			<if test="channelOpenId != null">channel_open_id = #{channelOpenId},</if>
+			<if test="msdqOpenId != null">msdq_open_id = #{msdqOpenId},</if>
 			<if test="unionId != null">union_id = #{unionId},</if>
 			<if test="sessionKey != null">session_key = #{sessionKey},</if>
  			update_time = sysdate()