| New file |
| | |
| | | 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; |
| | | } |
| | | |
| | | |
| | | } |
| | | |