Commit 28fd9ccd authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents 032aa26b 8a2e7cd7
...@@ -2,6 +2,9 @@ package com.mortals.xhx.module.workman.model; ...@@ -2,6 +2,9 @@ package com.mortals.xhx.module.workman.model;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.mortals.xhx.module.workman.model.vo.WorkmanVo; import com.mortals.xhx.module.workman.model.vo.WorkmanVo;
import java.util.Date;
/** /**
* 工作人员实体对象 * 工作人员实体对象
* *
...@@ -105,6 +108,14 @@ public class WorkmanEntity extends WorkmanVo { ...@@ -105,6 +108,14 @@ public class WorkmanEntity extends WorkmanVo {
*/ */
@JSONField(serialize = false) @JSONField(serialize = false)
private String loginPwd; private String loginPwd;
/**
* 最后一次登录时间
*/
private Date lastLoginTime;
/**
* 最后一次登录地址
*/
private String lastLoginAddress;
public WorkmanEntity(){} public WorkmanEntity(){}
...@@ -431,7 +442,34 @@ public class WorkmanEntity extends WorkmanVo { ...@@ -431,7 +442,34 @@ public class WorkmanEntity extends WorkmanVo {
this.loginPwd = loginPwd; this.loginPwd = loginPwd;
} }
/**
* 获取 最后一次登录时间
* @return Date
*/
public Date getLastLoginTime(){
return lastLoginTime;
}
/**
* 设置 最后一次登录时间
* @param lastLoginTime
*/
public void setLastLoginTime(Date lastLoginTime){
this.lastLoginTime = lastLoginTime;
}
/**
* 获取 最后一次登录地址
* @return String
*/
public String getLastLoginAddress(){
return lastLoginAddress;
}
/**
* 设置 最后一次登录地址
* @param lastLoginAddress
*/
public void setLastLoginAddress(String lastLoginAddress){
this.lastLoginAddress = lastLoginAddress;
}
@Override @Override
...@@ -475,6 +513,8 @@ public class WorkmanEntity extends WorkmanVo { ...@@ -475,6 +513,8 @@ public class WorkmanEntity extends WorkmanVo {
sb.append(",online:").append(getOnline()); sb.append(",online:").append(getOnline());
sb.append(",loginName:").append(getLoginName()); sb.append(",loginName:").append(getLoginName());
sb.append(",loginPwd:").append(getLoginPwd()); sb.append(",loginPwd:").append(getLoginPwd());
sb.append(",lastLoginTime:").append(getLastLoginTime());
sb.append(",lastLoginAddress:").append(getLastLoginAddress());
return sb.toString(); return sb.toString();
} }
...@@ -525,5 +565,9 @@ public class WorkmanEntity extends WorkmanVo { ...@@ -525,5 +565,9 @@ public class WorkmanEntity extends WorkmanVo {
this.loginName = ""; this.loginName = "";
this.loginPwd = ""; this.loginPwd = "";
this.lastLoginTime = null;
this.lastLoginAddress = "";
} }
} }
\ No newline at end of file
...@@ -177,6 +177,15 @@ public class WorkmanQuery extends WorkmanEntity { ...@@ -177,6 +177,15 @@ public class WorkmanQuery extends WorkmanEntity {
/** 密码 */ /** 密码 */
private List<String> loginPwdList; private List<String> loginPwdList;
/** 开始 最后一次登录时间 */
private String lastLoginTimeStart;
/** 结束 最后一次登录时间 */
private String lastLoginTimeEnd;
/** 最后一次登录地址 */
private List<String> lastLoginAddressList;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */ /** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<WorkmanQuery> orConditionList; private List<WorkmanQuery> orConditionList;
...@@ -1065,6 +1074,55 @@ public class WorkmanQuery extends WorkmanEntity { ...@@ -1065,6 +1074,55 @@ public class WorkmanQuery extends WorkmanEntity {
public void setLoginPwdList(List<String> loginPwdList){ public void setLoginPwdList(List<String> loginPwdList){
this.loginPwdList = loginPwdList; this.loginPwdList = loginPwdList;
} }
/**
* 获取 开始 最后一次登录时间
* @return lastLoginTimeStart
*/
public String getLastLoginTimeStart(){
return this.lastLoginTimeStart;
}
/**
* 设置 开始 最后一次登录时间
* @param lastLoginTimeStart
*/
public void setLastLoginTimeStart(String lastLoginTimeStart){
this.lastLoginTimeStart = lastLoginTimeStart;
}
/**
* 获取 结束 最后一次登录时间
* @return lastLoginTimeEnd
*/
public String getLastLoginTimeEnd(){
return this.lastLoginTimeEnd;
}
/**
* 设置 结束 最后一次登录时间
* @param lastLoginTimeEnd
*/
public void setLastLoginTimeEnd(String lastLoginTimeEnd){
this.lastLoginTimeEnd = lastLoginTimeEnd;
}
/**
* 获取 最后一次登录地址
* @return lastLoginAddressList
*/
public List<String> getLastLoginAddressList(){
return this.lastLoginAddressList;
}
/**
* 设置 最后一次登录地址
* @param lastLoginAddressList
*/
public void setLastLoginAddressList(List<String> lastLoginAddressList){
this.lastLoginAddressList = lastLoginAddressList;
}
/** /**
* 设置 序号,主键,自增长 * 设置 序号,主键,自增长
* @param id * @param id
......
...@@ -20,10 +20,11 @@ public interface WorkmanService extends ICRUDCacheService<WorkmanEntity,Long> { ...@@ -20,10 +20,11 @@ public interface WorkmanService extends ICRUDCacheService<WorkmanEntity,Long> {
* *
* @param loginName 登录用户名 * @param loginName 登录用户名
* @param password 登录密码 * @param password 登录密码
* @param ip ip地址
* @return * @return
* @throws AppException * @throws AppException
*/ */
WorkmanEntity doLogin(String loginName, String password) throws AppException; WorkmanEntity doLogin(String loginName, String password,String ip) throws AppException;
......
...@@ -88,7 +88,7 @@ public class WorkmanServiceImpl extends AbstractCRUDCacheServiceImpl<WorkmanDao, ...@@ -88,7 +88,7 @@ public class WorkmanServiceImpl extends AbstractCRUDCacheServiceImpl<WorkmanDao,
@Override @Override
public WorkmanEntity doLogin(String loginName, String password) throws AppException { public WorkmanEntity doLogin(String loginName, String password,String loginIp) throws AppException {
WorkmanEntity workmanEntity = this.selectOne(new WorkmanQuery().loginName(loginName)); WorkmanEntity workmanEntity = this.selectOne(new WorkmanQuery().loginName(loginName));
if (workmanEntity == null || !workmanEntity.getLoginName().equals(loginName)) { if (workmanEntity == null || !workmanEntity.getLoginName().equals(loginName)) {
throw new AppException("用户名不存在!"); throw new AppException("用户名不存在!");
...@@ -100,7 +100,11 @@ public class WorkmanServiceImpl extends AbstractCRUDCacheServiceImpl<WorkmanDao, ...@@ -100,7 +100,11 @@ public class WorkmanServiceImpl extends AbstractCRUDCacheServiceImpl<WorkmanDao,
} catch (Exception e) { } catch (Exception e) {
throw new AppException("密码验认出错!", e); throw new AppException("密码验认出错!", e);
} }
WorkmanEntity update = new WorkmanEntity();
update.setId(workmanEntity.getId());
update.setLastLoginAddress(loginIp);
update.setLastLoginTime(new Date());
this.dao.update(update);
return workmanEntity; return workmanEntity;
} }
......
...@@ -63,7 +63,8 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman ...@@ -63,7 +63,8 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman
public String doLogin(@RequestBody WorkmanEntity query) { public String doLogin(@RequestBody WorkmanEntity query) {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
try { try {
WorkmanEntity workmanEntity = this.service.doLogin(query.getLoginName(), query.getLoginPwd()); String ip = super.getRequestIP(request);
WorkmanEntity workmanEntity = this.service.doLogin(query.getLoginName(), query.getLoginPwd(),ip);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "工作人员登录成功!"); ret.put(KEY_RESULT_MSG, "工作人员登录成功!");
ret.put(KEY_RESULT_DATA, workmanEntity); ret.put(KEY_RESULT_DATA, workmanEntity);
......
...@@ -954,14 +954,13 @@ data|object|数据对象 ...@@ -954,14 +954,13 @@ data|object|数据对象
&emsp;&emsp;roleCode|String|角色编码 &emsp;&emsp;roleCode|String|角色编码
&emsp;&emsp;roleSort|Integer|角色排序字段 &emsp;&emsp;roleSort|Integer|角色排序字段
&emsp;&emsp;remark|String|备注 &emsp;&emsp;remark|String|备注
&emsp;&emsp;roleType|Integer|角色状态(0.停用,1.启用)
&emsp;&emsp;menuIdList|Arrays|菜单ID列表,值为long &emsp;&emsp;menuIdList|Arrays|菜单ID列表,值为long
&emsp;&emsp;createTime|Date|创建时间 &emsp;&emsp;createTime|Date|创建时间
&emsp;&emsp;createUserId|Long|创建用户 &emsp;&emsp;createUserId|Long|创建用户
&emsp;&emsp;createUserName|String|创建用户名称 &emsp;&emsp;createUserName|String|创建用户名称
dict|object|字典对象 dict|object|字典对象
&emsp;roleType|object|字典属性对象,详见附录 &emsp;roleType|object|字典属性对象,详见附录
&emsp;roleType|object|字典属性对象,详见附录 &emsp;status|object|字典属性对象,详见附录
**响应消息样例:** **响应消息样例:**
``` ```
...@@ -1003,15 +1002,13 @@ data|object|数据对象 ...@@ -1003,15 +1002,13 @@ data|object|数据对象
&emsp;name|String|角色名称 &emsp;name|String|角色名称
&emsp;roleCode|String|角色编码 &emsp;roleCode|String|角色编码
&emsp;roleSort|Integer|角色排序字段 &emsp;roleSort|Integer|角色排序字段
&emsp;roleType|Integer|角色类型(0.系统内置角色,1.默认系统角色,2.普通角色)
&emsp;remark|String|备注 &emsp;remark|String|备注
&emsp;roleType|Integer|角色状态(0.停用,1.启用)
&emsp;createTime|Date|创建时间 &emsp;createTime|Date|创建时间
&emsp;createUserId|Long|创建用户 &emsp;createUserId|Long|创建用户
&emsp;createUserName|String|创建用户名称 &emsp;createUserName|String|创建用户名称
dict|object|字典对象 dict|object|字典对象
&emsp;roleType|object|字典属性对象,详见附录 &emsp;roleType|object|字典属性对象,详见附录
&emsp;roleType|object|字典属性对象,详见附录 &emsp;status|object|字典属性对象,详见附录
**响应消息样例:** **响应消息样例:**
``` ```
...@@ -1022,9 +1019,7 @@ dict|object|字典对象 ...@@ -1022,9 +1019,7 @@ dict|object|字典对象
"name":"c9szsk", "name":"c9szsk",
"roleCode":"c2f41g", "roleCode":"c2f41g",
"roleSort":2788, "roleSort":2788,
"roleType":541,
"remark":"tym2dx", "remark":"tym2dx",
"roleType":3737,
"createTime":"2022-06-02", "createTime":"2022-06-02",
"createUserId":5091, "createUserId":5091,
"createUserName":"zx9ud1" "createUserName":"zx9ud1"
...@@ -1049,9 +1044,7 @@ dict|object|字典对象 ...@@ -1049,9 +1044,7 @@ dict|object|字典对象
name|String|是|角色名称 name|String|是|角色名称
roleCode|String|是|角色编码 roleCode|String|是|角色编码
roleSort|Integer|是|角色排序字段 roleSort|Integer|是|角色排序字段
roleType|Integer|是|角色类型(0.系统内置角色,1.默认系统角色,2.普通角色)
remark|String|是|备注 remark|String|是|备注
roleType|Integer|是|角色状态(0.停用,1.启用)
createUserName|String|是|创建用户名称 createUserName|String|是|创建用户名称
**请求样例:** **请求样例:**
...@@ -1060,9 +1053,7 @@ createUserName|String|是|创建用户名称 ...@@ -1060,9 +1053,7 @@ createUserName|String|是|创建用户名称
"name":"i8scn3", "name":"i8scn3",
"roleCode":"nthtg2", "roleCode":"nthtg2",
"roleSort":3063, "roleSort":3063,
"roleType":6039,
"remark":"32xaq6", "remark":"32xaq6",
"roleType":3352,
"createUserName":"ztwqjn" "createUserName":"ztwqjn"
} }
...@@ -1080,9 +1071,7 @@ data|object|数据对象 ...@@ -1080,9 +1071,7 @@ data|object|数据对象
&emsp;&emsp;name|String|角色名称 &emsp;&emsp;name|String|角色名称
&emsp;&emsp;roleCode|String|角色编码 &emsp;&emsp;roleCode|String|角色编码
&emsp;&emsp;roleSort|Integer|角色排序字段 &emsp;&emsp;roleSort|Integer|角色排序字段
&emsp;&emsp;roleType|Integer|角色类型(0.系统内置角色,1.默认系统角色,2.普通角色)
&emsp;&emsp;remark|String|备注 &emsp;&emsp;remark|String|备注
&emsp;&emsp;roleType|Integer|角色状态(0.停用,1.启用)
&emsp;&emsp;createTime|Date|创建时间 &emsp;&emsp;createTime|Date|创建时间
&emsp;&emsp;createUserId|Long|创建用户 &emsp;&emsp;createUserId|Long|创建用户
&emsp;&emsp;createUserName|String|创建用户名称 &emsp;&emsp;createUserName|String|创建用户名称
...@@ -1297,6 +1286,7 @@ data|object|数据对象 ...@@ -1297,6 +1286,7 @@ data|object|数据对象
&emsp;&emsp;createTime|Date|创建时间 &emsp;&emsp;createTime|Date|创建时间
&emsp;&emsp;createUserId|Long|创建用户 &emsp;&emsp;createUserId|Long|创建用户
&emsp;&emsp;createUserName|String|创建用户名称 &emsp;&emsp;createUserName|String|创建用户名称
&emsp;&emsp;remark|String|描述备注
dict|object|字典对象 dict|object|字典对象
&emsp;linkType|object|字典属性对象,详见附录 &emsp;linkType|object|字典属性对象,详见附录
&emsp;visible|object|字典属性对象,详见附录 &emsp;visible|object|字典属性对象,详见附录
...@@ -1474,6 +1464,7 @@ data|object|数据对象 ...@@ -1474,6 +1464,7 @@ data|object|数据对象
&emsp;createTime|Date|创建时间 &emsp;createTime|Date|创建时间
&emsp;createUserId|Long|创建用户 &emsp;createUserId|Long|创建用户
&emsp;createUserName|String|创建用户名称 &emsp;createUserName|String|创建用户名称
&emsp;&emsp;remark|String|描述备注
dict|object|字典对象 dict|object|字典对象
&emsp;linkType|object|字典属性对象,详见附录 &emsp;linkType|object|字典属性对象,详见附录
&emsp;visible|object|字典属性对象,详见附录 &emsp;visible|object|字典属性对象,详见附录
...@@ -1501,7 +1492,8 @@ dict|object|字典对象 ...@@ -1501,7 +1492,8 @@ dict|object|字典对象
"orderId":6861, "orderId":6861,
"createTime":"2022-06-02", "createTime":"2022-06-02",
"createUserId":2189, "createUserId":2189,
"createUserName":"zov8bo" "createUserName":"zov8bo",
"remark":"zov8bo"
} }
} }
``` ```
...@@ -1532,7 +1524,7 @@ menuType|Integer|是|菜单类型(0.目录,1.菜单,2.按钮) ...@@ -1532,7 +1524,7 @@ menuType|Integer|是|菜单类型(0.目录,1.菜单,2.按钮)
status|Integer|是|菜单状态(0.禁用,1.启用) status|Integer|是|菜单状态(0.禁用,1.启用)
authType|Integer|是|权限类型(0.无限制,1.无需登录查看,2.需要登录查看,3.需要角色权限查看) authType|Integer|是|权限类型(0.无限制,1.无需登录查看,2.需要登录查看,3.需要角色权限查看)
orderId|Integer|是|排序编号 orderId|Integer|是|排序编号
createUserName|String|是|创建用户名称 remark|String|是|描述备注
**请求样例:** **请求样例:**
``` ```
...@@ -1548,7 +1540,8 @@ createUserName|String|是|创建用户名称 ...@@ -1548,7 +1540,8 @@ createUserName|String|是|创建用户名称
"menuType":0, "menuType":0,
"status":1, "status":1,
"authType":3, "authType":3,
"orderId":0 "orderId":0,
"remark":"qnglei"
} }
``` ```
...@@ -1577,6 +1570,7 @@ data|object|数据对象 ...@@ -1577,6 +1570,7 @@ data|object|数据对象
&emsp;&emsp;createTime|Date|创建时间 &emsp;&emsp;createTime|Date|创建时间
&emsp;&emsp;createUserId|Long|创建用户 &emsp;&emsp;createUserId|Long|创建用户
&emsp;&emsp;createUserName|String|创建用户名称 &emsp;&emsp;createUserName|String|创建用户名称
&emsp;&emsp;remark|String|描述备注
**响应消息样例:** **响应消息样例:**
``` ```
......
...@@ -64,7 +64,7 @@ public class AuthUserInterceptor extends BaseInterceptor { ...@@ -64,7 +64,7 @@ public class AuthUserInterceptor extends BaseInterceptor {
//不存在时候 如果是管理员也不做拦截 //不存在时候 如果是管理员也不做拦截
IUser loginUser = authTokenService.getLoginUser(request); IUser loginUser = authTokenService.getLoginUser(request);
if(ObjectUtils.isEmpty(loginUser)){ if(ObjectUtils.isEmpty(loginUser)){
ret.put("code", -1); ret.put("code", 401);
ret.put("msg", "用户未登录或登录失效,请重新登录"); ret.put("msg", "用户未登录或登录失效,请重新登录");
ServletUtils.renderString(response, JSONObject.toJSONString(ret)); ServletUtils.renderString(response, JSONObject.toJSONString(ret));
return false; return false;
......
...@@ -18,6 +18,7 @@ import com.mortals.xhx.feign.rsp.ApiResp; ...@@ -18,6 +18,7 @@ import com.mortals.xhx.feign.rsp.ApiResp;
import com.mortals.xhx.module.menu.model.MenuQuery; import com.mortals.xhx.module.menu.model.MenuQuery;
import com.mortals.xhx.module.menu.model.vo.MenuNodeVO; import com.mortals.xhx.module.menu.model.vo.MenuNodeVO;
import com.mortals.xhx.module.role.service.RoleModelService; import com.mortals.xhx.module.role.service.RoleModelService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
......
package com.mortals.xhx.module.role.web; package com.mortals.xhx.module.role.web;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.param.service.ParamService; import com.mortals.xhx.module.param.service.ParamService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -51,9 +52,13 @@ public class RoleController extends BaseCRUDJsonBodyMappingController<RoleServic ...@@ -51,9 +52,13 @@ public class RoleController extends BaseCRUDJsonBodyMappingController<RoleServic
@Override @Override
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "roleType", paramService.getParamBySecondOrganize("Role", "roleType")); //this.addDict(model, "roleType", paramService.getParamBySecondOrganize("Role", "roleType"));
super.init(model, context); super.init(model, context);
} }
@Override
protected void saveBefore(RoleEntity entity, Map<String, Object> model, Context context) throws AppException {
entity.setRoleType(1);
entity.setStatus(1);
}
} }
\ No newline at end of file
...@@ -54,6 +54,9 @@ public class UserVo extends BaseEntityLong { ...@@ -54,6 +54,9 @@ public class UserVo extends BaseEntityLong {
/** 查询条件 */ /** 查询条件 */
private String query; private String query;
private String oldPwd;
private String newPwd;
public static void main(String[] args) { public static void main(String[] args) {
UserQuery userEntity = new UserQuery(); UserQuery userEntity = new UserQuery();
......
...@@ -160,10 +160,10 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic ...@@ -160,10 +160,10 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic
@RequestMapping(value = "change/password", method = RequestMethod.POST) @RequestMapping(value = "change/password", method = RequestMethod.POST)
public String changePassword(@RequestParam String oldPwd, @RequestParam String newPwd) { public String changePassword(@RequestBody UserEntity entity) {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
try { try {
service.updateUserPwd(super.getCurUser().getLoginName(), oldPwd, newPwd); service.updateUserPwd(super.getCurUser().getLoginName(), entity.getOldPwd(), entity.getNewPwd());
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "密码修改成功!"); ret.put(KEY_RESULT_MSG, "密码修改成功!");
} catch (Exception e) { } catch (Exception e) {
......
...@@ -15,12 +15,16 @@ ...@@ -15,12 +15,16 @@
<select id="selectMenuTreeByUserId" parameterType="paramDto" resultMap="MenuEntity-Map"> <select id="selectMenuTreeByUserId" parameterType="paramDto" resultMap="MenuEntity-Map">
select <include refid="_columns"/> select <include refid="_columns"/>
from mortals_xhx_menu a FROM (
left join mortals_xhx_role_auth rm on a.id = rm.menuId SELECT m.*
left join mortals_xhx_role_user ur on rm.roleId = ur.roleId from mortals_xhx_menu m
left join mortals_xhx_role ro on ur.roleId = ro.id left join mortals_xhx_role_auth rm on m.id = rm.menuId
left join mortals_xhx_user u on ur.userId = u.id left join mortals_xhx_role_user ur on rm.roleId = ur.roleId
where u.id = #{condition.userId} and a.menuType in ('0','1','2') and a.status = 1 AND ro.status = 1 left join mortals_xhx_role ro on ur.roleId = ro.id
where ur.userId = #{condition.userId} and m.menuType in ('0','1','2') and m.status = 1
UNION
SELECT * from mortals_xhx_menu where parentId =-1
) a
order by a.parentId, a.orderId order by a.parentId, a.orderId
</select> </select>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment