Files
ks/ruoyi-abuwx/src/main/java/com/ruoyi/abuwxapi/WxLoginController.java
Lishundong 410182ec79 WechatGroup
2025-09-22 17:06:47 +08:00

130 lines
5.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.config.RuoYiConfig;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.framework.config.ServerConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/wxapi/")
public class WxLoginController {
private static final Logger log = LoggerFactory.getLogger(WxLoginController.class);
@Autowired
private IAbucoderWxuserService iAbucoderWxuserService;
@Autowired
private ServerConfig serverConfig;
/**
* 你自己的微信小程序APPID
*/
private final static String AppID = "你自己的微信小程序APPID";
/**
* 你自己的微信APP密钥
*/
private final static String AppSecret = "你自己的微信APP密钥";
/**
* 登录时获取的 code微信官方提供的临时凭证
* @param object
* @return
*/
@PostMapping("/wxlogin")
public AjaxResult wxLogin(@RequestBody JSONObject object){
//微信官方提供的微信小程序登录授权时使用的URL地址
String url = "https://api.weixin.qq.com/sns/jscode2session";
log.info("微信登录,传入参数:"+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);
JSONObject jsonObject = JSON.parseObject(res);
String openid = (String) jsonObject.get("openid");
if (StrUtil.isEmpty(openid)) {
return AjaxResult.error("未获取到openid");
}
/**先通过openid来查询是否存在*/
AbucoderWxuser abucoderWxuser = iAbucoderWxuserService.selectAbucoderWxuserOpenID(openid);
if (abucoderWxuser == null){
/**如果不存在就插入到我们的数据库里*/
AbucoderWxuser wxuser = new AbucoderWxuser();
wxuser.setOpenid(openid);
wxuser.setCreateTime(DateUtils.getNowDate());
iAbucoderWxuserService.insertAbucoderWxuser(wxuser);
/**返回结果集到前段*/
return AjaxResult.success(wxuser);
}else {
/**返回结果集到前段*/
return AjaxResult.success(abucoderWxuser);
}
}
@PostMapping("/upload")
@ResponseBody
public AjaxResult uploadFile(MultipartFile file) throws Exception
{
System.out.println(file);
try
{
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath();
// 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName;
AjaxResult ajax = AjaxResult.success();
ajax.put("url", url);
ajax.put("fileName", fileName);
ajax.put("newFileName", FileUtils.getName(fileName));
ajax.put("originalFilename", file.getOriginalFilename());
return ajax;
}
catch (Exception e)
{
return AjaxResult.error(e.getMessage());
}
}
/**
* 保存昵称与头像信息到用户信息里
* @param object
* @return
*/
@PostMapping("/saveUserInfo")
@ResponseBody
public AjaxResult saveUserInfo(@RequestBody JSONObject object){
System.out.println(object);
AbucoderWxuser abucoderWxuser = iAbucoderWxuserService.selectAbucoderWxuserOpenID(String.valueOf(object.get("openid")));
if (StringUtils.hasLength(String.valueOf(object.get("nickName")))){
abucoderWxuser.setNickname(String.valueOf(object.get("nickName")));
abucoderWxuser.setCreateBy(String.valueOf(object.get("nickName")));
}
if (StringUtils.hasLength(String.valueOf(object.get("avatarUrl")))){
abucoderWxuser.setAvatar(String.valueOf(object.get("avatarUrl")));
}
abucoderWxuser.setUpdateTime(DateUtils.getNowDate());
iAbucoderWxuserService.updateAbucoderWxuser(abucoderWxuser);
//返回前段需要的数据
return AjaxResult.success(abucoderWxuser);
}
}