yun-zuoyi
nies 3 years ago
commit a76b135771

@ -38,4 +38,12 @@ public interface ISysUserPasswordService extends ICrudService<SysUserPassword> {
@ApiOperation(value = "根据密码反查") @ApiOperation(value = "根据密码反查")
public List<SysUserPassword> findPasswordByPassword(String password); public List<SysUserPassword> findPasswordByPassword(String password);
/**
* id,
* @param pwdId
* @param newPwd
*/
@ApiOperation(value = "供应商忘记密码")
void updatePasswordByPwdIdAndNewPwd(Long pwdId,String newPwd);
} }

@ -85,6 +85,14 @@ public interface ISysUserService {
void updateSysUserPassword(Long userId, String password, String newPwd) throws Exception; void updateSysUserPassword(Long userId, String password, String newPwd) throws Exception;
/** /**
*
* @param loginName
* @param password
*/
@ApiOperation(value = "供应商修改密码",notes = "供应商修改密码")
void updateSysUserPwdByLoginName(String loginName,String password);
/**
* *
* *
* @param userId * @param userId
@ -259,6 +267,15 @@ public interface ISysUserService {
SysUser getSysUserByLoginName(String loginName); SysUser getSysUserByLoginName(String loginName);
/** /**
* +email
* @param loginName
* @param email
* @return
*/
@ApiOperation(value = "获取账号信息",notes = "查询用户信息-根据登录名称+邮箱查询")
SysUser getSysUserByLoginNameAndEmail(String loginName,String email);
/**
* *
* *
* @param email * @param email

@ -5,6 +5,7 @@ import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService;
import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginStrategyService; import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginStrategyService;
import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.core.apiservice.controller.busi.*; import cn.estsh.i3plus.core.apiservice.controller.busi.*;
import cn.estsh.i3plus.core.apiservice.util.MailUtil;
import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
@ -15,13 +16,18 @@ import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.annotation.AnnoIgnoreLog; import cn.estsh.i3plus.pojo.base.annotation.AnnoIgnoreLog;
import cn.estsh.i3plus.pojo.base.bean.*; import cn.estsh.i3plus.pojo.base.bean.BaseConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
import cn.estsh.i3plus.pojo.base.bean.BaseThreadLocal;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.model.common.CloudPagerModel; import cn.estsh.i3plus.pojo.model.common.CloudPagerModel;
import cn.estsh.i3plus.pojo.model.common.ImppEmail;
import cn.estsh.i3plus.pojo.model.common.ImppSmsContent; import cn.estsh.i3plus.pojo.model.common.ImppSmsContent;
import cn.estsh.i3plus.pojo.model.common.UserModel;
import cn.estsh.i3plus.pojo.model.license.ImppLicense; import cn.estsh.i3plus.pojo.model.license.ImppLicense;
import cn.estsh.i3plus.pojo.model.platform.SysLoginModel; import cn.estsh.i3plus.pojo.model.platform.SysLoginModel;
import cn.estsh.i3plus.pojo.model.platform.SysRoleModel; import cn.estsh.i3plus.pojo.model.platform.SysRoleModel;
@ -33,15 +39,9 @@ import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.fileservice.ImppFileService;
import cn.estsh.impp.framework.boot.license.ImppLicenseTool; import cn.estsh.impp.framework.boot.license.ImppLicenseTool;
import cn.estsh.impp.framework.boot.license.serviceimpl.ImppLicenseDecoder; import cn.estsh.impp.framework.boot.license.serviceimpl.ImppLicenseDecoder;
import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.*;
import cn.estsh.impp.framework.boot.util.LocaleUtils;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dingtalk.api.response.OapiV2UserGetResponse; import com.dingtalk.api.response.OapiV2UserGetResponse;
import com.google.common.cache.Cache; import com.google.common.cache.Cache;
@ -49,42 +49,21 @@ import com.google.common.cache.CacheBuilder;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.*;
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;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.*;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* @Description : * @Description :
@ -107,6 +86,9 @@ public class WhiteController extends CoreBaseController {
private SysUserInfoController sysUserInfoController; private SysUserInfoController sysUserInfoController;
@Autowired @Autowired
private ISysUserService sysUserService;
@Autowired
private ISysLocaleLanguageService sysLocaleLanguageService; private ISysLocaleLanguageService sysLocaleLanguageService;
@Autowired @Autowired
@ -972,6 +954,55 @@ public class WhiteController extends CoreBaseController {
return sysUserInfoController.querySysUserInfo(cloudPagerModel.getObj(), cloudPagerModel.getPager()); return sysUserInfoController.querySysUserInfo(cloudPagerModel.getObj(), cloudPagerModel.getPager());
} }
/**
*
* @param sysUser
* @return
*/
@PostMapping(value = "/user/query-user")
@ApiOperation(value = "根据条件查询单个用户信息",notes = "根据条件查询单个用户信息")
public ResultBean querySysUser(@RequestBody SysUser sysUser){
ValidatorBean.checkNotNull(sysUser.getUserLoginName(),"用户登录名不能为空!");
ValidatorBean.checkNotNull(sysUser.getUserEmail(),"用户email不能为空!");
SysUser user = null;
try {
user = sysUserService.getSysUserByLoginNameAndEmail(sysUser.getUserLoginName(), sysUser.getUserEmail());
} catch (ImppBusiException e) {
return ResultBean.fail(e.getMessage());
}
return ResultBean.success("查询成功!").setResultObject(user);
}
@PostMapping(value = "/sendEmail")
@ApiOperation(value = "无需登录,发送邮件")
public ResultBean sendEmail(@RequestBody ImppEmail imppEmail){
ValidatorBean.checkNotNull(imppEmail.getContent(),"消息内容不能为空");
ValidatorBean.checkNotNull(imppEmail.getEmail(),"email地址不能为空");
try {
MailUtil mailUtil = new MailUtil();
mailUtil.init();
mailUtil.setContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.HTML.getDescription());
mailUtil.setNick(imppEmail.getNick());
mailUtil.setSubject(imppEmail.getSubject());
mailUtil.setTo(imppEmail.getEmail());
mailUtil.setBody(imppEmail.getContent());
mailUtil.send();
} catch (Exception e) {
LOGGER.error("发送邮件:{}失败:{}",imppEmail.getEmail(),e.getMessage());
return ResultBean.fail("发送失败,请检查邮箱是否输入正确!");
}
return ResultBean.success("验证码已发送!");
}
@PostMapping(value = "/update-vendor-pwd")
@ApiOperation(value = "忘记密码")
public ResultBean updateVendorPwd(@RequestBody UserModel userModel){
ValidatorBean.checkNotNull(userModel.getLoginName(),"登录名不能为空!");
ValidatorBean.checkNotNull(userModel.getPassword(),"密码不能为空!");
sysUserService.updateSysUserPwdByLoginName(userModel.getLoginName(),userModel.getPassword());
return ResultBean.success("修改成功!");
}
@PostMapping("/sendSms") @PostMapping("/sendSms")
@ApiOperation("无需登录 发送短信") @ApiOperation("无需登录 发送短信")
public ResultBean sendSms(@RequestBody ImppSmsContent imppSmsContent){ public ResultBean sendSms(@RequestBody ImppSmsContent imppSmsContent){

@ -181,4 +181,16 @@ public class SysUserSavePasswordService extends CrudService<SysUserPassword> imp
DdlPreparedPack.getStringEqualPack(password,"userPassword",ddlPackBean); DdlPreparedPack.getStringEqualPack(password,"userPassword",ddlPackBean);
return userPasswordRDao.findByHqlWhere(ddlPackBean); return userPasswordRDao.findByHqlWhere(ddlPackBean);
} }
@Override
public void updatePasswordByPwdIdAndNewPwd(Long pwdId, String newPwd) {
try {
SysUserPassword sup = userPasswordRDao.getById(pwdId);
sup.setUserPassword(SysUserPasswordUtil.encoder(newPwd));
sup.setModifyDatetime(TimeTool.getNowTime(true));
userPasswordRDao.update(sup);
} catch (Exception e) {
throw ImppExceptionBuilder.newInstance().setErrorDetail(e.getMessage()).build();
}
}
} }

@ -360,6 +360,25 @@ public class SysUserService implements ISysUserService {
} }
@Override @Override
public void updateSysUserPwdByLoginName(String loginName, String password) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getStringEqualPack(loginName,"userLoginName",ddlPackBean);
List<SysUser> sysUsers = userRDao.findByHqlWhere(ddlPackBean);
if (Objects.isNull(sysUsers)){
throw ImppExceptionBuilder.newInstance().setErrorDetail("修改密码失败,账号在系统中不存在!").build();
}
if (sysUsers.size() > 1){
throw ImppExceptionBuilder.newInstance().setErrorDetail("登录名不唯一,修改失败!").build();
}
SysUser sysUser = sysUsers.get(0);
Long pwdId = sysUser.getUserLoginPasswordId();
userPasswordService.updatePasswordByPwdIdAndNewPwd(pwdId,password);
}
@Override
@ApiOperation(value = "刷新账号", notes = "刷新账号登录信息") @ApiOperation(value = "刷新账号", notes = "刷新账号登录信息")
public void refreshUserLoginInformation(Long userId) { public void refreshUserLoginInformation(Long userId) {
SysUser user = userRDao.getById(userId); SysUser user = userRDao.getById(userId);
@ -696,6 +715,24 @@ public class SysUserService implements ISysUserService {
} }
@Override @Override
public SysUser getSysUserByLoginNameAndEmail(String loginName, String email) {
LOGGER.debug("平台用户 SYS_USER find By Login Name :{}and email:{}", loginName,email);
SysUser sysUser = userRDao.getByProperty(new String[]{"userLoginName", "isValid", "isDeleted"},
new Object[]{loginName, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()});
if (!Objects.isNull(sysUser)){
String emails = sysUser.getUserEmail();
if (Strings.isNotBlank(emails)){
List<String> emailList = Arrays.asList(emails.split(","));
if (emailList.contains(email)){
return sysUser;
}
}
}
throw ImppExceptionBuilder.newInstance().setErrorDetail("账号与邮箱不匹配!").build();
}
@Override
@ApiOperation(value = "账号查询", notes = "根据邮箱查询用户信息") @ApiOperation(value = "账号查询", notes = "根据邮箱查询用户信息")
public SysUser getSysUserByEmail(String email) { public SysUser getSysUserByEmail(String email) {
return userRDao.getByProperty(new String[]{"userEmail", "isValid"}, return userRDao.getByProperty(new String[]{"userEmail", "isValid"},

@ -396,13 +396,24 @@ public class MailUtil {
mailConfig.setMailPassword("Aa135790"); mailConfig.setMailPassword("Aa135790");
MailUtil mailUtil = new MailUtil(); MailUtil mailUtil = new MailUtil();
mailUtil.init(mailConfig); mailUtil.init(mailConfig);
mailUtil.setNick("ns"); mailUtil.setNick("SFP验证码");
mailUtil.setTo("13298408382@163.com"); mailUtil.setTo("castle.zang@estsh.com");
// mailUtil.setTo("ying.he.zang@estsh.com");
mailUtil.setContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.TEXT.getDescription()); mailUtil.setContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.TEXT.getDescription());
mailUtil.setSubject("test"); mailUtil.setSubject("SFP验证码");
mailUtil.setBody("666"); mailUtil.setBody(
File file = new File("C:\\Users\\ns\\Desktop\\test.txt"); "供应商账号(登录名称),您好!\n" +
mailUtil.addAttachment(file); "\n" +
"您登录账号“供应商账号(登录名称)”修改密码所需的验证码为: “XXXXX“\n"+
"\n" +
"您会收到这封自动产生的邮件,是由于有人在供应商端试图通过网络设备修改您的账户密码,且提供了正确的账户名称与邮箱。\n" +
"验证码是修改密码所必需的。没有人能够不访问这封电子邮件就修改您的账户密码。\n" +
"\n" +
"\n" +
"\n" +
"\n" +
"祝您愉快,\n" +
"SFP团队");
mailUtil.send(); mailUtil.send();
} }

Loading…
Cancel
Save