Conflicts:
	modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java
	modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java
yun-zuoyi
汪云昊 4 years ago
commit 3518567099

@ -4,8 +4,6 @@ import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword;
import cn.estsh.impp.framework.base.service.ICrudService;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* @Description :
* @Reference :
@ -24,7 +22,11 @@ public interface ISysUserPasswordService extends ICrudService<SysUserPassword> {
@ApiOperation(value = "修改用户密码")
void updatePassword(Long userId,String password,String newPwd);
@ApiOperation(value = "修改用户密码")
void updatePassword(String loginName,String password,String newPwd);
@ApiOperation(value = "重置用户密码")
void updatePassword(Long userId,String password);
void updatePasswordWizoutSession(String loginName,String password,String newPwd);
}

@ -3,7 +3,11 @@ package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.shirotoken.BaseToken;
import cn.estsh.i3plus.pojo.platform.bean.*;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysLogUserLogin;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserRole;
import cn.estsh.i3plus.pojo.platform.bean.SysUser;
import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authc.AuthenticationException;
@ -300,4 +304,14 @@ public interface ISysUserService {
*/
@ApiOperation(value = "根据id查询用户信息")
List<SysUser> findSysUserByIds(Long[] ids);
/**
*
*
* @param loginName
* @param password
*/
@ApiOperation(value = "根据用户名查询密码是否正确")
SysUser validatePasswordByLoginNameAndReturnUser(String loginName, String password);
}

@ -62,19 +62,19 @@ public class ExternalSystemController {
private RabbitTemplate rabbitTemplate;
@GetMapping(value = "/enterprise-wechat/msg-callback")
@ApiOperation(value = "消息回调测试",notes = "消息回调测试")
@ApiOperation(value = "消息回调测试", notes = "消息回调测试")
public String test(@RequestParam(name = "msg_signature") String msgSignature, String timestamp,
String nonce, String echostr) throws AesException {
return new WorkWeChatTool().msgCallbackVerify(msgSignature, timestamp,nonce, echostr);
String nonce, String echostr) throws AesException {
return new WorkWeChatTool().msgCallbackVerify(msgSignature, timestamp, nonce, echostr);
}
@PostMapping(value = "/enterprise-wechat/msg-callback")
@ApiOperation(value = "消息回调",notes = "消息回调")
@ApiOperation(value = "消息回调", notes = "消息回调")
public ResultBean listSysLocaleLanguage(@RequestParam(name = "msg_signature") String msgSignature, String timestamp,
String nonce,@RequestBody String msgStr) {
String nonce, @RequestBody String msgStr) {
try {
WorkWeChatTool workWeChatTool = new WorkWeChatTool();
MsgTaskCardEvent msgTaskCardEvent = workWeChatTool.msgCallbackDecrypt(msgSignature,timestamp,nonce,msgStr);
MsgTaskCardEvent msgTaskCardEvent = workWeChatTool.msgCallbackDecrypt(msgSignature, timestamp, nonce, msgStr);
rabbitTemplate.convertAndSend(PlatformConstWords.QUEUE_IMPP_WORK_WECHAT_MSG_CALLBACK, JSON.toJSONString(msgTaskCardEvent));
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(msgTaskCardEvent);
} catch (ImppBusiException busExcep) {
@ -85,7 +85,7 @@ public class ExternalSystemController {
}
@GetMapping(value = "/enterprise-wechat/bind-user-ref")
@ApiOperation(value = "绑定用户关系",notes = "绑定用户关系")
@ApiOperation(value = "绑定用户关系", notes = "绑定用户关系")
public ResultBean workWeChatUserBind() {
try {
WorkWeChatTool workWeChatTool = new WorkWeChatTool();
@ -118,7 +118,7 @@ public class ExternalSystemController {
);
// 判断是否存在如果存在则修改,不存在则新增
if(sysRefUserExternal == null){
if (sysRefUserExternal == null) {
sysRefUserExternal = new SysRefUserExternal();
sysRefUserExternal.setUserId(sysUser.getId());
sysRefUserExternal.setExternalRef(ImppEnumUtil.USER_EXTERNAL_REF.WORK_WECHAT.getValue());
@ -132,33 +132,34 @@ public class ExternalSystemController {
}
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
private String getUserProperty(ImppEnumUtil.USER_BIND_PROPERTY userBindProperty,SysUser sysUser){
private String getUserProperty(ImppEnumUtil.USER_BIND_PROPERTY userBindProperty, SysUser sysUser) {
String userBindPropertyValue = null;
switch (userBindProperty){
switch (userBindProperty) {
case USER_LOGIN_NAME:
userBindPropertyValue =sysUser.getUserLoginName();
userBindPropertyValue = sysUser.getUserLoginName();
break;
case USER_NAME:
userBindPropertyValue = sysUser.getUserName();
break;
case USER_EMP_NO:
userBindPropertyValue =sysUser.getUserEmpNo();
break;
case EMAIL:
userBindPropertyValue =sysUser.getUserEmail();
userBindPropertyValue = sysUser.getUserEmpNo();
break;
//FIXME 松下取消邮箱校验
// case EMAIL:
// userBindPropertyValue =sysUser.getUserEmail();
// break;
case USER_PHONE:
userBindPropertyValue =sysUser.getUserPhone();
userBindPropertyValue = sysUser.getUserPhone();
break;
case USER_WECHAT_NO:
userBindPropertyValue =sysUser.getUserWeChatNo();
userBindPropertyValue = sysUser.getUserWeChatNo();
break;
}
return userBindPropertyValue;

@ -1,12 +1,10 @@
package cn.estsh.i3plus.core.apiservice.controller.base;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService;
import cn.estsh.i3plus.icloud.wms.sdk.IWmsCommonCloud;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.impp.framework.boot.configuration.SystemConfig;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ImppRedis;
@ -28,7 +26,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
/**
* @Description :
@ -47,17 +49,11 @@ public class SystemController {
@Autowired
private Environment environment;
@Autowired
private IWmsCommonCloud wmsCommonCloud;
@Resource(name = CommonConstWords.IMPP_REDIS_CORE)
protected ImppRedis redisCore;
@Autowired
private ISysDictionaryService sysDictionaryService;
@Autowired
private SystemConfig systemConfig;
private ISysUserPasswordService userPasswordService;
@GetMapping("/get-properties")
@ApiOperation(value = "获取系统配置信息", notes = "获取系统配置信息")
@ -139,4 +135,5 @@ public class SystemController {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -2,7 +2,6 @@ package cn.estsh.i3plus.core.apiservice.controller.base;
import cn.estsh.i3plus.core.api.iservice.base.ISynchronizedService;
import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService;
import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService;
import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginStrategyService;
import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.core.apiservice.controller.busi.PersonnelController;
@ -47,6 +46,7 @@ import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.CredentialsException;
import org.apache.shiro.authc.ExpiredCredentialsException;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.UnknownAccountException;
@ -132,7 +132,7 @@ public class WhiteController extends CoreBaseController {
private ISysConfigService configService;
@Autowired
private ISystemLoginService loginService;
private ISysUserPasswordService userPasswordService;
@Autowired
private SysUserPasswordUtil userPasswordUtil;
@ -316,8 +316,10 @@ public class WhiteController extends CoreBaseController {
} catch (IncorrectCredentialsException e) {
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD);
userPasswordUtil.checkLoginErrorNumber(loginModel.getLoginName(), result, e);
userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_PASSWORD;
} catch (ExpiredCredentialsException e) {
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_PASSWORD_EXPIRED);
userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_USERNAME_OR_PASSWORD;
} catch (CredentialsException e) {
// 用户名或密码错误
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_NAME);
@ -335,13 +337,16 @@ public class WhiteController extends CoreBaseController {
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD.getDescription()).setCode(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD.getCode());
result.setErrorMsg(e.getMessage());
userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR;
LOGGER.warn("Impp业务异常AuthenticationException 登录失败 ", e);
} catch (ImppBusiException e) {
result = ResultBean.fail(e);
userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR;
LOGGER.warn("Impp业务异常ImppBusiException 登录失败 ", e);
} catch (Exception e) {
result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode())
.setErrorMsg(LocaleUtils.getEnumLocaleResDesc(ImppExceptionEnum.SYSTEM_EXCEPTION, ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription()));
userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR;
LOGGER.warn("Impp业务异常Exception 登录失败 ", e);
} finally {
// 记录登录记录
recordSysUserLog(null, loginModel.getLoginName(), userLoginStatus.getValue());
@ -717,6 +722,24 @@ public class WhiteController extends CoreBaseController {
}
}
@PutMapping(value = "/update-expired-password")
@ApiOperation(value = "修改密码", notes = "松下修改当前登录用户密码")
public ResultBean updateSysUserPassword(String loginName, String password, String newPwd) {
try {
// 数据校验
ValidatorBean.checkNotNull(password, "旧密码不能为空");
ValidatorBean.checkNotNull(newPwd, "新密码不能为空");
ValidatorBean.checkNotNull(loginName, "用户名不能为空");
userPasswordService.updatePasswordWizoutSession(loginName, password, newPwd.trim());
return ResultBean.success("修改密码成功,请重新登陆").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/license")
@ApiOperation(value = "更新授权", notes = "更新授权")
public ResultBean updateLicense(String content) {

@ -1,6 +1,12 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.core.api.iservice.busi.ILicenseClickService;
import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDepartmentService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysOrganizeService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPositionService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService;
import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
@ -16,6 +22,7 @@ import cn.estsh.i3plus.pojo.model.platform.UserDetailModel;
import cn.estsh.i3plus.pojo.model.platform.UserDetailPagerModel;
import cn.estsh.i3plus.pojo.model.platform.UserRolePagerModel;
import cn.estsh.i3plus.pojo.platform.bean.*;
import cn.estsh.i3plus.pojo.platform.repository.SysUserPasswordRepository;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
@ -29,7 +36,14 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.DeleteMapping;
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.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
@ -74,8 +88,12 @@ public class PersonnelController extends CoreBaseController {
@Autowired
private SysUserPasswordUtil userPasswordUtil;
@Autowired
private SysUserPasswordRepository userPasswordRDao;
/**
*
*
* @param model
* @return
*/
@ -134,7 +152,17 @@ public class PersonnelController extends CoreBaseController {
user.setOrganizeNameRdd(userOrganize.getName());
user.setOrganizeCode(userOrganize.getOrganizeCode());
user.setUserInfoId(info.getId());
user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true));
refreshSysUserPassword(user);
SysUser userSaved=personnelService.saveSysUser(user);
// 添加保存passwordId进SysUser表
SysUserPassword pwd = new SysUserPassword();
pwd.setUserId(userSaved.getId());
pwd.setUserPassword(userSaved.getUserLoginPassword());
ConvertBean.serviceModelInitialize(pwd, userSaved.getUserName());
SysUserPassword savedPassword = userPasswordRDao.save(pwd);
user.setUserLoginPasswordId(savedPassword.getId());
personnelService.saveSysUser(user);
info.setUserId(user.getId());
@ -154,6 +182,7 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param model
* @return
*/
@ -243,6 +272,7 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param model
* @return
*/
@ -277,6 +307,7 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param id id
* @return
*/
@ -317,6 +348,7 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param id id
* @return
*/
@ -346,6 +378,7 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param id id
* @return
*/
@ -376,6 +409,7 @@ public class PersonnelController extends CoreBaseController {
/**
* id
*
* @param ids id
* @return
*/
@ -421,6 +455,7 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param id id
* @return
*/
@ -451,6 +486,7 @@ public class PersonnelController extends CoreBaseController {
/**
* id
*
* @param ids ids
* @return
*/
@ -496,6 +532,7 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param model
* @return
*/
@ -508,7 +545,7 @@ public class PersonnelController extends CoreBaseController {
List<SysRefUserDepartment> refs = personnelService.querySysRefUserDepartmentByUserDetailModel(model);
if (refs != null && refs.size() > 0) {
for (SysRefUserDepartment ref : refs) {
if(!idList.contains(ref.getUserId())){
if (!idList.contains(ref.getUserId())) {
idList.add(ref.getUserId());
}
}
@ -525,6 +562,7 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param model
* @return
*/
@ -551,6 +589,7 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param model
* @return
*/
@ -569,6 +608,7 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param model
* @return
*/
@ -587,6 +627,7 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param model
* @return
*/
@ -605,11 +646,12 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @return
*/
@GetMapping(value = "/user/get-organize-list")
@ApiOperation(value = "获取账号信息", notes = "获取用户账号的所有组织信息")
public ResultBean getUserOrganizeList(){
public ResultBean getUserOrganizeList() {
try {
List<SysOrganize> list = AuthUtil.getSessionUser().getUser().getOrganizeList();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list);
@ -622,19 +664,19 @@ public class PersonnelController extends CoreBaseController {
@PutMapping(value = "/user/session-organize/{id}")
@ApiOperation(value = "修改用户会话组织信息", notes = "修改用户会话组织信息")
public ResultBean updateUserOrganizeList(@PathVariable("id") String idStr){
public ResultBean updateUserOrganizeList(@PathVariable("id") String idStr) {
try {
ValidatorBean.checkIsNumber(idStr, "id为空");
List<SysOrganize> list = AuthUtil.getSessionUser().getUser().getOrganizeList();
Long id = Long.parseLong(idStr);
SysOrganize organize = null;
for (SysOrganize org : list) {
if(org.getId().equals(id)){
if (org.getId().equals(id)) {
organize = org;
}
}
if(organize == null){
if (organize == null) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
@ -645,7 +687,7 @@ public class PersonnelController extends CoreBaseController {
// 会话工厂信息保存进Redis
AuthUtil.setOrganize(organize);
personnelService.updateSysUserOrganize(AuthUtil.getSessionUser().getUser().getId(),organize.getId());
personnelService.updateSysUserOrganize(AuthUtil.getSessionUser().getUser().getId(), organize.getId());
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(organize);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
@ -657,7 +699,7 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param model
* @param model
* @param isCheckId
* @throws Exception
*/
@ -677,6 +719,8 @@ public class PersonnelController extends CoreBaseController {
.notNull("infoDepartmentId", model.getInfoDepartmentId())
.notNull("userDepartmentId", model.getUserDepartmentId())
.notNull("userLoginName", model.getUserLoginName());
// FIXME 松下移除邮箱校验
// .notNull("userEmail", model.getUserEmail())
}
/**
@ -699,7 +743,7 @@ public class PersonnelController extends CoreBaseController {
*
*
* @param model
* @param user
* @param user
* @throws Exception
*/
public void initUser(UserDetailModel model, SysUser user) throws Exception {
@ -719,8 +763,8 @@ public class PersonnelController extends CoreBaseController {
/**
*
*
* @param user
* @param info
* @param user
* @param info
* @param model
*/
public void refreshRef(SysUser user, SysUserInfo info, UserDetailModel model) {
@ -763,57 +807,60 @@ public class PersonnelController extends CoreBaseController {
/**
* code
*
* @param code
* @return
*/
@GetMapping(value = "/organize/get-code")
@ApiOperation(value = "根据组织code查询对应的组织信息", notes = "根据组织code查询对应的组织信息")
public ResultBean<SysOrganize> getSysOrganizeByCode(String code){
try{
public ResultBean<SysOrganize> getSysOrganizeByCode(String code) {
try {
SysOrganize org = new SysOrganize();
org.setOrganizeCode(code);
SysOrganize sysOrganize = organizeService.get(org);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysOrganize);
}catch(ImppBusiException busExcep){
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
*
* @return
*/
@GetMapping(value = "/organize/list")
@ApiOperation(value = "查询所有组织信息", notes = "查询所有组织信息")
public ResultBean<SysOrganize> findSysOrganizeList(){
try{
public ResultBean<SysOrganize> findSysOrganizeList() {
try {
List<SysOrganize> sysOrganize = organizeService.findAll();
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(sysOrganize);
}catch(ImppBusiException busExcep){
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
*
* @return
*/
@GetMapping(value = "/license")
@ApiOperation(value = "获取授权信息")
public ResultBean<ImppLicense> getLicense(){
try{
public ResultBean<ImppLicense> getLicense() {
try {
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultObject(ImppLicenseTool.getLicense());
}catch(ImppBusiException busExcep){
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}

@ -189,7 +189,7 @@ public class SysMessageController extends CoreBaseController {
* CORE -
* @return
*/
@GetMapping(value = "/operate/user-message/find-unread")
@GetMapping(value = "/white/user-message/find-unread")
@ApiOperation(value = "查看用户未读站内信")
public ResultBean<SysRefUserMessage> findUnreadUserMessage(){
try {

@ -1,8 +1,13 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil;
import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService;
import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserInfoService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.EncryptTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
@ -13,12 +18,16 @@ import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.*;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysMessage;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserDepartment;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserRole;
import cn.estsh.i3plus.pojo.platform.bean.SysUser;
import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
@ -27,7 +36,13 @@ import org.apache.commons.lang3.RandomStringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.DeleteMapping;
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.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@ -81,6 +96,8 @@ public class SysUserController extends CoreBaseController{
ValidatorBean.beginValid(sysUser)
.numberCheck("userInfoId",sysUser.getUserInfoId())
.notNull("userLoginName",sysUser.getUserLoginName())
// FIXME 松下取消邮箱校验
// .notNull("userEmail",sysUser.getUserEmail())
.notNull("userLoginPassword",sysUser.getUserLoginPassword());
if(roleIds == null || roleIds.length <= 0){
@ -143,6 +160,8 @@ public class SysUserController extends CoreBaseController{
.numberCheck("id",sysUser.getUserInfoId())
.numberCheck("userInfoId",sysUser.getUserInfoId())
.notNull("userLoginName",sysUser.getUserLoginName());
// FIXME 松下取消邮箱校验
// .notNull("userEmail",sysUser.getUserEmail());
if(roleIds == null || roleIds.length <= 0){
throw ImppExceptionBuilder.newInstance()

@ -111,8 +111,8 @@ public class MessageMailQueueReceiver {
sysFileAttach.setFileNameRdd(sysFile.getFileOriginalName());
sysFileAttach.setFilePathRdd(sysFile.getFilePath());
sysFileAttachService.insertSysFileAttach(sysFileAttach);
}finally {
if(in != null) {
} finally {
if (in != null) {
in.close();
}
}
@ -148,7 +148,10 @@ public class MessageMailQueueReceiver {
for (String receiver : messageReceiver) {
sysUser = sysUserService.getSysUserById(Long.parseLong(receiver));
// FIXME 松下取消邮件唯一性
if (StringUtils.isEmpty(sysUser.getUserEmail())) {
continue;
}
refUserMessage = new SysRefUserMessage();
refUserMessage.setMessageId(msg.getId());
refUserMessage.setMessageSoftType(msg.getMessageSoftType());

@ -2,24 +2,32 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.base.login.strategy;
import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService;
import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginStrategyService;
import cn.estsh.i3plus.core.api.iservice.busi.ILicenseClickService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseThreadLocal;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.model.platform.SysLoginModel;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysConfig;
import cn.estsh.i3plus.pojo.platform.bean.SysUser;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.ExpiredCredentialsException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.function.BiFunction;
import static cn.estsh.i3plus.platform.common.util.CommonConstWords.DEFAULT_LANGUAGE;
@ -37,9 +45,6 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService {
protected ImppRedis redisCore;
@Autowired
private ILicenseClickService licenseClickService;
@Autowired
private ISysUserService userService;
@Autowired
@ -65,6 +70,10 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService {
if (sessionMode != CommonEnumUtil.SESSION_MODE.SEIZE.getValue()) {
AuthUtil.logout();
}
// 已经对用户名和密码做过验证了
// 获取系统参数【密码过期时间】 进行密码有效时间判断
userService.validatePasswordByLoginNameAndReturnUser(loginModel.getLoginName(),loginModel.getLoginPwd());
validatePasswordIsExpired(loginModel.getLoginName());
SessionUser user = userService.loginUser(
loginModel.getLoginName().trim(),
@ -84,4 +93,30 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService {
return result;
};
}
private void validatePasswordIsExpired(String loginName) {
SysConfig passwordExpireSwitch = RedisCacheTool.getSysConfigByConfigCode(CommonConstWords.CONFIG_PWD_EXPIRE_SWITCH);
if (passwordExpireSwitch != null
&& CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == Integer.parseInt(passwordExpireSwitch.getConfigValue())) {
SysConfig passwordExpireDays = RedisCacheTool.getSysConfigByConfigCode(CommonConstWords.CONFIG_PWD_EXPIRE_DAY_TIME);
if (passwordExpireDays != null && Integer.parseInt(passwordExpireDays.getConfigValue()) > 0) {
SysUser user = userService.getSysUserByLoginName(loginName);
if (StringUtils.isEmpty(user.getUserPasswordLastModifyTime())) {
throw new ExpiredCredentialsException("用户密码过期 请重新设置新密码");
} else {
DateFormat df = new SimpleDateFormat(CommonConstWords.DATE_TIME_FORMAT_HH_MM_SS_RISK);
Date lastModifyDate = null;
try {
lastModifyDate = df.parse(user.getUserPasswordLastModifyTime());
} catch (ParseException e) {
throw new ImppBusiException("验证用户密码登录时间,时间解析错误");
}
long dayGap = (System.currentTimeMillis() - lastModifyDate.getTime()) / (60 * 60 * 1000 * 24);
if ((int) dayGap >= Integer.parseInt(passwordExpireDays.getConfigValue())) {
throw new ExpiredCredentialsException("用户密码过期 请重新设置新密码");
}
}
}
}
}
}

@ -639,14 +639,15 @@ public class PersonnelServiceService implements IPersonnelService {
}
// 邮箱唯一教研
if(!checkSysUserEmail(user.getUserEmail(),user.getUserInfoId() == null ? 0 : user.getUserInfoId())){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
.setErrorDetail("邮箱已存在")
.setErrorSolution("请重新输入邮箱")
.build();
}
// FIXME 松下移除邮箱校验
// if(!checkSysUserEmail(user.getUserEmail(),user.getUserInfoId() == null ? 0 : user.getUserInfoId())){
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
// .setErrorDetail("邮箱已存在")
// .setErrorSolution("请重新输入邮箱")
// .build();
// }
// 手机号唯一教研
if(!checkSysUserPhone(user.getUserPhone(),user.getUserInfoId() == null ? 0 : user.getUserInfoId())){

@ -15,14 +15,11 @@ import cn.estsh.impp.framework.base.service.CrudService;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Description :
* @Reference :
@ -51,11 +48,11 @@ public class SysUserSavePasswordService extends CrudService<SysUserPassword> imp
@Override
public void updatePassword(Long userId, String password, String newPwd) {
SysUser user = userService.getSysUserById(userId);
ValidatorBean.checkNotNull(user,"不存在的用户信息");
ValidatorBean.checkNotNull(user, "不存在的用户信息");
SysUserPassword userPassword = userPasswordRDao.getById(user.getUserLoginPasswordId());
ValidatorBean.checkNotNull(userPassword,"不存在的用户密码信息");
if(StringUtils.equals(userPassword.getUserPassword(),password)){
ValidatorBean.checkNotNull(userPassword, "不存在的用户密码信息");
if (StringUtils.equals(userPassword.getUserPassword(), password)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode())
@ -68,27 +65,70 @@ public class SysUserSavePasswordService extends CrudService<SysUserPassword> imp
}
@Override
public void updatePassword(String loginName, String password, String newPwd) {
SysUser user = userService.getSysUserByLoginName(loginName);
SysUserPassword userPassword = userPasswordRDao.getById(user.getUserLoginPasswordId());
ValidatorBean.checkNotNull(userPassword, "不存在的用户密码信息");
if (StringUtils.equals(userPassword.getUserPassword(), password)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode())
.setErrorDetail("原始密码错误")
.setErrorSolution("请重新操作")
.build();
}
updatePassword(user.getId(), newPwd);
}
@Override
public void updatePassword(Long userId, String password) {
SysUser user = userService.getSysUserById(userId);
ValidatorBean.checkNotNull(user,"不存在的用户信息");
ValidatorBean.checkNotNull(user, "不存在的用户信息");
user.setUserLoginPassword(password);
userPasswordUtil.checkPasswordSave(user);
userPasswordRDao.updateByProperties(
new String[]{"userId","isDeleted"},
new Object[]{user.getId(),CommonEnumUtil.IS_DEAL.NO.getValue()},
new String[]{"isDeleted","modifyDatetime","modifyUser"},
new String[]{"userId", "isDeleted"},
new Object[]{user.getId(), CommonEnumUtil.IS_DEAL.NO.getValue()},
new String[]{"isDeleted", "modifyDatetime", "modifyUser"},
new Object[]{
CommonEnumUtil.IS_DEAL.YES.getValue(), TimeTool.getNowTime(true), AuthUtil.getSessionUser().getUserName()});
SysUserPassword pwd = new SysUserPassword();
pwd.setUserId(userId);
pwd.setUserPassword(SysUserPasswordUtil.encoder(password));
ConvertBean.serviceModelInitialize(pwd,AuthUtil.getSessionUser());
ConvertBean.serviceModelInitialize(pwd, AuthUtil.getSessionUser());
SysUserPassword save = userPasswordRDao.save(pwd);
user.setUserLoginPasswordId(save.getId());
user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true));
ConvertBean.serviceModelUpdate(user, AuthUtil.getSessionUser().getUserName());
userService.updateSysUser(user);
}
@Override
public void updatePasswordWizoutSession(String loginName, String password, String newPwd) {
SysUser user = userService.validatePasswordByLoginNameAndReturnUser(loginName, password);
user.setUserLoginPassword(password);
userPasswordUtil.checkPasswordSave(user);
userPasswordRDao.updateByProperties(
new String[]{"userId", "isDeleted"},
new Object[]{user.getId(), CommonEnumUtil.IS_DEAL.NO.getValue()},
new String[]{"isDeleted", "modifyDatetime", "modifyUser"},
new Object[]{
CommonEnumUtil.IS_DEAL.YES.getValue(), TimeTool.getNowTime(true), loginName});
SysUserPassword pwd = new SysUserPassword();
pwd.setUserId(user.getId());
pwd.setUserPassword(SysUserPasswordUtil.encoder(newPwd));
ConvertBean.serviceModelInitialize(pwd, loginName);
SysUserPassword save = userPasswordRDao.save(pwd);
user.setUserLoginPasswordId(save.getId());
ConvertBean.serviceModelUpdate(user,AuthUtil.getSessionUser().getUserName());
user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true));
ConvertBean.serviceModelUpdate(user, loginName);
userService.updateSysUser(user);
}
}

@ -1,9 +1,9 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.core.apiservice.dao.IUserPermissionDao;
import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.EncryptTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
@ -20,11 +20,15 @@ import cn.estsh.i3plus.pojo.base.shirotoken.UserToken;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.tool.HqlPack;
import cn.estsh.i3plus.pojo.platform.bean.*;
import cn.estsh.i3plus.pojo.platform.repository.*;
import cn.estsh.i3plus.pojo.platform.repository.SysLogUserLoginRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysRefUserDepartmentRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysRefUserPositionRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysRefUserRoleRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysUserInfoRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysUserRepository;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
@ -33,6 +37,7 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.CredentialsException;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.UnknownAccountException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -42,7 +47,15 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@ -124,7 +137,6 @@ public class SysUserService implements ISysUserService {
BaseToken token = getToken(loginName, password, languageCode, loginPlatform);
SessionUser sessionUser = AuthUtil.login(token);
SysUser user = this.getSysUserByLoginName(loginName);
if (user == null) {
throw new CredentialsException("用户不存在");
}
@ -590,14 +602,15 @@ public class SysUserService implements ISysUserService {
}
// 登录名唯一教研
if (!checkSysUserEmail(user.getUserEmail(), user.getId() == null ? 0 : user.getId())) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
.setErrorDetail("邮箱已存在")
.setErrorSolution("请重新输入邮箱")
.build();
}
// FIXME 松下移除用户邮箱
// if (!checkSysUserEmail(user.getUserEmail(), user.getId() == null ? 0 : user.getId())) {
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
// .setErrorDetail("邮箱已存在")
// .setErrorSolution("请重新输入邮箱")
// .build();
// }
// 登录名唯一教研
if (!checkSysUserPhone(user.getUserPhone(), user.getId() == null ? 0 : user.getId())) {
@ -712,6 +725,24 @@ public class SysUserService implements ISysUserService {
return userRDao.findByHqlWhere(ddlPackBean);
}
@Override
public SysUser validatePasswordByLoginNameAndReturnUser(String loginName, String password) {
SysUser userDb = getSysUserByLoginName(loginName);
ValidatorBean.checkNotNull(userDb, "不存在的用户信息");
if (userDb.getUserLoginPasswordId() == null || userDb.getUserLoginPasswordId() <= 0) {
if (!userDb.getUserLoginPassword().equals(SysUserPasswordUtil.encoder(password))) {
throw new IncorrectCredentialsException("用户密码错误");
}
} else {
SysUserPassword userPassword = userPasswordService.get(userDb.getUserLoginPasswordId());
if (!userPassword.getUserPassword().equals(SysUserPasswordUtil.encoder(password))) {
throw new IncorrectCredentialsException("用户密码错误");
}
}
return userDb;
}
/**
*
*

Loading…
Cancel
Save