Bläddra i källkod

Merge remote-tracking branch 'origin/feature/0721-tenant' into feature/0721-tenant

Eric 1 år sedan
förälder
incheckning
6350eb7acb

+ 30 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/EActivationCode.java

@@ -0,0 +1,30 @@
+package com.yonge.cooleshow.common.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+public enum EActivationCode implements BaseEnum<String, EActivationCode> {
+
+    SEND("已发"),
+    WAIT("未发"),
+    ;
+
+    @EnumValue
+    private String code;
+
+    private String desc;
+
+    EActivationCode(String desc) {
+        this.code = this.name();
+        this.desc = desc;
+    }
+
+    @Override
+    public String getCode() {
+        return name();
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+}

+ 99 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserPaymentClient.java

@@ -0,0 +1,99 @@
+package com.yonge.cooleshow.admin.controller.open;
+
+import com.alibaba.fastjson.JSON;
+import com.microsvc.toolkit.common.response.template.R;
+import com.microsvc.toolkit.common.webportal.exception.BizException;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.microsvc.toolkit.middleware.payment.common.api.PaymentServiceContext;
+import com.microsvc.toolkit.middleware.payment.common.api.entity.PaymentResp;
+import com.microsvc.toolkit.middleware.payment.common.api.entity.RefundResp;
+import com.yonge.cooleshow.biz.dal.service.UserOrderService;
+import com.yonge.cooleshow.biz.dal.service.UserPaymentCoreService;
+import com.yonge.cooleshow.biz.dal.service.UserPaymentOrderService;
+import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Objects;
+
+@Slf4j
+@RestController
+@RequestMapping("/open/userOrder")
+@Api(tags = "开放权限接口-支付回调")
+public class UserPaymentClient {
+
+    @Autowired
+    private PaymentServiceContext paymentServiceContext;
+    @Autowired
+    private UserPaymentCoreService userPaymentCoreService;
+    @Autowired
+    private UserPaymentOrderService userPaymentOrderService;
+
+    @Autowired
+    private UserOrderService userOrderService;
+
+    /**
+     * 支付消息回调
+     * @param request HttpServletRequest
+     * @return String
+     */
+    @ApiOperation(value = "支付消息回调", notes = "三方支付平台支付消息通知")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "vendor", value = "服务提供方", dataType = "String")
+    })
+    @RequestMapping(value = "/payment/callback/{vendor}", method = {RequestMethod.GET, RequestMethod.POST})
+    public String payment(@PathVariable("vendor") String vendor, HttpServletRequest request) {
+
+        // 支付回调消息
+        PaymentResp paymentResp = paymentServiceContext.getPaymentService(vendor).callbackNotifyForPay(request);
+        if (Objects.isNull(paymentResp)) {
+            return null;
+        }
+        log.info("payment vendor={}, paymentResp={}", vendor, JSON.toJSONString(paymentResp));
+        // 支付订单确认
+        UserPaymentOrderWrapper.UserPaymentOrder paymentOrder = userPaymentOrderService
+                .getUserPaymentOrderByOrderNo(paymentResp.getTransNo(), paymentResp.getMerOrderNo());
+        if (Objects.isNull(paymentOrder)) {
+            return paymentResp.getMsg();
+        }
+
+        // 执行支付回调流程
+        userPaymentCoreService.executePaymentCallback(paymentResp);
+
+        return paymentServiceContext.getPaymentService(vendor).returnNotifyResult(request);
+    }
+
+    @ApiOperation(value = "用户付款", notes = "用户付款")
+    @PostMapping("/executePayment")
+    public R<UserPaymentOrderWrapper.PaymentReq> executePayment(@Validated @RequestBody UserPaymentOrderWrapper.PaymentOrderReqConfig config) {
+
+        // 用户登录状态校验
+        if (StringUtils.isBlank(config.getUserId())) {
+            throw BizException.from("用户未登录");
+        }
+
+        // 用户下单请求
+        UserPaymentOrderWrapper.PaymentOrderReqConfig reqConfig = UserPaymentOrderWrapper.PaymentOrderReqConfig.from(config.jsonString());
+
+        JwtUserInfo<Object> userInfo = JwtUserInfo.builder()
+            .userId(config.getUserId())
+            .clientType(config.getUserType().getCode())
+            .build();
+        // 创建用户支付数据
+        UserPaymentOrderWrapper.PaymentReq paymentConfig = userPaymentCoreService.executePayment(userInfo, reqConfig);
+        if (Objects.isNull(paymentConfig)) {
+            throw BizException.from("用户支付请求错误");
+        }
+
+        return R.from(paymentConfig);
+    }
+
+}

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantActivationCode.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.yonge.cooleshow.common.enums.EActivationCode;
 import lombok.Data;
 
 import io.swagger.annotations.ApiModel;
@@ -44,7 +45,7 @@ public class TenantActivationCode implements Serializable {
 
     @ApiModelProperty("发送状态(WAIT,SEND)") 
 	@TableField(value = "send_status_")
-    private String sendStatus;
+    private EActivationCode sendStatus;
 
     @ApiModelProperty("激活状态") 
 	@TableField(value = "activation_status_")

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TenantActivationCodeService.java

@@ -2,8 +2,10 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantActivationCodeWrapper;
 import com.yonge.cooleshow.biz.dal.entity.TenantActivationCode;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -46,4 +48,14 @@ public interface TenantActivationCodeService extends IService<TenantActivationCo
     void sendActivationCode(Long tenantId, Long tenantAlbumPurchaseId, List<String> activationCodeList, List<Long> studentIdList);
 
     void active(String activationCode, Long studentId);
+
+
+
+    /**
+     * 添加用户机构专辑激活记录
+     *
+     * @param studentId 学生ID
+     * @param userOrderDetailVo 订单详情
+     */
+    void addUserTenantAlbumRecord(Long studentId, UserOrderDetailVo userOrderDetailVo);
 }

+ 0 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserPaymentCoreService.java

@@ -48,7 +48,6 @@ public interface UserPaymentCoreService {
      */
     UserPaymentOrderWrapper.PaymentReq executePayment(JwtUserInfo<?> userInfo, UserPaymentOrderWrapper.PaymentOrderReqConfig reqConfig);
 
-    @Transactional
     UserPaymentOrderWrapper.PaymentConfig executeOrder(UserPaymentOrderWrapper.UserPaymentOrder orderReq);
 
     /**

+ 81 - 34
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantActivationCodeServiceImpl.java

@@ -5,11 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dao.StudentDao;
-import com.yonge.cooleshow.biz.dal.entity.Student;
-import com.yonge.cooleshow.biz.dal.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.entity.TenantActivationCode;
-import com.yonge.cooleshow.biz.dal.entity.TenantAlbumPurchase;
-import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;
+import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
@@ -17,7 +13,11 @@ import com.yonge.cooleshow.biz.dal.mapper.TenantActivationCodeMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumPurchaseMapper;
 import com.yonge.cooleshow.biz.dal.mapper.UserTenantAlbumRecordMapper;
 import com.yonge.cooleshow.biz.dal.service.TenantActivationCodeService;
+import com.yonge.cooleshow.biz.dal.service.TenantAlbumService;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantActivationCodeWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
+import com.yonge.cooleshow.common.enums.EActivationCode;
 import com.yonge.toolset.base.exception.BizException;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
@@ -51,6 +51,9 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
     @Autowired
     private UserTenantAlbumRecordMapper userTenantAlbumRecordMapper;
 
+    @Autowired
+    private TenantAlbumService tenantAlbumService;
+
     /**
      * 查询详情
      *
@@ -138,7 +141,7 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
         for (Long studentId : studentIds) {
             for (TenantActivationCode tenantActivationCode : tenantActivationCodes) {
                 boolean update = this.lambdaUpdate()
-                        .set(TenantActivationCode::getSendStatus, "SEND")
+                        .set(TenantActivationCode::getSendStatus, EActivationCode.SEND.getCode())
                         .set(TenantActivationCode::getActivationPhone, idPhoneMap.get(studentId))
                         .eq(TenantActivationCode::getActivationStatus, false)
                         .eq(TenantActivationCode::getId, tenantActivationCode.getId())
@@ -151,6 +154,7 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void active(String activationCode, Long studentId) {
         Student student = studentDao.selectById(studentId);
         if (student == null) {
@@ -184,32 +188,86 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
         if (!update) {
             throw new BizException("激活码已经被使用");
         }
+        Long tenantAlbumPurchaseId = code.getTenantAlbumPurchaseId();
+        TenantAlbumPurchase purchase = tenantAlbumPurchaseMapper.selectById(tenantAlbumPurchaseId);
+        Integer purchaseCycle = purchase.getPurchaseCycle();
+
+
+        addUserTenantAlbumRecord(student.getUserId(), purchase,null);
+
+        // 更新购买记录中激活码使用统计数量值
+        Integer activeCodeNumber = this.lambdaQuery()
+                .eq(TenantActivationCode::getTenantId, tenantId)
+                .eq(TenantActivationCode::getTenantAlbumPurchaseId, code.getTenantAlbumPurchaseId())
+                .eq(TenantActivationCode::getActivationStatus, true).count();
+
+        TenantAlbumPurchase tenantAlbumPurchase = new TenantAlbumPurchase();
+        tenantAlbumPurchase.setId(code.getTenantAlbumPurchaseId());
+        tenantAlbumPurchase.setActiveQuantity(activeCodeNumber);
+        tenantAlbumPurchaseMapper.updateById(tenantAlbumPurchase);
+    }
+
+
+    /**
+     * 添加用户机构专辑激活记录
+     *
+     * @param studentId 学生ID
+     * @param userOrderDetailVo 订单详情
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addUserTenantAlbumRecord(Long studentId, UserOrderDetailVo userOrderDetailVo) {
+        addUserTenantAlbumRecord(studentId, null, userOrderDetailVo);
+
+    }
+
+    private void addUserTenantAlbumRecord(Long studentId, TenantAlbumPurchase purchase, UserOrderDetailVo userOrderDetailVo) {
+
+
+        UserTenantAlbumRecord userTenantAlbumRecord = new UserTenantAlbumRecord();
+        if (userOrderDetailVo != null) {
+
+            TenantAlbumWrapper.TenantAlbumContent tenantAlbumContent = JSON
+                    .parseObject(JSON.toJSONString(userOrderDetailVo.getBizContent()), TenantAlbumWrapper.TenantAlbumContent.class);
+
+            userTenantAlbumRecord.setTenantId(tenantAlbumContent.getTenantId());
+            userTenantAlbumRecord.setUserId(studentId);
+            userTenantAlbumRecord.setTenantAlbumId(tenantAlbumContent.getTenantAlbumId());
+            userTenantAlbumRecord.setOrderNo(userOrderDetailVo.getOrderNo());
+            userTenantAlbumRecord.setSourceType(SourceTypeEnum.ORDER);
+            userTenantAlbumRecord.setClientType(ClientEnum.STUDENT);
+            userTenantAlbumRecord.setSubOrderNo(userOrderDetailVo.getSubOrderNo());
+            userTenantAlbumRecord.setCreateBy(studentId);
+            userTenantAlbumRecord.setTimes(tenantAlbumContent.getBuyCycle());
+        } else if (purchase != null) {
+
+            userTenantAlbumRecord.setTenantId(purchase.getTenantId());
+            userTenantAlbumRecord.setUserId(studentId);
+            userTenantAlbumRecord.setTenantAlbumId(purchase.getTenantAlbumId());
+            userTenantAlbumRecord.setOrderNo(purchase.getId().toString());
+            userTenantAlbumRecord.setSourceType(SourceTypeEnum.TENANT);
+            userTenantAlbumRecord.setClientType(ClientEnum.STUDENT);
+            userTenantAlbumRecord.setSubOrderNo(purchase.getId().toString());
+            userTenantAlbumRecord.setCreateBy(studentId);
+            userTenantAlbumRecord.setTimes(purchase.getPurchaseCycle());
+        }
+
+
 
         QueryWrapper<UserTenantAlbumRecord> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda()
-                .eq(UserTenantAlbumRecord::getTenantId, student.getTenantId())
-                .eq(UserTenantAlbumRecord::getUserId, student.getUserId())
-                .eq(UserTenantAlbumRecord::getTenantAlbumId, code.getTenantAlbumId())
+                .eq(UserTenantAlbumRecord::getTenantId, userTenantAlbumRecord.getTenantId())
+                .eq(UserTenantAlbumRecord::getUserId, studentId)
+                .eq(UserTenantAlbumRecord::getTenantAlbumId, userTenantAlbumRecord.getTenantAlbumId())
                 .eq(UserTenantAlbumRecord::getClientType, ClientEnum.STUDENT)
                 .orderByDesc(UserTenantAlbumRecord::getEndTime);
         List<UserTenantAlbumRecord> userTenantAlbumRecords = userTenantAlbumRecordMapper.selectList(queryWrapper);
 
-        UserTenantAlbumRecord userTenantAlbumRecord = new UserTenantAlbumRecord();
-        userTenantAlbumRecord.setTenantId(student.getTenantId());
-        userTenantAlbumRecord.setUserId(student.getUserId());
-        userTenantAlbumRecord.setTenantAlbumId(code.getTenantAlbumId());
-        userTenantAlbumRecord.setOrderNo("");
-        userTenantAlbumRecord.setSourceType(SourceTypeEnum.TENANT);
-        userTenantAlbumRecord.setClientType(ClientEnum.STUDENT);
-        userTenantAlbumRecord.setSubOrderNo("");
-        userTenantAlbumRecord.setCreateBy(student.getUserId());
+        userTenantAlbumRecord.setUserId(studentId);
+        userTenantAlbumRecord.setCreateBy(studentId);
 
-        Long tenantAlbumPurchaseId = code.getTenantAlbumPurchaseId();
-        TenantAlbumPurchase purchase = tenantAlbumPurchaseMapper.selectById(tenantAlbumPurchaseId);
-        Integer purchaseCycle = purchase.getPurchaseCycle();
 
         userTenantAlbumRecord.setType("MONTH");
-        userTenantAlbumRecord.setTimes(purchaseCycle);
 
         Calendar instance = Calendar.getInstance();
         if (userTenantAlbumRecords.isEmpty()) {
@@ -226,19 +284,8 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
             }
         }
         userTenantAlbumRecord.setStartTime(instance.getTime());
-        instance.add(Calendar.MONTH, purchaseCycle);
+        instance.add(Calendar.MONTH, userTenantAlbumRecord.getTimes());
         userTenantAlbumRecord.setEndTime(instance.getTime());
         userTenantAlbumRecordMapper.insert(userTenantAlbumRecord);
-
-        // 更新购买记录中激活码使用统计数量值
-        Integer activeCodeNumber = this.lambdaQuery()
-                .eq(TenantActivationCode::getTenantId, tenantId)
-                .eq(TenantActivationCode::getTenantAlbumPurchaseId, code.getTenantAlbumPurchaseId())
-                .eq(TenantActivationCode::getActivationStatus, true).count();
-
-        TenantAlbumPurchase tenantAlbumPurchase = new TenantAlbumPurchase();
-        tenantAlbumPurchase.setId(code.getTenantAlbumPurchaseId());
-        tenantAlbumPurchase.setActiveQuantity(activeCodeNumber);
-        tenantAlbumPurchaseMapper.updateById(tenantAlbumPurchase);
     }
 }

+ 57 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantAlbumServiceImpl.java

@@ -2,11 +2,14 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.entity.*;
+import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
+import com.yonge.cooleshow.common.enums.EActivationCode;
 import com.yonge.toolset.base.exception.BizException;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +21,7 @@ import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumMapper;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -44,6 +48,12 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
     @Autowired
     private UserOrderService userOrderService;
 
+    @Autowired
+    private TenantActivationCodeService tenantActivationCodeService;
+
+    @Autowired
+    private TenantAlbumPurchaseService tenantAlbumPurchaseService;
+
     /**
      * 查询详情
      * @param id 详情ID
@@ -102,9 +112,10 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
             throw new BizException("订单商品信息为空");
         }
 
-        TenantAlbumWrapper.TenantAlbumBuy tenantAlbumBuy = JSON
-                .parseObject(JSON.toJSONString(orderGoodsInfo.getBizContent()), TenantAlbumWrapper.TenantAlbumBuy.class);
-        if (tenantAlbumBuy == null) {
+
+        TenantAlbumWrapper.TenantAlbumContent tenantAlbumContent = JSON
+                .parseObject(JSON.toJSONString(orderGoodsInfo.getBizContent()), TenantAlbumWrapper.TenantAlbumContent.class);
+        if (tenantAlbumContent == null) {
             log.error("订单创建前检测,订单商品信息为空");
             throw new BizException("订单商品信息为空");
         }
@@ -148,8 +159,10 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
                 }
                 price = tenantAlbum.getSalePrice();
                 userOrderDetail.setMerchId(tenantInfo.getId());
-                tenantAlbumBuy.setBuyCycle(1);
-                tenantAlbumBuy.setBuyNumber(1);
+                tenantAlbumContent.setBuyMultiple(1);
+                tenantAlbumContent.setBuyNumber(1);
+                tenantAlbumContent.setBuyCycle(tenantAlbumContent.getBuyCycle());
+                tenantAlbumContent.setTenantId(tenantInfo.getId());
                 break;
             }
 
@@ -166,6 +179,8 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
                 }
                 price = tenantAlbum.getOriginalPrice();
                 userOrderDetail.setMerchId(0L);
+                tenantAlbumContent.setTenantId(tenantStaff.getTenantId());
+                tenantAlbumContent.setBuyCycle(tenantAlbumContent.getBuyCycle()*tenantAlbumContent.getBuyMultiple());
                 break;
             }
         }
@@ -174,9 +189,10 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
 
         userOrderDetail.setGoodUrl(userOrderService.getGoodUrlByType(orderGoodsInfo.getGoodType()));
         userOrderDetail.setBizId(tenantAlbum.getId());
+        userOrderDetail.setBizContent(JSON.toJSONString(tenantAlbumContent));
         userOrderDetail.setGoodNum(orderGoodsInfo.getGoodNum());
         userOrderDetail.setOriginalPrice(price.multiply(new BigDecimal(orderGoodsInfo.getGoodNum()))
-                .multiply(new BigDecimal(tenantAlbumBuy.getBuyCycle())));
+                .multiply(new BigDecimal(tenantAlbumContent.getBuyCycle())));
         userOrderDetail.setCouponAmount(BigDecimal.ZERO);
         userOrderDetail.setExpectPrice(userOrderDetail.getOriginalPrice());
         userOrderDetail.setActualPrice(userOrderDetail.getExpectPrice().subtract(userOrderDetail.getCouponAmount()));
@@ -195,9 +211,43 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
     public void orderSuccess(UserOrderDetailVo userOrderDetailVo) {
 
         // 学生 插入机构专辑购买数据
+        // 学生购买机构专辑
+        switch (userOrderDetailVo.getOrderClient()) {
+            case STUDENT: {
+                tenantActivationCodeService.addUserTenantAlbumRecord(userOrderDetailVo.getUserId(),userOrderDetailVo);
 
+                break;
+            }
 
-        // 机构   插入机构专辑购买记录,生成机构专辑激活码
+            case TENANT: {
+                // 机构   插入机构专辑购买记录,生成机构专辑激活码
+
+                TenantAlbumWrapper.TenantAlbumContent tenantAlbumContent = JSON
+                        .parseObject(JSON.toJSONString(userOrderDetailVo.getBizContent()), TenantAlbumWrapper.TenantAlbumContent.class);
+                TenantAlbumPurchase tenantAlbumPurchase = new TenantAlbumPurchase();
+                tenantAlbumPurchase.setTenantId(userOrderDetailVo.getMerchId());
+                tenantAlbumPurchase.setTenantAlbumId(userOrderDetailVo.getBizId());
+                tenantAlbumPurchase.setPurchaseTime(userOrderDetailVo.getCreateTime());
+                tenantAlbumPurchase.setPurchaseQuantity(userOrderDetailVo.getGoodNum());
+                tenantAlbumPurchase.setPurchaseCycle(tenantAlbumContent.getBuyCycle());
+                tenantAlbumPurchase.setActiveQuantity(0);
+                tenantAlbumPurchase.setPurchaseStatus(OrderStatusEnum.PAID.getCode());
+                tenantAlbumPurchaseService.save(tenantAlbumPurchase);
+
+                List<TenantActivationCode> tenantActivationCodes = new ArrayList<>();
+                for (int i = 0; i < userOrderDetailVo.getGoodNum(); i++) {
+                    TenantActivationCode tenantActivationCode = new TenantActivationCode();
+                    tenantActivationCode.setTenantId(tenantAlbumContent.getTenantId());
+                    tenantActivationCode.setTenantAlbumId(tenantAlbumContent.getTenantAlbumId());
+                    tenantActivationCode.setTenantAlbumPurchaseId(tenantAlbumPurchase.getId());
+                    tenantActivationCode.setActivationCode(String.valueOf(IdWorker.getId()));
+                    tenantActivationCode.setSendStatus(EActivationCode.WAIT);
+                    tenantActivationCodes.add(tenantActivationCode);
+                }
+                tenantActivationCodeService.saveBatch(tenantActivationCodes);
+                break;
+            }
+        }
 
     }
 }

+ 2 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java

@@ -553,9 +553,9 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         redisCacheService.saveUserOrderConfig(String.valueOf(orderReq.getUserId()), orderReq.getOrderType().getCode(), reqConfig.jsonString());
 
         // 若订单无需支付,直接完成订单,VIP购买
-        /*if (BigDecimal.ZERO.compareTo(orderReq.getPaymentCashAmount()) == 0 && EPaymentType.VIP == orderReq.getOrderType()) {
+        if (BigDecimal.ZERO.compareTo(orderReq.getPaymentCashAmount()) == 0) {
             executePaymentSuccess(orderReq, null);
-        }*/
+        }
 
         return UserPaymentOrderWrapper.PaymentConfig.builder()
             .orderNo(orderReq.getOrderNo())
@@ -938,6 +938,4 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         //log.info("scheduleUpdatePaymentOrderStatus PAYMENT_FINISH ------> ");
     }
 
-
-
 }

+ 23 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantAlbumWrapper.java

@@ -92,4 +92,27 @@ public class TenantAlbumWrapper {
 
     }
 
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" TenantAlbumContent-机构专辑采购信息")
+    public static class TenantAlbumContent {
+
+        @ApiModelProperty("专辑ID")
+        private Long tenantAlbumId;
+
+        @ApiModelProperty("采购数量")
+        private Integer buyNumber;
+
+        @ApiModelProperty("采购倍数")
+        private Integer buyMultiple;
+
+        @ApiModelProperty(value = "采购周期",hidden = true)
+        private Integer buyCycle;
+
+        @ApiModelProperty("采购机构")
+        private Long tenantId;
+
+    }
 }

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/UserPaymentOrderWrapper.java

@@ -566,6 +566,9 @@ public class UserPaymentOrderWrapper {
         @ApiModelProperty("支付用户Id")
         private String userId;
 
+        @ApiModelProperty("支付用户类型")
+        private ClientEnum userType;
+
         public String jsonString() {
             return JSON.toJSONString(this);
         }