瀏覽代碼

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

Eric 1 年之前
父節點
當前提交
618dd0f1e7
共有 23 個文件被更改,包括 304 次插入122 次删除
  1. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/SysMusicCompareRecordQueryInfo.java
  2. 20 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseCoursewareServiceImpl.java
  3. 6 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  4. 7 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  5. 18 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java
  6. 25 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  7. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  8. 12 11
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  9. 80 66
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantActivationCodeServiceImpl.java
  10. 17 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantAlbumServiceImpl.java
  11. 29 18
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  12. 8 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserTenantAlbumRecordServiceImpl.java
  13. 6 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonPurchaseRecordServiceImpl.java
  14. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentVo.java
  15. 3 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantActivationCodeWrapper.java
  16. 1 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantUnbindHistoryWrapper.java
  17. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  18. 9 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml
  19. 24 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/open/UserPaymentClient.java
  20. 26 4
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/open/UserPaymentClient.java
  21. 1 0
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TeacherController.java
  22. 1 1
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java
  23. 2 1
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantInfoController.java

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/SysMusicCompareRecordQueryInfo.java

@@ -54,6 +54,9 @@ public class SysMusicCompareRecordQueryInfo {
 
         @ApiModelProperty(name = "排序方式")
         private String sortType = "DESC";
+
+        @ApiModelProperty(name = "客户端")
+        private String clientId = "student";
     }
 
     @Data

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

@@ -13,11 +13,14 @@ import com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment;
 import com.yonge.cooleshow.biz.dal.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.enums.AudioTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
 import com.yonge.cooleshow.biz.dal.service.CourseCoursewareService;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
+import com.yonge.cooleshow.biz.dal.service.TenantAlbumMusicService;
 import com.yonge.cooleshow.biz.dal.vo.CourseCoursewareVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import org.apache.commons.collections.CollectionUtils;
@@ -56,6 +59,9 @@ public class CourseCoursewareServiceImpl extends ServiceImpl<CourseCoursewareDao
     @Autowired
     private TeacherDao teacherDao;
 
+    @Autowired
+    private TenantAlbumMusicService tenantAlbumMusicService;
+
 	@Override
     public CourseCoursewareVo detail(Long id) {
         return baseMapper.detail(id);
@@ -159,6 +165,20 @@ public class CourseCoursewareServiceImpl extends ServiceImpl<CourseCoursewareDao
             }
         }
 
+        // 查询老师所在机构存在机构曲目
+        if (query.getClientType().equals(ClientEnum.TEACHER)) {
+            TeacherVo detail = teacherDao.detail(query.getUserId());
+            if (detail != null) {
+                List<Long> list = tenantAlbumMusicService.getMusicIdsByTenantIds(detail.getTenantId());
+
+                for (CourseCoursewareVo record : records) {
+                    if (list.contains(record.getMusicSheetId())) {
+                        record.setStatus(YesOrNoEnum.YES);
+                    }
+                }
+            }
+        }
+
         courseCoursewareVoIPage.setRecords(records);
         return courseCoursewareVoIPage;
     }

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

@@ -939,7 +939,12 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         if(CollectionUtils.isNotEmpty(teacherSalaryList)){
             courseScheduleTeacherSalaryService.getDao().insertBatch(teacherSalaryList);
             //写老师账户
-            addTeacherAccount(orderParam, teacherSalaryList, totalExpectPrice);
+
+            // 判断是否结算给老师,不结算,不写入老师入账记录
+            Teacher teacher = teacherService.getById(courseGroup.getTeacherId());
+            if (teacher != null && teacher.getIsSettlement() != null && teacher.getIsSettlement()) {
+                addTeacherAccount(orderParam, teacherSalaryList, totalExpectPrice);
+            }
         }
         log.info("buyLiveCourseSuccess ok");
         //课程购买成功后进行消息推送

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

@@ -1186,8 +1186,13 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         if (CollectionUtils.isNotEmpty(teacherSalaryList)) {
             courseScheduleTeacherSalaryService.getDao().insertBatch(teacherSalaryList);
             log.info("buyPracticeCourseSuccess ok");
-            //写老师账户
-            addTeacherAccount(orderParam, teacherSalaryList);
+
+            // 判断是否结算给老师,不结算,不写入老师入账记录
+            Teacher teacher = teacherService.getById(teacherId);
+            if (teacher != null && teacher.getIsSettlement() != null && teacher.getIsSettlement()) {
+                //写老师账户
+                addTeacherAccount(orderParam, teacherSalaryList);
+            }
         }
 
         Set<Long> studentIds = new HashSet();

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

@@ -460,6 +460,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
     @Override
     public TenantAlbumWrapper.TenantAlbum detailAlbum(String albumId) {
         Long tenantAlbumId;
+        Integer size = 0;
         TenantAlbumWrapper.TenantAlbum album = new TenantAlbumWrapper.TenantAlbum();
         if (StringUtils.isEmpty(albumId)){
             //如果没传专辑id  则查询对应机构的专辑详情
@@ -486,6 +487,12 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
             tenantAlbumId = Long.parseLong(albumId);
         }
 
+        //获取对应机构专辑状态
+        TenantAlbum one = tenantAlbumService.lambdaQuery().eq(TenantAlbum::getId, tenantAlbumId).last("limit 1").one();
+        if (!ObjectUtil.isEmpty(one)){
+            album.setStatus(one.getStatus());
+        }
+
 
         //查询对应专辑的详情
         List<TenantAlbum> list = tenantAlbumService.lambdaQuery().eq(TenantAlbum::getStatus, true).eq(TenantAlbum::getId, tenantAlbumId).list();
@@ -504,7 +511,10 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         List<TenantAlbumMusic> tenantAlbumMusiclist = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getTenantAlbumId, tenantAlbumId)
                 .eq(TenantAlbumMusic::getDelFlag,false).list();
         List<Long> MusicSheetIds = tenantAlbumMusiclist.stream().map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
-        int size = MusicSheetIds.size();
+        if (CollectionUtils.isNotEmpty(MusicSheetIds)){
+            size = musicSheetService.lambdaQuery().in(MusicSheet::getId, MusicSheetIds).eq(MusicSheet::getState, true)
+                    .eq(MusicSheet::getDelFlag, false).count();
+        }
 
         //获取合奏曲目数量
         List<TenantAlbumMusic> ensembleLits = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getSubjectType, "ENSEMBLE")
@@ -580,6 +590,13 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
 
         TenantAlbumWrapper.TenantAlbum album = new TenantAlbumWrapper.TenantAlbum();
 
+        //获取对应机构专辑状态
+        TenantAlbum one = tenantAlbumService.lambdaQuery().eq(TenantAlbum::getId, tenantAlbumId).last("limit 1").one();
+        if (!ObjectUtil.isEmpty(one)){
+            album.setStatus(one.getStatus());
+        }
+
+
         //查询对应专辑的详情
         List<TenantAlbum> list = tenantAlbumService.lambdaQuery().eq(TenantAlbum::getStatus, true).eq(TenantAlbum::getId, tenantAlbumId).list();
         if (CollectionUtils.isEmpty(list)){

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

@@ -179,6 +179,14 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         //musicSheet.setState(YesOrNoEnum.NO);
         this.saveOrUpdate(musicSheet);
 
+        if (StringUtil.isEmpty(musicSheet.getMusicSubject())
+                && musicSheet.getMusicSheetType().equals(MusicSheetTypeEnum.CONCERT)) {
+            this.lambdaUpdate()
+                    .eq(MusicSheet::getId, musicSheet.getId())
+                    .set(MusicSheet::getMusicSubject,"")
+                    .update();
+        }
+
         if (musicSheet.getAuditStatus() == null || AuthStatusEnum.DOING.getCode().equals(musicSheet.getAuditStatus().getCode())) {
             musicSheetAuthRecordService.setAuditDoing(musicSheet.getId(), originalMusicSheetId, lastMusicSheetId);
         }
@@ -209,6 +217,9 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
 
         Map<Long, TenantInfo> tenantInfoMap = tenantInfoService.getMapByIds(tenantIds);
         for (MusicSheetVo record : records) {
+            if (record.getSourceType() == null) {
+                break;
+            }
             switch (record.getSourceType()) {
                 case TENANT:
                     TenantInfo tenantInfo = tenantInfoMap.get(record.getUserId());
@@ -896,6 +907,14 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
             musicSheet.setUpdateBy(userId);
             //musicSheet.setState(YesOrNoEnum.NO);
             this.saveOrUpdate(musicSheet);
+
+            if (StringUtil.isEmpty(musicSheet.getMusicSubject())
+                    && musicSheet.getMusicSheetType().equals(MusicSheetTypeEnum.CONCERT)) {
+                this.lambdaUpdate()
+                        .eq(MusicSheet::getId, musicSheet.getId())
+                        .set(MusicSheet::getMusicSubject,"")
+                        .update();
+            }
             if (musicSheet.getAuditStatus() == null || AuthStatusEnum.DOING.getCode().equals(musicSheet.getAuditStatus().getCode())) {
                 musicSheetAuthRecordService.setAuditDoing(musicSheet.getId(),originalMusicSheetId,lastMusicSheetId);
             }
@@ -1037,8 +1056,12 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
                 // 老师收入
                 BigDecimal teacherAmount = BigDecimal.ONE.subtract(serviceFee).multiply(expectPrice);
 
-                // 加入账户
-                addTeacherAccount(userOrderDetailVo, teacherAmount, userOrderDetailVo.getBizId());
+                // 判断是否结算给老师,不结算,不写入老师入账记录
+                Teacher teacher = teacherService.getById(musicSheet.getUserId());
+                if (teacher != null && teacher.getIsSettlement() != null && teacher.getIsSettlement()) {
+                    // 加入账户
+                    addTeacherAccount(userOrderDetailVo, teacherAmount, userOrderDetailVo.getBizId());
+                }
             }
         }
 

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

@@ -427,8 +427,9 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         // 校验数据的完整性
         List<String> errMsg = new ArrayList<>();
         Map<String, Integer> phoneMap = new HashMap<>();
+        int rowIndex = 0;
         for (ExcelDataReaderProperty<StudentWrapper.StudentImport> next : dataList) {
-            Integer rowIndex = next.getRowIndex();
+            rowIndex++;
             StudentWrapper.StudentImport student = next.getClazz();
 
             int msgRowNo = rowIndex + 1;

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

@@ -411,8 +411,8 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     private SysUser insertSysUser(TeacherSubmitReq teacherSubmitReq) {
         SysUser sysUser = new SysUser();
         sysUser = getUserDetil(sysUser, teacherSubmitReq);
-        //初始密码,手机号后6
-        String password = sysUser.getPhone().substring(sysUser.getPhone().length() - 6);
+        //初始密码,klx+手机号四
+        String password = "klx" + sysUser.getPhone().substring(sysUser.getPhone().length() - 4);
         sysUser.setPassword(new BCryptPasswordEncoder().encode(password));
         //插入
         int num = employeeDao.insertSysUser(sysUser);
@@ -961,15 +961,6 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             // 删除好友关系
             imUserFriendService.delFriendByTenantId(teacher.getTenantId(), teacher.getUserId());
 
-            // 机构老师与学生互加好友关系
-            if (Optional.ofNullable(teacher.getTenantId()).orElse(-1L) > 0) {
-                // 自动与机构老师成为好友
-                Set<Long> collect = studentService.lambdaQuery()
-                        .eq(Student::getTenantId, updateTenant.getTenantId()).list().stream()
-                        .map(Student::getUserId).collect(Collectors.toSet());
-
-                imUserFriendService.saveUserFriend(teacher.getUserId(), collect);
-            }
         }else {
 
             // 平台老师处理流程
@@ -980,6 +971,16 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             }
         }
 
+        // 机构老师与学生互加好友关系
+        if (Optional.ofNullable(updateTenant.getTenantId()).orElse(-1L) > 0) {
+            // 自动与机构老师成为好友
+            Set<Long> collect = studentService.lambdaQuery()
+                    .eq(Student::getTenantId, updateTenant.getTenantId()).list().stream()
+                    .map(Student::getUserId).collect(Collectors.toSet());
+
+            imUserFriendService.saveUserFriend(teacher.getUserId(), collect);
+        }
+
         teacher.setTenantId(updateTenant.getTenantId());
         this.updateById(teacher);
 

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

@@ -1,12 +1,14 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alipay.api.domain.NextUrl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.yonge.cooleshow.biz.dal.dao.StudentDao;
+import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.TenantActivationCode;
@@ -14,17 +16,20 @@ import com.yonge.cooleshow.biz.dal.entity.TenantAlbumPurchase;
 import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.im.EImSendStatus;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
 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.StudentVo;
 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 com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
@@ -34,14 +39,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.function.Function;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 机构激活码
@@ -66,6 +68,8 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
     @Autowired
     private TenantAlbumService tenantAlbumService;
 
+    private static final String PHONE_REG = "^1\\d{10}$";
+
     /**
      * 查询详情
      *
@@ -323,84 +327,94 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
         }
         dataList.sort(Comparator.comparingInt(ExcelDataReaderProperty::getRowIndex));
 
-        List<String> errMsg = new ArrayList<>();
+        List<TenantActivationCodeWrapper.ImportTemplate> importTemplates = dataList.stream().map(ExcelDataReaderProperty::getClazz).collect(Collectors.toList());
+        List<String> codeList = importTemplates.stream().map(TenantActivationCodeWrapper.ImportTemplate::getCode).
+                filter(StringUtils::isNotEmpty).collect(Collectors.toList());
+        if(codeList.isEmpty()){
+            throw new BizException("未指定激活码");
+        }
+
+        List<String> phoneList = importTemplates.stream().map(TenantActivationCodeWrapper.ImportTemplate::getPhone)
+                        .filter(StringUtils::isNotEmpty).collect(Collectors.toList());
+        if(phoneList.isEmpty()){
+            throw new BizException("未指定手机号");
+        }
+
+        List<TenantActivationCode> activationCodes = this.lambdaQuery()
+                .eq(TenantActivationCode::getTenantId, tenantId)
+                .eq(TenantActivationCode::getTenantAlbumPurchaseId, tenantAlbumPurchaseId)
+                .in(TenantActivationCode::getActivationCode, codeList).list();
+        Map<String, TenantActivationCode> mapByCode = activationCodes.stream().collect(Collectors.toMap(TenantActivationCode::getActivationCode, Function.identity()));
+
+        StudentSearch studentSearch = new StudentSearch();
+        studentSearch.setRows(9999);
+        studentSearch.setPage(1);
+        studentSearch.setPhoneList(phoneList);
+        List<StudentVo> studentVos = studentDao.selectPage(PageUtil.getPage(studentSearch), studentSearch);
+        Map<String, StudentVo> mapStudentByPhone = studentVos.stream().collect(Collectors.toMap(StudentVo::getPhone, Function.identity()));
+
+        Map<Integer,List<String>> errMsgMap = new LinkedHashMap<>();
         Map<String, Integer> codeRowMap = new HashMap<>();
-        Map<String, String> codePhoneMap = new HashMap<>();
 
         String errTemplate = "第%s行%s";
-        // 校验数据格式是否错误
-        int rowIndex = 0;
-        for (ExcelDataReaderProperty<TenantActivationCodeWrapper.ImportTemplate> next : dataList) {
+        int rowIndex = 1;
+        // 校验数据格式是否错误 第二行开始取数据
+        for (TenantActivationCodeWrapper.ImportTemplate template : importTemplates) {
             rowIndex++;
-            TenantActivationCodeWrapper.ImportTemplate code = next.getClazz();
 
-            String acCode = code.getCode();
+            String acCode = template.getCode();
             if (StringUtils.isEmpty(acCode)) {
                 continue;
             }
-            int msgRowNo = rowIndex + 1;
-            code.checkIsIllegal().forEach(err -> errMsg.add(String.format(errTemplate, msgRowNo, err)));
-            if (codeRowMap.containsKey(code.getCode())) {
-                errMsg.add(String.format(errTemplate, msgRowNo, "激活码重复"));
-            }
-            codeRowMap.put(acCode, msgRowNo);
-            if (StringUtils.isNotEmpty(code.getPhone())) {
-                codePhoneMap.put(acCode.trim(), code.getPhone().trim());
+            int msgRowNo = rowIndex;
+            List<String> errList = errMsgMap.getOrDefault(msgRowNo, new ArrayList<>());
+            String code = template.getCode();
+            if (codeRowMap.containsKey(code)) {
+                errList.add(String.format(errTemplate, msgRowNo, "激活码重复"));
+            } else {
+                codeRowMap.put(acCode, msgRowNo);
             }
 
-            if (errMsg.size() > 100) {
-                break;
+            if (!mapByCode.containsKey(code)) {
+                errList.add(String.format(errTemplate, msgRowNo, "激活码不存在"));
+            } else {
+                TenantActivationCode tenantActivationCode = mapByCode.get(code);
+                if (tenantActivationCode.getActivationStatus() || EActivationCode.SEND.equals(tenantActivationCode.getSendStatus())) {
+                    errList.add(String.format(errTemplate, msgRowNo, "激活码已被发放/激活"));
+                }
             }
-        }
-
-        if (codePhoneMap.isEmpty()) {
-            throw new BizException("请指定手机号码激活");
-        }
-
-        if (!errMsg.isEmpty()) {
-            throw new BizException(String.join(",", errMsg));
-        }
-        // 校验激活码是否被使用
-        List<List<String>> codePartition = Lists.partition(new ArrayList<>(codeRowMap.keySet()), 50);
-
-        List<TenantActivationCode> tenantActivationCodes = new ArrayList<>();
-        for (List<String> codes : codePartition) {
-            List<TenantActivationCode> activationCodes = this.lambdaQuery()
-                    .eq(TenantActivationCode::getTenantId, tenantId)
-                    .eq(TenantActivationCode::getTenantAlbumPurchaseId, tenantAlbumPurchaseId)
-                    .in(TenantActivationCode::getActivationCode, codes).list();
-
-            // 存在无效码或者已经使用过的码
-            if (codes.size() != activationCodes.size() ||
-                    activationCodes.stream().anyMatch(TenantActivationCode::getActivationStatus)) {
-                Map<String, Boolean> codeStatusMap = activationCodes.stream()
-                        .collect(Collectors.toMap(TenantActivationCode::getActivationCode,
-                                TenantActivationCode::getActivationStatus));
-                for (String code : codes) {
-                    if (!codeStatusMap.containsKey(code)) {
-                        errMsg.add(String.format(errTemplate, codeRowMap.get(code), "激活码无效"));
-                    } else if (Boolean.TRUE.equals(codeStatusMap.get(code))) {
-                        errMsg.add(String.format(errTemplate, codeRowMap.get(code), "激活码已经激活"));
-                    }
+            String phone = template.getPhone();
+            if (StringUtils.isNotEmpty(phone)) {
+                if (!Pattern.matches(PHONE_REG, phone.trim()) ||
+                        (mapStudentByPhone.containsKey(phone) && !mapStudentByPhone.get(phone).getTenantId().equals(tenantId))) {
+                    errList.add(String.format(errTemplate, msgRowNo, "手机号错误或已注册成为其他机构学员"));
                 }
             }
 
-            List<TenantActivationCode> updateDataList = activationCodes.stream().map(next -> {
-                TenantActivationCode tenantActivationCode = new TenantActivationCode();
-                tenantActivationCode.setId(next.getId());
-                tenantActivationCode.setActivationPhone(codePhoneMap.get(next.getActivationCode()));
-                tenantActivationCode.setSendStatus(EActivationCode.SEND);
-                return tenantActivationCode;
-            }).collect(Collectors.toList());
-
-            tenantActivationCodes.addAll(updateDataList);
+            errMsgMap.put(msgRowNo, errList);
         }
+
+        List<String> errMsg = errMsgMap.values().stream().flatMap(Collection::stream).collect(Collectors.toList());
         if (!errMsg.isEmpty()) {
+            String errLines = errMsgMap.entrySet().stream().filter(next -> CollectionUtils.isNotEmpty(next.getValue()))
+                    .map(next -> String.valueOf(next.getKey())).collect(Collectors.joining("、"));
+            errMsg.add(0, "第" + errLines + "行存在错误");
             throw new BizException(String.join(",", errMsg));
         }
-        if (!tenantActivationCodes.isEmpty()) {
-            this.updateBatchById(tenantActivationCodes, 50);
+        List<TenantActivationCode> tenantActivationCodes = importTemplates.stream()
+                .filter(next -> StringUtils.isNotEmpty(next.getCode()) && StringUtils.isNotBlank(next.getPhone()))
+                .map(next -> {
+                    TenantActivationCode record = mapByCode.get(next.getCode());
+                    TenantActivationCode tenantActivationCode = new TenantActivationCode();
+                    tenantActivationCode.setId(record.getId());
+                    tenantActivationCode.setActivationPhone(next.getPhone());
+                    tenantActivationCode.setSendStatus(EActivationCode.SEND);
+                    return tenantActivationCode;
+                }).collect(Collectors.toList());
+        if (tenantActivationCodes.isEmpty()) {
+            throw new BizException("没有合法的导入数据");
         }
+        this.updateBatchById(tenantActivationCodes, 50);
     }
 
     private void addUserTenantAlbumRecord(Long studentId, TenantAlbumPurchase purchase,

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

@@ -17,6 +17,7 @@ import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
 import com.yonge.cooleshow.common.enums.EActivationCode;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.util.StringUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -403,11 +404,26 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
         }
         List<TenantAlbumMusic> list = tenantAlbumMusicService.lambdaQuery()
                 .in(TenantAlbumMusic::getTenantAlbumId, bizIds)
+                .eq(TenantAlbumMusic::getDelFlag,0)
                 .list();
         if (CollectionUtils.isEmpty(list)) {
             return new HashMap<>();
         }
-        return list.stream().collect(Collectors.groupingBy(TenantAlbumMusic::getTenantAlbumId,Collectors.counting()));
+        List<Long> musicIds = list.stream().map(o -> o.getMusicSheetId()).collect(Collectors.toList());
+        List<MusicSheet> musicList = musicSheetService.lambdaQuery()
+                .eq(MusicSheet::getDelFlag, false)
+                .eq(MusicSheet::getState, YesOrNoEnum.YES)
+                .eq(MusicSheet::getAuditVersion, YesOrNoEnum.NO)
+                .in(MusicSheet::getId, musicIds)
+                .list();
+        if (CollectionUtils.isEmpty(musicList)) {
+            return new HashMap<>();
+        }
+        // 曲目ID集合
+        List<Long> musicSheetIds = musicList.stream().map(o -> o.getId()).collect(Collectors.toList());
+
+        return list.stream().filter(o -> musicSheetIds.contains(o.getMusicSheetId()))
+                .collect(Collectors.groupingBy(TenantAlbumMusic::getTenantAlbumId, Collectors.counting()));
     }
 
     @Override

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

@@ -146,6 +146,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     private MusicAlbumService musicAlbumService;
 
     @Autowired
+    private TeacherService teacherService;
+
+    @Autowired
     private UserOrderService userOrderService;
 
     @Autowired
@@ -272,7 +275,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             userOrderVo.setOrderDetailList(orderDetilList);
 
             // 计算优惠券金额
-            CouponOrderWrapper couponOrderWrapper  = couponInfoService.queryUserOrderCouponInfo(param.getUserId(),
+            CouponOrderWrapper couponOrderWrapper  = couponInfoService.queryUserOrderCouponInfo(userOrderVo.getUserId(),
                     CouponInfoQuery.CouponOrderQuery.builder()
                             .clientType(userOrderVo.getOrderClient())
                             .orderNo(param.getOrderNo())
@@ -1261,23 +1264,31 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         if (null != orderDetailVo.getRecomUserId() && orderDetailVo.getRecomUserId() != 0
                 && !orderDetailVo.getRecomUserId().equals(orderDetailVo.getMerchId())
                 && !orderDetailVo.getUserId().equals(orderDetailVo.getRecomUserId())) {
-            //获取分润收益费率
-            BigDecimal shareFeeRate = getShareFreeByGoodType(orderDetailVo.getGoodType()
-                    , orderDetailVo.getBizId());
-            //入老师账户
-            BigDecimal shareFee = platformFee.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP);
-            if (shareFee.compareTo(BigDecimal.ZERO) > 0) {
-                AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode() + "_SHARE");
-                if (null != bizTypeEnum) {
-                    //插入分润老师账户变更记录-分润老师预收
-                    HttpResponseResult<UserAccountRecord> recomRecordRes = userAccountService.accountRecord(
-                            new UserAccountRecordDto(orderDetailVo.getRecomUserId(), PostStatusEnum.WAIT, shareFee, InOrOutEnum.IN,
-                                    bizTypeEnum, orderDetailVo.getBizId(), bizTypeEnum.getMsg(), orderDetailVo.getOrderNo(), orderDetailVo.getUserId(), accountPeriodTime));
-                    if (recomRecordRes.getStatus()) {
-                        //插入平台预支
-                        platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getRecomUserId(), shareFee,
-                                InOrOutEnum.OUT, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo(), accountPeriodTime);
-                        platformCashAccountRecordService.save(platformCashAccountRecord);
+
+            // 判断是否结算给分享人
+
+            // 判断是否结算给老师,不结算,不写入老师入账记录
+            Teacher teacher = teacherService.getById(orderDetailVo.getRecomUserId());
+            if (teacher != null && teacher.getIsSettlement() != null && teacher.getIsSettlement()) {
+
+                //获取分润收益费率
+                BigDecimal shareFeeRate = getShareFreeByGoodType(orderDetailVo.getGoodType()
+                        , orderDetailVo.getBizId());
+                //入老师账户
+                BigDecimal shareFee = platformFee.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP);
+                if (shareFee.compareTo(BigDecimal.ZERO) > 0) {
+                    AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode() + "_SHARE");
+                    if (null != bizTypeEnum) {
+                        //插入分润老师账户变更记录-分润老师预收
+                        HttpResponseResult<UserAccountRecord> recomRecordRes = userAccountService.accountRecord(
+                                new UserAccountRecordDto(orderDetailVo.getRecomUserId(), PostStatusEnum.WAIT, shareFee, InOrOutEnum.IN,
+                                        bizTypeEnum, orderDetailVo.getBizId(), bizTypeEnum.getMsg(), orderDetailVo.getOrderNo(), orderDetailVo.getUserId(), accountPeriodTime));
+                        if (recomRecordRes.getStatus()) {
+                            //插入平台预支
+                            platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getRecomUserId(), shareFee,
+                                    InOrOutEnum.OUT, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo(), accountPeriodTime);
+                            platformCashAccountRecordService.save(platformCashAccountRecord);
+                        }
                     }
                 }
             }

+ 8 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserTenantAlbumRecordServiceImpl.java

@@ -22,6 +22,7 @@ import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.util.StringUtil;
 import com.yonge.toolset.mybatis.support.PageUtil;
+import com.yonge.toolset.utils.obj.ObjectUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.checkerframework.checker.units.qual.A;
@@ -133,8 +134,10 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
 
 
                 TenantInfo tenantInfo = tenantInfoService.getById(one.getTenantId());
-                vo.setTenantName(tenantInfo.getName());
-                vo.setTenantImg(tenantInfo.getLogo());
+                if (tenantInfo != null) {
+                    vo.setTenantName(tenantInfo.getName());
+                    vo.setTenantImg(tenantInfo.getLogo());
+                }
                 //查询机构专辑曲目表
                 List<TenantAlbumMusic> tenantAlbumMusics = tenantAlbumMusicService.lambdaQuery()
                         .eq(TenantAlbumMusic::getTenantAlbumId, i.getId())
@@ -280,7 +283,9 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
         }
         //获取对应机构专辑状态
         TenantAlbum one = tenantAlbumService.lambdaQuery().eq(TenantAlbum::getId, tenantAlbumId).last("limit 1").one();
-        album.setStatus(one.getStatus());
+        if (!ObjectUtil.isEmpty(one)){
+            album.setStatus(one.getStatus());
+        }
 
         StudentVo detail = detailStudent(sysUser.getId());
         // 判断是否是机构学生 机构学生 检测机构专辑购买记录

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

@@ -169,7 +169,12 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
         //查询组信息
         VideoLessonGroup lessonGroup = videoLessonGroupDao.selectById(purchaseRecord.getVideoLessonGroupId());
         //记录流水
-        addTeacherAccount(orderParam, lessonGroup);
+
+        // 判断是否结算给老师,不结算,不写入老师入账记录
+        Teacher teacher = teacherService.getById(lessonGroup.getTeacherId());
+        if (teacher != null && teacher.getIsSettlement() != null && teacher.getIsSettlement()) {
+            addTeacherAccount(orderParam, lessonGroup);
+        }
         videoSend(lessonGroup.getTeacherId(), purchaseRecord.getStudentId(), lessonGroup);
 
         // 赠品曲目、专辑插入用户曲目购买记录表

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentVo.java

@@ -72,6 +72,9 @@ public class StudentVo extends Student {
     @ApiModelProperty(value = "imToken")
     private String imToken;
 
+
+    private String imUserId;
+
     public YesOrNoEnum getDelFlag() {
         return delFlag;
     }

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

@@ -165,9 +165,9 @@ public class TenantActivationCodeWrapper {
             if (StringUtils.isEmpty(code)) {
                 errMsg.add("激活码不能为空");
             }
-            if (StringUtils.isNotEmpty(phone) && !Pattern.matches(PHONE_REG, phone.trim())) {
-                errMsg.add("手机号格式错误");
-            }
+//            if (StringUtils.isNotEmpty(phone) && !Pattern.matches(PHONE_REG, phone.trim())) {
+//                errMsg.add("手机号格式错误");
+//            }
             return errMsg;
         }
 

+ 1 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantUnbindHistoryWrapper.java

@@ -78,7 +78,7 @@ public class TenantUnbindHistoryWrapper {
         @ApiModelProperty("机构员工")
         private String tenantUserName;
 
-        @ApiModelProperty("机构员工")
+        @ApiModelProperty("机构员工手机号")
         private String tenantPhone;
 
         @ApiModelProperty("用户ID")
@@ -88,7 +88,6 @@ public class TenantUnbindHistoryWrapper {
         private String userName;
 
         @ApiModelProperty("手机号")
-        @TableField(value = "phone_")
         private String phone;
 
         @ApiModelProperty("用户类型")

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

@@ -798,7 +798,7 @@
     <select id="countByUser" resultType="com.yonge.cooleshow.biz.dal.vo.MusicSheetUploadCountVo">
         select user_id_ userId, count(id_) count
         from music_sheet
-        where del_flag_ = false and user_id_ in
+        where del_flag_ = false and state_ =1 and source_type_ = 'TEACHER' and user_id_ in
         <foreach collection="userIds" open="(" close=")" separator="," item="item">
             #{item}
         </foreach>

+ 9 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -349,9 +349,9 @@
 		su.avatar_                                             avatar,
 		su.username_                                           username,
 		GROUP_CONCAT(DISTINCT sb.name_)                        subjectName,
-		SUM(mprs.playTime)                                     trainTimes,
+		SUM(mprs.playTime) / 60                                trainTimes,
 		COUNT(DISTINCT mprs.create_time_)                      trainDays,
-		SUM(mprs.playTime) / COUNT(DISTINCT mprs.create_time_) avgTrainTimes
+		SUM(mprs.playTime) / 60 / COUNT(DISTINCT mprs.create_time_) avgTrainTimes
 		from student st
 		left join
 		(select smcr.user_id_,
@@ -365,6 +365,9 @@
 			<if test="tenantId != null">
 				AND smcr.tenant_id_ = #{tenantId}
 			</if>
+			<if test="clientId != null and clientId!= ''">
+				AND smcr.client_id_ = #{clientId}
+			</if>
 		</where>
 		group by smcr.user_id_, DATE_FORMAT(create_time_, '%Y-%m-%d')) mprs ON mprs.user_id_ = st.user_id_
 		left join sys_user su ON st.user_id_ = su.id_
@@ -385,6 +388,9 @@
 		left join sys_user su ON st.user_id_ = su.id_
 		LEFT JOIN sys_music_compare_record smcr ON smcr.user_id_ = st.user_id_
 		<where>
+			<if test="clientId != null and clientId!= ''">
+				AND smcr.client_id_ = #{clientId}
+			</if>
 			<if test="tenantId != null">
 				AND smcr.tenant_id_ = #{tenantId}
 			</if>
@@ -398,7 +404,7 @@
 	</select>
 	<select id="wechatCompareRecordSum"
 			resultType="com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo$WechatCompareRecordSumDto">
-		select COUNT(st.user_id_) studentNum,COUNT(DISTINCT DATE_FORMAT(smcr.create_time_,'%Y-%m-%d')) trainDays,SUM(smcr.play_time_) trainTimes
+		select COUNT(st.user_id_) studentNum,COUNT(DISTINCT DATE_FORMAT(smcr.create_time_,'%Y-%m-%d')) trainDays,SUM(smcr.play_time_) / 60 trainTimes
 		from student st
 		LEFT JOIN sys_music_compare_record smcr ON smcr.user_id_ = st.user_id_
 		<where>

+ 24 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/open/UserPaymentClient.java

@@ -14,13 +14,18 @@ import com.microsvc.toolkit.middleware.payment.common.api.entity.RefundResp;
 import com.yeepay.g3.sdk.yop.encrypt.DigitalEnvelopeDTO;
 import com.yeepay.g3.sdk.yop.utils.DigitalEnvelopeUtils;
 import com.yeepay.g3.sdk.yop.utils.RSAKeyUtils;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.PaymentMerchantConfig;
 import com.yonge.cooleshow.biz.dal.entity.TenantMember;
+import com.yonge.cooleshow.biz.dal.entity.UserOrder;
 import com.yonge.cooleshow.biz.dal.entity.UserOrderRefundBill;
 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.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.EPayerType;
 import com.yonge.cooleshow.student.vo.UserPaymentOrderVo;
 import io.swagger.annotations.Api;
@@ -30,6 +35,7 @@ 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.http.HttpStatus;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -39,6 +45,9 @@ import java.security.PublicKey;
 import java.util.Date;
 import java.util.Objects;
 
+import static com.yonge.cooleshow.common.entity.HttpResponseResult.failed;
+import static com.yonge.cooleshow.common.entity.HttpResponseResult.succeed;
+
 @Slf4j
 @RestController
 @RequestMapping("/open/userOrder")
@@ -48,6 +57,8 @@ public class UserPaymentClient {
     @Autowired
     private UserPaymentCoreService userPaymentCoreService;
 
+    @Autowired
+    private UserOrderService userOrderService;
     @ApiOperation(value = "用户付款", notes = "用户付款")
     @PostMapping("/executePayment/v2")
     public R<UserPaymentOrderWrapper.PaymentReq> executePayment(@Validated @RequestBody UserPaymentOrderVo.PaymentReqConfig config, HttpServletRequest request) {
@@ -68,4 +79,17 @@ public class UserPaymentClient {
         return R.from(paymentConfig);
     }
 
+    /**
+     * 查询单条
+     */
+    @GetMapping("/detailByOrderNo/{orderNo}")
+    @ApiOperation(value = "通过订单号查询详情", notes = "传入orderNo")
+    public HttpResponseResult<UserOrderVo> detailByOrderNo(@PathVariable("orderNo") String orderNo) {
+
+        UserOrder param = new UserOrder();
+        param.setOrderNo(orderNo);
+        UserOrderVo detail = userOrderService.detailApp(param);
+        return succeed(detail);
+    }
+
 }

+ 26 - 4
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/open/UserPaymentClient.java

@@ -4,24 +4,31 @@ import cn.hutool.extra.servlet.ServletUtil;
 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.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.entity.UserOrder;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.service.UserOrderService;
 import com.yonge.cooleshow.biz.dal.service.UserPaymentCoreService;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.teacher.vo.UserPaymentOrderVo;
 import io.swagger.annotations.Api;
 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.http.HttpStatus;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Objects;
 
+import static com.yonge.cooleshow.common.entity.HttpResponseResult.failed;
+import static com.yonge.cooleshow.common.entity.HttpResponseResult.succeed;
+
 @Slf4j
 @RestController
 @RequestMapping("/open/userOrder")
@@ -31,6 +38,9 @@ public class UserPaymentClient {
     @Autowired
     private UserPaymentCoreService userPaymentCoreService;
 
+    @Autowired
+    private UserOrderService userOrderService;
+
     @ApiOperation(value = "用户付款", notes = "用户付款")
     @PostMapping("/executePayment/v2")
     public R<UserPaymentOrderWrapper.PaymentReq> executePayment(@Validated @RequestBody UserPaymentOrderVo.PaymentReqConfig config, HttpServletRequest request) {
@@ -51,4 +61,16 @@ public class UserPaymentClient {
         return R.from(paymentConfig);
     }
 
+    /**
+     * 查询单条
+     */
+    @GetMapping("/detailByOrderNo/{orderNo}")
+    @ApiOperation(value = "通过订单号查询详情", notes = "传入orderNo")
+    public HttpResponseResult<UserOrderVo> detailByOrderNo(@PathVariable("orderNo") String orderNo) {
+        UserOrder param = new UserOrder();
+        param.setOrderNo(orderNo);
+        UserOrderVo detail = userOrderService.detailApp(param);
+        return succeed(detail);
+    }
+
 }

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

@@ -80,6 +80,7 @@ public class TeacherController extends BaseController {
         TenantInfo tenantInfo = getTenantInfo();
         query.setTenantId(tenantInfo.getId());
         query.setDelFlag(YesOrNoEnum.NO);
+        query.setLockFlag(UserLockFlag.NORMAL);
         query.setOrderBy("u.username_ asc");
 
         IPage<TeacherVo> pages = teacherService.selectPage(PageUtil.getPage(query), query);

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

@@ -196,7 +196,7 @@ public class TenantActivationCodeController extends BaseController {
         }
 
         List<TenantActivationCodeWrapper.ExportTemplate> templates = JSONArray.parseArray(JSON.toJSONString(rows), TenantActivationCodeWrapper.ExportTemplate.class);
-
+        templates.forEach(next->next.setActivationPhone(""));
 
         TenantActivationCodeWrapper.ExportFile exportFile = generateExportExcelFile(templates, TenantActivationCodeWrapper.ExportTemplate.class, "激活码导出", "激活码");
         return succeed(exportFile);

+ 2 - 1
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantInfoController.java

@@ -181,7 +181,7 @@ public class TenantInfoController extends BaseController {
 
             boolean exists = smsCodeService.verifyValidCode(sysUser.getPhone(), sysUser.getCode(), "PHONE");
             if (Boolean.FALSE.equals(exists)) {
-                throw new BizException("手机号校验有误");
+                throw new BizException("验证码错误");
             }
 
             long userId;
@@ -263,6 +263,7 @@ public class TenantInfoController extends BaseController {
                 tenantInfoService.lambdaUpdate()
                         .eq(TenantInfo::getId, user.getTenantId())
                         .set(TenantInfo::getUserId, userId)
+                        .set(TenantInfo::getPhone,sysUser.getPhone())
                         .update();
             }