This commit is contained in:
xiangwbs
2017-11-05 20:15:43 +08:00
parent 3e8bdb04a0
commit f85d2a825c
11 changed files with 88 additions and 139 deletions
@@ -7,75 +7,34 @@ package com.xwbing.constant;
* 作者: xiangwb
*/
public class CommonConstant {
/**
* 验证码
*/
public static final String KEY_CAPTCHA = "captchaCode";
/**
* 顶级
*/
public static String ROOT = "root";
/**
* 密码加密
*/
public static final int SALT_SIZE = 8;
/**
* 密码加密
*/
public static int HASH_INTERATIONS = 1024;
/**
* 启用
*/
public static String ISENABLE = "Y";
/**
* 禁用
*/
public static String ISNOTENABLE = "N";
/**
* 邮件服务器配置项
*/
public static final String SYSCONFIG_EMAILCONFIGKEY = "email_config";
/**
* 服务器配置项
*/
public static final String SYSCONFIG_SERVER_TOPO = "server_topo";
/**
* 邮箱找回密码有效时间
*/
public static final String SYSCONFIG_LOOK_PASSWORD_TIME = "look_password_time";
/**
* 资源文件xml 名称
*/
public static final String RESOURCE_XML="resource.xml";
/**
* 资源文件 sql
*/
public static final String RESOURCE_SQL="resource.sql";
/**
* 资源详情xml文件
*/
public static final String RESOURCE_DETAIL_XML="resource_detail.xml";
/**
* 导出报表文件名称
*/
public static String USERREPORTFILENAME = "人员统计报表.xls";
/**
* 导出报表列名称
* 验证码
*/
public static String[] USERREPORTCOLUMNS = new String[]{"线路名称","发团人数","成人","儿童","幼儿"};
/***
* 当前登录用户
*/
public static final String SESSION_CURRENT_USER="CURRENT_USER";
/***
* 当前登录管理员用户
*/
public static final String SESSION_ADMIN_USER="ADMIN_USER";
public static final String KEY_CAPTCHA = "captcha_code";
/**
* 顶级
*/
public static final String ROOT = "root";
/**
* 启用
*/
public static final String ISENABLE = "Y";
/**
* 禁用
*/
public static final String ISNOTENABLE = "N";
/**
* 邮件服务器配置项
*/
public static final String SYSCONFIG_EMAILCONFIGKEY = "email_config";
/**
*
* 当前登录用户
*/
public static final String SESSION_CURRENT_USER = "current_user";
/**
* 当前登录用户id
*/
public static final String SESSION_CURRENT_USER_ID = "current_id";
}
@@ -24,14 +24,20 @@ public class SysConfig extends BaseEntity {
/**
* 配置项的key
*/
@NotBlank(message = "配置项的code不能为空")
@Length(min = 1, max = 50, message = "code长度为1-50")
private String code;
@NotBlank(message = "配置项的key不能为空")
@Length(min = 1, max = 50, message = "key长度为1-50")
private String key;
/**
* 配置项的值
*/
@NotBlank(message = "配置项的value不能为空")
private String value;
/**
* 配置项的描述(名称)
*/
@NotBlank(message = "配置项的name不能为空")
@Length(min = 1, max = 20, message = "value长度为1-20")
private String name;
/**
* 是否启用
*/
@@ -39,10 +45,5 @@ public class SysConfig extends BaseEntity {
@Pattern(regexp = "[Y|N]",message = "是否启用格式为Y|N")
@Column(name = "is_enable")
private String isEnable;
/**
* 配置项的描述(名称)
*/
@NotBlank(message = "配置项的name不能为空")
@Length(min = 1, max = 10, message = "value长度为1-10")
private String name;
}
@@ -22,18 +22,6 @@ import javax.validation.constraints.Pattern;
public class SysUser extends BaseEntity {
private static final long serialVersionUID = -2447528751353457021L;
public static String table = "sys_user_info";
/**
* 密码盐长度
*/
public static final int SALT_SIZE = 10;
/**
* 初始默认密码长度
*/
public static final int PWD_LENGTH = 8;
/**
* hash
*/
public static int HASH_INTERATIONS = 1024;
/**
* 用户名
*/
@@ -10,5 +10,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
* 作者: xiangwb
*/
public interface SysConfigRepository extends JpaRepository<SysConfig,String> {
SysConfig findByCode(String code);
SysConfig findByKey(String code);
}
@@ -11,7 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Objects;
/**
* 说明:
@@ -29,15 +28,15 @@ public class SysConfigService {
RestMessage result = new RestMessage();
sysConfig.setId(PassWordUtil.createId());
sysConfig.setCreateTime(new Date());
if (Objects.isNull(sysConfig)) {
if (sysConfig==null) {
throw new BusinessException("配置数据不能为空");
}
SysConfig old = findByCode(sysConfig.getCode());
if (Objects.nonNull(old)) {
throw new BusinessException(sysConfig.getCode() + "已存在");
SysConfig old = findByKey(sysConfig.getKey());
if (old!=null) {
throw new BusinessException(sysConfig.getKey() + "已存在");
}
SysConfig one = sysConfigRepository.save(sysConfig);
if (Objects.nonNull(one)) {
if (one!=null) {
result.setSuccess(true);
result.setMessage("保存配置成功");
} else {
@@ -49,8 +48,8 @@ public class SysConfigService {
public RestMessage removeByCode(String code) {
logger.info("删除配置信息");
RestMessage result = new RestMessage();
SysConfig old = findByCode(code);
if (Objects.isNull(old)) {
SysConfig old = findByKey(code);
if (old==null) {
throw new BusinessException("该配置项不存在");
}
sysConfigRepository.delete(old.getId());
@@ -59,7 +58,7 @@ public class SysConfigService {
return result;
}
public SysConfig findByCode(String code) {
return sysConfigRepository.findByCode(code);
public SysConfig findByKey(String key) {
return sysConfigRepository.findByKey(key);
}
}
@@ -16,7 +16,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* 说明:
@@ -53,12 +52,12 @@ public class UserService {
if (one == null) {
throw new BusinessException("新增用户失败");
}
SysConfig sysConfig = sysConfigService.findByCode(CommonConstant.SYSCONFIG_EMAILCONFIGKEY);
if (Objects.isNull(sysConfig)) {
SysConfig sysConfig = sysConfigService.findByKey(CommonConstant.SYSCONFIG_EMAILCONFIGKEY);
if (sysConfig==null) {
throw new BusinessException("没有查找到邮件配置项");
}
EmailModel emailModel = null;
if (StringUtils.isNotEmpty(sysConfig.getCode())) {
if (StringUtils.isNotEmpty(sysConfig.getKey())) {
JSONObject jsonObject = JSONObject.parseObject(sysConfig.getValue());
emailModel = JSONObject.toJavaObject(jsonObject, EmailModel.class);
}
@@ -134,7 +133,7 @@ public class UserService {
*
* @return
*/
public List<SysUser> findList() {
public List<SysUser> listAll() {
return userRepository.findAll();
}
@@ -143,12 +142,13 @@ public class UserService {
*
* @param newPassWord
* @param oldPassWord
* @param loginUserId
* @return
*/
public RestMessage updatePassWord(String newPassWord, String oldPassWord, String loginUserId) {
public RestMessage updatePassWord(HttpServletRequest request,String newPassWord, String oldPassWord) {
RestMessage result = new RestMessage();
SysUser sysUser = findOne(loginUserId);
HttpSession session = request.getSession();
String id = (String) session.getAttribute(CommonConstant.SESSION_CURRENT_USER_ID);
SysUser sysUser = findOne(id);
if (sysUser == null)
throw new BusinessException("该用户不存在");
boolean flag = checkPassWord(oldPassWord, sysUser.getPassword(), sysUser.getSalt());
@@ -158,7 +158,7 @@ public class UserService {
sysUser.setSalt(str[1]);
sysUser.setPassword(str[2]);
SysUser one = userRepository.save(sysUser);
if (Objects.nonNull(one)) {
if (one!=null) {
result.setMessage("更新密码成功");
result.setSuccess(true);
} else {
@@ -170,18 +170,18 @@ public class UserService {
/**
* 登录
*
* @param req
* @param request
* @param userName
* @param passWord
* @param ckeckCode
* @param checkCode
* @return
*/
public RestMessage login(HttpServletRequest req, String userName, String passWord, String ckeckCode) {
public RestMessage login(HttpServletRequest request, String userName, String passWord, String checkCode) {
RestMessage restMessage = new RestMessage();
HttpSession session = req.getSession();
HttpSession session = request.getSession();
String imgCode = (String) session.getAttribute(CommonConstant.KEY_CAPTCHA);
//验证验证码
if (!ckeckCode.equalsIgnoreCase(imgCode) || StringUtils.isEmpty(ckeckCode)) {
if (!checkCode.equalsIgnoreCase(imgCode) ) {
throw new BusinessException("验证码错误");
}
//验证账号,密码
@@ -192,6 +192,7 @@ public class UserService {
if (!flag)
throw new BusinessException("密码错误");
session.setAttribute(CommonConstant.SESSION_CURRENT_USER, userName);
session.setAttribute(CommonConstant.SESSION_CURRENT_USER_ID, user.getId());
restMessage.setSuccess(true);
restMessage.setMessage("登录成功");
return restMessage;
@@ -216,16 +217,13 @@ public class UserService {
* @return
*/
private boolean checkPassWord(String passWord, String realPassWord, String salt) {
boolean flag;
// 根据密码盐值, 解码
byte[] saltByte = EncodeUtils.hexDecode(salt);
byte[] hashPassword = Digests.sha1(passWord.getBytes(), saltByte,
SysUser.HASH_INTERATIONS);
PassWordUtil.HASH_INTERATIONS);
// 密码 数据库中密码
String validatePassWord = EncodeUtils.hexEncode(hashPassword);
//判断密码是否相同
flag = realPassWord.equals(validatePassWord);
return flag;
return realPassWord.equals(validatePassWord);
}
}
@@ -0,0 +1,6 @@
package com.xwbing.util;
public class ThreadLocalUtil {
}
@@ -102,11 +102,11 @@ public class CaptchaUtil {
CaptchaUtil tool = new CaptchaUtil();
StringBuffer code = new StringBuffer();
BufferedImage image = tool.genRandomCodeImage(code);
System.out.println("&gt;&gt;&gt; random code =: " + code);
System.out.println("&gt;&gt;&gt; random key =: " + code);
try {
// 将内存中的图片通过流动形式输出到客户端
ImageIO.write(image, "JPEG", new FileOutputStream(new File(
"random-code.jpg")));
"random-key.jpg")));
} catch (Exception e) {
e.printStackTrace();
}
@@ -34,7 +34,7 @@ public class SysConfigControl {
@ApiOperation(value = "新增", notes = "新增系统配置信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "code", value = "配置项的key,长度为1-50", paramType = "query", required = true, dataType = "string"),
@ApiImplicitParam(name = "key", value = "配置项的key,长度为1-50", paramType = "query", required = true, dataType = "string"),
@ApiImplicitParam(name = "value", value = "配置项的值", paramType = "query", required = true, dataType = "string"),
@ApiImplicitParam(name = "isEnable", value = "是否启用,格式为Y|N", paramType = "query", required = true, dataType = "string"),
@ApiImplicitParam(name = "name", value = "配置名称,长度为1-10", paramType = "query", required = true, dataType = "string")
@@ -48,11 +48,11 @@ public class SysConfigControl {
}
@ApiOperation(value = "删除", notes = "根据code删除系统配置信息")
@ApiImplicitParam(name = "code", value = "配置项的code", paramType = "query", required = true, dataType = "string")
@ApiImplicitParam(name = "key", value = "配置项的code", paramType = "query", required = true, dataType = "string")
@PostMapping("removeByCode/{code}")
public JSONObject removeByCode(@PathVariable String code) {
String logMsg = "删除系统配置信息";
log.info(logMsg + " code:{}", code);
log.info(logMsg + " key:{}", code);
if (StringUtils.isEmpty(code)) {
return JSONObjResult.toJSONObj("code不能为空");
}
@@ -61,15 +61,15 @@ public class SysConfigControl {
}
@ApiOperation(value = "查找", notes = "根据key查找系统配置信息")
@ApiImplicitParam(name = "code", value = "配置项的code", paramType = "query", required = true, dataType = "string")
@ApiImplicitParam(name = "key", value = "配置项的code", paramType = "query", required = true, dataType = "string")
@PostMapping("findByCode")
public JSONObject findByCode(@RequestParam String code) {
String logMsg = "根据code查找系统配置信息";
log.info(logMsg + " code:{}", code);
log.info(logMsg + " key:{}", code);
if (StringUtils.isEmpty(code)) {
return JSONObjResult.toJSONObj("code不能为空");
}
SysConfig one = sysConfigService.findByCode(code);
SysConfig one = sysConfigService.findByKey(code);
if (Objects.isNull(one)) {
return JSONObjResult.toJSONObj("该对象不存在");
}
@@ -67,29 +67,27 @@ public class UserControl {
@GetMapping("findList")
public JSONObject findList() {
List<SysUser> list = userService.findList();
List<SysUser> list = userService.listAll();
return JSONObjResult.toJSONObj(list, true, "");
}
@GetMapping("login")
public JSONObject login(HttpServletRequest req, @RequestParam String userName, @RequestParam String passWord, String ckeckCode) {
if (StringUtils.isEmpty(userName))
return JSONObjResult.toJSONObj("用户名不能为空");
if (StringUtils.isEmpty(passWord))
return JSONObjResult.toJSONObj("密码不能为空");
RestMessage login = userService.login(req, userName, passWord, ckeckCode);
public JSONObject login(HttpServletRequest req, @RequestParam String userName, @RequestParam String passWord,@RequestParam String checkCode) {
if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(passWord))
return JSONObjResult.toJSONObj("用户名或密码不能为空");
if (StringUtils.isEmpty(checkCode) )
return JSONObjResult.toJSONObj("请输入验证码");
RestMessage login = userService.login(req, userName, passWord, checkCode);
return JSONObjResult.toJSONObj(login);
}
@GetMapping("updatePassWord")
public JSONObject updatePassWord(@RequestParam String newPassWord, @RequestParam String oldPassWord, @RequestParam String loginUserId) {
public JSONObject updatePassWord(HttpServletRequest request, @RequestParam String newPassWord, @RequestParam String oldPassWord) {
if (StringUtils.isEmpty(newPassWord))
return JSONObjResult.toJSONObj("新密码不能为空");
if (StringUtils.isEmpty(oldPassWord))
return JSONObjResult.toJSONObj("旧密码不能为空");
if (StringUtils.isEmpty(newPassWord))
return JSONObjResult.toJSONObj("用户id不能为空");
RestMessage restMessage = userService.updatePassWord(newPassWord, oldPassWord, loginUserId);
RestMessage restMessage = userService.updatePassWord(request, newPassWord, oldPassWord);
return JSONObjResult.toJSONObj(restMessage);
}
}
+1 -1
View File
@@ -2,7 +2,7 @@
server:
port: 8088
session:
timeout: 30
timeout: 60
context-path: /
#spring