新增账号过期时间、密码过期时间
This commit is contained in:
parent
4d3438d756
commit
5682f8c448
@ -180,5 +180,14 @@ public interface ISystemConstant {
|
|||||||
* admin
|
* admin
|
||||||
*/
|
*/
|
||||||
String ADMIN = "admin";
|
String ADMIN = "admin";
|
||||||
|
/**
|
||||||
|
* 日期格式化,年月日
|
||||||
|
*/
|
||||||
|
String DATE_FORMATTER_YYYY_MM_DD = "yyyy-MM-dd";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 日期格式化,年月日时分秒
|
||||||
|
*/
|
||||||
|
String DATE_FORMATTER_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,8 @@ public class UserDTO implements Serializable {
|
|||||||
private Integer userType;
|
private Integer userType;
|
||||||
@ApiModelProperty(name = "userState", value = "用户状态,0:正常,1:冻结")
|
@ApiModelProperty(name = "userState", value = "用户状态,0:正常,1:冻结")
|
||||||
private Integer userState;
|
private Integer userState;
|
||||||
|
@ApiModelProperty(name = "userExpiredDate", value = "超时时间,空表示永不超时")
|
||||||
|
private String userExpiredDate;
|
||||||
@ApiModelProperty(name = "userAvatar", value = "用户头像ID")
|
@ApiModelProperty(name = "userAvatar", value = "用户头像ID")
|
||||||
private String userAvatar;
|
private String userAvatar;
|
||||||
@ApiModelProperty(name = "lastLoginAddress", value = "最后登录IP")
|
@ApiModelProperty(name = "lastLoginAddress", value = "最后登录IP")
|
||||||
@ -119,6 +121,14 @@ public class UserDTO implements Serializable {
|
|||||||
this.userState = userState;
|
this.userState = userState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getUserExpiredDate() {
|
||||||
|
return userExpiredDate == null ? "" : userExpiredDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserExpiredDate(String userExpiredDate) {
|
||||||
|
this.userExpiredDate = userExpiredDate;
|
||||||
|
}
|
||||||
|
|
||||||
public String getUserAvatar() {
|
public String getUserAvatar() {
|
||||||
return userAvatar == null ? "" : userAvatar.trim();
|
return userAvatar == null ? "" : userAvatar.trim();
|
||||||
}
|
}
|
||||||
@ -226,48 +236,50 @@ public class UserDTO implements Serializable {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
final StringBuilder sb = new StringBuilder("{");
|
final StringBuilder sb = new StringBuilder("{");
|
||||||
sb.append("\"userId\":")
|
sb.append("\"userId\":\"")
|
||||||
.append("\"").append(userId).append("\"");
|
.append(userId).append('\"');
|
||||||
sb.append(",\"userUsername\":")
|
sb.append(",\"userUsername\":\"")
|
||||||
.append("\"").append(userUsername).append("\"");
|
.append(userUsername).append('\"');
|
||||||
sb.append(",\"userName\":")
|
sb.append(",\"userName\":\"")
|
||||||
.append("\"").append(userName).append("\"");
|
.append(userName).append('\"');
|
||||||
sb.append(",\"userPhone\":")
|
sb.append(",\"userPhone\":\"")
|
||||||
.append("\"").append(userPhone).append("\"");
|
.append(userPhone).append('\"');
|
||||||
sb.append(",\"userEmail\":")
|
sb.append(",\"userEmail\":\"")
|
||||||
.append("\"").append(userEmail).append("\"");
|
.append(userEmail).append('\"');
|
||||||
sb.append(",\"userUKey\":")
|
sb.append(",\"userUKey\":\"")
|
||||||
.append("\"").append(userUKey).append("\"");
|
.append(userUKey).append('\"');
|
||||||
sb.append(",\"userType\":")
|
sb.append(",\"userType\":")
|
||||||
.append(userType);
|
.append(userType);
|
||||||
sb.append(",\"userState\":")
|
sb.append(",\"userState\":")
|
||||||
.append(userState);
|
.append(userState);
|
||||||
sb.append(",\"userAvatar\":")
|
sb.append(",\"userExpiredDate\":")
|
||||||
.append("\"").append(userAvatar).append("\"");
|
.append(userExpiredDate);
|
||||||
sb.append(",\"lastLoginAddress\":")
|
sb.append(",\"userAvatar\":\"")
|
||||||
.append("\"").append(lastLoginAddress).append("\"");
|
.append(userAvatar).append('\"');
|
||||||
sb.append(",\"lastLoginTime\":")
|
sb.append(",\"lastLoginAddress\":\"")
|
||||||
.append("\"").append(lastLoginTime).append("\"");
|
.append(lastLoginAddress).append('\"');
|
||||||
sb.append(",\"userLongitude\":")
|
sb.append(",\"lastLoginTime\":\"")
|
||||||
.append("\"").append(userLongitude).append("\"");
|
.append(lastLoginTime).append('\"');
|
||||||
sb.append(",\"userLatitude\":")
|
sb.append(",\"userLongitude\":\"")
|
||||||
.append("\"").append(userLatitude).append("\"");
|
.append(userLongitude).append('\"');
|
||||||
sb.append(",\"departmentIds\":")
|
sb.append(",\"userLatitude\":\"")
|
||||||
.append("\"").append(departmentIds).append("\"");
|
.append(userLatitude).append('\"');
|
||||||
sb.append(",\"departmentNames\":")
|
sb.append(",\"departmentIds\":\"")
|
||||||
.append("\"").append(departmentNames).append("\"");
|
.append(departmentIds).append('\"');
|
||||||
sb.append(",\"roleIds\":")
|
sb.append(",\"departmentNames\":\"")
|
||||||
.append("\"").append(roleIds).append("\"");
|
.append(departmentNames).append('\"');
|
||||||
sb.append(",\"roleNames\":")
|
sb.append(",\"roleIds\":\"")
|
||||||
.append("\"").append(roleNames).append("\"");
|
.append(roleIds).append('\"');
|
||||||
sb.append(",\"positionIds\":")
|
sb.append(",\"roleNames\":\"")
|
||||||
.append("\"").append(positionIds).append("\"");
|
.append(roleNames).append('\"');
|
||||||
sb.append(",\"positionNames\":")
|
sb.append(",\"positionIds\":\"")
|
||||||
.append("\"").append(positionNames).append("\"");
|
.append(positionIds).append('\"');
|
||||||
|
sb.append(",\"positionNames\":\"")
|
||||||
|
.append(positionNames).append('\"');
|
||||||
sb.append(",\"loginType\":")
|
sb.append(",\"loginType\":")
|
||||||
.append(loginType);
|
.append(loginType);
|
||||||
sb.append(",\"gmtCreate\":")
|
sb.append(",\"gmtCreate\":\"")
|
||||||
.append("\"").append(gmtCreate).append("\"");
|
.append(gmtCreate).append('\"');
|
||||||
sb.append('}');
|
sb.append('}');
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
@ -39,17 +39,13 @@ import java.util.Map;
|
|||||||
* @Version: 1.0
|
* @Version: 1.0
|
||||||
**/
|
**/
|
||||||
@Controller
|
@Controller
|
||||||
public class IndexController {
|
public class ApiInfoController {
|
||||||
|
|
||||||
private static String API_TYPE_GET = "get";
|
private static String API_TYPE_GET = "get";
|
||||||
private static String API_TYPE_POST = "post";
|
private static String API_TYPE_POST = "post";
|
||||||
private static String API_TYPE_PUT = "put";
|
private static String API_TYPE_PUT = "put";
|
||||||
private static String API_TYPE_DELETE = "delete";
|
private static String API_TYPE_DELETE = "delete";
|
||||||
|
|
||||||
@Autowired(required = false)
|
|
||||||
private IMenuBaseService menuBaseService;
|
|
||||||
@Autowired(required = false)
|
|
||||||
private IUserCheckService userCheckService;
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private DocumentationCache documentationCache;
|
private DocumentationCache documentationCache;
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -105,25 +101,4 @@ public class IndexController {
|
|||||||
systemApiDTO.setApis(apis);
|
systemApiDTO.setApis(apis);
|
||||||
return systemApiDTO;
|
return systemApiDTO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("index")
|
|
||||||
public ModelAndView goIndex() {
|
|
||||||
ModelAndView mv = new ModelAndView("index");
|
|
||||||
|
|
||||||
if (menuBaseService != null) {
|
|
||||||
List<MenuDTO> menus;
|
|
||||||
// 加载菜单
|
|
||||||
if (userCheckService != null) {
|
|
||||||
// 引入用户模块,是统一用户系统,加载统一用户系统菜单
|
|
||||||
menus = menuBaseService.listAllByParentId(IMenuBaseService.MENU_UNIFIED_USER);
|
|
||||||
} else {
|
|
||||||
// 未引入用户模块,是客户端系统,加载客户端菜单
|
|
||||||
menus = new ArrayList<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
mv.addObject("menus", menus);
|
|
||||||
}
|
|
||||||
|
|
||||||
return mv;
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
package ink.wgink.login.base.controller.route;
|
||||||
|
|
||||||
|
import ink.wgink.common.component.SecurityComponent;
|
||||||
|
import ink.wgink.interfaces.menu.IMenuBaseService;
|
||||||
|
import ink.wgink.interfaces.user.IUserCheckService;
|
||||||
|
import ink.wgink.login.base.config.properties.SystemProperties;
|
||||||
|
import ink.wgink.login.base.consts.IUserCenterConst;
|
||||||
|
import ink.wgink.login.base.manager.ConfigManager;
|
||||||
|
import ink.wgink.pojo.bos.UserInfoBO;
|
||||||
|
import ink.wgink.pojo.dtos.menu.MenuDTO;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When you feel like quitting. Think about why you started
|
||||||
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
|
*
|
||||||
|
* @ClassName: IndexRouteController
|
||||||
|
* @Description: index
|
||||||
|
* @Author: wanggeng
|
||||||
|
* @Date: 2021/2/27 3:38 下午
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
@Controller
|
||||||
|
public class IndexRouteController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SecurityComponent securityComponent;
|
||||||
|
@Autowired
|
||||||
|
private SystemProperties systemProperties;
|
||||||
|
@Autowired(required = false)
|
||||||
|
private IMenuBaseService menuBaseService;
|
||||||
|
|
||||||
|
@GetMapping("index")
|
||||||
|
public ModelAndView goIndex() {
|
||||||
|
ModelAndView mv = new ModelAndView("index");
|
||||||
|
UserInfoBO userInfoBO = securityComponent.getCurrentUser();
|
||||||
|
mv.addObject("userUsername", userInfoBO.getUserUsername());
|
||||||
|
Map<String, Object> config = ConfigManager.getInstance().getConfig();
|
||||||
|
if (!Objects.isNull(config.get(IUserCenterConst.LOGIN_PAGE_NAME)) && !StringUtils.isBlank(config.get(IUserCenterConst.LOGIN_PAGE_NAME).toString())) {
|
||||||
|
mv.addObject(IUserCenterConst.LOGIN_PAGE_NAME, config.get(IUserCenterConst.LOGIN_PAGE_NAME).toString());
|
||||||
|
} else {
|
||||||
|
mv.addObject(IUserCenterConst.LOGIN_PAGE_NAME, systemProperties.getLoginPageName());
|
||||||
|
}
|
||||||
|
if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_TITLE)) && !StringUtils.isBlank(config.get(IUserCenterConst.SYSTEM_TITLE).toString())) {
|
||||||
|
mv.addObject(IUserCenterConst.SYSTEM_TITLE, config.get(IUserCenterConst.SYSTEM_TITLE).toString());
|
||||||
|
} else {
|
||||||
|
mv.addObject(IUserCenterConst.SYSTEM_TITLE, systemProperties.getTitle());
|
||||||
|
}
|
||||||
|
// 系统LOGO
|
||||||
|
if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_LOGO)) && !StringUtils.isBlank(config.get(IUserCenterConst.SYSTEM_LOGO).toString())) {
|
||||||
|
mv.addObject(IUserCenterConst.SYSTEM_LOGO, config.get(IUserCenterConst.SYSTEM_LOGO).toString());
|
||||||
|
} else {
|
||||||
|
mv.addObject(IUserCenterConst.SYSTEM_LOGO, "");
|
||||||
|
}
|
||||||
|
mv.addObject("ws", systemProperties.getWs());
|
||||||
|
if (menuBaseService != null) {
|
||||||
|
List<MenuDTO> menus = menuBaseService.listAllByParentId(IMenuBaseService.MENU_UNIFIED_USER);
|
||||||
|
mv.addObject("menus", menus);
|
||||||
|
}
|
||||||
|
return mv;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,9 +1,12 @@
|
|||||||
package ink.wgink.login.base.controller.route;
|
package ink.wgink.login.base.controller.route;
|
||||||
|
|
||||||
import ink.wgink.interfaces.consts.ISystemConstant;
|
import ink.wgink.interfaces.consts.ISystemConstant;
|
||||||
|
import ink.wgink.interfaces.menu.IMenuBaseService;
|
||||||
|
import ink.wgink.interfaces.user.IUserCheckService;
|
||||||
import ink.wgink.login.base.config.properties.SystemProperties;
|
import ink.wgink.login.base.config.properties.SystemProperties;
|
||||||
import ink.wgink.login.base.consts.IUserCenterConst;
|
import ink.wgink.login.base.consts.IUserCenterConst;
|
||||||
import ink.wgink.login.base.manager.ConfigManager;
|
import ink.wgink.login.base.manager.ConfigManager;
|
||||||
|
import ink.wgink.pojo.dtos.menu.MenuDTO;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
|
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
|
||||||
@ -15,6 +18,8 @@ import org.springframework.web.servlet.ModelAndView;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ import ink.wgink.interfaces.role.IRoleMenuBaseService;
|
|||||||
import ink.wgink.interfaces.role.IRolePermissionBaseService;
|
import ink.wgink.interfaces.role.IRolePermissionBaseService;
|
||||||
import ink.wgink.interfaces.role.IRoleUserBaseService;
|
import ink.wgink.interfaces.role.IRoleUserBaseService;
|
||||||
import ink.wgink.login.base.exceptions.UserAuthenticationException;
|
import ink.wgink.login.base.exceptions.UserAuthenticationException;
|
||||||
|
import ink.wgink.login.base.manager.ConfigManager;
|
||||||
import ink.wgink.pojo.bos.LoginUser;
|
import ink.wgink.pojo.bos.LoginUser;
|
||||||
import ink.wgink.pojo.bos.RoleGrantedAuthorityBO;
|
import ink.wgink.pojo.bos.RoleGrantedAuthorityBO;
|
||||||
import ink.wgink.pojo.pos.DepartmentPO;
|
import ink.wgink.pojo.pos.DepartmentPO;
|
||||||
@ -18,20 +19,21 @@ import ink.wgink.pojo.pos.RolePO;
|
|||||||
import ink.wgink.service.department.service.IDepartmentUserService;
|
import ink.wgink.service.department.service.IDepartmentUserService;
|
||||||
import ink.wgink.service.user.pojo.pos.UserPO;
|
import ink.wgink.service.user.pojo.pos.UserPO;
|
||||||
import ink.wgink.service.user.service.IUserService;
|
import ink.wgink.service.user.service.IUserService;
|
||||||
|
import ink.wgink.util.date.DateUtil;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.joda.time.DateTime;
|
||||||
|
import org.joda.time.format.DateTimeFormat;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.cache.CacheManager;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ClassName: UserDetailServiceImpl
|
* @ClassName: UserDetailServiceImpl
|
||||||
@ -78,15 +80,9 @@ public class UserDetailServiceImpl implements UserDetailsService {
|
|||||||
if (null == userPO) {
|
if (null == userPO) {
|
||||||
throw new UserAuthenticationException("账号不存在");
|
throw new UserAuthenticationException("账号不存在");
|
||||||
}
|
}
|
||||||
if (userPO.getUserType() != 1) {
|
|
||||||
throw new UserAuthenticationException("非系统用户,无法登录");
|
|
||||||
}
|
|
||||||
if (userPO.getUserState() == 1) {
|
if (userPO.getUserState() == 1) {
|
||||||
throw new UserAuthenticationException("账号已冻结");
|
throw new UserAuthenticationException("账号已冻结");
|
||||||
}
|
}
|
||||||
if (userPO.getUserState() == 2) {
|
|
||||||
throw new UserAuthenticationException("账号已锁定");
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.debug("设置权限权限");
|
LOG.debug("设置权限权限");
|
||||||
LoginUser loginUser;
|
LoginUser loginUser;
|
||||||
@ -95,7 +91,6 @@ public class UserDetailServiceImpl implements UserDetailsService {
|
|||||||
grantedAuthorities.add(new RoleGrantedAuthorityBO(ISystemConstant.ADMIN));
|
grantedAuthorities.add(new RoleGrantedAuthorityBO(ISystemConstant.ADMIN));
|
||||||
loginUser = createUserBO(userPO, grantedAuthorities);
|
loginUser = createUserBO(userPO, grantedAuthorities);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
List<RolePO> rolePOs = null;
|
List<RolePO> rolePOs = null;
|
||||||
// 先处理授权,再创建对象,否则 grantedAuthorities 中无法赋值
|
// 先处理授权,再创建对象,否则 grantedAuthorities 中无法赋值
|
||||||
if (roleUserBaseService != null) {
|
if (roleUserBaseService != null) {
|
||||||
@ -139,7 +134,11 @@ public class UserDetailServiceImpl implements UserDetailsService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private LoginUser createUserBO(UserPO userPO, Set<GrantedAuthority> grantedAuthorities) {
|
private LoginUser createUserBO(UserPO userPO, Set<GrantedAuthority> grantedAuthorities) {
|
||||||
LoginUser loginUser = new LoginUser(userPO.getUserUsername(), userPO.getUserPassword(), userPO.getUserState() == 0 ? true : false, true, true, true, grantedAuthorities);
|
LoginUser loginUser = new LoginUser(userPO.getUserUsername(), userPO.getUserPassword(),
|
||||||
|
userPO.getUserType() == 1 ? true : false,
|
||||||
|
isAccountNonExpired(userPO),
|
||||||
|
isCredentialsNonExpired(userPO),
|
||||||
|
userPO.getUserState() == 0 ? true : false, grantedAuthorities);
|
||||||
loginUser.setUserId(userPO.getUserId());
|
loginUser.setUserId(userPO.getUserId());
|
||||||
loginUser.setUserName(userPO.getUserName());
|
loginUser.setUserName(userPO.getUserName());
|
||||||
loginUser.setUserPhone(userPO.getUserPhone());
|
loginUser.setUserPhone(userPO.getUserPhone());
|
||||||
@ -150,6 +149,56 @@ public class UserDetailServiceImpl implements UserDetailsService {
|
|||||||
return loginUser;
|
return loginUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 账号是否没有过期
|
||||||
|
*
|
||||||
|
* @param userPO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean isAccountNonExpired(UserPO userPO) {
|
||||||
|
if (StringUtils.equals(userPO.getUserUsername(), ISystemConstant.ADMIN)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!StringUtils.isBlank(userPO.getUserExpiredDate())) {
|
||||||
|
// 判断用户是否超时失效
|
||||||
|
DateTime expiredDateTime = DateTime.parse(userPO.getUserExpiredDate(), DateTimeFormat.forPattern(ISystemConstant.DATE_FORMATTER_YYYY_MM_DD_HH_MM_SS));
|
||||||
|
DateTime nowDateTime = DateTime.now();
|
||||||
|
if (expiredDateTime.isBefore(nowDateTime)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 密码是否没有过期
|
||||||
|
*
|
||||||
|
* @param userPO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean isCredentialsNonExpired(UserPO userPO) {
|
||||||
|
if (StringUtils.equals(userPO.getUserUsername(), ISystemConstant.ADMIN)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Map<String, Object> config = ConfigManager.getInstance().getConfig();
|
||||||
|
Object passwordValidity = config.get("passwordValidity");
|
||||||
|
// 自定义密码有效期
|
||||||
|
if (passwordValidity != null && StringUtils.equals(passwordValidity.toString(), "custom")) {
|
||||||
|
Object passwordValidityDays = config.get("passwordValidityDays");
|
||||||
|
int validityDays = passwordValidityDays == null ? 0 : (Integer) passwordValidityDays;
|
||||||
|
if (validityDays <= 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
DateTime passwordModifiedDateTime = DateTime.parse(userPO.getGmtPasswordModified(), DateTimeFormat.forPattern(ISystemConstant.DATE_FORMATTER_YYYY_MM_DD_HH_MM_SS));
|
||||||
|
DateTime passwordExpiredDateTime = passwordModifiedDateTime.plusDays(validityDays);
|
||||||
|
DateTime nowDateTime = DateTime.now();
|
||||||
|
if (passwordExpiredDateTime.isBefore(nowDateTime)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色授权列表
|
* 角色授权列表
|
||||||
*
|
*
|
||||||
@ -177,6 +226,9 @@ public class UserDetailServiceImpl implements UserDetailsService {
|
|||||||
* @param rolePOs
|
* @param rolePOs
|
||||||
*/
|
*/
|
||||||
private void removalDuplicateRole(List<RolePO> rolePOs) {
|
private void removalDuplicateRole(List<RolePO> rolePOs) {
|
||||||
|
if (rolePOs == null || rolePOs.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (int i = 0; i < rolePOs.size(); i++) {
|
for (int i = 0; i < rolePOs.size(); i++) {
|
||||||
RolePO rolePO = rolePOs.get(i);
|
RolePO rolePO = rolePOs.get(i);
|
||||||
boolean isExist = false;
|
boolean isExist = false;
|
||||||
|
@ -135,15 +135,15 @@ public class ServiceMenuStartUp implements ApplicationRunner {
|
|||||||
* @param menuParentId
|
* @param menuParentId
|
||||||
*/
|
*/
|
||||||
private void initMenuManage(Map<String, Object> params, String menuParentId) {
|
private void initMenuManage(Map<String, Object> params, String menuParentId) {
|
||||||
LOG.debug("初始化菜单:菜单管理");
|
LOG.debug("初始化菜单:系统菜单");
|
||||||
params.remove("menuId");
|
params.remove("menuId");
|
||||||
params.put("menuCode", "000100010001");
|
params.put("menuCode", "000100010001");
|
||||||
MenuDTO menuDTO = menuDao.getSimple(params);
|
MenuDTO menuDTO = menuDao.getSimple(params);
|
||||||
if (menuDTO == null) {
|
if (menuDTO == null) {
|
||||||
params.put("menuId", UUIDUtil.getUUID());
|
params.put("menuId", UUIDUtil.getUUID());
|
||||||
params.put("menuParentId", menuParentId);
|
params.put("menuParentId", menuParentId);
|
||||||
params.put("menuName", "菜单");
|
params.put("menuName", "系统菜单");
|
||||||
params.put("menuSummary", "菜单");
|
params.put("menuSummary", "系统菜单");
|
||||||
params.put("menuUrl", "/route/menu/list-tree");
|
params.put("menuUrl", "/route/menu/list-tree");
|
||||||
params.put("menuType", "1");
|
params.put("menuType", "1");
|
||||||
params.put("menuIcon", "fa-icon-color-white fa fa-list");
|
params.put("menuIcon", "fa-icon-color-white fa fa-list");
|
||||||
|
@ -7,6 +7,7 @@ import ink.wgink.interfaces.consts.IFileConstant;
|
|||||||
import ink.wgink.interfaces.consts.ISystemConstant;
|
import ink.wgink.interfaces.consts.ISystemConstant;
|
||||||
import ink.wgink.pojo.vos.IdsVO;
|
import ink.wgink.pojo.vos.IdsVO;
|
||||||
import ink.wgink.service.user.pojo.vos.RestPasswordVO;
|
import ink.wgink.service.user.pojo.vos.RestPasswordVO;
|
||||||
|
import ink.wgink.service.user.pojo.vos.UpdateExpiredDateVO;
|
||||||
import ink.wgink.service.user.pojo.vos.UpdateUsernameVO;
|
import ink.wgink.service.user.pojo.vos.UpdateUsernameVO;
|
||||||
import ink.wgink.pojo.ListPage;
|
import ink.wgink.pojo.ListPage;
|
||||||
import ink.wgink.pojo.dtos.user.UserDTO;
|
import ink.wgink.pojo.dtos.user.UserDTO;
|
||||||
@ -92,11 +93,14 @@ public class UserController extends DefaultBaseController {
|
|||||||
if (!StringUtils.isBlank(userVO.getUserEmail()) && !RegexUtil.isEmail(userVO.getUserEmail())) {
|
if (!StringUtils.isBlank(userVO.getUserEmail()) && !RegexUtil.isEmail(userVO.getUserEmail())) {
|
||||||
throw new ParamsException("用户邮箱格式错误");
|
throw new ParamsException("用户邮箱格式错误");
|
||||||
}
|
}
|
||||||
|
if (!StringUtils.isBlank(userVO.getUserExpiredDate()) && !RegexUtil.isDatetime(userVO.getUserExpiredDate())) {
|
||||||
|
throw new ParamsException("过期时间格式错误");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "用户重置密码", notes = "用户重置密码接口")
|
@ApiOperation(value = "用户重置密码", notes = "用户重置密码接口")
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@PutMapping("resetpassword/{userId}")
|
@PutMapping("reset-password/{userId}")
|
||||||
@CheckRequestBodyAnnotation
|
@CheckRequestBodyAnnotation
|
||||||
public SuccessResult resetPassword(@PathVariable("userId") String userId, @RequestBody RestPasswordVO restPasswordVO) {
|
public SuccessResult resetPassword(@PathVariable("userId") String userId, @RequestBody RestPasswordVO restPasswordVO) {
|
||||||
userService.resetPassword(userId, restPasswordVO);
|
userService.resetPassword(userId, restPasswordVO);
|
||||||
@ -105,13 +109,22 @@ public class UserController extends DefaultBaseController {
|
|||||||
|
|
||||||
@ApiOperation(value = "用户修改用户名", notes = "用户修改用户名接口")
|
@ApiOperation(value = "用户修改用户名", notes = "用户修改用户名接口")
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@PutMapping("updateusername/{userId}")
|
@PutMapping("update-username/{userId}")
|
||||||
@CheckRequestBodyAnnotation
|
@CheckRequestBodyAnnotation
|
||||||
public SuccessResult updateUsername(@PathVariable("userId") String userId, @RequestBody UpdateUsernameVO updateUsernameVO) throws Exception {
|
public SuccessResult updateUsername(@PathVariable("userId") String userId, @RequestBody UpdateUsernameVO updateUsernameVO) throws Exception {
|
||||||
userService.updateUsername(userId, updateUsernameVO);
|
userService.updateUsername(userId, updateUsernameVO);
|
||||||
return new SuccessResult();
|
return new SuccessResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "更新过期时间", notes = "更新过期时间接口")
|
||||||
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
|
@PutMapping("update-expired-date/{userId}")
|
||||||
|
@CheckRequestBodyAnnotation
|
||||||
|
public SuccessResult updateExpiredDate(@PathVariable("userId") String userId, @RequestBody UpdateExpiredDateVO updateExpiredDateVO) throws Exception {
|
||||||
|
userService.updateExpiredDate(userId, updateExpiredDateVO);
|
||||||
|
return new SuccessResult();
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "用户导入Excel", notes = "用户导入Excel接口")
|
@ApiOperation(value = "用户导入Excel", notes = "用户导入Excel接口")
|
||||||
@ApiImplicitParams({
|
@ApiImplicitParams({
|
||||||
@ApiImplicitParam(name = "excel", value = "文件名称", paramType = "query"),
|
@ApiImplicitParam(name = "excel", value = "文件名称", paramType = "query"),
|
||||||
|
@ -58,6 +58,11 @@ public class UserRouteController {
|
|||||||
return new ModelAndView("user/update-password");
|
return new ModelAndView("user/update-password");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("update-expired-date")
|
||||||
|
public ModelAndView updateExpiredDate() {
|
||||||
|
return new ModelAndView("user/update-expired-date");
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("upload/upload-excel")
|
@GetMapping("upload/upload-excel")
|
||||||
public ModelAndView uploadExcel() {
|
public ModelAndView uploadExcel() {
|
||||||
return new ModelAndView("user/upload/upload-excel");
|
return new ModelAndView("user/upload/upload-excel");
|
||||||
|
@ -71,6 +71,14 @@ public interface IUserDao {
|
|||||||
*/
|
*/
|
||||||
void updateUsername(Map<String, Object> params) throws UpdateException;
|
void updateUsername(Map<String, Object> params) throws UpdateException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新过期时间
|
||||||
|
*
|
||||||
|
* @param params
|
||||||
|
* @throws UpdateException
|
||||||
|
*/
|
||||||
|
void updateExpiredDate(Map<String, Object> params) throws UpdateException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新登录信息
|
* 更新登录信息
|
||||||
*
|
*
|
||||||
|
@ -27,12 +27,14 @@ public class UserPO implements Serializable {
|
|||||||
private String userUKey;
|
private String userUKey;
|
||||||
private Integer userType;
|
private Integer userType;
|
||||||
private Integer userState;
|
private Integer userState;
|
||||||
|
private String userExpiredDate;
|
||||||
private String userAvatar;
|
private String userAvatar;
|
||||||
private String lastLoginAddress;
|
private String lastLoginAddress;
|
||||||
private String lastLoginTime;
|
private String lastLoginTime;
|
||||||
private String userLongitude;
|
private String userLongitude;
|
||||||
private String userLatitude;
|
private String userLatitude;
|
||||||
private Integer loginType;
|
private Integer loginType;
|
||||||
|
private String gmtPasswordModified;
|
||||||
|
|
||||||
public String getUserId() {
|
public String getUserId() {
|
||||||
return userId == null ? "" : userId;
|
return userId == null ? "" : userId;
|
||||||
@ -106,6 +108,14 @@ public class UserPO implements Serializable {
|
|||||||
this.userState = userState;
|
this.userState = userState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getUserExpiredDate() {
|
||||||
|
return userExpiredDate == null ? "" : userExpiredDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserExpiredDate(String userExpiredDate) {
|
||||||
|
this.userExpiredDate = userExpiredDate;
|
||||||
|
}
|
||||||
|
|
||||||
public String getUserAvatar() {
|
public String getUserAvatar() {
|
||||||
return userAvatar == null ? "" : userAvatar;
|
return userAvatar == null ? "" : userAvatar;
|
||||||
}
|
}
|
||||||
@ -154,6 +164,14 @@ public class UserPO implements Serializable {
|
|||||||
this.loginType = loginType;
|
this.loginType = loginType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getGmtPasswordModified() {
|
||||||
|
return gmtPasswordModified == null ? "" : gmtPasswordModified;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGmtPasswordModified(String gmtPasswordModified) {
|
||||||
|
this.gmtPasswordModified = gmtPasswordModified;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
final StringBuilder sb = new StringBuilder("{");
|
final StringBuilder sb = new StringBuilder("{");
|
||||||
@ -175,6 +193,8 @@ public class UserPO implements Serializable {
|
|||||||
.append(userType);
|
.append(userType);
|
||||||
sb.append(",\"userState\":")
|
sb.append(",\"userState\":")
|
||||||
.append(userState);
|
.append(userState);
|
||||||
|
sb.append(",\"userExpiredDate\":\"")
|
||||||
|
.append(userExpiredDate).append('\"');
|
||||||
sb.append(",\"userAvatar\":\"")
|
sb.append(",\"userAvatar\":\"")
|
||||||
.append(userAvatar).append('\"');
|
.append(userAvatar).append('\"');
|
||||||
sb.append(",\"lastLoginAddress\":\"")
|
sb.append(",\"lastLoginAddress\":\"")
|
||||||
@ -187,6 +207,8 @@ public class UserPO implements Serializable {
|
|||||||
.append(userLatitude).append('\"');
|
.append(userLatitude).append('\"');
|
||||||
sb.append(",\"loginType\":")
|
sb.append(",\"loginType\":")
|
||||||
.append(loginType);
|
.append(loginType);
|
||||||
|
sb.append(",\"gmtPasswordModified\":\"")
|
||||||
|
.append(gmtPasswordModified).append('\"');
|
||||||
sb.append('}');
|
sb.append('}');
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,40 @@
|
|||||||
|
package ink.wgink.service.user.pojo.vos;
|
||||||
|
|
||||||
|
import ink.wgink.annotation.CheckEmptyAnnotation;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When you feel like quitting. Think about why you started
|
||||||
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
|
*
|
||||||
|
* @ClassName: AddExpiredDateVO
|
||||||
|
* @Description: 添加过期时间
|
||||||
|
* @Author: wanggeng
|
||||||
|
* @Date: 2021/2/27 6:16 下午
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
@ApiModel
|
||||||
|
public class UpdateExpiredDateVO {
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "expiredDate", value = "过期时间")
|
||||||
|
@CheckEmptyAnnotation(name = "过期时间", verifyType = "datetime")
|
||||||
|
private String expiredDate;
|
||||||
|
|
||||||
|
public String getExpiredDate() {
|
||||||
|
return expiredDate == null ? "" : expiredDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExpiredDate(String expiredDate) {
|
||||||
|
this.expiredDate = expiredDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
final StringBuilder sb = new StringBuilder("{");
|
||||||
|
sb.append("\"expiredDate\":\"")
|
||||||
|
.append(expiredDate).append('\"');
|
||||||
|
sb.append('}');
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -34,8 +34,12 @@ public class UserVO {
|
|||||||
private String userPhone;
|
private String userPhone;
|
||||||
@ApiModelProperty(name = "userEmail", value = "用户邮件")
|
@ApiModelProperty(name = "userEmail", value = "用户邮件")
|
||||||
private String userEmail;
|
private String userEmail;
|
||||||
|
@ApiModelProperty(name = "userExpiredDate", value = "过期时间")
|
||||||
|
private String userExpiredDate;
|
||||||
@ApiModelProperty(name = "userAvatar", value = "用户头像ID")
|
@ApiModelProperty(name = "userAvatar", value = "用户头像ID")
|
||||||
private String userAvatar;
|
private String userAvatar;
|
||||||
|
@ApiModelProperty(name = "remarks", value = "备注")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
public String getUserUsername() {
|
public String getUserUsername() {
|
||||||
return userUsername == null ? "" : userUsername.trim();
|
return userUsername == null ? "" : userUsername.trim();
|
||||||
@ -93,6 +97,14 @@ public class UserVO {
|
|||||||
this.userEmail = userEmail;
|
this.userEmail = userEmail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getUserExpiredDate() {
|
||||||
|
return userExpiredDate == null ? "" : userExpiredDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserExpiredDate(String userExpiredDate) {
|
||||||
|
this.userExpiredDate = userExpiredDate;
|
||||||
|
}
|
||||||
|
|
||||||
public String getUserAvatar() {
|
public String getUserAvatar() {
|
||||||
return userAvatar == null ? "" : userAvatar.trim();
|
return userAvatar == null ? "" : userAvatar.trim();
|
||||||
}
|
}
|
||||||
@ -101,6 +113,14 @@ public class UserVO {
|
|||||||
this.userAvatar = userAvatar;
|
this.userAvatar = userAvatar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getRemarks() {
|
||||||
|
return remarks == null ? "" : remarks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRemarks(String remarks) {
|
||||||
|
this.remarks = remarks;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
final StringBuilder sb = new StringBuilder("{");
|
final StringBuilder sb = new StringBuilder("{");
|
||||||
@ -118,8 +138,12 @@ public class UserVO {
|
|||||||
.append(userPhone).append('\"');
|
.append(userPhone).append('\"');
|
||||||
sb.append(",\"userEmail\":\"")
|
sb.append(",\"userEmail\":\"")
|
||||||
.append(userEmail).append('\"');
|
.append(userEmail).append('\"');
|
||||||
|
sb.append(",\"userExpiredDate\":\"")
|
||||||
|
.append(userExpiredDate).append('\"');
|
||||||
sb.append(",\"userAvatar\":\"")
|
sb.append(",\"userAvatar\":\"")
|
||||||
.append(userAvatar).append('\"');
|
.append(userAvatar).append('\"');
|
||||||
|
sb.append(",\"remarks\":\"")
|
||||||
|
.append(remarks).append('\"');
|
||||||
sb.append('}');
|
sb.append('}');
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import ink.wgink.interfaces.user.IUserBaseService;
|
|||||||
import ink.wgink.interfaces.user.IUserCheckService;
|
import ink.wgink.interfaces.user.IUserCheckService;
|
||||||
import ink.wgink.service.user.pojo.pos.UserPO;
|
import ink.wgink.service.user.pojo.pos.UserPO;
|
||||||
import ink.wgink.service.user.pojo.vos.RestPasswordVO;
|
import ink.wgink.service.user.pojo.vos.RestPasswordVO;
|
||||||
|
import ink.wgink.service.user.pojo.vos.UpdateExpiredDateVO;
|
||||||
import ink.wgink.service.user.pojo.vos.UpdateUsernameVO;
|
import ink.wgink.service.user.pojo.vos.UpdateUsernameVO;
|
||||||
import ink.wgink.service.user.pojo.vos.UserVO;
|
import ink.wgink.service.user.pojo.vos.UserVO;
|
||||||
import ink.wgink.pojo.result.UploadExcelResultDTO;
|
import ink.wgink.pojo.result.UploadExcelResultDTO;
|
||||||
@ -77,6 +78,14 @@ public interface IUserService extends IUserBaseService, IUserCheckService {
|
|||||||
*/
|
*/
|
||||||
void updateUsername(String userId, UpdateUsernameVO updateUsernameVO);
|
void updateUsername(String userId, UpdateUsernameVO updateUsernameVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新过期时间
|
||||||
|
*
|
||||||
|
* @param userId
|
||||||
|
* @param updateExpiredDateVO
|
||||||
|
*/
|
||||||
|
void updateExpiredDate(String userId, UpdateExpiredDateVO updateExpiredDateVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入Excel
|
* 导入Excel
|
||||||
*
|
*
|
||||||
@ -98,7 +107,7 @@ public interface IUserService extends IUserBaseService, IUserCheckService {
|
|||||||
* 更新登陆信息
|
* 更新登陆信息
|
||||||
*
|
*
|
||||||
* @param params
|
* @param params
|
||||||
* @throws UpdateException
|
|
||||||
*/
|
*/
|
||||||
void updateLoginInfo(Map<String, Object> params) throws UpdateException;
|
void updateLoginInfo(Map<String, Object> params);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ import ink.wgink.service.user.excel.UserExcelListener;
|
|||||||
import ink.wgink.service.user.pojo.bos.UserAdjustmentBO;
|
import ink.wgink.service.user.pojo.bos.UserAdjustmentBO;
|
||||||
import ink.wgink.service.user.pojo.pos.UserPO;
|
import ink.wgink.service.user.pojo.pos.UserPO;
|
||||||
import ink.wgink.service.user.pojo.vos.RestPasswordVO;
|
import ink.wgink.service.user.pojo.vos.RestPasswordVO;
|
||||||
|
import ink.wgink.service.user.pojo.vos.UpdateExpiredDateVO;
|
||||||
import ink.wgink.service.user.pojo.vos.UpdateUsernameVO;
|
import ink.wgink.service.user.pojo.vos.UpdateUsernameVO;
|
||||||
import ink.wgink.service.user.pojo.vos.UserVO;
|
import ink.wgink.service.user.pojo.vos.UserVO;
|
||||||
import ink.wgink.service.user.service.IUserAdjustmentService;
|
import ink.wgink.service.user.service.IUserAdjustmentService;
|
||||||
@ -38,6 +39,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -90,6 +92,7 @@ public class UserServiceImpl extends DefaultBaseService implements IUserService
|
|||||||
String userId = UUIDUtil.getUUID();
|
String userId = UUIDUtil.getUUID();
|
||||||
Map<String, Object> params = HashMapUtil.beanToMap(userVO);
|
Map<String, Object> params = HashMapUtil.beanToMap(userVO);
|
||||||
params.put("userId", userId);
|
params.put("userId", userId);
|
||||||
|
params.put("userExpiredDate", DateUtil.getTime());
|
||||||
if (isRegister) {
|
if (isRegister) {
|
||||||
setSaveInfoByUserId(params, userId);
|
setSaveInfoByUserId(params, userId);
|
||||||
} else {
|
} else {
|
||||||
@ -159,6 +162,18 @@ public class UserServiceImpl extends DefaultBaseService implements IUserService
|
|||||||
updateUsernameAdjustment(userId, oldUserDTO.getUserUsername(), updateUsernameVO);
|
updateUsernameAdjustment(userId, oldUserDTO.getUserUsername(), updateUsernameVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateExpiredDate(String userId, UpdateExpiredDateVO updateExpiredDateVO) {
|
||||||
|
UserDTO oldUserDTO = get(userId);
|
||||||
|
if (oldUserDTO == null) {
|
||||||
|
throw new SearchException("用户不存在");
|
||||||
|
}
|
||||||
|
Map<String, Object> params = new HashMap<>(4);
|
||||||
|
params.put("userId", userId);
|
||||||
|
params.put("userExpiredDate", updateExpiredDateVO.getExpiredDate());
|
||||||
|
userDao.updateExpiredDate(params);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UploadExcelResultDTO importExcel(MultipartFile excel) throws IOException {
|
public UploadExcelResultDTO importExcel(MultipartFile excel) throws IOException {
|
||||||
Map<String, Object> params = getHashMap(16);
|
Map<String, Object> params = getHashMap(16);
|
||||||
|
@ -15,11 +15,13 @@
|
|||||||
<result property="userAvatar" column="user_avatar"/>
|
<result property="userAvatar" column="user_avatar"/>
|
||||||
<result property="userType" column="user_type"/>
|
<result property="userType" column="user_type"/>
|
||||||
<result property="userState" column="user_state"/>
|
<result property="userState" column="user_state"/>
|
||||||
|
<result property="userExpiredDate" column="user_expired_date"/>
|
||||||
<result property="lastLoginAddress" column="last_login_address"/>
|
<result property="lastLoginAddress" column="last_login_address"/>
|
||||||
<result property="lastLoginTime" column="last_login_time"/>
|
<result property="lastLoginTime" column="last_login_time"/>
|
||||||
<result property="userLongitude" column="user_longitude"/>
|
<result property="userLongitude" column="user_longitude"/>
|
||||||
<result property="userLatitude" column="user_latitude"/>
|
<result property="userLatitude" column="user_latitude"/>
|
||||||
<result property="loginType" column="login_type"/>
|
<result property="loginType" column="login_type"/>
|
||||||
|
<result property="gmtPasswordModified" column="gmt_password_modified"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<resultMap id="userDTO" type="ink.wgink.pojo.dtos.user.UserDTO">
|
<resultMap id="userDTO" type="ink.wgink.pojo.dtos.user.UserDTO">
|
||||||
@ -32,6 +34,7 @@
|
|||||||
<result property="userAvatar" column="user_avatar"/>
|
<result property="userAvatar" column="user_avatar"/>
|
||||||
<result property="userType" column="user_type"/>
|
<result property="userType" column="user_type"/>
|
||||||
<result property="userState" column="user_state"/>
|
<result property="userState" column="user_state"/>
|
||||||
|
<result property="userExpiredDate" column="user_expired_date"/>
|
||||||
<result property="lastLoginAddress" column="last_login_address"/>
|
<result property="lastLoginAddress" column="last_login_address"/>
|
||||||
<result property="lastLoginTime" column="last_login_time"/>
|
<result property="lastLoginTime" column="last_login_time"/>
|
||||||
<result property="userLongitude" column="user_longitude"/>
|
<result property="userLongitude" column="user_longitude"/>
|
||||||
@ -59,13 +62,14 @@
|
|||||||
`user_ukey_electronic_secret_key` text COMMENT '用户UKey电子秘钥',
|
`user_ukey_electronic_secret_key` text COMMENT '用户UKey电子秘钥',
|
||||||
`user_type` int(2) DEFAULT '2' COMMENT '1:系统用户,2:普通用户',
|
`user_type` int(2) DEFAULT '2' COMMENT '1:系统用户,2:普通用户',
|
||||||
`user_state` int(2) DEFAULT '0' COMMENT '用户状态',
|
`user_state` int(2) DEFAULT '0' COMMENT '用户状态',
|
||||||
|
`user_expired_date` varchar(20) DEFAULT NULL COMMENT '用户过期时间',
|
||||||
`user_avatar` char(36) DEFAULT NULL COMMENT '头像',
|
`user_avatar` char(36) DEFAULT NULL COMMENT '头像',
|
||||||
`user_longitude` varchar(255) DEFAULT '0' COMMENT '经度',
|
`user_longitude` varchar(255) DEFAULT '0' COMMENT '经度',
|
||||||
`user_latitude` varchar(255) DEFAULT '0' COMMENT '纬度',
|
`user_latitude` varchar(255) DEFAULT '0' COMMENT '纬度',
|
||||||
`last_login_address` varchar(255) DEFAULT NULL COMMENT '最后登录地址',
|
`last_login_address` varchar(255) DEFAULT NULL COMMENT '最后登录地址',
|
||||||
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
|
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
|
||||||
`login_type` int(1) DEFAULT '1' COMMENT '登录类型',
|
`login_type` int(1) DEFAULT '1' COMMENT '登录类型',
|
||||||
`gmt_password_modified` date DEFAULT NULL COMMENT '密码修改时间',
|
`gmt_password_modified` datetime DEFAULT NULL COMMENT '密码修改时间',
|
||||||
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
|
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
|
||||||
`creator` char(36) DEFAULT NULL,
|
`creator` char(36) DEFAULT NULL,
|
||||||
`gmt_create` datetime DEFAULT NULL,
|
`gmt_create` datetime DEFAULT NULL,
|
||||||
@ -94,6 +98,7 @@
|
|||||||
user_email,
|
user_email,
|
||||||
user_type,
|
user_type,
|
||||||
user_state,
|
user_state,
|
||||||
|
user_expired_date,
|
||||||
user_avatar,
|
user_avatar,
|
||||||
creator,
|
creator,
|
||||||
gmt_create,
|
gmt_create,
|
||||||
@ -109,6 +114,7 @@
|
|||||||
#{userEmail},
|
#{userEmail},
|
||||||
#{userType},
|
#{userType},
|
||||||
#{userState},
|
#{userState},
|
||||||
|
#{userExpiredDate},
|
||||||
#{userAvatar},
|
#{userAvatar},
|
||||||
#{creator},
|
#{creator},
|
||||||
#{gmtCreate},
|
#{gmtCreate},
|
||||||
@ -156,6 +162,9 @@
|
|||||||
<if test="userState != null">
|
<if test="userState != null">
|
||||||
user_state = #{userState},
|
user_state = #{userState},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="userExpiredDate != null">
|
||||||
|
user_expired_date = #{userExpiredDate},
|
||||||
|
</if>
|
||||||
<if test="userAvatar != null and userAvatar != ''">
|
<if test="userAvatar != null and userAvatar != ''">
|
||||||
user_avatar = #{userAvatar},
|
user_avatar = #{userAvatar},
|
||||||
</if>
|
</if>
|
||||||
@ -228,6 +237,16 @@
|
|||||||
user_id = #{userId}
|
user_id = #{userId}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<!-- 更新过期时间 -->
|
||||||
|
<update id="updateExpiredDate" parameterType="map" flushCache="true">
|
||||||
|
UPDATE
|
||||||
|
sys_user
|
||||||
|
SET
|
||||||
|
user_expired_date = #{userExpiredDate}
|
||||||
|
WHERE
|
||||||
|
user_id = #{userId}
|
||||||
|
</update>
|
||||||
|
|
||||||
<!-- 获取用户 -->
|
<!-- 获取用户 -->
|
||||||
<select id="getPO" parameterType="map" resultMap="userPO" useCache="true">
|
<select id="getPO" parameterType="map" resultMap="userPO" useCache="true">
|
||||||
SELECT
|
SELECT
|
||||||
@ -241,13 +260,14 @@
|
|||||||
user_ukey_electronic_secret_key,
|
user_ukey_electronic_secret_key,
|
||||||
user_type,
|
user_type,
|
||||||
user_state,
|
user_state,
|
||||||
|
user_expired_date,
|
||||||
user_avatar,
|
user_avatar,
|
||||||
user_longitude,
|
user_longitude,
|
||||||
user_latitude,
|
user_latitude,
|
||||||
last_login_address,
|
last_login_address,
|
||||||
LEFT(last_login_time, 19) last_login_time,
|
LEFT(last_login_time, 19) last_login_time,
|
||||||
login_type,
|
login_type,
|
||||||
gmt_password_modified,
|
LEFT(gmt_password_modified, 19) gmt_password_modified,
|
||||||
remarks,
|
remarks,
|
||||||
LEFT(gmt_create, 19) gmt_create
|
LEFT(gmt_create, 19) gmt_create
|
||||||
FROM
|
FROM
|
||||||
@ -281,6 +301,7 @@
|
|||||||
user_ukey_electronic_secret_key,
|
user_ukey_electronic_secret_key,
|
||||||
user_type,
|
user_type,
|
||||||
user_state,
|
user_state,
|
||||||
|
user_expired_date,
|
||||||
user_avatar,
|
user_avatar,
|
||||||
user_longitude,
|
user_longitude,
|
||||||
user_latitude,
|
user_latitude,
|
||||||
@ -321,6 +342,7 @@
|
|||||||
user_ukey_electronic_secret_key,
|
user_ukey_electronic_secret_key,
|
||||||
user_type,
|
user_type,
|
||||||
user_state,
|
user_state,
|
||||||
|
user_expired_date,
|
||||||
user_avatar,
|
user_avatar,
|
||||||
user_longitude,
|
user_longitude,
|
||||||
user_latitude,
|
user_latitude,
|
||||||
|
@ -141,6 +141,16 @@
|
|||||||
return item.userEmail;
|
return item.userEmail;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{field:'userExpiredDate', width:180, title: '账号过期时间', align:'center',
|
||||||
|
templet: function(item) {
|
||||||
|
if(!item.userExpiredDate) {
|
||||||
|
return '<button type="button" class="layui-btn layui-btn-xs" lay-event="userExpiredDateEvent">' +
|
||||||
|
'<i class="fa fa-clock-o"></i> 设置时间' +
|
||||||
|
'</button>';
|
||||||
|
}
|
||||||
|
return item.userExpiredDate;
|
||||||
|
}
|
||||||
|
},
|
||||||
{field:'lastLoginAddress', width:140, title: '登录地址', align:'center',
|
{field:'lastLoginAddress', width:140, title: '登录地址', align:'center',
|
||||||
templet: function(item) {
|
templet: function(item) {
|
||||||
if(!item.lastLoginAddress) {
|
if(!item.lastLoginAddress) {
|
||||||
@ -149,7 +159,7 @@
|
|||||||
return item.lastLoginAddress;
|
return item.lastLoginAddress;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{field:'lastLoginTime', width:200, title: '最后登录系统时间', align:'center',
|
{field:'lastLoginTime', width:180, title: '最后登录系统时间', align:'center',
|
||||||
templet: function(item) {
|
templet: function(item) {
|
||||||
if(!item.lastLoginTime) {
|
if(!item.lastLoginTime) {
|
||||||
return '-';
|
return '-';
|
||||||
@ -157,7 +167,7 @@
|
|||||||
return item.lastLoginTime;
|
return item.lastLoginTime;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{field:'gmtCreate', width:200, title: '创建时间', align:'center',
|
{field:'gmtCreate', width:180, title: '创建时间', align:'center',
|
||||||
templet: function(item) {
|
templet: function(item) {
|
||||||
if(!item.gmtCreate) {
|
if(!item.gmtCreate) {
|
||||||
return '-';
|
return '-';
|
||||||
@ -333,6 +343,16 @@
|
|||||||
reloadTable();
|
reloadTable();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else if(layEvent === 'userExpiredDateEvent') {
|
||||||
|
top.dialog.open({
|
||||||
|
url: top.restAjax.path('route/user/update-expired-date?userId={userId}', [data.userId]),
|
||||||
|
title: '【'+ data.userName +'】设置账号过期时间',
|
||||||
|
width: '274px',
|
||||||
|
height: '395px',
|
||||||
|
onClose: function() {
|
||||||
|
reloadTable();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// 事件-排序
|
// 事件-排序
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
top.dialog.confirm(top.dataMessage.update, function(index) {
|
top.dialog.confirm(top.dataMessage.update, function(index) {
|
||||||
top.dialog.close(index);
|
top.dialog.close(index);
|
||||||
var loadLayerIndex;
|
var loadLayerIndex;
|
||||||
top.restAjax.put(top.restAjax.path('api/user/resetpassword/{userId}', [userId]), formData.field, null, function(code, data) {
|
top.restAjax.put(top.restAjax.path('api/user/reset-password/{userId}', [userId]), formData.field, null, function(code, data) {
|
||||||
var layerIndex = top.dialog.msg(top.dataMessage.updateSuccess, {
|
var layerIndex = top.dialog.msg(top.dataMessage.updateSuccess, {
|
||||||
time: 0,
|
time: 0,
|
||||||
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
|
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
|
||||||
|
@ -47,14 +47,11 @@
|
|||||||
<input type="radio" name="userType" value="2" title="普通用户" checked>
|
<input type="radio" name="userType" value="2" title="普通用户" checked>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item" pane>
|
||||||
<label class="layui-form-label">状态 *</label>
|
<label class="layui-form-label">状态 *</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<select name="userState" lay-verify="required">
|
<input type="radio" name="userState" value="0" title="正常" checked>
|
||||||
<option value="0">正常</option>
|
<input type="radio" name="userState" value="1" title="锁定">
|
||||||
<option value="1">冻结</option>
|
|
||||||
<option value="2">锁定</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
@ -69,6 +66,18 @@
|
|||||||
<input type="text" name="userEmail" placeholder="请输入邮箱" class="layui-input">
|
<input type="text" name="userEmail" placeholder="请输入邮箱" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">过期时间</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="text" name="userExpiredDate" id="userExpiredDate" placeholder="请选择过期日期,空表示永不过期" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">备注</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="text" name="remarks" placeholder="请输入备注" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="layui-form-item layui-form-text">
|
<div class="layui-form-item layui-form-text">
|
||||||
<label class="layui-form-label">头像</label>
|
<label class="layui-form-label">头像</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -99,10 +108,22 @@
|
|||||||
index: 'lib/index' //主入口模块
|
index: 'lib/index' //主入口模块
|
||||||
}).use(['index', 'form', 'laydate'], function(){
|
}).use(['index', 'form', 'laydate'], function(){
|
||||||
var $ = layui.$;
|
var $ = layui.$;
|
||||||
|
var laydate = layui.laydate;
|
||||||
var form = layui.form;
|
var form = layui.form;
|
||||||
|
|
||||||
function closeBox() {
|
function closeBox() {
|
||||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function initDate() {
|
||||||
|
laydate.render({
|
||||||
|
elem: '#userExpiredDate',
|
||||||
|
trigger: 'click',
|
||||||
|
format: 'yyyy-MM-dd HH:mm:ss'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
initDate();
|
||||||
|
|
||||||
// 提交表单
|
// 提交表单
|
||||||
form.on('submit(submitForm)', function(formData) {
|
form.on('submit(submitForm)', function(formData) {
|
||||||
var authorizedGrantTypes = top.restAjax.checkBoxToString(formData.field, 'authorizedGrantTypes');
|
var authorizedGrantTypes = top.restAjax.checkBoxToString(formData.field, 'authorizedGrantTypes');
|
||||||
|
@ -0,0 +1,86 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<head>
|
||||||
|
<base th:href="${#request.getContextPath() + '/'}">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="renderer" content="webkit">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||||
|
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||||||
|
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||||||
|
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="layui-anim layui-anim-fadein" style="padding: 0;overflow: hidden;">
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-body" style="padding: 0px;">
|
||||||
|
<form id="dataForm" class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||||
|
<input type="hidden" name="expiredDate" id="expiredDate" class="layui-input">
|
||||||
|
<div id="expiredDateBox"></div>
|
||||||
|
<button id="submitForm" type="button" class="layui-btn" lay-submit lay-filter="submitForm" style="display: none;">提交编辑</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||||
|
<script>
|
||||||
|
layui.config({
|
||||||
|
base: 'assets/layuiadmin/' //静态资源所在路径
|
||||||
|
}).extend({
|
||||||
|
index: 'lib/index' //主入口模块
|
||||||
|
}).use(['index', 'form', 'laydate'], function(){
|
||||||
|
var $ = layui.$;
|
||||||
|
var laydate = layui.laydate;
|
||||||
|
var form = layui.form;
|
||||||
|
var userId = top.restAjax.params(window.location.href).userId;
|
||||||
|
|
||||||
|
function closeBox() {
|
||||||
|
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||||
|
}
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: '#expiredDateBox',
|
||||||
|
position: 'static',
|
||||||
|
type: 'datetime',
|
||||||
|
btns: ['now', 'confirm'],
|
||||||
|
done: function(value, date, endDate) {
|
||||||
|
$('#expiredDate').val(value);
|
||||||
|
$('#submitForm').click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 提交表单
|
||||||
|
form.on('submit(submitForm)', function(formData) {
|
||||||
|
top.dialog.confirm(top.dataMessage.update, function(index) {
|
||||||
|
top.dialog.close(index);
|
||||||
|
var loadLayerIndex;
|
||||||
|
top.restAjax.put(top.restAjax.path('api/user/update-expired-date/{userId}', [userId]), formData.field, null, function(code, data) {
|
||||||
|
var layerIndex = top.dialog.msg(top.dataMessage.updateSuccess, {
|
||||||
|
time: 0,
|
||||||
|
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
|
||||||
|
shade: 0.3,
|
||||||
|
yes: function(index) {
|
||||||
|
top.dialog.close(index);
|
||||||
|
window.location.reload();
|
||||||
|
},
|
||||||
|
btn2: function() {
|
||||||
|
closeBox();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, function(code, data) {
|
||||||
|
top.dialog.msg(data.msg);
|
||||||
|
}, function() {
|
||||||
|
loadLayerIndex = top.dialog.msg(top.dataMessage.updating, {icon: 16, time: 0, shade: 0.3});
|
||||||
|
}, function() {
|
||||||
|
top.dialog.close(loadLayerIndex);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('.close').on('click', function() {
|
||||||
|
closeBox();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -60,7 +60,7 @@
|
|||||||
top.dialog.confirm(top.dataMessage.update, function(index) {
|
top.dialog.confirm(top.dataMessage.update, function(index) {
|
||||||
top.dialog.close(index);
|
top.dialog.close(index);
|
||||||
var loadLayerIndex;
|
var loadLayerIndex;
|
||||||
top.restAjax.put(top.restAjax.path('api/user/updateusername/{userId}', [userId]), formData.field, null, function(code, data) {
|
top.restAjax.put(top.restAjax.path('api/user/update-username/{userId}', [userId]), formData.field, null, function(code, data) {
|
||||||
var layerIndex = top.dialog.msg(top.dataMessage.updateSuccess, {
|
var layerIndex = top.dialog.msg(top.dataMessage.updateSuccess, {
|
||||||
time: 0,
|
time: 0,
|
||||||
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
|
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
|
||||||
|
@ -47,14 +47,11 @@
|
|||||||
<input type="radio" name="userType" value="2" title="普通用户">
|
<input type="radio" name="userType" value="2" title="普通用户">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item" pane>
|
||||||
<label class="layui-form-label">状态 *</label>
|
<label class="layui-form-label">状态 *</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<select name="userState" lay-verify="required">
|
<input type="radio" name="userState" value="0" title="正常">
|
||||||
<option value="0">正常</option>
|
<input type="radio" name="userState" value="1" title="锁定">
|
||||||
<option value="1">冻结</option>
|
|
||||||
<option value="2">锁定</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
@ -69,6 +66,18 @@
|
|||||||
<input type="text" name="userEmail" placeholder="请输入邮箱" class="layui-input">
|
<input type="text" name="userEmail" placeholder="请输入邮箱" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">过期时间</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="text" name="userExpiredDate" id="userExpiredDate" placeholder="请选择过期日期,空表示永不过期" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">备注</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="text" name="remarks" placeholder="请输入备注" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="layui-form-item layui-form-text">
|
<div class="layui-form-item layui-form-text">
|
||||||
<label class="layui-form-label">头像</label>
|
<label class="layui-form-label">头像</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -99,11 +108,23 @@
|
|||||||
index: 'lib/index' //主入口模块
|
index: 'lib/index' //主入口模块
|
||||||
}).use(['index', 'form', 'laydate'], function(){
|
}).use(['index', 'form', 'laydate'], function(){
|
||||||
var $ = layui.$;
|
var $ = layui.$;
|
||||||
|
var laydate = layui.laydate;
|
||||||
var form = layui.form;
|
var form = layui.form;
|
||||||
var userId = top.restAjax.params(window.location.href).userId;
|
var userId = top.restAjax.params(window.location.href).userId;
|
||||||
|
|
||||||
function closeBox() {
|
function closeBox() {
|
||||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function initDate() {
|
||||||
|
laydate.render({
|
||||||
|
elem: '#userExpiredDate',
|
||||||
|
trigger: 'click',
|
||||||
|
format: 'yyyy-MM-dd HH:mm:ss'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
initDate();
|
||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
function initData() {
|
function initData() {
|
||||||
var self = this;
|
var self = this;
|
||||||
@ -117,6 +138,7 @@
|
|||||||
userState: data.userState +'',
|
userState: data.userState +'',
|
||||||
userPhone: data.userPhone,
|
userPhone: data.userPhone,
|
||||||
userEmail: data.userEmail.toString(),
|
userEmail: data.userEmail.toString(),
|
||||||
|
userExpiredDate: data.userExpiredDate
|
||||||
});
|
});
|
||||||
form.render(null, 'dataForm');
|
form.render(null, 'dataForm');
|
||||||
if($('#userAvatar').val() != '') {
|
if($('#userAvatar').val() != '') {
|
||||||
|
Loading…
Reference in New Issue
Block a user