linwe
2024-08-09 8b7258c9427882bb1798f1502eaa35184c6e374e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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;
    }
 
 
}