瀏覽代碼

1.导入激活码修改、im修改

yuanliang 1 年之前
父節點
當前提交
151b9886bd
共有 14 個文件被更改,包括 140 次插入38 次删除
  1. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/StudentSearch.java
  2. 0 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroup.java
  3. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java
  4. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/StudentService.java
  5. 8 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java
  6. 9 9
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  7. 14 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantActivationCodeServiceImpl.java
  8. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentVo.java
  9. 59 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/ImGroupWrapper.java
  10. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/StudentWrapper.java
  11. 1 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantActivationCodeWrapper.java
  12. 4 2
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupController.java
  13. 22 2
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/StudentController.java
  14. 13 1
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenTenantController.java

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

@@ -71,6 +71,9 @@ public class StudentSearch extends QueryInfo{
     @ApiModelProperty("机构名称")
     @ApiModelProperty("机构名称")
     private String tenantName;
     private String tenantName;
 
 
+    @ApiModelProperty("机构购买专辑的购买记录ID")
+    private Long tenantAlbumPurchaseId;
+
     @ApiModelProperty(value = "手机号码列表", hidden = true)
     @ApiModelProperty(value = "手机号码列表", hidden = true)
     private List<String> phoneList = new ArrayList<>();
     private List<String> phoneList = new ArrayList<>();
 
 

+ 0 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroup.java

@@ -4,18 +4,13 @@ package com.yonge.cooleshow.biz.dal.entity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
-import com.yonge.toolset.base.enums.BaseEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.io.Serializable;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
 
 
 /**
 /**
  * 即时通讯群组(ImGroup)表实体类
  * 即时通讯群组(ImGroup)表实体类
@@ -76,9 +71,6 @@ public class ImGroup implements Serializable {
     @ApiModelProperty(value = "课程组id")
     @ApiModelProperty(value = "课程组id")
     private Long courseGroupId;
     private Long courseGroupId;
 
 
-
-    private Set<Long> studentIdList = new HashSet<>();
-
     public Long getCourseGroupId() {
     public Long getCourseGroupId() {
         return courseGroupId;
         return courseGroupId;
     }
     }

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

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.biz.dal.dto.ImGroupResultDto;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupSearchDto;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupSearchDto;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.wrapper.ImGroupWrapper;
 
 
 import java.util.List;
 import java.util.List;
 import java.util.Set;
 import java.util.Set;
@@ -26,7 +27,7 @@ public interface ImGroupService extends IService<ImGroup> {
     * @author zx
     * @author zx
     * @date 2022/3/22 11:17
     * @date 2022/3/22 11:17
     */
     */
-    void create(ImGroup imGroup) throws Exception;
+    void create(ImGroupWrapper.ImGroup imGroup) throws Exception;
 
 
     /**
     /**
     * @description: 成课后自动创建群聊,建议放在最后执行
     * @description: 成课后自动创建群聊,建议放在最后执行

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

@@ -120,7 +120,7 @@ public interface StudentService extends IService<Student> {
      * @param tenantId 机构ID
      * @param tenantId 机构ID
      * @param suerId 操作人
      * @param suerId 操作人
      */
      */
-    void importStudentExcel(List<ExcelDataReaderProperty<StudentWrapper.StudentExport>> dataList,Long tenantId,
+    void importStudentExcel(List<ExcelDataReaderProperty<StudentWrapper.StudentImport>> dataList, Long tenantId,
                             Long suerId);
                             Long suerId);
 
 
     /**
     /**

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
@@ -31,6 +32,7 @@ import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
 import com.yonge.cooleshow.biz.dal.service.StudentStarService;
 import com.yonge.cooleshow.biz.dal.service.StudentStarService;
 import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.cooleshow.biz.dal.wrapper.ImGroupWrapper;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.util.ThreadPool;
 import com.yonge.toolset.base.util.ThreadPool;
 import io.rong.models.Result;
 import io.rong.models.Result;
@@ -102,7 +104,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
 
 
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
-    public void create(ImGroup imGroup) throws Exception {
+    public void create(ImGroupWrapper.ImGroup imGroup) throws Exception {
         //创建本地群聊
         //创建本地群聊
         Date now = new Date();
         Date now = new Date();
         imGroup.setType(ImGroupType.FAN);
         imGroup.setType(ImGroupType.FAN);
@@ -111,7 +113,8 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         imGroup.setUpdateTime(now);
         imGroup.setUpdateTime(now);
         String imGroupId = UUID.randomUUID() + imGroup.getType().getCode();
         String imGroupId = UUID.randomUUID() + imGroup.getType().getCode();
         imGroup.setId(imGroupId);
         imGroup.setId(imGroupId);
-        this.baseMapper.insert(imGroup);
+        ImGroup group = JSON.parseObject(JSON.toJSONString(imGroup), ImGroup.class);
+        this.baseMapper.insert(group);
         //处理本地群成员列表
         //处理本地群成员列表
         List<GroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMemberRoleType.TEACHER);
         List<GroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMemberRoleType.TEACHER);
 
 
@@ -127,7 +130,6 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         imGroupMemberService.join(groupMembers,imGroupId);
         imGroupMemberService.join(groupMembers,imGroupId);
     }
     }
 
 
-
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
     public void addGroupMember(String groupId, Set<Long> studentIdList) throws Exception {
     public void addGroupMember(String groupId, Set<Long> studentIdList) throws Exception {
@@ -135,15 +137,16 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         if (imGroup == null) {
         if (imGroup == null) {
             throw new BizException("群不存在");
             throw new BizException("群不存在");
         }
         }
-        if (imGroup.getStudentIdList().isEmpty()) {
+        if (studentIdList.isEmpty()) {
             throw new BizException("添加的群成员不能为空");
             throw new BizException("添加的群成员不能为空");
 
 
         }
         }
         List<GroupMember> groupMemberList = imGroupMemberService.initGroupMembers(groupId,
         List<GroupMember> groupMemberList = imGroupMemberService.initGroupMembers(groupId,
-                imGroup.getStudentIdList(), ImGroupMemberRoleType.STUDENT);
+                studentIdList, ImGroupMemberRoleType.STUDENT);
         imGroupMemberService.join(groupMemberList, groupId);
         imGroupMemberService.join(groupMemberList, groupId);
     }
     }
 
 
+
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     public String autoCreate(Long courseGroupId, String courseGroupType) throws Exception {
     public String autoCreate(Long courseGroupId, String courseGroupType) throws Exception {

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

@@ -384,7 +384,7 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
-    public void importStudentExcel(List<ExcelDataReaderProperty<StudentWrapper.StudentExport>> dataList,
+    public void importStudentExcel(List<ExcelDataReaderProperty<StudentWrapper.StudentImport>> dataList,
                                    Long tenantId, Long userId) {
                                    Long tenantId, Long userId) {
         if (dataList.isEmpty()) {
         if (dataList.isEmpty()) {
             throw new BizException("导入数据不能为空");
             throw new BizException("导入数据不能为空");
@@ -394,9 +394,9 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         // 校验数据的完整性
         // 校验数据的完整性
         List<String> errMsg = new ArrayList<>();
         List<String> errMsg = new ArrayList<>();
         Map<String, Integer> phoneMap = new HashMap<>();
         Map<String, Integer> phoneMap = new HashMap<>();
-        for (ExcelDataReaderProperty<StudentWrapper.StudentExport> next : dataList) {
+        for (ExcelDataReaderProperty<StudentWrapper.StudentImport> next : dataList) {
             Integer rowIndex = next.getRowIndex();
             Integer rowIndex = next.getRowIndex();
-            StudentWrapper.StudentExport student = next.getClazz();
+            StudentWrapper.StudentImport student = next.getClazz();
 
 
             int msgRowNo = rowIndex + 1;
             int msgRowNo = rowIndex + 1;
             student.checkValid().forEach(err -> errMsg.add(String.format("第%s行%s", msgRowNo, err)));
             student.checkValid().forEach(err -> errMsg.add(String.format("第%s行%s", msgRowNo, err)));
@@ -442,15 +442,15 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
             throw new BizException(String.join(",", errMsg));
             throw new BizException(String.join(",", errMsg));
         }
         }
 
 
-        for (ExcelDataReaderProperty<StudentWrapper.StudentExport> next : dataList) {
-            StudentWrapper.StudentExport studentExport = next.getClazz();
+        for (ExcelDataReaderProperty<StudentWrapper.StudentImport> next : dataList) {
+            StudentWrapper.StudentImport studentImport = next.getClazz();
             StudentWrapper.Student student = new StudentWrapper.Student();
             StudentWrapper.Student student = new StudentWrapper.Student();
             student.setTenantId(tenantId);
             student.setTenantId(tenantId);
-            student.setName(studentExport.getUserName());
-            student.setGender("1".equals(studentExport.getGender()) ? 1 : 0);
-            student.setSubjectId(studentExport.getSubjectId());
+            student.setName(studentImport.getUserName());
+            student.setGender("1".equals(studentImport.getGender()) ? 1 : 0);
+            student.setSubjectId(studentImport.getSubjectId());
 
 
-            LocalDate birthday = LocalDate.parse(studentExport.getBirthday(), DateTimeFormatter.ISO_LOCAL_DATE);
+            LocalDate birthday = LocalDate.parse(studentImport.getBirthday(), DateTimeFormatter.ISO_LOCAL_DATE);
             student.setBirthdate(birthday);
             student.setBirthdate(birthday);
             save(student);
             save(student);
         }
         }

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

@@ -27,6 +27,7 @@ import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -242,24 +243,32 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
         List<String> errMsg = new ArrayList<>();
         List<String> errMsg = new ArrayList<>();
         Map<String, Integer> codeRowMap = new HashMap<>();
         Map<String, Integer> codeRowMap = new HashMap<>();
         Map<String, String> codePhoneMap = new HashMap<>();
         Map<String, String> codePhoneMap = new HashMap<>();
+
+        String errTemplate = "第%s行%s";
         // 校验数据格式是否错误
         // 校验数据格式是否错误
         for (ExcelDataReaderProperty<TenantActivationCodeWrapper.ImportTemplate> next : dataList) {
         for (ExcelDataReaderProperty<TenantActivationCodeWrapper.ImportTemplate> next : dataList) {
             Integer rowIndex = next.getRowIndex();
             Integer rowIndex = next.getRowIndex();
             TenantActivationCodeWrapper.ImportTemplate code = next.getClazz();
             TenantActivationCodeWrapper.ImportTemplate code = next.getClazz();
 
 
             int msgRowNo = rowIndex + 1;
             int msgRowNo = rowIndex + 1;
-            code.checkIsIllegal().forEach(err -> errMsg.add(String.format("第%s行%s", msgRowNo, err)));
+            code.checkIsIllegal().forEach(err -> errMsg.add(String.format(errTemplate, msgRowNo, err)));
             if (codeRowMap.containsKey(code.getCode())) {
             if (codeRowMap.containsKey(code.getCode())) {
-                errMsg.add(String.format("第%s行%s", msgRowNo, "激活码重复"));
+                errMsg.add(String.format(errTemplate, msgRowNo, "激活码重复"));
             }
             }
             codeRowMap.put(code.getCode().trim(), msgRowNo);
             codeRowMap.put(code.getCode().trim(), msgRowNo);
-            codePhoneMap.put(code.getCode().trim(), code.getPhone().trim());
+            if (StringUtils.isNotEmpty(code.getPhone())) {
+                codePhoneMap.put(code.getCode().trim(), code.getPhone().trim());
+            }
 
 
             if (errMsg.size() > 100) {
             if (errMsg.size() > 100) {
                 break;
                 break;
             }
             }
         }
         }
 
 
+        if (codePhoneMap.isEmpty()) {
+            throw new BizException("请指定手机号码激活");
+        }
+
         if (!errMsg.isEmpty()) {
         if (!errMsg.isEmpty()) {
             throw new BizException(String.join(",", errMsg));
             throw new BizException(String.join(",", errMsg));
         }
         }
@@ -281,9 +290,9 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
                                 TenantActivationCode::getActivationStatus));
                                 TenantActivationCode::getActivationStatus));
                 for (String code : codes) {
                 for (String code : codes) {
                     if (!codeStatusMap.containsKey(code)) {
                     if (!codeStatusMap.containsKey(code)) {
-                        errMsg.add(String.format("第%s行%s", codeRowMap.get(code), "验证码无效"));
+                        errMsg.add(String.format(errTemplate, codeRowMap.get(code), "验证码无效"));
                     } else if (Boolean.TRUE.equals(codeStatusMap.get(code))) {
                     } else if (Boolean.TRUE.equals(codeStatusMap.get(code))) {
-                        errMsg.add(String.format("第%s行%s", codeRowMap.get(code), "验证码已经激活"));
+                        errMsg.add(String.format(errTemplate, codeRowMap.get(code), "验证码已经激活"));
                     }
                     }
                 }
                 }
             }
             }

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

@@ -62,6 +62,9 @@ public class StudentVo extends Student {
     @ApiModelProperty(value = "机构名称")
     @ApiModelProperty(value = "机构名称")
     private String tenantName;
     private String tenantName;
 
 
+    @ApiModelProperty(value = "发送激活码数量,用于小程序发送激活码时提示重复发送")
+    private Integer sendActiveCodeNum;
+
     public YesOrNoEnum getDelFlag() {
     public YesOrNoEnum getDelFlag() {
         return delFlag;
         return delFlag;
     }
     }

+ 59 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/ImGroupWrapper.java

@@ -0,0 +1,59 @@
+package com.yonge.cooleshow.biz.dal.wrapper;
+
+import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+@Data
+public class ImGroupWrapper {
+
+    @Data
+    @ApiModel("ImGroup")
+    public static class ImGroup {
+        @NotBlank(message = "群编号不可为空")
+        @ApiModelProperty(value = "主键;")
+        private String id;
+
+        @NotBlank(message = "群名称不能为空")
+        @ApiModelProperty(value = "群名称")
+        private String name;
+
+        @ApiModelProperty(value = "群简介")
+        private String introduce;
+
+        @ApiModelProperty(value = "群成员数")
+        private Integer memberNum;
+
+        @ApiModelProperty(value = "群备注")
+        private String memo;
+
+        @ApiModelProperty(value = "群头像")
+        private String img;
+
+        @ApiModelProperty(value = "群类型:FAN粉丝群、COURSE课程群;")
+        private ImGroupType type = ImGroupType.FAN;
+
+        @ApiModelProperty(value = "创建人")
+        private Long createBy;
+
+        @ApiModelProperty(value = "是否自动通过审核")
+        private Boolean autoPassFlag;
+
+        @ApiModelProperty(value = "创建时间;")
+        private Date createTime;
+
+        @ApiModelProperty(value = "修改时间;")
+        private Date updateTime;
+
+        @ApiModelProperty(value = "课程组id")
+        private Long courseGroupId;
+
+        private Set<Long> studentIdList = new HashSet<>();
+    }
+}

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

@@ -125,7 +125,7 @@ public class StudentWrapper {
 
 
     @Data
     @Data
     @ApiModel("学生导入模板模型")
     @ApiModel("学生导入模板模型")
-    public static class StudentExport {
+    public static class StudentImport {
 
 
         @ExcelProperty(value = "学生姓名")
         @ExcelProperty(value = "学生姓名")
         private String userName;
         private String userName;

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

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

+ 4 - 2
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupController.java

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.service.SysUserService;
+import com.yonge.cooleshow.biz.dal.wrapper.ImGroupWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.utils.validator.ValidationKit;
 import com.yonge.toolset.utils.validator.ValidationKit;
@@ -43,7 +44,7 @@ public class ImGroupController extends BaseController {
 
 
     @ApiOperation("创建群聊")
     @ApiOperation("创建群聊")
     @PostMapping(value = "/create")
     @PostMapping(value = "/create")
-    public HttpResponseResult create(@Valid @RequestBody ImGroup imGroup, BindingResult bindingResult) throws Exception {
+    public HttpResponseResult create(@Valid @RequestBody ImGroupWrapper.ImGroup imGroup, BindingResult bindingResult) throws Exception {
         ValidationKit.ignoreFields(bindingResult,"id");
         ValidationKit.ignoreFields(bindingResult,"id");
         imGroup.setCreateBy(sysUserService.getUserId());
         imGroup.setCreateBy(sysUserService.getUserId());
         imGroupService.create(imGroup);
         imGroupService.create(imGroup);
@@ -52,7 +53,8 @@ public class ImGroupController extends BaseController {
 
 
     @ApiOperation("添加群成员")
     @ApiOperation("添加群成员")
     @PostMapping(value = "/addGroupMember")
     @PostMapping(value = "/addGroupMember")
-    public HttpResponseResult addGroupMember(@Valid @RequestBody ImGroup imGroup, BindingResult bindingResult) throws Exception {
+    public HttpResponseResult addGroupMember(@Valid @RequestBody ImGroupWrapper.ImGroup imGroup,
+                                             BindingResult bindingResult) throws Exception {
         imGroupService.addGroupMember(imGroup.getId(), imGroup.getStudentIdList());
         imGroupService.addGroupMember(imGroup.getId(), imGroup.getStudentIdList());
         return succeed();
         return succeed();
     }
     }

+ 22 - 2
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/StudentController.java

@@ -5,8 +5,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
+import com.yonge.cooleshow.biz.dal.entity.Student;
+import com.yonge.cooleshow.biz.dal.entity.TenantActivationCode;
 import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
 import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
+import com.yonge.cooleshow.biz.dal.service.TenantActivationCodeService;
 import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
 import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.wrapper.StudentWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.StudentWrapper;
@@ -39,7 +42,11 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 
 @RestController
 @RestController
 @RequestMapping("/student")
 @RequestMapping("/student")
@@ -54,6 +61,9 @@ public class StudentController extends BaseController {
     @Autowired
     @Autowired
     private TenantInfoService tenantInfoService;
     private TenantInfoService tenantInfoService;
 
 
+    @Autowired
+    private TenantActivationCodeService tenantActivationCodeService;
+
     @GetMapping("/detail/{id}")
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "详情", notes = "传入id")
     @ApiOperation(value = "详情", notes = "传入id")
     public HttpResponseResult<StudentVo> detail(@PathVariable("id") Long id) {
     public HttpResponseResult<StudentVo> detail(@PathVariable("id") Long id) {
@@ -72,7 +82,17 @@ public class StudentController extends BaseController {
         IPage<StudentVo> pages = studentService.selectPage(PageUtil.getPage(query), query);
         IPage<StudentVo> pages = studentService.selectPage(PageUtil.getPage(query), query);
         List<StudentVo> rows = pages.getRecords();
         List<StudentVo> rows = pages.getRecords();
 
 
+        Map<Long, List<TenantActivationCode>> groupByUserId = new HashMap<>();
+        if (!rows.isEmpty() && query.getTenantAlbumPurchaseId() != null) {
+            List<Long> studentIdList = rows.stream().map(Student::getUserId).collect(Collectors.toList());
+             groupByUserId = tenantActivationCodeService.lambdaQuery()
+                    .eq(TenantActivationCode::getId, query.getTenantAlbumPurchaseId())
+                    .in(TenantActivationCode::getActivationUserId, studentIdList)
+                    .list().stream().collect(Collectors.groupingBy(TenantActivationCode::getActivationUserId));
+        }
+
         for (StudentVo vo : rows) {
         for (StudentVo vo : rows) {
+            vo.setSendActiveCodeNum(groupByUserId.getOrDefault(vo.getUserId(), new ArrayList<>()).size());
             if (StringUtils.isNotEmpty(vo.getPhone())) {
             if (StringUtils.isNotEmpty(vo.getPhone())) {
                 vo.setPhone(vo.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
                 vo.setPhone(vo.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
             }
             }
@@ -111,8 +131,8 @@ public class StudentController extends BaseController {
             return failed(HttpStatus.FORBIDDEN, "请登录");
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
         }
         try {
         try {
-            ExcelDataReader<StudentWrapper.StudentExport> reader =
-                    ExcelUtils.getReader(StudentWrapper.StudentExport.class, file);
+            ExcelDataReader<StudentWrapper.StudentImport> reader =
+                    ExcelUtils.getReader(StudentWrapper.StudentImport.class, file);
             studentService.importStudentExcel(reader.getDataList(), user.getTenantId(), user.getId());
             studentService.importStudentExcel(reader.getDataList(), user.getTenantId(), user.getId());
             return HttpResponseResult.succeed();
             return HttpResponseResult.succeed();
         } catch (ExcelException e) {
         } catch (ExcelException e) {

+ 13 - 1
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenTenantController.java

@@ -1,8 +1,10 @@
 package com.yonge.cooleshow.tenant.controller.open;
 package com.yonge.cooleshow.tenant.controller.open;
 
 
+import com.yonge.cooleshow.biz.dal.entity.TenantEntryRecord;
 import com.yonge.cooleshow.biz.dal.entity.TenantStaff;
 import com.yonge.cooleshow.biz.dal.entity.TenantStaff;
 import com.yonge.cooleshow.biz.dal.service.SmsCodeService;
 import com.yonge.cooleshow.biz.dal.service.SmsCodeService;
 import com.yonge.cooleshow.biz.dal.service.TenantApplyRecordService;
 import com.yonge.cooleshow.biz.dal.service.TenantApplyRecordService;
+import com.yonge.cooleshow.biz.dal.service.TenantEntryRecordService;
 import com.yonge.cooleshow.biz.dal.service.TenantStaffService;
 import com.yonge.cooleshow.biz.dal.service.TenantStaffService;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantApplyRecordWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantApplyRecordWrapper;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -34,6 +36,9 @@ public class OpenTenantController {
     @Autowired
     @Autowired
     private SmsCodeService smsCodeService;
     private SmsCodeService smsCodeService;
 
 
+    @Autowired
+    private TenantEntryRecordService tenantEntryRecordService;
+
 
 
     @PostMapping("/apply")
     @PostMapping("/apply")
     @ApiOperation(value = "申请")
     @ApiOperation(value = "申请")
@@ -58,7 +63,14 @@ public class OpenTenantController {
         }
         }
         TenantStaff tenantStaff = tenantStaffService.getByPhone(phone);
         TenantStaff tenantStaff = tenantStaffService.getByPhone(phone);
         if (tenantStaff == null) {
         if (tenantStaff == null) {
-            return HttpResponseResult.failed(5002, null, "请先申请机构入驻");
+            throw new BizException(5002, "请先申请机构入驻");
+        }
+        TenantEntryRecord one = tenantEntryRecordService.lambdaQuery()
+                .eq(TenantEntryRecord::getPhone, phone)
+                .eq(TenantEntryRecord::getStatus, "DOING")
+                .last("limit 1").one();
+        if (one != null) {
+            throw new BizException(5003, "请等待审核完成");
         }
         }
         tenantStaff.setWxOpenid(openId);
         tenantStaff.setWxOpenid(openId);
         tenantStaffService.updateById(tenantStaff);
         tenantStaffService.updateById(tenantStaff);