skyfffire 2 місяців тому
батько
коміт
0326198a1d

+ 30 - 2
src/main/java/modules/user/UserController.java

@@ -31,12 +31,12 @@ public class UserController extends MyController {
         JSONObject requestBodyJson = MyController.getJsonModelByRequestAndType(getRequest(), JSONObject.class);
 
         // 从 JSON 对象中获取 mobile_number
-        String mobile_number = requestBodyJson.getString("mobile_number");
+        String mobileNumber = requestBodyJson.getString("mobile_number");
 
         // 走到这里时,EmptyInterceptor 已经保证了 mobile_number 不会是 StrKit.isBlank()
 
         // 1. 校验手机号是否被注册
-        if (service.isUserExists(mobile_number)) {
+        if (service.isUserExists(mobileNumber)) {
             renderJson(MyRet.fail("该手机号已被注册。"));
             return;
         }
@@ -145,4 +145,32 @@ public class UserController extends MyController {
         // 6. 调用服务层进行用户保存
         renderJson(service.saveUser(user));
     }
+
+    @EmptyInterface(keyArray = {"mobile_number", "pwd_md5"})
+    public void login() {
+        // --- 核心修改部分:从 JSON 请求体中获取参数 ---
+        JSONObject requestBodyJson = MyController.getJsonModelByRequestAndType(getRequest(), JSONObject.class);
+
+        // 因为 EmptyInterceptor 已经保证了这些字段不为空,这里可以直接获取
+        String mobileNumber = requestBodyJson.getString("mobile_number");
+        String pwdMd5 = requestBodyJson.getString("pwd_md5");
+
+        // 1. 校验手机号是否被注册
+        if (!service.isUserExists(mobileNumber)) {
+            renderJson(MyRet.fail("该手机号未注册。"));
+            return;
+        }
+
+        MyRet ret = service.login(mobileNumber, HashKit.md5(pwdMd5));
+        
+        if (ret.isOk()) {
+            ret.set("token", createToken("dl-token"));
+
+            setSessionAttr("id", ((User)ret.get("data")).getStr("id"));
+            setSessionAttr("mobile_number", ((User)ret.get("data")).getStr("mobile_number"));
+            setSessionAttr("role", ((User)ret.get("data")).getStr("role"));
+        }
+        
+        renderJson(ret);
+    }
 }

+ 12 - 0
src/main/java/modules/user/UserService.java

@@ -22,6 +22,18 @@ public class UserService {
         return MyRet.ok("注册成功。");
     }
     
+    public MyRet login(String mobileNumber, String pwdMd5Md5) {
+        String findSQL = "select id, mobile_number, role from t_user where "
+                + "mobile_number = ? and pwd_md5_md5=?";
+        User u = User.dao.findFirst(findSQL, mobileNumber, pwdMd5Md5);
+
+        if (u == null) {
+            return MyRet.fail("登录失败,密码错误。");
+        } else {
+            return MyRet.ok("登录成功。").setData(u);
+        }
+    }
+    
     public boolean isUserExists(String mobileNumber) {        
         return Db.queryLong("SELECT COUNT(1) FROM t_user WHERE mobile_number = ?", mobileNumber) > 0;
     }

+ 9 - 0
src/test/rest/UserControllerTest.http

@@ -16,3 +16,12 @@ Content-Type: application/json
   "repeat_pwd_md5": "e10adc3949ba59abbe56e057f20f883e",
   "verify_code": "2529"
 }
+
+### 登录
+POST {{ baseUrl }}/user/login
+Content-Type: application/json
+
+{
+  "mobile_number": "17781855864",
+  "pwd_md5": "e10adc3949ba59abbe56e057f20f883e"
+}