From 764d883b5ea3bdc06abbec548b6df0511e567978 Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Tue, 03 Sep 2024 09:46:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/binlog' into binlog

---
 src/main/java/org/springblade/modules/wechat/service/impl/WechatServiceImpl.java |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 60 insertions(+), 0 deletions(-)

diff --git a/src/main/java/org/springblade/modules/wechat/service/impl/WechatServiceImpl.java b/src/main/java/org/springblade/modules/wechat/service/impl/WechatServiceImpl.java
new file mode 100644
index 0000000..6f9b9d4
--- /dev/null
+++ b/src/main/java/org/springblade/modules/wechat/service/impl/WechatServiceImpl.java
@@ -0,0 +1,60 @@
+package org.springblade.modules.wechat.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springblade.common.config.WxMiniConfig;
+import org.springblade.common.exception.CustomException;
+import org.springblade.common.utils.HttpClientUtils;
+import org.springblade.common.utils.SpringUtils;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.modules.pay.entity.WeChatMiniAuthorizeVo;
+import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.service.IUserService;
+import org.springblade.modules.wechat.service.WechatService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+public class WechatServiceImpl implements WechatService {
+
+	private static final Logger logger = LoggerFactory.getLogger(WechatServiceImpl.class);
+
+	@Resource
+	private WxMiniConfig wxMiniConfig;
+
+	/**
+	 * 小程序登录凭证校验
+	 *
+	 * @return 小程序登录校验对象
+	 */
+	@Override
+	public WeChatMiniAuthorizeVo miniAuthCode(String code) {
+		String url = StrUtil.format(wxMiniConfig.getJscode2sessionUrl(), wxMiniConfig.getAppid(), wxMiniConfig.getSecret(), code);
+		JSONObject data = JSON.parseObject(HttpClientUtils.doGet(url));
+		if (ObjectUtil.isNull(data)) {
+			logger.error("微信平台接口异常,没任何数据返回!");
+			throw new CustomException("微信平台接口异常,没任何数据返回!");
+		}
+		if (data.containsKey("errcode") && !data.getString("errcode").equals("0")) {
+			if (data.containsKey("errmsg")) {
+				logger.error("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg"));
+				throw new CustomException("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg"));
+			}
+		}
+		WeChatMiniAuthorizeVo weChatMiniAuthorizeVo = JSONObject.parseObject(data.toJSONString(), WeChatMiniAuthorizeVo.class);
+		// 绑定用户openid
+		Long userId = AuthUtil.getUserId();
+		IUserService userService = SpringUtils.getBean(IUserService.class);
+		userService.update(Wrappers.<User>lambdaUpdate().set(User::getMiniOpenId, weChatMiniAuthorizeVo.getOpenId()).eq(User::getId, userId));
+		return weChatMiniAuthorizeVo;
+	}
+
+
+}
+

--
Gitblit v1.9.3