代码拉取完成,页面将自动刷新
同步操作将从 AbuCoder/AbuCoder-RuoYi-Vue-uniapp-wx 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
一直想做一款基于若依后台管理系统的微信小程序,最近比较闲了,所以想做个简单的东西。主要为了学习,走一遍整个过程,也是为像我这种小白提供些简单的学习内容。 这是一套前后端一起的脚手架,省去了好多需要写的东西,开箱即用 若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
<!--hutool工具类-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.0</version>
</dependency>
package com.ruoyi.abuwxapi;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.abuwx.domain.AbucoderWxuser;
import com.ruoyi.abuwx.service.IAbucoderWxuserService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.common.utils.uuid.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/wxapi/")
public class WxLoginController {
/**
* 测试接口
* @return
*/
@GetMapping("test")
public AjaxResult test(){
return AjaxResult.success("小程序api调试成功!~");
}
@Autowired
private IAbucoderWxuserService iAbucoderWxuserService;
/**
* 你自己的微信小程序APPID
*/
private final static String AppID = "你自己的appid";
/**
* 你自己的微信APP密钥
*/
private final static String AppSecret = "你自己的密钥";
/**
* 登录时获取的 code(微信官方提供的临时凭证)
* @param object
* @return
*/
@PostMapping("/wxlogin")
public AjaxResult wxLogin(@RequestBody JSONObject object){
//微信官方提供的微信小程序登录授权时使用的URL地址
String url = "https://api.weixin.qq.com/sns/jscode2session";
System.out.println(object);
/**
* 拼接需要的参数
* appid = AppID 你自己的微信小程序APPID
* js_code = AppSecret 你自己的微信APP密钥
* grant_type=authorization_code = code 微信官方提供的临时凭证
*/
String params = StrUtil.format("appid={}&secret={}&js_code={}&grant_type=authorization_code", AppID, AppSecret, object.get("code"));
//开始发起网络请求,若依管理系统自带网络请求工具,直接使用即可
String res = HttpUtils.sendGet(url,params);
System.out.println("输出请求到的结果");
System.out.println(res);
JSONObject jsonObject = JSON.parseObject(res);
String session_key = (String) jsonObject.get("session_key");
String openid = (String) jsonObject.get("openid");
if (StrUtil.isEmpty(openid)) {
return AjaxResult.error("未获取到openid");
}
String token = UUID.randomUUID().toString();
Map<String, Object> data = new HashMap<>();
data.put("token", token);
data.put("session_key", session_key);
data.put("openid", openid);
data.put("state",true);
data.put("nickName",object.get("nickName"));
data.put("avatarUrl",object.get("avatarUrl"));
/**先通过openid来查询是否存在*/
AbucoderWxuser abucoderWxuser = iAbucoderWxuserService.selectAbucoderWxuserOpenID(openid);
if (abucoderWxuser == null){
/**如果不存在就插入到我们的数据库里*/
AbucoderWxuser wxuser = new AbucoderWxuser();
wxuser.setNickname(String.valueOf(object.get("nickName")));
wxuser.setGender((Integer) object.get("gender"));
wxuser.setAvatar(String.valueOf(object.get("avatarUrl")));
wxuser.setOpenid(openid);
wxuser.setCreateTime(DateUtils.getNowDate());
wxuser.setCreateBy("Abu");
iAbucoderWxuserService.insertAbucoderWxuser(wxuser);
}else {
/**如果存在就更新数据库里原有的数据*/
abucoderWxuser.setNickname(String.valueOf(object.get("nickName")));
abucoderWxuser.setGender((Integer) object.get("gender"));
abucoderWxuser.setAvatar(String.valueOf(object.get("avatarUrl")));
abucoderWxuser.setUpdateTime(DateUtils.getNowDate());
abucoderWxuser.setUpdateBy("Abu");
iAbucoderWxuserService.updateAbucoderWxuser(abucoderWxuser);
}
/**返回结果集到前段*/
return AjaxResult.success(data);
}
}
6.小程序登录测试
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。