Преглед на файлове

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherDao.java
#	cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml
zouxuan преди 3 години
родител
ревизия
3c1ea29d88
променени са 55 файла, в които са добавени 3476 реда и са изтрити 1155 реда
  1. 54 0
      cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/dto/RealnameAuthReq.java
  2. 47 0
      cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/dto/UpdatePasswordDto.java
  3. 11 0
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysUserDao.java
  4. 138 110
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/SysUserService.java
  5. 163 155
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java
  6. 349 290
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java
  7. 20 1
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  8. 74 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/EmployeeController.java
  9. 72 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthEntryRecordController.java
  10. 103 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java
  11. 17 0
      cooleshow-user/user-biz/pom.xml
  12. 48 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/config/IMProperties.java
  13. 99 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/EmployeeDao.java
  14. 4 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherAuthEntryRecordDao.java
  15. 18 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherDao.java
  16. 0 40
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/RealnameAuthDto.java
  17. 6 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/AuthOperaReq.java
  18. 27 26
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherApplyDetailReq.java
  19. 42 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherSetReq.java
  20. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherAuthEntryRecordSearch.java
  21. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/BaseMessage.java
  22. 317 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Employee.java
  23. 43 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/IMApiResultInfo.java
  24. 52 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/IMTokenInfo.java
  25. 67 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImRoomMessage.java
  26. 4 30
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Teacher.java
  27. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AuthStatusEnum.java
  28. 36 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/JobNatureEnum.java
  29. 0 213
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java
  30. 65 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/EmployeeQueryInfo.java
  31. 29 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/EmployeeService.java
  32. 5 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherAuthEntryRecordService.java
  33. 18 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherAuthMusicianRecordService.java
  34. 18 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherService.java
  35. 78 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/EmployeeServiceImpl.java
  36. 5 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SubjectServiceImpl.java
  37. 1 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMessageServiceImpl.java
  38. 19 9
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthEntryRecordServiceImpl.java
  39. 57 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthMusicianRecordServiceImpl.java
  40. 11 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  41. 279 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/support/HttpHelper.java
  42. 469 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/support/IMHelper.java
  43. 3 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherAuthEntryRecordVo.java
  44. 84 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeVo.java
  45. 63 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherVo.java
  46. 217 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  47. 6 6
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthEntryRecordMapper.xml
  48. 50 25
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  49. 42 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SubjectController.java
  50. 36 15
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/SubjectController.java
  51. 8 84
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherAuthEntryRecordController.java
  52. 29 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherAuthMusicianRecordController.java
  53. 53 103
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherController.java
  54. 0 2
      cooleshow-user/user-teacher/src/main/resources/bootstrap-dev.yml
  55. 4 4
      toolset/utils/src/main/java/com/yonge/toolset/utils/idcard/IdcardInfoExtractor.java

+ 54 - 0
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/dto/RealnameAuthReq.java

@@ -0,0 +1,54 @@
+package com.yonge.cooleshow.auth.api.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 实名认证请求对象
+ *
+ * @Author: liweifan
+ * @Data: 2022/3/18 15:04
+ */
+@ApiModel(value = "RealnameAuthReq对象", description = "实名认证请求对象")
+public class RealnameAuthReq implements Serializable {
+
+    @NotBlank(message = "用户真实姓名不能为空")
+    @ApiModelProperty(value = "用户真实姓名", required = true)
+    private String realName;
+
+    @NotBlank(message = "用户身份证号不能为空")
+    @ApiModelProperty(value = "用户身份证号", required = true)
+    private String idCardNo;
+
+    @NotNull(message = "是否修改用户信息")
+    @ApiModelProperty(value = "是否修改用户信息", required = true)
+    private Boolean isSave;
+
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
+    public String getIdCardNo() {
+        return idCardNo;
+    }
+
+    public void setIdCardNo(String idCardNo) {
+        this.idCardNo = idCardNo;
+    }
+
+    public Boolean getSave() {
+        return isSave;
+    }
+
+    public void setSave(Boolean save) {
+        isSave = save;
+    }
+}

+ 47 - 0
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/dto/UpdatePasswordDto.java

@@ -0,0 +1,47 @@
+package com.yonge.cooleshow.auth.api.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/3/22 11:20
+ */
+@ApiModel(value = "UpdatePasswordReq对象", description = "用户修改密码")
+public class UpdatePasswordDto {
+    @NotBlank(message = "旧密码不能为空")
+    @ApiModelProperty("旧密码")
+    private String oldPassword;
+    @NotBlank(message = "新密码不能为空")
+    @ApiModelProperty("新密码1")
+    private String newPasswordFirst;
+    @NotBlank(message = "新密码不能为空")
+    @ApiModelProperty(value = "新密码2")
+    private String newPasswordSecond;
+
+    public String getOldPassword() {
+        return oldPassword;
+    }
+
+    public void setOldPassword(String oldPassword) {
+        this.oldPassword = oldPassword;
+    }
+
+    public String getNewPasswordFirst() {
+        return newPasswordFirst;
+    }
+
+    public void setNewPasswordFirst(String newPasswordFirst) {
+        this.newPasswordFirst = newPasswordFirst;
+    }
+
+    public String getNewPasswordSecond() {
+        return newPasswordSecond;
+    }
+
+    public void setNewPasswordSecond(String newPasswordSecond) {
+        this.newPasswordSecond = newPasswordSecond;
+    }
+}

+ 11 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysUserDao.java

@@ -2,6 +2,8 @@ package com.yonge.cooleshow.auth.dal.dao;
 
 import java.util.List;
 
+import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
+import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
 import org.apache.ibatis.annotations.Param;
 
 import com.yonge.cooleshow.auth.api.entity.SysUser;
@@ -93,4 +95,13 @@ public interface SysUserDao extends BaseDAO<Long, SysUser> {
 	 * @param userId
 	 */
     void saveStudent(@Param("userId") Long userId);
+
+	/***
+	 * 修改用户实名信息
+	 * @author liweifan
+	 * @param: teacherApplyDetailDto
+	 * @updateTime 2022/3/18 15:57
+	 * @return: java.lang.Integer
+	 */
+	Integer updateUserCard(@Param("param")RealnameAuthReq param,@Param("idcardInfo") IdcardInfoExtractor idcardInfo);
 }

+ 138 - 110
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/SysUserService.java

@@ -1,126 +1,154 @@
 package com.yonge.cooleshow.auth.service;
 
+import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 import com.yonge.cooleshow.auth.api.dto.SysUserInfo;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.common.entity.ImUserModel;
 import com.yonge.cooleshow.common.service.BaseService;
+import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
 
 public interface SysUserService extends BaseService<Long, SysUser> {
 
-	/**
-	 * 根据用户名查询对象
-	 * @param username
-	 * @return
-	 */
-	SysUser queryByUsername(String username);
-
-	/**
-	 * 根据手机号查询对象
-	 * @param phone
-	 * @return
-	 */
-	SysUser queryByPhone(String phone);
-
-	/**
-	 * 根据手机号查询对象
-	 * @param phone
-	 * @return
-	 */
-	SysUser queryLockByPhone(String phone);
-
-	/**
-	 * 根据手机号查询对象
-	 * @param phone
-	 * @return
-	 */
-	SysUser queryByPhoneAndClient(String phone,String client);
-
-	/**
-	 * 根据用户名获取系统用户详细信息
-	 * @param username
-	 * @return
-	 */
-	SysUserInfo queryUserInfoByUsername(String username);
-
-	/**
-	 * 根据手机号获取系统用户详细信息
-	 * @param phone
-	 * @return
-	 */
-	SysUserInfo queryUserInfoByPhone(String phone);
-
-	/**
-	 * 根据手机号获取系统用户详细信息
-	 * @param phone
-	 * @return
-	 */
-	SysUserInfo queryUserInfoByPhoneAndClient(String phone,String client);
-
-	/**
-	 * 删除指定用户
-	 * @param id
-	 * @return
-	 */
-	boolean deleteById(Long id);
-
-	/**
-	 * 根据用户手机号修改密码
-	 * @param mobile
-	 * @param password
-	 */
-	void updatePassword(String mobile, String password);
-
-	/**
-	 * 新增用户
-	 * @param sysUser
-	 * @return
-	 */
+    /**
+     * 根据用户名查询对象
+     *
+     * @param username
+     * @return
+     */
+    SysUser queryByUsername(String username);
+
+    /**
+     * 根据手机号查询对象
+     *
+     * @param phone
+     * @return
+     */
+    SysUser queryByPhone(String phone);
+
+    /**
+     * 根据手机号查询对象
+     *
+     * @param phone
+     * @return
+     */
+    SysUser queryLockByPhone(String phone);
+
+    /**
+     * 根据手机号查询对象
+     *
+     * @param phone
+     * @return
+     */
+    SysUser queryByPhoneAndClient(String phone, String client);
+
+    /**
+     * 根据用户名获取系统用户详细信息
+     *
+     * @param username
+     * @return
+     */
+    SysUserInfo queryUserInfoByUsername(String username);
+
+    /**
+     * 根据手机号获取系统用户详细信息
+     *
+     * @param phone
+     * @return
+     */
+    SysUserInfo queryUserInfoByPhone(String phone);
+
+    /**
+     * 根据手机号获取系统用户详细信息
+     *
+     * @param phone
+     * @return
+     */
+    SysUserInfo queryUserInfoByPhoneAndClient(String phone, String client);
+
+    /**
+     * 删除指定用户
+     *
+     * @param id
+     * @return
+     */
+    boolean deleteById(Long id);
+
+    /**
+     * 根据用户手机号修改密码
+     *
+     * @param mobile
+     * @param password
+     */
+    void updatePassword(String mobile, String password);
+
+    /**
+     * 新增用户
+     *
+     * @param sysUser
+     * @return
+     */
     Long add(SysUser sysUser);
 
-	/**
-	 * 获取用户基本信息
-	 * @param userId
-	 * @return
-	 */
-	ImUserModel getBasic(Long userId);
-
-	/**
-	 * 修改用户基本信息
-	 * @param sysUser
-	 */
+    /**
+     * 获取用户基本信息
+     *
+     * @param userId
+     * @return
+     */
+    ImUserModel getBasic(Long userId);
+
+    /**
+     * 修改用户基本信息
+     *
+     * @param sysUser
+     */
     void updateBaseInfo(SysUser sysUser);
 
-	/**
-	 * 获取用户基本信息
-	 * @param userId
-	 * @return
-	 */
-	SysUser queryUserInfo(Long userId);
-
-	/**
-	 * 用户注册
-	 * @param phone
-	 * @param clientId
-	 * @return
-	 */
-	SysUserInfo registerUser(String phone,String clientId);
-
-	/**
-	 * 刷新token
-	 * @param sysUser
-	 */
+    /**
+     * 获取用户基本信息
+     *
+     * @param userId
+     * @return
+     */
+    SysUser queryUserInfo(Long userId);
+
+    /**
+     * 用户注册
+     *
+     * @param phone
+     * @param clientId
+     * @return
+     */
+    SysUserInfo registerUser(String phone, String clientId);
+
+    /**
+     * 刷新token
+     *
+     * @param sysUser
+     */
     void refreshImToken(SysUser sysUser);
 
-	/**
-	 * 保存student数据
-	 * @param userId
-	 */
-	void saveStudent(Long userId);
-	
-	/**
-	 * 保存teacher数据
-	 * @param userId
-	 */
-	void saveTeacher(Long userId);
-	
+    /**
+     * 保存student数据
+     *
+     * @param userId
+     */
+    void saveStudent(Long userId);
+
+    /**
+     * 保存teacher数据
+     *
+     * @param userId
+     */
+    void saveTeacher(Long userId);
+
+    /***
+     * 更新用户实名信息
+     * @author liweifan
+     * @param: realNameAuthDto
+     * @param: idcardInfoExtractor
+     * @updateTime 2022/3/22 15:11
+     * @return: java.lang.Integer
+     */
+    void updateUserCard(RealnameAuthReq realNameAuthDto, IdcardInfoExtractor idcardInfoExtractor);
 }

+ 163 - 155
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java

@@ -3,6 +3,8 @@ package com.yonge.cooleshow.auth.service.impl;
 import java.util.Date;
 import java.util.List;
 
+import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
+import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -24,160 +26,166 @@ import com.yonge.cooleshow.common.service.impl.BaseServiceImpl;
 @Service
 public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implements SysUserService {
 
-	@Autowired
-	private SysUserDao sysUserDao;
-
-	@Autowired
-	private SysUserRoleService sysUserRoleService;
-
-	@Autowired
-	private SysRoleMenuService sysRoleMenuService;
-	@Autowired
-	private SysUserService sysUserService;
-	@Autowired
-	private IdGeneratorService smsCodeService;
-
-	@Override
-	public BaseDAO<Long, SysUser> getDAO() {
-		return sysUserDao;
-	}
-
-	@Override
-	public SysUser queryByUsername(String username) {
-		return sysUserDao.queryByUsername(username);
-	}
-
-	@Override
-	public SysUser queryByPhone(String phone) {
-		return sysUserDao.queryByPhone(phone);
-	}
-	@Override
-	public SysUser queryLockByPhone(String phone) {
-		return sysUserDao.queryLockByPhone(phone);
-	}
-
-	@Override
-	public SysUser queryByPhoneAndClient(String phone,String client) {
-		return sysUserDao.queryByPhoneAndClient(phone,client);
-	}
-
-	@Override
-	public SysUserInfo queryUserInfoByUsername(String username) {
-		return getSysUserInfo(queryByUsername(username));
-	}
-
-	@Override
-	public SysUserInfo queryUserInfoByPhone(String phone) {
-		return getSysUserInfo(queryLockByPhone(phone));
-	}
-
-	@Override
-	public SysUserInfo queryUserInfoByPhoneAndClient(String phone,String client) {
-		return getSysUserInfo(queryByPhoneAndClient(phone,client));
-	}
-
-	private SysUserInfo getSysUserInfo(SysUser sysUser) {
-		if (sysUser == null) {
-			return null;
-		}
-		SysUserInfo userInfo = new SysUserInfo();
-		userInfo.setSysUser(sysUser);
-
-		List<String> roleCodeList = sysUserRoleService.queryRoleCodeListByUserId(sysUser.getId());
-		userInfo.setRoles(roleCodeList.toArray(new String[roleCodeList.size()]));
-
-		List<Long> roleIdList = sysUserRoleService.queryRoleIdListByUserId(sysUser.getId());
-		List<String> permissionList = sysRoleMenuService.queryPermissionsByRoleIdList(roleIdList);
-
-		userInfo.setPermissions(permissionList.toArray(new String[permissionList.size()]));
-
-		return userInfo;
-	}
-
-	@Override
-	public boolean deleteById(Long id) {
-		SysUser user = get(id);
-
-		if (user == null) {
-			throw new BizException("账户不存在");
-		}
-
-		user.setUpdateTime(new Date());
-		user.setDelFlag(YesOrNoEnum.YES);
-
-		update(user);
-
-		return true;
-	}
-
-	@Override
-	public void updatePassword(String mobile, String password) {
-		sysUserDao.updatePassword(mobile,password);
-	}
-
-	@Override
-	public Long add(SysUser sysUser) {
-		sysUserDao.insert(sysUser);
-		sysUserDao.update(sysUser);
-		return sysUser.getId();
-	}
-
-	@Override
-	public ImUserModel getBasic(Long userId) {
-		return sysUserDao.getBasic(userId);
-	}
-
-	@Override
-	public void updateBaseInfo(SysUser sysUser) {
-		sysUserDao.update(sysUser);
-	}
-
-	@Override
-	public SysUser queryUserInfo(Long userId) {
-		return sysUserDao.get(userId);
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public SysUserInfo registerUser(String phone,String clientId) {
-		if(StringUtils.equalsIgnoreCase(clientId,"TEACHER")){
-			SysUser sysUser = new SysUser();
-			sysUser.setPhone(phone);
-			sysUser.setUserType("TEACHER");
-			sysUserDao.insert(sysUser);
-			//添加用户现金账户
-			//imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null));
-			//userFeignService.createCashAccount(sysUser.getId());
-			//sysTenantAccount
-			//创建teacher表
-			sysUserDao.insertTeacher(sysUser.getId());
-			return queryUserInfoByPhone(phone);
-		}else if(StringUtils.equalsIgnoreCase(clientId,"STUDENT")){
-			SysUser sysUser = new SysUser();
-			sysUser.setPhone(phone);
-			sysUser.setUserType("STUDENT");
-			
-			sysUserDao.insert(sysUser);
-			sysUserService.saveStudent(sysUser.getId());
-			return queryUserInfoByPhone(phone);
-		}
-		return null;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void refreshImToken(SysUser sysUser) {
-		sysUserDao.refreshImToken(sysUser.getId(),sysUser.getImToken());
-	}
-
-	@Override
-	public void saveStudent(Long userId) {
-		sysUserDao.saveStudent(userId);
-	}
-
-	@Override
-	public void saveTeacher(Long userId) {
-		sysUserDao.insertTeacher(userId);
-	}
+    @Autowired
+    private SysUserDao sysUserDao;
+
+    @Autowired
+    private SysUserRoleService sysUserRoleService;
+
+    @Autowired
+    private SysRoleMenuService sysRoleMenuService;
+    @Autowired
+    private SysUserService sysUserService;
+    @Autowired
+    private IdGeneratorService smsCodeService;
+
+    @Override
+    public BaseDAO<Long, SysUser> getDAO() {
+        return sysUserDao;
+    }
+
+    @Override
+    public SysUser queryByUsername(String username) {
+        return sysUserDao.queryByUsername(username);
+    }
+
+    @Override
+    public SysUser queryByPhone(String phone) {
+        return sysUserDao.queryByPhone(phone);
+    }
+
+    @Override
+    public SysUser queryLockByPhone(String phone) {
+        return sysUserDao.queryLockByPhone(phone);
+    }
+
+    @Override
+    public SysUser queryByPhoneAndClient(String phone, String client) {
+        return sysUserDao.queryByPhoneAndClient(phone, client);
+    }
+
+    @Override
+    public SysUserInfo queryUserInfoByUsername(String username) {
+        return getSysUserInfo(queryByUsername(username));
+    }
+
+    @Override
+    public SysUserInfo queryUserInfoByPhone(String phone) {
+        return getSysUserInfo(queryLockByPhone(phone));
+    }
+
+    @Override
+    public SysUserInfo queryUserInfoByPhoneAndClient(String phone, String client) {
+        return getSysUserInfo(queryByPhoneAndClient(phone, client));
+    }
+
+    private SysUserInfo getSysUserInfo(SysUser sysUser) {
+        if (sysUser == null) {
+            return null;
+        }
+        SysUserInfo userInfo = new SysUserInfo();
+        userInfo.setSysUser(sysUser);
+
+        List<String> roleCodeList = sysUserRoleService.queryRoleCodeListByUserId(sysUser.getId());
+        userInfo.setRoles(roleCodeList.toArray(new String[roleCodeList.size()]));
+
+        List<Long> roleIdList = sysUserRoleService.queryRoleIdListByUserId(sysUser.getId());
+        List<String> permissionList = sysRoleMenuService.queryPermissionsByRoleIdList(roleIdList);
+
+        userInfo.setPermissions(permissionList.toArray(new String[permissionList.size()]));
+
+        return userInfo;
+    }
+
+    @Override
+    public boolean deleteById(Long id) {
+        SysUser user = get(id);
+
+        if (user == null) {
+            throw new BizException("账户不存在");
+        }
+
+        user.setUpdateTime(new Date());
+        user.setDelFlag(YesOrNoEnum.YES);
+
+        update(user);
+
+        return true;
+    }
+
+    @Override
+    public void updatePassword(String mobile, String password) {
+        sysUserDao.updatePassword(mobile, password);
+    }
+
+    @Override
+    public Long add(SysUser sysUser) {
+        sysUserDao.insert(sysUser);
+        sysUserDao.update(sysUser);
+        return sysUser.getId();
+    }
+
+    @Override
+    public ImUserModel getBasic(Long userId) {
+        return sysUserDao.getBasic(userId);
+    }
+
+    @Override
+    public void updateBaseInfo(SysUser sysUser) {
+        sysUserDao.update(sysUser);
+    }
+
+    @Override
+    public SysUser queryUserInfo(Long userId) {
+        return sysUserDao.get(userId);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public SysUserInfo registerUser(String phone, String clientId) {
+        if (StringUtils.equalsIgnoreCase(clientId, "TEACHER")) {
+            SysUser sysUser = new SysUser();
+            sysUser.setPhone(phone);
+            sysUser.setUserType("TEACHER");
+            sysUserDao.insert(sysUser);
+            //添加用户现金账户
+            //imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null));
+            //userFeignService.createCashAccount(sysUser.getId());
+            //sysTenantAccount
+            //创建teacher表
+            sysUserDao.insertTeacher(sysUser.getId());
+            return queryUserInfoByPhone(phone);
+        } else if (StringUtils.equalsIgnoreCase(clientId, "STUDENT")) {
+            SysUser sysUser = new SysUser();
+            sysUser.setPhone(phone);
+            sysUser.setUserType("STUDENT");
+
+            sysUserDao.insert(sysUser);
+            sysUserService.saveStudent(sysUser.getId());
+            return queryUserInfoByPhone(phone);
+        }
+        return null;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void refreshImToken(SysUser sysUser) {
+        sysUserDao.refreshImToken(sysUser.getId(), sysUser.getImToken());
+    }
+
+    @Override
+    public void saveStudent(Long userId) {
+        sysUserDao.saveStudent(userId);
+    }
+
+    @Override
+    public void saveTeacher(Long userId) {
+        sysUserDao.insertTeacher(userId);
+    }
+
+    @Override
+    public void updateUserCard(RealnameAuthReq realNameAuthDto, IdcardInfoExtractor idcardInfoExtractor) {
+        sysUserDao.updateUserCard(realNameAuthDto, idcardInfoExtractor);
+    }
 
 }

+ 349 - 290
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java

@@ -1,5 +1,10 @@
 package com.yonge.cooleshow.auth.web.controller;
 
+import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
+import com.yonge.cooleshow.auth.api.dto.UpdatePasswordDto;
+import com.yonge.toolset.thirdparty.user.realname.RealnameAuthenticationPlugin;
+import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
+import com.yonge.toolset.utils.idcard.IdcardValidator;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -8,17 +13,14 @@ import io.swagger.annotations.ApiOperation;
 import java.util.Date;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-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 com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.service.SysRoleService;
@@ -35,233 +37,257 @@ import com.yonge.cooleshow.common.security.SecurityUtils;
 import com.yonge.cooleshow.common.service.IdGeneratorService;
 import com.yonge.toolset.utils.date.DateUtil;
 
+import javax.validation.Valid;
+
 @RestController()
 @RequestMapping("user")
 @Api(tags = "会员服务")
 public class UserController extends BaseController {
 
-	@Autowired
-	private SysUserService sysUserService;
-	@Autowired
-	private SysRoleService sysRoleService;
-	/*@Autowired
-	private ImFeignService imFeignService;*/
-	@Autowired
-	private SysUserRoleService sysUserRoleService;
-	@Autowired
-	private IdGeneratorService smsCodeService;
-	@Value("${message.debugMode}")
-	private boolean debugMode;
-
-	@ApiOperation(value = "分页查询用户信息")
-	@ApiImplicitParams({ @ApiImplicitParam(name = "userType", value = "用户类型", required = false, dataType = "String"),
-			@ApiImplicitParam(name = "createStartDate", value = "开始注册时间", required = true, dataType = "String"),
-			@ApiImplicitParam(name = "createEndDate", value = "结束注册时间", required = true, dataType = "String") })
-	@GetMapping(value = "/queryPage")
-	@PreAuthorize("@pcs.hasPermissions('user/queryPage')")
-	public Object queryPage(SysUserQueryInfo queryInfo) {
-		return succeed(sysUserService.queryPage(queryInfo));
-	}
-
-	@ApiOperation(value = "查询用户信息接口")
-	@GetMapping("/query")
-	@PreAuthorize("@pcs.hasPermissions('user/query')")
-	public Object query() {
-		AuthUser user = SecurityUtils.getUser();
-		if (user != null) {
-			return succeed(sysUserService.get(user.getUserId()));
-		}
-		return failed();
-	}
-
-	@ApiOperation(value = "根据用户编号获取用户基本信息")
-	@GetMapping("/getBasic")
-	public Object getBasic(Long userId) {
-		if (userId == null) {
-			return failed("参数校验异常");
-		}
-		return succeed(sysUserService.getBasic(userId));
-	}
-
-	@GetMapping(value = "/findByPhone")
-	public Object findByPhone(String mobile) {
-		return succeed(sysUserService.queryByPhone(mobile));
-	}
-
-	@GetMapping(value = "/queryUserByPhone")
-	public SysUser queryUserByPhone(String mobile) {
-		return sysUserService.queryByPhone(mobile);
-	}
-
-	@GetMapping(value = "/noAuth/queryUserByPhone")
-	public Object noAuthQueryUserByPhone(String mobile) {
-		SysUser sysUser = sysUserService.queryByPhone(mobile);
-		if(sysUser == null){
-			return succeed(0);
-		}
-		return succeed(1);
-	}
-
-	@GetMapping(value = "/queryUserById/{userId}")
-	public SysUser queryUserById(@PathVariable("userId") Long userId) {
-		return sysUserService.get(userId);
-	}
-
-	@PostMapping(value = "/updateSysUser", consumes = MediaType.APPLICATION_JSON_VALUE)
-	public boolean updateSysUser(@RequestBody SysUser user) {
-		user.setUpdateTime(new Date());
-		sysUserService.update(user);
-		return true;
-	}
-
-	@ApiOperation(value = "新增用户")
-	@PostMapping(value = "/add", consumes = MediaType.APPLICATION_JSON_VALUE)
-	public HttpResponseResult<Long> add(@RequestBody SysUser sysUser) {
-		return succeed(sysUserService.add(sysUser));
-	}
-
-	@ApiOperation(value = "设置密码")
-	@PostMapping(value = "/setPassword", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
-	@ApiImplicitParams({@ApiImplicitParam(name = "password", value = "密码", required = true, dataType = "String"),
-			@ApiImplicitParam(name = "username", value = "用户名", required = true, dataType = "String") })
-	public Object setPassword(String password, String username) {
-		if (StringUtils.isEmpty(password)) {
-			return failed("参数校验失败");
-		}
-		AuthUser authUser = SecurityUtils.getUser();
-		if (authUser == null) {
-			return failed("获取用户信息失败");
-		}
-		SysUser sysUser = sysUserService.get(authUser.getUserId());
-		if (sysUser == null) {
-			return failed("用户不存在");
-		}
-		if(sysUser.getUserType().contains("TEACHER") || sysUser.getUserType().contains("SYSTEM")){
-			sysUser.setRealName(username);
-		}else {
-			sysUser.setUsername(username);
-		}
+    @Autowired
+    private SysUserService sysUserService;
+    @Autowired
+    private SysRoleService sysRoleService;
+    /*@Autowired
+    private ImFeignService imFeignService;*/
+    @Autowired
+    private SysUserRoleService sysUserRoleService;
+    @Autowired
+    private IdGeneratorService smsCodeService;
+    @Value("${message.debugMode}")
+    private boolean debugMode;
+    @Autowired
+    private RealnameAuthenticationPlugin realnameAuthenticationPlugin;
+
+    @ApiOperation(value = "分页查询用户信息")
+    @ApiImplicitParams({@ApiImplicitParam(name = "userType", value = "用户类型", required = false, dataType = "String"),
+            @ApiImplicitParam(name = "createStartDate", value = "开始注册时间", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "createEndDate", value = "结束注册时间", required = true, dataType = "String")})
+    @GetMapping(value = "/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('user/queryPage')")
+    public Object queryPage(SysUserQueryInfo queryInfo) {
+        return succeed(sysUserService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "查询用户信息接口")
+    @GetMapping("/query")
+    @PreAuthorize("@pcs.hasPermissions('user/query')")
+    public Object query() {
+        AuthUser user = SecurityUtils.getUser();
+        if (user != null) {
+            return succeed(sysUserService.get(user.getUserId()));
+        }
+        return failed();
+    }
+
+    @ApiOperation(value = "根据用户编号获取用户基本信息")
+    @GetMapping("/getBasic")
+    public Object getBasic(Long userId) {
+        if (userId == null) {
+            return failed("参数校验异常");
+        }
+        return succeed(sysUserService.getBasic(userId));
+    }
+
+    @GetMapping(value = "/findByPhone")
+    public Object findByPhone(String mobile) {
+        return succeed(sysUserService.queryByPhone(mobile));
+    }
+
+    @GetMapping(value = "/queryUserByPhone")
+    public SysUser queryUserByPhone(String mobile) {
+        return sysUserService.queryByPhone(mobile);
+    }
+
+    @GetMapping(value = "/noAuth/queryUserByPhone")
+    public Object noAuthQueryUserByPhone(String mobile) {
+        SysUser sysUser = sysUserService.queryByPhone(mobile);
+        if (sysUser == null) {
+            return succeed(0);
+        }
+        return succeed(1);
+    }
+
+    @GetMapping(value = "/queryUserById/{userId}")
+    public SysUser queryUserById(@PathVariable("userId") Long userId) {
+        return sysUserService.get(userId);
+    }
+
+    @PostMapping(value = "/updateSysUser", consumes = MediaType.APPLICATION_JSON_VALUE)
+    public boolean updateSysUser(@RequestBody SysUser user) {
+        user.setUpdateTime(new Date());
+        sysUserService.update(user);
+        return true;
+    }
+
+    @ApiOperation(value = "新增用户")
+    @PostMapping(value = "/add", consumes = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResponseResult<Long> add(@RequestBody SysUser sysUser) {
+        return succeed(sysUserService.add(sysUser));
+    }
+
+    @ApiOperation(value = "设置密码")
+    @PostMapping(value = "/setPassword", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    @ApiImplicitParams({@ApiImplicitParam(name = "password", value = "密码", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "username", value = "用户名", required = true, dataType = "String")})
+    public Object setPassword(String password, String username) {
+        if (StringUtils.isEmpty(password)) {
+            return failed("参数校验失败");
+        }
+        AuthUser authUser = SecurityUtils.getUser();
+        if (authUser == null) {
+            return failed("获取用户信息失败");
+        }
+        SysUser sysUser = sysUserService.get(authUser.getUserId());
+        if (sysUser == null) {
+            return failed("用户不存在");
+        }
+        if (sysUser.getUserType().contains("TEACHER") || sysUser.getUserType().contains("SYSTEM")) {
+            sysUser.setRealName(username);
+        } else {
+            sysUser.setUsername(username);
+        }
 		/*if(StringUtils.isEmpty(sysUser.getImToken())){
 			ImResult register = imFeignService.register(new ImUserModel(sysUser.getId().toString(), username, sysUser.getAvatar()));
 			sysUser.setImToken(register.getToken());
 		}else {
 			imFeignService.update(new ImUserModel(sysUser.getId().toString(),username,sysUser.getAvatar()));
 		}*/
-		password = new BCryptPasswordEncoder().encode(password);
-		sysUser.setPassword(password);
-		sysUser.setUpdateTime(new Date());
-		sysUserService.update(sysUser);
-		return succeed();
-	}
-
-	@ApiOperation(value = "修改密码")
-	@PostMapping(value = "/updatePassword", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
-	@ApiImplicitParams({ @ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String"),
-			@ApiImplicitParam(name = "authCode", value = "验证码", required = true, dataType = "String"),
-			@ApiImplicitParam(name = "newPassword", value = "新密码", required = true, dataType = "String") })
-	public Object updatePassword(String mobile, String authCode, String newPassword) {
-		if (StringUtils.isEmpty(mobile) || StringUtils.isEmpty(authCode) || StringUtils.isEmpty(newPassword)) {
-			return failed("参数校验异常");
-		}
-		SysUser sysUser = sysUserService.queryByPhone(mobile);
-		if (sysUser == null) {
-			return failed("用户不存在");
-		}
-		if (smsCodeService.verifyValidCode(mobile, authCode)) {
-			String password = new BCryptPasswordEncoder().encode(newPassword);
-			sysUser.setPassword(password);
-			sysUser.setUpdateTime(new Date());
-			sysUserService.update(sysUser);
-			return succeed();
-		} else {
-			return failed("验证码错误");
-		}
-	}
-
-
-	@ApiOperation(value = "修改手机号")
-	@PostMapping(value = "/updatePhone")
-	public Object updatePhone(String oldPhone, String authCode, String newPhone) {
-		if (StringUtils.isEmpty(oldPhone) || StringUtils.isEmpty(authCode) || StringUtils.isEmpty(newPhone)) {
-			return failed("参数校验异常");
-		}
-		if(oldPhone.equals(newPhone)){
-			return failed("新旧手机号一致");
-		}
-		SysUser sysUser = sysUserService.queryByPhone(oldPhone);
-		if (sysUser == null) {
-			return failed("用户不存在");
-		}
-		SysUser newSysUser = sysUserService.queryByPhone(newPhone);
-		if (newSysUser != null) {
-			return failed("手机号被占用");
-		}
-		if (smsCodeService.verifyValidCode(newPhone, authCode)) {
-			sysUser.setPhone(newPhone);
-			sysUser.setUpdateTime(new Date());
-			sysUserService.update(sysUser);
-			return succeed();
-		} else {
-			return failed("验证码错误");
-		}
-	}
-
-	@ApiOperation(value = "修改密码")
-	@PostMapping(value = "/updatePassword2", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
-	@ApiImplicitParams({ @ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String"),
-			@ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "Integer"),
-			@ApiImplicitParam(name = "newPassword", value = "新密码", required = true, dataType = "String") })
-	public Object updatePassword2(Long userId, String mobile, String newPassword) {
-		if (StringUtils.isEmpty(mobile) || userId == null || StringUtils.isEmpty(newPassword)) {
-			return failed("参数校验异常");
-		}
-		SysUser sysUser = sysUserService.queryByPhone(mobile);
-		if (sysUser == null) {
-			return failed("用户不存在");
-		}
-		if (sysUser.getId().intValue() != userId) {
-			return failed("非法操作");
-		}
-		String password = new BCryptPasswordEncoder().encode(newPassword);
-		sysUser.setPassword(password);
-		sysUser.setUpdateTime(new Date());
-		sysUserService.update(sysUser);
-		return succeed();
-	}
-
-	@ApiOperation(value = "修改用户")
-	@PostMapping(value = "/update", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
-	public Object update(SysUser sysUser) {
-		AuthUser user = SecurityUtils.getUser();
-		if (user != null) {
-			Date date = new Date();
-			sysUser.setId(user.getUserId());
-			sysUser.setUpdateTime(date);
-			if(sysUser.getBirthdate() != null && DateUtil.daysBetween(sysUser.getBirthdate(),date) <= 0){
-				throw new BizException("出生日期不可超过当前时间");
-			}
-
-			sysUserService.updateBaseInfo(sysUser);
-			return succeed();
-		}
-		return failed();
-	}
-
-	@ApiOperation(value = "刷新token")
-	@PostMapping(value = "/refreshImToken")
-	public Object refreshImToken() {
-		AuthUser user = SecurityUtils.getUser();
-		if (user != null) {
-			SysUser sysUser = sysUserService.get(user.getUserId());
-			String username;
-			if(sysUser.getUserType().contains("TEACHER") || sysUser.getUserType().contains("SYSTEM")){
-				username = sysUser.getRealName();
-			}else {
-				username = sysUser.getUsername();
-			}
-			if(StringUtils.isEmpty(username)){
-				return failed("获取Token失败: 用户名为空");
-			}else {
+        password = new BCryptPasswordEncoder().encode(password);
+        sysUser.setPassword(password);
+        sysUser.setUpdateTime(new Date());
+        sysUserService.update(sysUser);
+        return succeed();
+    }
+
+    @ApiOperation(value = "手机验证码修改密码")
+    @PostMapping(value = "/updatePassword", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    @ApiImplicitParams({@ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "authCode", value = "验证码", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "newPassword", value = "新密码", required = true, dataType = "String")})
+    public Object updatePassword(String mobile, String authCode, String newPassword) {
+        if (StringUtils.isEmpty(mobile) || StringUtils.isEmpty(authCode) || StringUtils.isEmpty(newPassword)) {
+            return failed("参数校验异常");
+        }
+        SysUser sysUser = sysUserService.queryByPhone(mobile);
+        if (sysUser == null) {
+            return failed("用户不存在");
+        }
+        if (smsCodeService.verifyValidCode(mobile, authCode)) {
+            String password = new BCryptPasswordEncoder().encode(newPassword);
+            sysUser.setPassword(password);
+            sysUser.setUpdateTime(new Date());
+            sysUserService.update(sysUser);
+            return succeed();
+        } else {
+            return failed("验证码错误");
+        }
+    }
+
+    @ApiOperation(value = "原密码修改密码")
+    @PostMapping(value = "/updatePasswordByOldPassword")
+    public Object updatePasswordByOldPassword(@RequestBody UpdatePasswordDto updatePasswordDto) {
+        if (!updatePasswordDto.getNewPasswordFirst().equals(updatePasswordDto.getNewPasswordSecond())) {
+            return failed("两次输入密码不一致");
+        }
+        AuthUser authUser = SecurityUtils.getUser();
+        SysUser sysUser = sysUserService.get(authUser.getUserId());
+        if (sysUser == null) {
+            return failed("用户不存在");
+        }
+        String oldPassword = new BCryptPasswordEncoder().encode(updatePasswordDto.getOldPassword());
+        if (!oldPassword.equals(sysUser.getPassword())) {
+            return failed("原密码错误");
+        }
+        sysUser.setPassword(new BCryptPasswordEncoder().encode(updatePasswordDto.getNewPasswordFirst()));
+        sysUser.setUpdateTime(new Date());
+        sysUserService.update(sysUser);
+        return succeed();
+    }
+
+    @ApiOperation(value = "修改手机号")
+    @PostMapping(value = "/updatePhone")
+    public Object updatePhone(String oldPhone, String authCode, String newPhone) {
+        if (StringUtils.isEmpty(oldPhone) || StringUtils.isEmpty(authCode) || StringUtils.isEmpty(newPhone)) {
+            return failed("参数校验异常");
+        }
+        if (oldPhone.equals(newPhone)) {
+            return failed("新旧手机号一致");
+        }
+        SysUser sysUser = sysUserService.queryByPhone(oldPhone);
+        if (sysUser == null) {
+            return failed("用户不存在");
+        }
+        SysUser newSysUser = sysUserService.queryByPhone(newPhone);
+        if (newSysUser != null) {
+            return failed("手机号被占用");
+        }
+        if (smsCodeService.verifyValidCode(newPhone, authCode)) {
+            sysUser.setPhone(newPhone);
+            sysUser.setUpdateTime(new Date());
+            sysUserService.update(sysUser);
+            return succeed();
+        } else {
+            return failed("验证码错误");
+        }
+    }
+
+    @ApiOperation(value = "管理后台修改密码")
+    @PostMapping(value = "/updatePassword2", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    @ApiImplicitParams({@ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "newPassword", value = "新密码", required = true, dataType = "String")})
+    public Object updatePassword2(Long userId, String mobile, String newPassword) {
+        if (StringUtils.isEmpty(mobile) || userId == null || StringUtils.isEmpty(newPassword)) {
+            return failed("参数校验异常");
+        }
+        SysUser sysUser = sysUserService.queryByPhone(mobile);
+        if (sysUser == null) {
+            return failed("用户不存在");
+        }
+        if (sysUser.getId().intValue() != userId) {
+            return failed("非法操作");
+        }
+        String password = new BCryptPasswordEncoder().encode(newPassword);
+        sysUser.setPassword(password);
+        sysUser.setUpdateTime(new Date());
+        sysUserService.update(sysUser);
+        return succeed();
+    }
+
+    @ApiOperation(value = "修改用户")
+    @PostMapping(value = "/update", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+    public Object update(SysUser sysUser) {
+        AuthUser user = SecurityUtils.getUser();
+        if (user != null) {
+            Date date = new Date();
+            sysUser.setId(user.getUserId());
+            sysUser.setUpdateTime(date);
+            if (sysUser.getBirthdate() != null && DateUtil.daysBetween(sysUser.getBirthdate(), date) <= 0) {
+                throw new BizException("出生日期不可超过当前时间");
+            }
+
+            sysUserService.updateBaseInfo(sysUser);
+            return succeed();
+        }
+        return failed();
+    }
+
+    @ApiOperation(value = "刷新token")
+    @PostMapping(value = "/refreshImToken")
+    public Object refreshImToken() {
+        AuthUser user = SecurityUtils.getUser();
+        if (user != null) {
+            SysUser sysUser = sysUserService.get(user.getUserId());
+            String username;
+            if (sysUser.getUserType().contains("TEACHER") || sysUser.getUserType().contains("SYSTEM")) {
+                username = sysUser.getRealName();
+            } else {
+                username = sysUser.getUsername();
+            }
+            if (StringUtils.isEmpty(username)) {
+                return failed("获取Token失败: 用户名为空");
+            } else {
 				/*ImResult register = imFeignService.register(new ImUserModel(sysUser.getId().toString(), username, sysUser.getAvatar()));
 				if(StringUtils.isEmpty(register.getToken())){
 					return failed("获取Token失败: 请联系教务老师");
@@ -269,72 +295,105 @@ public class UserController extends BaseController {
 				sysUser.setImToken(register.getToken());
 				sysUserService.refreshImToken(sysUser);
 				return succeed(register.getToken());*/
-			}
-		}
-		return failed();
-	}
-
-	@ApiOperation(value = "校验用户手机号和密码")
-	@GetMapping(value = "/checkUser")
-	public Object checkUser(String phone,String password) {
-		if(StringUtils.isEmpty(phone) || StringUtils.isEmpty(password)){
-			throw new BizException("请录入用户名和密码");
-		}
-		AuthUser user = SecurityUtils.getUser();
-		if (user != null) {
-			SysUser sysUser = sysUserService.get(user.getUserId());
-			if(!sysUser.getPhone().equals(phone)){
-				return failed("手机号校验失败");
-			}
-			if(new BCryptPasswordEncoder().matches(password,sysUser.getPassword())){
-				return succeed();
-			}else {
-				return failed("密码校验失败");
-			}
-		}
-		return failed();
-	}
-
-	@ApiOperation(value = "获取用户角色列表")
-	@GetMapping("/getRole")
-	@PreAuthorize("@pcs.hasPermissions('user/getRole')")
-	public Object getRole() {
-		AuthUser user = SecurityUtils.getUser();
-		if (user != null) {
-			SysUser sysUser = sysUserService.get(user.getUserId());
-			if(sysUser.getIsSuperAdmin()){
-				QueryInfo queryInfo = new QueryInfo();
-				queryInfo.setRows(9999);
-				return succeed(sysRoleService.queryPage(queryInfo).getRows());
-			}
-			return succeed(sysRoleService.findRoleByUserId(user.getUserId()));
-		}
-		return failed();
-	}
-
-	@ApiOperation(value = "用户角色新增")
-	@ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "Integer"),
-			@ApiImplicitParam(name = "roleIds", value = "角色id,逗号分隔", required = true, dataType = "String") })
-	@PostMapping(value = "/addRole", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
-	@PreAuthorize("@pcs.hasPermissions('user/addRole')")
-	public Object getRole(String userId, String roleIds) {
-		if (StringUtils.isEmpty(userId) || StringUtils.isEmpty(roleIds)) {
-			return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
-		}
-		sysUserRoleService.batchInsert(Long.parseLong(userId), roleIds);
-		return succeed();
-	}
-
-	@ApiOperation(value = "用户角色删除")
-	@ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "Integer"),
-			@ApiImplicitParam(name = "roleIds", value = "角色id,逗号分隔", required = true, dataType = "String") })
-	@PostMapping(value = "/delRole", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
-	@PreAuthorize("@pcs.hasPermissions('user/delRole')")
-	public Object delRole(String userId, String roleIds) {
-		if (StringUtils.isEmpty(userId) || StringUtils.isEmpty(roleIds)) {
-			return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
-		}
-		sysUserRoleService.batchDel(Long.parseLong(userId), roleIds);
-		return succeed();
-	}
+            }
+        }
+        return failed();
+    }
+
+    @ApiOperation(value = "校验用户手机号和密码")
+    @GetMapping(value = "/checkUser")
+    public Object checkUser(String phone, String password) {
+        if (StringUtils.isEmpty(phone) || StringUtils.isEmpty(password)) {
+            throw new BizException("请录入用户名和密码");
+        }
+        AuthUser user = SecurityUtils.getUser();
+        if (user != null) {
+            SysUser sysUser = sysUserService.get(user.getUserId());
+            if (!sysUser.getPhone().equals(phone)) {
+                return failed("手机号校验失败");
+            }
+            if (new BCryptPasswordEncoder().matches(password, sysUser.getPassword())) {
+                return succeed();
+            } else {
+                return failed("密码校验失败");
+            }
+        }
+        return failed();
+    }
+
+    @ApiOperation(value = "获取用户角色列表")
+    @GetMapping("/getRole")
+    @PreAuthorize("@pcs.hasPermissions('user/getRole')")
+    public Object getRole() {
+        AuthUser user = SecurityUtils.getUser();
+        if (user != null) {
+            SysUser sysUser = sysUserService.get(user.getUserId());
+            if (sysUser.getIsSuperAdmin()) {
+                QueryInfo queryInfo = new QueryInfo();
+                queryInfo.setRows(9999);
+                return succeed(sysRoleService.queryPage(queryInfo).getRows());
+            }
+            return succeed(sysRoleService.findRoleByUserId(user.getUserId()));
+        }
+        return failed();
+    }
+
+    @ApiOperation(value = "用户角色新增")
+    @ApiImplicitParams({@ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "roleIds", value = "角色id,逗号分隔", required = true, dataType = "String")})
+    @PostMapping(value = "/addRole", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+    @PreAuthorize("@pcs.hasPermissions('user/addRole')")
+    public Object getRole(String userId, String roleIds) {
+        if (StringUtils.isEmpty(userId) || StringUtils.isEmpty(roleIds)) {
+            return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
+        }
+        sysUserRoleService.batchInsert(Long.parseLong(userId), roleIds);
+        return succeed();
+    }
+
+    @ApiOperation(value = "用户角色删除")
+    @ApiImplicitParams({@ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "roleIds", value = "角色id,逗号分隔", required = true, dataType = "String")})
+    @PostMapping(value = "/delRole", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+    @PreAuthorize("@pcs.hasPermissions('user/delRole')")
+    public Object delRole(String userId, String roleIds) {
+        if (StringUtils.isEmpty(userId) || StringUtils.isEmpty(roleIds)) {
+            return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
+        }
+        sysUserRoleService.batchDel(Long.parseLong(userId), roleIds);
+        return succeed();
+    }
+
+
+    @PostMapping("/realNameAuth")
+    @ApiOperation(value = "实名认证", notes = "传入realNameAuthDto")
+    @ResponseBody
+    public HttpResponseResult<IdcardInfoExtractor> realNameAuth(@Valid @RequestBody RealnameAuthReq realNameAuthDto) {
+        AuthUser authUser = SecurityUtils.getUser();
+        if (authUser != null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        SysUser user = sysUserService.get(authUser.getUserId());
+        if (user == null) {
+            return failed("用户不存在");
+        }
+        IdcardValidator idcardValidator = new IdcardValidator();
+        //验证身份证号合法性
+        boolean validatedAllIdcard = idcardValidator.isValidatedAllIdcard(realNameAuthDto.getIdCardNo());
+        if (!validatedAllIdcard) {
+            return failed("身份证号不合法");
+        }
+        //通过身份证号获取身份信息
+        IdcardInfoExtractor idcardInfoExtractor = new IdcardInfoExtractor(realNameAuthDto.getIdCardNo(), validatedAllIdcard);
+        boolean verify = realnameAuthenticationPlugin.verify(realNameAuthDto.getRealName(), realNameAuthDto.getIdCardNo());
+        if (verify && realNameAuthDto.getSave()) {
+            //实名认证通过后立刻保存
+            sysUserService.updateUserCard(realNameAuthDto, idcardInfoExtractor);
+            return succeed(idcardInfoExtractor);
+        } else {
+            return failed("未通过实名认证");
+        }
+    }
+
+
 }

+ 20 - 1
cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -143,7 +143,7 @@
         </set>
         WHERE id_ = #{id}
     </update>
-    <update id="updatePassword">
+    <update id="updatePasswordReq">
         UPDATE sys_user SET password_ = #{password} WHERE phone_ = #{mobile}
     </update>
     <update id="refreshImToken">
@@ -202,4 +202,23 @@
     <select id="queryByPhoneAndClient" resultMap="SysUser">
         select * from sys_user where (phone_ = #{phone} OR username_ = #{phone}) AND user_type_ LIKE CONCAT('%',#{client},'%') LIMIT 1 FOR UPDATE
     </select>
+
+    <update id="updateUserCard">
+        UPDATE sys_user
+        <set>
+            <if test="param.realName != null and param.realName != ''">
+                real_name_ = #{param.realName},
+            </if>
+            <if test="param.idCardNo != null and param.idCardNo != ''">
+                id_card_no_ = #{param.idCardNo},
+            </if>
+            <if test="idcardInfo.gender != null">
+                gender_ = #{idcardInfo.gender},
+            </if>
+            <if test="idcardInfo.birthdate != null and idcardInfo.birthdate != ''">
+                birthdate_ = #{idcardInfo.birthdate},
+            </if>
+        </set>
+        WHERE id_ = #{param.userId}
+    </update>
 </mapper>

+ 74 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/EmployeeController.java

@@ -0,0 +1,74 @@
+package com.yonge.cooleshow.admin.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.util.Date;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+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 com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dao.EmployeeDao;
+import com.yonge.cooleshow.biz.dal.entity.Employee;
+import com.yonge.cooleshow.biz.dal.service.EmployeeService;
+import com.yonge.cooleshow.common.controller.BaseController;
+
+@RequestMapping("employee")
+@Api(tags = "员工管理")
+@RestController
+public class EmployeeController extends BaseController {
+
+    @Autowired
+    private EmployeeService employeeService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
+
+    @ApiOperation(value = "新增员工")
+    @PostMapping("/add")
+    @PreAuthorize("@pcs.hasPermissions('employee/add')")
+    public Object add(@RequestBody Employee employee) throws Exception {
+        employeeService.add(employee);
+        return succeed();
+    }
+
+    @ApiOperation(value = "修改员工")
+    @PostMapping("/update")
+    @PreAuthorize("@pcs.hasPermissions('employee/update')")
+    public Object update(@RequestBody Employee employee) {
+        employee.setUpdateTime(new Date());
+        employeeService.updateEmployee(employee);
+        return succeed();
+    }
+
+    @ApiOperation(value = "获取所有员工")
+    @GetMapping("/findAll")
+    @PreAuthorize("@pcs.hasPermissions('employee/findAll')")
+    public Object findAll() {
+        return succeed(employeeService.findAll(null));
+    }
+
+    @ApiOperation(value = "获取用户信息")
+    @GetMapping("/queryUserInfo")
+    public Object apiQueryUserInfo() {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser != null && sysUser.getId() != null){
+            Employee employee = employeeService.get(sysUser.getId());
+            employee.setRoles(employeeDao.queryUserRole(sysUser.getId()));
+            employee.setContactAddress(employee.getContactAddress());
+            employee.setPostalCode(employee.getPostalCode());
+            
+            return succeed(employee);
+        }
+        return failed("获取用户信息失败");
+    }
+
+}

+ 72 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthEntryRecordController.java

@@ -0,0 +1,72 @@
+package com.yonge.cooleshow.admin.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.req.AuthOperaReq;
+import com.yonge.cooleshow.biz.dal.dto.search.TeacherAuthEntryRecordSearch;
+import com.yonge.cooleshow.biz.dal.service.TeacherAuthEntryRecordService;
+import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.Query;
+import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.page.PageInfo;
+import com.yonge.toolset.utils.string.StringUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+@RestController
+@RequestMapping("/TeacherAuthEntryRecord")
+@Api(value = "老师入驻审核表", tags = "老师入驻审核表")
+public class TeacherAuthEntryRecordController extends BaseController {
+    @Autowired
+    private TeacherAuthEntryRecordService teacherAuthEntryRecordService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    /**
+     * 查询分页
+     */
+    @GetMapping("/page")
+    @ApiOperation(value = "查询分页", notes = "传入teacherAuthEntryRecord")
+    public HttpResponseResult<PageInfo<TeacherAuthEntryRecordVo>> page(TeacherAuthEntryRecordSearch search, Query query) {
+        IPage<TeacherAuthEntryRecordVo> pages = teacherAuthEntryRecordService.selectPage(Condition.getPage(query), search);
+        return succeed(Condition.pageInfo(pages));
+    }
+
+    /**
+     * 查询单条详情
+     */
+    @GetMapping("/detail")
+    @ApiOperation(value = "详情", notes = "传入teacherAuthEntryRecord")
+    public HttpResponseResult<TeacherAuthEntryRecordVo> detail(@ApiParam(value = "主键", required = true) @RequestParam Long id) {
+        TeacherAuthEntryRecordVo detail = teacherAuthEntryRecordService.detail(id);
+        return succeed(detail);
+    }
+
+
+    @PostMapping("/doAuth")
+    @ApiOperation(value = "审核", notes = "传入authOperaDto")
+    public HttpResponseResult<Boolean> doAuth(@Valid @RequestBody AuthOperaReq authOperaReq) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        return teacherAuthEntryRecordService.doAuth(authOperaReq, sysUser);
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/remove")
+    @ApiOperation(value = "逻辑删除", notes = "传入ids")
+    public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+        if (StringUtil.isEmpty(ids)) {
+            return failed("参数不能为空");
+        }
+        return status(teacherAuthEntryRecordService.removeByIds(StringUtil.toLongList(ids)));
+    }
+}

+ 103 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java

@@ -0,0 +1,103 @@
+package com.yonge.cooleshow.admin.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dao.SubjectDao;
+import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.Query;
+import com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.utils.string.StringUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@RestController
+@RequestMapping("/Teacher")
+@Api(value = "教师表", tags = "教师表")
+public class TeacherController extends BaseController {
+
+    @Autowired
+    private TeacherService teacherService;
+
+    /**
+     * 查询单条
+     */
+    @GetMapping("/detail")
+    @ApiOperation(value = "详情", notes = "传入teacher")
+    public HttpResponseResult<Teacher> detail(Teacher teacher) {
+        Teacher detail = teacherService.getOne(Condition.getQueryWrapper(teacher));
+        return succeed(detail);
+    }
+
+    /**
+     * 查询集合
+     */
+    @GetMapping("/list")
+    @ApiOperation(value = "查询集合", notes = "传入teacher")
+    public HttpResponseResult<List<Teacher>> list(Teacher teacher) {
+        List<Teacher> list = teacherService.list();
+        return succeed(list);
+    }
+
+    /**
+     * 查询分页
+     */
+    @GetMapping("/page")
+    @ApiOperation(value = "查询分页", notes = "传入teacher")
+    public HttpResponseResult<IPage<Teacher>> page(Teacher teacher, Query query) {
+        IPage<Teacher> pages = teacherService.selectPage(Condition.getPage(query), teacher);
+        return succeed(pages);
+    }
+
+    /**
+     * 新增
+     */
+    @PostMapping("/save")
+    @ApiOperation(value = "新增", notes = "传入teacher")
+    public HttpResponseResult save(@Valid @RequestBody Teacher teacher) {
+        return status(teacherService.save(teacher));
+    }
+
+    /**
+     * 修改
+     */
+    @PostMapping("/update")
+    @ApiOperation(value = "修改", notes = "传入teacher")
+    public HttpResponseResult update(@Valid @RequestBody Teacher teacher) {
+        return status(teacherService.updateById(teacher));
+    }
+
+    /**
+     * 新增或修改
+     */
+    @PostMapping("/submit")
+    @ApiOperation(value = "新增或修改", notes = "传入teacher")
+    public HttpResponseResult submit(@RequestBody Teacher teacher) {
+        return status(teacherService.saveOrUpdate(teacher));
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/remove")
+    @ApiOperation(value = "逻辑删除", notes = "传入ids")
+    public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+        if (StringUtil.isEmpty(ids)) {
+            return failed("参数不能为空");
+        }
+        return status(teacherService.removeByIds(StringUtil.toLongList(ids)));
+    }
+
+
+}

+ 17 - 0
cooleshow-user/user-biz/pom.xml

@@ -15,6 +15,8 @@
     <url>http://maven.apache.org</url>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <rongcloud.im.version>3.2.17</rongcloud.im.version>
+        <redisson.version>3.16.4</redisson.version>
     </properties>
     <dependencies>
         <dependency>
@@ -39,6 +41,21 @@
             <version>2.6</version>
             <scope>compile</scope>
         </dependency>
+
+        <!-- 融云-->
+        <dependency>
+            <groupId>cn.rongcloud.im</groupId>
+            <artifactId>server-sdk-java</artifactId>
+            <version>${rongcloud.im.version}</version>
+        </dependency>
+
+        <!-- redisson -->
+        <dependency>
+            <groupId>org.redisson</groupId>
+            <artifactId>redisson-spring-boot-starter</artifactId>
+            <version>${redisson.version}</version>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 48 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/config/IMProperties.java

@@ -0,0 +1,48 @@
+package com.yonge.cooleshow.biz.dal.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * Created by weiqinxiao on 2019/2/28.
+ */
+@Component
+@ConfigurationProperties(prefix = "cn.rongcloud.im")
+public class IMProperties {
+    private String appKey;
+    private String secret;
+    private String host;
+    private String rtcHost;
+
+    public String getAppKey() {
+        return appKey;
+    }
+
+    public void setAppKey(String appKey) {
+        this.appKey = appKey;
+    }
+
+    public String getSecret() {
+        return secret;
+    }
+
+    public void setSecret(String secret) {
+        this.secret = secret;
+    }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public String getRtcHost() {
+        return rtcHost;
+    }
+
+    public void setRtcHost(String rtcHost) {
+        this.rtcHost = rtcHost;
+    }
+}

+ 99 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/EmployeeDao.java

@@ -0,0 +1,99 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.yonge.cooleshow.auth.api.entity.SysRole;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.entity.Employee;
+import com.yonge.cooleshow.common.dal.BaseDAO;
+
+public interface EmployeeDao extends BaseDAO<Long, Employee> {
+
+    /**
+     * 修改密码
+     *
+     * @param userID
+     * @param password
+     */
+    void updatePassword(@Param("userID") Long userID, @Param("password") String password);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/17
+     * 修改用户账户锁定状态
+     */
+    int updateUserLockStatus(@Param("userID") Long userID);
+
+
+    void updateUserLock(@Param("userID") Long userID, @Param("status") int status);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/25
+     * 修改用户离职日期
+     */
+    int updateUserDemissionDate(@Param("userID") Long userID);
+
+    /**
+     * 根据手机号查询对象
+     *
+     * @param phone
+     * @return
+     */
+    SysUser queryByPhone(String phone);
+
+    /**
+     * 删除用户角色
+     *
+     * @param userId
+     */
+    void delEmployeeRole(Long userId);
+
+    /**
+     * 批量新增用户角色
+     *
+     * @param id
+     * @param roleIds
+     */
+    void batchAddEmployeeRole(@Param("userId") Long id, @Param("roleIds") List<Integer> roleIds);
+
+    /**
+     * 获取用户权限列表
+     *
+     * @param userId
+     * @return
+     */
+    List<Long> queryUserRole(Long userId);
+
+    /**
+     * 获取用户信息
+     *
+     * @param userIds
+     * @return
+     */
+    List<SysUser> getUsers(@Param("userIds") List<Long> userIds);
+
+    /**
+     * 批量添加角色和菜单关系
+     *
+     * @param roleId  角色id
+     * @param menuIds 菜单集合
+     */
+    int batchInsertRoleMenu(@Param("roleId") Long roleId, @Param("menuIds") List<Integer> menuIds);
+
+    /**
+     * 根据机构id,和菜单id删除
+     */
+    int delRoleMenu(@Param("menuIds") List<Integer> menuIds);
+
+    /**
+     * 添加角色信息
+     *
+     * @param sysRole
+     * @return
+     */
+    int insertSysRole(SysRole sysRole);
+
+}

+ 4 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherAuthEntryRecordDao.java

@@ -4,11 +4,10 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yonge.cooleshow.biz.dal.dto.TeacherApplyDetailDto;
-import com.yonge.cooleshow.biz.dal.dto.req.TeacherAuthEntryRecordSearch;
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherApplyDetailReq;
+import com.yonge.cooleshow.biz.dal.dto.search.TeacherAuthEntryRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.TeacherAuthEntryRecord;
 import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
-import io.swagger.models.auth.In;
 import org.apache.ibatis.annotations.Param;
 
 public interface TeacherAuthEntryRecordDao extends BaseMapper<TeacherAuthEntryRecord>{
@@ -25,7 +24,8 @@ public interface TeacherAuthEntryRecordDao extends BaseMapper<TeacherAuthEntryRe
 	 * @updateTime 2022/3/18 15:57
 	 * @return: java.lang.Integer
 	 */
-	Integer updateUserCard(@Param("param") TeacherApplyDetailDto teacherApplyDetailDto);
+	Integer updateUserCard(@Param("param") TeacherApplyDetailReq teacherApplyDetailDto);
+
 	/***
 	 * 根据老师id查询详情
 	 * @author liweifan

+ 18 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherDao.java

@@ -5,7 +5,9 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherSetReq;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import org.apache.ibatis.annotations.Param;
 
 public interface TeacherDao extends BaseMapper<Teacher> {
@@ -15,8 +17,23 @@ public interface TeacherDao extends BaseMapper<Teacher> {
      */
     List<Teacher> selectPage(@Param("page") IPage page, @Param("param") Teacher teacher);
 
-    Teacher detail1(@Param("userId") Long userId);
+    /***
+     * 查询老师设置详情
+     * @author liweifan
+     * @param: id
+     * @updateTime 2022/3/22 10:24
+     * @return: com.yonge.cooleshow.biz.dal.vo.TeacherVo
+     */
+    TeacherVo getSetDetail(@Param("id") Long id);
 
+    /***
+     * 修改老师设置信息
+     * @author liweifan
+     * @param: setReq
+     * @param: id
+     * @updateTime 2022/3/22 11:06
+     */
+    void updatetSetDetail(@Param("param") TeacherSetReq setReq, @Param("id") Long id);
     /**
     * @description: 获取用户基本信息
      * @param userId

+ 0 - 40
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/RealnameAuthDto.java

@@ -1,40 +0,0 @@
-package com.yonge.cooleshow.biz.dal.dto;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-import javax.validation.constraints.NotBlank;
-
-/**
- * 实名认证请求对象
- *
- * @Author: liweifan
- * @Data: 2022/3/18 15:04
- */
-@ApiModel(value = "RealnameAuthDto对象", description = "实名认证请求对象")
-public class RealnameAuthDto {
-
-    @NotBlank(message = "用户真实姓名不能为空")
-    @ApiModelProperty(value = "用户真实姓名", required = true)
-    private String realname;
-
-    @NotBlank(message = "用户身份证号不能为空")
-    @ApiModelProperty(value = "用户身份证号", required = true)
-    private String idcardNo;
-
-    public String getRealname() {
-        return realname;
-    }
-
-    public void setRealname(String realname) {
-        this.realname = realname;
-    }
-
-    public String getIdcardNo() {
-        return idcardNo;
-    }
-
-    public void setIdcardNo(String idcardNo) {
-        this.idcardNo = idcardNo;
-    }
-}

+ 6 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/AuthOperaDto.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/AuthOperaReq.java

@@ -1,9 +1,10 @@
-package com.yonge.cooleshow.biz.dal.dto;
+package com.yonge.cooleshow.biz.dal.dto.req;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 /**
  * 审核操作对象
@@ -11,12 +12,12 @@ import javax.validation.constraints.NotBlank;
  * @Author: liweifan
  * @Data: 2022/3/18 15:04
  */
-@ApiModel(value = "AuthOperaDto", description = "审核操作对象")
-public class AuthOperaDto {
-    @NotBlank(message = "审核单id不能为空")
+@ApiModel(value = "AuthOperaReq", description = "审核操作对象")
+public class AuthOperaReq {
+    @NotNull(message = "审核单id不能为空")
     @ApiModelProperty(value = "审核单id", required = true)
     private Long id;
-    @NotBlank(message = "请说明审核是否通过")
+    @NotNull(message = "请说明审核是否通过")
     @ApiModelProperty(value = "审核是否通过", required = true)
     private Boolean isPass;
     @NotBlank(message = "请说明审核理由")

+ 27 - 26
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/TeacherApplyDetailDto.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherApplyDetailReq.java

@@ -1,4 +1,4 @@
-package com.yonge.cooleshow.biz.dal.dto;
+package com.yonge.cooleshow.biz.dal.dto.req;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -13,23 +14,23 @@ import java.util.Date;
  * @Author: liweifan
  * @Data: 2022/3/18 14:56
  */
-@ApiModel(value = "TeacherApplyDetailDto对象", description = "老师入驻申请信息")
-public class TeacherApplyDetailDto implements Serializable {
+@ApiModel(value = "TeacherApplyDetailReq对象", description = "老师入驻申请信息")
+public class TeacherApplyDetailReq implements Serializable {
 
     @ApiModelProperty(value = "用户id")
     private Long userId;
 
     @NotBlank(message = "用户真实姓名不能为空")
-    @ApiModelProperty(value = "真实姓名", required = true)
+    @ApiModelProperty(value = "用户真实姓名", required = true)
     private String realName;
 
-    @NotBlank(message = "身份证号不能为空")
-    @ApiModelProperty(value = "身份证号", required = true)
+    @NotBlank(message = "用户身份证号不能为空")
+    @ApiModelProperty(value = "用户身份证号", required = true)
     private String idCardNo;
 
-    @NotBlank(message = "性别不能为空")
+    @NotNull(message = "性别不能为空")
     @ApiModelProperty(value = "性别(0,女  1,男)", required = true)
-    private String gender;
+    private Integer gender;
 
     @ApiModelProperty(value = "出生日期 ", required = true)
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -67,27 +68,11 @@ public class TeacherApplyDetailDto implements Serializable {
         this.userId = userId;
     }
 
-    public String getRealName() {
-        return realName;
-    }
-
-    public void setRealName(String realName) {
-        this.realName = realName;
-    }
-
-    public String getIdCardNo() {
-        return idCardNo;
-    }
-
-    public void setIdCardNo(String idCardNo) {
-        this.idCardNo = idCardNo;
-    }
-
-    public String getGender() {
+    public Integer getGender() {
         return gender;
     }
 
-    public void setGender(String gender) {
+    public void setGender(Integer gender) {
         this.gender = gender;
     }
 
@@ -154,4 +139,20 @@ public class TeacherApplyDetailDto implements Serializable {
     public void setTeacherCertificate(String teacherCertificate) {
         this.teacherCertificate = teacherCertificate;
     }
+
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
+    public String getIdCardNo() {
+        return idCardNo;
+    }
+
+    public void setIdCardNo(String idCardNo) {
+        this.idCardNo = idCardNo;
+    }
 }

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

@@ -0,0 +1,42 @@
+package com.yonge.cooleshow.biz.dal.dto.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/3/22 11:00
+ */
+@ApiModel(value = "TeacherSetReq对象", description = "教师设置请求对象")
+public class TeacherSetReq {
+    @ApiModelProperty("头像地址")
+    private String avatar;
+    @ApiModelProperty("昵称")
+    private String username;
+    @ApiModelProperty(value = "性别 0女 1男")
+    private Integer gender;
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public Integer getGender() {
+        return gender;
+    }
+
+    public void setGender(Integer gender) {
+        this.gender = gender;
+    }
+}

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherAuthEntryRecordSearch.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherAuthEntryRecordSearch.java

@@ -1,4 +1,4 @@
-package com.yonge.cooleshow.biz.dal.dto.req;
+package com.yonge.cooleshow.biz.dal.dto.search;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/BaseMessage.java

@@ -0,0 +1,13 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.alibaba.fastjson.JSONObject;
+
+public abstract class BaseMessage {
+
+    public abstract String getObjectName();
+
+    @Override
+    public String toString() {
+        return JSONObject.toJSONString(this);
+    }
+}

+ 317 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Employee.java

@@ -0,0 +1,317 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.enums.JobNatureEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+
+/**
+ * 对应数据库表(employee):
+ */
+public class Employee extends SysUser {
+
+	/**  */
+	private Integer userId;
+
+	/**  */
+	@ApiModelProperty(value = "机构编号列表,逗号分隔",required = false)
+	private String organIdList;
+
+	/** 工作性质(兼职、全职、临时) */
+	@ApiModelProperty(value = "工作性质",required = false)
+	private JobNatureEnum jobNature;
+
+	/** 是否试用期(1-是 0-否) */
+	@ApiModelProperty(value = "是否试用期",required = false)
+	private YesOrNoEnum isProbationPeriod;
+
+	/** 学历 */
+	@ApiModelProperty(value = "学历",required = false)
+	private String educationBackground;
+
+	/** 毕业学校 */
+	@ApiModelProperty(value = "毕业学校",required = false)
+	private String graduateSchool;
+
+	/** 技术职称 */
+	@ApiModelProperty(value = "技术职称",required = false)
+	private String technicalTitles;
+
+	/** 入职时间 */
+	@ApiModelProperty(value = "入职时间",required = false)
+	private java.util.Date entryDate;
+
+	/** 证件类型 */
+	@ApiModelProperty(value = "证件类型",required = false)
+	private String certificateType;
+
+	/** 证件号码 */
+	@ApiModelProperty(value = "证件号码",required = false)
+	private String certificateNum;
+
+	@ApiModelProperty(value = "社保部门id",required = false)
+	private Integer deptId;
+
+	@ApiModelProperty(value = "部门ids",required = false)
+	private String depIds;
+
+	@ApiModelProperty(value = "岗位ids",required = false)
+	private String postIds;
+
+	@ApiModelProperty(value = "银行卡号",required = false)
+	private String bankCard;
+
+	@ApiModelProperty(value = "开户行",required = false)
+	private String openBankAddress;
+
+	@ApiModelProperty(value = "岗位管理部门",required = false)
+	private String postDeptIds;
+
+	/**  */
+	private java.util.Date updateTime;
+
+	/**  */
+	private java.util.Date createTime;
+
+	/** 介绍 */
+	@ApiModelProperty(value = "介绍",required = false)
+	private String introduction;
+
+	/** 离职日期 */
+	@ApiModelProperty(value = "离职日期",required = false)
+	private java.util.Date demissionDate;
+
+	@ApiModelProperty(value = "角色id列表",required = false)
+	private List<Integer> roleIds;
+
+	@ApiModelProperty(value = "职位id列表",required = false)
+	private List<Integer> positionIds;
+
+	@ApiModelProperty(value = "机构id列表")
+	private List<Integer> tenantIds;
+
+	@ApiModelProperty(value = "创建该机构的人")
+    private Integer createTenantUserId;
+
+	private String contactAddress;
+
+	private String postalCode;
+
+	public List<Integer> getPositionIds() {
+		return positionIds;
+	}
+
+	public void setPositionIds(List<Integer> positionIds) {
+		this.positionIds = positionIds;
+	}
+
+	public String getContactAddress() {
+		return contactAddress;
+	}
+
+	public void setContactAddress(String contactAddress) {
+		this.contactAddress = contactAddress;
+	}
+
+	public String getPostalCode() {
+		return postalCode;
+	}
+
+	public void setPostalCode(String postalCode) {
+		this.postalCode = postalCode;
+	}
+
+	public List<Integer> getRoleIds() {
+		return roleIds;
+	}
+
+	public void setRoleIds(List<Integer> roleIds) {
+		this.roleIds = roleIds;
+	}
+
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+
+	public Integer getUserId(){
+		return this.userId;
+	}
+
+	public String getOrganIdList() {
+		return organIdList;
+	}
+
+	public void setOrganIdList(String organIdList) {
+		this.organIdList = organIdList;
+	}
+
+	public void setEducationBackground(String educationBackground){
+		this.educationBackground = educationBackground;
+	}
+
+	public String getEducationBackground(){
+		return this.educationBackground;
+	}
+
+	public void setGraduateSchool(String graduateSchool){
+		this.graduateSchool = graduateSchool;
+	}
+
+	public String getGraduateSchool(){
+		return this.graduateSchool;
+	}
+
+	public void setTechnicalTitles(String technicalTitles){
+		this.technicalTitles = technicalTitles;
+	}
+
+	public String getTechnicalTitles(){
+		return this.technicalTitles;
+	}
+
+	public void setEntryDate(java.util.Date entryDate){
+		this.entryDate = entryDate;
+	}
+
+	public java.util.Date getEntryDate(){
+		return this.entryDate;
+	}
+
+	public void setCertificateType(String certificateType){
+		this.certificateType = certificateType;
+	}
+
+	public String getCertificateType(){
+		return this.certificateType;
+	}
+
+	public void setCertificateNum(String certificateNum){
+		this.certificateNum = certificateNum;
+	}
+
+	public String getCertificateNum(){
+		return this.certificateNum;
+	}
+
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+
+	public void setIntroduction(String introduction){
+		this.introduction = introduction;
+	}
+
+	public String getIntroduction(){
+		return this.introduction;
+	}
+
+	public void setDemissionDate(java.util.Date demissionDate){
+		this.demissionDate = demissionDate;
+	}
+
+	public java.util.Date getDemissionDate(){
+		return this.demissionDate;
+	}
+
+	public JobNatureEnum getJobNature() {
+		return jobNature;
+	}
+
+	public void setJobNature(JobNatureEnum jobNature) {
+		this.jobNature = jobNature;
+	}
+
+	public YesOrNoEnum getIsProbationPeriod() {
+		return isProbationPeriod;
+	}
+
+	public void setIsProbationPeriod(YesOrNoEnum isProbationPeriod) {
+		this.isProbationPeriod = isProbationPeriod;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+	public String getDeptIds() {
+		return depIds;
+	}
+
+	public void setDeptIds(String deptIds) {
+		this.depIds = deptIds;
+	}
+
+	public String getPostIds() {
+		return postIds;
+	}
+
+	public void setPostIds(String postIds) {
+		this.postIds = postIds;
+	}
+
+	public String getBankCard() {
+		return bankCard;
+	}
+
+	public void setBankCard(String bankCard) {
+		this.bankCard = bankCard;
+	}
+
+	public String getOpenBankAddress() {
+		return openBankAddress;
+	}
+
+	public void setOpenBankAddress(String openBankAddress) {
+		this.openBankAddress = openBankAddress;
+	}
+
+	public String getPostDeptIds() {
+		return postDeptIds;
+	}
+
+	public void setPostDeptIds(String postDeptIds) {
+		this.postDeptIds = postDeptIds;
+	}
+
+	public Integer getDeptId() {
+		return deptId;
+	}
+
+	public void setDeptId(Integer deptId) {
+		this.deptId = deptId;
+	}
+
+    public List<Integer> getTenantIds() {
+        return tenantIds;
+    }
+
+    public void setTenantIds(List<Integer> tenantIds) {
+        this.tenantIds = tenantIds;
+    }
+
+    public Integer getCreateTenantUserId() {
+        return createTenantUserId;
+    }
+
+    public void setCreateTenantUserId(Integer createTenantUserId) {
+        this.createTenantUserId = createTenantUserId;
+    }
+}

+ 43 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/IMApiResultInfo.java

@@ -0,0 +1,43 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+
+/**
+ * Created by weiqinxiao on 2019/2/28.
+ */
+
+public class IMApiResultInfo {
+    // 返回码,200 为正常。
+    Integer code;
+    // 错误信息。
+    String errorMessage;
+    //人员是否存在 true 存在  false 不存在
+    Boolean isInChrm;
+
+    public boolean isSuccess() {
+        return code == 200;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getErrorMessage() {
+        return errorMessage;
+    }
+
+    public void setErrorMessage(String errorMessage) {
+        this.errorMessage = errorMessage;
+    }
+
+    public Boolean getInChrm() {
+        return isInChrm;
+    }
+
+    public void setInChrm(Boolean inChrm) {
+        isInChrm = inChrm;
+    }
+}

+ 52 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/IMTokenInfo.java

@@ -0,0 +1,52 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+
+/**
+ * Created by weiqinxiao on 2019/2/28.
+ */
+public class IMTokenInfo {
+    // 返回码,200 为正常.如果您正在使用开发环境的 AppKey,您的应用只能注册 100 名用户,达到上限后,将返回错误码 2007.如果您需要更多的测试账户数量,您需要在应用配置中申请“增加测试人数”。
+    Integer code;
+    // 用户 Token,可以保存应用内,长度在 256 字节以内.用户 Token,可以保存应用内,长度在 256 字节以内。
+    String token;
+    // 用户 Id,与输入的用户 Id 相同.用户 Id,与输入的用户 Id 相同。
+    String userId;
+    // 错误信息。
+    String errorMessage;
+
+    public boolean isSuccess() {
+        return code == 200;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getErrorMessage() {
+        return errorMessage;
+    }
+
+    public void setErrorMessage(String errorMessage) {
+        this.errorMessage = errorMessage;
+    }
+}

+ 67 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImRoomMessage.java

@@ -0,0 +1,67 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+/**
+ * @author hgw
+ * Created by 2022-02-25
+ */
+public class ImRoomMessage extends BaseMessage {
+
+    //objectName 类型-将所有人强制踢出房间
+    public static final String FORCED_OFFLINE = "RC:ForcedOffline";
+
+    //objectName 类型-观看者退出房间
+    public static final String LOOKER_LOGIN_OUT = "RC:LookerLoginOut";
+
+    /**
+     * 消息类型
+     */
+    private String objectName;
+
+    /**
+     * 消息内容
+     */
+    private Object content;
+
+    /**
+     * 发送者id
+     */
+    private String fromUserId;
+
+    /**
+     * 发送到的房间uid
+     */
+    private String toChatroomId;
+
+    @Override
+    public String getObjectName() {
+        return objectName;
+    }
+
+    public void setObjectName(String objectName) {
+        this.objectName = objectName;
+    }
+
+    public Object getContent() {
+        return content;
+    }
+
+    public void setContent(Object content) {
+        this.content = content;
+    }
+
+    public String getFromUserId() {
+        return fromUserId;
+    }
+
+    public void setFromUserId(String fromUserId) {
+        this.fromUserId = fromUserId;
+    }
+
+    public String getToChatroomId() {
+        return toChatroomId;
+    }
+
+    public void setToChatroomId(String toChatroomId) {
+        this.toChatroomId = toChatroomId;
+    }
+}

+ 4 - 30
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Teacher.java

@@ -12,7 +12,6 @@ import java.io.Serializable;
 import java.util.Date;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
 
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -21,7 +20,7 @@ import org.springframework.format.annotation.DateTimeFormat;
  */
 @TableName("teacher")
 @ApiModel(value = "Teacher对象", description = "教师表")
-public class Teacher extends SysUser implements Serializable {
+public class Teacher implements Serializable {
 	private static final long serialVersionUID = 1L;
     /** 
     * 对应user表用户编号 
@@ -84,7 +83,7 @@ public class Teacher extends SysUser implements Serializable {
     */
     @ApiModelProperty("音乐人审核状态   1、审核中 2、通过 3、不通过 ")
 	@TableField(value = "musician_auth_status_")
-    private String musicianAuthStatus;
+    private Integer musicianAuthStatus;
     /** 
     * 音乐人认证时间 
     */
@@ -204,11 +203,11 @@ public class Teacher extends SysUser implements Serializable {
         this.introduction = introduction;
     }
 
-    public String getMusicianAuthStatus() {
+    public Integer getMusicianAuthStatus() {
         return musicianAuthStatus;
     }
 
-    public void setMusicianAuthStatus(String musicianAuthStatus) {
+    public void setMusicianAuthStatus(Integer musicianAuthStatus) {
         this.musicianAuthStatus = musicianAuthStatus;
     }
 
@@ -275,29 +274,4 @@ public class Teacher extends SysUser implements Serializable {
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
-
-    @Override
-    public String toString() {
-        return "Teacher{" +
-				"userId=" + userId +
-						",educationBackground='" + educationBackground + "'" + 
-						",graduateSchool='" + graduateSchool + "'" + 
-						",technicalTitles='" + technicalTitles + "'" + 
-						",workUnit='" + workUnit + "'" + 
-						",subjectId='" + subjectId + "'" + 
-						",entryStatus='" + entryStatus + "'" + 
-						",entryAuthDate='" + entryAuthDate + "'" + 
-						",introduction='" + introduction + "'" + 
-						",musicianAuthStatus='" + musicianAuthStatus + "'" + 
-						",musicianDate='" + musicianDate + "'" + 
-						",subject='" + subject + "'" + 
-						",gradCertificate='" + gradCertificate + "'" + 
-						",degreeCertificate='" + degreeCertificate + "'" + 
-						",teacherCertificate='" + teacherCertificate + "'" + 
-						",memo='" + memo + "'" + 
-						",createTime='" + createTime + "'" + 
-						",updateTime='" + updateTime + "'" + 
-		                '}';
-    }
-	
 }

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AuthStatusEnum.java

@@ -28,6 +28,7 @@ public enum AuthStatusEnum implements BaseEnum<Integer, AuthStatusEnum> {
 
     @Override
     public Integer getCode() {
-        return null;
+        return this.code;
     }
+
 }

+ 36 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/JobNatureEnum.java

@@ -0,0 +1,36 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+//工作性质(兼职、全职)
+public enum JobNatureEnum implements BaseEnum<String,JobNatureEnum> {
+    PART_TIME("PART_TIME","兼职"),
+    FULL_TIME("FULL_TIME","全职"),
+    LABOUR("LABOUR","劳务");
+
+    private String code;
+
+    private String msg;
+
+    JobNatureEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+}

+ 0 - 213
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java

@@ -3,221 +3,8 @@ package com.yonge.cooleshow.biz.dal.enums;
 import com.yonge.cooleshow.common.enums.BaseEnum;
 
 public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
-    SMS_APPLY_MESSAGE("SMS_APPLY_MESSAGE", "报名通知"),
-    SYSTEM_REMIND_EDUCATION_COURSE_TIME("SYSTEM_REMIND_EDUCATION_COURSE_TIME", "排课提醒"),
-    STUDENT_MEMBER_RENEW_MESSAGE("STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
-    PUSH_EXPERIENCE_MEMBERSHIP_MESSAGE("PUSH_EXPERIENCE_MEMBERSHIP_MESSAGE", "会员试用提醒"),
-    SMS_AUTO_STUDENT_MEMBER_RENEW_MESSAGE("SMS_AUTO_STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
-    PUSH_AUTO_STUDENT_MEMBER_RENEW_MESSAGE("PUSH_AUTO_STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
-    STUDENT_MEMBER_RENEW_QUIT_MESSAGE("STUDENT_MEMBER_RENEW_QUIT_MESSAGE", "会员续费提醒"),
     SMS_VERIFY_CODE_LOGIN("SMS_VERIFY_CODE_LOGIN", "验证码登录"),
     KAPTCHA_SESSION_KEY("KAPTCHA_SESSION_KEY", "登录图形验证码"),
-    SMS_PAYMENT_MESSAGE("SMS_PAYMENT_MESSAGE", "缴费通知"),
-//    SMS_PAYMENT_SUCCESS("SMS_PAYMENT_SUCCESS", "缴费成功"),
-//    SMS_RENEW_SUCCESS("SMS_RENEW_SUCCESS", "续费成功"),
-//    SMS_BALANCE_PAY("SMS_BALANCE_PAY", "余额充值"),
-//    SMS_BASICS_SKILL_APPLY_MESSAGE("SMS_BASICS_SKILL_APPLY_MESSAGE", "基础技能训练报名通知"),
-//    SMS_VIP_COURSE_BUY_SUCCESS("SMS_VIP_COURSE_BUY_SUCCESS", "VIP课购买成功"),
-//    SMS_VIP_COURSE_SIGN("SMS_VIP_COURSE_SIGN", "VIP课签到"),
-//    SMS_QUIT_COURSE_SUCCESS("SMS_QUIT_COURSE_SUCCESS", "退课成功"),
-//    SMS_WITHDRAW_SUCCESS("SMS_WITHDRAW_SUCCESS", "提现成功"),
-//    SMS_MUSIC_GROUP_CLOSE("SMS_MUSIC_GROUP_CLOSE", "乐团关闭(关闭后)"),
-
-    STUDENT_SMS_PUSH_PAYMENT_SUCCESS("STUDENT_SMS_PUSH_PAYMENT_SUCCESS", "缴费成功结果通知"),
-    STUDENT_SMS_BALANCE_CONSUME("STUDENT_SMS_BALANCE_CONSUME", "余额消费"),
-    STUDENT_PUSH_VIP_BUY("STUDENT_PUSH_VIP_BUY", "VIP课购买"),
-    STUDENT_PUSH_HAVE_COURSE_MESSAGE("STUDENT_PUSH_HAVE_COURSE_MESSAGE", "有课提醒"),
-    STUDENT_PUSH_ONLINE_COURSE_ACTION("STUDENT_PUSH_ONLINE_COURSE_ACTION", "线上课开始"),
-    STUDENT_PUSH_NAMES_ACHIEVE("STUDENT_PUSH_NAMES_ACHIEVE", "点名完成"),
-    SYSTEM_PUSH_NAMES_ACHIEVE("SYSTEM_PUSH_NAMES_ACHIEVE", "点名完成"),
-    //    SCHEDULE_CHANGE("SCHEDULE_CHANGE", "课表变动"),
-//    STUDENT_SMS_TEACHING_SCHOOL_CHANGE("STUDENT_SMS_TEACHING_SCHOOL_CHANGE", "教学点变动"),
-    STUDENT_PUSH_JOB_MESSAGE("STUDENT_PUSH_JOB_MESSAGE", "训练提醒"),
-    //    STUDENT_PUSH_CLASS_MESSAGE("STUDENT_PUSH_CLASS_MESSAGE", "班级消息"),
-    TEACHER_PUSH_MUSIC_GROUP_COURSE_ADD_PLAN("TEACHER_PUSH_MUSIC_GROUP_COURSE_ADD_PLAN", "乐团课新增安排"),
-    TEACHER_SMS_PUSH_VIP_COURSE_APPLY_RESULT("TEACHER_SMS_PUSH_VIP_COURSE_APPLY_RESULT", "VIP课申请结果"),
-    TEACHER_SMS_VIP_COURSE_ADD("TEACHER_SMS_VIP_COURSE_ADD", "VIP课新增"),
-    TEACHER_PUSH_VIP_COURSE_STOP("TEACHER_PUSH_VIP_COURSE_STOP", "VIP课停止"),
-    //    TEACHER_PUSH_ACTION_COURSE_MESSAGE("TEACHER_PUSH_ACTION_COURSE_MESSAGE", "开课提醒"),
-    TEACHER_PUSH_HAVE_COURSE_MESSAGE("TEACHER_PUSH_HAVE_COURSE_MESSAGE", "有课提醒"),
-    TEACHER_PUSH_ATTEND_CLASS_MESSAGE("TEACHER_PUSH_ATTEND_CLASS_MESSAGE", "上课提醒"),
-    //    TEACHER_PUSH_SIGN_IN_MESSAGE("TEACHER_PUSH_SIGN_IN_MESSAGE", "签到提醒"),
-//    TEACHER_PUSH_NAMES_MESSAGE("TEACHER_PUSH_NAMES_MESSAGE", "点名提醒"),
-    TEACHER_PUSH_SIGN_OUT_MESSAGE("TEACHER_PUSH_SIGN_OUT_MESSAGE", "签退提醒"),
-    TEACHER_PUSH_JOB_WAIT_REPLY("TEACHER_PUSH_JOB_WAIT_REPLY", "训练待回复"),
-    //    TEACHER_PUSH_SUBSTITUTE_PLAN("TEACHER_PUSH_SUBSTITUTE_PLAN", "代课安排"),
-    TEACHER_PUSH_LEAVE_RESULT("TEACHER_PUSH_LEAVE_RESULT", "请假结果"),
-    TEACHER_PUSH_COURSE_SCHEDULE_CHANGE_RESULT("TEACHER_PUSH_COURSE_SCHEDULE_CHANGE_RESULT", "课时调整结果"),
-    TEACHER_PUSH_STUDENT_LEAVE("TEACHER_PUSH_STUDENT_LEAVE", "学员请假"),
-    //    TEACHER_PUSH_CLASS_MESSAGE("TEACHER_PUSH_CLASS_MESSAGE", "班级消息"),
-    STUDENT_SMS_PAYMENT_FAILED("STUDENT_SMS_PAYMENT_FAILED", "缴费失败结果通知"),
-    //    STUDENT_PUSH_MUSIC_GROUP_RENEW_FAILED("STUDENT_PUSH_MUSIC_GROUP_RENEW_FAILED", "乐团续费失败结果"),
-    STUDENT_PUSH_VIP_STOP("STUDENT_PUSH_VIP_STOP", "VIP课取消"),
-    //    SMS_MUSIC_GROUP_ADD_STUDENT("SMS_MUSIC_GROUP_ADD_STUDENT", "入团通知"),
-    TEACHER_PUSH_VIP_STOP("TEACHER_PUSH_VIP_STOP", "VIP课取消"),
-    STUDENT_SMS_OPEN_PAYMENT("STUDENT_SMS_OPEN_PAYMENT", "开启缴费"),
-    //    SMS_MUSIC_GROUP_ADD_STUDENT_FREE("SMS_MUSIC_GROUP_ADD_STUDENT_FREE", "入团通知"),
-    STUDENT_SMS_PUSH_SPORADIC_PAYMENT_SUCCESS("STUDENT_SMS_PUSH_SPORADIC_PAYMENT_SUCCESS", "零星支付成功结果"),
-    STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED("STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED", "零星支付失败结果"),
-    TEACHER_PUSH_COURSE_COLLIDE("TEACHER_PUSH_COURSE_COLLIDE", "课程冲突"),
-    //    PUSH_STUDY_REPORT("PUSH_STUDY_REPORT", "陪练报告"),
-    STUDENT_SMS_PUSH_PAY_PRACTICE_BUY_SUCCESS("STUDENT_SMS_PUSH_PAY_PRACTICE_BUY_SUCCESS", "网管课购买成功"),
-    STUDENT_SMS_PUSH_PRACTICE_COMPLETED_STUDY_REPORT("STUDENT_SMS_PUSH_PRACTICE_COMPLETED_STUDY_REPORT", "网管课完成学习报告"),
-    STUDENT_SMS_PUSH_FREE_PRACTICE_APPLY_PUSH("STUDENT_SMS_PUSH_FREE_PRACTICE_APPLY_PUSH", "免费陪练课预约推送"),
-    TEACHER_PUSH_NEED_POST_STUDY_REPORT("TEACHER_PUSH_NEED_POST_STUDY_REPORT", "新增待填写月报"),
-    STUDENT_PUSH_HOMEWORK_REMIND("STUDENT_PUSH_HOMEWORK_REMIND", "训练提醒-网管课"),
-    TEACHER_PUSH_COMM_NO_STUDENTS_PUSH("TEACHER_PUSH_COMM_NO_STUDENTS_PUSH", "对外课程组无学生提醒"),
-    TEACHER_PUSH_HOMEWORK_SUBMIT("TEACHER_PUSH_HOMEWORK_SUBMIT", "学生提交训练提醒"),
-    TEACHER_PUSH_HOMEWORK_REPLY("TEACHER_PUSH_HOMEWORK_REPLY", "学生训练回复提醒"),
-    STUDENT_PUSH_HOMEWORK_REPLY("STUDENT_PUSH_HOMEWORK_REPLY", "教师回复训练提醒"),
-
-    IM_HOMEWORK_REMIND("IM_HOMEWORK_REMIND", "训练提醒"),
-    IM_HOMEWORK_SUBMIT_PUSH("IM_HOMEWORK_SUBMIT_PUSH", "训练提交提醒"),
-    IM_HOMEWORK_SUBMIT_PUSH_GROUP("IM_HOMEWORK_SUBMIT_PUSH_GROUP", "训练提交提醒"),
-    IM_HOMEWORK_STUDENT_REPLY_PUSH("IM_HOMEWORK_STUDENT_REPLY_PUSH", "训练回复提醒"),
-    IM_HOMEWORK_TEACHER_REPLY_PUSH("IM_HOMEWORK_TEACHER_REPLY_PUSH", "训练点评提醒"),
-    IM_HOMEWORK_REMIND_DETAIL("IM_HOMEWORK_REMIND_DETAIL", "训练提醒"),
-
-    /**
-     * 课外训练消息
-     */
-    STUDENT_PUSH_EXTRA_REMIND("STUDENT_PUSH_EXTRA_REMIND", "训练提醒"),
-    EXTRA_REMIND_IM("EXTRA_REMIND_IM", "训练提醒"),
-    EXTRA_REMIND_IM_DETAIL("EXTRA_REMIND_IM_DETAIL", "训练提醒"),
-    STUDENT_PUSH_EXTRA_REPLY("STUDENT_PUSH_EXTRA_REPLY", "训练点评提醒"),
-    EXTRA_TEACHER_REPLY_IM("EXTRA_TEACHER_REPLY_IM", "训练点评提醒"),
-    TEACHER_PUSH_EXTRA_SUBMIT("TEACHER_PUSH_EXTRA_SUBMIT", "训练提交提醒"),
-    EXTRA_SUBMIT_IM("EXTRA_SUBMIT_IM", "训练提交提醒"),
-    TEACHER_PUSH_EXTRA_REPLY("TEACHER_PUSH_EXTRA_REPLY", "训练回复提醒"),
-    EXTRA_STUDENT_REPLY_IM("EXTRA_STUDENT_REPLY_IM", "训练回复提醒"),
-
-    TEACHER_PUSH_COURSE_SALARY_COMPLAINTS_RESULT("TEACHER_PUSH_COURSE_SALARY_COMPLAINTS_RESULT", "课酬申述结果"),
-    TEACHER_PUSH_SALARY_CONFIRM("TEACHER_PUSH_SALARY_CONFIRM", "课酬确认"),
-    STUDENT_PUSH_TRIAL_PRACTICE_CREATE("STUDENT_PUSH_TRIAL_PRACTICE_CREATE", "试听课安排"),
-    TEACHER_SMS_PUSH_PRACTICE_CREATE("TEACHER_SMS_PUSH_PRACTICE_CREATE", "新增网管课程"),
-    STUDENT_PUSH_REPAIR_UNSEND_COMPLETED("STUDENT_PUSH_REPAIR_UNSEND_COMPLETED", "乐器维修完成自取"),
-    STUDENT_PUSH_REPAIR_SEND_COMPLETED("STUDENT_PUSH_REPAIR_SEND_COMPLETED", "乐器维修完成邮寄"),
-    STUDENT_PUSH_REPAIR_ONLINE_PAYMENT_SUCCESS("STUDENT_PUSH_REPAIR_ONLINE_PAYMENT_SUCCESS", "乐器线上维修支付成功"),
-    STUDENT_PUSH_REPAIR_OFFLINE_PAYMENT_SUCCESS("STUDENT_PUSH_REPAIR_OFFLINE_PAYMENT_SUCCESS", "乐器线下维修支付成功"),
-
-    TEACHER_PUSH_MUSIC_NETWORK_CRATE("TEACHER_PUSH_MUSIC_NETWORK_CRATE", "乐团网管课安排"),
-    STUDENT_PUSH_MUSIC_NETWORK_CRATE("STUDENT_PUSH_MUSIC_NETWORK_CRATE", "乐团课通知"),
-    TEACHER_PUSH_EXCEPTION_ATTENDANCE("TEACHER_PUSH_EXCEPTION_ATTENDANCE", "异常考勤通知"),
-    STUDENT_PUSH_PRACTICE_RENEW_REMIND("STUDENT_PUSH_PRACTICE_RENEW_REMIND", "网管课续费推送"),
-    TEACHER_PUSH_ATTENDANCE_COMPLAINTS_RESULT("TEACHER_PUSH_ATTENDANCE_COMPLAINTS_RESULT", "考勤申述结果"),
-    TEACHER_PUSH_PUBLIC_EXTRA_REMIND("TEACHER_PUSH_PUBLIC_EXTRA_REMIND", "本周应布置课外训练"),
-    SYSTEM_SMS_PUSH_PAYMENT_DETAIL("SYSTEM_SMS_PUSH_PAYMENT_DETAIL", "缴费项目缴费详情提醒"),
-    SYSTEM_SMS_PUSH_PAYMENT_CREATE("SYSTEM_SMS_PUSH_PAYMENT_CREATE", "缴费项目创建提醒"),
-    SYSTEM_SMS_GOODS_REPERTORY_WARN("SYSTEM_SMS_GOODS_REPERTORY_WARN", "商品库存预警"),
-    SYSTEM_PUSH_STUDENT_COMMIT_QUIT_MUSIC_APPLY("SYSTEM_PUSH_STUDENT_COMMIT_QUIT_MUSIC_APPLY", "学员申请退团"),
-    SYSTEM_PUSH_STUDENT_REVOKE_QUIT_MUSIC_APPLY("SYSTEM_PUSH_STUDENT_REVOKE_QUIT_MUSIC_APPLY", "撤销退团申请"),
-    STUDENT_SMS_IM_MUSIC_GROUP_PARENT_MEETING_NOTICE("STUDENT_SMS_IM_MUSIC_GROUP_PARENT_MEETING_NOTICE", "乐团家长会通知"),
-    SYSTEM_PUSH_SMS_INSPECTION_NOTICE("SYSTEM_PUSH_SMS_INSPECTION_NOTICE", "巡查日程提醒"),
-    STUDENT_SMS_WAIT_RENEW_MESSAGE("STUDENT_SMS_WAIT_RENEW_MESSAGE", "待续费通知"),
-    TEACHER_PUSH_SERVE("TEACHER_PUSH_SERVE", "服务指标未完成提醒"),
-    STUDENT_PUSH_MAINTENANCE_NOTICE("STUDENT_PUSH_MAINTENANCE_NOTICE", "乐保到期提醒"),
-    TEACHER_IM_STUDENT_LEAVE("TEACHER_IM_STUDENT_LEAVE", "学员请假"),
-    STUDENT_SMS_PUSH_REPLACEMENT_PAY("STUDENT_SMS_PUSH_REPLACEMENT_PAY", "乐器置换支付提醒"),
-    TEACHER_PUSH_INCOME_REMIND("TEACHER_PUSH_INCOME_REMIND", "今日收入"),
-    STUDENT_PUSH_PAYMENT_RESULT("STUDENT_PUSH_PAYMENT_RESULT", "缴费结果"),
-    STUDENT_PUSH_MUSIC_GROUP_CLOSE("STUDENT_PUSH_MUSIC_GROUP_CLOSE", "乐团关闭(确认后)"),
-    STUDENT_PUSH_BASICS_SKILL_APPLY_MESSAGE("STUDENT_PUSH_BASICS_SKILL_APPLY_MESSAGE", "基础技能训练报名通知"),
-    STUDENT_PUSH_WAIT_RENEW_MESSAGE("STUDENT_PUSH_WAIT_RENEW_MESSAGE", "待续费通知"),
-    STUDENT_SMS_PUSH_MUSIC_GROUP_RENEW_SUCCESS("STUDENT_SMS_PUSH_MUSIC_GROUP_RENEW_SUCCESS", "乐团续费成功结果"),
-    STUDENT_PUSH_BALANCE_CONSUME("STUDENT_PUSH_BALANCE_CONSUME", "余额消费"),
-    STUDENT_PUSH_ATTEND_COURSE_MESSAGE("STUDENT_PUSH_ATTEND_COURSE_MESSAGE", "上课提醒"),
-    STUDENT_PUSH_TEACHING_SCHOOL_CHANGE("STUDENT_PUSH_TEACHING_SCHOOL_CHANGE", "教学点变动"),
-    TEACHER_PUSH_VIP_COURSE_APPLY_RESULT("TEACHER_PUSH_VIP_COURSE_APPLY_RESULT", "VIP课申请结果"),
-    TEACHER_PUSH_VIP_COURSE_ADD("TEACHER_PUSH_VIP_COURSE_ADD", "VIP课新增"),
-
-
-    //    EDUCATION_PUSH_MUSIC_GROUP_FOUND("EDUCATION_PUSH_MUSIC_GROUP_FOUND", "乐团成立"),
-//    EDUCATION_PUSH_MUSIC_GROUP_CLOSE("EDUCATION_PUSH_MUSIC_GROUP_CLOSE", "乐团关闭"),
-//    EDUCATION_PUSH_COURSE_CHANGE("EDUCATION_PUSH_COURSE_CHANGE", "课程调整"),
-//    EDUCATION_PUSH_TOMORROW_COURSE_PLAN("EDUCATION_PUSH_TOMORROW_COURSE_PLAN", "明日课程安排"),
-//    EDUCATION_PUSH_TEACHER_NO_SIGN_IN("EDUCATION_PUSH_TEACHER_NO_SIGN_IN", "老师未签到"),
-//    EDUCATION_PUSH_TEACHER_EXCEPTION_SING_IN("EDUCATION_PUSH_TEACHER_EXCEPTION_SING_IN", "老师异常签到"),
-//    EDUCATION_PUSH_TEACHER_NO_SIGN_OUT("EDUCATION_PUSH_TEACHER_NO_SIGN_OUT", "老师未签退"),
-//    EDUCATION_PUSH_STUDENT_LEAVE("EDUCATION_PUSH_STUDENT_LEAVE", "学员请假"),
-//    EDUCATION_PUSH_STUDENT_CONTINUE_NO_ARRIVAL("EDUCATION_PUSH_STUDENT_CONTINUE_NO_ARRIVAL", "学员连续未到"),
-//    EDUCATION_PUSH_STUDENT_NO_PAYMENT("EDUCATION_PUSH_STUDENT_NO_PAYMENT", "学员未交费"),
-//    EDUCATION_PUSH_VIP_COURSE_APPLY("EDUCATION_PUSH_VIP_COURSE_APPLY", "VIP课申请"),
-    EDUCATION_PUSH_TEACHER_LEAVE_APPLY("EDUCATION_PUSH_TEACHER_LEAVE_APPLY", "老师请假申请"),
-//    EDUCATION_PUSH_STUDENT_QUIT_MUSIC_GROUP_APPLY("EDUCATION_PUSH_STUDENT_QUIT_MUSIC_GROUP_APPLY", "学员退团申请"),
-//    EDUCATION_PUSH_STUDENT_QUIT_COURSE_APPLY("EDUCATION_PUSH_STUDENT_QUIT_COURSE_APPLY", "学员退课申请"),
-//    EDUCATION_PUSH_STUDENT_WITHDRAW_APPLY("EDUCATION_PUSH_STUDENT_WITHDRAW_APPLY", "学员提现申请"),
-//    EDUCATION_PUSH_STUDENT_APPEAL("EDUCATION_PUSH_STUDENT_APPEAL", "学员申诉"),
-
-    BACKSTAGE_CREATE_MUSIC_GROUP_APPLY("BACKSTAGE_CREATE_MUSIC_GROUP_APPLY", "建团申请"),
-    BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS("BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS", "建团申请审核通过"),
-    //    BACKSTAGE_ACTION_APPLY("BACKSTAGE_ACTION_APPLY", "开启报名"),
-    BACKSTAGE_PAYMENT_CALENDER_AUDIT("BACKSTAGE_PAYMENT_CALENDER_AUDIT", "缴费项目审核"),
-    BACKSTAGE_ACTION_PAYMENT("BACKSTAGE_ACTION_PAYMENT", "开启缴费"),
-
-    BACKSTAGE_LENGTHEN_PAYMENT("BACKSTAGE_LENGTHEN_PAYMENT", "延长缴费"),
-    BACKSTAGE_ACTION_GROUP("BACKSTAGE_ACTION_GROUP", "开团"),
-    BACKSTAGE_STUDENT_SUBJECT_CHANGE("BACKSTAGE_STUDENT_SUBJECT_CHANGE", "学员声部调整"),
-    BACKSTAGE_MUSIC_GROUP_MARKING("BACKSTAGE_MUSIC_GROUP_MARKING", "乐团筹备中"),
-    //    BACKSTAGE_MARK_OK("BACKSTAGE_MARK_OK", "筹备完成"),
-//    BACKSTAGE_MARK_QUIT("BACKSTAGE_MARK_QUIT", "筹备中,退回"),
-    BACKSTAGE_MUSIC_GROUP_ADD_STUDENT("BACKSTAGE_MUSIC_GROUP_ADD_STUDENT", "乐团添加学员"),
-    //    BACKSTAGE_TEACHER_AMOUNT_CHANGE("BACKSTAGE_TEACHER_AMOUNT_CHANGE", "老师课酬调整"),
-//    BACKSTAGE_COURSE_CHANGE("BACKSTAGE_COURSE_CHANGE", "课时、课程调整"),
-//    BACKSTAGE_MUSIC_GROUP_IN_CHANGE("BACKSTAGE_MUSIC_GROUP_IN_CHANGE", "乐团内调整"),
-//    BACKSTAGE_SPAN_GROUP_CHANGE("BACKSTAGE_SPAN_GROUP_CHANGE", "跨越团调整"),
-    BACKSTAGE_MUSIC_GROUP_STOP("BACKSTAGE_MUSIC_GROUP_STOP", "乐团暂停"),
-    //    BACKSTAGE_MUSIC_GROUP_CLOSE("BACKSTAGE_MUSIC_GROUP_CLOSE", "乐团结束"),
-//    BACKSTAGE_VIP_COURSE_APPLY("BACKSTAGE_VIP_COURSE_APPLY", "VIP课申请"),
-    BACKSTAGE_TEACHER_APPLY_VIP("BACKSTAGE_TEACHER_APPLY_VIP", "VIP课申请"),
-    BACKSTAGE_TEACHER_APPLY_PRACTICE("BACKSTAGE_TEACHER_APPLY_PRACTICE", "网管课申请"),
-    //    BACKSTAGE_VIP_COURSE_STOP("BACKSTAGE_VIP_COURSE_STOP", "VIP课停止"),
-//    BACKSTAGE_TEACHER_FREEZE("BACKSTAGE_TEACHER_FREEZE", "老师冻结"),
-//    BACKSTAGE_TEACHER_POSITIVE("BACKSTAGE_TEACHER_POSITIVE", "老师转正"),
-//    BACKSTAGE_STUDENT_OK_QUIT_GROUP("BACKSTAGE_STUDENT_OK_QUIT_GROUP", "学员确认退团"),
-//    BACKSTAGE_STUDENT_OK_QUIT_COURSE("BACKSTAGE_STUDENT_OK_QUIT_COURSE", "学员确认退课"),
-    BACKSTAGE_STUDENT_APPEAL("BACKSTAGE_STUDENT_APPEAL", "学员申述"),
-    BACKSTAGE_STUDENT_APPLY_QUIT_GROUP("BACKSTAGE_STUDENT_APPLY_QUIT_GROUP", "学员申请退团"),
-
-    CHILDREN_DAY_VIP_COURSE_TEACHER_PUSH("CHILDREN_DAY_VIP_COURSE_TEACHER_PUSH", "六一活动课程安排"),
-    CHILDREN_DAY_VIP_COURSE_STUDENT_PUSH("CHILDREN_DAY_VIP_COURSE_STUDENT_PUSH", "六一活动课程安排"),
-
-    BACKSTAGE_STUDENT_APPLY_QUIT_COURSE("BACKSTAGE_STUDENT_APPLY_QUIT_COURSE", "学员申请退课"),
-    BACKSTAGE_STUDENT_APPLY_WITHDRAW("BACKSTAGE_STUDENT_APPLY_WITHDRAW", "学员申请提现"),
-    CHILDREN_DAY_NOTICE_PUSH("CHILDREN_DAY_NOTICE_PUSH", "技能评测考级报名推送"),
-    CHILDREN_DAY_NOTICE_MSG("CHILDREN_DAY_NOTICE_MSG", "技能评测考级报名短信"),
-    NO_BUY_CLOUD_TEACHER_MSG("NO_BUY_CLOUD_TEACHER_MSG", "未购买买团练宝短信"),
-    OA_NOTICE_PUSH("OA_NOTICE_PUSH", "待审批提醒"),
-    OA_CC_NOTICE_PUSH("OA_CC_NOTICE_PUSH", "审批抄送提醒"),
-
-    //团练宝
-    TRAIN_NO_RANK_STUDENT_PUSH("TRAIN_NO_RANK_STUDENT_PUSH", "团练宝训练提醒"),
-    TRAIN_RANK_STUDENT_PUSH("TRAIN_RANK_STUDENT_PUSH", "团练宝训练提醒"),
-    NO_TRAIN_STUDENT_PUSH("NO_TRAIN_STUDENT_PUSH", "团练宝训练提醒"),
-
-    COUPON_STOCK_WARNING("COUPON_STOCK_WARNING", "优惠券库存预警"),
-
-    APP_REDEMPTION_CODE("APP_REDEMPTION_CODE", "兑换码分配量预警"),
-    CLOUD_TEACHER_ORDER_SUCCESS("CLOUD_TEACHER_ORDER_SUCCESS", "团练宝激活成功"),
-
-    EMAIL_TENANT_ACTIVATION_SUCCESSFUL("EMAIL_TENANT_ACTIVATION_SUCCESSFUL",   "开通成功"),
-    EMAIL_TENANT_RENEWAL_SUCCESSFUL("EMAIL_TENANT_RENEWAL_SUCCESSFUL", "续费成功"),
-    EMAIL_TENANT_EXPIRATION_REMINDERS("EMAIL_TENANT_EXPIRATION_REMINDERS",   "服务即将到期"),
-    EMAIL_TENANT_RECHARGE("EMAIL_TENANT_RECHARGE",   "云教室充值"),
-    EMAIL_TENANT_INSUFFICIENT_BALANCE("EMAIL_TENANT_INSUFFICIENT_BALANCE",  "余额不足"),
-    EMAIL_TENANT_EXPIRE("EMAIL_TENANT_EXPIRE",  "云教室欠费"),
-
-
-    SMS_TENANT_ACTIVATION_SUCCESSFUL("SMS_TENANT_ACTIVATION_SUCCESSFUL",   "开通成功"),
-    SMS_TENANT_RENEWAL_SUCCESSFUL("SMS_TENANT_RENEWAL_SUCCESSFUL", "续费成功"),
-    SMS_TENANT_EXPIRATION_REMINDERS("SMS_TENANT_EXPIRATION_REMINDERS",   "服务即将到期"),
-    SMS_TENANT_RECHARGE("SMS_TENANT_RECHARGE",   "云教室充值"),
-    SMS_TENANT_INSUFFICIENT_BALANCE("SMS_TENANT_INSUFFICIENT_BALANCE",  "余额不足"),
-    SMS_TENANT_EXPIRE("SMS_TENANT_EXPIRE",  "云教室欠费"),
-
-
-    STUDENT_SMS_CLOUD_PAYMENT("STUDENT_SMS_CLOUD_PAYMENT",  "待缴费订单"),
-    STUDENT_PUSH_CLOUD_PAYMENT("STUDENT_PUSH_CLOUD_PAYMENT",  "待缴费订单"),
-    IM_SHARE_LIVE_URL("IM_SHARE_LIVE_URL",  "直播链接分享")
     ;
 
     MessageTypeEnum(String code, String msg) {

+ 65 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/EmployeeQueryInfo.java

@@ -0,0 +1,65 @@
+package com.yonge.cooleshow.biz.dal.queryInfo;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import com.yonge.cooleshow.common.page.QueryInfo;
+
+public class EmployeeQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "工作类型",required = true)
+    private String jobNature;
+
+    @ApiModelProperty(value = "角色ID",required = false)
+    private Long roleId;
+
+    @ApiModelProperty(value = "用户名或电话",required = false)
+    private Long userNameOrPhone;
+
+    /** 是否离职 */
+    @ApiModelProperty(value = "是否离职",required = false)
+    private Boolean demissionflag;
+
+    /** 是否冻结 */
+    @ApiModelProperty(value = "是否冻结",required = false)
+    private Boolean lockFlag;
+
+    public Boolean getLockFlag() {
+        return lockFlag;
+    }
+
+    public void setLockFlag(Boolean lockFlag) {
+        this.lockFlag = lockFlag;
+    }
+
+    public Boolean getDemissionflag() {
+        return demissionflag;
+    }
+
+    public void setDemissionflag(Boolean demissionflag) {
+        this.demissionflag = demissionflag;
+    }
+
+    public String getJobNature() {
+        return jobNature;
+    }
+
+    public void setJobNature(String jobNature) {
+        this.jobNature = jobNature;
+    }
+
+    public Long getRoleId() {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId) {
+        this.roleId = roleId;
+    }
+
+    public Long getUserNameOrPhone() {
+        return userNameOrPhone;
+    }
+
+    public void setUserNameOrPhone(Long userNameOrPhone) {
+        this.userNameOrPhone = userNameOrPhone;
+    }
+}

+ 29 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/EmployeeService.java

@@ -0,0 +1,29 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import java.util.List;
+
+import com.yonge.cooleshow.auth.api.entity.SysRole;
+import com.yonge.cooleshow.biz.dal.entity.Employee;
+import com.yonge.cooleshow.common.service.BaseService;
+
+public interface EmployeeService extends BaseService<Long, Employee> {
+
+    /**
+     * 新增员工
+     * @param employee
+     */
+    void add(Employee employee) throws Exception;
+
+    /**
+     * 修改员工信息
+     * @param employee
+     */
+    void updateEmployee(Employee employee);
+
+    List<Long> queryUserRole(Long sysUserId);
+
+    int batchInsertRoleMenu( Long roleId, List<Integer> menuIds);
+
+    int insertSysRole(SysRole sysRole);
+
+}

+ 5 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherAuthEntryRecordService.java

@@ -3,9 +3,9 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dto.AuthOperaDto;
-import com.yonge.cooleshow.biz.dal.dto.TeacherApplyDetailDto;
-import com.yonge.cooleshow.biz.dal.dto.req.TeacherAuthEntryRecordSearch;
+import com.yonge.cooleshow.biz.dal.dto.req.AuthOperaReq;
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherApplyDetailReq;
+import com.yonge.cooleshow.biz.dal.dto.search.TeacherAuthEntryRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.TeacherAuthEntryRecord;
 import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -30,7 +30,7 @@ public interface TeacherAuthEntryRecordService extends IService<TeacherAuthEntry
      * @updateTime 2022/3/18 15:38
      * @return: java.lang.Boolean
      */
-    HttpResponseResult<Boolean> doApply(TeacherApplyDetailDto teacherApplyDetailDto, SysUser sysUser) throws Exception;
+    HttpResponseResult<Boolean> doApply(TeacherApplyDetailReq teacherApplyDetailDto, SysUser sysUser) throws Exception;
     /***
      * 根据老师id查询审批单详情
      * @author liweifan
@@ -47,5 +47,5 @@ public interface TeacherAuthEntryRecordService extends IService<TeacherAuthEntry
      * @updateTime 2022/3/21 14:21
      * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
      */
-    HttpResponseResult<Boolean> doAuth(AuthOperaDto authOperaDto, SysUser sysUser);
+    HttpResponseResult<Boolean> doAuth(AuthOperaReq authOperaReq, SysUser sysUser);
 }

+ 18 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherAuthMusicianRecordService.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.entity.TeacherAuthMusicianRecord;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
 /**
  * 老师音乐人审核表 服务类
@@ -18,4 +19,21 @@ public interface TeacherAuthMusicianRecordService extends IService<TeacherAuthMu
  	 * @date 2022-03-18
      */
     IPage<TeacherAuthMusicianRecord> selectPage(IPage<TeacherAuthMusicianRecord> page, TeacherAuthMusicianRecord teacherAuthMusicianRecord);
+
+    /***
+     * 获取音乐人认证状态
+     * @author liweifan
+     * @param: id
+     * @updateTime 2022/3/21 19:27
+     * @return: java.lang.Integer
+     */
+    Integer getMusicianAuthStatus(Long id);
+    /***
+     * 提交音乐人审批申请
+     * @author liweifan
+     * @param: id
+     * @updateTime 2022/3/21 19:39
+     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
+     */
+    HttpResponseResult<Boolean> doApply(Long id);
 }

+ 18 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherService.java

@@ -2,7 +2,9 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherSetReq;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 
 /**
  * 教师表 服务类
@@ -18,7 +20,21 @@ public interface TeacherService extends IService<Teacher>  {
  	 * @date 2022-03-18
      */
     IPage<Teacher> selectPage(IPage<Teacher> page, Teacher teacher);
-
-    Teacher detail1(Long userId);
+    /***
+     * 查询老师设置页面详情
+     * @author liweifan
+     * @param: id
+     * @updateTime 2022/3/22 10:22
+     * @return: com.yonge.cooleshow.biz.dal.vo.TeacherVo
+     */
+    TeacherVo getSetDetail(Long id);
+    /***
+     * 设置老师详情
+     * @author liweifan
+     * @param: setReq
+     * @param: id
+     * @updateTime 2022/3/22 11:04
+     */
+    void submitSetDetail(TeacherSetReq setReq, Long id);
 
 }

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

@@ -0,0 +1,78 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.LockedException;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysRole;
+import com.yonge.cooleshow.biz.dal.dao.EmployeeDao;
+import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
+import com.yonge.cooleshow.biz.dal.entity.Employee;
+import com.yonge.cooleshow.biz.dal.service.EmployeeService;
+import com.yonge.cooleshow.common.dal.BaseDAO;
+import com.yonge.cooleshow.common.service.impl.BaseServiceImpl;
+
+@Service
+public class EmployeeServiceImpl extends BaseServiceImpl<Long, Employee> implements EmployeeService {
+
+    @Autowired
+    private EmployeeDao employeeDao;
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private TeacherDao teacherDao;
+
+    @Override
+    public BaseDAO<Long, Employee> getDAO() {
+        return employeeDao;
+    }
+
+    public static void checkTenantId(Integer tenantId, Integer targetTenantId) {
+        //如果机构不一致,不允许跨机构注册
+        if (tenantId != null && tenantId != 0 && !tenantId.equals(targetTenantId)) {
+            throw new LockedException("用户已注册");
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void add(Employee employee) {
+
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateEmployee(Employee employee) {
+
+    }
+
+    @Override
+    public List<Long> queryUserRole(Long sysUserId) {
+        return employeeDao.queryUserRole(sysUserId);
+    }
+
+    /**
+     * 批量添加角色和菜单关系
+     *
+     * @param roleId  角色id
+     * @param menuIds 菜单集合
+     */
+    @Override
+    public int batchInsertRoleMenu(Long roleId, List<Integer> menuIds) {
+        return employeeDao.batchInsertRoleMenu(roleId, menuIds);
+    }
+
+    /**
+     * 添加角色信息
+     *
+     * @param sysRole
+     */
+    @Override
+    public int insertSysRole(SysRole sysRole) {
+        return employeeDao.insertSysRole(sysRole);
+    }
+
+}

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

@@ -97,10 +97,10 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
     public List<SubjectSelectVo> subjectSelect() {
         List<Subject> allList = subjectDao.findAll(new HashMap<>());
         List<SubjectSelectVo> allListVo = new ArrayList<>();
-        allList.stream().forEach(o->{
+        allList.stream().forEach(o -> {
             SubjectSelectVo subjectSelectVo = new SubjectSelectVo();
             try {
-                BeanUtils.copyProperties(o,subjectSelectVo);
+                BeanUtils.copyProperties(subjectSelectVo, o);
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -116,14 +116,14 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
                 .collect(Collectors.toList());
 
         for (SubjectSelectVo parent : parents) {
-            if(null == parent.getId()){
+            if (null == parent.getId()) {
                 continue;
             }
             for (SubjectSelectVo subject : subjects) {
-                if(null == subject.getId() || null == subject.getParentSubjectId()){
+                if (null == subject.getId() || null == subject.getParentSubjectId()) {
                     continue;
                 }
-                if(subject.getParentSubjectId().equals(parent.getId())){
+                if (subject.getParentSubjectId().equals(parent.getId())) {
                     parent.getChildren().add(subject);
                 }
             }

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

@@ -63,7 +63,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	// 发送验证码的间隔时间
 	public static final int CODE_INTERVAL_TIME = 60;
 
-	private final int DEFAULT_CODE = 888888;
+	private final int DEFAULT_CODE = 666666;
 
 	@Value("${message.debugMode}")
 	private boolean debugMode;
@@ -204,7 +204,6 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 			LOGGER.error("接收地址不能为空");
 			return;
 		}
-		Long userId = receivers.keySet().iterator().next();
 
 		String[] tos = receivers.values().toArray(new String[receivers.size()]);
 		SysMessageConfig messageConfig = sysMessageConfigService.queryByType(type);

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

@@ -4,13 +4,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dto.AuthOperaDto;
-import com.yonge.cooleshow.biz.dal.dto.TeacherApplyDetailDto;
-import com.yonge.cooleshow.biz.dal.dto.req.TeacherAuthEntryRecordSearch;
+import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
+import com.yonge.cooleshow.biz.dal.dto.req.AuthOperaReq;
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherApplyDetailReq;
+import com.yonge.cooleshow.biz.dal.dto.search.TeacherAuthEntryRecordSearch;
+import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import org.apache.commons.beanutils.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.entity.TeacherAuthEntryRecord;
 import com.yonge.cooleshow.biz.dal.dao.TeacherAuthEntryRecordDao;
@@ -21,6 +24,8 @@ import org.springframework.transaction.annotation.Transactional;
 @Service
 public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEntryRecordDao, TeacherAuthEntryRecord> implements TeacherAuthEntryRecordService {
 
+    @Autowired
+    private TeacherDao teacherDao;
     /**
      * 分页查询
      */
@@ -31,7 +36,7 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public HttpResponseResult<Boolean> doApply(TeacherApplyDetailDto teacherApplyDetailDto, SysUser sysUser) throws Exception {
+    public HttpResponseResult<Boolean> doApply(TeacherApplyDetailReq teacherApplyDetailDto, SysUser sysUser) throws Exception {
         teacherApplyDetailDto.setUserId(sysUser.getId());
         //判断用户是否已经提交申请
         if (hasApply(sysUser.getId())) {
@@ -41,7 +46,12 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
         baseMapper.updateUserCard(teacherApplyDetailDto);
         //新增申请记录
         TeacherAuthEntryRecord teacherAuthEntryRecord = new TeacherAuthEntryRecord();
-        BeanUtils.copyProperties(teacherApplyDetailDto, teacherAuthEntryRecord);
+        BeanUtils.copyProperties(teacherAuthEntryRecord, teacherApplyDetailDto);
+
+        Teacher teacher = new Teacher();
+        teacher.setUserId(sysUser.getId());
+        teacher.setEntryStatus(AuthStatusEnum.DOING.getCode());
+        teacherDao.updateById(teacher);
 
         return HttpResponseResult.status(baseMapper.insert(teacherAuthEntryRecord) > 0);
     }
@@ -52,11 +62,11 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
     }
 
     @Override
-    public HttpResponseResult<Boolean> doAuth(AuthOperaDto authOperaDto, SysUser sysUser) {
+    public HttpResponseResult<Boolean> doAuth(AuthOperaReq authOperaReq, SysUser sysUser) {
         TeacherAuthEntryRecord build = new TeacherAuthEntryRecord();
-        build.setId(authOperaDto.getId());
-        build.setTeacherAuthStatus(authOperaDto.getPass() ? AuthStatusEnum.PASS.getCode() : AuthStatusEnum.UNPASS.getCode());
-        build.setReason(authOperaDto.getReason());
+        build.setId(authOperaReq.getId());
+        build.setTeacherAuthStatus(authOperaReq.getPass() ? AuthStatusEnum.PASS.getCode() : AuthStatusEnum.UNPASS.getCode());
+        build.setReason(authOperaReq.getReason());
         return HttpResponseResult.succeed(baseMapper.updateById(build) > 0);
     }
 

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

@@ -1,22 +1,76 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
+import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import com.yonge.cooleshow.biz.dal.entity.TeacherAuthEntryRecord;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.entity.TeacherAuthMusicianRecord;
 import com.yonge.cooleshow.biz.dal.dao.TeacherAuthMusicianRecordDao;
 import com.yonge.cooleshow.biz.dal.service.TeacherAuthMusicianRecordService;
+import org.springframework.transaction.annotation.Transactional;
 
 
 @Service
 public class TeacherAuthMusicianRecordServiceImpl extends ServiceImpl<TeacherAuthMusicianRecordDao, TeacherAuthMusicianRecord> implements TeacherAuthMusicianRecordService {
+    @Autowired
+    private TeacherService teacherService;
+    @Autowired
+    private TeacherDao teacherDao;
 
     /**
      * 分页查询
      */
-     @Override
-    public IPage<TeacherAuthMusicianRecord> selectPage(IPage<TeacherAuthMusicianRecord> page, TeacherAuthMusicianRecord teacherAuthMusicianRecord){
+    @Override
+    public IPage<TeacherAuthMusicianRecord> selectPage(IPage<TeacherAuthMusicianRecord> page, TeacherAuthMusicianRecord teacherAuthMusicianRecord) {
         return page.setRecords(baseMapper.selectPage(page, teacherAuthMusicianRecord));
     }
-	
+
+    @Override
+    public Integer getMusicianAuthStatus(Long id) {
+        Teacher teacher = teacherService.getById(id);
+        return teacher.getMusicianAuthStatus();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResponseResult<Boolean> doApply(Long id) {
+        //判断用户是否已经提交申请
+        if (hasApply(id)) {
+            return HttpResponseResult.failed("已经提交过申请");
+        }
+
+        TeacherAuthMusicianRecord record = new TeacherAuthMusicianRecord();
+        record.setUserId(id);
+        record.setTeacherAuthStatus(AuthStatusEnum.DOING.getCode());
+
+        Teacher teacher = new Teacher();
+        teacher.setUserId(id);
+        teacher.setMusicianAuthStatus(AuthStatusEnum.DOING.getCode());
+        teacherDao.updateById(teacher);
+
+        return HttpResponseResult.status(baseMapper.insert(record) > 0);
+    }
+
+    /***
+     * 判断用户是否已经提交申请
+     * @author liweifan
+     * @param: userId
+     * @updateTime 2022/3/21 11:37
+     * @return: java.lang.Boolean
+     */
+    private boolean hasApply(Long userId) {
+        TeacherAuthMusicianRecord teacherAuthMusicianRecord = baseMapper.selectOne(Wrappers.<TeacherAuthMusicianRecord>query().lambda()
+                .eq(TeacherAuthMusicianRecord::getUserId, userId)
+                .eq(TeacherAuthMusicianRecord::getTeacherAuthStatus, 1));
+        return teacherAuthMusicianRecord != null;
+    }
+
 }

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

@@ -3,7 +3,9 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dao.SubjectDao;
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherSetReq;
 import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
@@ -16,20 +18,22 @@ import java.util.List;
 
 @Service
 public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> implements TeacherService {
-    @Autowired
-    private SubjectDao subjectDao;
     /**
      * 分页查询
      */
-     @Override
-    public IPage<Teacher> selectPage(IPage<Teacher> page, Teacher teacher){
+    @Override
+    public IPage<Teacher> selectPage(IPage<Teacher> page, Teacher teacher) {
         return page.setRecords(baseMapper.selectPage(page, teacher));
     }
 
     @Override
-    public Teacher detail1(Long userId) {
-        List<Subject> bySubjectIds = subjectDao.findBySubjectIds(Arrays.asList(1L));
-        return baseMapper.detail1(userId);
+    public TeacherVo getSetDetail(Long id) {
+        return baseMapper.getSetDetail(id);
+    }
+
+    @Override
+    public void submitSetDetail(TeacherSetReq setReq, Long id) {
+        baseMapper.updatetSetDetail(setReq, id);
     }
 
 }

+ 279 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/support/HttpHelper.java

@@ -0,0 +1,279 @@
+package com.yonge.cooleshow.biz.dal.support;
+
+import com.yonge.cooleshow.biz.dal.config.IMProperties;
+import io.rong.util.CodeUtil;
+import io.rong.util.GsonUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.*;
+import java.nio.charset.StandardCharsets;
+import java.security.cert.X509Certificate;
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class HttpHelper {
+    private final static Logger log = LoggerFactory.getLogger(HttpHelper.class);
+
+    private static final String APPKEY = "RC-App-Key";
+    private static final String NONCE = "RC-Nonce";
+    private static final String TIMESTAMP = "RC-Timestamp";
+    private static final String SIGNATURE = "RC-Signature";
+
+    private SSLContext sslCtx = null;
+
+    @Autowired
+    IMProperties imProperties;
+
+    @PostConstruct
+    private void init() {
+        log.info("init HttpHelper");
+        try {
+            sslCtx = SSLContext.getInstance("TLS");
+            X509TrustManager tm = new X509TrustManager() {
+                public void checkClientTrusted(X509Certificate[] xcs, String string) {
+                }
+
+                public void checkServerTrusted(X509Certificate[] xcs, String string) {
+                }
+
+                public X509Certificate[] getAcceptedIssuers() {
+                    return null;
+                }
+            };
+            sslCtx.init(null, new TrustManager[]{tm}, null);
+        } catch (Exception e) {
+            log.error("SSLContext exception:{}", e.getMessage());
+        }
+
+        HttpsURLConnection.setDefaultHostnameVerifier((arg0, arg1) -> true);
+
+        HttpsURLConnection.setDefaultSSLSocketFactory(sslCtx.getSocketFactory());
+    }
+
+    // 设置body体
+    public void setBodyParameter(StringBuilder sb, HttpURLConnection conn)
+            throws IOException {
+        String str = sb.toString();
+        log.info("Call server api with url: {}, data: {}", conn.getURL().toString(), str);
+        DataOutputStream out = new DataOutputStream(conn.getOutputStream());
+        out.writeBytes(str);
+        out.flush();
+        out.close();
+    }
+
+    public HttpURLConnection createGetHttpConnection(String uri)
+            throws MalformedURLException, IOException {
+        URL url = new URL(uri);
+        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+        conn.setConnectTimeout(30000);
+        conn.setRequestMethod("GET");
+        return conn;
+    }
+
+    public void setBodyParameter(String str, HttpURLConnection conn) throws IOException {
+        log.info("Call IM server api with url: {}, data: {}", conn.getURL().toString(), str);
+        DataOutputStream out = new DataOutputStream(conn.getOutputStream());
+        out.write(str.getBytes(StandardCharsets.UTF_8));
+        out.flush();
+        out.close();
+    }
+
+    public HttpURLConnection createWhiteBoardPostHttpConnection(String host, String uri, String contentType)
+            throws MalformedURLException, IOException, ProtocolException {
+
+        URL url = new URL(host + uri);
+        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+        setConn(conn, contentType);
+        return conn;
+    }
+
+    public HttpURLConnection createCommonPostHttpConnection(String host, String appKey,
+                                                            String appSecret, String uri, String contentType)
+            throws IOException {
+        HttpURLConnection conn = getHttpURLConnection(host, appKey, appSecret, uri, contentType);
+        if (conn == null) return null;
+
+        conn.setConnectTimeout(30000);
+        conn.setReadTimeout(30000);
+        conn.setRequestMethod("POST");
+        return conn;
+    }
+
+    public HttpURLConnection createCommonGetHttpConnection(String host, String appKey,
+                                                           String appSecret, String uri, String contentType) throws IOException {
+        HttpURLConnection conn = getHttpURLConnection(host, appKey, appSecret, uri, contentType);
+        if (conn == null) return null;
+
+        conn.setConnectTimeout(10000);
+        conn.setReadTimeout(10000);
+        conn.setRequestMethod("GET");
+        return conn;
+    }
+
+    private HttpURLConnection getHttpURLConnection(String host, String appKey, String appSecret, String uri, String contentType) throws IOException {
+        String nonce = String.valueOf(Math.random() * 1000000);
+        String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
+        StringBuilder toSign = new StringBuilder(appSecret).append(nonce).append(timestamp);
+        String sign = CodeUtil.hexSHA1(toSign.toString());
+        uri = host + uri;
+        URL url = new URL(uri);
+        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+        if (conn == null) {
+            log.info("open url connectin fail, url={}", uri);
+            return null;
+        }
+
+        conn.setUseCaches(false);
+        conn.setDoInput(true);
+        conn.setDoOutput(true);
+        conn.setInstanceFollowRedirects(true);
+        conn.setRequestProperty(APPKEY, appKey);
+        conn.setRequestProperty(NONCE, nonce);
+        conn.setRequestProperty(TIMESTAMP, timestamp);
+        conn.setRequestProperty(SIGNATURE, sign);
+        conn.setRequestProperty("Content-Type", contentType);
+        return conn;
+    }
+
+    public HttpURLConnection createIMGetHttpConnection(String uri, String contentType) throws IOException {
+        return createCommonGetHttpConnection(imProperties.getHost(),
+                imProperties.getAppKey(), imProperties.getSecret(), uri,
+                contentType);
+    }
+
+    public HttpURLConnection createIMPostHttpConnection(String uri, String contentType) throws IOException {
+        return createCommonPostHttpConnection(imProperties.getHost(),
+                imProperties.getAppKey(), imProperties.getSecret(), uri,
+                contentType);
+    }
+
+    public byte[] readInputStream(InputStream inStream) throws Exception {
+        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
+        byte[] buffer = new byte[1024];
+        int len = 0;
+        while ((len = inStream.read(buffer)) != -1) {
+            outStream.write(buffer, 0, len);
+        }
+        byte[] data = outStream.toByteArray();
+        outStream.close();
+        inStream.close();
+        return data;
+    }
+
+    public String returnResult(HttpURLConnection conn) throws Exception {
+        InputStream input;
+        String result;
+        try {
+            if (conn.getResponseCode() == 200 || conn.getResponseCode() == 201) {
+                input = conn.getInputStream();
+            } else {
+                input = conn.getErrorStream();
+            }
+            result = new String(readInputStream(input), StandardCharsets.UTF_8);
+        } catch (UnknownHostException e) {
+            result = getExceptionMessage("request:" + conn.getURL() + " ,UnknownHostException:" + e.getMessage());
+        } catch (SocketTimeoutException e) {
+            result = getExceptionMessage("request:" + conn.getURL() + " ,SocketTimeoutException:" + e.getMessage());
+        } catch (IOException e) {
+            result = getExceptionMessage("request:" + conn.getURL() + " ,IOException:" + e.getMessage());
+        }
+        log.info("IM server api response:{}", result);
+        return result;
+    }
+
+    private static String getExceptionMessage(String error) {
+        Map<String, Object> result = new HashMap<>();
+        result.put("code", 400);
+        result.put("msg", error);
+        return GsonUtil.toJson(result);
+    }
+
+    public String returnResult(HttpURLConnection conn, String body) throws Exception, IOException {
+        InputStream input = null;
+        if (conn.getResponseCode() == 200) {
+            input = conn.getInputStream();
+        } else {
+            input = conn.getErrorStream();
+        }
+        String result = new String(readInputStream(input), "UTF-8");
+        log.info("IM server api response:{}, {}, {}", conn.getURL(), body, result);
+        return result;
+    }
+
+    public HttpURLConnection createPostHttpConnection(String uri, String contentType) throws IOException {
+        URL url = new URL(uri);
+        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+        if (conn == null) {
+            log.info("open url connection fail, url={}", uri);
+            return null;
+        }
+        setConn(conn, contentType);
+        return conn;
+    }
+
+    private void setConn(HttpURLConnection conn, String contentType) throws ProtocolException {
+        conn.setUseCaches(false);
+        conn.setDoInput(true);
+        conn.setDoOutput(true);
+        conn.setRequestMethod("POST");
+        conn.setInstanceFollowRedirects(true);
+        conn.setConnectTimeout(30000);
+        conn.setReadTimeout(30000);
+        conn.setRequestProperty("Content-Type", contentType);
+    }
+
+    public HttpURLConnection createIMRtcPostHttpConnection(String uri, String contentType, String roomId)
+            throws IOException {
+        return createCommonRtcPostHttpConnection(imProperties.getRtcHost(),
+                imProperties.getAppKey(), imProperties.getSecret(), uri,
+                contentType, roomId);
+    }
+
+    public HttpURLConnection createCommonRtcPostHttpConnection(String host, String appKey,
+                                                               String appSecret, String uri, String contentType, String roomId)
+            throws IOException {
+        String nonce = String.valueOf(Math.random() * 1000000);
+        String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
+        StringBuilder toSign = new StringBuilder(appSecret).append(nonce).append(timestamp);
+        String sign = CodeUtil.hexSHA1(toSign.toString());
+        uri = host + uri;
+        URL url = new URL(uri);
+        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+        if (conn == null) {
+            log.info("open url connectin fail, url={}", uri);
+            return null;
+        }
+
+        conn.setUseCaches(false);
+        conn.setDoInput(true);
+        conn.setDoOutput(true);
+        conn.setRequestMethod("POST");
+        conn.setInstanceFollowRedirects(true);
+        conn.setConnectTimeout(30000);
+        conn.setReadTimeout(30000);
+
+        conn.setRequestProperty("App-Key", appKey);
+        conn.setRequestProperty("Nonce", nonce);
+        conn.setRequestProperty("Timestamp", timestamp);
+        conn.setRequestProperty("Signature", sign);
+        if (StringUtils.isNotEmpty(roomId)) {
+            conn.setRequestProperty("Room-Id", roomId);
+        }
+        conn.setRequestProperty("Content-Type", contentType);
+        return conn;
+    }
+}

+ 469 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/support/IMHelper.java

@@ -0,0 +1,469 @@
+package com.yonge.cooleshow.biz.dal.support;
+
+import com.alibaba.fastjson.JSON;
+import com.yonge.cooleshow.biz.dal.entity.BaseMessage;
+import com.yonge.cooleshow.biz.dal.entity.IMApiResultInfo;
+import com.yonge.cooleshow.biz.dal.entity.IMTokenInfo;
+import io.rong.util.GsonUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+
+import java.net.HttpURLConnection;
+import java.net.URLEncoder;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Created by weiqinxiao on 2019/2/28.
+ */
+@Component
+public class IMHelper {
+
+    private final static Logger log = LoggerFactory.getLogger(IMHelper.class);
+
+    private static final String UTF8 = "UTF-8";
+
+    @Autowired
+    HttpHelper httpHelper;
+
+    /**
+     * 获取 Token 方法
+     *
+     * @param userId:用户        Id,最大长度 64 字节.是用户在 App 中的唯一标识码,必须保证在同一个 App 内不重复,重复的用户 Id 将被当作是同一用户。(必传)
+     * @param name:用户名称,最大长度   128 字节.用来在 Push 推送时显示用户的名称.用户名称,最大长度 128 字节.用来在 Push 推送时显示用户的名称。(必传)
+     * @param portraitUri:用户头像 URI,最大长度 1024 字节.用来在 Push 推送时显示用户的头像。(必传)
+     * @return TokenResult
+     **/
+    public IMTokenInfo getToken(String userId, String name, String portraitUri) throws Exception {
+        if (userId == null) {
+            throw new IllegalArgumentException("Paramer 'userId' is required");
+        }
+
+        if (name == null) {
+            throw new IllegalArgumentException("Paramer 'name' is required");
+        }
+
+        if (portraitUri == null) {
+            throw new IllegalArgumentException("Paramer 'portraitUri' is required");
+        }
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("&userId=").append(URLEncoder.encode(userId, UTF8));
+        sb.append("&name=").append(URLEncoder.encode(name, UTF8));
+        sb.append("&portraitUri=").append(URLEncoder.encode(portraitUri, UTF8));
+        String body = sb.toString();
+        if (body.indexOf("&") == 0) {
+            body = body.substring(1);
+        }
+
+        HttpURLConnection conn = httpHelper.createIMPostHttpConnection("/user/getToken.json", "application/x-www-form-urlencoded");
+        httpHelper.setBodyParameter(body, conn);
+
+        return JSON.parseObject(httpHelper.returnResult(conn, body), IMTokenInfo.class);
+    }
+
+    /**
+     * 创建群组方法(创建群组,并将用户加入该群组,用户将可以收到该群的消息,同一用户最多可加入 500 个群,每个群最大至 3000 人,App
+     * 内的群组数量没有限制.注:其实本方法是加入群组方法 /group/join 的别名。)
+     *
+     * @param userId:要加入群的用户 Id。(必传)
+     * @param groupId:创建群组   Id。(必传)
+     * @param groupName:群组   Id 对应的名称。(必传)
+     * @return CodeSuccessResult
+     **/
+    public IMApiResultInfo createGroup(String[] userId, String groupId, String groupName)
+            throws Exception {
+        if (userId == null) {
+            throw new IllegalArgumentException("Paramer 'userId' is required");
+        }
+
+        if (groupId == null) {
+            throw new IllegalArgumentException("Paramer 'groupId' is required");
+        }
+
+        if (groupName == null) {
+            throw new IllegalArgumentException("Paramer 'groupName' is required");
+        }
+
+        StringBuilder sb = new StringBuilder();
+
+        for (int i = 0; i < userId.length; i++) {
+            String child = userId[i];
+            sb.append("&userId=").append(URLEncoder.encode(child, UTF8));
+        }
+
+        sb.append("&groupId=").append(URLEncoder.encode(groupId, UTF8));
+        sb.append("&groupName=").append(URLEncoder.encode(groupName, UTF8));
+        String body = sb.toString();
+        if (body.indexOf("&") == 0) {
+            body = body.substring(1);
+        }
+
+        HttpURLConnection conn = httpHelper
+                .createIMPostHttpConnection("/group/create.json", "application/x-www-form-urlencoded");
+        httpHelper.setBodyParameter(body, conn);
+
+        return JSON.parseObject(httpHelper.returnResult(conn, body), IMApiResultInfo.class);
+    }
+
+
+    /**
+     * 将用户加入指定群组,用户将可以收到该群的消息,同一用户最多可加入 500 个群,每个群最大至 3000 人。
+     *
+     * @param userId:要加入群的用户  Id,可提交多个,最多不超过 1000 个。(必传)
+     * @param groupId:要加入的群   Id。(必传)
+     * @param groupName:要加入的群 Id 对应的名称。(必传)
+     * @return CodeSuccessResult
+     **/
+    @Async
+    public IMApiResultInfo joinGroup(String[] userId, String groupId, String groupName)
+            throws Exception {
+        if (userId == null) {
+            throw new IllegalArgumentException("Paramer 'userId' is required");
+        }
+
+        if (groupId == null) {
+            throw new IllegalArgumentException("Paramer 'groupId' is required");
+        }
+
+        if (groupName == null) {
+            throw new IllegalArgumentException("Paramer 'groupName' is required");
+        }
+
+        StringBuilder sb = new StringBuilder();
+
+        for (int i = 0; i < userId.length; i++) {
+            String child = userId[i];
+            sb.append("&userId=").append(URLEncoder.encode(child, UTF8));
+        }
+
+        sb.append("&groupId=").append(URLEncoder.encode(groupId, UTF8));
+        sb.append("&groupName=").append(URLEncoder.encode(groupName, UTF8));
+        String body = sb.toString();
+        if (body.indexOf("&") == 0) {
+            body = body.substring(1);
+        }
+
+        HttpURLConnection conn = httpHelper
+                .createIMPostHttpConnection("/group/join.json", "application/x-www-form-urlencoded");
+        httpHelper.setBodyParameter(body, conn);
+
+        return JSON.parseObject(httpHelper.returnResult(conn, body), IMApiResultInfo.class);
+    }
+
+
+    /**
+     * 退出群组方法(将用户从群中移除,不再接收该群组的消息.)
+     *
+     * @param userId:要退出群的用户 Id.(必传)
+     * @param groupId:要退出的群  Id.(必传)
+     * @return CodeSuccessResult
+     **/
+    public IMApiResultInfo quit(String[] userId, String groupId) throws Exception {
+        if (userId == null) {
+            throw new IllegalArgumentException("Paramer 'userId' is required");
+        }
+
+        if (groupId == null) {
+            throw new IllegalArgumentException("Paramer 'groupId' is required");
+        }
+
+        StringBuilder sb = new StringBuilder();
+
+        for (int i = 0; i < userId.length; i++) {
+            String child = userId[i];
+            sb.append("&userId=").append(URLEncoder.encode(child, UTF8));
+        }
+
+        sb.append("&groupId=").append(URLEncoder.encode(groupId, UTF8));
+        String body = sb.toString();
+        if (body.indexOf("&") == 0) {
+            body = body.substring(1);
+        }
+
+        HttpURLConnection conn = httpHelper
+                .createIMPostHttpConnection("/group/quit.json", "application/x-www-form-urlencoded");
+        httpHelper.setBodyParameter(body, conn);
+
+        return JSON.parseObject(httpHelper.returnResult(conn, body), IMApiResultInfo.class);
+    }
+
+
+    /**
+     * 解散群组方法。(将该群解散,所有用户都无法再接收该群的消息。)
+     *
+     * @param userId:操作解散群的用户 Id。(必传)
+     * @param groupId:要解散的群   Id。(必传)
+     * @return CodeSuccessResult
+     **/
+    public IMApiResultInfo dismiss(String userId, String groupId) throws Exception {
+        if (userId == null) {
+            throw new IllegalArgumentException("Paramer 'userId' is required");
+        }
+
+        if (groupId == null) {
+            throw new IllegalArgumentException("Paramer 'groupId' is required");
+        }
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("&userId=").append(URLEncoder.encode(userId, UTF8));
+        sb.append("&groupId=").append(URLEncoder.encode(groupId, UTF8));
+        String body = sb.toString();
+        if (body.indexOf("&") == 0) {
+            body = body.substring(1, body.length());
+        }
+
+        HttpURLConnection conn = httpHelper
+                .createIMPostHttpConnection("/group/dismiss.json", "application/x-www-form-urlencoded");
+        httpHelper.setBodyParameter(body, conn);
+
+        return JSON.parseObject(httpHelper.returnResult(conn, body), IMApiResultInfo.class);
+    }
+
+
+    /**
+     * 发送群组消息方法(以一个用户身份向群组发送消息,单条消息最大 128k.每秒钟最多发送 20 条消息,每次最多向 3 个群组发送,如:一次向 3 个群组发送消息,示为 3 条消息。)
+     *
+     * @param fromUserId:发送人用户                         Id 。(必传)
+     * @param toGroupId:接收群Id,提供多个本参数可以实现向多群发送消息,最多不超过 3 个群组。(必传)
+     * @return CodeSuccessResult
+     **/
+    public IMApiResultInfo publishMessage(String fromUserId, String toGroupId, BaseMessage message) throws Exception {
+        String[] toGroupIds = new String[1];
+        toGroupIds[0] = toGroupId;
+        return publishMessage(fromUserId, null, toGroupIds, message, "", "", 0,
+                0, 0, 0, 0);
+    }
+
+    public IMApiResultInfo publishMessage(String fromUserId, String toGroupId, BaseMessage message, Integer isIncludeSender) throws Exception {
+        String[] toGroupIds = new String[1];
+        toGroupIds[0] = toGroupId;
+        return publishMessage(fromUserId, null, toGroupIds, message, "", "", 0,
+                0, isIncludeSender, 0, 0);
+    }
+
+    //定向消息 toUserId 指向对应的人
+    public IMApiResultInfo publishMessage(String fromUserId, String toUserId, String toGroupId, BaseMessage message) throws Exception {
+        String[] toGroupIds = new String[1];
+        toGroupIds[0] = toGroupId;
+        return publishMessage(fromUserId, toUserId, toGroupIds, message, "", "", 0,
+                0, 0, 0, 0);
+    }
+
+    public IMApiResultInfo publishMessage(String fromUserId, String toUserId, String[] toGroupId,
+                                          BaseMessage message, String pushContent, String pushData, Integer isPersisted,
+                                          Integer isCounted, Integer isIncludeSender, Integer isStatus, Integer isMentioned)
+            throws Exception {
+        if (fromUserId == null) {
+            throw new IllegalArgumentException("Paramer 'fromUserId' is required");
+        }
+
+        if (toGroupId == null) {
+            throw new IllegalArgumentException("Paramer 'toGroupId' is required");
+        }
+
+        if (message == null) {
+            throw new IllegalArgumentException("Paramer 'message' is required");
+        }
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("&fromUserId=").append(URLEncoder.encode(fromUserId, UTF8));
+
+        //定向消息
+        if (toUserId != null) {
+            sb.append("&toUserId=").append(URLEncoder.encode(toUserId, UTF8));
+        }
+
+        for (int i = 0; i < toGroupId.length; i++) {
+            String child = toGroupId[i];
+            sb.append("&toGroupId=").append(URLEncoder.encode(child, UTF8));
+        }
+
+        String msgStr = message.toString();
+        log.info("publish msg: {}", msgStr);
+        sb.append("&objectName=").append(URLEncoder.encode(message.getObjectName(), UTF8));
+        sb.append("&content=").append(URLEncoder.encode(msgStr, UTF8));
+
+        if (pushContent != null) {
+            sb.append("&pushContent=").append(URLEncoder.encode(pushContent, UTF8));
+        }
+
+        if (pushData != null) {
+            sb.append("&pushData=").append(URLEncoder.encode(pushData, UTF8));
+        }
+
+        if (isPersisted != null) {
+            sb.append("&isPersisted=").append(URLEncoder.encode(isPersisted.toString(), UTF8));
+        }
+
+        if (isCounted != null) {
+            sb.append("&isCounted=").append(URLEncoder.encode(isCounted.toString(), UTF8));
+        }
+
+        if (isIncludeSender != null) {
+            sb.append("&isIncludeSender=")
+                    .append(URLEncoder.encode(isIncludeSender.toString(), UTF8));
+        }
+
+        if (isMentioned != null) {
+            sb.append("&isMentioned=").append(URLEncoder.encode(isMentioned.toString(), UTF8));
+        }
+
+        String body = sb.toString();
+        if (body.indexOf("&") == 0) {
+            body = body.substring(1, body.length());
+        }
+
+        String url;
+        if (isStatus != null && isStatus.intValue() == 1) {
+            url = "/statusmessage/group/publish.json";
+        } else {
+            url = "/message/group/publish.json";
+        }
+
+        HttpURLConnection conn = httpHelper
+                .createIMPostHttpConnection(url, "application/x-www-form-urlencoded");
+        httpHelper.setBodyParameter(body, conn);
+
+        return JSON.parseObject(httpHelper.returnResult(conn, body), IMApiResultInfo.class);
+    }
+
+    /**
+     * 创建聊天室
+     *
+     * @param chatRoomId:   要创建的聊天室 Id,长度不超过 64 字节
+     * @param chatRoomName: 聊天室的名称,每次可创建多个聊天室。
+     * @return IMApiResultInfo
+     * @throws Exception
+     */
+    public IMApiResultInfo createChatRoom(String chatRoomId, String chatRoomName) throws Exception {
+        if (chatRoomId == null) {
+            throw new RuntimeException("房间Uid不能为空");
+        }
+
+        if (chatRoomName == null) {
+            throw new RuntimeException("房间名称不能为空");
+        }
+
+        StringBuilder sb = new StringBuilder();
+        chatRoomId = "[" + chatRoomId + "]";
+        sb.append("&chatroom").append(URLEncoder.encode(chatRoomId, UTF8));
+        sb.append("=");
+        sb.append(URLEncoder.encode(chatRoomName, UTF8));
+        String body = sb.toString();
+        if (body.indexOf("&") == 0) {
+            body = body.substring(1);
+        }
+
+        HttpURLConnection conn = httpHelper
+                .createIMPostHttpConnection("/chatroom/create.json", "application/x-www-form-urlencoded");
+        httpHelper.setBodyParameter(body, conn);
+
+        return (IMApiResultInfo) GsonUtil.fromJson(httpHelper.returnResult(conn), IMApiResultInfo.class);
+    }
+
+
+    /**
+     * 销毁聊天室
+     *
+     * @param chatroomIds 聊天室 ID 列表(必传)
+     * @return
+     */
+    public IMApiResultInfo deleteChrm(List<String> chatroomIds)
+            throws Exception {
+        if (chatroomIds == null) {
+            throw new RuntimeException("房间Uid不能为空");
+        }
+        StringBuilder sb = new StringBuilder();
+        for (String child : chatroomIds) {
+            sb.append("&chatroomId=").append(URLEncoder.encode(child, UTF8));
+        }
+        String body = sb.toString();
+        if (body.indexOf("&") == 0) {
+            body = body.substring(1);
+        }
+        HttpURLConnection conn = httpHelper.createIMPostHttpConnection("/chatroom/destroy.json", "application/x-www-form-urlencoded");
+        httpHelper.setBodyParameter(body, conn);
+
+        return (IMApiResultInfo) GsonUtil.fromJson(httpHelper.returnResult(conn), IMApiResultInfo.class);
+
+    }
+
+    /**
+     * 发送房间消息
+     *
+     * @param fromUserId   发送人id
+     * @param toChatroomId 房间uid
+     * @param message      发送的消息
+     */
+    public IMApiResultInfo publishRoomMessage(String fromUserId, String toChatroomId, BaseMessage message) throws Exception {
+        String[] toChatroomIds = new String[1];
+        toChatroomIds[0] = toChatroomId;
+        return publishRoomMessage(fromUserId, toChatroomIds, message);
+    }
+
+    public IMApiResultInfo publishRoomMessage(String fromUserId, String[] toChatroomIds, BaseMessage message) throws Exception {
+        if (StringUtils.isBlank(fromUserId)) {
+            throw new RuntimeException("发送人不能为空");
+        }
+        if (Objects.isNull(toChatroomIds)) {
+            throw new RuntimeException("房间Uid不能为空");
+        }
+        if (Objects.isNull(message)) {
+            throw new RuntimeException("消息不能为空");
+        }
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("&fromUserId=").append(URLEncoder.encode(fromUserId, UTF8));
+
+        for (String child : toChatroomIds) {
+            sb.append("&toChatroomId=").append(URLEncoder.encode(child, UTF8));
+        }
+
+        String msgStr = GsonUtil.toJson(message);
+        log.info("publish msg: {}", msgStr);
+        sb.append("&objectName=").append(URLEncoder.encode(message.getObjectName(), UTF8));
+        sb.append("&content=").append(URLEncoder.encode(msgStr, UTF8));
+
+        String body = sb.toString();
+        if (body.indexOf("&") == 0) {
+            body = body.substring(1);
+        }
+
+        HttpURLConnection conn = httpHelper
+                .createIMPostHttpConnection("/message/chatroom/publish.json", "application/x-www-form-urlencoded");
+        httpHelper.setBodyParameter(body, conn);
+
+        return (IMApiResultInfo) GsonUtil.fromJson(httpHelper.returnResult(conn), IMApiResultInfo.class);
+    }
+
+    /**
+     * 查询用户是否在聊天室
+     *
+     * @param chatroomId 要查询的聊天室 ID(必传)
+     * @param userId     要查询的用户 ID(必传)
+     */
+    public IMApiResultInfo isInChartRoom(String chatroomId, String userId) throws Exception {
+        if (chatroomId == null) {
+            throw new RuntimeException("房间Uid不能为空");
+        }
+        if (userId == null) {
+            throw new RuntimeException("用户不能为空");
+        }
+        String body = "&chatroomId=" + URLEncoder.encode(chatroomId, UTF8) +
+                "&userId=" + URLEncoder.encode(userId, UTF8);
+        if (body.indexOf("&") == 0) {
+            body = body.substring(1);
+        }
+
+        HttpURLConnection conn = httpHelper.createIMPostHttpConnection("/chatroom/user/exist.json", "application/x-www-form-urlencoded");
+        httpHelper.setBodyParameter(body, conn);
+
+        return (IMApiResultInfo) GsonUtil.fromJson(httpHelper.returnResult(conn), IMApiResultInfo.class);
+    }
+
+}

+ 3 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherAuthEntryRecordVo.java

@@ -1,8 +1,5 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.yonge.cooleshow.biz.dal.entity.TeacherAuthEntryRecord;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -21,7 +18,7 @@ public class TeacherAuthEntryRecordVo extends TeacherAuthEntryRecord {
     private String idCardNo;
 
     @ApiModelProperty(value = "性别(0,女  1,男)")
-    private String gender;
+    private Integer gender;
 
     @ApiModelProperty("手机号 ")
     private String phone;
@@ -48,11 +45,11 @@ public class TeacherAuthEntryRecordVo extends TeacherAuthEntryRecord {
         this.idCardNo = idCardNo;
     }
 
-    public String getGender() {
+    public Integer getGender() {
         return gender;
     }
 
-    public void setGender(String gender) {
+    public void setGender(Integer gender) {
         this.gender = gender;
     }
 

+ 84 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeVo.java

@@ -0,0 +1,84 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/3/21 18:37
+ */
+@ApiModel(value = "TeacherHomeVo对象", description = "老师主页基本信息返回")
+public class TeacherHomeVo {
+    @ApiModelProperty("头像地址")
+    private String heardUrl;
+    @ApiModelProperty("老师姓名")
+    private String username;
+    @ApiModelProperty("星级")
+    private Integer starGrade;
+    @ApiModelProperty("粉丝数")
+    private Integer fansNum;
+    @ApiModelProperty("已上课时")
+    private Integer expTime;
+    @ApiModelProperty("未上课时")
+    private Integer unExpTime;
+    @ApiModelProperty("老师入驻状态  1、审核中 2、通过 3、不通过 ")
+    private Integer entryStatus;
+
+    public String getHeardUrl() {
+        return heardUrl;
+    }
+
+    public void setHeardUrl(String heardUrl) {
+        this.heardUrl = heardUrl;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public Integer getStarGrade() {
+        return starGrade;
+    }
+
+    public void setStarGrade(Integer starGrade) {
+        this.starGrade = starGrade;
+    }
+
+    public Integer getFansNum() {
+        return fansNum;
+    }
+
+    public void setFansNum(Integer fansNum) {
+        this.fansNum = fansNum;
+    }
+
+    public Integer getExpTime() {
+        return expTime;
+    }
+
+    public void setExpTime(Integer expTime) {
+        this.expTime = expTime;
+    }
+
+    public Integer getUnExpTime() {
+        return unExpTime;
+    }
+
+    public void setUnExpTime(Integer unExpTime) {
+        this.unExpTime = unExpTime;
+    }
+
+    public Integer getEntryStatus() {
+        return entryStatus;
+    }
+
+    public void setEntryStatus(Integer entryStatus) {
+        this.entryStatus = entryStatus;
+    }
+}

+ 63 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherVo.java

@@ -0,0 +1,63 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/3/22 10:10
+ */
+@ApiModel(value = "TeacherVo对象", description = "教师详情")
+public class TeacherVo extends Teacher {
+    @ApiModelProperty("头像地址")
+    private String avatar;
+    @ApiModelProperty("老师姓名")
+    private String username;
+    @ApiModelProperty(value = "性别0女1男")
+    private Integer gender;
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+    @ApiModelProperty(value = "是否实名 0否 1是")
+    private Boolean isReal;
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public Integer getGender() {
+        return gender;
+    }
+
+    public void setGender(Integer gender) {
+        this.gender = gender;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public Boolean getReal() {
+        return isReal;
+    }
+
+    public void setReal(Boolean real) {
+        isReal = real;
+    }
+}

+ 217 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.yonge.cooleshow.biz.dal.dao.EmployeeDao">
+
+    <resultMap type="com.yonge.cooleshow.biz.dal.entity.Employee" id="Employee">
+        <result column="user_id_" property="userId"/>
+        <result column="organ_id_list_" property="organIdList"/>
+        <result column="job_nature_" property="jobNature"/>
+        <result column="is_probation_period_" property="isProbationPeriod"/>
+        <result column="education_background_" property="educationBackground"/>
+        <result column="graduate_school_" property="graduateSchool"/>
+        <result column="technical_titles_" property="technicalTitles"/>
+        <result column="entry_date_" property="entryDate"/>
+        <result column="certificate_type_" property="certificateType"/>
+        <result column="certificate_num_" property="certificateNum"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="introduction_" property="introduction"/>
+        <result column="demission_date_" property="demissionDate"/>
+        <result column="contact_address_" property="contactAddress"/>
+        <result column="postal_code_" property="postalCode"/>
+        <result column="dept_id_" property="deptId"/>
+        <result column="dept_ids_" property="deptIds"/>
+        <result column="post_ids_" property="postIds"/>
+        <result column="post_dept_ids_" property="postDeptIds"/>
+        <result column="bank_card_" property="bankCard"/>
+        <result column="open_bank_address_" property="openBankAddress"/>
+		<result column="tenant_id_" property="tenantId" />
+    </resultMap>
+
+    <resultMap type="com.yonge.cooleshow.auth.api.entity.SysUser" id="SysUser">
+        <result column="id_" property="id"/>
+        <result column="username_" property="username"/>
+        <result column="password_" property="password"/>
+        <result column="salt_" property="salt"/>
+        <result column="phone_" property="phone"/>
+        <result column="avatar_" property="avatar"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="lock_flag_" property="lockFlag"/>
+        <result column="del_flag_" property="delFlag" typeHandler="com.yonge.cooleshow.common.dal.CustomEnumTypeHandler"/>
+        <result column="wx_openid_" property="wxOpenid"/>
+        <result column="qq_openid_" property="qqOpenid"/>
+        <result column="user_type_" property="userType"/>
+        <result column="gender_" property="gender"/>
+        <result column="nation_" property="nation"/>
+        <result column="birthdate_" property="birthdate"/>
+        <result column="email_" property="email"/>
+        <result column="im_token_" property="imToken"/>
+        <result column="real_name_" property="realName"/>
+        <result column="id_card_no_" property="idCardNo"/>
+        <result column="wechat_id_" property="wechatId"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="Employee">
+		SELECT * FROM employee WHERE user_id_ = #{userId}
+	</select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="Employee">
+		SELECT * FROM employee ORDER BY user_id_
+	</select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.yonge.cooleshow.biz.dal.entity.Employee" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        INSERT INTO employee
+        (user_id_,job_nature_,is_probation_period_,education_background_,graduate_school_,technical_titles_,
+        entry_date_,update_time_,create_time_,introduction_,demission_date_,contact_address_)
+        VALUES(#{userId},#{jobNature},#{isProbationPeriod},#{educationBackground},#{graduateSchool},
+        #{technicalTitles},#{entryDate},now(),now(),#{introduction},#{demissionDate},#{contactAddress})
+    </insert>
+
+    <insert id="batchAddEmployeeRole">
+        INSERT INTO sys_user_role(user_id_,role_id_) values
+        <foreach collection="roleIds" item="item" index="index" separator=",">
+            (#{userId},#{item})
+        </foreach>
+    </insert>
+
+    <insert id="batchInsertRoleMenu">
+        INSERT INTO sys_role_menu (role_id_,menu_id_) VALUES
+        <foreach collection="menuIds" item="item" index="index" separator=",">
+            (#{roleId}, #{item})
+        </foreach>
+    </insert>
+
+    <delete id="delRoleMenu">
+        DELETE FROM `sys_role_menu`
+        WHERE  menu_id_ in
+        <foreach collection="menuIds" open="(" close=")" item="item" separator=",">
+            #{item}
+        </foreach>
+    </delete>
+
+    <insert id="insertSysRole" keyColumn="id_" keyProperty="id" parameterType="com.yonge.cooleshow.auth.api.entity.SysRole"
+            useGeneratedKeys="true">
+        INSERT INTO `sys_role` (`role_name_`, `role_code_`, `role_desc_`, `create_time_`,
+                                `update_time_`, `del_flag_`, `organ_id_`, `tenant_id_`)
+        VALUES (#{roleName}, #{roleCode}, #{roleDesc}, #{createTime},
+                #{updateTime}, #{delFlag}, #{organId}, #{tenantId});
+    </insert>
+
+    <select id="queryByPhone" resultMap="SysUser">
+		select * from sys_user where phone_ = #{phone} OR username_ = #{phone}
+	</select>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.yonge.cooleshow.biz.dal.entity.Employee">
+        UPDATE employee
+        <set>
+            <if test="contactAddress != null">
+                contact_address_ = #{contactAddress},
+            </if>
+            <if test="postalCode != null">
+                postal_code_ = #{postalCode},
+            </if>
+            <if test="isProbationPeriod != null">
+                is_probation_period_ = #{isProbationPeriod},
+            </if>
+            <if test="graduateSchool != null">
+                graduate_school_ = #{graduateSchool},
+            </if>
+            <if test="organIdList != null">
+                organ_id_list_ = #{organIdList},
+            </if>
+            <if test="introduction != null">
+                introduction_ = #{introduction},
+            </if>
+            <if test="technicalTitles != null">
+                technical_titles_ = #{technicalTitles},
+            </if>
+            <if test="entryDate != null">
+                entry_date_ = #{entryDate},
+            </if>
+            <if test="jobNature != null">
+                job_nature_ = #{jobNature},
+            </if>
+            <if test="certificateType != null">
+                certificate_type_ = #{certificateType},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = NOW(),
+            </if>
+            <if test="educationBackground != null">
+                education_background_ = #{educationBackground},
+            </if>
+            <if test="certificateNum != null">
+                certificate_num_ = #{certificateNum},
+            </if>
+            <if test="demissionDate != null">
+                demission_date_ = #{demissionDate},
+            </if>
+                dept_id_ = #{deptId},
+            <if test="deptIds != null">
+                dept_ids_ = #{deptIds},
+            </if>
+            <if test="postIds != null">
+                post_ids_ = #{postIds},
+            </if>
+            <if test="postDeptIds != null">
+                post_dept_ids_ = #{postDeptIds},
+            </if>
+        </set>
+        WHERE user_id_ = #{userId} and tenant_id_ = #{tenantId}
+    </update>
+
+    <update id="updatePasswordReq">
+        UPDATE sys_user SET password_ = #{password} WHERE id_ = #{userID}
+    </update>
+
+    <update id="updateUserLockStatus">
+		UPDATE sys_user SET lock_flag_ = IF(lock_flag_=0,1,0) WHERE id_=#{userID}
+	</update>
+    <update id="updateUserDemissionDate">
+        UPDATE employee SET demission_date_ = IF(demission_date_ IS NULL,now(),NULL) WHERE user_id_=#{userID}
+    </update>
+    <update id="updateUserLock">
+        UPDATE sys_user SET lock_flag_ = #{status} WHERE id_=#{userID}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
+		DELETE FROM employee WHERE user_id_ = #{userId}
+	</delete>
+    <delete id="delEmployeeRole">
+        DELETE FROM sys_user_role WHERE user_id_ = #{userId}
+    </delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="Employee" parameterType="map">
+        SELECT * FROM employee where tenant_id_ = #{tenantId} ORDER BY user_id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM employee where tenant_id_ = #{tenantId}
+	</select>
+
+    <select id="queryUserRole" resultType="java.lang.Integer">
+        SELECT sur.role_id_ FROM sys_user_role sur WHERE sur.user_id_ = #{userId}
+    </select>
+
+    <select id="getUsers" resultMap="SysUser">
+        select * from sys_user where id_ IN
+        <foreach collection="userIds" open="(" close=")" separator="," item="userId">
+            #{userId}
+        </foreach>
+    </select>
+</mapper>

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

@@ -39,16 +39,16 @@
     <update id="updateUserCard">
         UPDATE sys_user
         <set>
-            <if test="realName != null and realName != ''">
+            <if test="param.realName != null and param.realName != ''">
                 real_name_ = #{param.realName},
             </if>
-            <if test="idCardNo != null and idCardNo != ''">
+            <if test="param.idCardNo != null and param.idCardNo != ''">
                 id_card_no_ = #{param.idCardNo},
             </if>
-            <if test="gender != null and gender != ''">
+            <if test="param.gender != null">
                 gender_ = #{param.gender},
             </if>
-            <if test="birthdate != null">
+            <if test="param.birthdate != null and param.birthdate != ''">
                 birthdate_ = #{param.birthdate},
             </if>
         </set>
@@ -58,7 +58,7 @@
     <!-- 分页查询 -->
     <select id="selectPage" resultType = "com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo">
         SELECT
-            <include refid="baseColumns"/>
+            <include refid="baseColumns"/>,
             u.real_name_ as realName,
             u.id_card_no_ as idCardNo,
             u.phone_ as phone
@@ -90,7 +90,7 @@
 
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo">
         select
-        	<include refid="baseColumns"/>
+        	<include refid="baseColumns"/>,
 			u.real_name_ as realName,
 			u.id_card_no_ as idCardNo,
 			u.gender_ as gender,

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

@@ -23,38 +23,63 @@
 		</resultMap>  
     
     <!-- 表字段 -->
-    <sql id="baseColumns">
-         t.user_id_
-        , t.education_background_
-        , t.graduate_school_
-        , t.technical_titles_
-        , t.work_unit_
-        , t.subject_id_
-        , t.entry_status_
-        , t.entry_auth_date_
-        , t.introduction_
-        , t.musician_auth_status_
-        , t.musician_date_
-        , t.subject_
-        , t.grad_certificate_
-        , t.degree__certificate_
-        , t.teacher__certificate_
-        , t.memo_
-        , t.create_time_
-        , t.update_time_
-        </sql> 
-    
-    <!-- 分页查询 -->
+	<sql id="baseColumns">
+         t.user_id_ as "userId"
+        , t.education_background_ as "educationBackground"
+        , t.graduate_school_ as "graduateSchool"
+        , t.technical_titles_ as "technicalTitles"
+        , t.work_unit_ as "workUnit"
+        , t.subject_id_ as "subjectId"
+        , t.entry_status_ as "entryStatus"
+        , t.entry_auth_date_ as "entryAuthDate"
+        , t.introduction_ as "introduction"
+        , t.musician_auth_status_ as "musicianAuthStatus"
+        , t.musician_date_ as "musicianDate"
+        , t.subject_ as "subject"
+        , t.grad_certificate_ as "gradCertificate"
+        , t.degree__certificate_ as "degreeCertificate"
+        , t.teacher__certificate_ as "teacherCertificate"
+        , t.memo_ as "memo"
+        , t.create_time_ as "createTime"
+        , t.update_time_ as "updateTime"
+        </sql>
+
+	<!-- 分页查询 -->
     <select id="selectPage" resultMap="BaseResultMap">
 		SELECT         
         	<include refid="baseColumns" />
 		FROM teacher t
 	</select>
-	<select id="detail1" resultMap="BaseResultMap">
+
+	<select id="getSetDetail" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherVo">
 		SELECT
-		<include refid="baseColumns" />
-		FROM teacher t where  t.user_id_ = #{userId}
+			<include refid="baseColumns" />,
+			u.avatar_ as avatar,
+			u.username_ as username,
+			u.gender_ as gender,
+			u.phone_ as phone,
+			(case when isnull(u.id_card_no_) then 0 else 1 end) as isReal
+		FROM teacher t
+		left join sys_user u on t.user_id_ = u.id_
+		where t.user_id_ = #{id}
 	</select>
+
+	<update id="updatetSetDetail">
+		UPDATE sys_user
+		<set>
+			<if test="param.avatar != null and param.avatar != ''">
+				avatar_ = #{param.avatar},
+			</if>
+			<if test="param.username != null and param.username != ''">
+				username_ = #{param.username},
+			</if>
+			<if test="param.gender != null">
+				gender_ = #{param.gender},
+			</if>
+		</set>
+		WHERE id_ = #{id}
+	</update>
+
 	<resultMap id="BasicUserInfo" type="com.yonge.cooleshow.biz.dal.dto.BasicUserInfo">
 		<result property="userId" column="user_id_"/>
 		<result property="username" column="username_"/>

+ 42 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SubjectController.java

@@ -0,0 +1,42 @@
+package com.yonge.cooleshow.student.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.yonge.cooleshow.biz.dal.queryInfo.SubjectQueryInfo;
+import com.yonge.cooleshow.biz.dal.service.SubjectService;
+import com.yonge.cooleshow.common.controller.BaseController;
+
+@RequestMapping("subject")
+@Api(tags = "科目服务")
+@RestController
+public class SubjectController extends BaseController {
+
+	@Autowired
+	private SubjectService subjectService;
+
+	@ApiOperation(value = "根据科目编号查询科目")
+	@GetMapping("/get/{id}")
+	public Object get(@ApiParam(value = "科目编号", required = true) @PathVariable("id") Long id) {
+		return succeed(subjectService.get(id));
+	}
+
+	@ApiOperation(value = "分页查询科目列表")
+	@GetMapping("/queryPage")
+	public Object queryPage(SubjectQueryInfo queryInfo) {
+		return succeed(subjectService.queryPage(queryInfo));
+	}
+
+	@ApiOperation(value = "分页查询科目树状列表")
+	@GetMapping("/queryPageTree")
+	public Object queryPageTree(SubjectQueryInfo queryInfo) {
+		return succeed(subjectService.queryPageTree(queryInfo));
+	}
+}

+ 36 - 15
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/SubjectController.java

@@ -1,29 +1,50 @@
 package com.yonge.cooleshow.teacher.controller;
 
-import com.yonge.cooleshow.biz.dal.service.SubjectService;
-import com.yonge.cooleshow.biz.dal.vo.SubjectSelectVo;
-import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.List;
+import com.yonge.cooleshow.biz.dal.queryInfo.SubjectQueryInfo;
+import com.yonge.cooleshow.biz.dal.service.SubjectService;
+import com.yonge.cooleshow.biz.dal.vo.SubjectSelectVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
-/**
- * @Author: liweifan
- * @Data: 2022/3/21 17:03
- */
+@RequestMapping("subject")
+@Api(tags = "科目服务")
 @RestController
-@RequestMapping("/Subject")
-@Api(value = "老师入驻审核表", tags = "老师入驻审核表")
 public class SubjectController extends BaseController {
-    @Autowired
-    private SubjectService subjectService;
 
-    /***
+	@Autowired
+	private SubjectService subjectService;
+
+	@ApiOperation(value = "根据科目编号查询科目")
+	@GetMapping("/get/{id}")
+	public Object get(@ApiParam(value = "科目编号", required = true) @PathVariable("id") Long id) {
+		return succeed(subjectService.get(id));
+	}
+
+	@ApiOperation(value = "分页查询科目列表")
+	@GetMapping("/queryPage")
+	public Object queryPage(SubjectQueryInfo queryInfo) {
+		return succeed(subjectService.queryPage(queryInfo));
+	}
+
+	@ApiOperation(value = "分页查询科目树状列表")
+	@GetMapping("/queryPageTree")
+	public Object queryPageTree(SubjectQueryInfo queryInfo) {
+		return succeed(subjectService.queryPageTree(queryInfo));
+	}
+
+/***
      * 获取科目
      * @author liweifan
      * @updateTime 2022/3/21 17:21

+ 8 - 84
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherAuthEntryRecordController.java

@@ -1,29 +1,14 @@
 package com.yonge.cooleshow.teacher.controller;
 
-import java.util.List;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dto.AuthOperaDto;
-import com.yonge.cooleshow.biz.dal.dto.RealnameAuthDto;
-import com.yonge.cooleshow.biz.dal.dto.TeacherApplyDetailDto;
-import com.yonge.cooleshow.biz.dal.dto.req.TeacherAuthEntryRecordSearch;
-import com.yonge.cooleshow.biz.dal.support.Condition;
-import com.yonge.cooleshow.biz.dal.support.Query;
-import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherApplyDetailReq;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.common.page.PageInfo;
-import com.yonge.toolset.thirdparty.user.realname.RealnameAuthenticationPlugin;
-import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
-import com.yonge.toolset.utils.idcard.IdcardValidator;
-import com.yonge.toolset.utils.string.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
 import com.yonge.cooleshow.biz.dal.service.TeacherAuthEntryRecordService;
@@ -38,76 +23,15 @@ public class TeacherAuthEntryRecordController extends BaseController {
     private TeacherAuthEntryRecordService teacherAuthEntryRecordService;
     @Autowired
     private SysUserFeignService sysUserFeignService;
-    @Autowired
-    private RealnameAuthenticationPlugin realnameAuthenticationPlugin;
-
-    @PostMapping("/realnameAuth")
-    @ApiOperation(value = "实名认证", notes = "传入realnameAuthDto")
-    @ResponseBody
-    public HttpResponseResult<IdcardInfoExtractor> realnameAuth(@Valid @RequestBody RealnameAuthDto realnameAuthDto) {
-        IdcardValidator idcardValidator = new IdcardValidator();
-        //验证身份证号合法性
-        boolean validatedAllIdcard = idcardValidator.isValidatedAllIdcard(realnameAuthDto.getIdcardNo());
-        if (!validatedAllIdcard) {
-            return failed("身份证号不合法");
-        }
-        //通过身份证号获取身份信息
-        IdcardInfoExtractor idcardInfoExtractor = new IdcardInfoExtractor(realnameAuthDto.getIdcardNo(), validatedAllIdcard);
-        boolean verify = realnameAuthenticationPlugin.verify(realnameAuthDto.getRealname(), realnameAuthDto.getIdcardNo());
-        if (verify) {
-            return succeed(idcardInfoExtractor);
-        } else {
-            return failed("未通过实名认证");
-        }
-    }
 
     @PostMapping("/doApply")
     @ApiOperation(value = "提交申请", notes = "传入teacherAuthEntryRecord")
-    public HttpResponseResult<Boolean> doApply(@Valid @RequestBody TeacherApplyDetailDto teacherApplyDetailDto) throws Exception{
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-		//处理老师申请逻辑
-        return teacherAuthEntryRecordService.doApply(teacherApplyDetailDto, sysUser);
-    }
-
-    /**
-     * 查询分页
-     */
-    @GetMapping("/page")
-    @ApiOperation(value = "查询分页", notes = "传入teacherAuthEntryRecord")
-    public HttpResponseResult<PageInfo<TeacherAuthEntryRecordVo>> page(TeacherAuthEntryRecordSearch search, Query query) {
-        IPage<TeacherAuthEntryRecordVo> pages = teacherAuthEntryRecordService.selectPage(Condition.getPage(query), search);
-        return succeed(Condition.pageInfo(pages));
-    }
-
-    /**
-     * 查询单条详情
-     */
-    @GetMapping("/detail")
-    @ApiOperation(value = "详情", notes = "传入teacherAuthEntryRecord")
-    public HttpResponseResult<TeacherAuthEntryRecordVo> detail(@ApiParam(value = "主键", required = true) @RequestParam Long id) {
-        TeacherAuthEntryRecordVo detail =  teacherAuthEntryRecordService.detail(id);
-        return succeed(detail);
-    }
-
-
-    @PostMapping("/doAuth")
-    @ApiOperation(value = "审核", notes = "传入authOperaDto")
-    public HttpResponseResult<Boolean> doAuth(@Valid AuthOperaDto authOperaDto) throws Exception{
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        return teacherAuthEntryRecordService.doAuth(authOperaDto, sysUser);
-    }
-
-    /**
-     * 删除
-     */
-    @PostMapping("/remove")
-    @ApiOperation(value = "逻辑删除", notes = "传入ids")
-    public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        if (StringUtil.isEmpty(ids)) {
-            return failed("参数不能为空");
+    public HttpResponseResult<Boolean> doApply(@Valid @RequestBody TeacherApplyDetailReq teacherApplyDetailDto) throws Exception {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        return status(teacherAuthEntryRecordService.removeByIds(StringUtil.toLongList(ids)));
+        //处理老师申请逻辑
+        return teacherAuthEntryRecordService.doApply(teacherApplyDetailDto, user);
     }
-
-
 }

+ 29 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherAuthMusicianRecordController.java

@@ -3,6 +3,8 @@ package com.yonge.cooleshow.teacher.controller;
 import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.support.Condition;
 import com.yonge.cooleshow.biz.dal.support.Query;
 import com.yonge.cooleshow.common.controller.BaseController;
@@ -12,6 +14,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -26,6 +29,32 @@ public class TeacherAuthMusicianRecordController extends BaseController {
 
     @Autowired
     private TeacherAuthMusicianRecordService teacherAuthMusicianRecordService;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	/**
+	 * 获取音乐人审核状态
+	 */
+	@GetMapping("/getMusicianAuthStatus")
+	@ApiOperation(value = "获取音乐人审核状态")
+	public HttpResponseResult<Integer> getMusicianAuthStatus() {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		Integer musicianAuthStatus = teacherAuthMusicianRecordService.getMusicianAuthStatus(user.getId());
+
+		return succeed(musicianAuthStatus);
+	}
+
+	@PostMapping("/doApply")
+	@ApiOperation(value = "提交申请", notes = "传入teacherAuthEntryRecord")
+	public HttpResponseResult<Boolean> doApply(){
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		//处理老师申请逻辑
+		return teacherAuthMusicianRecordService.doApply(sysUser.getId());
+	}
+
 
 	/**
      * 查询单条

+ 53 - 103
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherController.java

@@ -1,34 +1,21 @@
 package com.yonge.cooleshow.teacher.controller;
 
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherSetReq;
+import com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
 
-import java.util.List;
-
-import javax.validation.Valid;
-
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.GetMapping;
-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.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dao.SubjectDao;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
-import com.yonge.cooleshow.biz.dal.support.Condition;
-import com.yonge.cooleshow.biz.dal.support.Query;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.toolset.utils.string.StringUtil;
 
 @RestController
 @RequestMapping("/Teacher")
@@ -41,97 +28,60 @@ public class TeacherController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
-    @Autowired
-    private SubjectDao subjectDao;
-
-    @ApiOperation(value = "根据教师编号查询教师基本信息")
+    @ApiOperation(value = "我的-查询教师基本信息")
     @GetMapping("/queryUserInfo")
-    public Object queryUserInfo() {
-    	SysUser user = sysUserFeignService.queryUserInfo();
-		if (user == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		Teacher teacher = teacherService.getById(user.getId());
+    public HttpResponseResult<TeacherHomeVo> queryUserInfo() {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        Teacher teacher = teacherService.getById(user.getId());
+		TeacherHomeVo teacherHomeVo = new TeacherHomeVo();
+		teacherHomeVo.setHeardUrl(user.getAvatar());
+		teacherHomeVo.setUsername(user.getUsername());
+		//todo 老师授课信息
+		teacherHomeVo.setStarGrade(1);
+		teacherHomeVo.setFansNum(1);
+		teacherHomeVo.setExpTime(1);
+		teacherHomeVo.setUnExpTime(1);
 
-		return succeed(teacher);
+		teacherHomeVo.setEntryStatus(teacher.getEntryStatus());
+		return succeed(teacherHomeVo);
     }
 
-	/**
-     * 查询单条
-     */
-    @GetMapping("/detail")
-    @ApiOperation(value = "详情", notes = "传入teacher")
-    public HttpResponseResult<Teacher> detail(Teacher teacher) {
-		Teacher detail = teacherService.getOne(Condition.getQueryWrapper(teacher));
-		return succeed(detail);
-	}
+    @ApiOperation(value = "判断老师直播权限")
+    @GetMapping("/checkLiveAuth")
+    public HttpResponseResult<Boolean> checkLiveAuth(){
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        //todo 根据老师规则,判断老师直播权限
+        return HttpResponseResult.succeed(true);
+    }
+
+    @GetMapping("/getSetDetail")
+    @ApiOperation(value = "获取设置详情")
+    public HttpResponseResult<TeacherVo> getSetDetail() {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        TeacherVo detail = teacherService.getSetDetail(user.getId());
+        return succeed(detail);
+    }
 
-	/**
-	 * 查询单条
-	 */
-	@GetMapping("/detail1")
-	@ApiOperation(value = "详情", notes = "传入teacher")
-	public HttpResponseResult<Teacher> detail1(Teacher teacher) {
-		return succeed(teacherService.detail1(teacher.getUserId()));
-	}
-    
-    
-    /**
-     * 查询集合
-     */
-    @GetMapping("/list")
-    @ApiOperation(value = "查询集合", notes = "传入teacher")
-    public HttpResponseResult<List<Teacher>> list(Teacher teacher) {
-		List<Teacher> list = teacherService.list();
-		return succeed(list);
-	}
-    
-    /**
-     * 查询分页
-     */
-    @GetMapping("/page")
-    @ApiOperation(value = "查询分页", notes = "传入teacher")
-    public HttpResponseResult<IPage<Teacher>> page(Teacher teacher, Query query) {
-		IPage<Teacher> pages = teacherService.selectPage(Condition.getPage(query), teacher);
-		return succeed(pages);
-	}
-    
-    /**
-	 * 新增
-	 */
-	@PostMapping("/save")
-	@ApiOperation(value = "新增", notes = "传入teacher")
-	public HttpResponseResult save(@Valid @RequestBody Teacher teacher) {
-    	return status(teacherService.save(teacher));
-	}
-    
-    /**
-	 * 修改
-	 */
-	@PostMapping("/update")
-	@ApiOperation(value = "修改", notes = "传入teacher")
-	public HttpResponseResult update(@Valid @RequestBody Teacher teacher) {
-        return status(teacherService.updateById(teacher));
-	}
-    
-    /**
-	 * 新增或修改
-	 */
-    @PostMapping("/submit")
-    @ApiOperation(value = "新增或修改", notes = "传入teacher")
-	public HttpResponseResult submit(@RequestBody Teacher teacher) {
-        return status(teacherService.saveOrUpdate(teacher));
+    @PostMapping("/submitSetDetail")
+    @ApiOperation(value = "修改设置信息", notes = "传入teacher")
+    public HttpResponseResult<TeacherVo> submitSetDetail(@RequestBody TeacherSetReq setReq) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        //设置
+        teacherService.submitSetDetail(setReq,user.getId());
+        return succeed(teacherService.getSetDetail(user.getId()));
     }
 
- 	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        if (StringUtil.isEmpty(ids)) {
-			return failed("参数不能为空");
-		}
-		return status(teacherService.removeByIds(StringUtil.toLongList(ids)));
-	}
+
 }

+ 0 - 2
cooleshow-user/user-teacher/src/main/resources/bootstrap-dev.yml

@@ -1,6 +1,4 @@
 spring:
-  application:
-    name: teacher-server
   cloud:
     nacos:
       config:

+ 4 - 4
toolset/utils/src/main/java/com/yonge/toolset/utils/idcard/IdcardInfoExtractor.java

@@ -32,7 +32,7 @@ public class IdcardInfoExtractor {
 	// 出生日期
 	private Date birthday;
 
-	private static Properties idCardCodeTable;
+	/*private static Properties idCardCodeTable;
 
 	static {
 		if (idCardCodeTable == null) {
@@ -43,7 +43,7 @@ public class IdcardInfoExtractor {
 		} catch (IOException e) {
 			throw new UtilException("银行卡信息查询接口异常", e);
 		}
-	}
+	}*/
 
 	private IdcardValidator validator = null;
 
@@ -61,14 +61,14 @@ public class IdcardInfoExtractor {
 			idcard = validator.convertIdcarBy15bit(idcard);
 		}
 		// 获取省份
-		provinceCode = idcard.substring(0, 2) + "0000";
+		/*provinceCode = idcard.substring(0, 2) + "0000";
 		province = idCardCodeTable.getProperty(provinceCode);
 
 		cityCode = idcard.substring(0, 4) + "00";
 		city = idCardCodeTable.getProperty(cityCode);
 
 		regionCode = idcard.substring(0, 6);
-		region = idCardCodeTable.getProperty(regionCode);
+		region = idCardCodeTable.getProperty(regionCode);*/
 
 		// 获取性别
 		String id17 = idcard.substring(16, 17);