|
|
|
@ -27,142 +27,233 @@ import com.utils.R;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 登录相关
|
|
|
|
|
* 该类主要处理与用户登录、注册以及退出相关的操作,通过调用对应的服务层接口来实现具体业务逻辑,并与前端进行交互返回相应结果。
|
|
|
|
|
* 类上使用了 @RequestMapping("users") 注解来指定该控制器处理的基础请求路径为 "/users",使用 @RestController 注解表明这是一个 RESTful 风格的控制器,返回的数据会直接转换为 JSON 等格式响应给前端。
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
@RequestMapping("users")
|
|
|
|
|
@RestController
|
|
|
|
|
public class UsersController {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 自动注入用户服务层接口,通过该接口可以调用与用户相关的业务方法,比如查询用户、插入用户等数据库操作相关的方法,具体实现由对应的服务层类来完成。
|
|
|
|
|
@Autowired
|
|
|
|
|
private UsersService usersService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 自动注入Token服务层接口,用于处理与用户Token相关的业务逻辑,例如生成用户登录后的Token等操作,具体功能在TokenService类中实现。
|
|
|
|
|
@Autowired
|
|
|
|
|
private TokenService tokenService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 登录
|
|
|
|
|
* 处理用户登录的业务逻辑,接收用户名、密码和验证码(当前代码中验证码未做完整验证逻辑)作为参数,验证用户信息是否正确,若正确则生成Token并返回相关用户信息给前端。
|
|
|
|
|
* 该方法使用了 @IgnoreAuth 注解,意味着此登录接口可能不需要进行权限认证即可访问(具体取决于该注解的实际定义和功能),使用 @PostMapping 注解指定该接口处理的是POST请求,请求路径为 "/login",即完整路径为 "/users/login"。
|
|
|
|
|
* @param username 用户名,从前端请求中传入,用于查找对应的用户信息。
|
|
|
|
|
* @param password 密码,从前端请求中传入,用于和数据库中存储的用户密码进行比对验证。
|
|
|
|
|
* @param captcha 验证码,从前端请求中传入,当前代码未对其进行完整的验证逻辑处理(比如与缓存中的验证码比对等操作)。
|
|
|
|
|
* @param request HttpServletRequest对象,用于获取当前请求相关的信息,不过在当前登录方法中未体现更多复杂的使用情况。
|
|
|
|
|
* @return R对象,封装了操作结果及相关数据,若登录成功则包含生成的Token、用户角色、用户ID等信息,若登录失败则返回账号或密码不正确的错误信息。
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
@IgnoreAuth
|
|
|
|
|
@PostMapping(value = "/login")
|
|
|
|
|
public R login(String username, String password, String captcha, HttpServletRequest request) {
|
|
|
|
|
|
|
|
|
|
// 通过用户服务层的selectOne方法,结合EntityWrapper构建的查询条件,根据传入的用户名从数据库中查询对应的用户实体信息。
|
|
|
|
|
// 这里的查询条件是查找用户名与传入的username相等的用户记录,返回符合条件的UsersEntity对象(若存在),若不存在则返回null。
|
|
|
|
|
UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
|
|
|
|
|
if(user==null || !user.getPassword().equals(password)) {
|
|
|
|
|
// 如果查询到的用户为null(即用户名不存在)或者密码不匹配(通过调用user对象的getPassword方法获取存储的密码并与传入的password比对),则返回账号或密码不正确的错误信息给前端。
|
|
|
|
|
if (user == null ||!user.getPassword().equals(password)) {
|
|
|
|
|
return R.error("账号或密码不正确");
|
|
|
|
|
}
|
|
|
|
|
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
|
|
|
|
|
// 如果用户信息验证通过,调用Token服务层的generateToken方法,根据用户的ID、用户名、用户类型(这里固定为"users")以及用户的角色信息生成一个用于标识用户登录状态的Token字符串。
|
|
|
|
|
String token = tokenService.generateToken(user.getId(), username, "users", user.getRole());
|
|
|
|
|
R r = R.ok();
|
|
|
|
|
// 将生成的Token放入返回结果对象R中,以便前端接收并后续用于验证用户登录状态等操作。
|
|
|
|
|
r.put("token", token);
|
|
|
|
|
r.put("role",user.getRole());
|
|
|
|
|
r.put("userId",user.getId());
|
|
|
|
|
// 将用户的角色信息放入返回结果对象R中,方便前端知晓当前登录用户的角色权限等情况。
|
|
|
|
|
r.put("role", user.getRole());
|
|
|
|
|
// 将用户的ID信息放入返回结果对象R中,前端可能会根据此ID进行一些与用户相关的后续操作。
|
|
|
|
|
r.put("userId", user.getId());
|
|
|
|
|
return r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 注册
|
|
|
|
|
* 处理用户注册的业务逻辑,接收包含用户信息的UsersEntity对象作为参数,先检查用户名是否已被使用,若未被使用则将新用户信息插入到数据库中。
|
|
|
|
|
* 该方法同样使用了 @IgnoreAuth 注解,可能表示此注册接口不需要进行权限认证即可访问(具体取决于该注解的实际定义和功能),使用 @PostMapping 注解指定该接口处理的是POST请求,请求路径为 "/register",即完整路径为 "/users/register"。
|
|
|
|
|
* @param user 包含用户注册信息的UsersEntity对象,通过请求体传入,通常是前端提交的注册表单数据等内容,包含了用户名、密码等各种用户相关信息。
|
|
|
|
|
* @return R对象,封装了操作结果,若注册成功则返回成功信息,若用户名已存在则返回用户已存在的错误信息。
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
@IgnoreAuth
|
|
|
|
|
@PostMapping(value = "/register")
|
|
|
|
|
public R register(@RequestBody UsersEntity user){
|
|
|
|
|
// ValidatorUtils.validateEntity(user);
|
|
|
|
|
if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
|
|
|
|
|
return R.error("用户已存在");
|
|
|
|
|
}
|
|
|
|
|
usersService.insert(user);
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
public R register(@RequestBody UsersEntity user) {
|
|
|
|
|
// 以下这行代码被注释掉了,可能原本是用于对传入的用户实体进行数据合法性验证的逻辑,比如验证用户名、密码是否符合格式要求等,目前未生效。
|
|
|
|
|
// ValidatorUtils.validateEntity(user);
|
|
|
|
|
// 通过用户服务层的selectOne方法,结合EntityWrapper构建的查询条件,根据传入的用户实体中的用户名去数据库中查询是否已存在相同用户名的用户记录,若存在则返回对应的UsersEntity对象,若不存在则返回null。
|
|
|
|
|
if (usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername()))!= null) {
|
|
|
|
|
return R.error("用户已存在");
|
|
|
|
|
}
|
|
|
|
|
// 如果用户名未被使用,调用用户服务层的insert方法将包含新用户信息的user对象插入到数据库中,完成用户注册操作。
|
|
|
|
|
usersService.insert(user);
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 退出
|
|
|
|
|
* 处理用户退出登录的业务逻辑,通过使当前请求的会话(Session)失效来清除用户登录状态等相关信息,返回退出成功的提示信息给前端。
|
|
|
|
|
* 使用 @GetMapping 注解指定该接口处理的是GET请求,请求路径为 "/logout",即完整路径为 "/users/logout"。
|
|
|
|
|
* @param request HttpServletRequest对象,用于获取当前请求相关的信息,重点是操作其对应的会话对象来实现会话失效操作。
|
|
|
|
|
* @return R对象,封装了操作结果及相关提示信息,这里返回包含"退出成功"提示内容的成功信息给前端,表示用户已成功退出登录。
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
@GetMapping(value = "logout")
|
|
|
|
|
public R logout(HttpServletRequest request) {
|
|
|
|
|
// 调用HttpServletRequest对象的invalidate方法使当前会话失效,即清除会话中存储的用户登录凭证、用户相关属性等信息,达到退出登录的效果。
|
|
|
|
|
request.getSession().invalidate();
|
|
|
|
|
return R.ok("退出成功");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 密码重置
|
|
|
|
|
*/
|
|
|
|
|
@IgnoreAuth
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 密码重置
|
|
|
|
|
* 用于处理用户忘记密码后重置密码的业务逻辑,根据传入的用户名查找对应的用户,若用户存在则将其密码重置为固定值“123456”,并返回相应提示信息。
|
|
|
|
|
* 该方法使用了 @IgnoreAuth 注解,意味着此接口可能不需要进行权限认证即可访问(具体取决于该注解的实际定义和功能),通过 @RequestMapping 注解指定其处理的请求路径为 "/resetPass",完整路径为 "/users/resetPass"(结合类上的@RequestMapping("users") 注解)。
|
|
|
|
|
* @param username 用户名,从前端请求中传入,用于查找对应的用户,以便后续重置密码操作。
|
|
|
|
|
* @param request HttpServletRequest对象,用于获取当前请求相关的信息,不过在当前方法中未体现更多复杂使用情况。
|
|
|
|
|
* @return R对象,封装了操作结果及相关信息,若用户不存在则返回账号不存在的错误信息,若密码重置成功则返回包含密码已重置提示信息的成功结果。
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
@IgnoreAuth
|
|
|
|
|
@RequestMapping(value = "/resetPass")
|
|
|
|
|
public R resetPass(String username, HttpServletRequest request){
|
|
|
|
|
UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
|
|
|
|
|
if(user==null) {
|
|
|
|
|
return R.error("账号不存在");
|
|
|
|
|
}
|
|
|
|
|
user.setPassword("123456");
|
|
|
|
|
usersService.update(user,null);
|
|
|
|
|
return R.ok("密码已重置为:123456");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 列表
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/page")
|
|
|
|
|
public R page(@RequestParam Map<String, Object> params,UsersEntity user){
|
|
|
|
|
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
|
|
|
|
|
PageUtils page = usersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
|
|
|
|
|
return R.ok().put("data", page);
|
|
|
|
|
}
|
|
|
|
|
public R resetPass(String username, HttpServletRequest request) {
|
|
|
|
|
// 通过用户服务层的selectOne方法,结合EntityWrapper构建的查询条件(查找用户名与传入的username相等的用户记录),从数据库中查询对应的用户实体信息。
|
|
|
|
|
UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
|
|
|
|
|
// 如果查询到的用户为null,即用户名对应的用户不存在,返回账号不存在的错误信息给前端。
|
|
|
|
|
if (user == null) {
|
|
|
|
|
return R.error("账号不存在");
|
|
|
|
|
}
|
|
|
|
|
// 如果用户存在,将用户的密码设置为固定值“123456”,实际应用中这样直接设置密码不太安全,可后续优化为更安全合理的密码重置逻辑,比如通过发送验证码验证等方式。
|
|
|
|
|
user.setPassword("123456");
|
|
|
|
|
// 调用用户服务层的update方法,传入更新后的user对象以及null(可能表示不需要其他额外的更新条件,具体取决于update方法的参数定义),将用户的密码更新到数据库中。
|
|
|
|
|
usersService.update(user, null);
|
|
|
|
|
// 返回操作成功的结果信息,并附带密码已重置为“123456”的提示内容,告知前端密码重置操作已完成。
|
|
|
|
|
return R.ok("密码已重置为:123456");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 列表
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/list")
|
|
|
|
|
public R list( UsersEntity user){
|
|
|
|
|
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
|
|
|
|
|
ew.allEq(MPUtil.allEQMapPre( user, "user"));
|
|
|
|
|
return R.ok().put("data", usersService.selectListView(ew));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 信息
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/info/{id}")
|
|
|
|
|
public R info(@PathVariable("id") String id){
|
|
|
|
|
UsersEntity user = usersService.selectById(id);
|
|
|
|
|
return R.ok().put("data", user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取用户的session用户信息
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/session")
|
|
|
|
|
public R getCurrUser(HttpServletRequest request){
|
|
|
|
|
Integer id = (Integer)request.getSession().getAttribute("userId");
|
|
|
|
|
UsersEntity user = usersService.selectById(id);
|
|
|
|
|
return R.ok().put("data", user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保存
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/save")
|
|
|
|
|
public R save(@RequestBody UsersEntity user){
|
|
|
|
|
// ValidatorUtils.validateEntity(user);
|
|
|
|
|
if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
|
|
|
|
|
return R.error("用户已存在");
|
|
|
|
|
}
|
|
|
|
|
user.setPassword("123456");
|
|
|
|
|
usersService.insert(user);
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 修改
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/update")
|
|
|
|
|
public R update(@RequestBody UsersEntity user){
|
|
|
|
|
// ValidatorUtils.validateEntity(user);
|
|
|
|
|
usersService.updateById(user);//全部更新
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/delete")
|
|
|
|
|
public R delete(@RequestBody Long[] ids){
|
|
|
|
|
usersService.deleteBatchIds(Arrays.asList(ids));
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 列表(分页查询)
|
|
|
|
|
* 用于获取用户列表数据,并进行分页以及根据传入的用户对象构建查询条件等相关处理后返回给前端,返回结果包含分页相关信息以及符合条件的用户数据列表。
|
|
|
|
|
* 通过 @RequestMapping 注解指定该方法处理的请求路径为 "/page",完整路径为 "/users/page"。
|
|
|
|
|
* @param params 包含查询参数的Map,例如分页参数(如每页条数、当前页码等)、筛选条件等,通过请求参数传入,用于构建数据库查询条件以及分页相关设置。
|
|
|
|
|
* @param user 包含用户相关信息的UsersEntity对象,可能用于进一步构建查询条件,比如根据用户对象中的某些属性来筛选特定用户数据等,具体取决于业务逻辑和相关工具类(如MPUtil)的使用方式。
|
|
|
|
|
* @return R对象,封装了操作结果及相关数据,成功时包含分页后的用户数据列表信息(通过PageUtils对象承载)。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/page")
|
|
|
|
|
public R page(@RequestParam Map<String, Object> params, UsersEntity user) {
|
|
|
|
|
// 创建一个EntityWrapper对象,用于构建数据库查询条件,它可以方便地拼接各种查询条件语句,例如等于、大于、小于等条件,初始时为空,后续会根据业务逻辑添加相应条件。
|
|
|
|
|
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
|
|
|
|
|
// 调用用户服务层的queryPage方法进行分页查询,传入params参数用于分页相关设置以及通过MPUtil相关工具方法构建的查询条件。
|
|
|
|
|
// MPUtil.sort方法可能用于对查询结果进行排序设置,MPUtil.between方法可能用于构建范围查询条件,MPUtil.allLike方法可能用于构建模糊查询条件等,具体功能取决于MPUtil工具类的实现。
|
|
|
|
|
PageUtils page = usersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
|
|
|
|
|
return R.ok().put("data", page);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 列表(另一种查询方式)
|
|
|
|
|
* 根据传入的用户对象构建查询条件,从数据库中查询符合条件的用户数据列表并返回给前端,返回结果包含查询到的用户数据列表信息。
|
|
|
|
|
* 通过 @RequestMapping 注解指定该方法处理的请求路径为 "/list",完整路径为 "/users/list"。
|
|
|
|
|
* @param user 包含用户相关信息的UsersEntity对象,用于构建查询条件,通过MPUtil工具类的allEq方法将用户对象中的属性转换为相等查询条件,以便从数据库中筛选出符合条件的用户数据。
|
|
|
|
|
* @return R对象,封装了操作结果及相关数据,成功时包含查询到的用户数据列表(通过调用usersService.selectListView方法查询得到)。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/list")
|
|
|
|
|
public R list(UsersEntity user) {
|
|
|
|
|
// 创建一个EntityWrapper对象,用于构建数据库查询条件,方便后续添加具体的查询条件语句。
|
|
|
|
|
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
|
|
|
|
|
// 使用MPUtil工具类的allEq方法,将用户对象中的属性按照指定前缀(这里是"user")转换为相等查询条件,添加到EntityWrapper对象中,用于构建查询符合该用户对象属性值的所有用户记录的条件语句。
|
|
|
|
|
ew.allEq(MPUtil.allEQMapPre(user, "user"));
|
|
|
|
|
return R.ok().put("data", usersService.selectListView(ew));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 信息
|
|
|
|
|
* 根据传入的用户ID,从数据库中查询对应的用户详细信息并返回给前端,若查询到则将用户信息封装在R对象中返回,若未查询到则返回相应错误信息(当前代码未做错误处理,实际可能需要完善)。
|
|
|
|
|
* 通过 @RequestMapping 注解指定该方法处理的请求路径为 "/info/{id}",完整路径为 "/users/info/{id}",其中{id}是路径变量,用于接收要查询信息的用户的唯一标识(通常是数据库中的主键ID)。
|
|
|
|
|
* @param id 用户的唯一标识(通常是数据库中的主键ID),通过路径变量传入,用于指定要查询详细信息的用户。
|
|
|
|
|
* @return R对象,封装了操作结果及相关数据,成功时包含查询到的对应的用户详细信息(以UsersEntity对象形式返回)。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/info/{id}")
|
|
|
|
|
public R info(@PathVariable("id") String id) {
|
|
|
|
|
// 通过用户服务层的selectById方法,根据传入的用户ID从数据库中查询对应的用户实体信息。
|
|
|
|
|
UsersEntity user = usersService.selectById(id);
|
|
|
|
|
return R.ok().put("data", user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取用户的session用户信息
|
|
|
|
|
* 从当前请求的会话(Session)中获取用户ID,然后根据该ID查询对应的用户实体信息并返回给前端,若获取到用户ID则进行查询并返回用户信息,若未获取到用户ID(比如会话中不存在该属性等情况)则可能返回相应错误信息(当前代码未做完善处理)。
|
|
|
|
|
* 通过 @RequestMapping 注解指定该方法处理的请求路径为 "/session",完整路径为 "/users/session"。
|
|
|
|
|
* @param request HttpServletRequest对象,用于获取当前请求相关的信息,重点是从中获取会话中的用户ID属性值,用于后续查询用户信息操作。
|
|
|
|
|
* @return R对象,封装了操作结果及相关数据,成功时包含查询到的对应的用户详细信息(以UsersEntity对象形式返回)。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/session")
|
|
|
|
|
public R getCurrUser(HttpServletRequest request) {
|
|
|
|
|
// 从当前请求的会话中获取名为“userId”的属性值,并转换为整数类型,该值作为用户的唯一标识,用于后续查询用户信息。
|
|
|
|
|
Integer id = (Integer) request.getSession().getAttribute("userId");
|
|
|
|
|
// 通过用户服务层的selectById方法,根据获取到的用户ID从数据库中查询对应的用户实体信息。
|
|
|
|
|
UsersEntity user = usersService.selectById(id);
|
|
|
|
|
return R.ok().put("data", user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保存
|
|
|
|
|
* 处理新增用户信息的保存操作,先检查用户名是否已被使用,若未被使用则将新用户信息插入到数据库中,同时设置默认密码为“123456”(实际应用中密码设置可优化),并返回相应操作结果给前端。
|
|
|
|
|
* 通过 @PostMapping 注解指定该方法处理的是POST请求,请求路径为 "/save",完整路径为 "/users/save",表示用于接收前端提交的新增用户信息并进行保存操作。
|
|
|
|
|
* @param user 包含用户信息的UsersEntity对象,通过请求体传入,通常是前端提交的新增用户表单数据等内容,包含了用户名、密码等各种用户相关信息。
|
|
|
|
|
* @return R对象,封装了操作结果,若用户名已存在则返回用户已存在的错误信息,若保存成功则返回成功信息。
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/save")
|
|
|
|
|
public R save(@RequestBody UsersEntity user) {
|
|
|
|
|
// 以下这行代码被注释掉了,可能原本是用于对传入的用户实体进行数据合法性验证的逻辑,比如验证用户名、密码是否符合格式要求等,目前未生效。
|
|
|
|
|
// ValidatorUtils.validateEntity(user);
|
|
|
|
|
// 通过用户服务层的selectOne方法,结合EntityWrapper构建的查询条件(查找用户名与传入的user.getUsername()相等的用户记录),从数据库中查询是否已存在相同用户名的用户,若存在则返回对应的UsersEntity对象,若不存在则返回null。
|
|
|
|
|
if (usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername()))!= null) {
|
|
|
|
|
return R.error("用户已存在");
|
|
|
|
|
}
|
|
|
|
|
// 设置新用户的密码为固定值“123456”,实际应用中这样直接设置密码不太安全,可后续优化为更安全合理的密码设置方式,比如进行密码加密等操作。
|
|
|
|
|
user.setPassword("123456");
|
|
|
|
|
// 调用用户服务层的insert方法将包含新用户信息的user对象插入到数据库中,完成用户新增保存操作。
|
|
|
|
|
usersService.insert(user);
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 修改
|
|
|
|
|
* 处理用户信息修改的业务逻辑,接收包含更新后用户信息的UsersEntity对象,将其全部更新到数据库中对应的用户记录(具体更新方式取决于updateById方法的实现,可能是根据ID进行匹配更新等),并返回操作成功的结果给前端。
|
|
|
|
|
* 通过 @RequestMapping 注解指定该方法处理的请求路径为 "/update",完整路径为 "/users/update",表示用于接收前端提交的更新后的用户信息并进行数据库更新操作。
|
|
|
|
|
* @param user 包含更新后用户信息的UsersEntity对象,通过请求体传入,通常是前端提交的修改后的用户表单数据等内容,包含了需要更新的各种用户相关信息。
|
|
|
|
|
* @return R对象,封装了操作结果,成功则返回操作成功的信息,表示用户信息已更新到数据库中。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/update")
|
|
|
|
|
public R update(@RequestBody UsersEntity user) {
|
|
|
|
|
// 以下这行代码被注释掉了,可能原本是用于对传入的用户实体进行数据合法性验证的逻辑,比如验证更新后的用户信息是否符合格式要求等,目前未生效。
|
|
|
|
|
// ValidatorUtils.validateEntity(user);
|
|
|
|
|
// 调用用户服务层的updateById方法,根据传入的user对象中的ID(通常是数据库中的主键ID)找到对应的用户记录,并将user对象中的所有属性值更新到数据库中对应的字段上,完成用户信息更新操作。
|
|
|
|
|
usersService.updateById(user);
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除
|
|
|
|
|
* 处理批量删除用户的业务逻辑,接收包含要删除的用户ID的数组,调用用户服务层的方法批量删除数据库中对应的用户记录,并返回操作成功的结果给前端。
|
|
|
|
|
* 通过 @RequestMapping 注解指定该方法处理的请求路径为 "/delete",完整路径为 "/users/delete",表示用于接收前端提交的要删除的用户ID列表并进行批量删除操作。
|
|
|
|
|
* @param ids 包含要删除的用户ID的Long类型数组,通过请求体传入,用于指定要删除的多个用户记录在数据库中的唯一标识。
|
|
|
|
|
* @return R对象,封装了操作结果,成功则返回操作成功的信息,表示批量删除操作已完成。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("/delete")
|
|
|
|
|
public R delete(@RequestBody Long[] ids) {
|
|
|
|
|
// 调用用户服务层的deleteBatchIds方法,传入要删除的用户ID列表(通过Arrays.asList方法将数组转换为List集合形式,具体取决于deleteBatchIds方法的参数要求),执行批量删除数据库中对应用户记录的操作。
|
|
|
|
|
usersService.deleteBatchIds(Arrays.asList(ids));
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|