|
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import com.microsvc.toolkit.common.json.ali.AliJSONMap;
|
|
|
import com.microsvc.toolkit.middleware.live.LivePluginContext;
|
|
|
import com.microsvc.toolkit.middleware.live.LivePluginService;
|
|
|
import com.microsvc.toolkit.middleware.live.impl.RongCloudLivePlugin;
|
|
@@ -56,7 +57,10 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
import com.ym.mec.util.excel.POIUtil;
|
|
|
+import com.ym.mec.util.http.HttpUtil;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.apache.commons.collections.MapUtils;
|
|
|
+import org.apache.commons.lang3.RandomStringUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
@@ -1656,6 +1660,53 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 游客微信身份
|
|
|
+ *
|
|
|
+ * @param code 授权码
|
|
|
+ * @return 用户openId
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public String visitorFingerprint(String code) {
|
|
|
+
|
|
|
+ // 微信公众号appId
|
|
|
+ String appId = sysConfigDao.findConfigValue(SysConfigService.WECHAT_APPID);
|
|
|
+ // 微信公众号secret
|
|
|
+ String secret = sysConfigDao.findConfigValue(SysConfigService.WECHAT_SECRET);
|
|
|
+
|
|
|
+ if (StringUtils.isAnyBlank(appId, secret, code)) {
|
|
|
+ // 若微信未配置,产生64位随机数
|
|
|
+ return RandomStringUtils.random(64);
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 获取用户OpenId接口
|
|
|
+ String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code";
|
|
|
+
|
|
|
+ // 封装请求参数
|
|
|
+ url = MessageFormat.format(url, appId, secret, code);
|
|
|
+
|
|
|
+ String wxMpOAuth2AccessTokenUrl = HttpUtil.get(url, null);
|
|
|
+ log.info("请求微信授权接口的参数:{}", wxMpOAuth2AccessTokenUrl);
|
|
|
+ if (StringUtils.isEmpty(wxMpOAuth2AccessTokenUrl)) {
|
|
|
+ throw new BizException("授权失败,请重新授权");
|
|
|
+ }
|
|
|
+ Map<String, Object> weChatRes = AliJSONMap.tomap(wxMpOAuth2AccessTokenUrl);
|
|
|
+
|
|
|
+ if (!weChatRes.containsKey("openid")) {
|
|
|
+ log.error("获取微信openId失败:[{}]", JSON.toJSONString(weChatRes));
|
|
|
+ throw new BizException("授权失败,请重新授权");
|
|
|
+ }
|
|
|
+
|
|
|
+ return MapUtils.getString(weChatRes, "openid", "");
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("获取微信openId失败:[{}]", e.getMessage(), e);
|
|
|
+ throw new BizException("授权失败,请重新授权");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 获取直播间游客信息
|
|
|
* @param userId 游客编号
|
|
|
* @param imLiveBroadcastRoomVo ImLiveBroadcastRoomVo
|