From 19f88869bf518a66511d077b50ec422226e8da9f Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期三, 10 十二月 2025 16:04:20 +0800
Subject: [PATCH] 小程序登录接口

---
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java |   62 ++++++++++++++++++++++++++-----
 1 files changed, 52 insertions(+), 10 deletions(-)

diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index c4f95cf..3bde689 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -9,6 +9,7 @@
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.entity.TAppUserResp;
 import com.ruoyi.common.core.domain.model.LoginAppBody;
+import com.ruoyi.common.core.domain.model.LoginBody;
 import com.ruoyi.common.core.domain.model.LoginUserApplet;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.redis.service.RedisService;
@@ -23,10 +24,8 @@
 import com.ruoyi.system.utils.wx.body.resp.Code2SessionRespBody;
 import com.ruoyi.system.utils.wx.body.resq.Code2SessionResqBody;
 import com.ruoyi.system.utils.wx.model.WeixinProperties;
-import com.ruoyi.system.utils.wx.pojo.AppletUserDecodeData;
 import com.ruoyi.system.utils.wx.pojo.AppletUserEncrypteData;
 import com.ruoyi.system.utils.wx.tools.WxAppletTools;
-import com.ruoyi.system.utils.wx.tools.WxUtils;
 import com.ruoyi.web.controller.tool.MsgUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -34,16 +33,14 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 登录验证
@@ -79,6 +76,51 @@
     private RedisService redisService;
     @Autowired
     private TAppUserService appUserService;
+
+    /**
+     * 获取验证码
+     *
+     * @param phone 手机号
+     * @return 结果
+     */
+    @ApiOperation(value = "获取验证码",notes = "获取验证码")
+    @GetMapping("/getCode")
+    public AjaxResult getCode(@RequestParam String phone)
+    {
+        // 发送验证码并存储到redis
+        if (StringUtils.hasLength(phone)) {
+
+            String code = String.valueOf((int) (Math.random() * 1000000));
+            redisCache.setCacheObject(phone, code,5*60, TimeUnit.SECONDS);
+            try {
+                //TODO 待对接
+//                smsUtil.sendSms(phone, "2369926", new String[]{code});
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+            return AjaxResult.success("发送短信验证码成功!5分钟内有效");
+        }
+        return AjaxResult.error(500, "发送短信验证码失败,请确认手机号码!");
+    }
+
+    /**
+     * 账号密码登录
+     *
+     * @param loginBody 登录信息
+     * @return 结果
+     */
+    @ApiOperation(value = "短信登录",notes = "短信登录")
+    @PostMapping("/loginCode")
+    public AjaxResult loginCode(@RequestBody LoginBody loginBody)
+    {
+        AjaxResult ajax = AjaxResult.success();
+        // 生成令牌
+        LoginUserApplet loginUser = loginService.loginCodeApplet(loginBody.getUsername(), loginBody.getCode());
+        ajax.put(Constants.TOKEN, tokenService.createTokenApplet(loginUser));
+        ajax.put("userInfo",loginUser);
+        return ajax;
+    }
+
     /**
      * 账号密码登录
      * 
@@ -92,7 +134,7 @@
         LoginAppBody loginAppBody = JSON.parseObject(param, LoginAppBody.class);
         AjaxResult ajax = AjaxResult.success();
         // 生成令牌
-        LoginUserApplet loginUser = loginService.loginCodeApplet(loginAppBody.getAccount(), loginAppBody.getPassword());
+        LoginUserApplet loginUser = loginService.loginPwdApplet(loginAppBody.getAccount(), loginAppBody.getPassword());
         ajax.put(Constants.TOKEN, tokenService.createTokenApplet(loginUser));
         ajax.put("data",loginUser);
         return ajax;
@@ -117,11 +159,11 @@
 //        appletUserDecodeData.setOpenId(openid);
         // 先使用openId和当前手机号进行查询
         TAppUser sysAppUser = appUserService.getOne(Wrappers.lambdaQuery(TAppUser.class)
-                .and(e->e.eq(TAppUser::getOpenId, openid)));
+                .and(e->e.eq(TAppUser::getOpenid, openid)));
         if (sysAppUser==null){
             sysAppUser = new TAppUser();
 //            sysAppUser.setPhoneNumber(appletUserDecodeData.getPhoneNumber());
-            sysAppUser.setOpenId(openid);
+            sysAppUser.setOpenid(openid);
             // 手机号中间四位替换为*
 //            sysAppUser.setNickName(appletUserDecodeData.getPhoneNumber().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
             appUserService.save(sysAppUser);
@@ -131,7 +173,7 @@
                 return R.fail("账号已冻结,请联系管理员");
             }
             // 手机号相同但openId为空的情况
-            sysAppUser.setOpenId(openid);
+            sysAppUser.setOpenid(openid);
             appUserService.updateById(sysAppUser);
         }
         LoginUserApplet loginUserApplet = new LoginUserApplet();

--
Gitblit v1.7.1