diff --git a/bookshelfplus.sql b/bookshelfplus.sql index 14381a3..fbde483 100644 --- a/bookshelfplus.sql +++ b/bookshelfplus.sql @@ -11,7 +11,7 @@ Target Server Version : 50726 File Encoding : 65001 - Date: 03/04/2022 23:36:35 + Date: 04/04/2022 14:26:48 */ SET NAMES utf8mb4; @@ -214,6 +214,7 @@ CREATE TABLE `user_info` ( `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `group` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `weixin_third_party_auth_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `qq_third_party_auth_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', @@ -223,7 +224,7 @@ CREATE TABLE `user_info` ( -- ---------------------------- -- Records of user_info -- ---------------------------- -INSERT INTO `user_info` VALUES (1, 'admin', '7c4a8d09ca3762af61e59520943dc26494f8941b', '小小墨', 'ADMIN', '/密码/123456/', '', '', ''); -INSERT INTO `user_info` VALUES (2, 'xiaomo', '7c4a8d09ca3762af61e59520943dc26494f8941b', '小小墨', 'USER', '/密码/123456/', '', '', ''); +INSERT INTO `user_info` VALUES (1, 'admin', '7c4a8d09ca3762af61e59520943dc26494f8941b', '小小墨', 'ADMIN', '/密码/123456/', '', '', '', ''); +INSERT INTO `user_info` VALUES (2, 'xiaomo', '7c4a8d09ca3762af61e59520943dc26494f8941b', '小小墨', 'USER', '/密码/123456/', '', '', '', ''); SET FOREIGN_KEY_CHECKS = 1; diff --git a/bookshelfplus/docs/asciidoc/generated/all.adoc b/bookshelfplus/docs/asciidoc/generated/all.adoc index 15640e9..1113a5d 100644 --- a/bookshelfplus/docs/asciidoc/generated/all.adoc +++ b/bookshelfplus/docs/asciidoc/generated/all.adoc @@ -569,6 +569,79 @@ __可选__|string ---- +[[_registerusingpost]] +==== 用户注册 +.... +POST /api/user/register +.... + + +===== 说明 +传入用户名,以及密码明文,后台计算密码SHA1值,进行注册 + + +===== 参数 + +[options="header", cols=".^2a,.^3a,.^4a"] +|=== +|类型|名称|类型 +|**FormData**|**password** + +__可选__|string +|**FormData**|**username** + +__可选__|string +|=== + + +===== 响应 + +[options="header", cols=".^2a,.^14a,.^4a"] +|=== +|HTTP代码|说明|类型 +|**200**|OK|<<_commonreturntype,CommonReturnType>> +|**201**|Created|无内容 +|**401**|Unauthorized|无内容 +|**403**|Forbidden|无内容 +|**404**|Not Found|无内容 +|=== + + +===== 消耗 + +* `application/x-www-form-urlencoded` + + +===== 生成 + +* `\*/*` + + +===== HTTP请求示例 + +====== 请求 path +---- +/api/user/register +---- + + +====== 请求 formData +[source,json] +---- +"string" +---- + + +===== HTTP响应示例 + +====== 响应 200 +[source,json] +---- +{ + "data" : "object", + "status" : "string" +} +---- + + [[_4b02b6687df4f15fab50b8d31c1fc123]] === 第三方登录 Third Party Controller diff --git a/bookshelfplus/docs/asciidoc/html/all.html b/bookshelfplus/docs/asciidoc/html/all.html index 7bd2c71..2f446c1 100644 --- a/bookshelfplus/docs/asciidoc/html/all.html +++ b/bookshelfplus/docs/asciidoc/html/all.html @@ -2055,6 +2055,190 @@ table.CodeRay td.code>pre{padding:0} +
+

2.3.4. 用户注册

+
+
+
POST /api/user/register
+
+
+
+
说明
+
+

传入用户名,以及密码明文,后台计算密码SHA1值,进行注册

+
+
+
+
参数
+ +++++ + + + + + + + + + + + + + + + + + + + +
类型名称类型
+

FormData

+
+

password
+可选

+
+

string

+
+

FormData

+
+

username
+可选

+
+

string

+
+
+
+
响应
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HTTP代码说明类型
+

200

+
+

OK

+
+

201

+
+

Created

+
+

无内容

+
+

401

+
+

Unauthorized

+
+

无内容

+
+

403

+
+

Forbidden

+
+

无内容

+
+

404

+
+

Not Found

+
+

无内容

+
+
+
+
消耗
+
+
    +
  • +

    application/x-www-form-urlencoded

    +
  • +
+
+
+
+
生成
+
+
    +
  • +

    */*

    +
  • +
+
+
+
+
HTTP请求示例
+
+
请求 path
+
+
+
/api/user/register
+
+
+
+
+
请求 formData
+
+
+
"string"
+
+
+
+
+
+
HTTP响应示例
+
+
响应 200
+
+
+
{
+  "data" : "object",
+  "status" : "string"
+}
+
+
+
+
+

2.4. 第三方登录

@@ -2069,13 +2253,13 @@ table.CodeRay td.code>pre{padding:0}
-
说明
+
说明

传入 code 值,进行登录

-
参数
+
参数
@@ -2189,154 +2373,6 @@ table.CodeRay td.code>pre{padding:0}
-
响应
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HTTP代码说明类型
-

200

-
-

OK

-
-

401

-
-

Unauthorized

-
-

无内容

-
-

403

-
-

Forbidden

-
-

无内容

-
-

404

-
-

Not Found

-
-

无内容

-
-
-
-
生成
-
- -
-
-
-
HTTP请求示例
-
-
请求 path
-
-
-
/api/third-party/callback/string
-
-
-
-
-
-
HTTP响应示例
-
-
响应 200
-
-
-
{
-  "data" : "object",
-  "status" : "string"
-}
-
-
-
-
- -
-

2.4.2. 第三方用户登录跳转地址

-
-
-
GET /api/third-party/login
-
-
-
-
说明
-
-

传入需要登录的第三方平台(大小写均可),返回跳转url

-
-
-
-
参数
- ------ - - - - - - - - - - - - - - - - -
类型名称说明类型
-

Query

-
-

platform
-必填

-
-

platform

-
-

string

-
-
-
响应
@@ -2415,7 +2451,7 @@ table.CodeRay td.code>pre{padding:0}
请求 path
-
/api/third-party/login?platform=string
+
/api/third-party/callback/string
@@ -2435,6 +2471,154 @@ table.CodeRay td.code>pre{padding:0} +
+

2.4.2. 第三方用户登录跳转地址

+
+
+
GET /api/third-party/login
+
+
+
+
说明
+
+

传入需要登录的第三方平台(大小写均可),返回跳转url

+
+
+
+
参数
+
++++++ + + + + + + + + + + + + + + + + +
类型名称说明类型
+

Query

+
+

platform
+必填

+
+

platform

+
+

string

+
+
+
+
响应
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HTTP代码说明类型
+

200

+
+

OK

+
+

401

+
+

Unauthorized

+
+

无内容

+
+

403

+
+

Forbidden

+
+

无内容

+
+

404

+
+

Not Found

+
+

无内容

+
+
+
+
生成
+
+
    +
  • +

    */*

    +
  • +
+
+
+
+
HTTP请求示例
+
+
请求 path
+
+
+
/api/third-party/login?platform=string
+
+
+
+
+
+
HTTP响应示例
+
+
响应 200
+
+
+
{
+  "data" : "object",
+  "status" : "string"
+}
+
+
+
+
+

2.5. 系统调试接口

@@ -2449,13 +2633,13 @@ table.CodeRay td.code>pre{padding:0}
-
说明
+
说明

仅限管理员登录状态下可获取

-
参数
+
参数
@@ -2486,7 +2670,7 @@ table.CodeRay td.code>pre{padding:0}
-
响应
+
响应
@@ -2560,7 +2744,7 @@ table.CodeRay td.code>pre{padding:0}
-
消耗
+
消耗
-
生成
+
生成
-
HTTP请求示例
+
HTTP请求示例
-
请求 path
+
请求 path
/api/debug/status
@@ -2590,7 +2774,7 @@ table.CodeRay td.code>pre{padding:0}
-
请求 formData
+
请求 formData
"string"
@@ -2599,9 +2783,9 @@ table.CodeRay td.code>pre{padding:0}
-
HTTP响应示例
+
HTTP响应示例
-
响应 200
+
响应 200
{
@@ -2627,13 +2811,13 @@ table.CodeRay td.code>pre{padding:0}
 
-
说明
+
说明

获取服务器当前系统负载。SystemLoadAverage返回-1时代表不支持。

-
响应
+
响应
@@ -2696,7 +2880,7 @@ table.CodeRay td.code>pre{padding:0}
-
生成
+
生成
  • @@ -2706,9 +2890,9 @@ table.CodeRay td.code>pre{padding:0}
-
HTTP请求示例
+
HTTP请求示例
-
请求 path
+
请求 path
/api/status/get
@@ -2717,9 +2901,9 @@ table.CodeRay td.code>pre{padding:0}
-
HTTP响应示例
+
HTTP响应示例
-
响应 200
+
响应 200
{
@@ -2785,7 +2969,7 @@ table.CodeRay td.code>pre{padding:0}
 
diff --git a/bookshelfplus/src/main/java/plus/bookshelf/Common/Error/BusinessErrorCode.java b/bookshelfplus/src/main/java/plus/bookshelf/Common/Error/BusinessErrorCode.java index 686e505..6f4c600 100644 --- a/bookshelfplus/src/main/java/plus/bookshelf/Common/Error/BusinessErrorCode.java +++ b/bookshelfplus/src/main/java/plus/bookshelf/Common/Error/BusinessErrorCode.java @@ -10,6 +10,7 @@ public enum BusinessErrorCode implements CommonError { USER_LOGIN_FAILED(20002, "用户手机号或密码不正确"), USER_NOT_LOGIN(20003, "用户还未登录"), USER_TOKEN_EXPIRED(20004, "用户令牌过期"), + USER_ALREADY_EXIST(20005, "用户已存在"), // 30000开头为权限相关错误定义 OPERATION_NOT_ALLOWED(30001, "用户没有此操作的权限"); diff --git a/bookshelfplus/src/main/java/plus/bookshelf/Controller/Controller/BaseController.java b/bookshelfplus/src/main/java/plus/bookshelf/Controller/Controller/BaseController.java index cbdb3d4..d37c8fc 100644 --- a/bookshelfplus/src/main/java/plus/bookshelf/Controller/Controller/BaseController.java +++ b/bookshelfplus/src/main/java/plus/bookshelf/Controller/Controller/BaseController.java @@ -3,11 +3,20 @@ package plus.bookshelf.Controller.Controller; import com.aventrix.jnanoid.jnanoid.NanoIdUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import plus.bookshelf.Common.Error.BusinessErrorCode; +import plus.bookshelf.Common.Error.BusinessException; +import plus.bookshelf.Common.Response.CommonReturnType; +import plus.bookshelf.Common.Response.CommonReturnTypeStatus; import plus.bookshelf.Common.SessionManager.RedisSessionManager; import plus.bookshelf.Common.SessionManager.SessionManager; import plus.bookshelf.Service.Model.UserModel; import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; public class BaseController { @@ -66,23 +75,23 @@ public class BaseController { // return; } - // // 定义ExceptionHandler解决未被Controller层吸收的Exception - // @ExceptionHandler(Exception.class) - // @ResponseStatus(HttpStatus.OK) - // @ResponseBody - // public Object handlerException(HttpServletRequest request, Exception ex) { - // HashMap responseData = new HashMap<>(); - // - // if (ex instanceof BusinessException) { - // BusinessException businessException = (BusinessException) ex; - // responseData.put("errCode", businessException.getErrCode()); - // responseData.put("errMsg", businessException.getErrMsg()); - // } else { - // // 生产环境输出格式化信息 - // responseData.put("errCode", BusinessErrorCode.UNKNOWN_ERROR.getErrCode()); - // responseData.put("errMsg", BusinessErrorCode.UNKNOWN_ERROR.getErrMsg()); - // } - // - // return CommonReturnType.create(responseData, CommonReturnTypeStatus.FAILED); - // } + // 定义ExceptionHandler解决未被Controller层吸收的Exception + @ExceptionHandler(Exception.class) + @ResponseStatus(HttpStatus.OK) + @ResponseBody + public Object handlerException(HttpServletRequest request, Exception ex) { + HashMap responseData = new HashMap<>(); + + if (ex instanceof BusinessException) { + BusinessException businessException = (BusinessException) ex; + responseData.put("errCode", businessException.getErrCode()); + responseData.put("errMsg", businessException.getErrMsg()); + } else { + // 生产环境输出格式化信息 + responseData.put("errCode", BusinessErrorCode.UNKNOWN_ERROR.getErrCode()); + responseData.put("errMsg", BusinessErrorCode.UNKNOWN_ERROR.getErrMsg()); + } + + return CommonReturnType.create(responseData, CommonReturnTypeStatus.FAILED); + } } diff --git a/bookshelfplus/src/main/java/plus/bookshelf/Controller/Controller/UserController.java b/bookshelfplus/src/main/java/plus/bookshelf/Controller/Controller/UserController.java index 39d5aad..eec8165 100644 --- a/bookshelfplus/src/main/java/plus/bookshelf/Controller/Controller/UserController.java +++ b/bookshelfplus/src/main/java/plus/bookshelf/Controller/Controller/UserController.java @@ -46,20 +46,22 @@ public class UserController extends BaseController { return CommonReturnType.create(userVO); } - // @ApiOperation(value = "用户注册", notes = "传入用户名,以及密码明文,后台计算密码SHA1值,进行注册") - // @RequestMapping(value = "register", method = {RequestMethod.POST}, consumes = {CONTENT_TYPE_FORMED}) - // @ResponseBody - // public CommonReturnType register(@RequestParam(value = "username") String username, - // @RequestParam(value = "password") String password) { - // if (username == null || password == null) { - // return null; - // } - // String encryptPwd = DigestUtils.sha1Hex(password); - // - // UserModel userModel = userService.userRegister(username, encryptPwd); - // UserVO userVO = convertFromService(userModel); - // return CommonReturnType.create(userVO); - // } + @ApiOperation(value = "用户注册", notes = "传入用户名,以及密码明文,后台计算密码SHA1值,进行注册") + @RequestMapping(value = "register", method = {RequestMethod.POST}, consumes = {CONTENT_TYPE_FORMED}) + @ResponseBody + public CommonReturnType register(@RequestParam(value = "username") String username, + @RequestParam(value = "password") String password) throws BusinessException { + if (username == null || password == null) { + return null; + } + String encryptPwd = DigestUtils.sha1Hex(password); + + if(!userService.userRegister(username, encryptPwd)){ + throw new BusinessException(BusinessErrorCode.UNKNOWN_ERROR, "未知错误,注册失败"); + } + // 注册成功后,进行登录 + return login(username, password); + } @ApiOperation(value = "用户登出", notes = "用户退出登录") // @ApiImplicitParams({ diff --git a/bookshelfplus/src/main/java/plus/bookshelf/Dao/DO/UserDO.java b/bookshelfplus/src/main/java/plus/bookshelf/Dao/DO/UserDO.java index 38a84b5..22aba5a 100644 --- a/bookshelfplus/src/main/java/plus/bookshelf/Dao/DO/UserDO.java +++ b/bookshelfplus/src/main/java/plus/bookshelf/Dao/DO/UserDO.java @@ -55,6 +55,15 @@ public class UserDO { */ private String avatar; + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column user_info.email + * + * @mbg.generated + */ + private String email; + /** * * This field was generated by MyBatis Generator. @@ -226,6 +235,30 @@ public class UserDO { this.avatar = avatar == null ? null : avatar.trim(); } + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column user_info.email + * + * @return the value of user_info.email + * + * @mbg.generated + */ + public String getEmail() { + return email; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column user_info.email + * + * @param email the value for user_info.email + * + * @mbg.generated + */ + public void setEmail(String email) { + this.email = email == null ? null : email.trim(); + } + /** * This method was generated by MyBatis Generator. * This method returns the value of the database column user_info.phone diff --git a/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/CategoryDOMapper.java b/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/CategoryDOMapper.java index 0104bfa..7fe1432 100644 --- a/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/CategoryDOMapper.java +++ b/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/CategoryDOMapper.java @@ -3,7 +3,7 @@ package plus.bookshelf.Dao.Mapper; import org.springframework.stereotype.Repository; import plus.bookshelf.Dao.DO.CategoryDO; -@Repository +@Repository // 添加这个注解,Autowired的时候idea就不会报错了 public interface CategoryDOMapper { /** * This method was generated by MyBatis Generator. diff --git a/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/FileDOMapper.java b/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/FileDOMapper.java index 023af53..ae0cb50 100644 --- a/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/FileDOMapper.java +++ b/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/FileDOMapper.java @@ -3,7 +3,7 @@ package plus.bookshelf.Dao.Mapper; import org.springframework.stereotype.Repository; import plus.bookshelf.Dao.DO.FileDO; -@Repository +@Repository // 添加这个注解,Autowired的时候idea就不会报错了 public interface FileDOMapper { /** * This method was generated by MyBatis Generator. diff --git a/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/FileObjectDOMapper.java b/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/FileObjectDOMapper.java index 959de0b..0b51f44 100644 --- a/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/FileObjectDOMapper.java +++ b/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/FileObjectDOMapper.java @@ -3,7 +3,7 @@ package plus.bookshelf.Dao.Mapper; import org.springframework.stereotype.Repository; import plus.bookshelf.Dao.DO.FileObjectDO; -@Repository +@Repository // 添加这个注解,Autowired的时候idea就不会报错了 public interface FileObjectDOMapper { /** * This method was generated by MyBatis Generator. diff --git a/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/ThirdPartyUserAuthDOMapper.java b/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/ThirdPartyUserAuthDOMapper.java index b15ade5..6427faf 100644 --- a/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/ThirdPartyUserAuthDOMapper.java +++ b/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/ThirdPartyUserAuthDOMapper.java @@ -1,7 +1,9 @@ package plus.bookshelf.Dao.Mapper; +import org.springframework.stereotype.Repository; import plus.bookshelf.Dao.DO.ThirdPartyUserAuthDO; +@Repository // 添加这个注解,Autowired的时候idea就不会报错了 public interface ThirdPartyUserAuthDOMapper { /** * This method was generated by MyBatis Generator. diff --git a/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/ThirdPartyUserDOMapper.java b/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/ThirdPartyUserDOMapper.java index 0708f4f..e62235f 100644 --- a/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/ThirdPartyUserDOMapper.java +++ b/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/ThirdPartyUserDOMapper.java @@ -1,7 +1,9 @@ package plus.bookshelf.Dao.Mapper; +import org.springframework.stereotype.Repository; import plus.bookshelf.Dao.DO.ThirdPartyUserDO; +@Repository // 添加这个注解,Autowired的时候idea就不会报错了 public interface ThirdPartyUserDOMapper { /** * This method was generated by MyBatis Generator. diff --git a/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/UserDOMapper.java b/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/UserDOMapper.java index edd8871..04c291e 100644 --- a/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/UserDOMapper.java +++ b/bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/UserDOMapper.java @@ -3,7 +3,7 @@ package plus.bookshelf.Dao.Mapper; import org.springframework.stereotype.Repository; import plus.bookshelf.Dao.DO.UserDO; -@Repository +@Repository // 添加这个注解,Autowired的时候idea就不会报错了 public interface UserDOMapper { /** * This method was generated by MyBatis Generator. @@ -54,4 +54,12 @@ public interface UserDOMapper { int updateByPrimaryKey(UserDO record); UserDO selectByUsernameAndEncryptpwd(String username, String encryptPwd); + + /** + * 获取是否存在该用户,用于注册时判断 + * 若用户存在则返回大于0的整数,否则返回0 + * @param username + * @return + */ + Integer selectCountByUsername(String username); } \ No newline at end of file diff --git a/bookshelfplus/src/main/java/plus/bookshelf/Service/Impl/UserServiceImpl.java b/bookshelfplus/src/main/java/plus/bookshelf/Service/Impl/UserServiceImpl.java index 13d0927..e956d08 100644 --- a/bookshelfplus/src/main/java/plus/bookshelf/Service/Impl/UserServiceImpl.java +++ b/bookshelfplus/src/main/java/plus/bookshelf/Service/Impl/UserServiceImpl.java @@ -3,6 +3,7 @@ package plus.bookshelf.Service.Impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import plus.bookshelf.Common.Error.BusinessErrorCode; import plus.bookshelf.Common.Error.BusinessException; import plus.bookshelf.Common.SessionManager.RedisSessionManager; @@ -55,6 +56,26 @@ public class UserServiceImpl implements UserService { return userModel; } + @Override + @Transactional + public Boolean userRegister(String username, String encryptPwd) throws BusinessException { + if (username == null || "".equals(username)) { + throw new BusinessException(BusinessErrorCode.PARAMETER_VALIDATION_ERROR, "用户名不能为空"); + } else if (encryptPwd == null || "".equals(encryptPwd)) { + throw new BusinessException(BusinessErrorCode.PARAMETER_VALIDATION_ERROR, "密码不能为空"); + } + Integer count = userDOMapper.selectCountByUsername(username); + if (count > 0) { + throw new BusinessException(BusinessErrorCode.USER_ALREADY_EXIST, "用户已存在"); + } + UserDO userDO = new UserDO(); + userDO.setUsername(username); + userDO.setEncriptPwd(encryptPwd); + userDO.setGroup("USER"); + userDO.setNickname("该用户尚未设置昵称"); + return userDOMapper.insertSelective(userDO) > 0; + } + private UserModel convertFromDataObject(UserDO userDO) { if (userDO == null) { return null; diff --git a/bookshelfplus/src/main/java/plus/bookshelf/Service/Service/UserService.java b/bookshelfplus/src/main/java/plus/bookshelf/Service/Service/UserService.java index ecba094..c8c4e78 100644 --- a/bookshelfplus/src/main/java/plus/bookshelf/Service/Service/UserService.java +++ b/bookshelfplus/src/main/java/plus/bookshelf/Service/Service/UserService.java @@ -8,8 +8,8 @@ public interface UserService { /** * 用户登录 * - * @param username - * @param encryptPwd + * @param username 用户名 + * @param encryptPwd 加密后密码 */ UserModel userLogin(String username, String encryptPwd); @@ -17,7 +17,7 @@ public interface UserService { * 通过用户Id获取用户 * * @param id 用户Id - * @return + * @return UserModel */ UserModel getUserById(Integer id); @@ -25,8 +25,17 @@ public interface UserService { * 检查用户令牌是否有效,并返回令牌对应的用户 UserModel * (令牌无效直接抛出异常) * - * @param token - * @return + * @param token 用户令牌 + * @return UserModel */ UserModel getUserByToken(RedisTemplate redisTemplate, String token) throws BusinessException; + + /** + * 用户注册 + * + * @param username 用户名 + * @param encryptPwd 加密后密码 + * @return 注册成功返回true,否则返回false + */ + Boolean userRegister(String username, String encryptPwd) throws BusinessException; } diff --git a/bookshelfplus/src/main/resources/mapping/UserDOMapper.xml b/bookshelfplus/src/main/resources/mapping/UserDOMapper.xml index 54a08e3..03aed98 100644 --- a/bookshelfplus/src/main/resources/mapping/UserDOMapper.xml +++ b/bookshelfplus/src/main/resources/mapping/UserDOMapper.xml @@ -12,6 +12,7 @@ + @@ -21,7 +22,7 @@ WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> - id, username, encript_pwd, nickname, `group`, avatar, phone, weixin_third_party_auth_code, + id, username, encript_pwd, nickname, `group`, avatar, email, phone, weixin_third_party_auth_code, qq_third_party_auth_code