[feat] 新增手机号+密码登录

This commit is contained in:
hsdllcw
2024-08-09 11:20:57 +08:00
parent 25613442a4
commit 26184e1592
7 changed files with 1615 additions and 1546 deletions

View File

@@ -1,54 +1,63 @@
package com.ruoyi.system.api; package com.ruoyi.system.api;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestHeader;
import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.factory.RemoteUserFallbackFactory; import com.ruoyi.system.api.factory.RemoteUserFallbackFactory;
import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUser;
/** /**
* 用户服务 * 用户服务
* *
* @author ruoyi * @author ruoyi
*/ */
@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class) @FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)
public interface RemoteUserService public interface RemoteUserService
{ {
/** /**
* 通过用户名查询用户信息 * 通过用户名查询用户信息
* *
* @param username 用户名 * @param username 用户名
* @param source 请求来源 * @param source 请求来源
* @return 结果 * @return 结果
*/ */
@GetMapping("/user/info/{username}") @GetMapping("/user/info/{username}")
public R<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); public R<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/** /**
* 注册用户信息 * 通过手机号查询用户信息
* *
* @param sysUser 用户信息 * @param phoneNumber 用户
* @param source 请求来源 * @param source 请求来源
* @return 结果 * @return 结果
*/ */
@PostMapping("/user/register") @GetMapping("/user/info/phoneNumber/{phoneNumber:\\d+}")
public R<Boolean> registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); public R<LoginUser> getUserInfoByPhoneNumber(@PathVariable("phoneNumber") String phoneNumber, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/**
/** * 注册用户信息
* 记录用户登录IP地址和登录时间 *
* * @param sysUser 用户信息
* @param sysUser 用户信息 * @param source 请求来源
* @param source 请求来源 * @return 结果
* @return 结果 */
*/ @PostMapping("/user/register")
@PutMapping("/user/recordlogin") public R<Boolean> registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
public R<Boolean> recordUserLogin(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
} /**
* 记录用户登录IP地址和登录时间
*
* @param sysUser 用户信息
* @param source 请求来源
* @return 结果
*/
@PutMapping("/user/recordlogin")
public R<Boolean> recordUserLogin(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}

View File

@@ -1,47 +1,52 @@
package com.ruoyi.system.api.factory; package com.ruoyi.system.api.factory;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.RemoteUserService; import com.ruoyi.system.api.RemoteUserService;
import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUser;
/** /**
* 用户服务降级处理 * 用户服务降级处理
* *
* @author ruoyi * @author ruoyi
*/ */
@Component @Component
public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserService> public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserService>
{ {
private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class); private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class);
@Override @Override
public RemoteUserService create(Throwable throwable) public RemoteUserService create(Throwable throwable)
{ {
log.error("用户服务调用失败:{}", throwable.getMessage()); log.error("用户服务调用失败:{}", throwable.getMessage());
return new RemoteUserService() return new RemoteUserService()
{ {
@Override @Override
public R<LoginUser> getUserInfo(String username, String source) public R<LoginUser> getUserInfo(String username, String source)
{ {
return R.fail("获取用户失败:" + throwable.getMessage()); return R.fail("获取用户失败:" + throwable.getMessage());
} }
@Override @Override
public R<Boolean> registerUserInfo(SysUser sysUser, String source) public R<LoginUser> getUserInfoByPhoneNumber(String phoneNumber, String source) {
{ return R.fail("获取用户失败:" + throwable.getMessage());
return R.fail("注册用户失败:" + throwable.getMessage()); }
}
@Override
@Override public R<Boolean> registerUserInfo(SysUser sysUser, String source)
public R<Boolean> recordUserLogin(SysUser sysUser, String source) {
{ return R.fail("注册用户失败:" + throwable.getMessage());
return R.fail("记录用户登录信息失败:" + throwable.getMessage()); }
}
}; @Override
} public R<Boolean> recordUserLogin(SysUser sysUser, String source)
} {
return R.fail("记录用户登录信息失败:" + throwable.getMessage());
}
};
}
}

View File

@@ -1,341 +1,364 @@
package com.ruoyi.system.controller; package com.ruoyi.system.controller;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.poi.ExcelUtil; import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.common.security.annotation.InnerAuth;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysDept; import com.ruoyi.system.api.domain.SysDept;
import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysPermissionService; import com.ruoyi.system.service.ISysPermissionService;
import com.ruoyi.system.service.ISysPostService; import com.ruoyi.system.service.ISysPostService;
import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
/** /**
* 用户信息 * 用户信息
* *
* @author ruoyi * @author ruoyi
*/ */
@RestController @RestController
@RequestMapping("/user") @RequestMapping("/user")
public class SysUserController extends BaseController public class SysUserController extends BaseController
{ {
@Autowired @Autowired
private ISysUserService userService; private ISysUserService userService;
@Autowired @Autowired
private ISysRoleService roleService; private ISysRoleService roleService;
@Autowired @Autowired
private ISysDeptService deptService; private ISysDeptService deptService;
@Autowired @Autowired
private ISysPostService postService; private ISysPostService postService;
@Autowired @Autowired
private ISysPermissionService permissionService; private ISysPermissionService permissionService;
@Autowired @Autowired
private ISysConfigService configService; private ISysConfigService configService;
/** /**
* 获取用户列表 * 获取用户列表
*/ */
@RequiresPermissions("system:user:list") @RequiresPermissions("system:user:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysUser user) public TableDataInfo list(SysUser user)
{ {
startPage(); startPage();
List<SysUser> list = userService.selectUserList(user); List<SysUser> list = userService.selectUserList(user);
return getDataTable(list); return getDataTable(list);
} }
@Log(title = "用户管理", businessType = BusinessType.EXPORT) @Log(title = "用户管理", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:user:export") @RequiresPermissions("system:user:export")
@PostMapping("/export") @PostMapping("/export")
public void export(HttpServletResponse response, SysUser user) public void export(HttpServletResponse response, SysUser user)
{ {
List<SysUser> list = userService.selectUserList(user); List<SysUser> list = userService.selectUserList(user);
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
util.exportExcel(response, list, "用户数据"); util.exportExcel(response, list, "用户数据");
} }
@Log(title = "用户管理", businessType = BusinessType.IMPORT) @Log(title = "用户管理", businessType = BusinessType.IMPORT)
@RequiresPermissions("system:user:import") @RequiresPermissions("system:user:import")
@PostMapping("/importData") @PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
{ {
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
List<SysUser> userList = util.importExcel(file.getInputStream()); List<SysUser> userList = util.importExcel(file.getInputStream());
String operName = SecurityUtils.getUsername(); String operName = SecurityUtils.getUsername();
String message = userService.importUser(userList, updateSupport, operName); String message = userService.importUser(userList, updateSupport, operName);
return success(message); return success(message);
} }
@PostMapping("/importTemplate") @PostMapping("/importTemplate")
public void importTemplate(HttpServletResponse response) throws IOException public void importTemplate(HttpServletResponse response) throws IOException
{ {
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
util.importTemplateExcel(response, "用户数据"); util.importTemplateExcel(response, "用户数据");
} }
/** /**
* 获取当前用户信息 * 获取当前用户信息
*/ */
@InnerAuth @InnerAuth
@GetMapping("/info/{username}") @GetMapping("/info/{username}")
public R<LoginUser> info(@PathVariable("username") String username) public R<LoginUser> info(@PathVariable("username") String username)
{ {
SysUser sysUser = userService.selectUserByUserName(username); SysUser sysUser = userService.selectUserByUserName(username);
if (StringUtils.isNull(sysUser)) if (StringUtils.isNull(sysUser))
{ {
return R.fail("用户名或密码错误"); return R.fail("用户名或密码错误");
} }
// 角色集合 // 角色集合
Set<String> roles = permissionService.getRolePermission(sysUser); Set<String> roles = permissionService.getRolePermission(sysUser);
// 权限集合 // 权限集合
Set<String> permissions = permissionService.getMenuPermission(sysUser); Set<String> permissions = permissionService.getMenuPermission(sysUser);
LoginUser sysUserVo = new LoginUser(); LoginUser sysUserVo = new LoginUser();
sysUserVo.setSysUser(sysUser); sysUserVo.setSysUser(sysUser);
sysUserVo.setRoles(roles); sysUserVo.setRoles(roles);
sysUserVo.setPermissions(permissions); sysUserVo.setPermissions(permissions);
return R.ok(sysUserVo); return R.ok(sysUserVo);
} }
/** /**
* 注册用户信息 * 获取当前用户信息
*/ */
@InnerAuth @InnerAuth
@PostMapping("/register") @GetMapping("/info/phoneNumber/{phoneNumber:\\d+}")
public R<Boolean> register(@RequestBody SysUser sysUser) public R<LoginUser> infoByPhone(@PathVariable("phoneNumber") String phoneNumber)
{ {
String username = sysUser.getUserName(); SysUser sysUser = userService.selectUserByPhoneNumber(phoneNumber);
if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) if (StringUtils.isNull(sysUser))
{ {
return R.fail("当前系统没有开启注册功能!"); return R.fail("用户名或密码错误");
} }
if (!userService.checkUserNameUnique(sysUser)) // 角色集合
{ Set<String> roles = permissionService.getRolePermission(sysUser);
return R.fail("保存用户'" + username + "'失败,注册账号已存在"); // 权限集合
} Set<String> permissions = permissionService.getMenuPermission(sysUser);
return R.ok(userService.registerUser(sysUser)); LoginUser sysUserVo = new LoginUser();
} sysUserVo.setSysUser(sysUser);
sysUserVo.setRoles(roles);
/** sysUserVo.setPermissions(permissions);
*记录用户登录IP地址和登录时间 return R.ok(sysUserVo);
*/ }
@InnerAuth
@PutMapping("/recordlogin") /**
public R<Boolean> recordlogin(@RequestBody SysUser sysUser) * 注册用户信息
{ */
return R.ok(userService.updateUserProfile(sysUser)); @InnerAuth
} @PostMapping("/register")
public R<Boolean> register(@RequestBody SysUser sysUser)
/** {
* 获取用户信息 String username = sysUser.getUserName();
* if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
* @return 用户信息 {
*/ return R.fail("当前系统没有开启注册功能!");
@GetMapping("getInfo") }
public AjaxResult getInfo() if (!userService.checkUserNameUnique(sysUser))
{ {
SysUser user = userService.selectUserById(SecurityUtils.getUserId()); return R.fail("保存用户'" + username + "'失败,注册账号已存在");
// 角色集合 }
Set<String> roles = permissionService.getRolePermission(user); return R.ok(userService.registerUser(sysUser));
// 权限集合 }
Set<String> permissions = permissionService.getMenuPermission(user);
AjaxResult ajax = AjaxResult.success(); /**
ajax.put("user", user); *记录用户登录IP地址和登录时间
ajax.put("roles", roles); */
ajax.put("permissions", permissions); @InnerAuth
return ajax; @PutMapping("/recordlogin")
} public R<Boolean> recordlogin(@RequestBody SysUser sysUser)
{
/** return R.ok(userService.updateUserProfile(sysUser));
* 根据用户编号获取详细信息 }
*/
@RequiresPermissions("system:user:query") /**
@GetMapping(value = { "/", "/{userId}" }) * 获取用户信息
public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) *
{ * @return 用户信息
userService.checkUserDataScope(userId); */
AjaxResult ajax = AjaxResult.success(); @GetMapping("getInfo")
List<SysRole> roles = roleService.selectRoleAll(); public AjaxResult getInfo()
ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); {
ajax.put("posts", postService.selectPostAll()); SysUser user = userService.selectUserById(SecurityUtils.getUserId());
if (StringUtils.isNotNull(userId)) // 角色集合
{ Set<String> roles = permissionService.getRolePermission(user);
SysUser sysUser = userService.selectUserById(userId); // 权限集合
ajax.put(AjaxResult.DATA_TAG, sysUser); Set<String> permissions = permissionService.getMenuPermission(user);
ajax.put("postIds", postService.selectPostListByUserId(userId)); AjaxResult ajax = AjaxResult.success();
ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); ajax.put("user", user);
} ajax.put("roles", roles);
return ajax; ajax.put("permissions", permissions);
} return ajax;
}
/**
* 新增用户 /**
*/ * 根据用户编号获取详细信息
@RequiresPermissions("system:user:add") */
@Log(title = "用户管理", businessType = BusinessType.INSERT) @RequiresPermissions("system:user:query")
@PostMapping @GetMapping(value = { "/", "/{userId}" })
public AjaxResult add(@Validated @RequestBody SysUser user) public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId)
{ {
deptService.checkDeptDataScope(user.getDeptId()); userService.checkUserDataScope(userId);
roleService.checkRoleDataScope(user.getRoleIds()); AjaxResult ajax = AjaxResult.success();
if (!userService.checkUserNameUnique(user)) List<SysRole> roles = roleService.selectRoleAll();
{ ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); ajax.put("posts", postService.selectPostAll());
} if (StringUtils.isNotNull(userId))
else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
{ SysUser sysUser = userService.selectUserById(userId);
return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); ajax.put(AjaxResult.DATA_TAG, sysUser);
} ajax.put("postIds", postService.selectPostListByUserId(userId));
else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()));
{ }
return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在"); return ajax;
} }
user.setCreateBy(SecurityUtils.getUsername());
user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); /**
return toAjax(userService.insertUser(user)); * 新增用户
} */
@RequiresPermissions("system:user:add")
/** @Log(title = "用户管理", businessType = BusinessType.INSERT)
* 修改用户 @PostMapping
*/ public AjaxResult add(@Validated @RequestBody SysUser user)
@RequiresPermissions("system:user:edit") {
@Log(title = "用户管理", businessType = BusinessType.UPDATE) deptService.checkDeptDataScope(user.getDeptId());
@PutMapping roleService.checkRoleDataScope(user.getRoleIds());
public AjaxResult edit(@Validated @RequestBody SysUser user) if (!userService.checkUserNameUnique(user))
{ {
userService.checkUserAllowed(user); return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
userService.checkUserDataScope(user.getUserId()); }
deptService.checkDeptDataScope(user.getDeptId()); else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
roleService.checkRoleDataScope(user.getRoleIds()); {
if (!userService.checkUserNameUnique(user)) return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
{ }
return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在"); else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
} {
else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
{ }
return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); user.setCreateBy(SecurityUtils.getUsername());
} user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) return toAjax(userService.insertUser(user));
{ }
return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
} /**
user.setUpdateBy(SecurityUtils.getUsername()); * 修改用户
return toAjax(userService.updateUser(user)); */
} @RequiresPermissions("system:user:edit")
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
/** @PutMapping
* 删除用户 public AjaxResult edit(@Validated @RequestBody SysUser user)
*/ {
@RequiresPermissions("system:user:remove") userService.checkUserAllowed(user);
@Log(title = "用户管理", businessType = BusinessType.DELETE) userService.checkUserDataScope(user.getUserId());
@DeleteMapping("/{userIds}") deptService.checkDeptDataScope(user.getDeptId());
public AjaxResult remove(@PathVariable Long[] userIds) roleService.checkRoleDataScope(user.getRoleIds());
{ if (!userService.checkUserNameUnique(user))
if (ArrayUtils.contains(userIds, SecurityUtils.getUserId())) {
{ return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
return error("当前用户不能删除"); }
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
return toAjax(userService.deleteUserByIds(userIds)); {
} return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
}
/** else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
* 重置密码 {
*/ return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
@RequiresPermissions("system:user:edit") }
@Log(title = "用户管理", businessType = BusinessType.UPDATE) user.setUpdateBy(SecurityUtils.getUsername());
@PutMapping("/resetPwd") return toAjax(userService.updateUser(user));
public AjaxResult resetPwd(@RequestBody SysUser user) }
{
userService.checkUserAllowed(user); /**
userService.checkUserDataScope(user.getUserId()); * 删除用户
user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); */
user.setUpdateBy(SecurityUtils.getUsername()); @RequiresPermissions("system:user:remove")
return toAjax(userService.resetPwd(user)); @Log(title = "用户管理", businessType = BusinessType.DELETE)
} @DeleteMapping("/{userIds}")
public AjaxResult remove(@PathVariable Long[] userIds)
/** {
* 状态修改 if (ArrayUtils.contains(userIds, SecurityUtils.getUserId()))
*/ {
@RequiresPermissions("system:user:edit") return error("当前用户不能删除");
@Log(title = "用户管理", businessType = BusinessType.UPDATE) }
@PutMapping("/changeStatus") return toAjax(userService.deleteUserByIds(userIds));
public AjaxResult changeStatus(@RequestBody SysUser user) }
{
userService.checkUserAllowed(user); /**
userService.checkUserDataScope(user.getUserId()); * 重置密码
user.setUpdateBy(SecurityUtils.getUsername()); */
return toAjax(userService.updateUserStatus(user)); @RequiresPermissions("system:user:edit")
} @Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping("/resetPwd")
/** public AjaxResult resetPwd(@RequestBody SysUser user)
* 根据用户编号获取授权角色 {
*/ userService.checkUserAllowed(user);
@RequiresPermissions("system:user:query") userService.checkUserDataScope(user.getUserId());
@GetMapping("/authRole/{userId}") user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
public AjaxResult authRole(@PathVariable("userId") Long userId) user.setUpdateBy(SecurityUtils.getUsername());
{ return toAjax(userService.resetPwd(user));
AjaxResult ajax = AjaxResult.success(); }
SysUser user = userService.selectUserById(userId);
List<SysRole> roles = roleService.selectRolesByUserId(userId); /**
ajax.put("user", user); * 状态修改
ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); */
return ajax; @RequiresPermissions("system:user:edit")
} @Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping("/changeStatus")
/** public AjaxResult changeStatus(@RequestBody SysUser user)
* 用户授权角色 {
*/ userService.checkUserAllowed(user);
@RequiresPermissions("system:user:edit") userService.checkUserDataScope(user.getUserId());
@Log(title = "用户管理", businessType = BusinessType.GRANT) user.setUpdateBy(SecurityUtils.getUsername());
@PutMapping("/authRole") return toAjax(userService.updateUserStatus(user));
public AjaxResult insertAuthRole(Long userId, Long[] roleIds) }
{
userService.checkUserDataScope(userId); /**
roleService.checkRoleDataScope(roleIds); * 根据用户编号获取授权角色
userService.insertUserAuth(userId, roleIds); */
return success(); @RequiresPermissions("system:user:query")
} @GetMapping("/authRole/{userId}")
public AjaxResult authRole(@PathVariable("userId") Long userId)
/** {
* 获取部门树列表 AjaxResult ajax = AjaxResult.success();
*/ SysUser user = userService.selectUserById(userId);
@RequiresPermissions("system:user:list") List<SysRole> roles = roleService.selectRolesByUserId(userId);
@GetMapping("/deptTree") ajax.put("user", user);
public AjaxResult deptTree(SysDept dept) ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
{ return ajax;
return success(deptService.selectDeptTreeList(dept)); }
}
} /**
* 用户授权角色
*/
@RequiresPermissions("system:user:edit")
@Log(title = "用户管理", businessType = BusinessType.GRANT)
@PutMapping("/authRole")
public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
{
userService.checkUserDataScope(userId);
roleService.checkRoleDataScope(roleIds);
userService.insertUserAuth(userId, roleIds);
return success();
}
/**
* 获取部门树列表
*/
@RequiresPermissions("system:user:list")
@GetMapping("/deptTree")
public AjaxResult deptTree(SysDept dept)
{
return success(deptService.selectDeptTreeList(dept));
}
}

View File

@@ -1,127 +1,135 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import java.util.List; import java.util.List;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.domain.SysUser;
/** /**
* 用户表 数据层 * 用户表 数据层
* *
* @author ruoyi * @author ruoyi
*/ */
public interface SysUserMapper public interface SysUserMapper
{ {
/** /**
* 根据条件分页查询用户列表 * 根据条件分页查询用户列表
* *
* @param sysUser 用户信息 * @param sysUser 用户信息
* @return 用户信息集合信息 * @return 用户信息集合信息
*/ */
public List<SysUser> selectUserList(SysUser sysUser); public List<SysUser> selectUserList(SysUser sysUser);
/** /**
* 根据条件分页查询已配用户角色列表 * 根据条件分页查询已配用户角色列表
* *
* @param user 用户信息 * @param user 用户信息
* @return 用户信息集合信息 * @return 用户信息集合信息
*/ */
public List<SysUser> selectAllocatedList(SysUser user); public List<SysUser> selectAllocatedList(SysUser user);
/** /**
* 根据条件分页查询未分配用户角色列表 * 根据条件分页查询未分配用户角色列表
* *
* @param user 用户信息 * @param user 用户信息
* @return 用户信息集合信息 * @return 用户信息集合信息
*/ */
public List<SysUser> selectUnallocatedList(SysUser user); public List<SysUser> selectUnallocatedList(SysUser user);
/** /**
* 通过用户名查询用户 * 通过用户名查询用户
* *
* @param userName 用户名 * @param userName 用户名
* @return 用户对象信息 * @return 用户对象信息
*/ */
public SysUser selectUserByUserName(String userName); public SysUser selectUserByUserName(String userName);
/** /**
* 通过用户ID查询用户 * 通过手机号查询用户
* *
* @param userId 用户ID * @param phoneNumber 手机号
* @return 用户对象信息 * @return 用户对象信息
*/ */
public SysUser selectUserById(Long userId); public SysUser selectUserByPhoneNumber(String phoneNumber);
/** /**
* 新增用户信息 * 通过用户ID查询用户
* *
* @param user 用户信息 * @param userId 用户ID
* @return 结果 * @return 用户对象信息
*/ */
public int insertUser(SysUser user); public SysUser selectUserById(Long userId);
/** /**
* 修改用户信息 * 新增用户信息
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
public int updateUser(SysUser user); public int insertUser(SysUser user);
/** /**
* 修改用户头像 * 修改用户信息
* *
* @param userName 用户 * @param user 用户信息
* @param avatar 头像地址 * @return 结果
* @return 结果 */
*/ public int updateUser(SysUser user);
public int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar);
/**
/** * 修改用户头像
* 重置用户密码 *
* * @param userName 用户名
* @param userName 用户名 * @param avatar 头像地址
* @param password 密码 * @return 结果
* @return 结果 */
*/ public int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar);
public int resetUserPwd(@Param("userName") String userName, @Param("password") String password);
/**
/** * 重置用户密码
* 通过用户ID删除用户 *
* * @param userName 用户名
* @param userId 用户ID * @param password 密码
* @return 结果 * @return 结果
*/ */
public int deleteUserById(Long userId); public int resetUserPwd(@Param("userName") String userName, @Param("password") String password);
/** /**
* 批量删除用户信息 * 通过用户ID删除用户
* *
* @param userIds 需要删除的用户ID * @param userId 用户ID
* @return 结果 * @return 结果
*/ */
public int deleteUserByIds(Long[] userIds); public int deleteUserById(Long userId);
/** /**
* 校验用户名称是否唯一 * 批量删除用户信息
* *
* @param userName 用户名称 * @param userIds 需要删除的用户ID
* @return 结果 * @return 结果
*/ */
public SysUser checkUserNameUnique(String userName); public int deleteUserByIds(Long[] userIds);
/** /**
* 校验手机号码是否唯一 * 校验用户名称是否唯一
* *
* @param phonenumber 手机号码 * @param userName 用户名称
* @return 结果 * @return 结果
*/ */
public SysUser checkPhoneUnique(String phonenumber); public SysUser checkUserNameUnique(String userName);
/** /**
* 校验email是否唯一 * 校验手机号码是否唯一
* *
* @param email 用户邮箱 * @param phonenumber 手机号码
* @return 结果 * @return 结果
*/ */
public SysUser checkEmailUnique(String email); public SysUser checkPhoneUnique(String phonenumber);
}
/**
* 校验email是否唯一
*
* @param email 用户邮箱
* @return 结果
*/
public SysUser checkEmailUnique(String email);
}

View File

@@ -1,206 +1,214 @@
package com.ruoyi.system.service; package com.ruoyi.system.service;
import java.util.List; import java.util.List;
import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.domain.SysUser;
/** /**
* 用户 业务层 * 用户 业务层
* *
* @author ruoyi * @author ruoyi
*/ */
public interface ISysUserService public interface ISysUserService
{ {
/** /**
* 根据条件分页查询用户列表 * 根据条件分页查询用户列表
* *
* @param user 用户信息 * @param user 用户信息
* @return 用户信息集合信息 * @return 用户信息集合信息
*/ */
public List<SysUser> selectUserList(SysUser user); public List<SysUser> selectUserList(SysUser user);
/** /**
* 根据条件分页查询已分配用户角色列表 * 根据条件分页查询已分配用户角色列表
* *
* @param user 用户信息 * @param user 用户信息
* @return 用户信息集合信息 * @return 用户信息集合信息
*/ */
public List<SysUser> selectAllocatedList(SysUser user); public List<SysUser> selectAllocatedList(SysUser user);
/** /**
* 根据条件分页查询未分配用户角色列表 * 根据条件分页查询未分配用户角色列表
* *
* @param user 用户信息 * @param user 用户信息
* @return 用户信息集合信息 * @return 用户信息集合信息
*/ */
public List<SysUser> selectUnallocatedList(SysUser user); public List<SysUser> selectUnallocatedList(SysUser user);
/** /**
* 通过用户名查询用户 * 通过用户名查询用户
* *
* @param userName 用户名 * @param userName 用户名
* @return 用户对象信息 * @return 用户对象信息
*/ */
public SysUser selectUserByUserName(String userName); public SysUser selectUserByUserName(String userName);
/** /**
* 通过用户ID查询用户 * 通过手机号查询用户
* *
* @param userId 用户ID * @param phoneNumber 用户
* @return 用户对象信息 * @return 用户对象信息
*/ */
public SysUser selectUserById(Long userId); public SysUser selectUserByPhoneNumber(String phoneNumber);
/** /**
* 根据用户ID查询用户所属角色组 * 通过用户ID查询用户
* *
* @param userName 用户 * @param userId 用户ID
* @return 结果 * @return 用户对象信息
*/ */
public String selectUserRoleGroup(String userName); public SysUser selectUserById(Long userId);
/** /**
* 根据用户ID查询用户所属岗位 * 根据用户ID查询用户所属角色
* *
* @param userName 用户名 * @param userName 用户名
* @return 结果 * @return 结果
*/ */
public String selectUserPostGroup(String userName); public String selectUserRoleGroup(String userName);
/** /**
* 校验用户名称是否唯一 * 根据用户ID查询用户所属岗位组
* *
* @param user 用户信息 * @param userName 用户
* @return 结果 * @return 结果
*/ */
public boolean checkUserNameUnique(SysUser user); public String selectUserPostGroup(String userName);
/** /**
* 校验手机号码是否唯一 * 校验用户名称是否唯一
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
public boolean checkPhoneUnique(SysUser user); public boolean checkUserNameUnique(SysUser user);
/** /**
* 校验email是否唯一 * 校验手机号码是否唯一
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
public boolean checkEmailUnique(SysUser user); public boolean checkPhoneUnique(SysUser user);
/** /**
* 校验用户是否允许操作 * 校验email是否唯一
* *
* @param user 用户信息 * @param user 用户信息
*/ * @return 结果
public void checkUserAllowed(SysUser user); */
public boolean checkEmailUnique(SysUser user);
/**
* 校验用户是否有数据权限 /**
* * 校验用户是否允许操作
* @param userId 用户id *
*/ * @param user 用户信息
public void checkUserDataScope(Long userId); */
public void checkUserAllowed(SysUser user);
/**
* 新增用户信息 /**
* * 校验用户是否有数据权限
* @param user 用户信息 *
* @return 结果 * @param userId 用户id
*/ */
public int insertUser(SysUser user); public void checkUserDataScope(Long userId);
/** /**
* 注册用户信息 * 新增用户信息
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
public boolean registerUser(SysUser user); public int insertUser(SysUser user);
/** /**
* 修改用户信息 * 注册用户信息
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
public int updateUser(SysUser user); public boolean registerUser(SysUser user);
/** /**
* 用户授权角色 * 修改用户信息
* *
* @param userId 用户ID * @param user 用户信息
* @param roleIds 角色组 * @return 结果
*/ */
public void insertUserAuth(Long userId, Long[] roleIds); public int updateUser(SysUser user);
/** /**
* 修改用户状态 * 用户授权角色
* *
* @param user 用户信息 * @param userId 用户ID
* @return 结果 * @param roleIds 角色组
*/ */
public int updateUserStatus(SysUser user); public void insertUserAuth(Long userId, Long[] roleIds);
/** /**
* 修改用户基本信息 * 修改用户状态
* *
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
public boolean updateUserProfile(SysUser user); public int updateUserStatus(SysUser user);
/** /**
* 修改用户头像 * 修改用户基本信息
* *
* @param userName 用户 * @param user 用户信息
* @param avatar 头像地址 * @return 结果
* @return 结果 */
*/ public boolean updateUserProfile(SysUser user);
public boolean updateUserAvatar(String userName, String avatar);
/**
/** * 修改用户头像
* 重置用户密码 *
* * @param userName 用户名
* @param user 用户信息 * @param avatar 头像地址
* @return 结果 * @return 结果
*/ */
public int resetPwd(SysUser user); public boolean updateUserAvatar(String userName, String avatar);
/** /**
* 重置用户密码 * 重置用户密码
* *
* @param userName 用户 * @param user 用户信息
* @param password 密码 * @return 结果
* @return 结果 */
*/ public int resetPwd(SysUser user);
public int resetUserPwd(String userName, String password);
/**
/** * 重置用户密码
* 通过用户ID删除用户 *
* * @param userName 用户名
* @param userId 用户ID * @param password 密码
* @return 结果 * @return 结果
*/ */
public int deleteUserById(Long userId); public int resetUserPwd(String userName, String password);
/** /**
* 批量删除用户信息 * 通过用户ID删除用户
* *
* @param userIds 需要删除的用户ID * @param userId 用户ID
* @return 结果 * @return 结果
*/ */
public int deleteUserByIds(Long[] userIds); public int deleteUserById(Long userId);
/** /**
* 导入用户数据 * 批量删除用户信息
* *
* @param userList 用户数据列表 * @param userIds 需要删除的用户ID
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 * @return 结果
* @param operName 操作用户 */
* @return 结果 public int deleteUserByIds(Long[] userIds);
*/
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName); /**
} * 导入用户数据
*
* @param userList 用户数据列表
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
* @param operName 操作用户
* @return 结果
*/
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
}

View File

@@ -1,221 +1,226 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.SysUserMapper"> <mapper namespace="com.ruoyi.system.mapper.SysUserMapper">
<resultMap type="SysUser" id="SysUserResult"> <resultMap type="SysUser" id="SysUserResult">
<id property="userId" column="user_id" /> <id property="userId" column="user_id" />
<result property="deptId" column="dept_id" /> <result property="deptId" column="dept_id" />
<result property="userName" column="user_name" /> <result property="userName" column="user_name" />
<result property="nickName" column="nick_name" /> <result property="nickName" column="nick_name" />
<result property="email" column="email" /> <result property="email" column="email" />
<result property="phonenumber" column="phonenumber" /> <result property="phonenumber" column="phonenumber" />
<result property="sex" column="sex" /> <result property="sex" column="sex" />
<result property="avatar" column="avatar" /> <result property="avatar" column="avatar" />
<result property="password" column="password" /> <result property="password" column="password" />
<result property="status" column="status" /> <result property="status" column="status" />
<result property="delFlag" column="del_flag" /> <result property="delFlag" column="del_flag" />
<result property="loginIp" column="login_ip" /> <result property="loginIp" column="login_ip" />
<result property="loginDate" column="login_date" /> <result property="loginDate" column="login_date" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="remark" column="remark" /> <result property="remark" column="remark" />
<association property="dept" javaType="SysDept" resultMap="deptResult" /> <association property="dept" javaType="SysDept" resultMap="deptResult" />
<collection property="roles" javaType="java.util.List" resultMap="RoleResult" /> <collection property="roles" javaType="java.util.List" resultMap="RoleResult" />
</resultMap> </resultMap>
<resultMap id="deptResult" type="SysDept"> <resultMap id="deptResult" type="SysDept">
<id property="deptId" column="dept_id" /> <id property="deptId" column="dept_id" />
<result property="parentId" column="parent_id" /> <result property="parentId" column="parent_id" />
<result property="deptName" column="dept_name" /> <result property="deptName" column="dept_name" />
<result property="ancestors" column="ancestors" /> <result property="ancestors" column="ancestors" />
<result property="orderNum" column="order_num" /> <result property="orderNum" column="order_num" />
<result property="leader" column="leader" /> <result property="leader" column="leader" />
<result property="status" column="dept_status" /> <result property="status" column="dept_status" />
</resultMap> </resultMap>
<resultMap id="RoleResult" type="SysRole"> <resultMap id="RoleResult" type="SysRole">
<id property="roleId" column="role_id" /> <id property="roleId" column="role_id" />
<result property="roleName" column="role_name" /> <result property="roleName" column="role_name" />
<result property="roleKey" column="role_key" /> <result property="roleKey" column="role_key" />
<result property="roleSort" column="role_sort" /> <result property="roleSort" column="role_sort" />
<result property="dataScope" column="data_scope" /> <result property="dataScope" column="data_scope" />
<result property="status" column="role_status" /> <result property="status" column="role_status" />
</resultMap> </resultMap>
<sql id="selectUserVo"> <sql id="selectUserVo">
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id left join sys_role r on r.role_id = ur.role_id
</sql> </sql>
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult"> <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
where u.del_flag = '0' where u.del_flag = '0'
<if test="userId != null and userId != 0"> <if test="userId != null and userId != 0">
AND u.user_id = #{userId} AND u.user_id = #{userId}
</if> </if>
<if test="userName != null and userName != ''"> <if test="userName != null and userName != ''">
AND u.user_name like concat('%', #{userName}, '%') AND u.user_name like concat('%', #{userName}, '%')
</if> </if>
<if test="status != null and status != ''"> <if test="status != null and status != ''">
AND u.status = #{status} AND u.status = #{status}
</if> </if>
<if test="phonenumber != null and phonenumber != ''"> <if test="phonenumber != null and phonenumber != ''">
AND u.phonenumber like concat('%', #{phonenumber}, '%') AND u.phonenumber like concat('%', #{phonenumber}, '%')
</if> </if>
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 --> <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
AND date_format(u.create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d') AND date_format(u.create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')
</if> </if>
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 --> <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
AND date_format(u.create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d') AND date_format(u.create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')
</if> </if>
<if test="deptId != null and deptId != 0"> <if test="deptId != null and deptId != 0">
AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) )) AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
</if> </if>
<!-- 数据范围过滤 --> <!-- 数据范围过滤 -->
${params.dataScope} ${params.dataScope}
</select> </select>
<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult"> <select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
from sys_user u from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id left join sys_role r on r.role_id = ur.role_id
where u.del_flag = '0' and r.role_id = #{roleId} where u.del_flag = '0' and r.role_id = #{roleId}
<if test="userName != null and userName != ''"> <if test="userName != null and userName != ''">
AND u.user_name like concat('%', #{userName}, '%') AND u.user_name like concat('%', #{userName}, '%')
</if> </if>
<if test="phonenumber != null and phonenumber != ''"> <if test="phonenumber != null and phonenumber != ''">
AND u.phonenumber like concat('%', #{phonenumber}, '%') AND u.phonenumber like concat('%', #{phonenumber}, '%')
</if> </if>
<!-- 数据范围过滤 --> <!-- 数据范围过滤 -->
${params.dataScope} ${params.dataScope}
</select> </select>
<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult"> <select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
from sys_user u from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id left join sys_role r on r.role_id = ur.role_id
where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL) where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)
and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and ur.role_id = #{roleId}) and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and ur.role_id = #{roleId})
<if test="userName != null and userName != ''"> <if test="userName != null and userName != ''">
AND u.user_name like concat('%', #{userName}, '%') AND u.user_name like concat('%', #{userName}, '%')
</if> </if>
<if test="phonenumber != null and phonenumber != ''"> <if test="phonenumber != null and phonenumber != ''">
AND u.phonenumber like concat('%', #{phonenumber}, '%') AND u.phonenumber like concat('%', #{phonenumber}, '%')
</if> </if>
<!-- 数据范围过滤 --> <!-- 数据范围过滤 -->
${params.dataScope} ${params.dataScope}
</select> </select>
<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult"> <select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
<include refid="selectUserVo"/> <include refid="selectUserVo"/>
where u.user_name = #{userName} and u.del_flag = '0' where u.user_name = #{userName} and u.del_flag = '0'
</select> </select>
<select id="selectUserById" parameterType="Long" resultMap="SysUserResult"> <select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
<include refid="selectUserVo"/> <include refid="selectUserVo"/>
where u.user_id = #{userId} where u.user_id = #{userId}
</select> </select>
<select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult"> <select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1 select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1
</select> </select>
<select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult"> <select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1 select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1
</select> </select>
<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult"> <select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1 select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
</select> </select>
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId"> <select id="selectUserByPhoneNumber" parameterType="String" resultMap="SysUserResult">
insert into sys_user( <include refid="selectUserVo"/>
<if test="userId != null and userId != 0">user_id,</if> where u.phonenumber = #{phoneNumber} and u.del_flag = '0'
<if test="deptId != null and deptId != 0">dept_id,</if> </select>
<if test="userName != null and userName != ''">user_name,</if>
<if test="nickName != null and nickName != ''">nick_name,</if> <insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
<if test="email != null and email != ''">email,</if> insert into sys_user(
<if test="avatar != null and avatar != ''">avatar,</if> <if test="userId != null and userId != 0">user_id,</if>
<if test="phonenumber != null and phonenumber != ''">phonenumber,</if> <if test="deptId != null and deptId != 0">dept_id,</if>
<if test="sex != null and sex != ''">sex,</if> <if test="userName != null and userName != ''">user_name,</if>
<if test="password != null and password != ''">password,</if> <if test="nickName != null and nickName != ''">nick_name,</if>
<if test="status != null and status != ''">status,</if> <if test="email != null and email != ''">email,</if>
<if test="createBy != null and createBy != ''">create_by,</if> <if test="avatar != null and avatar != ''">avatar,</if>
<if test="remark != null and remark != ''">remark,</if> <if test="phonenumber != null and phonenumber != ''">phonenumber,</if>
create_time <if test="sex != null and sex != ''">sex,</if>
)values( <if test="password != null and password != ''">password,</if>
<if test="userId != null and userId != ''">#{userId},</if> <if test="status != null and status != ''">status,</if>
<if test="deptId != null and deptId != ''">#{deptId},</if> <if test="createBy != null and createBy != ''">create_by,</if>
<if test="userName != null and userName != ''">#{userName},</if> <if test="remark != null and remark != ''">remark,</if>
<if test="nickName != null and nickName != ''">#{nickName},</if> create_time
<if test="email != null and email != ''">#{email},</if> )values(
<if test="avatar != null and avatar != ''">#{avatar},</if> <if test="userId != null and userId != ''">#{userId},</if>
<if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if> <if test="deptId != null and deptId != ''">#{deptId},</if>
<if test="sex != null and sex != ''">#{sex},</if> <if test="userName != null and userName != ''">#{userName},</if>
<if test="password != null and password != ''">#{password},</if> <if test="nickName != null and nickName != ''">#{nickName},</if>
<if test="status != null and status != ''">#{status},</if> <if test="email != null and email != ''">#{email},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if> <if test="avatar != null and avatar != ''">#{avatar},</if>
<if test="remark != null and remark != ''">#{remark},</if> <if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if>
sysdate() <if test="sex != null and sex != ''">#{sex},</if>
) <if test="password != null and password != ''">#{password},</if>
</insert> <if test="status != null and status != ''">#{status},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
<update id="updateUser" parameterType="SysUser"> <if test="remark != null and remark != ''">#{remark},</if>
update sys_user sysdate()
<set> )
<if test="deptId != null and deptId != 0">dept_id = #{deptId},</if> </insert>
<if test="userName != null and userName != ''">user_name = #{userName},</if>
<if test="nickName != null and nickName != ''">nick_name = #{nickName},</if> <update id="updateUser" parameterType="SysUser">
<if test="email != null ">email = #{email},</if> update sys_user
<if test="phonenumber != null ">phonenumber = #{phonenumber},</if> <set>
<if test="sex != null and sex != ''">sex = #{sex},</if> <if test="deptId != null and deptId != 0">dept_id = #{deptId},</if>
<if test="avatar != null and avatar != ''">avatar = #{avatar},</if> <if test="userName != null and userName != ''">user_name = #{userName},</if>
<if test="password != null and password != ''">password = #{password},</if> <if test="nickName != null and nickName != ''">nick_name = #{nickName},</if>
<if test="status != null and status != ''">status = #{status},</if> <if test="email != null ">email = #{email},</if>
<if test="loginIp != null and loginIp != ''">login_ip = #{loginIp},</if> <if test="phonenumber != null ">phonenumber = #{phonenumber},</if>
<if test="loginDate != null">login_date = #{loginDate},</if> <if test="sex != null and sex != ''">sex = #{sex},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> <if test="avatar != null and avatar != ''">avatar = #{avatar},</if>
<if test="remark != null">remark = #{remark},</if> <if test="password != null and password != ''">password = #{password},</if>
update_time = sysdate() <if test="status != null and status != ''">status = #{status},</if>
</set> <if test="loginIp != null and loginIp != ''">login_ip = #{loginIp},</if>
where user_id = #{userId} <if test="loginDate != null">login_date = #{loginDate},</if>
</update> <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
<if test="remark != null">remark = #{remark},</if>
<update id="updateUserStatus" parameterType="SysUser"> update_time = sysdate()
update sys_user set status = #{status} where user_id = #{userId} </set>
</update> where user_id = #{userId}
</update>
<update id="updateUserAvatar" parameterType="SysUser">
update sys_user set avatar = #{avatar} where user_name = #{userName} <update id="updateUserStatus" parameterType="SysUser">
</update> update sys_user set status = #{status} where user_id = #{userId}
</update>
<update id="resetUserPwd" parameterType="SysUser">
update sys_user set password = #{password} where user_name = #{userName} <update id="updateUserAvatar" parameterType="SysUser">
</update> update sys_user set avatar = #{avatar} where user_name = #{userName}
</update>
<delete id="deleteUserById" parameterType="Long">
update sys_user set del_flag = '2' where user_id = #{userId} <update id="resetUserPwd" parameterType="SysUser">
</delete> update sys_user set password = #{password} where user_name = #{userName}
</update>
<delete id="deleteUserByIds" parameterType="Long">
update sys_user set del_flag = '2' where user_id in <delete id="deleteUserById" parameterType="Long">
<foreach collection="array" item="userId" open="(" separator="," close=")"> update sys_user set del_flag = '2' where user_id = #{userId}
#{userId} </delete>
</foreach>
</delete> <delete id="deleteUserByIds" parameterType="Long">
update sys_user set del_flag = '2' where user_id in
<foreach collection="array" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</delete>
</mapper> </mapper>