Compare commits

..

16 Commits

@ -31,8 +31,9 @@
<jstl.version>1.2</jstl.version> <jstl.version>1.2</jstl.version>
<mybatis.version>3.4.6</mybatis.version> <mybatis.version>3.4.6</mybatis.version>
<mybatis.spring.version>1.3.2</mybatis.spring.version> <mybatis.spring.version>1.3.2</mybatis.spring.version>
<mysql.version>5.1.32</mysql.version> <mysql.version>8.0.11</mysql.version>
<log4j2.version>2.15.0</log4j2.version> <!--<mysql.version>5.1.32</mysql.version>-->
<slf4j.version>1.6.4</slf4j.version>
<jackson.version>2.9.4</jackson.version> <jackson.version>2.9.4</jackson.version>
<druid.version>1.0.9</druid.version> <druid.version>1.0.9</druid.version>
<httpclient.version>4.3.5</httpclient.version> <httpclient.version>4.3.5</httpclient.version>
@ -101,17 +102,10 @@
<version>${mybatis.version}</version> <version>${mybatis.version}</version>
</dependency> </dependency>
<!-- 日志处理 --> <!-- 日志处理 -->
<!-- Web项目需添加 -->
<dependency> <dependency>
<groupId>org.apache.logging.log4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>log4j-web</artifactId> <artifactId>slf4j-log4j12</artifactId>
<version>${log4j2.version}</version> <version>${slf4j.version}</version>
</dependency>
<!--用于与slf4j保持桥接-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
</dependency> </dependency>
<!-- 连接池 --> <!-- 连接池 -->
<dependency> <dependency>
@ -133,6 +127,11 @@
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>
<version>${alibabaJson.version}</version> <version>${alibabaJson.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2.6</version>
</dependency>
<!--fasterJson--> <!--fasterJson-->
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>

@ -24,6 +24,23 @@
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency>
<groupId>com.ramostear</groupId>
<artifactId>Happy-Captcha</artifactId>
<version>1.0.1</version>
</dependency>
<!-- redis 依赖-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>com.manage</groupId> <groupId>com.manage</groupId>
<artifactId>power-service</artifactId> <artifactId>power-service</artifactId>
@ -36,6 +53,13 @@
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
<!-- servlet --> <!-- servlet -->
<dependency> <dependency>
<groupId>javax.servlet</groupId> <groupId>javax.servlet</groupId>
@ -123,15 +147,19 @@
<artifactId>commons-fileupload</artifactId> <artifactId>commons-fileupload</artifactId>
</dependency> </dependency>
<!-- 日志处理 --> <!-- 日志处理 -->
<!-- Web项目需添加 -->
<dependency> <dependency>
<groupId>org.apache.logging.log4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>log4j-web</artifactId> <artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.13</version>
</dependency> </dependency>
<!--用于与slf4j保持桥接-->
<dependency> <dependency>
<groupId>org.apache.logging.log4j</groupId> <groupId>org.apache.httpcomponents</groupId>
<artifactId>log4j-slf4j-impl</artifactId> <artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>

@ -0,0 +1,53 @@
package com.manage.bean;
public class LoginVoRedis {
private String userName;
private String password;
private int loginFailureCount;
private String loginTime;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getLoginFailureCount() {
return loginFailureCount;
}
public void setLoginFailureCount(int loginFailureCount) {
this.loginFailureCount = loginFailureCount;
}
public String getLoginTime() {
return loginTime;
}
public void setLoginTime(String loginTime) {
this.loginTime = loginTime;
}
@Override
public String toString() {
return "LoginVo_Redis{" +
"username='" + userName + '\'' +
", password='" + password + '\'' +
", loginFailureCount=" + loginFailureCount +
", loginTime='" + loginTime + '\'' +
'}';
}
}

@ -0,0 +1,40 @@
package com.manage.bean;
public class QRcode {
int loginTypeBitValue;
private int type;
private String projectUid;
private String applicationId;
public int getLoginTypeBitValue() {
return loginTypeBitValue;
}
public void setLoginTypeBitValue(int loginTypeBitValue) {
this.loginTypeBitValue = loginTypeBitValue;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getProjectUid() {
return projectUid;
}
public void setProjectUid(String projectUid) {
this.projectUid = projectUid;
}
public String getApplicationId() {
return applicationId;
}
public void setApplicationId(String applicationId) {
this.applicationId = applicationId;
}
}

@ -0,0 +1,23 @@
package com.manage.bean;
public class QrBean {
private String qrCodeBase64;
private String qrCodeIdentity;
public String getQrCodeBase64() {
return qrCodeBase64;
}
public void setQrCodeBase64(String qrCodeBase64) {
this.qrCodeBase64 = qrCodeBase64;
}
public String getQrCodeIdentity() {
return qrCodeIdentity;
}
public void setQrCodeIdentity(String qrCodeIdentity) {
this.qrCodeIdentity = qrCodeIdentity;
}
}

@ -0,0 +1,14 @@
package com.manage.bean;
public class ScanCode {
private String qrCodeIdentity;
public String getQrCodeIdentity() {
return qrCodeIdentity;
}
public void setQrCodeIdentity(String qrCodeIdentity) {
this.qrCodeIdentity = qrCodeIdentity;
}
}

@ -0,0 +1,22 @@
package com.manage.bean;
public class ScanCodeRes {
private String userToken;
private String verifyStatus;
public String getUserToken() {
return userToken;
}
public void setUserToken(String userToken) {
this.userToken = userToken;
}
public String getVerifyStatus() {
return verifyStatus;
}
public void setVerifyStatus(String verifyStatus) {
this.verifyStatus = verifyStatus;
}
}

@ -0,0 +1,13 @@
package com.manage.bean;
public class UserCode {
private String userToken;
public String getUserToken() {
return userToken;
}
public void setUserToken(String userToken) {
this.userToken = userToken;
}
}

@ -0,0 +1,31 @@
package com.manage.bean;
public class UserCodeRes {
private String msg;
private String uid;
private Integer msgType;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public Integer getMsgType() {
return msgType;
}
public void setMsgType(Integer msgType) {
this.msgType = msgType;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}

@ -0,0 +1,65 @@
package com.manage.controller;
import com.manage.util.DrawCheckcode;
import com.ramostear.captcha.HappyCaptcha;
import com.ramostear.captcha.support.CaptchaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
import static java.lang.System.*;
@Controller
@RequestMapping("/checkController")
public class CheckcodeController {
@RequestMapping("/check")
@ResponseBody
public String checkcodeCheck(String codeClient, HttpServletRequest request){
String codeServer = (String)request.getSession().getAttribute("CHECKCODE");
if (codeClient.equals(codeServer)){
return "验证码正确";
}else{
return "验证码错误";
}
}
@RequestMapping("/checkcode")
public void checkcodeMake(HttpServletResponse response, HttpServletRequest request) throws IOException {
//画验证码
DrawCheckcode drawCheckcode = new DrawCheckcode();
BufferedImage image = drawCheckcode.doDraw();
//设置响应头,防止缓存
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.setHeader("Expires","0");
//将验证码的值保存在session中以便校验
request.getSession().setAttribute("CHECKCODE",drawCheckcode.getCheckCode());
ServletOutputStream outputStream = response.getOutputStream();
ImageIO.write(image,"jpeg",outputStream);
outputStream.flush(); //清空缓冲区数据
outputStream.close(); //关闭流
}
@RequestMapping(value="captcha")
@ResponseBody
public void happyCaptcha(HttpServletRequest request, HttpServletResponse response){
out.println("======生成一次验证码======");
HappyCaptcha.require(request,response).type(CaptchaType.NUMBER).build().finish();
}
}

@ -1,10 +1,12 @@
package com.manage.controller; package com.manage.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.manage.bean.*;
import com.manage.dao.Power_NoticeMapper; import com.manage.dao.Power_NoticeMapper;
import com.manage.dao.Power_UserMapper; import com.manage.dao.Power_UserMapper;
import com.manage.encrypt.Base64;
import com.manage.encrypt.MD5;
import com.manage.entity.*; import com.manage.entity.*;
import com.manage.service.*; import com.manage.service.*;
import com.manage.service.cache.Cache; import com.manage.service.cache.Cache;
@ -12,19 +14,33 @@ import com.manage.service.cache.CacheManager;
import com.manage.service.ipml.Power_NoticeServiceImpl; import com.manage.service.ipml.Power_NoticeServiceImpl;
import com.manage.service.webSocket.WsPool; import com.manage.service.webSocket.WsPool;
import com.manage.util.ActionScopeUtils; import com.manage.util.ActionScopeUtils;
import com.manage.util.DateUtils;
import com.manage.util.ExceptionPrintUtil; import com.manage.util.ExceptionPrintUtil;
import com.manage.util.Msg; import com.manage.util.Msg;
import com.manage.util.MyCookieUtil;
import com.manage.vo.*; import com.manage.vo.*;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*; import java.util.*;
/** /**
@ -46,9 +62,13 @@ public class FontController {
private String STR_SPLIT; private String STR_SPLIT;
@Autowired @Autowired
private PowerService powerService; private PowerService powerService;
@Value("${sysFlag}")
private Integer sysFlag;
@Autowired @Autowired
private User_Dept_MenuService userDeptMenuService; private User_Dept_MenuService userDeptMenuService;
@Autowired @Autowired
private LogService logService;
@Autowired
private Power_NoticeMapper powerNoticeMapper; private Power_NoticeMapper powerNoticeMapper;
@Autowired @Autowired
private Power_UserMapper userMapper; private Power_UserMapper userMapper;
@ -60,8 +80,20 @@ public class FontController {
private long TOKEN_EXPIRE_TIME; private long TOKEN_EXPIRE_TIME;
@Autowired @Autowired
private Power_MenuService powerMenuService; private Power_MenuService powerMenuService;
@Value("${EMRMEDICALRECORD_IP}")
private String ip;
@Value("${EMRMEDICALRECORD_SYSFLAG}")
private String recordAddress;
@Value("${EMRMEDICALRECORD_PORT}")
private String port;
@Value("${POWER_PORT}")
private String POWER_PORT;
@Autowired @Autowired
private Power_DeptService power_deptService; private Power_DeptService power_deptService;
@Autowired
private Power_UserService power_userService;
@Value("${EMRMEDICALRECORD_URLHEAD}")
private String EMRMEDICALRECORD_URLHEAD;
/** /**
* 2.1 * 2.1
@ -557,4 +589,317 @@ public class FontController {
WsPool.sendMessageToAll(message.getSysFlag() + "_" + message.getUserId(), message.getTitle() + STR_SPLIT + message.getContent() + STR_SPLIT + message.getTypeFlag()); WsPool.sendMessageToAll(message.getSysFlag() + "_" + message.getUserId(), message.getTitle() + STR_SPLIT + message.getContent() + STR_SPLIT + message.getTypeFlag());
return Msg.success(); return Msg.success();
} }
/**
*
* @return
* @throws
*/
@RequestMapping(value="getQRcode")
@ResponseBody
public QrBean getQRcode(QRcode qRcode, HttpServletRequest request){
// 获得Http客户端
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
// 创建Post请求
HttpPost httpPost = new HttpPost("http://192.168.1.212:8080/cloudkeyserver/api/login/qrcode/nostatus/2CKV1");
//json格式转换
String jsonString = JSON.toJSONString(qRcode);
StringEntity entity = new StringEntity(jsonString, "UTF-8");
// post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
httpPost.setEntity(entity);
httpPost.setHeader("Content-Type", "application/json;charset=utf8");
// 响应模型
CloseableHttpResponse response = null;
HttpEntity responseEntity=null;
String s ="";
QrBean qrBean=new QrBean();
try {
// 由客户端执行(发送)Post请求
response = httpClient.execute(httpPost);
// 从响应模型中获取响应实体
responseEntity = response.getEntity();
System.out.println("响应状态为:" + response.getStatusLine());
if (responseEntity != null) {
JSONObject jsonObject = JSONObject.parseObject(EntityUtils.toString(responseEntity));
String contents = jsonObject.getString("contents");
JSONObject contentsObject = JSONObject.parseObject(contents);
String qrCodeIdentity = contentsObject.getString("qrCodeIdentity");
JSONArray qrCodes = contentsObject.getJSONArray("qrCodes");
String qrCodeBase64 = qrCodes.getJSONObject(0).get("qrCodeBase64").toString();
qrBean.setQrCodeBase64(qrCodeBase64);
qrBean.setQrCodeIdentity(qrCodeIdentity);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return qrBean;
}
/**
* userToken
* @return
* @throws
*/
@RequestMapping(value="getScanCode")
@ResponseBody
public ScanCodeRes getQRcode(ScanCode scanCode, HttpServletRequest request){
System.out.println("scanCode123::::"+scanCode.getQrCodeIdentity());
// 获得Http客户端
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
// 创建Post请求
HttpPost httpPost = new HttpPost("http://192.168.1.212:8080/cloudkeyserver/api/qrcode/status");
//json格式转换
String jsonString = JSON.toJSONString(scanCode);
StringEntity entity = new StringEntity(jsonString, "UTF-8");
// post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
httpPost.setEntity(entity);
httpPost.setHeader("Content-Type", "application/json;charset=utf8");
// 响应模型
CloseableHttpResponse response = null;
HttpEntity responseEntity=null;
ScanCodeRes scanCodeRes=new ScanCodeRes();
try {
// 由客户端执行(发送)Post请求
response = httpClient.execute(httpPost);
// 从响应模型中获取响应实体
responseEntity = response.getEntity();
System.out.println("responseEntity::::"+responseEntity);
System.out.println("响应状态为:" + response.getStatusLine());
if (responseEntity != null) {
JSONObject jsonObject = JSONObject.parseObject(EntityUtils.toString(responseEntity));
String contents = jsonObject.getString("contents");
JSONObject contentsObject = JSONObject.parseObject(contents);
String userToken = contentsObject.getString("userToken");
String verifyStatus = contentsObject.getString("verifyStatus");
scanCodeRes.setUserToken(userToken);
scanCodeRes.setVerifyStatus(verifyStatus);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return scanCodeRes;
}
/**
*
* @return
* @throws
*/
@RequestMapping(value="getUserInfo")
@ResponseBody
public UserCodeRes getUserInfo(UserCode userCode, HttpServletRequest request){
// 获得Http客户端
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
// 创建Post请求
HttpPost httpPost = new HttpPost("http://192.168.1.212:8080/cloudkeyserver/api/oprinfo/search/all");
//json格式转换
String jsonString = JSON.toJSONString(userCode);
StringEntity entity = new StringEntity(jsonString, "UTF-8");
// post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
httpPost.setEntity(entity);
httpPost.setHeader("Content-Type", "application/json;charset=utf8");
// 响应模型
CloseableHttpResponse response = null;
HttpEntity responseEntity=null;
UserCodeRes userCodeRes =new UserCodeRes();
try {
// 由客户端执行(发送)Post请求
response = httpClient.execute(httpPost);
// 从响应模型中获取响应实体
responseEntity = response.getEntity();
System.out.println("responseEntity::::"+responseEntity);
System.out.println("响应状态为:" + response.getStatusLine());
if (responseEntity != null) {
JSONObject jsonObject = JSONObject.parseObject(EntityUtils.toString(responseEntity));
String responseResult = jsonObject.getString("responseResult");
JSONObject responseResultObject = JSONObject.parseObject(responseResult);
String msg = responseResultObject.getString("msg");
String contents = jsonObject.getString("contents");
JSONObject contentsObject = JSONObject.parseObject(contents);
String uid = contentsObject.getString("uid");
userCodeRes.setMsg(msg);
userCodeRes.setUid(uid);
if (msg.equals("成功")){
userCodeRes.setMsgType(1);
}else {
userCodeRes.setMsgType(2);
}
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return userCodeRes;
}
@RequestMapping(value = "qRCodeLogin",method = RequestMethod.POST)
@ResponseBody
public Msg qRCodeLogin(Power_User powerUser, HttpServletResponse response, HttpServletRequest request, Model model){
try {
Power_UserVo user = power_userService.findUserName(powerUser);
//添加进操作日志
Power_Log log = new Power_Log();
if(user != null){
//设置token缓存
String token = UUID.randomUUID().toString();
CacheManager.addExcCount("noExc");
List<Power_Menu> list = null;
List<User_Dept_Menu> menuList = new ArrayList<>();
Set<String> menus = new LinkedHashSet<>();
if (user.getRoleId().equals(0) || user.getRoleId().equals(-100)) {
list = powerMenuService.queryAllPowerMenu(null,user.getRoleId());
} else {
list = powerMenuService.selectUserAndRoleMenuListPower(user.getUserId(),null);
}
if(null != list && !list.isEmpty()){
for (Power_Menu powerMenu : list) {
User_Dept_Menu deptMenu = new User_Dept_Menu();
String menuUrl = powerMenu.getMenuUrl();
if (StringUtils.isNotBlank(menuUrl)) {
BeanUtils.copyProperties(powerMenu, deptMenu);
deptMenu.setMethodParent(powerMenu.getParentId());
menuList.add(deptMenu);
}
if (StringUtils.isNotBlank(powerMenu.getMethod())) {
menus.add(powerMenu.getMenuUrl());
}
}
}
user.setMenuList(menuList);
user.setMenus(menus);
//设置科室
StringBuilder powerDepts = new StringBuilder();
List<Power_Dept> powerDeptsList = power_deptService.selectByPrimaryKeys(user.getDeptId());
for(int j=0;j<powerDeptsList.size();j++){
if(j<powerDeptsList.size()-1){
powerDepts.append(powerDeptsList.get(j).getDeptName()).append(",");
}else{
powerDepts.append(powerDeptsList.get(j).getDeptName());
}
}
Integer roleId = user.getRoleId();
if(null != roleId && roleId != 0 && roleId != -100){
user.setRemark(powerDepts.toString());
}
//清除用户登录错误次数缓存
CacheManager.clearOnly(powerUser.getUserName());
//设置进缓存
CacheManager.putCache(token,new Cache(user,System.currentTimeMillis(),TOKEN_EXPIRE_TIME*1000));
ActionScopeUtils.setSessionAttribute("token",token,Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME)));
ActionScopeUtils.setSessionAttribute("CURRENT_USER",user,Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME)));
//单点登录跳转
String url = "";
if(sysFlag == 2){
url = EMRMEDICALRECORD_URLHEAD+"/login?token="+token+"&userName="+user.getUserName()+"&flag=1";
}else{
url = "http://"+ip+":"+POWER_PORT+"/power/gatewayPage";
}
return Msg.success().add("url",url);
}else{
//登录失败
Integer wrongNum = 1;
Cache cache = CacheManager.getCacheInfo(powerUser.getUserName());
if(cache != null){
//缓存中错误次数
Integer currentNum = (Integer)cache.getValue();
//叠加1
wrongNum += currentNum;
}
//添加缓存
CacheManager.putCache(powerUser.getUserName(),new Cache(wrongNum));
log.setCreater(powerUser.getUserName());
log.setLogTitle("登录");
log.setLogContent("用户密码错误");
log.setRemark("已错误【"+wrongNum+"】次");
logService.insert(log);
request.setAttribute("msg", "用户名或密码不正确");
}
}catch (Exception e){
e.printStackTrace();
CacheManager.addExcCount("exc");
}
return null;
}
/**
* @description:
* @author linjj
* @date: 2023/7/10 16:43
*/
@RequestMapping(value = "updatePassword")
public String updatePassword(Model model , HttpServletRequest request){
return"/userDir/updatePassword1";
}
/**
* @description:
* @params: powerUser
* @author linjj
* @date: 2023/7/26 10:15
*/
@RequestMapping(value = "PrintLogin", method = RequestMethod.POST)
@ResponseBody
public Msg login(Power_User powerUser, HttpServletResponse response, HttpServletRequest request, Model model) {
Power_UserVo user = power_userService.findPowerUserByUserNameAndUserPwd(powerUser);
if (user==null){
return Msg.errorMessage();
}
return Msg.correctMessage();
}
@RequestMapping(value = "text")
public String textPage(){
throw new RuntimeException("出现了一个异常");
}
} }

@ -15,15 +15,23 @@ package com.manage.controller;
import com.alibaba.fastjson.support.spring.FastJsonJsonView; import com.alibaba.fastjson.support.spring.FastJsonJsonView;
import com.manage.util.ExceptionPrintUtil; import com.manage.util.ExceptionPrintUtil;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.NoHandlerFoundException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ControllerAdvice @ControllerAdvice
public class GlobalExceptionHandler { public class GlobalExceptionHandler {
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ModelAndView runtimeHandler404(Exception e) {
return return404(e, "服务器出错了,请联系系统管理员");
}
@ExceptionHandler(value = Exception.class)//指定拦截的异常 @ExceptionHandler(value = Exception.class)//指定拦截的异常
public ModelAndView errorHandler(Exception e) { public ModelAndView errorHandler(Exception e) {
@ -35,6 +43,9 @@ public class GlobalExceptionHandler {
return returnMv(e, "服务器出错了,请联系系统管理员"); return returnMv(e, "服务器出错了,请联系系统管理员");
} }
private ModelAndView returnMv(Exception e, String msg) { private ModelAndView returnMv(Exception e, String msg) {
ModelAndView mv = new ModelAndView(); ModelAndView mv = new ModelAndView();
/* 使用FastJson提供的FastJsonJsonView视图返回不需要捕获异常 */ /* 使用FastJson提供的FastJsonJsonView视图返回不需要捕获异常 */
@ -48,4 +59,21 @@ public class GlobalExceptionHandler {
e.printStackTrace(); e.printStackTrace();
return mv; return mv;
} }
private ModelAndView return404(Exception e, String msg) {
ModelAndView mv = new ModelAndView();
/* 使用FastJson提供的FastJsonJsonView视图返回不需要捕获异常 */
FastJsonJsonView view = new FastJsonJsonView();
Map<String, Object> attributes = new HashMap<>(1);
attributes.put("code", "404");
attributes.put("msg", msg);
view.setAttributesMap(attributes);
mv.setView(view);
ExceptionPrintUtil.printException(e);
e.printStackTrace();
return mv;
}
} }

@ -0,0 +1,69 @@
package com.manage.controller;
import org.springframework.core.io.support.PropertiesLoaderUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.io.IOException;
import java.util.Properties;
public class JedisPoolUtil {
private static volatile JedisPool jedisPool = null;
// 获得资源包
private static Properties properties;
static {
try {
properties = PropertiesLoaderUtils.loadAllProperties("redis.properties");
} catch (IOException e) {
e.printStackTrace();
}
}
private static String host = properties.getProperty("redis.host");
private static Integer port = Integer.valueOf(properties.getProperty("redis.port"));
// private static String auth = properties.getProperty("redis.auth");
private static Integer maxTotal = Integer.valueOf(properties.getProperty("redis.maxTotal"));
private static Integer maxWait = Integer.valueOf(properties.getProperty("redis.maxWait"));
private static Integer timeout = Integer.valueOf(properties.getProperty("redis.timeOut"));
private static Integer maxIdle = Integer.valueOf(properties.getProperty("redis.maxIdle"));
private static Boolean testOnBorrow = Boolean.valueOf(properties.getProperty("redis.testOnBorrow"));
private JedisPoolUtil() {};
public static JedisPool getJedisPoolInstance() {
synchronized (JedisPoolUtil.class) {
if (jedisPool == null) {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(maxTotal);
poolConfig.setMaxIdle(maxIdle);
poolConfig.setMaxWaitMillis(maxWait);
poolConfig.setTestOnBorrow(testOnBorrow);
jedisPool = new JedisPool(poolConfig, host,port,timeout);
}
}
return jedisPool;
}
//释放回池子
public static void close(Jedis jedis){
if(jedis != null){
if (jedis.isConnected()) {
try {
System.out.println("退出" + jedis.toString() + ":" + jedis.quit());
jedis.disconnect();
} catch (Exception e) {
System.out.println("退出失败");
e.printStackTrace();
}
}
jedis.close();
}
}
}

@ -1,16 +1,21 @@
package com.manage.controller; package com.manage.controller;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
import com.manage.bean.LoginVoRedis;
import com.manage.dao.Power_Login_SetMapper; import com.manage.dao.Power_Login_SetMapper;
import com.manage.encrypt.Base64; import com.manage.encrypt.Base64;
import com.manage.encrypt.MD5;
import com.manage.entity.*; import com.manage.entity.*;
import com.manage.service.*; import com.manage.service.*;
import com.manage.service.cache.Cache; import com.manage.service.cache.Cache;
import com.manage.service.cache.CacheManager; import com.manage.service.cache.CacheManager;
import com.manage.util.*; import com.manage.util.*;
import com.manage.vo.*; import com.manage.vo.*;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.DateUtil;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -18,17 +23,38 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import redis.clients.jedis.Jedis;
import sun.security.provider.MD5;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@Controller @Controller
public class LoginController { public class LoginController {
@Autowired
private Producer captchaProducer;
@Value("${TOKEN_EXPIRE_TIME}") @Value("${TOKEN_EXPIRE_TIME}")
private long TOKEN_EXPIRE_TIME; private long TOKEN_EXPIRE_TIME;
@Value("${sysFlag}")
private Integer sysFlag;
@Value("${SERVER_IP}")
private String SERVER_IP;
@Value("${SERVER_PORT}")
private String SERVER_PORT;
@Autowired @Autowired
private Power_UserService powerUserService; private Power_UserService powerUserService;
@Autowired @Autowired
@ -40,44 +66,67 @@ public class LoginController {
@Autowired @Autowired
private Power_Login_SetMapper powerLoginSetMapper; private Power_Login_SetMapper powerLoginSetMapper;
@RequestMapping(value = "login",method = RequestMethod.GET) @Value("${EMRMEDICALRECORD_URLHEAD}")
public String toLogin(Model model){ private String EMRMEDICALRECORD_URLHEAD;
@Value("${EMRMEDICALRECORD_IP}")
private String ip;
@Value("${EMRMEDICALRECORD_PORT}")
private String port;
@Value("${POWER_PORT}")
private String POWER_PORT;
@RequestMapping(value = "login", method = RequestMethod.GET)
public String toLogin(Model model) {
Power_Login_Set loginSet = powerLoginSetMapper.selectByPrimaryKey(1); Power_Login_Set loginSet = powerLoginSetMapper.selectByPrimaryKey(1);
model.addAttribute("loginSet",loginSet); model.addAttribute("loginSet", loginSet);
CacheManager.addExcCount("noExc"); CacheManager.addExcCount("noExc");
return "loginDir/login"; return "loginDir/login";
} }
@RequestMapping(value = "login",method = RequestMethod.POST) @RequestMapping(value = "login", method = RequestMethod.POST)
public String login(Power_User powerUser,HttpServletResponse response, HttpServletRequest request,Model model){ @ResponseBody
public Msg login(Power_User powerUser, HttpServletResponse response, HttpServletRequest request, Model model,String code) {
//判断是否在可登录时间内
Power_Log unlockDate = logService.getUnlockDate(powerUser.getUserName());
//不等于空说明账号次数过多被锁定
if (unlockDate != null) {
return Msg.failUnlockUser(unlockDate.getUnlockDate());
}
//正确的验证码
String original =(String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
String userName = powerUser.getUserName();
String userPwd = powerUser.getUserPwd();
if (!code.equalsIgnoreCase(original)) {
return Msg.codeUser();
}
if (!userName.equals("admin")) {
String s = "00" + userName;
powerUser.setUserName(s);
}
try { try {
Power_UserVo user = powerUserService.findPowerUserByUserNameAndUserPwd(powerUser); Power_UserVo user = powerUserService.findPowerUserByUserNameAndUserPwd(powerUser);
//添加进操作日志 //添加进操作日志
Power_Log log = new Power_Log(); Power_Log log = new Power_Log();
if(user != null){ if (user != null) {
//存session密码置空 //存session密码置空
//是否记住密码功能 //是否记住密码功能
MyCookieUtil.remember(request, response); MyCookieUtil.remember(request, response);
//设置token缓存 //设置token缓存
String token = UUID.randomUUID().toString(); String token = UUID.randomUUID().toString();
//查询归属医院
/*long start5 = System.currentTimeMillis();
Power_User_Dict powerUserDict = powerUserDictMapper.selectDictIdByUserId(user.getUserId());
long end5 = System.currentTimeMillis();
System.out.println("查询医院时间="+(end5-start5)/1000.0+"s");
user.setDictId(powerUserDict.getDictId());*/
//设置用户登录次数缓存
//CacheManager.addloginUserCount(fmt.format(new Date()),user.getUserName());
CacheManager.addExcCount("noExc"); CacheManager.addExcCount("noExc");
List<Power_Menu> list = null; List<Power_Menu> list = null;
List<User_Dept_Menu> menuList = new ArrayList<>(); List<User_Dept_Menu> menuList = new ArrayList<>();
Set<String> menus = new LinkedHashSet<>(); Set<String> menus = new LinkedHashSet<>();
if (user.getRoleId().equals(0) || user.getRoleId().equals(-100)) { if (user.getRoleId().equals(0) || user.getRoleId().equals(-100)) {
list = powerMenuService.queryAllPowerMenu(null,user.getRoleId()); list = powerMenuService.queryAllPowerMenu(null, user.getRoleId());
} else { } else {
list = powerMenuService.selectUserAndRoleMenuListPower(user.getUserId(),null); list = powerMenuService.selectUserAndRoleMenuListPower(user.getUserId(), null);
} }
if(null != list && !list.isEmpty()){ if (null != list && !list.isEmpty()) {
for (Power_Menu powerMenu : list) { for (Power_Menu powerMenu : list) {
User_Dept_Menu deptMenu = new User_Dept_Menu(); User_Dept_Menu deptMenu = new User_Dept_Menu();
String menuUrl = powerMenu.getMenuUrl(); String menuUrl = powerMenu.getMenuUrl();
@ -96,69 +145,133 @@ public class LoginController {
//设置科室 //设置科室
StringBuilder powerDepts = new StringBuilder(); StringBuilder powerDepts = new StringBuilder();
List<Power_Dept> powerDeptsList = power_deptService.selectByPrimaryKeys(user.getDeptId()); List<Power_Dept> powerDeptsList = power_deptService.selectByPrimaryKeys(user.getDeptId());
for(int j=0;j<powerDeptsList.size();j++){ for (int j = 0; j < powerDeptsList.size(); j++) {
if(j<powerDeptsList.size()-1){ if (j < powerDeptsList.size() - 1) {
powerDepts.append(powerDeptsList.get(j).getDeptName()).append(","); powerDepts.append(powerDeptsList.get(j).getDeptName()).append(",");
}else{ } else {
powerDepts.append(powerDeptsList.get(j).getDeptName()); powerDepts.append(powerDeptsList.get(j).getDeptName());
} }
} }
Integer roleId = user.getRoleId(); Integer roleId = user.getRoleId();
if(null != roleId && roleId != 0 && roleId != -100){ if (null != roleId && roleId != 0 && roleId != -100) {
user.setRemark(powerDepts.toString()); user.setRemark(powerDepts.toString());
} }
//清除用户登录错误次数缓存 //清除用户登录错误次数缓存
CacheManager.clearOnly(powerUser.getUserName()); CacheManager.clearOnly(powerUser.getUserName());
//设置进缓存 //设置进缓存
CacheManager.putCache(token,new Cache(user,System.currentTimeMillis(),TOKEN_EXPIRE_TIME*1000)); CacheManager.putCache(token, new Cache(user, System.currentTimeMillis(), TOKEN_EXPIRE_TIME * 1000));
ActionScopeUtils.setSessionAttribute("token",token,Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME))); ActionScopeUtils.setSessionAttribute("token", token, Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME)));
ActionScopeUtils.setSessionAttribute("CURRENT_USER",user,Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME))); ActionScopeUtils.setSessionAttribute("CURRENT_USER", user, Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME)));
return "redirect:gatewayPage"; //检测弱密码强制跳转修改密码
}else{ //大小写,中文,数据,特殊符号必须存在三种
String reg = "^(?![A-Za-z]+$)(?![A-Z\\d]+$)(?![A-Z\\W]+$)(?![a-z\\d]+$)(?![a-z\\W]+$)(?![\\d\\W]+$)\\S{8,20}$";
//判断是否为弱密码
boolean msg = userPwd.matches(reg);
if (msg == false) {
String url = "http://" + SERVER_IP + ":" + SERVER_PORT + "/power" + "/font/updatePassword";
return Msg.success().add("url", url);
}
//单点登录跳转
String url = "";
if (sysFlag == 2) {
url = EMRMEDICALRECORD_URLHEAD + "/login?token=" + token + "&userName=" + user.getUserName() + "&flag=1";
} else {
//获取本地端口
int POWER_PORT = request.getLocalPort();
url = "http://" + ip + ":" + POWER_PORT + "/power/gatewayPage";
}
return Msg.success().add("url", url);
} else {
//登录失败 //登录失败
Integer wrongNum = 1; Integer wrongNum = 1;
Cache cache = CacheManager.getCacheInfo(powerUser.getUserName()); Cache cache = CacheManager.getCacheInfo(powerUser.getUserName());
if(cache != null){ if (cache != null) {
//缓存中错误次数 //缓存中错误次数
Integer currentNum = (Integer)cache.getValue(); Integer currentNum = (Integer) cache.getValue();
//叠加1 //叠加1
wrongNum += currentNum; wrongNum += currentNum;
} }
//添加缓存 //添加缓存
CacheManager.putCache(powerUser.getUserName(),new Cache(wrongNum)); CacheManager.putCache(powerUser.getUserName(), new Cache(wrongNum));
log.setCreater(powerUser.getUserName()); log.setCreater(powerUser.getUserName());
log.setLogTitle("登录"); log.setLogTitle("登录");
log.setLogContent("用户密码错误"); log.setLogContent("用户密码错误");
log.setRemark("已错误【"+wrongNum+"】次"); log.setRemark("已错误【" + wrongNum + "】次");
//如果错误次数=5添加锁定时间
if (wrongNum == 5) {
SimpleDateFormat UnlockFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
log.setUnlockDate(UnlockFmt.format(new Date().getTime() + 15 * 60 * 1000));
}
logService.insert(log); logService.insert(log);
request.setAttribute("msg", "用户名或密码不正确"); request.setAttribute("msg", "用户名或密码不正确");
return Msg.failUser();
} }
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
CacheManager.addExcCount("exc"); CacheManager.addExcCount("exc");
} }
Power_Login_Set loginSet = powerLoginSetMapper.selectByPrimaryKey(1); return null;
model.addAttribute("loginSet",loginSet);
return "loginDir/login";
} }
@RequestMapping("refuse") @RequestMapping("refuse")
public String refuse(){ public String refuse() {
return "refuse"; return "refuse";
} }
//获取session所剩时间 //获取session所剩时间
@RequestMapping(value = "getSessionRemainingTime",method = RequestMethod.GET,produces = {"text/json;charset=UTF-8"}) @RequestMapping(value = "getSessionRemainingTime", method = RequestMethod.GET, produces = {"text/json;charset=UTF-8"})
@ResponseBody @ResponseBody
public String getSessionRemainingTime(HttpServletRequest request)throws Exception{ public String getSessionRemainingTime(HttpServletRequest request) throws Exception {
long lastAccessTime = 0L; long lastAccessTime = 0L;
String sessionId = request.getSession().getId(); String sessionId = request.getSession().getId();
Object attribute = request.getSession().getAttribute(sessionId); Object attribute = request.getSession().getAttribute(sessionId);
if(null != attribute){ if (null != attribute) {
lastAccessTime = (long)attribute; lastAccessTime = (long) attribute;
return JSON.toJSONString(TOKEN_EXPIRE_TIME-(System.currentTimeMillis()-lastAccessTime)); return JSON.toJSONString(TOKEN_EXPIRE_TIME - (System.currentTimeMillis() - lastAccessTime));
}else{ } else {
return null; return null;
} }
} }
/**
*
*
* @param model
* @param request
* @param response
* @param timestamp
* @return
* @throws IOException
*/
@RequestMapping(value = "/getCaptchaImage", method = RequestMethod.GET)
public ModelAndView getCaptchaImage(Model model, HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "timestamp", required = false) String timestamp) throws IOException {
if (StringUtils.isEmpty(timestamp)) {
//System.out.println("没有时间戳\ttimestamp:" + timestamp);
model.addAttribute("timestamp", System.currentTimeMillis());
} else {
//System.out.println("有时间戳\ttimestamp:" + timestamp);
model.addAttribute("timestamp", timestamp);
}
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
response.setHeader("Pragma", "no-cache");
response.setContentType("image/jpeg");
String capText = captchaProducer.createText();
request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
BufferedImage bi = captchaProducer.createImage(capText);
ServletOutputStream out = response.getOutputStream();
ImageIO.write(bi, "jpg", out);
try {
out.flush();
} finally {
out.close();
}
return null;
}
} }

@ -0,0 +1,337 @@
package com.manage.controller;
import com.alibaba.fastjson.JSONObject;
import com.manage.encrypt.Base64;
import com.manage.encrypt.MD5;
import com.manage.entity.Power_Dept;
import com.manage.entity.Power_Menu;
import com.manage.service.Power_DeptService;
import com.manage.service.Power_MenuService;
import com.manage.service.Power_UserService;
import com.manage.service.cache.Cache;
import com.manage.service.cache.CacheManager;
import com.manage.service.webSocket.WsPool;
import com.manage.util.ActionScopeUtils;
import com.manage.util.DateUtils;
import com.manage.util.Msg;
import com.manage.vo.Power_UserVo;
import com.manage.vo.User_Dept_Menu;
import org.apache.commons.lang3.StringUtils;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.HttpClientUtils;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.*;
/**
* Author xuhx
* Date 2021/7/1
* Time 16:39
* Description 使
* Description 100
*/
@Controller
@RequestMapping("ssoLogin/")
public class SsoLogin {
private static Logger logger = LoggerFactory.getLogger(HttpClientUtils.class); // 日志记录
private static RequestConfig requestConfig = null;
static {
// 设置请求和传输超时时间
requestConfig = RequestConfig.custom().setSocketTimeout(600000).setConnectTimeout(600000).build();
}
@Autowired
Power_UserService powerUserService;
@Autowired
private Power_MenuService powerMenuService;
@Autowired
private Power_DeptService power_deptService;
@Value("${EMRMEDICALRECORD_IP}")
private String ip;
@Value("${EMRMEDICALRECORD_PORT}")
private String port;
@Value("${TOKEN_EXPIRE_TIME}")
private long TOKEN_EXPIRE_TIME;
@Value("${oidc_address}")
private String oidcAddress;
@Value("${token_endpoint}")
private String tokenEendpoint;
@Value("${client_id}")
private String clientId;
@Value("${client_secret}")
private String clientSecret;
@Value("${userinfo_endpoint}")
private String userinfoEndpoint;
@Value("${authorization_endpoint}")
private String authorizationEndpoint;
@Value("${URL_ADDRESS}")
private String urlAddress;
/*
*
* author xuhx
* */
@RequestMapping(value = "login",method = RequestMethod.GET,produces = "text/html;charset=utf-8")
@ResponseBody
public String login(HttpServletRequest request,HttpServletResponse response,String code,String state) throws Exception {
String result = "";
CloseableHttpResponse responseNew = null;
CloseableHttpClient httpClient = null;
JSONObject jsonResultToken = null;
String url=oidcAddress+tokenEendpoint;
String StringUrl = URLEncoder.encode(urlAddress, "GBK");
Map paramMap = new HashMap();
paramMap.put("client_id",clientId);
paramMap.put("client_secret",clientSecret);
paramMap.put("code",code);
paramMap.put("grant_type","authorization_code");
paramMap.put("redirect_uri",urlAddress);
String returnObject =doPost(url,paramMap,null);
String userName="";
if(returnObject!=null){
// 把json字符串转换成json对象
jsonResultToken = JSONObject.parseObject(returnObject);
String accessToken=jsonResultToken.getString("access_token");
// 通过址默认配置创建一个httpClient实例
httpClient = HttpClients.createDefault();
// 创建httpGet远程连接实例
String userUrl=oidcAddress+userinfoEndpoint;
HttpGet httpGet = new HttpGet(userUrl);
// 设置请求头信息,鉴权
httpGet.setHeader("Authorization", "Bearer "+accessToken);
httpGet.setConfig(requestConfig);
// 执行get请求得到返回对象
responseNew = httpClient.execute(httpGet);
// 通过返回对象获取返回数据
HttpEntity entity = responseNew.getEntity();
// 通过EntityUtils中的toString方法将结果转换为字符串
String returnResult = EntityUtils.toString(entity);
// 把json字符串转换成json对象
JSONObject jsonResult = JSONObject.parseObject(returnResult);
if(jsonResult!=null){
/*if((jsonResult.getString("username"))!=null&&!"".equals(jsonResult.getString("username"))) {
userName=jsonResult.getString("username");
}*/
if((jsonResult.getString("name"))!=null&&!"".equals(jsonResult.getString("name"))) {
//接口返回的登录名为4位我们系统为6位接口登录名前追加两个0变成我们的6位
userName="00"+jsonResult.getString("name");
//根据登录名获取用户(需要确保用户登录名唯一)
Power_UserVo user = powerUserService.selectByUserName(userName);
if (user != null) {
String password = MD5.JM(Base64.decode(user.getUserPwd()));
if (password != null && !"".equals(password)) {
//加密此部分代码来自FontController的getToken方法用来获取token及相关操作
String token = UUID.randomUUID().toString();
List<Power_Menu> list = null;
List<User_Dept_Menu> menuList = new ArrayList<>();
Set<String> menus = new TreeSet<>();
if (user.getRoleId().equals(0) || user.getRoleId().equals(-100)) {
list = powerMenuService.queryAllPowerMenu(null,user.getRoleId());
} else {
list = powerMenuService.selectUserAndRoleMenuListPower(user.getUserId(),null);
}
if(null != list && !list.isEmpty()){
for (Power_Menu power_menu : list) {
User_Dept_Menu deptMenu = new User_Dept_Menu();
String menuUrl = power_menu.getMenuUrl();
if (StringUtils.isNotBlank(menuUrl)) {
BeanUtils.copyProperties(power_menu, deptMenu);
deptMenu.setMethodParent(power_menu.getParentId());
menuList.add(deptMenu);
}
if (StringUtils.isNotBlank(power_menu.getMethod())) {
menus.add(power_menu.getMenuUrl());
}
}
}
user.setMenuList(menuList);
user.setMenus(menus);
//设置科室
StringBuilder powerDepts = new StringBuilder();
List<Power_Dept> powerDeptsList = power_deptService.selectByPrimaryKeys(user.getDeptId());
for(int j=0;j<powerDeptsList.size();j++){
if(j<powerDeptsList.size()-1){
powerDepts.append(powerDeptsList.get(j).getDeptName()).append(",");
}else{
powerDepts.append(powerDeptsList.get(j).getDeptName());
}
}
user.setRemark(powerDepts.toString());
//移除缓存
/*CacheManager.removeCacheByObject(user);
CacheManager.putCache(date,new Cache(date,user,TOKEN_EXPIRE_TIME));*/
ActionScopeUtils.setSessionAttribute("token",token,Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME)));
ActionScopeUtils.setSessionAttribute("CURRENT_USER",user,Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME)));
CacheManager.putCache(token,new Cache(user,System.currentTimeMillis(),TOKEN_EXPIRE_TIME*1000));
if (!"".equals(token)&&token!=null) {
//返回跳转url
result="http://"+ip+":"+port+"/emr_medical_record/login?token=" + token + "&userName="+userName;
//request.getRequestDispatcher(result).forward(request, response);
response.sendRedirect(result);
} else {
result = "获取登录token失败请检查数据!!";
}
} else {
result = "无法获取用户密码!!";
}
} else {
result = "登录用户不存在!!";
}
}
}else{
result = "SSO平台未成功返回用户信息!!";
}
}
return result;
}
@RequestMapping(value = "into",method = RequestMethod.GET,produces = "text/html;charset=utf-8")
@ResponseBody
public void in(HttpServletRequest request, HttpServletResponse response){
//本项目中接收返回数据的地址
String StringUrl = null;
try {
StringUrl = URLEncoder.encode(urlAddress, "GBK");
try {
response.sendRedirect(oidcAddress+authorizationEndpoint+"?client_id="+clientId+"&redirect_uri="+StringUrl+"&response_type=code&state="+1+"&scope=openid%20profile");
} catch (IOException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public static String doPost(String url, Map<String, Object> paramMap, Map<String, String> headerMap) {
CloseableHttpClient httpClient = null;
CloseableHttpResponse httpResponse = null;
String result = "";
// 创建httpClient实例
httpClient = HttpClients.createDefault();
// 创建httpPost远程连接实例
HttpPost httpPost = new HttpPost(url);
RequestConfig requestConfig = null;
// 配置请求参数实例
requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间
.setConnectionRequestTimeout(35000)// 设置连接请求超时时间
.setSocketTimeout(60000)// 设置读取数据连接超时时间
.build();
// 为httpPost实例设置配置
//httpPost.setConfig(requestConfig);
// 设置请求头
if (headerMap == null){
httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");// "application/json"
} else {
for (String key : headerMap.keySet()) {
httpPost.addHeader(key, headerMap.get(key));
}
}
// 封装post请求参数
if (null != paramMap && paramMap.size() > 0) {
List<NameValuePair> nvps = new ArrayList<>();
// 通过map集成entrySet方法获取entity
Set<Map.Entry<String, Object>> entrySet = paramMap.entrySet();
// 循环遍历,获取迭代器
Iterator<Map.Entry<String, Object>> iterator = entrySet.iterator();
while (iterator.hasNext()) {
Map.Entry<String, Object> mapEntry = iterator.next();
nvps.add(new BasicNameValuePair(mapEntry.getKey(), mapEntry.getValue().toString()));
}
// 为httpPost设置封装好的请求参数
try {
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
try {
// httpClient对象执行post请求,并返回响应参数对象
httpResponse = httpClient.execute(httpPost);
// 从响应对象中获取响应内容
HttpEntity entity = httpResponse.getEntity();
result = EntityUtils.toString(entity);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (null != httpResponse) {
try {
httpResponse.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != httpClient) {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}
/**
* @MethodName sendMessage
* @Description:
*/
@RequestMapping(value ="getUser",method = RequestMethod.GET)
@ResponseBody
public Power_UserVo sendMessage(String userName) throws Exception{
return powerUserService.selectByUserName(userName);
}
}

@ -30,7 +30,6 @@ import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
@ -161,23 +160,17 @@ public class UserController {
} }
} }
@OptionalLog(module = "重置密码",methods = "用户管理",fieldName = "userName",tableName = "power_user")
@RequiresPermissions(value="/user/resetPassword")
@RequestMapping("/resetPassword") @RequestMapping("/resetPassword")
@ResponseBody @ResponseBody
public Msg update(String ids) throws Exception{ public Msg update(Integer userId) throws Exception{
ServletRequestAttributes attr=(ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); ServletRequestAttributes attr=(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request =attr.getRequest(); HttpServletRequest request =attr.getRequest();
// Power_UserVo powerUser = powerUserService.selectByPrimaryKey(userId); Power_UserVo powerUser = powerUserService.selectByPrimaryKey(userId);
// powerUser.setUserPwd(Base64.encode(MD5.KL("000000"))); powerUser.setUserPwd("R0QXEUNFFUNHFhAQTURMF0dNQUEVTUQRTBJDQEZNERI=");
// powerUserService.updateByPrimaryKeySelective(powerUser,request); powerUserService.updateByPrimaryKeySelective(powerUser,request);
// CacheManager.addExcCount("noExc"); CacheManager.addExcCount("noExc");
//取得当前登录账号
HttpSession session= request.getSession();
Power_User powerUser1 =(Power_User) session.getAttribute("CURRENT_USER");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
String date = df.format(new Date());// new Date()为获取当前系统时间
String userName = powerUser1.getUserName();
String encode = Base64.encode(MD5.KL("000000"));
powerUserService.updateUserPass(ids,userName,encode,date);
return Msg.success(); return Msg.success();
} }
@RequestMapping("/selectUser") @RequestMapping("/selectUser")

@ -29,34 +29,33 @@
<property name="url" value="${jdbc.url}"/> <!--数据库地址--> <property name="url" value="${jdbc.url}"/> <!--数据库地址-->
<property name="username" value="${jdbc.username}"/> <!--用户名--> <property name="username" value="${jdbc.username}"/> <!--用户名-->
<property name="password" value="${jdbc.password}"/> <!--密码--> <property name="password" value="${jdbc.password}"/> <!--密码-->
<property name = "filters" value = "${filters}" /> <property name="filters" value="${filters}"/>
<!-- 最大并发连接数 --> <!-- 最大并发连接数 -->
<property name = "maxActive" value = "${maxActive}" /> <property name="maxActive" value="${maxActive}"/>
<!-- 初始化连接数量 --> <!-- 初始化连接数量 -->
<property name = "initialSize" value = "${initialSize}" /> <property name="initialSize" value="${initialSize}"/>
<!-- 配置获取连接等待超时的时间 --> <!-- 配置获取连接等待超时的时间 -->
<property name = "maxWait" value = "${maxWait}" /> <property name="maxWait" value="${maxWait}"/>
<!-- 最小空闲连接数 --> <!-- 最小空闲连接数 -->
<property name = "minIdle" value = "${minIdle}" /> <property name="minIdle" value="${minIdle}"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name = "timeBetweenEvictionRunsMillis" value ="${timeBetweenEvictionRunsMillis}" /> <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}"/>
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name = "minEvictableIdleTimeMillis" value ="${minEvictableIdleTimeMillis}" /> <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}"/>
<property name = "validationQuery" value = "${validationQuery}" /> <property name="validationQuery" value="${validationQuery}"/>
<property name = "testWhileIdle" value = "${testWhileIdle}" /> <property name="testWhileIdle" value="${testWhileIdle}"/>
<property name = "testOnBorrow" value = "${testOnBorrow}" /> <property name="testOnBorrow" value="${testOnBorrow}"/>
<property name = "testOnReturn" value = "${testOnReturn}" /> <property name="testOnReturn" value="${testOnReturn}"/>
<property name = "maxOpenPreparedStatements" value ="${maxOpenPreparedStatements}" /> <property name="maxOpenPreparedStatements" value="${maxOpenPreparedStatements}"/>
<!-- 打开 removeAbandoned 功能 --> <!-- 打开 removeAbandoned 功能 -->
<property name = "removeAbandoned" value = "${removeAbandoned}" /> <property name="removeAbandoned" value="${removeAbandoned}"/>
<!-- 1800 秒,也就是 30 分钟 --> <!-- 1800 秒,也就是 30 分钟 -->
<property name = "removeAbandonedTimeout" value ="${removeAbandonedTimeout}" /> <property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}"/>
<!-- 关闭 abanded 连接时输出错误日志 --> <!-- 关闭 abanded 连接时输出错误日志 -->
<property name = "logAbandoned" value = "${logAbandoned}" /> <property name="logAbandoned" value="${logAbandoned}"/>
</bean> </bean>
<!-- ====================== 配置和MyBatis的整合 ======================== --> <!-- ====================== 配置和MyBatis的整合 ======================== -->
<!--配置session工厂MyBatis的整合--> <!--配置session工厂MyBatis的整合-->
@ -115,6 +114,45 @@
</tx:attributes> </tx:attributes>
</tx:advice> </tx:advice>
<!-- 验证码配置 -->
<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
<property name="config">
<bean class="com.google.code.kaptcha.util.Config">
<constructor-arg>
<props>
<!-- 验证码宽度 -->
<prop key="kaptcha.image.width">150</prop>
<!-- 验证码高度 -->
<prop key="kaptcha.image.height">50</prop>
<!-- 生成验证码内容范围 -->
<prop key="kaptcha.textproducer.char.string">123456789abcDeFGHjkLmnoQqrsTUVWXYZ</prop>
<!-- 验证码个数 -->
<prop key="kaptcha.textproducer.char.length">4</prop>
<!-- 是否有边框 -->
<prop key="kaptcha.border">no</prop>
<!-- 边框颜色 -->
<prop key="kaptcha.border.color">105,179,90</prop>
<!-- 边框厚度 -->
<prop key="kaptcha.border.thickness">1</prop>
<!-- 验证码字体颜色 -->
<prop key="kaptcha.textproducer.font.color">black</prop>
<!-- 验证码字体大小 -->
<prop key="kaptcha.textproducer.font.size">30</prop>
<!-- 验证码所属字体样式 -->
<prop key="kaptcha.textproducer.font.names">楷体</prop>
<!-- 干扰线颜色 -->
<prop key="kaptcha.noise.color">black</prop>
<!-- 验证码文本字符间距 -->
<prop key="kaptcha.textproducer.char.space">3</prop>
<!-- 图片样式 :阴影-->
<prop key="kaptcha.obscurificator.impl">com.google.code.kaptcha.impl.ShadowGimpy</prop>
</props>
</constructor-arg>
</bean>
</property>
</bean>
<!-- Spring配置文件的核心点数据源、与 mybatis的整合事务控制 --> <!-- Spring配置文件的核心点数据源、与 mybatis的整合事务控制 -->

@ -1,7 +1,7 @@
# \u62E6\u622A\u83DC\u5355\u914D\u7F6E\u6587\u4EF6 ljx 2019-4-27 # \u62E6\u622A\u83DC\u5355\u914D\u7F6E\u6587\u4EF6 ljx 2019-4-27
#interceptRequest \u672A\u767B\u5F55\u4E4B\u524D\u653E\u884C\u3002\u9ED8\u8BA4\u4E3Anone #interceptRequest \u672A\u767B\u5F55\u4E4B\u524D\u653E\u884C\u3002\u9ED8\u8BA4\u4E3Anone
#ajaxRequest ajax\u8BF7\u6C42\u6CA1\u6709\u5BF9\u5E94\u6A21\u5757\uFF0C\u9700\u8981\u653E\u884C\u3002 \u9ED8\u8BA4\u4E3Anone #ajaxRequest ajax\u8BF7\u6C42\u6CA1\u6709\u5BF9\u5E94\u6A21\u5757\uFF0C\u9700\u8981\u653E\u884C\u3002 \u9ED8\u8BA4\u4E3Anone
releaseRequest = /login,/logout,/services,/font,/refuse,/swagger-ui.html,/webjars,/swagger-resources,/v2,/collector releaseRequest = /login,/logout,/services,/font,/refuse,/swagger-ui.html,/webjars,/swagger-resources,/v2,/ssoLogin,/getQRcode,/qRCodeLogin,/check,/checkcode,/captcha,/getCaptchaImage
ajaxRequest = none ajaxRequest = none
#session\u8FC7\u671F\u65F6\u95F4,\u5355\u4F4D\u79D2 #session\u8FC7\u671F\u65F6\u95F4,\u5355\u4F4D\u79D2
@ -9,12 +9,12 @@ TOKEN_EXPIRE_TIME = 7200
##################################################\u670D\u52A1\u5668ip########################################################## ##################################################\u670D\u52A1\u5668ip##########################################################
#\u901A\u7528\u670D\u52A1\u5668IP\u4E0E\u901A\u7528\u670D\u52A1\u5668\u7AEF\u53E3 #\u901A\u7528\u670D\u52A1\u5668IP\u4E0E\u901A\u7528\u670D\u52A1\u5668\u7AEF\u53E3
#SERVER_IP = localhost
#SERVER_PORT = 8081
SERVER_IP = localhost SERVER_IP = localhost
SERVER_PORT = 8081 SERVER_PORT = 8081
#SERVER_IP = 200.100.104.40
#SERVER_PORT = 8081
#power\u6743\u9650\u7CFB\u7EDFip #power\u6743\u9650\u7CFB\u7EDFip
POWER_IP = ${SERVER_IP} POWER_IP = ${SERVER_IP}
#\u6743\u9650\u7CFB\u7EDF\u7AEF\u53E3 #\u6743\u9650\u7CFB\u7EDF\u7AEF\u53E3
@ -23,7 +23,7 @@ POWER_PORT = ${SERVER_PORT}
#\u75C5\u6848\u5F52\u6863\u7CFB\u7EDFip #\u75C5\u6848\u5F52\u6863\u7CFB\u7EDFip
EMRMEDICALRECORD_IP = ${SERVER_IP} EMRMEDICALRECORD_IP = ${SERVER_IP}
#\u75C5\u6848\u5F52\u6863\u7CFB\u7EDF\u7AEF\u53E3 #\u75C5\u6848\u5F52\u6863\u7CFB\u7EDF\u7AEF\u53E3
EMRMEDICALRECORD_PORT = 8082 EMRMEDICALRECORD_PORT = 8084
#\u75C5\u6848\u7BA1\u7406\u7CFB\u7EDFip #\u75C5\u6848\u7BA1\u7406\u7CFB\u7EDFip
EMRRECORD_IP = ${SERVER_IP} EMRRECORD_IP = ${SERVER_IP}
#\u75C5\u6848\u7BA1\u7406\u7CFB\u7EDF\u7AEF\u53E3 #\u75C5\u6848\u7BA1\u7406\u7CFB\u7EDF\u7AEF\u53E3
@ -69,3 +69,32 @@ log.days = 90
#\u5B9A\u4E49\u662F\u5426\u4E3A\u957F\u671F\u767B\u5F55\u7528\u6237\u6B21\u6570 #\u5B9A\u4E49\u662F\u5426\u4E3A\u957F\u671F\u767B\u5F55\u7528\u6237\u6B21\u6570
login.times = 3 login.times = 3
#\u68EE\u4EBFSSO OIDC\u914D\u7F6E\u9879
#\u7531OIDC\u670D\u52A1\u63D0\u4F9B\u7684client_id
client_id=WZH
#\u7531OIDC\u670D\u52A1\u63D0\u4F9B\u7684client_secret
client_secret=ClientSecret
#OIDC\u670D\u52A1\u7684\u5730\u5740
oidc_address= http://10.100.12.12:37727
#\u9274\u6743\u670D\u52A1\u5730\u5740\uFF08\u5982\u679C\u65E0\u6CD5\u4F7F\u7528\u670D\u52A1
#\u53D1\u73B0\u529F\u80FD\uFF09
authorization_endpoint=/connect/authorize
#\u83B7\u53D6Token\u63A5\u53E3\uFF08\u5982\u679C\u65E0\u6CD5\u4F7F\u7528\u670D
#\u52A1\u53D1\u73B0\u529F\u80FD\uFF09
token_endpoint=/connect/token
#\u7528\u6237\u4FE1\u606F\u63A5\u53E3\uFF08\u5982\u679C\u65E0\u6CD5\u4F7F\u7528\u670D\u52A1
#\u53D1\u73B0\u529F\u80FD\uFF09
userinfo_endpoint=/connect/userinfo
#\u8BBF\u95EE\u5730\u5740
URL_ADDRESS=http://10.100.23.1:8081/power/ssoLogin/login
#\u5224\u65AD\u767B\u5F55\u9875\u663E\u793A\u7684\u662Fid 1:\u5F52\u6863\u7CFB\u7EDF\uFF1B2\uFF1A\u79FB\u52A8\u67E5\u623F\u7CFB\u7EDF
sysFlag=1

@ -1,7 +1,7 @@
#jdbc.url=jdbc\:mysql\://200.100.104.40\:3306/power?useUnicode\=true&characterEncoding\=utf-8 #jdbc.url=jdbc\:mysql\://200.100.104.40\:3306/power?useUnicode\=true&characterEncoding\=utf-8
#jdbc.password=AbcXyz123 #jdbc.password=AbcXyz123
jdbc.url=jdbc\:mysql\://localhost\:3306/gm_power?useUnicode\=true&characterEncoding\=utf-8 jdbc.url=jdbc\:mysql\://localhost\:3306/fs_power?useUnicode\=true&characterEncoding\=utf-8&serverTimezone\=GMT
jdbc.password=root jdbc.password=root
jdbc.driver=com.mysql.jdbc.Driver jdbc.driver=com.mysql.jdbc.Driver

@ -0,0 +1,23 @@
log4j.logger.myLog=debug,myLog
log4j.appender.myLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myLog.File=D:\\logs\\power\\info\\info_log
log4j.appender.myLog.DatePattern=-yyyy-MM-dd'.log'
log4j.appender.myLog.Append = true
log4j.appender.myLog.Threshold = INFO
log4j.appender.myLog.layout=org.apache.log4j.PatternLayout
log4j.appender.myLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}:%m%n
log4j.logger.errorMsg=error,errorMsg
log4j.appender.errorMsg=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorMsg.File=D:\\logs\\power\\error\\error_log
log4j.appender.errorMsg.DatePattern=-yyyy-MM-dd'.log'
log4j.appender.errorMsg.Append = true
log4j.appender.errorMsg.Threshold = error
log4j.appender.errorMsg.layout=org.apache.log4j.PatternLayout
log4j.appender.errorMsg.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}:%m%n
#log4j.rootLogger=debug,myLog,errorMsg,CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern =%d %-5p [%c{5}] - %m%n

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?><configuration status="warn">
<Properties>
<Property name="infoLogFileDir">D:docus_logs/power/info</Property>
<Property name="infoLogFileName">info_log</Property>
<Property name="infoLogFileSrc">${infoLogFileDir}/${infoLogFileName}</Property>
<Property name="errorLogFileDir">D:docus_logs/power/error</Property>
<Property name="errorLogFileName">error_log</Property>
<Property name="errorLogFileSrc">${errorLogFileDir}/${errorLogFileName}</Property>
</Properties>
<appenders>
<RollingFile name="infoLogRollingFile" fileName="${infoLogFileSrc}"
filePattern="${infoLogFileSrc}-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<!--配置1天存储一个文件-->
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
<!--配置超过文件大小切割成多个文件%i区分序号目前配一个文件20M-->
<SizeBasedTriggeringPolicy size="20MB"/>
<!-- DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件这里设置了20 -->
<DefaultRolloverStrategy max="20">
<Delete basePath="${infoLogFileDir}/" maxDepth="1">
<IfFileName glob="*.log" />
<!--!Note: 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用
另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
<!--保留30天-->
<IfLastModified age="30d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<RollingFile name="errorLogRollingFile" fileName="${errorLogFileSrc}"
filePattern="${errorLogFileSrc}-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<!--配置1天存储一个文件-->
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
<!--配置超过文件大小切割成多个文件%i区分序号目前配一个文件20M-->
<SizeBasedTriggeringPolicy size="20MB"/>
<!-- DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件这里设置了20 -->
<DefaultRolloverStrategy max="20">
<Delete basePath="${errorLogFileDir}/" maxDepth="1">
<IfFileName glob="*.log" />
<!--!Note: 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用
另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
<!--保留30天-->
<IfLastModified age="30d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</appenders>
<loggers>
<Logger name="infoLog" additivity="TRUE" level="ALL">
<AppenderRef ref="infoLogRollingFile" level="INFO" />
</Logger>
<Logger name="errorLog" additivity="TRUE" level="ALL">
<AppenderRef ref="errorLogRollingFile" level="ERROR" />
</Logger>
</loggers>
</configuration>

@ -0,0 +1,16 @@
##redis\u6570\u636E\u5E93\u7684\u76F8\u5173\u914D\u7F6E
##\u8FDE\u63A5\u5730\u5740ip
redis.host =localhost
##\u7AEF\u53E3\u53F7
redis.port = 6379
##\u8BBF\u95EE\u5BC6\u7801
#redis.auth =
##\u63A7\u5236\u4E00\u4E2Apool\u6700\u591A\u53EF\u4EE5\u6709\u591A\u5C11\u4E2A\u72B6\u6001\u4E3AIdle(\u7A7A)\u7684jedis\u5B9E\u4F8B\u9ED8\u8BA4\u503C\u4E3A8
redis.maxIdle = 200
##\u7B49\u5F85\u53EF\u7528\u8FDE\u63A5\u7684\u6700\u5927\u65F6\u95F4\u5355\u4F4D\u4E3A\u6BEB\u79D2 \u9ED8\u8BA4\u4E3A-1\u8868\u793A\u6C38\u4E0D\u8D85\u65F6\uFF0C\u4E00\u65E6\u8D85\u8FC7\u7B49\u5F85\u65F6\u95F4\u5219\u76F4\u63A5\u629B\u51FA
redis.maxWait = 100000
redis.timeOut = 0
##\u8BBE\u7F6E\u4E3Atrue\u5219\u4F1A\u5728borrow\u4E00\u4E2Ajedis\u5B9E\u4F8B\u65F6\uFF0C\u63D0\u524D\u505Avalidate\u64CD\u4F5C
redis.testOnBorrow =true
##\u6700\u5927\u8FDE\u63A5\u6570
redis.maxTotal=30

@ -35,6 +35,7 @@
<script src="${path}/static/js/toastr.min.js"></script> <script src="${path}/static/js/toastr.min.js"></script>
<script src="${path}/static/js/jquery.form.js"></script> <script src="${path}/static/js/jquery.form.js"></script>
<script src="${path}/static/js/pinying.js"></script> <script src="${path}/static/js/pinying.js"></script>
<script src="${path}/static/js/md5.js"></script>
<script> <script>
toastr.options.positionClass = 'toast-top-right'; toastr.options.positionClass = 'toast-top-right';
</script> </script>

@ -0,0 +1,12 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>操作失败</title>
<meta name="author" content="pan_junbiao的博客">
</head>
<body>
<div align="center">
<h1>服务器异常,请联系管理员处理</h1>
</div>
</body>
</html>

@ -228,7 +228,7 @@
</div> </div>
<div class="rightTitleDiv"> <div class="rightTitleDiv">
<div class="rightTitle" style="margin-top: 5px;"> <div class="rightTitle" style="margin-top: 5px;">
<span>病案无纸化归档系统</span> <span>病案归档系统</span>
</div> </div>
</div> </div>
</div> </div>
@ -244,7 +244,7 @@
</div> </div>
<div class="rightTitleDiv"> <div class="rightTitleDiv">
<div class="rightTitle"> <div class="rightTitle">
<span>病案数码影像信息管理系统</span> <span>档案管理系统</span>
</div> </div>
</div> </div>
</div> </div>

@ -4,83 +4,215 @@
<%@ include file="/WEB-INF/jspf/common.jspf" %> <%@ include file="/WEB-INF/jspf/common.jspf" %>
<% <%
String path = request.getContextPath(); String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
String password=""; String password = "";
String userName=""; String userName = "";
String checked=""; String checked = "";
Cookie[] cookies = request.getCookies(); //取出cookie对象组 Cookie[] cookies = request.getCookies(); //取出cookie对象组
for(int i = 0; cookies != null && i < cookies.length;i++){ for (int i = 0; cookies != null && i < cookies.length; i++) {
Cookie cookie = cookies[i]; // 取出其中的一个对象含有name ,value Cookie cookie = cookies[i]; // 取出其中的一个对象含有name ,value
if(cookie != null && "name".equals(cookie.getName())){ //获取第一个cookie对象的name if (cookie != null && "name".equals(cookie.getName())) { //获取第一个cookie对象的name
userName = URLDecoder.decode(cookie.getValue(), "UTF-8");//进行解码 userName = URLDecoder.decode(cookie.getValue(), "UTF-8");//进行解码
checked = "checked"; checked = "checked";
} }
if(cookie != null && "password".equals(cookie.getName())){ if (cookie != null && "password".equals(cookie.getName())) {
password = cookie.getValue(); password = cookie.getValue();
password = Base64.decodeBase64(password); password = Base64.decodeBase64(password);
} }
} }
%> %>
<html> <html lang="en">
<head> <head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>嘉时软件</title> <title>嘉时软件</title>
<!--导入CSS -->
<link rel="stylesheet" href="${path}/static/css/login.css">
<script>
var path = "${path}";
</script>
</head> </head>
<body style="background:url('${path}/static/img/login/bg.png')"> <style>
<!--头部--> * {
<div class="login_head"> margin: 0;
<!--头部文字--> padding: 0;
<div class="head_left left"> box-sizing: border-box;
<div class="head_left_span"> }
<span>${loginSet.context}</span></div>
.login {
width: 100%;
height: 100vh;
display: flex;
}
#banar {
width: 300px;
height: 50px;
background-color: #999;
font-weight: bold;
font-size: 3em;
text-align: center;
line-height: 40px;
font-family: "fantasy";
color: burlywood;
margin: 10px;
display: inline-block;
}
#chang {
font-size: 14px;
color: darkgreen;
cursor: pointer; /* 鼠标经过变成小手 */
}
#txt {
font-size: 22px;
font-family: Source Han Sans CN;
font-weight: 400;
color: #555555;
margin: 10px 0;
/*width: 200px;*/
/*height: 40px;*/
/*outline: none;!* 鼠标聚焦文本框没有边框线*!*/
}
.login .left {
width: 1100px;
height: 100%;
}
.login .left img {
width: 100%;
height: 100%;
}
.login .right {
margin: 0 auto;
margin-top: 30px;
}
.logo {
margin-top: 74px;
margin-bottom: 123px;
display: flex;
align-items: center;
}
.title {
text-align: center;
font-size: 40px;
font-weight: 500;
margin-top: 34px;
}
.shuru {
width: 500px;
height: 50px;
background: #EFF0F4;
border-radius: 6px;
border: 1px solid #EFF0F4;
outline: none;
padding-left: 20px;
font-size: 16px;
}
.shuru:focus {
border-color: #09f !important;
}
.item {
margin-bottom: 20px;
}
.item1 {
margin-bottom: 30px;
}
.item-name {
font-size: 22px;
font-family: Source Han Sans CN;
font-weight: 400;
color: #555555;
margin: 10px 0;
}
.btn {
width: 500px;
height: 64px;
background: linear-gradient(90deg, #00AFFF 0%, #007CFF 100%);
border-radius: 6px;
text-align: center;
line-height: 53px;
cursor: pointer;
font-size: 22px;
font-family: Source Han Sans CN;
font-weight: 400;
color: #FFFFFF;
margin-top: 4px;
}
.boxCss {
margin-top: 60px;
}
.bottom {
width: 500px;
text-align: center;
font-size: 14px;
font-family: Source Han Sans CN;
font-weight: 400;
color: #919191;
margin-top: 120px;
}
</style>
<body>
<div class="login">
<div class="left">
<img src="./static/img/login/login_bg.png" alt="">
</div> </div>
<!--右边logon--> <div class="right">
<div class="head_right left">
<c:if test="${loginSet.logoPath != ''}"> <c:if test="${loginSet.logoPath != ''}">
<img src="${path}/${loginSet.logoPath}" width="${loginSet.logoWidth}px" height="${loginSet.logoHeight}px"> <img src="${path}/${loginSet.logoPath}" width="${loginSet.logoWidth}px" height="${loginSet.logoHeight}px">
</c:if> </c:if>
<div class="title">
账号登录
</div> </div>
<div class="boxCss">
<form action="">
<div class="item item1">
<div class="item-name">用户名</div>
<input type="text" placeholder="请输入" class="shuru" id="userName" name="userName">
</div> </div>
<!--中间--> <div class="item">
<div class="login_content"> <div class="item-name">用户密码</div>
<div class="content_left left"> <input type="password" placeholder="请输入" class="shuru" id="userPwd" name="userPwd">
<c:if test="${loginSet.pic1Path != ''}">
<div class="image1" style="background:url('${path}/${loginSet.pic1Path}') no-repeat">
</div>
</c:if>
</div>
<div class="content_login left">
<form method="post" action="${path}/login">
<div class="login_div" style="background:url('${path}/static/img/login/登录框.png') no-repeat">
<div class="login_title">
<h3 style="text-align: center">账号登录</h3>
</div>
<div class="inputDiv">
<input type="text" id="userName" name="userName" class="form-control uname left" placeholder="用户名" required value="<%=userName%>"/>
</div>
<div class="inputDiv">
<input type="password" id="userPwd" name="userPwd" class="form-control pword m-b" placeholder="密码" required value="<%=password%>" autocomplete="new-password"/>
</div> </div>
<div class="inputDiv"> <div class="item">
<label><input type="checkbox" name="rememberMe" id="rememberMe" value="yes" style="vertical-align:middle; margin-top:0;" <%=checked%>>记住密码</label> <div class="item-name" id="txt1">验证码</div>
<input type="text" placeholder="验证码" class="shuru" id="imageContent" name="imageContent"
maxlength="4">
</div> </div>
<%--<a href="#" id="forgetPwd" style="float: right;">忘记密码了?</a>--%> <div class="item">
<div class="inputDiv"> <img id="imgObj" alt="验证码" src="getCaptchaImage">
<button class="btn btn-success btn-block">登录</button> <input id="timestamp" name="timestamp" value="${timestamp }" type="hidden">
<p class="text-danger">${msg}</p> <span id="chang">看不清换一张</span><br>
</div> </div>
<div>
<input type="checkbox" name="" id="">
<span>记住密码</span>
</div> </div>
</form> </form>
<div class="btn" onclick="login()">立即登录</div>
</div> </div>
<div class="bottom">
<div class="top">技术支持:厦门嘉时软件科技有限公司</div>
<div class="bot">Copyright © 2019-2090 厦门嘉时软件. All rights reserved.</div>
</div> </div>
<!--尾部-->
<div class="login_foot">
<div class="span_div"><span>${loginSet.footContext}</span></div>
</div> </div>
<script type="text/javascript" src="${path}/static/js/login.js?time=2020-11-09"></script> </div>
<script type="text/javascript" src="${path}/static/js/login.js?time=2022-01-13"></script>
</body> </body>
</html> </html>

@ -0,0 +1,59 @@
<%--
Created by IntelliJ IDEA.
User: ljx
Date: 2019/5/13
Time: 17:02
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>密码过于简单请修改密码在登录</title>
<%@ include file="/WEB-INF/jspf/common.jspf" %>
</head>
<body>
<form class="form-horizontal" role="form">
<fieldset>
<legend style="text-align: center;font-weight: bold;font-size: 25px">密码过于简单请修改密码在登录</legend>
</fieldset>
<form>
<%--<div class="form-group">--%>
<%--<label for="userPwd" class="col-sm-2 control-label">旧密码</label>--%>
<%--<div class="col-sm-5">--%>
<%--<input type="password" class="form-control" readonly value="${user.userPwd}" id="userPwd"--%>
<%--placeholder="请输入旧密码">--%>
<%--</div>--%>
<%--</div>--%>
<div class="form-group">
<label for="newUserPwd" class="col-sm-2 control-label">密码</label>
<div class="col-sm-5">
<input type="password" class="form-control" id="newUserPwd" name="newUserPwd" onblur="AnalyzePasswordSecurityLevel('newUserPwd')"
placeholder="请输入新密码" maxlength="16">
</div>
<div id="newUserPwdText" class="col-sm-2" style="color: red">
</div>
</div>
<div class="form-group">
<label for="newReUserPwd" class="col-sm-2 control-label">重复密码</label>
<div class="col-sm-5">
<input type="password" class="form-control" id="newReUserPwd" onblur="AnalyzePasswordSecurityLevel('newReUserPwd')"
placeholder="请输入重复密码" maxlength="16">
</div>
<div id="newReUserPwdText" class="col-sm-2" style="color: red">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn btn-primary" id="btn_submit">提交更改</button>
<button type="button" class="btn btn-default" id="btn_clear">清空</button>
</div>
</div>
</form>
</form>
</body>
<script src="${path}/static/js/updatePassword1.js?t=1"></script>
</html>

@ -218,7 +218,7 @@
return item[field]; return item[field];
} }
var props = field.split('.'); var props = field.split('.');
// 在IE8 中 for...in 会将方法也枚举出来 使用 for loop // <EFBFBD><EFBFBD>IE8 <20><> for...in <20><EFBFBD><E1BDAB><EFBFBD><EFBFBD>Ҳö<D2B2>ٳ<EFBFBD><D9B3><EFBFBD> ʹ<><CAB9> for loop
// for (var p in props) { // for (var p in props) {
// value = value[props[p]]; // value = value[props[p]];
// } // }
@ -1247,8 +1247,8 @@
html.push('</span>'); html.push('</span>');
html.push( html.push(
'<div class="goPage"><input type="button" value="跳转" class="pageBtn" onclick="toPage();"></div>', '<div class="goPage"><input type="button" value="<EFBFBD><EFBFBD>ת" class="pageBtn" onclick="toPage();"></div>',
'<div class="goPage">跳转到第<input id="pageNum" class="pageNum" type="number">页</div>', '<div class="goPage"><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><input id="pageNum" class="pageNum" type="number">ҳ</div>',
'</div>', '</div>',
'<div class="pull-' + this.options.paginationHAlign + ' pagination">', '<div class="pull-' + this.options.paginationHAlign + ' pagination">',
'<ul class="pagination' + (this.options.iconSize === undefined ? '' : ' pagination-' + this.options.iconSize) + '">', '<ul class="pagination' + (this.options.iconSize === undefined ? '' : ' pagination-' + this.options.iconSize) + '">',
@ -2087,7 +2087,7 @@
if (this.options.showHeader && this.options.height) { if (this.options.showHeader && this.options.height) {
this.$tableHeader.show(); this.$tableHeader.show();
// // bootstrap-table 表头数据展示错位问题 // // bootstrap-table <EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>չʾ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
this.resetHeader(); this.resetHeader();
// padding += this.$header.outerHeight(); // padding += this.$header.outerHeight();
} else { } else {

@ -70,6 +70,19 @@ h3{
margin-top: 11%; margin-top: 11%;
} }
/** /**
*div
*/
.qRCodeDiv{
width: 70%;
height: 240px;
margin-left: 80px;
margin-top: 11%;
}
.QRcordImg{
margin-left: -20px;
margin-top: -8%;
}
/**
* *
*/ */
.login_foot{ .login_foot{

Binary file not shown.

After

Width:  |  Height:  |  Size: 661 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

@ -1,6 +1,6 @@
var form = '' var form = ''
var pageNumber = 1; var pageNumber = 1;
//定义表格内容最大高度 //定义表格内容最大高度
var maxHeight = 0; var maxHeight = 0;
$(function(){ $(function(){
var columns = []; var columns = [];
@ -8,93 +8,93 @@ $(function(){
checkbox:true checkbox:true
}, },
{ {
title:'序号', title:'序号',
field:'no', field:'no',
formatter: function (value, row, index) { formatter: function (value, row, index) {
//获取每页显示的数量 //获取每页显示的数量
var pageSize = $('#bootstrapTable').bootstrapTable('getOptions').pageSize; var pageSize = $('#bootstrapTable').bootstrapTable('getOptions').pageSize;
//获取当前是第几页 //获取当前是第几页
if(pageNumber == 1){ if(pageNumber == 1){
pageNumber = $('#bootstrapTable').bootstrapTable('getOptions').pageNumber; pageNumber = $('#bootstrapTable').bootstrapTable('getOptions').pageNumber;
} }
//返回序号注意index是从0开始的所以要加上1 //返回序号注意index是从0开始的所以要加上1
return pageSize * (pageNumber - 1) + index + 1; return pageSize * (pageNumber - 1) + index + 1;
} }
}, },
{ {
title:'科室名', title:'科室名',
field:'deptName', field:'deptName',
}); });
var roleId = $("#roleId").val(); var roleId = $("#roleId").val();
if(roleId == 0){ if(roleId == 0){
columns.push({ columns.push({
title:'所属医院', title:'所属医院',
field:'hospitalName', field:'hospitalName',
}); });
} }
columns.push( columns.push(
{ {
title:'是否有效', title:'是否有效',
field:'effective', field:'effective',
formatter: function (value, row, index) { formatter: function (value, row, index) {
if(value ==1){ if(value ==1){
return '是' return '是'
}else if(value ==0){ }else if(value ==0){
return '否' return '否'
} }
} }
}, },
{ {
title:'创建时间', title:'创建时间',
field:'createDate', field:'createDate',
}, },
{ {
title:'创建人', title:'创建人',
field:'creater', field:'creater',
}, },
{ {
title:'修改时间', title:'修改时间',
field:'updateDate', field:'updateDate',
}, },
{ {
title:'修改人', title:'修改人',
field:'updater', field:'updater',
}, },
{ {
title:'操作', title:'操作',
field:'deptId', formatter: function(value,row,index){ field:'deptId', formatter: function(value,row,index){
var editanddrop = ''; var editanddrop = '';
if(row.isUpdate == 1){ if(row.isUpdate == 1){
editanddrop += '<button type="button" onclick="edit('+row.deptId+')" class="btn btn-info operBtns btn-sm" >编辑</button>'; editanddrop += '<button type="button" onclick="edit('+row.deptId+')" class="btn btn-info operBtns btn-sm" >编辑</button>';
} }
if(row.isDelete == 1){ if(row.isDelete == 1){
editanddrop += '<button type="button" onclick="drop('+row.deptId+')" class="btn btn-danger operBtns btn-sm">删除</button>'; editanddrop += '<button type="button" onclick="drop('+row.deptId+')" class="btn btn-danger operBtns btn-sm">删除</button>';
} }
return editanddrop; return editanddrop;
} }
}); });
$('#myModal').modal('hide'); $('#myModal').modal('hide');
loadDict(); loadDict();
//先销毁表格 //先销毁表格
$('#bootstrapTable').bootstrapTable({ $('#bootstrapTable').bootstrapTable({
//表格高度 //表格高度
//height: getHeight(), //height: getHeight(),
method : 'get', method : 'get',
url :path+ "/dept/pageList",//请求路径 url :path+ "/dept/pageList",//请求路径
striped : true, //是否显示行间隔色 striped : true, //是否显示行间隔色
pageNumber : 1, //初始化加载第一页 pageNumber : 1, //初始化加载第一页
pagination : true,//是否分页 pagination : true,//是否分页
sidePagination : 'server',//server:服务器端分页|client前端分页 sidePagination : 'server',//server:服务器端分页|client前端分页
pageSize : 10,//单页记录数 pageSize : 10,//单页记录数
pageList : [ 5, 10, 20, 30 ],//可选择单页记录数 pageList : [ 5, 10, 20, 30 ],//可选择单页记录数
cache: false, cache: false,
paginationPreText : '上一页', paginationPreText : '上一页',
paginationNextText : '下一页', paginationNextText : '下一页',
queryParams : function(params) {//上传服务器的参数 queryParams : function(params) {//上传服务器的参数
var temp = {//如果是在服务器端实现分页limit、offset这两个参数是必须的 var temp = {//如果是在服务器端实现分页limit、offset这两个参数是必须的
limit : params.limit, // 每页显示数量 limit : params.limit, // 每页显示数量
offset : params.offset, // SQL语句起始索引 offset : params.offset, // SQL语句起始索引
page : (params.offset / params.limit) + 1, //当前页码 page : (params.offset / params.limit) + 1, //当前页码
deptName:$("#dept_name").val(), deptName:$("#dept_name").val(),
dictId:$("#dict_id option:selected").val(), dictId:$("#dict_id option:selected").val(),
effective : $("#effective option:selected").val(), effective : $("#effective option:selected").val(),
@ -103,28 +103,28 @@ $(function(){
return temp; return temp;
}, },
columns : columns, columns : columns,
onLoadSuccess: function(){ //加载成功时执行 onLoadSuccess: function(){ //加载成功时执行
$(".page-list").show(); $(".page-list").show();
$("th").css({'text-align':'center','vertical-align':'middle'}); $("th").css({'text-align':'center','vertical-align':'middle'});
$("td").css({'text-align':'center','vertical-align':'middle'}); $("td").css({'text-align':'center','vertical-align':'middle'});
reloadTableHeight("bootstrapTable"); reloadTableHeight("bootstrapTable");
}, },
//监听分页点击事件 //监听分页点击事件
onPageChange: function(num, type) { onPageChange: function(num, type) {
pageNumber = num; pageNumber = num;
}, },
//选中单个复选框 //选中单个复选框
onCheck:function(row){ onCheck:function(row){
var checks = $("#checks").val(); var checks = $("#checks").val();
$("#checks").val(checks+=row.deptId + ","); $("#checks").val(checks+=row.deptId + ",");
}, },
//取消单个复选框 //取消单个复选框
onUncheck:function(row){ onUncheck:function(row){
var checks = $("#checks").val(); var checks = $("#checks").val();
checks = checks.replace(row.deptId + ",",""); checks = checks.replace(row.deptId + ",","");
$("#checks").val(checks); $("#checks").val(checks);
}, },
//全选 //全选
onCheckAll:function(rows){ onCheckAll:function(rows){
$("#checks").val(""); $("#checks").val("");
var checks = ''; var checks = '';
@ -134,15 +134,15 @@ $(function(){
} }
$("#checks").val(checks); $("#checks").val(checks);
}, },
//全不选 //全不选
onUncheckAll: function (rows) { onUncheckAll: function (rows) {
$("#checks").val(""); $("#checks").val("");
} }
}); });
//初始化表单验证 //初始化表单验证
//formValidator(); //formValidator();
}); });
/*//回跳表格页码 /*//回跳表格页码
function backToPage(){ function backToPage(){
var pageSize=$('#bootstrapTable').bootstrapTable('getOptions').pageSize; var pageSize=$('#bootstrapTable').bootstrapTable('getOptions').pageSize;
var rows=$('#bootstrapTable').bootstrapTable("getOptions").totalRows; var rows=$('#bootstrapTable').bootstrapTable("getOptions").totalRows;
@ -152,18 +152,18 @@ function backToPage(){
} }
$('#bootstrapTable').bootstrapTable('selectPage', pageNumber); $('#bootstrapTable').bootstrapTable('selectPage', pageNumber);
}*/ }*/
//先销毁modal //先销毁modal
/*$('#myModal').on('hidden.bs.modal', function() { /*$('#myModal').on('hidden.bs.modal', function() {
$("#updateaddform").data('bootstrapValidator').destroy(); $("#updateaddform").data('bootstrapValidator').destroy();
$('#updateaddform').data('bootstrapValidator', null); $('#updateaddform').data('bootstrapValidator', null);
formValidator(); formValidator();
}); });
//form验证规则 //form验证规则
function formValidator() { function formValidator() {
//表单校验 //表单校验
form = $('#updateaddform'); form = $('#updateaddform');
form.bootstrapValidator({ form.bootstrapValidator({
message: '输入值不合法', message: '输入值不合法',
feedbackIcons: { feedbackIcons: {
valid: 'glyphicon glyphicon-ok', valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove', invalid: 'glyphicon glyphicon-remove',
@ -171,19 +171,19 @@ function formValidator() {
}, },
fields: { fields: {
re_deptName: { re_deptName: {
message: '科室名不合法', message: '科室名不合法',
validators: { validators: {
notEmpty: { notEmpty: {
message: '角色名不能为空' message: '角色名不能为空'
}, },
stringLength: { stringLength: {
min: 2, min: 2,
max: 32, max: 32,
message: '请输入2到32个字符' message: '请输入2到32个字符'
}, },
regexp: { regexp: {
regexp: /^[a-zA-Z0-9_\. \u4e00-\u9fa5 ]+$/, regexp: /^[a-zA-Z0-9_\. \u4e00-\u9fa5 ]+$/,
message: '角色名只能由字母、数字、点、下划线和汉字组成 ' message: '角色名只能由字母、数字、点、下划线和汉字组成 '
} }
} }
} }
@ -203,7 +203,7 @@ function formValidator() {
} }
}); });
}*/ }*/
//加载 //加载
function loadDict(){ function loadDict(){
$.ajax({ $.ajax({
type: "GET", type: "GET",
@ -222,7 +222,7 @@ function loadDict(){
} }
}); });
} }
//验证科室名不能重复 //验证科室名不能重复
$("#re_deptName").blur(function(){ $("#re_deptName").blur(function(){
var deptId = $("#re_deptId").val(); var deptId = $("#re_deptId").val();
var deptName = $("#re_deptName").val(); var deptName = $("#re_deptName").val();
@ -235,7 +235,7 @@ $("#re_deptName").blur(function(){
dataType:'json', dataType:'json',
success:function(data){ success:function(data){
if(data.code == 200){ if(data.code == 200){
toastr.warning("部门名已存在"); toastr.warning("部门名已存在");
$("#re_deptName").val(""); $("#re_deptName").val("");
$("#re_deptName").focus(); $("#re_deptName").focus();
} }
@ -244,9 +244,9 @@ $("#re_deptName").blur(function(){
} }
}) })
//编辑框回显 //编辑框回显
function edit(id){ function edit(id){
$("#myModalLabel").text("编辑"); $("#myModalLabel").text("编辑");
$.ajax({ $.ajax({
type: "post", type: "post",
url: path+ "/dept/selectDept", url: path+ "/dept/selectDept",
@ -264,11 +264,11 @@ function edit(id){
}); });
$('#myModal').modal('show') $('#myModal').modal('show')
} }
//删除 //删除
function drop(id) { function drop(id) {
Common.confirm({ Common.confirm({
title: "提示", title: "提示",
message: "确定是否删除这条记录", message: "确定是否删除这条记录",
operate: function (reselt) { operate: function (reselt) {
if (reselt) { if (reselt) {
$.ajax({ $.ajax({
@ -280,35 +280,35 @@ function drop(id) {
async: false, async: false,
success: function (data) { success: function (data) {
if ("success" == data.msg) { if ("success" == data.msg) {
toastr.success("删除成功!"); toastr.success("删除成功!");
$("#checks").val(""); $("#checks").val("");
backToPage(); backToPage();
} }
}, },
error: function () { error: function () {
window.confirm("删除失败"); window.confirm("删除失败");
} }
}) })
} }
} }
}) })
} }
//新增框 //新增框
function add() { function add() {
initable(); initable();
$("#myModalLabel").text('增加'); $("#myModalLabel").text('增加');
$('#myModal').modal('show'); $('#myModal').modal('show');
$("#re_dictId").empty(); $("#re_dictId").empty();
loadDict(); loadDict();
} }
//提交更改 //提交更改
$('#btn_submit').click(function () { $('#btn_submit').click(function () {
var deptName = $("#re_deptName").val(); var deptName = $("#re_deptName").val();
var dictId = $("#re_dictId").val(); var dictId = $("#re_dictId").val();
if(deptName != ''){ if(deptName != ''){
if(dictId != ''){ if(dictId != ''){
var btype = $("#myModalLabel").text(); var btype = $("#myModalLabel").text();
if(btype=='编辑'){ if(btype=='编辑'){
$.ajax({ $.ajax({
type: "post", type: "post",
url: path+ "/dept/update", url: path+ "/dept/update",
@ -316,7 +316,7 @@ $('#btn_submit').click(function () {
dataType:"json", dataType:"json",
success: function(data){ success: function(data){
if("success"==data.msg){ if("success"==data.msg){
toastr.success("修改成功!"); toastr.success("修改成功!");
backToPage(); backToPage();
$('#myModal').modal('hide'); $('#myModal').modal('hide');
}else{ }else{
@ -324,7 +324,7 @@ $('#btn_submit').click(function () {
} }
} }
}) })
}else if(btype =='增加'){ }else if(btype =='增加'){
$.ajax({ $.ajax({
type: "post", type: "post",
url:path+ "/dept/add", url:path+ "/dept/add",
@ -332,7 +332,7 @@ $('#btn_submit').click(function () {
dataType:"json", dataType:"json",
success: function(data){ success: function(data){
if("success"==data.msg){ if("success"==data.msg){
toastr.success("添加成功!"); toastr.success("添加成功!");
setTimeout(function(){ setTimeout(function(){
window.location.reload(); window.location.reload();
},500) },500)
@ -344,18 +344,18 @@ $('#btn_submit').click(function () {
}) })
} }
}else{ }else{
toastr.warning("所属医院不能为空!"); toastr.warning("所属医院不能为空!");
} }
}else{ }else{
toastr.warning("部门名称不能为空!"); toastr.warning("部门名称不能为空!");
} }
}) })
//初始化模态框 //初始化模态框
function initable(){ function initable(){
$("#re_deptId").val(""); $("#re_deptId").val("");
$("#updateaddform")[0].reset(); $("#updateaddform")[0].reset();
} }
//导出excel功能 //导出excel功能
function exportExcel(){ function exportExcel(){
var roleId = $("#roleId").val(); var roleId = $("#roleId").val();
var url = ''; var url = '';
@ -370,8 +370,8 @@ function exportExcel(){
window.location.href = url; window.location.href = url;
}else{ }else{
Common.confirm({ Common.confirm({
title: "提示", title: "提示",
message: "没有选中,您确定要按搜索栏条件导出?", message: "没有选中,您确定要按搜索栏条件导出?",
operate: function (reselt) { operate: function (reselt) {
if (reselt) { if (reselt) {
if (roleId == 0) { if (roleId == 0) {
@ -385,22 +385,22 @@ function exportExcel(){
}) })
} }
} }
//搜索 //搜索
$('#queryBtn').click(function () { $('#queryBtn').click(function () {
$("#checks").val(""); $("#checks").val("");
refresh(); refresh();
}) })
//刷新表格 //刷新表格
function refresh() { function refresh() {
$('#bootstrapTable').bootstrapTable('refresh',{ $('#bootstrapTable').bootstrapTable('refresh',{
url :path+ '/dept/pageList' url :path+ '/dept/pageList'
}) })
} }
//清空 //清空
function clearForm(){ function clearForm(){
$("#updateaddform")[0].reset(); $("#updateaddform")[0].reset();
} }
//监听关闭模态框刷新事件 //监听关闭模态框刷新事件
$('#myModal1').on('hide.bs.modal', function () { $('#myModal1').on('hide.bs.modal', function () {
window.location.reload(); window.location.reload();
}); });

@ -1,70 +1,84 @@
/** function login() {
* Created by ljx on 2019/4/25.
*/
$(function(){
//cookie数据保存格式是key=value;key=value;形式loginInfo为保存在cookie中的key值具体看controller代码
/*if(str != ""){
var userName = str.split("#")[0];
var userPwd = str.split("#")[1];
//自动填充用户名和密码
$("#userName").val(userName);
$("#userPwd").val(userPwd);
//并且选中复选框
$("#rememberMe").attr("checked", true);
}*/
//获取cookie
/*function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
}
return "";
}*/
$("#forgetPwd").on("click",function(){
alert("请联系管理员进行修改密码!");
});
});
$('body').keydown(function () {
if(event.keyCode == '13'){
var userName = $("#userName").val(); var userName = $("#userName").val();
var userPwd = $("#userPwd").val(); var userPwd = $("#userPwd").val();
//验证码
var imageContent = $("#imageContent").val().trim();
var rememberMeChecked = $("input[type='checkbox']").is(':checked'); var rememberMeChecked = $("input[type='checkbox']").is(':checked');
var rememberMe = ''; var rememberMe = '';
if(rememberMeChecked){ if (rememberMeChecked) {
rememberMe = 'yes'; rememberMe = 'yes';
} }
if(userName == ''){ if (userName == '') {
toastr.warning("用户名不能为空!"); return toastr.warning("用户名不能为空!");
}else{ }
if(userPwd == ''){ if (userPwd == '') {
toastr.warning("密码不能为空!"); return toastr.warning("密码不能为空!");
}else{ }
if (imageContent.length == 0) {
return toastr.warning("请输入验证码!");
}
$.ajax({ $.ajax({
type : "POST", type: "POST",
url : path+"/login", url: path + "/login",
data: {userName:userName, userPwd:userPwd,rememberMe:rememberMe}, data: {userName: userName, userPwd: userPwd, rememberMe: rememberMe,code:imageContent},
success : function(data) { dataType: 'json',
//window.location.href = 'gatewayPage'; success: function (data) {
}, changeImg();
}) if (data.code == 100) {
window.location.href = data.extend.url;
} else {
changeImg();
toastr.warning(data.msg);
} }
} }
})
}
$('body').keydown(function () {
if (event.keyCode == '13') {
login();
} }
}) })
/** /**
* 判断是iframe框架跳出iframe框架使用top链接 * 判断是iframe框架跳出iframe框架使用top链接
*/ */
if (top.location != location){ if (top.location != location) {
top.location.href = location.href; top.location.href = location.href;
} }
/**
* 更换验证码
*/
function changeImg() {
var imgSrc = $("#imgObj");
var src = imgSrc.attr("src");
imgSrc.attr("src", chgUrl(src));
};
/**
* 时间戳
* 为了使每次生成图片不一致即不让浏览器读缓存所以需要加上时间戳
*/
function chgUrl(url) {
var timestamp = (new Date()).valueOf();
var stamp = $("#timestamp");
// alert(url);
url = url.substring(0, 60);
if ((url.indexOf("&") >= 0)) {
url = url + "×tamp=" + timestamp;
} else {
url = url + "?timestamp=" + timestamp;
stamp.val(timestamp);
}
return url;
};
var chang = document.getElementById('chang');
//看不起换一张
chang.onclick = function () {
changeImg();
}

@ -0,0 +1,256 @@
/*
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
* Digest Algorithm, as defined in RFC 1321.
* Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for more info.
*/
/*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
/*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded strings
*/
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
/*
* Perform a simple self-test to see if the VM is working
*/
function md5_vm_test()
{
return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}
/*
* Calculate the MD5 of an array of little-endian words, and a bit length
*/
function core_md5(x, len)
{
/* append padding */
x[len >> 5] |= 0x80 << ((len) % 32);
x[(((len + 64) >>> 9) << 4) + 14] = len;
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
}
return Array(a, b, c, d);
}
/*
* These functions implement the four basic operations the algorithm uses.
*/
function md5_cmn(q, a, b, x, s, t)
{
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}
/*
* Calculate the HMAC-MD5, of a key and some data
*/
function core_hmac_md5(key, data)
{
var bkey = str2binl(key);
if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}
var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
return core_md5(opad.concat(hash), 512 + 128);
}
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safe_add(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
/*
* Bitwise rotate a 32-bit number to the left.
*/
function bit_rol(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}
/*
* Convert a string to an array of little-endian words
* If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
*/
function str2binl(str)
{
var bin = Array();
var mask = (1 << chrsz) - 1;
for(var i = 0; i < str.length * chrsz; i += chrsz)
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
return bin;
}
/*
* Convert an array of little-endian words to a string
*/
function binl2str(bin)
{
var str = "";
var mask = (1 << chrsz) - 1;
for(var i = 0; i < bin.length * 32; i += chrsz)
str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
return str;
}
/*
* Convert an array of little-endian words to a hex string.
*/
function binl2hex(binarray)
{
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var str = "";
for(var i = 0; i < binarray.length * 4; i++)
{
str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
}
return str;
}
/*
* Convert an array of little-endian words to a base-64 string
*/
function binl2b64(binarray)
{
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var str = "";
for(var i = 0; i < binarray.length * 4; i += 3)
{
var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16)
| (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
| ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
}
}
return str;
}

@ -1,21 +1,21 @@
var pageNumber; var pageNumber;
//定义表格内容最大高度 //定义表格内容最大高度
var maxHeight = 0; var maxHeight = 0;
$('#bootstrapTable').bootstrapTable({ $('#bootstrapTable').bootstrapTable({
toolbar: '#toolbar', //工具按钮用哪个容器 toolbar: '#toolbar', //工具按钮用哪个容器
method : 'get', method : 'get',
striped: true, //是否显示行间隔色 striped: true, //是否显示行间隔色
cache: false, //是否使用缓存默认为true所以一般情况下需要设置一下这个属性* cache: false, //是否使用缓存默认为true所以一般情况下需要设置一下这个属性*
pagination: true, //是否显示分页(* pagination: true, //是否显示分页(*
sidePagination : 'server',//server:服务器端分页|client前端分页 sidePagination : 'server',//server:服务器端分页|client前端分页
paginationPreText : '上一页', paginationPreText : '上一页',
paginationNextText : '下一页', paginationNextText : '下一页',
pageNumber: 1, //初始化加载第一页,默认第一页 pageNumber: 1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(* pageSize: 10, //每页的记录行数(*
pageList: [5,10,20,50,1000],//可供选择的每页的行数(* pageList: [5,10,20,50,1000],//可供选择的每页的行数(*
columns:[ columns:[
{ {
title:'全选', title:'全选',
field:'select', field:'select',
checkbox:true, checkbox:true,
width:25, width:25,
@ -24,60 +24,60 @@ $('#bootstrapTable').bootstrapTable({
}, },
{ {
field: 'no', field: 'no',
title: '序号', title: '序号',
sortable: true, sortable: true,
formatter: function (value, row, index) { formatter: function (value, row, index) {
//获取每页显示的数量 //获取每页显示的数量
var pageSize=$('#bootstrapTable').bootstrapTable('getOptions').pageSize; var pageSize=$('#bootstrapTable').bootstrapTable('getOptions').pageSize;
//获取当前是第几页 //获取当前是第几页
var pageNumber=$('#bootstrapTable').bootstrapTable('getOptions').pageNumber; var pageNumber=$('#bootstrapTable').bootstrapTable('getOptions').pageNumber;
//返回序号注意index是从0开始的所以要加上1 //返回序号注意index是从0开始的所以要加上1
return pageSize * (pageNumber - 1) + index + 1; return pageSize * (pageNumber - 1) + index + 1;
} }
}, },
{ {
title:'操作人', title:'操作人',
field:'creater' field:'creater'
}, },
{ {
title:'日志主题', title:'日志主题',
field:'logTitle' field:'logTitle'
}, },
{ {
title:'日志内容', title:'日志内容',
field:'logContent' field:'logContent'
}, },
{ {
title:'备注', title:'备注',
field:'remark' field:'remark'
}, },
{ {
title:'操作时间', title:'操作时间',
field:'createDate' field:'createDate'
}, },
{ {
title:'ip地址', title:'ip地址',
field:'ip' field:'ip'
}, },
{ {
title:'操作', title:'操作',
field:'id', field:'id',
formatter: function(value,row,index){ formatter: function(value,row,index){
var deleteOper = row.deleteOper; var deleteOper = row.deleteOper;
if(deleteOper == 1){ if(deleteOper == 1){
var editanddrop = '<button type="button" onclick="deleteLogById('+row.logId+')" class="btn btn-sm btn-danger">删除</button>'; var editanddrop = '<button type="button" onclick="deleteLogById('+row.logId+')" class="btn btn-sm btn-danger">删除</button>';
return editanddrop; return editanddrop;
} }
} }
} }
], ],
locale:'zh-CN',//中文支持, locale:'zh-CN',//中文支持,
url:path+'/otherManage/getLogList',//排序方式 url:path+'/otherManage/getLogList',//排序方式
queryParams: function (params) { queryParams: function (params) {
return{ return{
limit : params.limit, // 每页显示数量 limit : params.limit, // 每页显示数量
offset : params.offset, // SQL语句起始索引 offset : params.offset, // SQL语句起始索引
page : (params.offset / params.limit) + 1, //当前页码 page : (params.offset / params.limit) + 1, //当前页码
startTime:$("#startTime1").val(), startTime:$("#startTime1").val(),
endTime:$("#endTime1").val(), endTime:$("#endTime1").val(),
creater:$("#creater").val(), creater:$("#creater").val(),
@ -85,18 +85,18 @@ $('#bootstrapTable').bootstrapTable({
logContent:$("#logContent").val() logContent:$("#logContent").val()
} }
}, },
//选中单个复选框 //选中单个复选框
onCheck:function(row){ onCheck:function(row){
var checks = $("#checks").val(); var checks = $("#checks").val();
$("#checks").val(checks+=row.logId + ","); $("#checks").val(checks+=row.logId + ",");
}, },
//取消单个复选框 //取消单个复选框
onUncheck:function(row){ onUncheck:function(row){
var checks = $("#checks").val(); var checks = $("#checks").val();
checks = checks.replace(row.logId + ","); checks = checks.replace(row.logId + ",");
$("#checks").val(checks); $("#checks").val(checks);
}, },
//全选 //全选
onCheckAll:function(rows){ onCheckAll:function(rows){
$("#checks").val(""); $("#checks").val("");
var checks = ''; var checks = '';
@ -106,7 +106,7 @@ $('#bootstrapTable').bootstrapTable({
} }
$("#checks").val(checks); $("#checks").val(checks);
}, },
//全不选 //全不选
onUncheckAll: function (rows) { onUncheckAll: function (rows) {
$("#checks").val(""); $("#checks").val("");
}, },
@ -115,12 +115,12 @@ $('#bootstrapTable').bootstrapTable({
$("#fixed-table-footer").show(); $("#fixed-table-footer").show();
reloadTableHeight("bootstrapTable"); reloadTableHeight("bootstrapTable");
}, },
//监听分页点击事件 //监听分页点击事件
onPageChange: function(num, type) { onPageChange: function(num, type) {
pageNumber = num; pageNumber = num;
} }
}) })
//查询按钮 //查询按钮
function refreshTable(){ function refreshTable(){
$("#checks").val(""); $("#checks").val("");
$('#bootstrapTable').bootstrapTable('refresh',{ $('#bootstrapTable').bootstrapTable('refresh',{
@ -128,11 +128,11 @@ function refreshTable(){
}) })
$('#bootstrapTable').bootstrapTable('selectPage', pageNumber); $('#bootstrapTable').bootstrapTable('selectPage', pageNumber);
} }
//删除 //删除
function deleteLogById(logId){ function deleteLogById(logId){
Common.confirm({ Common.confirm({
title: "提示", title: "提示",
message: '确定删除这条数据吗?', message: '确定删除这条数据吗?',
operate: function (reselt) { operate: function (reselt) {
if (reselt) { if (reselt) {
$.ajax({ $.ajax({
@ -141,7 +141,7 @@ function deleteLogById(logId){
dataType: 'json', dataType: 'json',
success: function (data) { success: function (data) {
if (data.code == 100) { if (data.code == 100) {
toastr.success("删除成功!"); toastr.success("删除成功!");
refreshTable(); refreshTable();
} else { } else {
toastr.warning(data.msg); toastr.warning(data.msg);
@ -152,14 +152,14 @@ function deleteLogById(logId){
} }
}) })
} }
//批量删除 //批量删除
function deleteLogByIds(){ function deleteLogByIds(){
var ids = $("#checks").val(); var ids = $("#checks").val();
if(ids != ''){ if(ids != ''){
var idStr = ids.split(","); var idStr = ids.split(",");
Common.confirm({ Common.confirm({
title: "提示", title: "提示",
message: '确定删除选中的'+ (idStr.length-1)+ '条数据吗?', message: '确定删除选中的'+ (idStr.length-1)+ '条数据吗?',
operate: function (reselt) { operate: function (reselt) {
if (reselt) { if (reselt) {
$.ajax({ $.ajax({
@ -168,7 +168,7 @@ function deleteLogByIds(){
dataType: 'json', dataType: 'json',
success: function (data) { success: function (data) {
if (data.code == 100) { if (data.code == 100) {
toastr.success("删除成功!"); toastr.success("删除成功!");
$("#checks").val(); $("#checks").val();
refreshTable(); refreshTable();
} else { } else {
@ -180,10 +180,10 @@ function deleteLogByIds(){
} }
}) })
}else{ }else{
toastr.warning("请至少选中一个!"); toastr.warning("请至少选中一个!");
} }
} }
//导出excel功能 //导出excel功能
function exportExcel(){ function exportExcel(){
var checks = $("#checks").val(); var checks = $("#checks").val();
if(checks != '') { if(checks != '') {
@ -193,8 +193,8 @@ function exportExcel(){
window.location.href = url; window.location.href = url;
}else{ }else{
Common.confirm({ Common.confirm({
title: "提示", title: "提示",
message: "没有选中,您确定要按搜索栏条件导出?", message: "没有选中,您确定要按搜索栏条件导出?",
operate: function (reselt) { operate: function (reselt) {
if (reselt) { if (reselt) {
var url = path+"/otherManage/exportExcel?startTime="+$("#startTime1").val()+"&endTime="+$("#endTime1").val()+"&creater="+$("#creater").val()+"&logTitle="+$("#logTitle").val()+"&logContent="+$("#logContent").val(); var url = path+"/otherManage/exportExcel?startTime="+$("#startTime1").val()+"&endTime="+$("#endTime1").val()+"&creater="+$("#creater").val()+"&logTitle="+$("#logTitle").val()+"&logContent="+$("#logContent").val();

@ -3,30 +3,30 @@
*/ */
var pageNumber = 1; var pageNumber = 1;
var form = ''; var form = '';
//定义表格内容最大高度 //定义表格内容最大高度
var maxHeight = 0; var maxHeight = 0;
$(function(){ $(function(){
$('#myModal').modal('hide'); $('#myModal').modal('hide');
//先销毁表格 //先销毁表格
$('#bootstrapTable').bootstrapTable({ $('#bootstrapTable').bootstrapTable({
//表格高度 //表格高度
//height: getHeight(), //height: getHeight(),
method : 'get', method : 'get',
url : path+ "/role/pageList",//请求路径 url : path+ "/role/pageList",//请求路径
striped : true, //是否显示行间隔色 striped : true, //是否显示行间隔色
pageNumber : 1, //初始化加载第一页 pageNumber : 1, //初始化加载第一页
pagination : true,//是否分页 pagination : true,//是否分页
sidePagination : 'server',//server:服务器端分页|client前端分页 sidePagination : 'server',//server:服务器端分页|client前端分页
pageSize : 10,//单页记录数 pageSize : 10,//单页记录数
pageList : [ 5, 10, 20, 30 ],//可选择单页记录数 pageList : [ 5, 10, 20, 30 ],//可选择单页记录数
cache: false, cache: false,
paginationPreText : '上一页', paginationPreText : '上一页',
paginationNextText : '下一页', paginationNextText : '下一页',
queryParams : function(params) {//上传服务器的参数 queryParams : function(params) {//上传服务器的参数
var temp = {//如果是在服务器端实现分页limit、offset这两个参数是必须的 var temp = {//如果是在服务器端实现分页limit、offset这两个参数是必须的
limit : params.limit, // 每页显示数量 limit : params.limit, // 每页显示数量
offset : params.offset, // SQL语句起始索引 offset : params.offset, // SQL语句起始索引
page : (params.offset / params.limit) + 1, //当前页码 page : (params.offset / params.limit) + 1, //当前页码
roleId:$("#role_id").val(), roleId:$("#role_id").val(),
roleName:$("#role_name").val(), roleName:$("#role_name").val(),
effective : $("#effective option:selected").val(), effective : $("#effective option:selected").val(),
@ -38,25 +38,25 @@ $(function(){
checkbox:true checkbox:true
}, },
{ {
title:'序号', title:'序号',
field:'no', field:'no',
formatter: function (value, row, index) { formatter: function (value, row, index) {
//获取每页显示的数量 //获取每页显示的数量
var pageSize = $('#bootstrapTable').bootstrapTable('getOptions').pageSize; var pageSize = $('#bootstrapTable').bootstrapTable('getOptions').pageSize;
//获取当前是第几页 //获取当前是第几页
if(pageNumber == 1){ if(pageNumber == 1){
pageNumber = $('#bootstrapTable').bootstrapTable('getOptions').pageNumber; pageNumber = $('#bootstrapTable').bootstrapTable('getOptions').pageNumber;
} }
//返回序号注意index是从0开始的所以要加上1 //返回序号注意index是从0开始的所以要加上1
return pageSize * (pageNumber - 1) + index + 1; return pageSize * (pageNumber - 1) + index + 1;
} }
}, },
{ {
title:'角色名', title:'角色名',
field:'roleName', field:'roleName',
}, },
{ {
title:'备注', title:'备注',
field:'remark', field:'remark',
formatter:function (value,row,index) { formatter:function (value,row,index) {
if(value ==null){ if(value ==null){
@ -67,61 +67,61 @@ $(function(){
} }
}, },
{ {
title:'是否有效', title:'是否有效',
field:'effective', field:'effective',
formatter: function (value, row, index) { formatter: function (value, row, index) {
if(value ==1){ if(value ==1){
return '是' return '是'
}else if(value ==0){ }else if(value ==0){
return '否' return '否'
} }
} }
}, },
{ {
title:'创建时间', title:'创建时间',
field:'createDate', field:'createDate',
}, },
{ {
title:'创建人', title:'创建人',
field:'creater', field:'creater',
}, },
{ {
title:'操作', title:'操作',
field:'roleId', formatter: function(value,row,index){ field:'roleId', formatter: function(value,row,index){
var editanddrop = ''; var editanddrop = '';
if(row.isUpdate == 1){ if(row.isUpdate == 1){
editanddrop += '<button type="button" onclick="edit('+row.roleId+')" class="btn btn-info operBtns btn-sm" >编辑</button>'; editanddrop += '<button type="button" onclick="edit('+row.roleId+')" class="btn btn-info operBtns btn-sm" >编辑</button>';
} }
if(row.isDelete == 1){ if(row.isDelete == 1){
editanddrop += '<button type="button" onclick="drop('+row.roleId+')" class="btn btn-danger operBtns btn-sm">删除</button>'; editanddrop += '<button type="button" onclick="drop('+row.roleId+')" class="btn btn-danger operBtns btn-sm">删除</button>';
} }
return editanddrop; return editanddrop;
} }
} }
], ],
onLoadSuccess: function(){ //加载成功时执行 onLoadSuccess: function(){ //加载成功时执行
$(".page-list").show(); $(".page-list").show();
$("th").css({'text-align':'center','vertical-align':'middle'}); $("th").css({'text-align':'center','vertical-align':'middle'});
$("td").css({'text-align':'center','vertical-align':'middle'}); $("td").css({'text-align':'center','vertical-align':'middle'});
reloadTableHeight("bootstrapTable"); reloadTableHeight("bootstrapTable");
}, },
//监听分页点击事件 //监听分页点击事件
onPageChange: function(num, type) { onPageChange: function(num, type) {
pageNumber = num; pageNumber = num;
}, },
//选中单个复选框 //选中单个复选框
onCheck:function(row){ onCheck:function(row){
var checks = $("#checks").val(); var checks = $("#checks").val();
$("#checks").val(checks+=row.roleId + ","); $("#checks").val(checks+=row.roleId + ",");
}, },
//取消单个复选框 //取消单个复选框
onUncheck:function(row){ onUncheck:function(row){
var checks = $("#checks").val(); var checks = $("#checks").val();
checks = checks.replace(row.roleId + ",",""); checks = checks.replace(row.roleId + ",","");
$("#checks").val(checks); $("#checks").val(checks);
}, },
//全选 //全选
onCheckAll:function(rows){ onCheckAll:function(rows){
$("#checks").val(""); $("#checks").val("");
var checks = ''; var checks = '';
@ -131,14 +131,14 @@ $(function(){
} }
$("#checks").val(checks); $("#checks").val(checks);
}, },
//全不选 //全不选
onUncheckAll: function (rows) { onUncheckAll: function (rows) {
$("#checks").val(""); $("#checks").val("");
} }
}); });
}); });
//验证角色名不能重复 //验证角色名不能重复
$("#re_roleName").blur(function(){ $("#re_roleName").blur(function(){
var roleName = $("#re_roleName").val(); var roleName = $("#re_roleName").val();
var roleId = $("#re_roleId").val(); var roleId = $("#re_roleId").val();
@ -158,9 +158,9 @@ $("#re_roleName").blur(function(){
}) })
} }
}) })
//编辑框回显 //编辑框回显
function edit(id){ function edit(id){
$("#myModalLabel").text("编辑"); $("#myModalLabel").text("编辑");
$.ajax({ $.ajax({
type: "post", type: "post",
url:path+ "/role/selectRole", url:path+ "/role/selectRole",
@ -178,11 +178,11 @@ function edit(id){
$('#myModal').modal('show') $('#myModal').modal('show')
} }
//删除 //删除
function drop(id) { function drop(id) {
Common.confirm({ Common.confirm({
title: "提示", title: "提示",
message: "确定是否删除这条记录", message: "确定是否删除这条记录",
operate: function (reselt) { operate: function (reselt) {
if (reselt) { if (reselt) {
$.ajax({ $.ajax({
@ -194,28 +194,28 @@ function drop(id) {
async: false, async: false,
success: function (data) { success: function (data) {
if ("success" == data.msg) { if ("success" == data.msg) {
toastr.success("删除成功!"); toastr.success("删除成功!");
$("#checks").val(""); $("#checks").val("");
backToPage(); backToPage();
} }
}, },
error: function () { error: function () {
window.confirm("删除失败"); window.confirm("删除失败");
} }
}) })
} }
} }
}) })
} }
//新增框 //新增框
function add() { function add() {
initable(); initable();
$("#myModalLabel").text('增加'); $("#myModalLabel").text('增加');
$('#myModal').modal('show') $('#myModal').modal('show')
} }
//提交更改 //提交更改
$('#btn_submit').click(function () { $('#btn_submit').click(function () {
//获取档案管理系统的权限复选框是否选中 //获取档案管理系统的权限复选框是否选中
var roleName = $("#re_roleName").val(); var roleName = $("#re_roleName").val();
if(roleName != ''){ if(roleName != ''){
var roleId = $("#re_roleId").val(); var roleId = $("#re_roleId").val();
@ -232,7 +232,7 @@ $('#btn_submit').click(function () {
dataType:"json", dataType:"json",
success: function(data){ success: function(data){
if("success"==data.msg){ if("success"==data.msg){
toastr.success('保存成功!'); toastr.success('保存成功!');
$('#myModal').modal('hide'); $('#myModal').modal('hide');
backToPage(); backToPage();
}else{ }else{
@ -241,35 +241,35 @@ $('#btn_submit').click(function () {
} }
}) })
}else{ }else{
toastr.warning("角色名不能为空!"); toastr.warning("角色名不能为空!");
} }
}) })
//初始化模态框 //初始化模态框
function initable(){ function initable(){
$("#updateaddform")[0].reset(); $("#updateaddform")[0].reset();
$("#re_roleId").val(""); $("#re_roleId").val("");
} }
//搜索 //搜索
$('#queryBtn').click(function () { $('#queryBtn').click(function () {
$("#checks").val(""); $("#checks").val("");
refresh(); refresh();
}) })
//获取table的高度 //获取table的高度
function getHeight() { function getHeight() {
return $(window).height() * 0.8; return $(window).height() * 0.8;
} }
//刷新表格 //刷新表格
function refresh() { function refresh() {
$('#bootstrapTable').bootstrapTable('refresh',{ $('#bootstrapTable').bootstrapTable('refresh',{
url : path+'/role/pageList' url : path+'/role/pageList'
}) })
} }
//清空 //清空
function clearForm(){ function clearForm(){
$("#updateaddform")[0].reset(); $("#updateaddform")[0].reset();
} }
//导出excel功能 //导出excel功能
function exportExcel(){ function exportExcel(){
var checks = $("#checks").val(); var checks = $("#checks").val();
if(checks != '') { if(checks != '') {
@ -278,8 +278,8 @@ function exportExcel(){
window.location.href = url; window.location.href = url;
}else{ }else{
Common.confirm({ Common.confirm({
title: "提示", title: "提示",
message: "没有选中,您确定要按搜索栏条件导出?", message: "没有选中,您确定要按搜索栏条件导出?",
operate: function (reselt) { operate: function (reselt) {
if (reselt) { if (reselt) {
var url = path + "/role/exportNotDown?roleName=" + $("#role_name").val() + "&effective=" + $("#effective").val() + "&creater=" + $("#creater").val() + "&checks=" + checks; var url = path + "/role/exportNotDown?roleName=" + $("#role_name").val() + "&effective=" + $("#effective").val() + "&creater=" + $("#creater").val() + "&checks=" + checks;
@ -290,7 +290,7 @@ function exportExcel(){
} }
} }
//监听关闭模态框刷新事件 //监听关闭模态框刷新事件
$('#myModal1').on('hide.bs.modal', function () { $('#myModal1').on('hide.bs.modal', function () {
window.location.reload(); window.location.reload();
}); });

@ -24,6 +24,12 @@ $(function() {
toastr.warning("重复密码与密码不一致!") toastr.warning("重复密码与密码不一致!")
return false; return false;
} }
reg = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$)(?=.*[\W]).{8,32}$/;
var mm = $("#newUserPwd").val();
if (!reg.test($("#newUserPwd").val())) {
toastr.warning("密码不低于8位包含大写字母、小写字母、符号、数字!")
return false;
}
$.ajax({ $.ajax({
type: "post", type: "post",
url: path+"/user/updatePassword", url: path+"/user/updatePassword",

@ -0,0 +1,224 @@
$(function() {
var isOldValid = true;
//清空
$('#btn_clear').click(function () {
$("#newUserPwd").val("");
$("#newReUserPwd").val("");
isOldValid = true;
});
//提交更改
$('#btn_submit').click(function () {
if($("#newUserPwd").val() == ""){
toastr.warning("新密码不能为空!")
return false;
}
if($("#newUserPwd").val().length < 8){
toastr.warning("新密码长度小于8位")
return false;
}
if($("#newReUserPwd").val() == ""){
toastr.warning("重复密码不能为空!")
return false;
}
if($("#newReUserPwd").val().length < 8){
toastr.warning("重复密码长度小于8位")
return false;
}
reg = /^(?![A-Za-z]+$)(?![A-Z\d]+$)(?![A-Z\W]+$)(?![a-z\d]+$)(?![a-z\W]+$)(?![\d\W]+$)\S{8,20}$/;
var mm = $("#newUserPwd").val();
if (!reg.test($("#newUserPwd").val())) {
toastr.warning("口令必须包含如下字符的组合:一个小写字母、个大写字母、一数字、一特殊字符!")
return false;
}
if($("#newReUserPwd").val() != $("#newUserPwd").val() ){
toastr.warning("重复密码与密码不一致!")
return false;
}
var userPwd = $("#newUserPwd").val();
$.ajax({
url: path+"/user/updatePassword",
data:{userPwd : userPwd},
dataType:'json',
success: function(data){
if(data.extend.result){
toastr.success("修改成功!");
window.location.replace(path+"/login")
setTimeout(function(){
window.location.reload();
},1000)
}else{
toastr.error("修改失败!");
}
}
});
});
/*//验证旧密码
$('#userPwd').blur(function () {
$.ajax({
type: "post",
url: path+"/user/updatePassword",
data:{userPwd : $("#userPwd").val()},
async:false,
success: function(data){
if( ! data.extend.result){
toastr.warning("旧密码输入错误!");
isOldValid = false;
}else{
isOldValid = true;
}
}
});
})*/
});
/**
* 密码强度动态验证
* @param passName
* @constructor
*/
function AnalyzePasswordSecurityLevel(passName) {
var password =$("#"+passName).val();
var pwdArray = new Array();
var securityLevelFlag = 0;
if (passName == "newReUserPwd") {
if(password == $("#newUserPwd").val()){
if (password.length < 8) {
if (passName == "newUserPwd"){
$("#newUserPwdText").text("");
$("#newUserPwdText").text("密码长度不能小于8位");
}
if (passName == "newReUserPwd") {
$("#newReUserPwdText").text("");
$("#newReUserPwdText").text("密码长度不能小于8位");
}
}
else {
var securityLevelFlagArray = new Array(0, 0, 0, 0);
for (var i = 0; i < password.length; i++) {
var asciiNumber = password.substr(i, 1).charCodeAt();
if (asciiNumber >= 48 && asciiNumber <= 57) {
securityLevelFlagArray[0] = 1; //digital
}
else if (asciiNumber >= 97 && asciiNumber <= 122) {
securityLevelFlagArray[1] = 1; //lowercase
}
else if (asciiNumber >= 65 && asciiNumber <= 90) {
securityLevelFlagArray[2] = 1; //uppercase
}
else {
securityLevelFlagArray[3] = 1; //specialcase
}
}
for (var i = 0; i < securityLevelFlagArray.length; i++) {
if (securityLevelFlagArray[i] == 1) {
securityLevelFlag++;
}
}
if (passName == "newUserPwd"){
if (securityLevelFlag == 1){
$("#newUserPwdText").text("");
$("#newUserPwdText").text("密码安全低");
}
if (securityLevelFlag == 2 || securityLevelFlag == 3){
$("#newUserPwdText").text("");
$("#newUserPwdText").text("密码安全中等");
}
if (securityLevelFlag == 4){
$("#newUserPwdText").text("");
$("#newUserPwdText").text("密码安全高");
}
}
if (passName == "newReUserPwd") {
if (securityLevelFlag == 1){
$("#newReUserPwdText").text("");
$("#newReUserPwdText").text("密码安全低");
}
if (securityLevelFlag == 2 || securityLevelFlag == 3){
$("#newReUserPwdText").text("");
$("#newReUserPwdText").text("密码安全中等");
}
if (securityLevelFlag == 4){
$("#newReUserPwdText").text("");
$("#newReUserPwdText").text("密码安全高");
}
}
}
} else {
$("#newReUserPwdText").text("");
$("#newReUserPwdText").text("两次密码不相同");
}
} else {
if (password.length < 8) {
if (passName == "newUserPwd"){
$("#newUserPwdText").text("");
$("#newUserPwdText").text("密码长度不能小于8位");
}
if (passName == "newReUserPwd") {
$("#newReUserPwdText").text("");
$("#newReUserPwdText").text("密码长度不能小于8位");
}
}
else {
var securityLevelFlagArray = new Array(0, 0, 0, 0);
for (var i = 0; i < password.length; i++) {
var asciiNumber = password.substr(i, 1).charCodeAt();
if (asciiNumber >= 48 && asciiNumber <= 57) {
securityLevelFlagArray[0] = 1; //digital
}
else if (asciiNumber >= 97 && asciiNumber <= 122) {
securityLevelFlagArray[1] = 1; //lowercase
}
else if (asciiNumber >= 65 && asciiNumber <= 90) {
securityLevelFlagArray[2] = 1; //uppercase
}
else {
securityLevelFlagArray[3] = 1; //specialcase
}
}
for (var i = 0; i < securityLevelFlagArray.length; i++) {
if (securityLevelFlagArray[i] == 1) {
securityLevelFlag++;
}
}
if (passName == "newUserPwd"){
if (securityLevelFlag == 1){
$("#newUserPwdText").text("");
$("#newUserPwdText").text("密码安全低");
}
if (securityLevelFlag == 2 || securityLevelFlag == 3){
$("#newUserPwdText").text("");
$("#newUserPwdText").text("密码安全中等");
}
if (securityLevelFlag == 4){
$("#newUserPwdText").text("");
$("#newUserPwdText").text("密码安全高");
}
}
if (passName == "newReUserPwd") {
if (securityLevelFlag == 1){
$("#newReUserPwdText").text("");
$("#newReUserPwdText").text("密码安全低");
}
if (securityLevelFlag == 2 || securityLevelFlag == 3){
$("#newReUserPwdText").text("");
$("#newReUserPwdText").text("密码安全中等");
}
if (securityLevelFlag == 4){
$("#newReUserPwdText").text("");
$("#newReUserPwdText").text("密码安全高");
}
}
}
}
}

@ -1,37 +1,37 @@
var pageNumber=1; var pageNumber=1;
var form = ''; var form = '';
//定义表格内容最大高度 //定义表格内容最大高度
var maxHeight = 0; var maxHeight = 0;
document.onkeydown = function (event) { document.onkeydown = function (event) {
var e = event || window.event; var e = event || window.event;
if (e && e.keyCode == 13) { //回车键的键值为13 if (e && e.keyCode == 13) { //回车键的键值为13
$('#bootstrapTable').bootstrapTable('refresh'); //调用登录按钮的登录事件 $('#bootstrapTable').bootstrapTable('refresh'); //调用登录按钮的登录事件
} }
}; };
$(function(){ $(function(){
$('#myModal').modal('hide'); $('#myModal').modal('hide');
loadDept(); loadDept();
loadRole(); loadRole();
//先销毁表格 //先销毁表格
$('#bootstrapTable').bootstrapTable({ $('#bootstrapTable').bootstrapTable({
//表格高度 //表格高度
//height: getHeight(), //height: getHeight(),
method : 'get', method : 'get',
url :path+ "/user/pageList",//请求路径 url :path+ "/user/pageList",//请求路径
striped : true, //是否显示行间隔色 striped : true, //是否显示行间隔色
pageNumber : 1, //初始化加载第一页 pageNumber : 1, //初始化加载第一页
pagination : true,//是否分页 pagination : true,//是否分页
sidePagination : 'server',//server:服务器端分页|client前端分页 sidePagination : 'server',//server:服务器端分页|client前端分页
pageSize : 10,//单页记录数 pageSize : 10,//单页记录数
pageList : [ 5, 10, 20, 30 ],//可选择单页记录数 pageList : [ 5, 10, 20, 30 ],//可选择单页记录数
cache: false, cache: false,
paginationPreText : '上一页', paginationPreText : '上一页',
paginationNextText : '下一页', paginationNextText : '下一页',
queryParams : function(params) {//上传服务器的参数 queryParams : function(params) {//上传服务器的参数
var temp = {//如果是在服务器端实现分页limit、offset这两个参数是必须的 var temp = {//如果是在服务器端实现分页limit、offset这两个参数是必须的
limit : params.limit, // 每页显示数量 limit : params.limit, // 每页显示数量
offset : params.offset, // SQL语句起始索引 offset : params.offset, // SQL语句起始索引
page : (params.offset / params.limit) + 1, //当前页码 page : (params.offset / params.limit) + 1, //当前页码
userName:$("#user_name").val(), userName:$("#user_name").val(),
userEmail:$("#user_email").val(), userEmail:$("#user_email").val(),
name:$("#searchName").val(), name:$("#searchName").val(),
@ -45,126 +45,126 @@ $(function(){
checkbox:true checkbox:true
}, },
{ {
title:'序号', title:'序号',
field:'no', field:'no',
formatter: function (value, row, index) { formatter: function (value, row, index) {
//获取每页显示的数量 //获取每页显示的数量
var pageSize = $('#bootstrapTable').bootstrapTable('getOptions').pageSize; var pageSize = $('#bootstrapTable').bootstrapTable('getOptions').pageSize;
//获取当前是第几页 //获取当前是第几页
if(pageNumber == 1){ if(pageNumber == 1){
pageNumber = $('#bootstrapTable').bootstrapTable('getOptions').pageNumber; pageNumber = $('#bootstrapTable').bootstrapTable('getOptions').pageNumber;
} }
//返回序号注意index是从0开始的所以要加上1 //返回序号注意index是从0开始的所以要加上1
return pageSize * (pageNumber - 1) + index + 1; return pageSize * (pageNumber - 1) + index + 1;
} }
}, },
{ {
title:'账号', title:'账号',
field:'userName' field:'userName'
}, },
{ {
title:'姓名', title:'姓名',
field:'name' field:'name'
}, },
{ {
title:'性别', title:'性别',
field:'userSex', field:'userSex',
formatter: function (value, row, index) { formatter: function (value, row, index) {
if(value ==1){ if(value ==1){
return '女' return '女'
}else if(value ==0){ }else if(value ==0){
return '男' return '男'
} }
} }
}, },
{ {
title:'年龄', title:'年龄',
field:'userAge' field:'userAge'
}, },
{ {
title:'移动电话', title:'移动电话',
field:'userTel' field:'userTel'
}, },
{ {
title:'邮箱地址', title:'邮箱地址',
field:'userEmail' field:'userEmail'
}, },
{ {
title:'用户职位', title:'用户职位',
field:'userPosition' field:'userPosition'
}, },
{ {
title:'所属角色', title:'所属角色',
field:'roleName' field:'roleName'
}, },
{ {
title:'所属科室', title:'所属科室',
field:'powerDepts', field:'powerDepts',
formatter:paramsMatter formatter:paramsMatter
}, },
/*{ /*{
title:'同步科室编号', title:'同步科室编号',
field:'deptCode' field:'deptCode'
},*/ },*/
{ {
title:'是否有效', title:'是否有效',
field:'effective', field:'effective',
formatter: function (value, row, index) { formatter: function (value, row, index) {
if(value ==1){ if(value ==1){
return '是' return '是'
}else if(value ==0){ }else if(value ==0){
return '否' return '否'
} }
} }
}, },
{ {
title:'创建时间', title:'创建时间',
field:'createDate' field:'createDate'
}, },
{ {
title:'创建人', title:'创建人',
field:'creater' field:'creater'
}, },
{ {
title:'修改时间', title:'修改时间',
field:'updateDate' field:'updateDate'
}, },
{ {
title:'修改人', title:'修改人',
field:'updater' field:'updater'
}, },
{ {
title:'操作', title:'操作',
field:'userId', formatter: function(value,row,index){ field:'userId', formatter: function(value,row,index){
var editanddrop = ''; var editanddrop = '';
if(row.isUpdate == 1){ if(row.isUpdate == 1){
editanddrop += '<button type="button" onclick="edit('+row.userId+')" class="btn btn-info operBtns btn-sm" >编辑</button>'; editanddrop += '<button type="button" onclick="edit('+row.userId+')" class="btn btn-info operBtns btn-sm" >编辑</button>';
} }
if(row.isDelete == 1){ if(row.isDelete == 1){
editanddrop += '<button type="button" onclick="drop('+row.userId+')" class="btn btn-danger operBtns btn-sm">删除</button>'; editanddrop += '<button type="button" onclick="drop('+row.userId+')" class="btn btn-danger operBtns btn-sm">删除</button>';
} }
return editanddrop; return editanddrop;
} }
} }
], ],
onLoadSuccess: function(){ //加载成功时执行 onLoadSuccess: function(){ //加载成功时执行
$(".page-list").show(); $(".page-list").show();
$("th").css({'text-align':'center','vertical-align':'middle'}); $("th").css({'text-align':'center','vertical-align':'middle'});
$("td").css({'text-align':'center','vertical-align':'middle'}); $("td").css({'text-align':'center','vertical-align':'middle'});
reloadTableHeight("bootstrapTable"); reloadTableHeight("bootstrapTable");
}, },
//监听分页点击事件 //监听分页点击事件
onPageChange: function(num, type) { onPageChange: function(num, type) {
pageNumber = num; pageNumber = num;
}, },
//选中单个复选框 //选中单个复选框
onCheck:function(row){ onCheck:function(row){
var checks = $("#checks").val(); var checks = $("#checks").val();
var userNames = $("#userNames").val(); var userNames = $("#userNames").val();
$("#checks").val(checks+=row.userId + ","); $("#checks").val(checks+=row.userId + ",");
$("#userNames").val(userNames+=row.userName + ","); $("#userNames").val(userNames+=row.userName + ",");
}, },
//取消单个复选框 //取消单个复选框
onUncheck:function(row){ onUncheck:function(row){
var checks = $("#checks").val(); var checks = $("#checks").val();
var userNames = $("#userNames").val(); var userNames = $("#userNames").val();
@ -173,7 +173,7 @@ $(function(){
$("#checks").val(checks); $("#checks").val(checks);
$("#userNames").val(userNames); $("#userNames").val(userNames);
}, },
//全选 //全选
onCheckAll:function(rows){ onCheckAll:function(rows){
$("#checks").val(""); $("#checks").val("");
$("#userNames").val(""); $("#userNames").val("");
@ -187,22 +187,22 @@ $(function(){
$("#checks").val(checks); $("#checks").val(checks);
$("#userNames").val(userNames); $("#userNames").val(userNames);
}, },
//全不选 //全不选
onUncheckAll: function (rows) { onUncheckAll: function (rows) {
$("#checks").val(""); $("#checks").val("");
$("#userNames").val(""); $("#userNames").val("");
} }
}); });
}); });
//格式化科室列 //格式化科室列
function paramsMatter(value, row, index) { function paramsMatter(value, row, index) {
value = '<p class="hidden-xs" title="'+value+'">'+value+'</p>'; value = '<p class="hidden-xs" title="'+value+'">'+value+'</p>';
return value; return value;
} }
//验证表单 //验证表单
//验证用户名不重复 //验证用户名不重复
$("#re_userName").blur(function(){ $("#re_userName").blur(function(){
var userId = $("#userId").val(); var userId = $("#userId").val();
var userName = $("#re_userName").val(); var userName = $("#re_userName").val();
@ -221,36 +221,36 @@ $("#re_userName").blur(function(){
}) })
} }
}) })
//验证密码长度不少于6位 //验证密码长度不少于6位
$("#re_userPwd").blur(function(){ $("#re_userPwd").blur(function(){
var password = $("#re_userPwd").val(); var password = $("#re_userPwd").val();
if(password != '' && password.length < 6){ if(password != '' && password.length < 6){
toastr.warning("密码长度不能少于6位!"); toastr.warning("密码长度不能少于6位!");
} }
}) })
/*//验证手机号 /*//验证手机号
$("#re_userTel").blur(function(){ $("#re_userTel").blur(function(){
var tel = $("#re_userTel").val(); var tel = $("#re_userTel").val();
if(tel != ''){ if(tel != ''){
if(!tel.match(/^1[34578]\d{9}$/)){ if(!tel.match(/^1[34578]\d{9}$/)){
toastr.warning("移动电话格式不正确!"); toastr.warning("移动电话格式不正确!");
$("#re_userTel").val(""); $("#re_userTel").val("");
$("#re_userTel").focus(); $("#re_userTel").focus();
} }
} }
}) })
//验证邮箱 //验证邮箱
$("#re_userEmail").blur(function(){ $("#re_userEmail").blur(function(){
var email = $("#re_userEmail").val(); var email = $("#re_userEmail").val();
if(email != ''){ if(email != ''){
if(!email.match(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/)){ if(!email.match(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/)){
toastr.warning("邮箱地址格式不正确!"); toastr.warning("邮箱地址格式不正确!");
$("#re_userEmail").val(""); $("#re_userEmail").val("");
$("#re_userEmail").focus(); $("#re_userEmail").focus();
} }
} }
})*/ })*/
//所属科室多选树形 //所属科室多选树形
function showMenu1() { function showMenu1() {
var cityObj = $('#txtTreeSelect1'); var cityObj = $('#txtTreeSelect1');
var cityOffset = cityObj.offset(); var cityOffset = cityObj.offset();
@ -266,7 +266,7 @@ function hideMenu1() {
$("#menuContent1").fadeOut("name"); $("#menuContent1").fadeOut("name");
$("body").unbind("mousedown", onBodyDown1); $("body").unbind("mousedown", onBodyDown1);
} }
//加载角色 //加载角色
function loadRole(){ function loadRole(){
$.ajax({ $.ajax({
type: "GET", type: "GET",
@ -303,16 +303,16 @@ function loadDept(){
}); });
} }
//搜索 //搜索
$('#queryBtn').click(function () { $('#queryBtn').click(function () {
$("#checks").val(""); $("#checks").val("");
refresh(); refresh();
}) })
//编辑框回显 //编辑框回显
function edit(id){ function edit(id){
$("#re_userName").prop("readOnly",true); $("#re_userName").prop("readOnly",true);
$("#passwordDiv").hide(); $("#passwordDiv").hide();
$("#myModalLabel").text("编辑"); $("#myModalLabel").text("编辑");
$.ajax({ $.ajax({
type: "post", type: "post",
url: path+"/user/selectUser", url: path+"/user/selectUser",
@ -347,7 +347,7 @@ function edit(id){
var deptIdSplit =deptIds.split(","); var deptIdSplit =deptIds.split(",");
for (var i = 0;i < deptIdSplit.length;i++){ for (var i = 0;i < deptIdSplit.length;i++){
if(deptIdSplit[i] != ''){ if(deptIdSplit[i] != ''){
//选中节点 //选中节点
treeSelectNode(deptIdSplit[i]); treeSelectNode(deptIdSplit[i]);
} }
} }
@ -356,11 +356,11 @@ function edit(id){
}); });
$('#myModal').modal('show'); $('#myModal').modal('show');
} }
//删除 //删除
function drop(id) { function drop(id) {
Common.confirm({ Common.confirm({
title: "提示", title: "提示",
message: "确定是否删除这条记录", message: "确定是否删除这条记录",
operate: function (reselt) { operate: function (reselt) {
if (reselt) { if (reselt) {
$.ajax({ $.ajax({
@ -372,7 +372,7 @@ function drop(id) {
async: false, async: false,
success: function (data) { success: function (data) {
if ("success" == data.msg) { if ("success" == data.msg) {
toastr.success("删除成功!"); toastr.success("删除成功!");
$("#checks").val(""); $("#checks").val("");
$("#userNames").val(""); $("#userNames").val("");
backToPage(); backToPage();
@ -381,14 +381,14 @@ function drop(id) {
} }
}, },
error: function () { error: function () {
window.confirm("删除失败"); window.confirm("删除失败");
} }
}) })
} }
} }
}) })
} }
//新增框 //新增框
function add() { function add() {
$("#re_userName").prop("readOnly",false); $("#re_userName").prop("readOnly",false);
clearForm(); clearForm();
@ -398,18 +398,18 @@ function add() {
$('#myModal').modal('show'); $('#myModal').modal('show');
$("#passwordDiv").show(); $("#passwordDiv").show();
} }
//清空 //清空
function clearForm(){ function clearForm(){
$("#updateaddform")[0].reset(); $("#updateaddform")[0].reset();
//loadTree(); //loadTree();
$("#deptIds").val(""); $("#deptIds").val("");
} }
//提交更改 //提交更改
$('#btn_submit').click(function () { $('#btn_submit').click(function () {
var reUserTel = $("#re_userTel").val(); var reUserTel = $("#re_userTel").val();
if(reUserTel != ''){ if(reUserTel != ''){
if(!reUserTel.match(/^1[34578]\d{9}$/)){ if(!reUserTel.match(/^1[34578]\d{9}$/)){
toastr.warning("移动电话格式不正确!"); toastr.warning("移动电话格式不正确!");
$("#re_userTel").val(""); $("#re_userTel").val("");
$("#re_userTel").focus(); $("#re_userTel").focus();
return false; return false;
@ -418,7 +418,7 @@ $('#btn_submit').click(function () {
var reUserEmail = $("#re_userEmail").val(); var reUserEmail = $("#re_userEmail").val();
if(reUserEmail != ''){ if(reUserEmail != ''){
if(!reUserEmail.match(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/)){ if(!reUserEmail.match(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/)){
toastr.warning("邮箱地址格式不正确!"); toastr.warning("邮箱地址格式不正确!");
$("#re_userEmail").val(""); $("#re_userEmail").val("");
$("#re_userEmail").focus(); $("#re_userEmail").focus();
return false; return false;
@ -435,19 +435,19 @@ $('#btn_submit').click(function () {
if(roleId != ''){ if(roleId != ''){
saveForm(); saveForm();
}else{ }else{
toastr.warning("所属角色不能为空,如未显示角色请到角色管理添加角色!"); toastr.warning("所属角色不能为空,如未显示角色请到角色管理添加角色!");
} }
}else{ }else{
toastr.warning("所属科室不能为空!"); toastr.warning("所属科室不能为空!");
} }
}else{ }else{
toastr.warning("密码长度不能少于6位!"); toastr.warning("密码长度不能少于6位!");
} }
}else{ }else{
toastr.warning("密码不能为空!"); toastr.warning("密码不能为空!");
} }
}else{ }else{
toastr.warning("用户名不能为空!"); toastr.warning("用户名不能为空!");
} }
}) })
@ -461,7 +461,7 @@ function saveForm(){
dataType:"json", dataType:"json",
success: function(data){ success: function(data){
if("success"==data.msg){ if("success"==data.msg){
toastr.success("修改成功!"); toastr.success("修改成功!");
$('#myModal').modal('hide'); $('#myModal').modal('hide');
backToPage(); backToPage();
}else{ }else{
@ -477,7 +477,7 @@ function saveForm(){
dataType:"json", dataType:"json",
success: function(data){ success: function(data){
if("success"==data.msg){ if("success"==data.msg){
toastr.success("添加成功!"); toastr.success("添加成功!");
setTimeout(function(){ setTimeout(function(){
window.location.reload(); window.location.reload();
},500) },500)
@ -488,38 +488,38 @@ function saveForm(){
}) })
} }
} }
//刷新表格 //刷新表格
function refresh() { function refresh() {
$('#bootstrapTable').bootstrapTable('refresh',{ $('#bootstrapTable').bootstrapTable('refresh',{
url : path+'/user/pageList' url : path+'/user/pageList'
}) })
} }
//重置密码 //重置密码
function resetPassword(){ function resetPassword(){
var checks = $("#checks").val(); var checks = $("#checks").val();
var userNames = $("#userNames").val(); var userNames = $("#userNames").val();
if(checks != ''){ if(checks != ''){
var ids = checks.split(","); var ids = checks.split(",");
var s1 = ids.toString();
var userName = userNames.split(","); var userName = userNames.split(",");
if(ids.length == 2){
Common.confirm({ Common.confirm({
title: "提示", title: "提示",
message: '确定是否重置用户名'+userName+'的密码为000000', message: '确定是否重置用户名'+userName[0]+'的密码为123456',
operate: function (reselt) { operate: function (reselt) {
if (reselt) { if (reselt) {
$.ajax({ $.ajax({
type: 'post', type: 'post',
url: path + '/user/resetPassword', url: path + '/user/resetPassword',
data: {ids: s1}, data: {userId: ids[0]},
dataType: 'json', dataType: 'json',
success: function (data) { success: function (data) {
if (data.code == 100) { if (data.code == 100) {
toastr.success("重置成功!"); toastr.success("重置成功!");
$("#checks").val(""); $("#checks").val("");
$("#userNames").val(""); $("#userNames").val("");
backToPage(); backToPage();
} else { } else {
toastr.error("重置失败,请联系系统管理员!") toastr.error("重置失败,请联系系统管理员!")
} }
} }
}) })
@ -527,10 +527,13 @@ function resetPassword(){
} }
}) })
}else{ }else{
toastr.warning("请至少选中一条记录!") toastr.warning("以防重置密码误选择,只允许一次重置一个!")
}
}else{
toastr.warning("请至少选中一条记录!")
} }
} }
//导出excel功能 //导出excel功能
function exportExcel(){ function exportExcel(){
var checks = $("#checks").val(); var checks = $("#checks").val();
if(checks != '') { if(checks != '') {
@ -539,8 +542,8 @@ function exportExcel(){
window.location.href = url; window.location.href = url;
}else{ }else{
Common.confirm({ Common.confirm({
title: "提示", title: "提示",
message: "没有选中,您确定要按搜索栏条件导出?", message: "没有选中,您确定要按搜索栏条件导出?",
operate: function (reselt) { operate: function (reselt) {
if (reselt) { if (reselt) {
var url = path+"/user/export?userName="+$("#user_name").val()+"&searchRoleId="+$("#roleId").val()+"&deptId="+$("#dept_id").val()+"&effective="+$("#effective").val()+"&name="+$("#searchName").val(); var url = path+"/user/export?userName="+$("#user_name").val()+"&searchRoleId="+$("#roleId").val()+"&deptId="+$("#dept_id").val()+"&effective="+$("#effective").val()+"&name="+$("#searchName").val();
@ -548,18 +551,18 @@ function exportExcel(){
} }
} }
}) })
/* if(confirm('?')) { /* if(confirm('?')) {
var url = path+"/user/export?userName="+$("#user_name").val()+"&userEmail="+$("#user_email").val()+"&searchRoleId="+$("#roleId").val()+"&deptId="+$("#dept_id").val()+"&effective="+$("#effective").val()+"&checks="+checks; var url = path+"/user/export?userName="+$("#user_name").val()+"&userEmail="+$("#user_email").val()+"&searchRoleId="+$("#roleId").val()+"&deptId="+$("#dept_id").val()+"&effective="+$("#effective").val()+"&checks="+checks;
window.location.href = url; window.location.href = url;
}*/ }*/
} }
} }
/**树操作*/ /**树操作*/
/*var setting = { /*var setting = {
view: { view: {
showIcon: true,//设置 zTree 是否显示节点的图标。默认值true showIcon: true,//设置 zTree 是否显示节点的图标。默认值true
showLine: true//设置 zTree 是否显示节点之间的连线。默认值true showLine: true//设置 zTree 是否显示节点之间的连线。默认值true
}, },
data: { data: {
simpleData: { simpleData: {
@ -581,7 +584,7 @@ function onCheck(e, treeId, treeNode) {
nodes=treeObj.getCheckedNodes(true); nodes=treeObj.getCheckedNodes(true);
var deptIds = ''; var deptIds = '';
var deptNames = ''; var deptNames = '';
//父节点必须一样 //父节点必须一样
var parentId = new Array(); var parentId = new Array();
for (var i = 0; i < nodes.length; i++) { for (var i = 0; i < nodes.length; i++) {
if(nodes[i].level == 0){ if(nodes[i].level == 0){
@ -595,7 +598,7 @@ function onCheck(e, treeId, treeNode) {
} }
} }
if(parentId.length > 1) { if(parentId.length > 1) {
toastr.warning("科室必须全部属于同一医院!"); toastr.warning("科室必须全部属于同一医院!");
treeObj.checkNode(treeNode,false,true); treeObj.checkNode(treeNode,false,true);
}else{ }else{
if(deptIds != ''){ if(deptIds != ''){
@ -617,19 +620,19 @@ function loadTree() {
$.fn.zTree.init($("#treeDemo"), setting, data); $.fn.zTree.init($("#treeDemo"), setting, data);
zTree = $.fn.zTree.getZTreeObj("treeDemo"); zTree = $.fn.zTree.getZTreeObj("treeDemo");
var nodes = zTree.getNodes(); var nodes = zTree.getNodes();
for (var i = 0; i < nodes.length; i++) { //设置节点展开 for (var i = 0; i < nodes.length; i++) { //设置节点展开
zTree.expandNode(nodes[i], true, false, true); zTree.expandNode(nodes[i], true, false, true);
} }
} }
}); });
} }
//加载树 //加载树
$(function(){ $(function(){
$("#re_userName").val(""); $("#re_userName").val("");
$("#updateaddform")[0].reset(); $("#updateaddform")[0].reset();
loadTree(); loadTree();
}) })
//选中节点 selfId //选中节点 selfId
function treeSelectNode(selfId){ function treeSelectNode(selfId){
var zTree = $.fn.zTree.getZTreeObj("treeDemo"); var zTree = $.fn.zTree.getZTreeObj("treeDemo");
var node = zTree.getNodeByParam("selfId",selfId); var node = zTree.getNodeByParam("selfId",selfId);
@ -638,7 +641,7 @@ function treeSelectNode(selfId){
} }
}*/ }*/
//监听关闭模态框刷新事件 //监听关闭模态框刷新事件
$('#myModal1').on('hide.bs.modal', function () { $('#myModal1').on('hide.bs.modal', function () {
window.location.reload(); window.location.reload();
}); });

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.6" level="project" />
</component>
</module>

@ -31,4 +31,8 @@ public interface Power_LogMapper {
List<Power_LogVo> selectAllByIds(@Param("checks")String checks); List<Power_LogVo> selectAllByIds(@Param("checks")String checks);
void deleteLogByIds(@Param("str")String str); void deleteLogByIds(@Param("str")String str);
Power_Log getUnlockDate(@Param("userName")String userName);
} }

@ -1,6 +1,8 @@
package com.manage.dao; package com.manage.dao;
import com.manage.entity.CodeLogin;
import com.manage.entity.Power_User; import com.manage.entity.Power_User;
import com.manage.vo.CodeLoginVO;
import com.manage.vo.Power_UserVo; import com.manage.vo.Power_UserVo;
import com.manage.vo.User; import com.manage.vo.User;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -28,7 +30,7 @@ public interface Power_UserMapper {
int getTotal(Power_UserVo powerUser); int getTotal(Power_UserVo powerUser);
List<Power_UserVo> selectList(); //List<Power_UserVo> selectList();
List<Power_UserVo> selectAllByDeptId(@Param("deptId") Integer deptId,@Param("userName")String userName); List<Power_UserVo> selectAllByDeptId(@Param("deptId") Integer deptId,@Param("userName")String userName);
List<Power_UserVo> selectAllBySysRole(@Param("dictId") Integer dictId); List<Power_UserVo> selectAllBySysRole(@Param("dictId") Integer dictId);
@ -48,8 +50,6 @@ public interface Power_UserMapper {
List<User> selectUserIdAndUserNameList(@Param("userId") Integer userId); List<User> selectUserIdAndUserNameList(@Param("userId") Integer userId);
int updateUserPass(@Param("ids") String ids,@Param("userName") String userName,@Param("encode") String encode,@Param("date") String date);
Integer selectEffectiveCount(); Integer selectEffectiveCount();
List<Power_UserVo> selectAllNotAdmin(); List<Power_UserVo> selectAllNotAdmin();
@ -69,7 +69,9 @@ public interface Power_UserMapper {
Power_UserVo selectByPrimaryKey1(Integer userId); Power_UserVo selectByPrimaryKey1(Integer userId);
Power_UserVo selectByPrimaryUserId(String userId); Power_UserVo selectByUserName(String userName);
void updatePersonal(Power_User user); void updatePersonal(Power_User user);
public Power_UserVo findUserName(Power_User powerUser);
} }

@ -0,0 +1,77 @@
package com.manage.entity;
import com.manage.vo.User_Dept_Menu;
import java.util.List;
import java.util.Set;
public class CodeLogin {
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
private String userName;
private Integer roleId;
public Integer getRoleId() {
return roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
private Integer userId;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
private Set<String> menus;
public Set<String> getMenus() {
return menus;
}
public void setMenus(Set<String> menus) {
this.menus = menus;
}
public List<User_Dept_Menu> getMenuList() {
return menuList;
}
public void setMenuList(List<User_Dept_Menu> menuList) {
this.menuList = menuList;
}
private List<User_Dept_Menu> menuList;
private String deptId;
public String getDeptId() {
return deptId;
}
public void setDeptId(String deptId) {
this.deptId = deptId;
}
private String remark;
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}

@ -1,8 +1,25 @@
package com.manage.entity; package com.manage.entity;
public class Power_Log { public class Power_Log {
private String unlockDate;
private Integer logId; private Integer logId;
public String getUnlockDate() {
return unlockDate;
}
public void setUnlockDate(String unlockDate) {
this.unlockDate = unlockDate;
}
public String getGetUnlockDate() {
return getUnlockDate;
}
public void setGetUnlockDate(String getUnlockDate) {
this.getUnlockDate = getUnlockDate;
}
private String logTitle; private String logTitle;
private String ip; private String ip;
@ -18,6 +35,7 @@ public class Power_Log {
private String creater; private String creater;
private String remark; private String remark;
private String getUnlockDate;
public Integer getLogId() { public Integer getLogId() {
return logId; return logId;

@ -9,6 +9,14 @@ public class Power_User{
private String name; private String name;
public String getUserPwdNew() {
return userPwdNew;
}
public void setUserPwdNew(String userPwdNew) {
this.userPwdNew = userPwdNew;
}
private String userPwd; private String userPwd;
private Integer userSex; private Integer userSex;
@ -37,6 +45,8 @@ public class Power_User{
private String remark; private String remark;
private String userPwdNew;
private String userWechat; private String userWechat;
public String getUserWechat() { public String getUserWechat() {

@ -0,0 +1,55 @@
package com.manage.vo;
import com.manage.entity.CodeLogin;
import java.util.List;
import java.util.Set;
public class CodeLoginVO extends CodeLogin {
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
private String userName;
private Integer roleId;
public Integer getRoleId() {
return roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
private Integer userId;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
private Set<String> menus;
public Set<String> getMenus() {
return menus;
}
public void setMenus(Set<String> menus) {
this.menus = menus;
}
public List<User_Dept_Menu> getMenuList() {
return menuList;
}
public void setMenuList(List<User_Dept_Menu> menuList) {
this.menuList = menuList;
}
private List<User_Dept_Menu> menuList;
}

@ -48,16 +48,6 @@ public class Power_UserVo extends Power_User {
private String deptCode; private String deptCode;
public String getIds() {
return ids;
}
public void setIds(String ids) {
this.ids = ids;
}
private String ids;
public String getDeptCode() { public String getDeptCode() {
return deptCode; return deptCode;
} }

@ -1,4 +1,4 @@
jdbc.driver=com.mysql.jdbc.Driver jdbc.driver=com.mysql.jdbc.Driver
#jdbc.url=jdbc\:mysql\://localhost\:3306/power?useUnicode\=true&characterEncoding\=utf-8 #jdbc.url=jdbc\:mysql\://localhost\:3306/power?useUnicode\=true&characterEncoding\=utf-8
jdbc.url=jdbc\:mysql\://120.27.212.36\:3306/power?useUnicode\=true&characterEncoding\=utf-8 jdbc.url=jdbc\:mysql\://120.27.212.36\:3306/power?useUnicode\=true&characterEncoding\=utf-8
jdbc.username=root jdbc.username=root

@ -203,4 +203,8 @@
<delete id="deleteLogByIds"> <delete id="deleteLogByIds">
delete from power_log where log_id in (${str}) delete from power_log where log_id in (${str})
</delete> </delete>
<select id="getUnlockDate" resultType="com.manage.entity.Power_Log">
SELECT * FROM power_log where log_title='登录' and unlock_date>=sysdate() and creater=#{userName}
</select>
</mapper> </mapper>

@ -32,7 +32,7 @@
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
user_id, user_name,name, user_pwd, user_sex, user_age, user_tel, user_email, user_position, user_id, user_name,name, user_pwd, user_sex, user_age, user_tel, user_email, user_position,
role_id, dept_id, effective, create_date, creater, update_date, updater, remark role_id, dept_id, effective, create_date, creater, update_date, updater, remark,dept_code
</sql> </sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap"> <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select select
@ -259,7 +259,8 @@
power_dept.dept_id, power_dept.dept_id,
power_user.dept_id power_user.dept_id
) )
where power_user.effective = #{effective,jdbcType=INTEGER} and user_name = #{userName,jdbcType=VARCHAR} and user_pwd = #{userPwd,jdbcType=VARCHAR} where
power_user.user_name = #{userName,jdbcType=VARCHAR} and power_user.user_pwd = #{userPwd,jdbcType=VARCHAR}
GROUP BY user_id GROUP BY user_id
</select> </select>
@ -317,7 +318,7 @@
) )
</if> </if>
<if test="userName!=null and userName!=''"> <if test="userName!=null and userName!=''">
and power_user.user_name = #{userName} and power_user.user_name LIKE '%${userName}%'
</if> </if>
<if test="name!=null and name!=''"> <if test="name!=null and name!=''">
and power_user.name LIKE '%${name}%' and power_user.name LIKE '%${name}%'
@ -372,7 +373,7 @@
) )
</if> </if>
<if test="userName!=null and userName!=''"> <if test="userName!=null and userName!=''">
and power_user.user_name = #{userName} and power_user.user_name LIKE '%${userName}%'
</if> </if>
<if test="name!=null and name!=''"> <if test="name!=null and name!=''">
and power_user.name LIKE '%${name}%' and power_user.name LIKE '%${name}%'
@ -553,7 +554,7 @@
</select> </select>
<select id="selectUserIdAndUserNameList" resultMap="BaseResultMapVo"> <select id="selectUserIdAndUserNameList" resultMap="BaseResultMapVo">
SELECT SELECT
power_user_dict.user_id, power_user.user_id,
power_user.user_name, power_user.user_name,
power_user.role_id, power_user.role_id,
power_user.dept_id, power_user.dept_id,
@ -561,21 +562,14 @@
power_role.role_name, power_role.role_name,
power_user.user_tel, power_user.user_tel,
power_user.user_wechat, power_user.user_wechat,
name NAME
FROM
power_user_dict
INNER JOIN power_user ON power_user_dict.user_id = power_user.user_id AND power_user.effective = 1 AND power_user.role_id != 0
LEFT JOIN power_role ON power_user.role_id = power_role.role_id AND power_role.effective = 1
<if test="userId != null and userId != ''">
WHERE
dict_id = (
SELECT
dict_id
FROM FROM
power_user_dict power_user
WHERE LEFT JOIN power_role ON power_user.role_id = power_role.role_id
user_id = #{userId} AND power_role.effective = 1
) where power_user.effective = 1
<if test="userId != null">
AND user_id = #{userId}
</if> </if>
</select> </select>
<!--查询各表无效数--> <!--查询各表无效数-->
@ -724,6 +718,13 @@
on power_user.role_id = power_role.role_id on power_user.role_id = power_role.role_id
where user_id = #{userId,jdbcType=INTEGER} where user_id = #{userId,jdbcType=INTEGER}
</select> </select>
<select id="selectByUserName" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from power_user
where user_name = #{userName,jdbcType=INTEGER}
</select>
<!--更新个人资料--> <!--更新个人资料-->
<update id="updatePersonal" parameterType="com.manage.entity.Power_User"> <update id="updatePersonal" parameterType="com.manage.entity.Power_User">
update power_user update power_user
@ -737,18 +738,10 @@
user_wechat = #{userWechat,jdbcType=VARCHAR} user_wechat = #{userWechat,jdbcType=VARCHAR}
where user_id = #{userId,jdbcType=INTEGER} where user_id = #{userId,jdbcType=INTEGER}
</update> </update>
<update id="updateUserPass">
update power_user
set
user_pwd=#{encode},
update_date=#{date},
updater=#{userName}
where
user_id IN
<foreach item="item" collection="ids.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</update>
<select id="findUserName" parameterType="com.manage.entity.Power_User" resultType="com.manage.vo.Power_UserVo">
select * from power_user where user_name = #{userName}
</select>
</mapper> </mapper>

@ -47,15 +47,15 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- 日志处理 --> <!-- 日志处理 -->
<!-- Web项目需添加 -->
<dependency> <dependency>
<groupId>org.apache.logging.log4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>log4j-web</artifactId> <artifactId>slf4j-log4j12</artifactId>
</dependency> </dependency>
<!--用于与slf4j保持桥接-->
<dependency> <dependency>
<groupId>org.apache.logging.log4j</groupId> <groupId>redis.clients</groupId>
<artifactId>log4j-slf4j-impl</artifactId> <artifactId>jedis</artifactId>
<version>3.1.0</version>
<scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>

@ -66,7 +66,9 @@ public class MD5 {
// 测试主函数 // 测试主函数
public static void main(String args[]) { public static void main(String args[]) {
String s = new String("a"); String encode = Base64.encode(MD5.KL("123456"));
System.out.println("原始123456" + encode);
String s = new String("e10adc3949ba59abbe56e057f20f883e");
System.out.println("原始:" + s); System.out.println("原始:" + s);
System.out.println("MD5后" + MD5(s)); System.out.println("MD5后" + MD5(s));
System.out.println("MD5后再加密" + KL(MD5(s))); System.out.println("MD5后再加密" + KL(MD5(s)));

@ -1,5 +1,7 @@
package com.manage.util; package com.manage.util;
import org.apache.commons.lang3.StringUtils;
import java.text.ParseException; import java.text.ParseException;
import java.text.ParsePosition; import java.text.ParsePosition;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -96,6 +98,9 @@ public class DateUtils {
return calendar.getTime(); return calendar.getTime();
} }
/** /**
* *
* *

@ -0,0 +1,74 @@
package com.manage.util;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Random;
public class DrawCheckcode {
private String checkCode;
public String getCheckCode() {
return checkCode;
}
public void setCheckCode(String checkCode) {
this.checkCode = checkCode;
}
//随机产生颜色
public Color getColor(){
Random random = new Random();
//获取0-255随机值
int r = random.nextInt(256);
int g = random.nextInt(256);
int b = random.nextInt(256);
return new Color(r,g,b);
}
//产生验证码值
public String getNum(){
//原来是0-8999+1000后变成1000-9999
int ran = (int)(Math.random()*9000)+1000;
return String.valueOf(ran);
}
public BufferedImage doDraw(){
//绘制验证码
//参数:长,宽,图片类型
BufferedImage image = new BufferedImage(80, 30, BufferedImage.TYPE_INT_RGB);
//画笔
Graphics graphics = image.getGraphics();
//画长方形坐标从0,0,到8030
graphics.fillRect(0,0,80,30);
//绘制50条干扰条
for(int i=0;i<50;i++){
Random random = new Random();
int xBegin = random.nextInt(80);
int yBegin = random.nextInt(30);
int xEnd = random.nextInt(xBegin +10);
int yEnd = random.nextInt(yBegin +10);
//画笔颜色,随机
graphics.setColor(getColor());
//绘制线条
graphics.drawLine(xBegin,yBegin,xEnd,yEnd);
}
//绘制验证码
//字体加粗,变大
graphics.setFont(new Font("seif",Font.BOLD,20));
//画笔颜色
graphics.setColor(Color.BLACK);
//得到随机取得的数字
String checode = getNum();
checkCode = checode;
//在数字中间加上空格分开
StringBuffer buffer = new StringBuffer();
for(int i=0;i<checode.length();i++){
buffer.append(checode.charAt(i)+" ");
}
//在长方形里绘制验证码15,20是起始坐标
graphics.drawString(buffer.toString(),15,20);
return image;
}
}

@ -1,8 +1,6 @@
package com.manage.util; package com.manage.util;
import org.apache.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@ -21,7 +19,7 @@ import java.io.PrintStream;
* @Version: 1.0 * @Version: 1.0
*/ */
public class ExceptionPrintUtil { public class ExceptionPrintUtil {
private static Logger log = LogManager.getLogger("errorLog"); private static Logger log = Logger.getLogger("errorMsg");
public static void printException(Exception e){ public static void printException(Exception e){
//方法名 //方法名
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();

@ -15,6 +15,8 @@ import java.util.Map;
*/ */
public class Msg { public class Msg {
//state:100-success 200-fail //state:100-success 200-fail
private Boolean result;
private int code; private int code;
//提示信息 //提示信息
private String msg; private String msg;
@ -28,6 +30,22 @@ public class Msg {
return result; return result;
} }
public static Msg failUnlockUser(String unlockDate){
Msg result=new Msg();
result.setCode(200);
result.setMsg("登录账号失败次数过多,请在"+unlockDate+"后在登录");
return result;
}
public static Msg codeUser(){
Msg result=new Msg();
result.setCode(200);
result.setMsg("验证码错误,请重新登录");
return result;
}
public static Msg fail(){ public static Msg fail(){
Msg result=new Msg(); Msg result=new Msg();
result.setCode(200); result.setCode(200);
@ -35,6 +53,21 @@ public class Msg {
return result; return result;
} }
public static Msg failUser(){
Msg result=new Msg();
result.setCode(200);
result.setMsg("账号或密码错误");
return result;
}
public static Msg failUser2(){
Msg result=new Msg();
result.setCode(200);
result.setMsg("账号或密码错误次数过多,请十五分钟后在尝试登录");
return result;
}
public static Msg fail(String msg){ public static Msg fail(String msg){
Msg result=new Msg(); Msg result=new Msg();
result.setCode(200); result.setCode(200);
@ -48,6 +81,23 @@ public class Msg {
} }
public static Msg errorMessage(){
Msg result=new Msg();
result.setCode(400);
result.setMsg("账号或密码错误");
return result;
}
public static Msg correctMessage(){
Msg result=new Msg();
result.setCode(200);
result.setMsg("登录成功");
return result;
}
public int getCode() { public int getCode() {
return code; return code;
} }
@ -63,6 +113,14 @@ public class Msg {
public void setMsg(String msg) { public void setMsg(String msg) {
this.msg = msg; this.msg = msg;
} }
public Boolean getResult() {
return result;
}
public void setResult(Boolean result) {
this.result = result;
}
public Map<String, Object> getExtend() { public Map<String, Object> getExtend() {
return extend; return extend;

@ -18,4 +18,6 @@ public interface LogService {
int delLogsByDate(String date); int delLogsByDate(String date);
void deleteLogByIds(String str); void deleteLogByIds(String str);
Power_Log getUnlockDate(String userName);
} }

@ -1,6 +1,8 @@
package com.manage.service; package com.manage.service;
import com.manage.entity.CodeLogin;
import com.manage.entity.Power_User; import com.manage.entity.Power_User;
import com.manage.vo.CodeLoginVO;
import com.manage.vo.Power_UserVo; import com.manage.vo.Power_UserVo;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -22,12 +24,12 @@ public interface Power_UserService {
Power_UserVo selectByPrimaryKey(Integer userId); Power_UserVo selectByPrimaryKey(Integer userId);
Power_UserVo selectByUserName(String userName);
int updateByPrimaryKeySelective(Power_User record,HttpServletRequest request); int updateByPrimaryKeySelective(Power_User record,HttpServletRequest request);
int updateByPrimaryKey(Power_User record); int updateByPrimaryKey(Power_User record);
int updateUserPass(String ids,String userName,String encode,String date);
/** /**
* @Date 2019-07-31 * @Date 2019-07-31
* @Author zengwenhe * @Author zengwenhe
@ -82,7 +84,7 @@ public interface Power_UserService {
* @Author ljx * @Author ljx
* @Description * @Description
* */ * */
public boolean updatePassword(String newUserPwd); public boolean updatePassword(String userPwd);
String generateUUID(Integer userId); String generateUUID(Integer userId);
@ -95,4 +97,6 @@ public interface Power_UserService {
public Power_UserVo findPowerUserByUserNameAndRemark(Power_User powerUser); public Power_UserVo findPowerUserByUserNameAndRemark(Power_User powerUser);
void updatePersonal(Power_User user); void updatePersonal(Power_User user);
public Power_UserVo findUserName(Power_User powerUser);
} }

@ -83,6 +83,12 @@ public class LogServiceImpl implements LogService {
logMapper.deleteLogByIds(str); logMapper.deleteLogByIds(str);
} }
@Override
public Power_Log getUnlockDate(String userName) {
return logMapper.getUnlockDate(userName);
}
private String getAddressIp( HttpServletRequest request){ private String getAddressIp( HttpServletRequest request){
// 获取访问真实IP // 获取访问真实IP
String ipAddress = request.getHeader("x-forwarded-for"); String ipAddress = request.getHeader("x-forwarded-for");

@ -748,7 +748,7 @@ public class PowerServiceImpl implements PowerService {
public List<PowerTree> getRolePowerTreeBySysFlag(String sysFlag,Power_User user) { public List<PowerTree> getRolePowerTreeBySysFlag(String sysFlag,Power_User user) {
//根据系统标识查询科室id //根据系统标识查询科室id
List<Power_Sys_DictVo> dicts = new ArrayList<>(); List<Power_Sys_DictVo> dicts = new ArrayList<>();
if(user.getRoleId() == 0 || user.getRoleId() == -100){ if(user.getRoleId() == 0){
dicts = sysDictMapper.selectAllByAdmin(); dicts = sysDictMapper.selectAllByAdmin();
}/*else if(user.getRoleId() == -100){ }/*else if(user.getRoleId() == -100){
dicts = sysDictMapper.selectAllByHosRoleId(user.getUserId()); dicts = sysDictMapper.selectAllByHosRoleId(user.getUserId());
@ -866,7 +866,7 @@ public class PowerServiceImpl implements PowerService {
public List<PowerTree> getUserPowerTreeBySysFlag(String sysFlag,Power_User user) { public List<PowerTree> getUserPowerTreeBySysFlag(String sysFlag,Power_User user) {
//根据系统标识查询科室id //根据系统标识查询科室id
List<Power_Sys_DictVo> dicts = new ArrayList<>(); List<Power_Sys_DictVo> dicts = new ArrayList<>();
if(user.getRoleId() == 0 || user.getRoleId() == -100){ if(user.getRoleId() == 0){
dicts = sysDictMapper.selectAllByAdmin(); dicts = sysDictMapper.selectAllByAdmin();
}/*else if(user.getRoleId() == -100){ }/*else if(user.getRoleId() == -100){
dicts = sysDictMapper.selectAllByHosRoleId(user.getUserId()); dicts = sysDictMapper.selectAllByHosRoleId(user.getUserId());

@ -4,6 +4,7 @@ import com.manage.dao.Power_UserMapper;
import com.manage.dao.User_Dept_MenuMapper; import com.manage.dao.User_Dept_MenuMapper;
import com.manage.encrypt.Base64; import com.manage.encrypt.Base64;
import com.manage.encrypt.MD5; import com.manage.encrypt.MD5;
import com.manage.entity.CodeLogin;
import com.manage.entity.Power_Dept; import com.manage.entity.Power_Dept;
import com.manage.entity.Power_User; import com.manage.entity.Power_User;
import com.manage.service.Power_DeptService; import com.manage.service.Power_DeptService;
@ -11,6 +12,7 @@ import com.manage.service.Power_RoleService;
import com.manage.service.Power_UserService; import com.manage.service.Power_UserService;
import com.manage.util.ActionScopeUtils; import com.manage.util.ActionScopeUtils;
import com.manage.util.Constant; import com.manage.util.Constant;
import com.manage.vo.CodeLoginVO;
import com.manage.vo.Power_UserVo; import com.manage.vo.Power_UserVo;
import com.manage.vo.User_Dept_Menu; import com.manage.vo.User_Dept_Menu;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -99,6 +101,12 @@ public class Power_UserServiceImpl implements Power_UserService {
return power_user; return power_user;
} }
@Override
public Power_UserVo selectByUserName(String userName) {
Power_UserVo power_user = powerUserMapper.selectByUserName(userName);
return power_user;
}
@Override @Override
public int updateByPrimaryKeySelective(Power_User powerUser,HttpServletRequest request) { public int updateByPrimaryKeySelective(Power_User powerUser,HttpServletRequest request) {
//取得当前登录账号 //取得当前登录账号
@ -116,11 +124,6 @@ public class Power_UserServiceImpl implements Power_UserService {
return powerUserMapper.updateByPrimaryKey(record); return powerUserMapper.updateByPrimaryKey(record);
} }
@Override
public int updateUserPass(String ids, String userName, String encode, String date) {
return powerUserMapper.updateUserPass(ids,userName,encode,date);
}
@Override @Override
public Power_UserVo findPowerUserByUserNameAndUserPwd(Power_User powerUser) { public Power_UserVo findPowerUserByUserNameAndUserPwd(Power_User powerUser) {
if(powerUser.getUserPwd() != null && powerUser.getUserName() != null){ if(powerUser.getUserPwd() != null && powerUser.getUserName() != null){
@ -244,10 +247,10 @@ public class Power_UserServiceImpl implements Power_UserService {
} }
@Override @Override
public boolean updatePassword(String newUserPwd) { public boolean updatePassword(String userPwd) {
Power_User powerUser = (Power_User) ActionScopeUtils.getSessionAttribute(Constant.CURRENT_USER); Power_User powerUser = (Power_User) ActionScopeUtils.getSessionAttribute(Constant.CURRENT_USER);
if(StringUtils.isNotBlank(newUserPwd)){ if(StringUtils.isNotBlank(userPwd)){
powerUser.setUserPwd(Base64.encode(MD5.KL(newUserPwd))); powerUser.setUserPwd(Base64.encode(MD5.KL(userPwd)));
powerUserMapper.updateByPrimaryKeySelective(powerUser); powerUserMapper.updateByPrimaryKeySelective(powerUser);
return true; return true;
} }
@ -268,4 +271,10 @@ public class Power_UserServiceImpl implements Power_UserService {
public void updatePersonal(Power_User user) { public void updatePersonal(Power_User user) {
powerUserMapper.updatePersonal(user); powerUserMapper.updatePersonal(user);
} }
@Override
public Power_UserVo findUserName(Power_User powerUser) {
return powerUserMapper.findUserName(powerUser);
}
} }

Loading…
Cancel
Save