Commit d63d6d64 by 汪志阳

Merge branch 'dev' into fix_sleep

parents 3ee918b4 1488e0d5
......@@ -16,4 +16,12 @@ public class WechatBindDTO {
@ApiModelProperty(value = "微信公众号openid")
private String weChatOpenid;
private String appid;
private String secret;
private String code;
private String grantType;
}
package com.makeit.utils.third.wechat;
import lombok.Data;
/**
* @author wangzy
* @description
* @createDate 2024-01-30-16:57
*/
@Data
public class WechatCodeDTO {
// {"access_token":"77_hfkGpaiIT8xPltYrmRmrHj_svTcoLKIvR-w_lkR_wWqGHyF1NnZiIvIg0LxnI2rO55U2NqSGpXStYFmwxPE2mO0gNyfUrGvHUMcckrNNM9I",
// "expires_in":7200,
// "refresh_token":"77_MFeHId8uo1EgV6NFlhDiaQMrK6FXGmKcDMfa-BqGOaWr20u-6aM4lkBx1fnsSMrgL5m_Q3Csdw8D4Z3_qmpDj0kZKMXLmTzxosLz2BEqJHs",
// "openid":"o1es866cj4fp2Np9S5rmnbIdSg4U",
// "scope":"snsapi_base"}
private String accessToken;
private String openid;
private String scope;
}
package com.makeit.service.wechat.impl;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.makeit.entity.platform.elder.PlatElderChildrenInfo;
......@@ -14,10 +16,7 @@ import com.makeit.utils.data.id.IdGen;
import com.makeit.utils.msg.config.WxConfig;
import com.makeit.utils.old.StringUtils;
import com.makeit.utils.sys.FileUtil;
import com.makeit.utils.third.wechat.WechatBindDTO;
import com.makeit.utils.third.wechat.WechatLoginPhoneDTO;
import com.makeit.utils.third.wechat.WechatUtil;
import com.makeit.utils.third.wechat.WxUserInfo;
import com.makeit.utils.third.wechat.*;
import com.makeit.utils.user.TokenUtil;
import com.makeit.utils.user.wechat.WechatUserInfo;
import org.apache.commons.collections4.CollectionUtils;
......@@ -28,7 +27,9 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class PlatElderChildrenInfoUserLoginWechatServiceImpl implements PlatElderChildrenInfoUserLoginWechatService {
......@@ -125,17 +126,43 @@ public class PlatElderChildrenInfoUserLoginWechatServiceImpl implements PlatElde
@Override
public void bind(WechatBindDTO dto) {
PlatElderChildrenInfo childrenInfo = platElderChildrenInfoService.getById(dto.getId());
WechatCodeDTO codeDTO = getAppid(dto);
if (StrUtil.isBlank(dto.getId()) || codeDTO == null || StrUtil.isBlank(codeDTO.getOpenid())) {
return;
}
bindToChildrenInfo(dto.getId(), codeDTO.getOpenid());
}
private WechatCodeDTO getAppid(WechatBindDTO dto) {
String url = "https://api.weixin.qq.com/sns/oauth2/access_token";
Map<String, Object> params = new HashMap<>(12);
params.put("appid", dto.getAppid());
params.put("secret", dto.getSecret());
params.put("code", dto.getCode());
params.put("grant_type", dto.getGrantType());
String post = "";
try {
post = HttpUtil.post(url, params);
logger.error("获取微信公众号appid失败:response:{}", post);
} catch (Exception e) {
logger.error("获取微信公众号appid失败:response:{}", post);
}
return JSONUtil.toBean(post, WechatCodeDTO.class);
}
private void bindToChildrenInfo(String id, String weChatOpenid) {
PlatElderChildrenInfo childrenInfo = platElderChildrenInfoService.getById(id);
if (childrenInfo == null) {
return;
}
if (StrUtil.isNotBlank(childrenInfo.getOpenid())) {
List<PlatElderChildrenInfo> infoList = platElderChildrenInfoService.list(Wrappers.<PlatElderChildrenInfo>lambdaQuery()
.in(PlatElderChildrenInfo::getOpenid, childrenInfo.getOpenid()));
infoList.forEach(i -> i.setWeChatOpenid(dto.getWeChatOpenid()));
infoList.forEach(i -> i.setWeChatOpenid(weChatOpenid));
platElderChildrenInfoService.updateBatchById(infoList);
} else {
childrenInfo.setWeChatOpenid(dto.getWeChatOpenid());
childrenInfo.setWeChatOpenid(weChatOpenid);
platElderChildrenInfoService.updateById(childrenInfo);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment