Selaa lähdekoodia

Merge branch 'develop' of http://git.dayaedu.com/yonge/cooleshow

zouxuan 1 vuosi sitten
vanhempi
commit
b5db9394a0
16 muutettua tiedostoa jossa 160 lisäystä ja 34 poistoa
  1. 0 5
      cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TeacherController.java
  2. 7 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenTeacherController.java
  3. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherSubmitReq.java
  4. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TenantActivationCodeService.java
  5. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  6. 1 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java
  7. 43 11
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PaymentDivMemberRecordServiceImpl.java
  8. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  9. 12 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  10. 25 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantActivationCodeServiceImpl.java
  11. 18 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java
  12. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SysUserMapper.xml
  13. 1 3
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TeacherController.java
  14. 9 0
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java
  15. 7 0
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenTeacherController.java
  16. 21 0
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/vo/TenantActivationCodeVo.java

+ 0 - 5
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TeacherController.java

@@ -57,15 +57,10 @@ public class TeacherController extends BaseController {
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "详情", notes = "传入id")
     public HttpResponseResult<TeacherVo> detail(@PathVariable("id") Long userId) {
-        TenantInfo tenantInfo = getTenantInfo();
-
         TeacherVo detail = teacherService.findTeacherDetailInfo(userId);
         if (detail == null) {
             throw new BizException("数据不存在");
         }
-        if (tenantInfo.getId().equals(detail.getTenantId())) {
-            throw new BizException("非法请求");
-        }
         if (!CollectionUtils.isEmpty(detail.getStyleVideo())) {
             List<TeacherStyleVideo> styleVideo = detail.getStyleVideo();
             List<TeacherStyleVideo> collect =

+ 7 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenTeacherController.java

@@ -9,6 +9,7 @@ import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -38,6 +39,12 @@ public class OpenTeacherController extends BaseController {
     @PostMapping("/submit")
     @ApiOperation(value = "新增", notes = "传入teacher")
     public HttpResponseResult<Boolean> submit(@Valid @RequestBody TeacherSubmitReq teacherSubmitReq) {
+
+        // 验证码不能为空
+        if (StringUtils.isBlank(teacherSubmitReq.getCode())) {
+            throw new BizException("验证码不能为空");
+        }
+
         Long tenantId = teacherSubmitReq.getTenantId();
         if (tenantId == null) {
             throw new BizException("未选择机构");

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherSubmitReq.java

@@ -56,6 +56,9 @@ public class TeacherSubmitReq implements Serializable {
     @ApiModelProperty("是否解绑")
     private Boolean bindTenant;
 
+    @ApiModelProperty("邀请码验证码")
+    private String code;
+
     public Long getUserId() {
         return userId;
     }

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TenantActivationCodeService.java

@@ -6,7 +6,6 @@ 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 com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -76,4 +75,6 @@ public interface TenantActivationCodeService extends IService<TenantActivationCo
                           Long tenantId, Long userId, Long tenantAlbumPurchaseId);
 
     void activeById(String id, Long userId);
+
+    void resend(String code, Long userId, Long tenantId, Long tenantAlbumPurchaseId);
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java

@@ -1333,7 +1333,7 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
                 couponInfoService.updateUserOrderCouponInfo(CouponOrderWrapper.builder().orderNo(order.getOrderNo()).reset(true).build());
             } catch (Exception e) {
                 log.warn("直播课成课失败退款 退款失败,退款订单号 {}", order);
-                log.error("直播课成课失败退款 退款失败", e.getCause());
+                log.error("直播课成课失败退款 退款失败", e);
             }
         }
     }

+ 1 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java

@@ -1,33 +1,23 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import java.math.BigDecimal;
-import java.text.MessageFormat;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.stream.Collectors;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetOrderSearch;
 import com.yonge.cooleshow.biz.dal.entity.*;
-import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.ActivityPlanVo;
 import com.yonge.cooleshow.biz.dal.vo.ShareProfitVo;
-import com.yonge.cooleshow.biz.dal.dao.AlbumMusicRelateDao;
-import com.yonge.cooleshow.biz.dal.dao.MusicSheetDao;
-import com.yonge.cooleshow.biz.dal.dao.MusicSheetPurchaseRecordDao;
-import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
-import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
 import com.yonge.cooleshow.biz.dal.vo.StudentMusicAlbumOrderVo;
-import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.enums.ActivityShareEnum;
@@ -551,6 +541,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         return album;
     }
 
+
     @Override
     public TenantAlbumWrapper.TenantAlbum tenantDetailAlbum(String albumId) {
         Long tenantAlbumId;

+ 43 - 11
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PaymentDivMemberRecordServiceImpl.java

@@ -141,6 +141,10 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
     @Autowired
     private RedisCacheService redisCacheService;
 
+    @Autowired
+    private StudentService studentService;
+
+
     /**
      * 查询详情
      *
@@ -339,12 +343,15 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
             serviceFeeAmount = actualPrice;
         }
 
-        // 消息通知
-//        CompletableFuture.runAsync(() -> {
-//                    musicSheetService.sendBuyMessage(userPaymentOrder.getMerchId(), userPaymentOrder.getUserId(),
-//                            userPaymentOrder.getBizId(), userPaymentOrder.getOrderClient(), userPaymentOrder.getOrderType());
-//                }
-//        );
+        // 平台学生 发送推送
+        if(checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient())) {
+            // 消息通知
+            CompletableFuture.runAsync(() -> {
+                        musicSheetService.sendBuyMessage(userPaymentOrder.getMerchId(), userPaymentOrder.getUserId(),
+                                userPaymentOrder.getBizId(), userPaymentOrder.getOrderClient(), userPaymentOrder.getOrderType());
+                    }
+            );
+        }
 
 
         // 计算分润
@@ -352,6 +359,19 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
     }
 
+    private boolean checkSendMessage(Long userId, ClientEnum orderClient) {
+        if (orderClient == null) {
+            return false;
+        }
+        if (orderClient.equals(ClientEnum.STUDENT)) {
+            Student student = studentService.getById(userId);
+            if (student == null) {
+                return false;
+            } else return student.getTenantId() == -1;
+        }
+        return true;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void practiceCourse(UserOrderDetailVo userPaymentOrder) {
@@ -462,7 +482,11 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
 
         //消息推送
         try {
-//            courseScheduleService.practiceSend(paymentList.get(0).getTeacherId(), userPaymentOrder.getUserId(), paymentList.size() + "", orderNo);
+
+            // 平台学生 发送推送
+            if(checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient())) {
+                courseScheduleService.practiceSend(paymentList.get(0).getTeacherId(), userPaymentOrder.getUserId(), paymentList.size() + "", orderNo);
+            }
         } catch (Exception e) {
             log.error("陪练课消息推送失败");
         }
@@ -587,7 +611,12 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         }
         log.info("buyLiveCourseSuccess ok");
         //课程购买成功后进行消息推送
-//        courseGroupService.buyLiveSendMessage(studentPayment, courseGroup);
+
+        // 平台学生 发送推送
+        if(checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient())) {
+            courseGroupService.buyLiveSendMessage(studentPayment, courseGroup);
+        }
+
     }
 
     @Override
@@ -665,7 +694,10 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
 
 
-//        videoLessonPurchaseRecordService.videoSend(lessonGroup.getTeacherId(), purchaseRecord.getStudentId(), lessonGroup);
+        // 平台学生 发送推送
+        if(checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient())) {
+            videoLessonPurchaseRecordService.videoSend(lessonGroup.getTeacherId(), purchaseRecord.getStudentId(), lessonGroup);
+        }
 
         // 赠品曲目、专辑插入用户曲目购买记录表
         List<CourseRelationMusicAlbum> musicAlbums = courseRelationMusicAlbumService.lambdaQuery()
@@ -742,7 +774,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         // 计算分润
         teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount);
 
-        memberPriceSettingsService.orderSuccess(userPaymentOrder,false);
+        memberPriceSettingsService.orderSuccess(userPaymentOrder,checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient()));
 
         saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
     }
@@ -768,7 +800,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount);
 
 
-        activityPlanService.orderSuccess(userPaymentOrder,false);
+        activityPlanService.orderSuccess(userPaymentOrder,checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient()));
 
         saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
     }

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java

@@ -59,6 +59,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.text.MessageFormat;
+import java.text.ParseException;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -459,6 +460,13 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
             if (!subjectNames.contains(student.getSubjectName())) {
                 errMsg.add(String.format("第%s行声部不支持", msgRowNo));
             }
+            try {
+                if(!StringUtils.isEmpty(student.getBirthday())){
+                    LocalDate.parse(student.getBirthday(), DateTimeFormatter.ISO_LOCAL_DATE);
+                }
+            }catch (Exception e) {
+                errMsg.add(String.format("第%s行生日格式错误", msgRowNo));
+            }
 
             if (errMsg.size() > 100) {
                 break;
@@ -633,6 +641,7 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         com.yonge.cooleshow.biz.dal.entity.SysUser sysUser = sysUserMapper.selectById(studentInfo.getId());
         sysUser.setGender(studentInfo.getGender());
         sysUser.setAvatar(student.getAvatar());
+        sysUser.setUsername(studentInfo.getName());
         sysUserMapper.updateById(sysUser);
         return true;
     }

+ 12 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -174,6 +174,9 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     @Autowired
     private TenantAlbumRefMapper tenantAlbumRefMapper;
 
+    @Autowired
+    private SmsCodeService smsCodeService;
+
 
     @Autowired
     private ImGroupCoreService imGroupCoreService;
@@ -246,6 +249,14 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     @Transactional(rollbackFor = BizException.class)
     public HttpResponseResult<Boolean> submit(TeacherSubmitReq teacherSubmitReq) throws BizException {
         if (null == teacherSubmitReq.getUserId()) {
+
+            if (StringUtils.isNoneBlank(teacherSubmitReq.getPhone(), teacherSubmitReq.getCode())) {
+                // 验证手机验证码是否正确
+                if (!smsCodeService.verifyValidCode(teacherSubmitReq.getPhone(), teacherSubmitReq.getCode(),
+                        MessageTypeEnum.SMS_VERIFY_CODE_REGISTER.getCode())) {
+                    throw new BizException("验证码错误");
+                }
+            }
             //创建
             return doCreate(teacherSubmitReq);
         } else {
@@ -455,7 +466,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     private SysUser updateSysUser(TeacherSubmitReq teacherSubmitReq) {
         //判断手机号
         SysUser sysUser = employeeDao.querySysUserByPhone(teacherSubmitReq.getPhone());
-        if (null != sysUser && !teacherSubmitReq.getUserId().equals(sysUser.getId())) {
+        if (null != sysUser && !teacherSubmitReq.getUserId().equals(sysUser.getId()) && sysUser.getUserType().contains(ClientEnum.TEACHER.getCode())) {
             throw new BizException("该手机号已经被注册");
         }
         sysUser = employeeDao.querySysUserById(teacherSubmitReq.getUserId());

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

@@ -276,6 +276,31 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
 
     }
 
+    @Override
+    public void resend(String code, Long userId, Long tenantId, Long tenantAlbumPurchaseId) {
+        // 查询激活码信息
+        TenantActivationCode one = this.lambdaQuery()
+                .eq(TenantActivationCode::getActivationCode, code)
+                .eq(TenantActivationCode::getTenantId, tenantId)
+                .eq(TenantActivationCode::getTenantAlbumPurchaseId, tenantAlbumPurchaseId)
+                .eq(TenantActivationCode::getSendStatus, EActivationCode.SEND)
+                .last("limit 1")
+                .one();
+        if(one == null) {
+            throw new BizException("当前激活码不可以重发");
+        }
+        if (Boolean.TRUE.equals(one.getActivationStatus())) {
+            throw new BizException("激活码已经被使用");
+        }
+
+        SysUser sysUser = sysUserMapper.selectById(userId);
+        if (sysUser == null) {
+            throw new BizException("用户不存在");
+        }
+        one.setActivationPhone(sysUser.getPhone());
+        this.updateById(one);
+    }
+
 
     /**
      * 添加用户机构专辑激活记录

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

@@ -109,7 +109,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
     private PaymentDivMemberRecordService paymentDivMemberRecordService;
 
     @Autowired
-    private StudentService studentService;
+    private TenantAlbumMusicService tenantAlbumMusicService;
 
 
     @Autowired
@@ -963,6 +963,23 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         if (payTypeReq.getClientType().equals(ClientEnum.TENANT)) {
             resp.setPaymentVersion(EPaymentVersion.V2);
         }
+        //检查曲目数量
+        if(payTypeReq.getGoodType() == GoodTypeEnum.MUSIC){
+            //机构专辑曲目数
+            List<TenantAlbumMusic> tenantAlbumMusiclist = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getTenantAlbumId, payTypeReq.getBizId())
+                    .eq(TenantAlbumMusic::getDelFlag,false).list();
+            List<Long> musicSheetIds = tenantAlbumMusiclist.stream().map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
+            if(CollectionUtils.isNotEmpty(musicSheetIds)){
+                Integer count = musicSheetService.lambdaQuery().in(MusicSheet::getId, musicSheetIds)
+                        .eq(MusicSheet::getState, true)
+                        .eq(MusicSheet::getDelFlag, false).count();
+                if(count < 1){
+                    throw new BizException("当前教程不可购买");
+                }
+            }else {
+                throw new BizException("当前教程不可购买");
+            }
+        }
         // 检测商品是属于老师,老师是否设置的结算给机构
 
         switch (payTypeReq.getGoodType()) {

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -64,7 +64,7 @@
                 )
             </if>
             <if test="client.code == 'STUDENT'">
-                AND t.tenant_id_ == -1
+                AND t.tenant_id_ = -1
             </if>
         </where>
 

+ 1 - 3
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TeacherController.java

@@ -114,10 +114,8 @@ public class TeacherController extends BaseController {
             if (teacher == null) {
                 throw new BizException("老师不存在");
             }
-        } else {
-            // 新增 默认机构为操作人的机构
-            teacherSubmitReq.setTenantId(tenantInfo.getId());
         }
+        teacherSubmitReq.setTenantId(tenantInfo.getId());
         return teacherService.submit(teacherSubmitReq);
     }
 

+ 9 - 0
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java

@@ -138,6 +138,15 @@ public class TenantActivationCodeController extends BaseController {
         return succeed();
     }
 
+
+    @ApiOperation(value = "激活码重发", notes = "机构激活码- 传入 TenantActivationCodeVo.TenantActivationCodeSend")
+    @PostMapping("/resend")
+    public HttpResponseResult<Boolean> resend(@Validated @RequestBody TenantActivationCodeVo.TenantActivationCodeResend send) {
+        TenantInfo tenantInfo = getTenantInfo();
+        tenantActivationCodeService.resend(send.getCode(),send.getUserId(),tenantInfo.getId(),send.getTenantAlbumPurchaseId());
+        return succeed();
+    }
+
     @ApiOperation(value = "激活码发放取消", notes = "传入 激活码的ID")
     @PostMapping("/sendCancel")
     public HttpResponseResult<Boolean> sendCancel(@RequestParam("id") Long id) {

+ 7 - 0
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenTeacherController.java

@@ -9,6 +9,7 @@ import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -38,6 +39,12 @@ public class OpenTeacherController extends BaseController {
     @PostMapping("/submit")
     @ApiOperation(value = "新增", notes = "传入teacher")
     public HttpResponseResult<Boolean> submit(@Valid @RequestBody TeacherSubmitReq teacherSubmitReq) {
+
+        // 验证码不能为空
+        if (StringUtils.isBlank(teacherSubmitReq.getCode())) {
+            throw new BizException("验证码不能为空");
+        }
+
         Long tenantId = teacherSubmitReq.getTenantId();
         if (tenantId == null) {
             throw new BizException("未选择机构");

+ 21 - 0
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/vo/TenantActivationCodeVo.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
 import java.util.ArrayList;
@@ -34,6 +35,26 @@ public class TenantActivationCodeVo {
         private List<Long> studentIdList = new ArrayList<>();
     }
 
+
+    @Data
+    @ApiModel(" TenantActivationCodeSend-机构激活码重发")
+    public static class TenantActivationCodeResend {
+
+
+        @ApiModelProperty("专辑购买记录的ID")
+        @NotNull(message = "专辑购买记录的ID不能为空")
+        private Long tenantAlbumPurchaseId;
+
+        @ApiModelProperty("激活码")
+        @NotBlank(message = "激活码不能为空")
+        private String code;
+
+        @ApiModelProperty("用户ID")
+        @NotNull(message = "用户ID不能为空")
+        private Long userId;
+    }
+
+
     @Data
     @ApiModel(" TenantActivationCode-机构激活码")
     public static class TenantActivationCode {