Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

hgw 3 gadi atpakaļ
vecāks
revīzija
8796fc6596
14 mainītis faili ar 729 papildinājumiem un 641 dzēšanām
  1. 14 1
      cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/dto/RealnameAuthReq.java
  2. 8 3
      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. 19 0
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  8. 0 5
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthEntryRecordController.java
  9. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherAuthEntryRecordDao.java
  10. 25 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherApplyDetailReq.java
  11. 0 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherSetReq.java
  12. 0 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  13. 0 38
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherAuthEntryRecordController.java
  14. 1 24
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherController.java

+ 14 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/RealnameAuthReq.java → cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/dto/RealnameAuthReq.java

@@ -1,9 +1,10 @@
-package com.yonge.cooleshow.biz.dal.dto.req;
+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;
 
 /**
@@ -23,6 +24,10 @@ public class RealnameAuthReq implements Serializable {
     @ApiModelProperty(value = "用户身份证号", required = true)
     private String idCardNo;
 
+    @NotNull(message = "是否修改用户信息")
+    @ApiModelProperty(value = "是否修改用户信息", required = true)
+    private Boolean isSave;
+
     public String getRealName() {
         return realName;
     }
@@ -38,4 +43,12 @@ public class RealnameAuthReq implements Serializable {
     public void setIdCardNo(String idCardNo) {
         this.idCardNo = idCardNo;
     }
+
+    public Boolean getSave() {
+        return isSave;
+    }
+
+    public void setSave(Boolean save) {
+        isSave = save;
+    }
 }

+ 8 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/UpdatePasswordReq.java → cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/dto/UpdatePasswordDto.java

@@ -1,18 +1,23 @@
-package com.yonge.cooleshow.biz.dal.dto.req;
+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 UpdatePasswordReq {
+@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;
 

+ 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("未通过实名认证");
+        }
+    }
+
+
 }

+ 19 - 0
cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -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>

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

@@ -4,8 +4,6 @@ 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.req.RealnameAuthReq;
-import com.yonge.cooleshow.biz.dal.dto.req.TeacherApplyDetailReq;
 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;
@@ -14,9 +12,6 @@ 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.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;

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

@@ -25,6 +25,7 @@ public interface TeacherAuthEntryRecordDao extends BaseMapper<TeacherAuthEntryRe
 	 * @return: java.lang.Integer
 	 */
 	Integer updateUserCard(@Param("param") TeacherApplyDetailReq teacherApplyDetailDto);
+
 	/***
 	 * 根据老师id查询详情
 	 * @author liweifan

+ 25 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherApplyDetailReq.java

@@ -1,7 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dto.req;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.yonge.cooleshow.biz.dal.dto.req.RealnameAuthReq;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -16,11 +15,19 @@ import java.util.Date;
  * @Data: 2022/3/18 14:56
  */
 @ApiModel(value = "TeacherApplyDetailReq对象", description = "老师入驻申请信息")
-public class TeacherApplyDetailReq extends RealnameAuthReq implements Serializable {
+public class TeacherApplyDetailReq implements Serializable {
 
     @ApiModelProperty(value = "用户id")
     private Long userId;
 
+    @NotBlank(message = "用户真实姓名不能为空")
+    @ApiModelProperty(value = "用户真实姓名", required = true)
+    private String realName;
+
+    @NotBlank(message = "用户身份证号不能为空")
+    @ApiModelProperty(value = "用户身份证号", required = true)
+    private String idCardNo;
+
     @NotNull(message = "性别不能为空")
     @ApiModelProperty(value = "性别(0,女  1,男)", required = true)
     private Integer gender;
@@ -132,4 +139,20 @@ public class TeacherApplyDetailReq extends RealnameAuthReq implements Serializab
     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;
+    }
 }

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

@@ -15,8 +15,6 @@ public class TeacherSetReq {
     private String username;
     @ApiModelProperty(value = "性别 0女 1男")
     private Integer gender;
-    @ApiModelProperty(value = "手机号")
-    private String phone;
 
     public String getAvatar() {
         return avatar;
@@ -41,12 +39,4 @@ public class TeacherSetReq {
     public void setGender(Integer gender) {
         this.gender = gender;
     }
-
-    public String getPhone() {
-        return phone;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
 }

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

@@ -76,9 +76,6 @@
 			<if test="param.gender != null">
 				gender_ = #{param.gender},
 			</if>
-			<if test="param.phone != null and param.phone != ''">
-				phone_ = #{param.phone},
-			</if>
 		</set>
 		WHERE id_ = #{id}
 	</update>

+ 0 - 38
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherAuthEntryRecordController.java

@@ -1,22 +1,10 @@
 package com.yonge.cooleshow.teacher.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.req.RealnameAuthReq;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherApplyDetailReq;
-import com.yonge.cooleshow.biz.dal.dto.search.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.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 io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,32 +23,6 @@ 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 RealnameAuthReq realNameAuthDto) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        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")

+ 1 - 24
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherController.java

@@ -1,7 +1,6 @@
 package com.yonge.cooleshow.teacher.controller;
 
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherSetReq;
-import com.yonge.cooleshow.biz.dal.dto.req.UpdatePasswordReq;
 import com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import io.swagger.annotations.Api;
@@ -29,7 +28,7 @@ public class TeacherController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
-    @ApiOperation(value = "根据教师编号查询教师基本信息")
+    @ApiOperation(value = "我的-查询教师基本信息")
     @GetMapping("/queryUserInfo")
     public HttpResponseResult<TeacherHomeVo> queryUserInfo() {
         SysUser user = sysUserFeignService.queryUserInfo();
@@ -81,30 +80,8 @@ public class TeacherController extends BaseController {
         }
         //设置
         teacherService.submitSetDetail(setReq,user.getId());
-
         return succeed(teacherService.getSetDetail(user.getId()));
     }
 
-    @PostMapping("/updatePassword")
-    @ApiOperation(value = "修改密码", notes = "传入teacher")
-    public HttpResponseResult<Boolean> updatePassword(@RequestBody UpdatePasswordReq updatePasswordReq) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        //todo 修改密码
-        return succeed(true);
-    }
-
-    @PostMapping("/resetPassword")
-    @ApiOperation(value = "修改密码", notes = "传入teacher")
-    public HttpResponseResult<Boolean> resetPassword(@RequestBody UpdatePasswordReq updatePasswordReq) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        //todo 重置密码
-        return succeed(true);
-    }
 
 }