锋迷商城-用户管理
1. 实体类
@Data @AllArgsConstructor @NoArgsConstructor @ApiModel(value = "User对象",description = "用户信息") public class User { @ApiModelProperty(value = "用户Id",dataType = "int") private Integer userId; @ApiModelProperty(value = "用户名",dataType = "String") private String username; @ApiModelProperty(value = "密码",dataType = "String") private String password; @ApiModelProperty(value = "用户昵称",dataType = "String") private String nickname; @ApiModelProperty(value = "用户真实姓名",dataType = "String") private String realname; @ApiModelProperty(value = "用户头像",dataType = "String") private String userImg; @ApiModelProperty(value = "手机号",dataType = "String") private String userMobile; @ApiModelProperty(value = "邮箱",dataType = "String") private String userEmail; @ApiModelProperty(value = "用户性别",dataType = "String") private String userSex; @ApiModelProperty(value = "用户生日",dataType = "Date") private Date userBirth; @ApiModelProperty(value = "注册时间",dataType = "Date") private Date userRegtime; @ApiModelProperty(value = "更新时间",dataType = "Date") private Date userModtime; }
2. 统一返回类
public class ResultVO<T> { /** * 响应状态码,成功:200;失败:500 */ private Integer code; /** * 响应消息 */ private String msg; /** * 附加数据 */ private T data; /** * 失败:状态码500,自定义错误消息 * * @param msg * @return */ public static ResultVO error(String msg) { return new ResultVO<>(500, msg); } /** * 失败:状态码500,自定义错误消息、附加数据 * * @param msg * @param data * @param <T> * @return */ public static <T> ResultVO error(String msg, T data) { return new ResultVO<>(500, msg, data); } /** * 失败:自定义状态码、错误消息 * * @param msg * @return */ public static ResultVO error(Integer code, String msg) { return new ResultVO<>(code, msg); } /** * 失败:自定义状态码、错误消息、附加数据 * * @param msg * @param data * @param <T> * @return */ public static <T> ResultVO error(Integer code, String msg, T data) { return new ResultVO<>(code, msg, data); } /** * 成功:状态码200,自定义成功消息 * * @param msg * @return */ public static ResultVO success(String msg) { return new ResultVO<>(200, msg); } /** * 成功:状态码200,自定义成功消息、附加数据 * * @param msg * @param data * @param <T> * @return */ public static <T> ResultVO success(String msg, T data) { return new ResultVO<>(200, msg, data); } /** * 成功:自定义状态码、成功消息 * * @param msg * @return */ public static ResultVO success(Integer code, String msg) { return new ResultVO<>(code, msg); } /** * 成功:自定义状态码、成功消息、附加数据 * * @param msg * @param data * @param <T> * @return */ public static <T> ResultVO success(Integer code, String msg, T data) { return new ResultVO<>(code, msg, data); } private ResultVO() { } private ResultVO(Integer code, String msg) { this.code = code; this.msg = msg; } private ResultVO(Integer code, String msg, T data) { this.code = code; this.msg = msg; this.data = data; } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public T getData() { return data; } public void setData(T data) { this.data = data; } @Override public String toString() { return "ResultVO{" + "code=" + code + ", msg='" + msg + '\'' + ", data=" + data + '}'; } }
3. DAO接口层
@Repository public interface UserDao { //用户注册 public int insertUser(User user); //根据用户名查询用户信息 public User queryUserByName(String name); }
4.Mapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.linlin.fmmall.dao.UserDao"> <resultMap id="userMap" type="com.linlin.fmmall.entity.User"> <id column="user_id" property="userId"/> <result column="username" property="username"/> <result column="password" property="password"/> <result column="nickname" property="nickname"/> <result column="realname" property="realname"/> <result column="user_img" property="userImg"/> <result column="user_mobile" property="userMobile"/> <result column="user_email" property="userEmail"/> <result column="user_sex" property="userSex"/> <result column="user_birth" property="userBirth"/> <result column="user_regtime" property="userRegtime"/> <result column="user_modtime" property="userModtime"/> </resultMap> <insert id="insertUser" useGeneratedKeys="true" keyProperty="userId"> insert into users(username,password,user_regtime,user_modtime,user_img) values (#{username},#{password},#{userRegtime},#{userModtime},#{userImg}) </insert> <select id="queryUserByName" resultMap="userMap"> select user_id, username, password, nickname, realname, user_img, user_mobile, user_email, user_sex, user_birth, user_regtime, user_modtime from users where username = #{name} </select> </mapper>
5.service层
public interface UserService { //用户注册 public ResultVO userRegist(String username,String password); //用户登录 public ResultVO checkLogin(String username,String password); }
6.Service实现类
@Service @Scope("singleton") public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Transactional public ResultVO userRegist(String username, String password) { synchronized (this) { //查询用户是否已存在 User user = userDao.queryUserByName(username); if (user == null) { user = new User(); user.setUsername(username); user.setPassword(password); user.setUserImg("img/default.png"); user.setUserRegtime(new Date()); user.setUserModtime(new Date()); int i = userDao.insertUser(user); if (i > 0) { return ResultVO.success("注册成功!"); } else { return ResultVO.error("注册失败!"); } } else { return ResultVO.error("该用户名已经被注册!"); } } } @Override public ResultVO checkLogin(String username, String password) { User user = userDao.queryUserByName(username); if (user == null){ return ResultVO.error("登录失败,用户名不存在!"); }else{ if (password.equals(user.getPassword())){ user.setPassword(null); return ResultVO.success("登录成功!",user); }else{ return ResultVO.error("登录失败,密码错误!"); } } } }
7.Api接口层
@RestController @RequestMapping("/user") @Api(value = "提供用户添加、修改、删除及查询等相关接⼝",tags = "01.用户管理") public class UserApi { @Resource private UserService userService; @ApiOperation("用户登录接口") @ApiImplicitParams({ @ApiImplicitParam(dataType = "String", name = "username", value = "登录用户账号", required = true), @ApiImplicitParam(dataType = "String", name = "password", value = "登录用户密码", required = true) }) @GetMapping("/login") public ResultVO login(String username, String password){ return userService.checkLogin(username,password); } @ApiOperation("用户注册接口") @ApiImplicitParams({ @ApiImplicitParam(dataType = "String", name = "username", value = "用户注册账号", required = true), @ApiImplicitParam(dataType = "String", name = "password", value = "用户注册密码", required = true) }) @PostMapping("/regist") public ResultVO regist(String username, String password){ return userService.userRegist(username,password); } }
分类:
哈士琪学JAVA
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端