Просмотр исходного кода

Merge branch 'feature/0721-tenant'

yuanliang 1 год назад
Родитель
Сommit
b849eabb2b
18 измененных файлов с 96 добавлено и 45 удалено
  1. 2 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TenantAccountRecordController.java
  2. 15 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TenantUnbindHistoryController.java
  3. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/excel/UserOrderExport.java
  4. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/FileImportInfo.java
  5. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAccountRecord.java
  6. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantApplyRecord.java
  7. 6 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantEntryRecord.java
  8. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/execl/entity/TenantAccountRecordImport.java
  9. 5 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/FileImportInfoServiceImpl.java
  10. 12 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  11. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantInfoServiceImpl.java
  12. 0 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/FileImportInfoWrapper.java
  13. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantUnbindHistoryWrapper.java
  14. 4 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SysUserMapper.xml
  15. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  16. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TenantApplyRecordMapper.xml
  17. 6 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderMapper.xml
  18. 28 24
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenStudentController.java

+ 2 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TenantAccountRecordController.java

@@ -111,11 +111,11 @@ public class TenantAccountRecordController extends BaseController {
     @PostMapping("/import")
     @ApiOperation(value = "机构流水", notes = "TenantAccountRecordQuery")
     @PreAuthorize("@pcs.hasPermissions('tenantAccountRecord/import')")
-    public R<FileImportInfo> importFile(@RequestBody FileImportInfoWrapper.FileImport wrapper) {
+    public HttpResponseResult<FileImportInfo> importFile(@RequestBody FileImportInfoWrapper.FileImport wrapper) {
 
 
         // 读取数据
-        return R.from(excelAnalyseCoreService.analyseReadExcelData(
+        return HttpResponseResult.succeed(excelAnalyseCoreService.analyseReadExcelData(
                 JSON.parseObject(JSON.toJSONString(wrapper), FileImportInfoWrapper.FileImportInfo.class)));
     }
 

+ 15 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TenantUnbindHistoryController.java

@@ -7,9 +7,11 @@ import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.microsvc.toolkit.common.response.template.R;
 import com.yonge.cooleshow.biz.dal.entity.Employee;
 import com.yonge.cooleshow.biz.dal.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
 import com.yonge.cooleshow.biz.dal.entity.TenantUnbindHistory;
 import com.yonge.cooleshow.biz.dal.service.EmployeeService;
 import com.yonge.cooleshow.biz.dal.service.SysUserService;
+import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
 import com.yonge.cooleshow.biz.dal.service.TenantStaffService;
 import com.yonge.cooleshow.biz.dal.service.TenantUnbindHistoryService;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantUnbindHistoryWrapper;
@@ -44,6 +46,9 @@ public class TenantUnbindHistoryController {
     @Autowired
     private SysUserService sysUserService;
 
+    @Autowired
+    private TenantInfoService tenantInfoService;
+
     @ApiOperation(value = "查询分页", notes = "机构解绑历史表- 传入 TenantUnbindHistoryWrapper.TenantUnbindHistoryQuery")
     @PostMapping("/page")
     public R<PageInfo<TenantUnbindHistoryWrapper.TenantUnbindHistory>> page(@RequestBody TenantUnbindHistoryWrapper.TenantUnbindHistoryQuery query) {
@@ -59,13 +64,20 @@ public class TenantUnbindHistoryController {
                         .collect(Collectors.toList());
         Map<Long, SysUser> mapByIds = sysUserService.getMapByIds(userIds);
 
+        List<Long> tenantIds =
+                pages.getRecords().stream().map(TenantUnbindHistory::getTenantId).distinct()
+                        .collect(Collectors.toList());
+        Map<Long, TenantInfo> tenantInfoMap = tenantInfoService.getMapByIds(tenantIds);
         List<TenantUnbindHistoryWrapper.TenantUnbindHistory> histories = records.stream().map(next -> {
             TenantUnbindHistoryWrapper.TenantUnbindHistory tenantUnbindHistory =
                     JSON.parseObject(JSON.toJSONString(next), TenantUnbindHistoryWrapper.TenantUnbindHistory.class);
             SysUser orDefault = mapByIds.getOrDefault(next.getVerifyUserId(), new SysUser());
-            tenantUnbindHistory.setVerifyUserName(StringUtils.isEmpty(orDefault.getRealName()) ?
-                    orDefault.getUsername() :
-                    orDefault.getRealName());
+            tenantUnbindHistory.setVerifyUserName(orDefault.getUsername());
+            if(tenantInfoMap.containsKey(next.getTenantId())){
+                TenantInfo tenantInfo = tenantInfoMap.get(next.getTenantId());
+                tenantUnbindHistory.setTenantUserName(tenantInfo.getUsername());
+                tenantUnbindHistory.setTenantPhone(tenantInfo.getPhone());
+            }
             return tenantUnbindHistory;
 
         }).collect(Collectors.toList());

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/excel/UserOrderExport.java

@@ -38,7 +38,7 @@ public class UserOrderExport {
     private OrderStatusEnum status;
     @ExcelProperty(value = "备注", index = 11)
     private String userNote;
-    @ExcelProperty(value = "机构名称", index = 11)
+    @ExcelProperty(value = "机构名称", index = 12)
     private String tenantName;
 
 

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -22,7 +23,7 @@ import java.util.Date;
 public class FileImportInfo implements Serializable {
 
     @ApiModelProperty("主键ID")
-    @TableId(value = "id_")
+    @TableId(value = "id_",type = IdType.AUTO)
     private Long id;
 
     @ApiModelProperty("数据类型") 

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAccountRecord.java

@@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
+import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -21,6 +23,8 @@ import java.math.BigDecimal;
  */
 @Data
 @Builder
+@NoArgsConstructor
+@AllArgsConstructor
 @ApiModel(" TenantAccountRecord-机构流水表")
 @TableName("tenant_account_record")
 public class TenantAccountRecord implements Serializable {

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

@@ -80,7 +80,7 @@ public class TenantApplyRecord implements Serializable {
 	@TableField(value = "create_time_")
     private Date createTime;
 
-    @ApiModelProperty("简介")
+    @ApiModelProperty("简介")
     @TableField(value = "brief_Introduction_")
     private String briefIntroduction;
 

+ 6 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantEntryRecord.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import lombok.Data;
 
 import io.swagger.annotations.ApiModel;
@@ -61,7 +62,7 @@ public class TenantEntryRecord implements Serializable {
 
     @ApiModelProperty("审核状态 DOING、审核中 PASS、通过 UNPASS、不通过") 
 	@TableField(value = "status_")
-    private String status;
+    private AuthStatusEnum status;
 
     @ApiModelProperty("审核人") 
 	@TableField(value = "verify_user_id_")
@@ -79,4 +80,8 @@ public class TenantEntryRecord implements Serializable {
 	@TableField(value = "create_time_")
     private Date createTime;
 
+    @ApiModelProperty("简介")
+    @TableField(value = "brief_Introduction_")
+    private String briefIntroduction;
+
 }

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/execl/entity/TenantAccountRecordImport.java

@@ -40,6 +40,7 @@ public class TenantAccountRecordImport {
     private String settlement;
 
     @ApiModelProperty(value = "入账状态 WAIT 待入账 FROZEN 冻结入账 RECORDED 已入账 CANCEL 退费 ")
+    @ExcelIgnore
     private PostStatusEnum postStatus;
 
     @ExcelIgnore

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

@@ -48,9 +48,11 @@ public class FileImportInfoServiceImpl extends ServiceImpl<FileImportInfoMapper,
      * @return Boolean
      */
     @Override
-    public Boolean add(FileImportInfoWrapper.FileImportInfo fileImportInfo) {    	
-        
-        return this.save(JSON.parseObject(fileImportInfo.jsonString(), FileImportInfo.class));
+    public Boolean add(FileImportInfoWrapper.FileImportInfo fileImportInfo) {
+        FileImportInfo importInfo = JSON.parseObject(fileImportInfo.jsonString(), FileImportInfo.class);
+        boolean save = this.save(importInfo);
+        fileImportInfo.setId(importInfo.getId());
+        return save;
     }
 
     /**

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

@@ -542,6 +542,7 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         if (sysUser == null) {
             sysUser = new SysUser();
             sysUser.setUserType(ClientEnum.STUDENT.getCode());
+            sysUser.setGender(student.getGender());
             //设置默认头像
             if (StringUtil.isEmpty(sysUser.getAvatar())) {
                 String defaultHeard = sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD);
@@ -561,6 +562,7 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
             } else if (!sysUser.getUserType().contains(ClientEnum.STUDENT.getCode())) {
                 sysUser.setUserType(sysUser.getUserType() + "," + ClientEnum.STUDENT.getCode());
             }
+            sysUser.setGender(student.getGender());
             employeeDao.updateSysUser(sysUser);
         }
 
@@ -618,6 +620,7 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
                     .set(Student::getTenantId, studentInfo.getTenantId())
                     .set(Student::getUserId, sysUser.getId())
                     .set(Student::getUpdateTime, new Date())
+                    .set(Student::getAvatar,studentInfo.getAvatar())
                     .eq(Student::getUserId, studentInfo.getId())
                     .update();
         } else {
@@ -626,8 +629,12 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
             newStudent.setSubjectId(studentInfo.getSubjectId());
             newStudent.setUpdateTime(new Date());
             newStudent.setTenantId(studentInfo.getTenantId());
+            newStudent.setAvatar(studentInfo.getAvatar());
             this.getBaseMapper().updateById(newStudent);
         }
+        com.yonge.cooleshow.biz.dal.entity.SysUser sysUser = sysUserMapper.selectById(studentInfo.getId());
+        sysUser.setGender(studentInfo.getGender());
+        sysUserMapper.updateById(sysUser);
         return true;
     }
 
@@ -675,7 +682,11 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
             sysUser = JSON.parseObject(JSON.toJSONString(studentInfo),
                     com.yonge.cooleshow.biz.dal.entity.SysUser.class);
             sysUser.setPhone(studentInfo.getPhone());
-            sysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
+            if (StringUtils.isEmpty(studentInfo.getAvatar())) {
+                sysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
+            } else {
+                sysUser.setAvatar(studentInfo.getAvatar());
+            }
             sysUser.setGender(studentInfo.getGender());
             sysUser.setUserType("STUDENT");
             sysUser.setBirthdate(studentInfo.getBirthdate());

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

@@ -256,7 +256,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoMapper, TenantI
             String userType = sysUser.getUserType();
 
             if (userType.contains(SysUserType.SYSTEM.getCode())){
-                throw new BizException("该手机号已注册机构");
+                throw new BizException("该手机号已注册平台员工");
             }
             //设置默认机构类型
             String tenantUserType = SysUserType.ORGANIZATION.getCode();

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

@@ -56,9 +56,6 @@ public class FileImportInfoWrapper {
     @ApiModel(" FileImportInfo-文件数据导入")
     public static class FileImportInfo {
 
-        @ApiModelProperty("教材编号")
-        private String lessonId;
-
         @ApiModelProperty("主键ID")
         private Long id;
 

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantUnbindHistoryWrapper.java

@@ -75,6 +75,12 @@ public class TenantUnbindHistoryWrapper {
         @ApiModelProperty("机构名称")
         private String tenantName;
 
+        @ApiModelProperty("机构员工")
+        private String tenantUserName;
+
+        @ApiModelProperty("机构员工")
+        private String tenantPhone;
+
         @ApiModelProperty("用户ID")
         private Long userId;
 

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

@@ -54,7 +54,7 @@
         </choose>
         left join sys_user su on su.id_ = t.user_id_
         <where>
-            t.lock_flag_ = 0 and su.del_flag_ = 0 AND t.tenant_id_ != -1
+            t.lock_flag_ = 0 and su.del_flag_ = 0
             <if test="keyword != null and keyword != ''">
                 and (
                 su.real_name_ like concat('%',#{keyword},'%')
@@ -63,6 +63,9 @@
                 or su.id_ like concat('%',#{keyword},'%')
                 )
             </if>
+            <if test="client.code == 'STUDENT'">
+                AND t.tenant_id_ == -1
+            </if>
         </where>
 
     </select>

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

@@ -107,7 +107,7 @@
         u.del_flag_ as delFlag,
         (case when isnull(u.id_card_no_) then 0 else 1 end) as isReal,
         (case when isnull(b.user_id_) then 0 else 1 end) as isBank,
-        (case when t.tenant_id_ = -1 then '平台老师' else ti.name_ end) as tenantName
+        (case when t.tenant_id_ = -1 then '平台' else ti.name_ end) as tenantName
         FROM teacher t
         left join sys_user u on t.user_id_ = u.id_
         left join (

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

@@ -82,7 +82,7 @@
         <if test="id != null">
             and tenant_apply_record_id_ = #{id}
         </if>
-
+        order by update_time_ DESC
     </select>
     <select id="queryNow"
             resultType="com.yonge.cooleshow.biz.dal.wrapper.TenantApplyRecordWrapper$TenantApplyRecord">

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

@@ -127,6 +127,10 @@
         FROM user_order t
         left join user_order_payment p on t.order_no_ = p.order_no_ and (p.status_ = 'pending' or p.status_ = 'succeeded')
         left join sys_user u on t.user_id_ = u.id_
+
+        <if test="null != param.search and '' != param.search">
+            left join tenant_info ti on t.tenant_id_ = ti.id_
+        </if>
         <where>
             u.del_flag_ = 0
             <if test="null != param.orderClient and '' != param.orderClient">
@@ -142,7 +146,8 @@
                 AND (
                 t.user_id_ LIKE CONCAT('%', #{param.search}, '%') or
                 u.username_ LIKE CONCAT('%', #{param.search}, '%') or
-                u.phone_ LIKE CONCAT('%', #{param.search}, '%')
+                u.phone_ LIKE CONCAT('%', #{param.search}, '%') or
+                ti.name_ LIKE CONCAT('%', #{param.search}, '%')
                 )
             </if>
             <if test="null != param.searchNo and '' != param.searchNo">

+ 28 - 24
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenStudentController.java

@@ -38,6 +38,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.HashSet;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -108,30 +109,33 @@ public class OpenStudentController extends BaseController {
                 if (one.getTenantId().equals(-1L)) {
                     throw new BizException("该手机号已经注册为平台学生");
                 }
-                if (one.getTenantId().equals(tenantId)) {
-                    //已经注册当前机构,请勿重复注册
-                    throw new BizException(5004, tenantInfo.getName());
-                }
+//                if (one.getTenantId().equals(tenantId)) {
+//                    //已经注册当前机构,请勿重复注册
+//                    throw new BizException(5004, tenantInfo.getName());
+//                }
                 // 转到其他机构
-                if ((student.getUpdateTenant() == null ||
-                        !student.getUpdateTenant())) {
-                    throw new BizException(5004, "该手机号已经注册为其他平台学生");
-                }
-                // 退群
-                List<ImGroupMember> groupMembers = imGroupMemberService.lambdaQuery()
-                        .eq(ImGroupMember::getRoleType, ImGroupMemberRoleType.STUDENT)
-                        .eq(ImGroupMember::getIsAdmin, false)
-                        .eq(ImGroupMember::getUserId, one.getUserId())
-                        .list();
-                List<String> groupIdList = groupMembers.stream().map(ImGroupMember::getGroupId)
-                        .distinct().collect(Collectors.toList());
-                groupIdList.forEach(groupId -> {
-                    try {
-                        imGroupService.quit(groupId, one.getUserId(), ClientEnum.STUDENT);
-                    } catch (Exception e) {
-                        log.error("学生注册,切换机构退群失败:{}", e.getMessage());
+                if ((!Objects.equals(student.getTenantId(), one.getTenantId()))) {
+                    if(student.getUpdateTenant() == null || Boolean.FALSE.equals(student.getUpdateTenant())){
+                        TenantInfo oldTenant = tenantInfoService.getById(one.getTenantId());
+                        throw new BizException(5004, oldTenant.getName());
+                    } else {
+                        // 退群
+                        List<ImGroupMember> groupMembers = imGroupMemberService.lambdaQuery()
+                                .eq(ImGroupMember::getRoleType, ImGroupMemberRoleType.STUDENT)
+                                .eq(ImGroupMember::getIsAdmin, false)
+                                .eq(ImGroupMember::getUserId, one.getUserId())
+                                .list();
+                        List<String> groupIdList = groupMembers.stream().map(ImGroupMember::getGroupId)
+                                .distinct().collect(Collectors.toList());
+                        groupIdList.forEach(groupId -> {
+                            try {
+                                imGroupService.quit(groupId, one.getUserId(), ClientEnum.STUDENT);
+                            } catch (Exception e) {
+                                log.error("学生注册,切换机构退群失败:{}", e.getMessage());
+                            }
+                        });
                     }
-                });
+                }
 
                 // 更新头像
                 if (StringUtils.isEmpty(student.getAvatar())) {
@@ -151,9 +155,8 @@ public class OpenStudentController extends BaseController {
             student.setAvatar(avatar);
         }
 
-        StudentWrapper.Student studentInfo = JSON.parseObject(JSON.toJSONString(student), StudentWrapper.Student.class);
+        Student studentInfo = JSON.parseObject(JSON.toJSONString(student), Student.class);
         studentInfo.setTenantId(tenantInfo.getId());
-        studentService.save(studentInfo);
 
         // 加好友
         if (student.getId() == null) {
@@ -164,6 +167,7 @@ public class OpenStudentController extends BaseController {
             teacherList.forEach(next -> imUserFriendService.saveUserFriend(next.getUserId(),
                     new HashSet<>(ImmutableList.of(sysUser.getId()))));
         }
+        studentService.saveOrUpdate(studentInfo);
         return succeed();
     }
 }