jin 3 miesięcy temu
rodzic
commit
6eaf0e14db

+ 1 - 1
pom.xml

@@ -39,7 +39,7 @@
         <hutool.version>5.8.16</hutool.version>
         <thumbnailator.vaersion>0.4.20</thumbnailator.vaersion>
         <weixin-java-pay.version>4.6.0</weixin-java-pay.version>
-        <weixin-java-miniapp.version>3.8.0</weixin-java-miniapp.version>
+        <weixin-java-miniapp.version>4.6.0</weixin-java-miniapp.version>
     </properties>
 
     <!-- 依赖声明 -->

+ 1 - 0
ruoyi-admin/src/main/resources/application.yml

@@ -152,3 +152,4 @@ wx:
   api-key: A7tG5wZ3vM9sY2LxQ8kW4bJ6rD1F0Pz1
   domain: https://api.mch.weixin.qq.com
   notify-domain: http://49.235.117.140:8080/wx/pay/notify
+  msgDataFormat: JSON

+ 5 - 0
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java

@@ -100,6 +100,11 @@ public class Constants
      */
     public static final String TOKEN = "token";
 
+    /**
+     * openId
+     */
+    public static final String OPEN_ID = "openId";
+
     /**
      * 令牌前缀
      */

+ 6 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/recovery/mapper/WxUserMapper.java

@@ -69,4 +69,10 @@ public interface WxUserMapper
      */
     WxUser selectWxUserByOpenid(@Param("openid") String openid);
 
+    /**
+     * 根据openId更新
+     *
+     * @param user 入参
+     */
+    int updateWxUserByOpenId(WxUser user);
 }

+ 7 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/recovery/service/IWxUserService.java

@@ -67,4 +67,11 @@ public interface IWxUserService
      * @return 用户信息
      */
     WxUser selectWxUSerByOpenid(String openid);
+
+    /**
+     * 根据openid更新用户
+     *
+     * @param user 更新内容
+     */
+    int updateWxUserByOpenId(WxUser user);
 }

+ 6 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/recovery/service/impl/WxUserServiceImpl.java

@@ -98,4 +98,10 @@ public class WxUserServiceImpl implements IWxUserService
     public WxUser selectWxUSerByOpenid(String openid) {
         return wxUserMapper.selectWxUserByOpenid(openid);
     }
+
+    @Override
+    public int updateWxUserByOpenId(WxUser user) {
+        user.setUpdateTime(DateUtils.getNowDate());
+        return wxUserMapper.updateWxUserByOpenId(user);
+    }
 }

+ 15 - 2
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/WxLoginService.java

@@ -1,6 +1,8 @@
 package com.ruoyi.framework.web.service;
 
 import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.WxUser;
 import com.ruoyi.common.core.domain.model.LoginWxUser;
 import com.ruoyi.common.exception.ServiceException;
@@ -34,7 +36,8 @@ public class WxLoginService {
      * @param code
      * @return
      */
-    public String minLogin(String code) {
+    public AjaxResult minLogin(String code) {
+        AjaxResult ajax = AjaxResult.success();
         //1根据code执行小程序登录获取 openId
         String url = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code";
         String replaceUrl = url.replace("{0}", appid).replace("{1}", secret).replace("{2}", code);
@@ -51,13 +54,18 @@ public class WxLoginService {
             wxUser.setUsername(String.valueOf(jsonObject.get("openid")));
             wxUser.setGender(1L);
             wxUser.setStatus(0L);
+            wxUser.setUserLevel(0L);
             wxUserService.insertWxUser(wxUser);
             wxUser = wxUserService.selectWxUSerByOpenid(String.valueOf(jsonObject.get("openid")));
         }
         //3生成token
         LoginWxUser loginWxUser = new LoginWxUser(wxUser.getId(), wxUser);
         recordLoginInfo(loginWxUser.getUserId());
-        return wxTokenService.createAppToken(loginWxUser);
+        String token = wxTokenService.createAppToken(loginWxUser);
+        ajax.put(Constants.TOKEN, token);
+        ajax.put(Constants.OPEN_ID, String.valueOf(jsonObject.get("openid")));
+        ajax.put("id", wxUser.getId());
+        return ajax;
     }
 
     /**
@@ -72,4 +80,9 @@ public class WxLoginService {
         appUser.setLastLoginTime(DateUtils.getNowDate());
         wxUserService.updateWxUser(appUser);
     }
+
+    public String updateUser(WxUser user) {
+        int result = wxUserService.updateWxUser(user);
+        return String.valueOf(result);
+    }
 }

+ 23 - 0
ruoyi-system/src/main/resources/mapper/system/WxUserMapper.xml

@@ -130,6 +130,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </trim>
         where id = #{id}
     </update>
+    <update id="updateWxUserByOpenId">
+        update wx_user
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="username != null and username != ''">username = #{username},</if>
+            <if test="password != null and password != ''">password = #{password},</if>
+            <if test="gender != null">gender = #{gender},</if>
+            <if test="birthday != null">birthday = #{birthday},</if>
+            <if test="lastLoginTime != null">last_login_time = #{lastLoginTime},</if>
+            <if test="lastLoginIp != null and lastLoginIp != ''">last_login_ip = #{lastLoginIp},</if>
+            <if test="userLevel != null">user_level = #{userLevel},</if>
+            <if test="nickname != null and nickname != ''">nickname = #{nickname},</if>
+            <if test="mobile != null and mobile != ''">mobile = #{mobile},</if>
+            <if test="avatar != null and avatar != ''">avatar = #{avatar},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="addTime != null">add_time = #{addTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="deleted != null">deleted = #{deleted},</if>
+            <if test="points != null">points = #{points},</if>
+            <if test="vipStartTime != null">vip_start_time = #{vipStartTime},</if>
+            <if test="vipEndTime != null">vip_end_time = #{vipEndTime},</if>
+        </trim>
+        where wxOpenid = #{wxOpenid}
+    </update>
 
     <delete id="deleteWxUserById" parameterType="Long">
         delete from wx_user where id = #{id}

+ 12 - 6
ruoyi-wx/src/main/java/com/ruoyi/wx/web/controller/WxLoginController.java

@@ -1,14 +1,15 @@
 package com.ruoyi.wx.web.controller;
 
 
-import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.WxUser;
 import com.ruoyi.framework.web.service.WxLoginService;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -25,12 +26,17 @@ public class WxLoginController {
 
     @ApiOperation("微信小程序登录")
     @GetMapping("/login")
-    public AjaxResult minLogin(String code){
-        AjaxResult ajax = AjaxResult.success();
+    public AjaxResult minLogin(String code) {
         // 生成令牌
-        String token = wxLoginService.minLogin(code);
-        ajax.put(Constants.TOKEN, token);
-        return ajax;
+        return wxLoginService.minLogin(code);
+    }
+
+    @ApiOperation("微信小程序更新用户信息")
+    @PostMapping("/update/user")
+    public AjaxResult updateUser(WxUser user) {
+        // 生成令牌
+        String result = wxLoginService.updateUser(user);
+        return AjaxResult.success(result);
     }
 
 }