Commit 965b435a by guojuxing

查询微信用户信息

parent a71247cb
......@@ -12,7 +12,7 @@ public class ResourceGroupCustomUserDTO implements Serializable{
private static final long serialVersionUID = -3182922200773458600L;
/**
* 1:会员卡域 2:服务号域 3:小程序域
* CuTypeEnum 枚举
*/
private Integer type;
......
package com.gic.auth.dto.wechat;
import java.io.Serializable;
/**
* 服务号关注用户
* @ClassName:
* @Description: 

* @author guojuxing

* @date 2021/1/26 10:20 AM

*/
public class WechatUserDTO implements Serializable{
private static final long serialVersionUID = -2148969953172055593L;
/**
* 用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
*/
public int subscribe;
/**
* 用户的标识,对当前公众号唯一
*/
public String openid;
/**
* 用户的昵称
*/
public String nickname;
/**
* 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
*/
public int sex = 0;
/**
* 用户所在城市
*/
public String city;
/**
* 用户所在国家
*/
public String country;
/**
* 用户所在省份
*/
public String province;
/**
* 用户的语言,简体中文为zh_CN
*/
public String language;
/**
* 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
*/
public String headimgurl;
/**
* 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
*/
public long subscribe_time;
/**
* 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息(UnionID机制)
*/
public String unionid;
/**
* 公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
*/
public String remark;
/**
* 用户所在的分组ID
*/
public int groupid;
public int getSubscribe() {
return subscribe;
}
public WechatUserDTO setSubscribe(int subscribe) {
this.subscribe = subscribe;
return this;
}
public String getOpenid() {
return openid;
}
public WechatUserDTO setOpenid(String openid) {
this.openid = openid;
return this;
}
public String getNickname() {
return nickname;
}
public WechatUserDTO setNickname(String nickname) {
this.nickname = nickname;
return this;
}
public int getSex() {
return sex;
}
public WechatUserDTO setSex(int sex) {
this.sex = sex;
return this;
}
public String getCity() {
return city;
}
public WechatUserDTO setCity(String city) {
this.city = city;
return this;
}
public String getCountry() {
return country;
}
public WechatUserDTO setCountry(String country) {
this.country = country;
return this;
}
public String getProvince() {
return province;
}
public WechatUserDTO setProvince(String province) {
this.province = province;
return this;
}
public String getLanguage() {
return language;
}
public WechatUserDTO setLanguage(String language) {
this.language = language;
return this;
}
public String getHeadimgurl() {
return headimgurl;
}
public WechatUserDTO setHeadimgurl(String headimgurl) {
this.headimgurl = headimgurl;
return this;
}
public long getSubscribe_time() {
return subscribe_time;
}
public WechatUserDTO setSubscribe_time(long subscribe_time) {
this.subscribe_time = subscribe_time;
return this;
}
public String getUnionid() {
return unionid;
}
public WechatUserDTO setUnionid(String unionid) {
this.unionid = unionid;
return this;
}
public String getRemark() {
return remark;
}
public WechatUserDTO setRemark(String remark) {
this.remark = remark;
return this;
}
public int getGroupid() {
return groupid;
}
public WechatUserDTO setGroupid(int groupid) {
this.groupid = groupid;
return this;
}
@Override
public String toString() {
return "WechatUserDTO{" +
"subscribe=" + subscribe +
", openid='" + openid + '\'' +
", nickname='" + nickname + '\'' +
", sex=" + sex +
", city='" + city + '\'' +
", country='" + country + '\'' +
", province='" + province + '\'' +
", language='" + language + '\'' +
", headimgurl='" + headimgurl + '\'' +
", subscribe_time=" + subscribe_time +
", unionid='" + unionid + '\'' +
", remark='" + remark + '\'' +
", groupid=" + groupid +
'}';
}
}
......@@ -7,6 +7,7 @@ import com.gic.api.base.commons.ServiceResponse;
import com.gic.auth.dto.UserDTO;
import com.gic.auth.dto.UserDataShowDTO;
import com.gic.auth.dto.UserListDTO;
import com.gic.auth.dto.wechat.WechatUserDTO;
import com.gic.auth.qo.UserListQO;
/**
......@@ -71,6 +72,13 @@ public interface UserApiService {
ServiceResponse<String> getUserQrcode(Integer userId, Integer enterpriseId);
/**
* 获取服务号关注用户信息
* @param openId
* @return
*/
ServiceResponse<WechatUserDTO> getMemberInfoByOpenId(String openId);
/**
* 新增超级用户
* @Title: saveAdmin

* @Description:
......
......@@ -5,6 +5,7 @@ import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import com.gic.auth.dto.wechat.WechatUserDTO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
......@@ -177,6 +178,15 @@ public class UserApiServiceImpl implements UserApiService {
}
@Override
public ServiceResponse<WechatUserDTO> getMemberInfoByOpenId(String openId) {
WechatUserDTO wechatUserDTO = QrcodeUtils.getMemberInfoByOpenId(openId);
if (wechatUserDTO != null) {
return ServiceResponse.success(wechatUserDTO);
}
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "查询不到用户信息");
}
@Override
public ServiceResponse<Integer> saveAdmin(UserDTO userDTO) {
//valid param
ServiceResponse paramResult = ValidUtil.allCheckValidate(userDTO, UserDTO.SaveUserValid.class);
......
package com.gic.auth.utils.qrcode;
import com.alibaba.fastjson.JSON;
import com.gic.auth.config.Config;
import com.gic.auth.dto.wechat.WechatUserDTO;
import com.gic.commons.util.EntityUtil;
import com.gic.wechat.business.api.dto.fwh.WeixinUserAuthDTO;
import com.gic.wechat.business.api.service.fwh.WeixinBaseFunService;
import com.gic.wechat.business.api.service.fwh.WeixinUserFunService;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
......@@ -48,6 +53,26 @@ public class QrcodeUtils {
}
/**
* 查询服务号关注用户信息
* @param openId
* @return
*/
public static WechatUserDTO getMemberInfoByOpenId(String openId) {
WeixinUserFunService weixinUserFunService = ApplicationContextUtils.getBean("weixinUserFunService");
Config config = ApplicationContextUtils.getBean("config");
ServiceResponse<WeixinUserAuthDTO> response = weixinUserFunService.getMemberInfo(config.getAppkey(), openId);
if (response.isSuccess()) {
WeixinUserAuthDTO weixinUserAuthDTO = response.getResult();
if (weixinUserAuthDTO != null) {
return EntityUtil.changeEntityNew(WechatUserDTO.class, weixinUserAuthDTO);
}
logger.info("openId:{}查询粉丝信息结果:{}", openId, JSON.toJSONString(response));
}
logger.info("openId:{}查询粉丝信息失败:{}", openId, response.getMessage());
return null;
}
/**
* 获取二维码url
* @param qrCodeType
* @param serviceId 业务方的主键ID
......
......@@ -35,6 +35,7 @@
<dubbo:reference interface="com.gic.enterprise.service.ProjectItemApiService" id="projectItemApiService" timeout="6000" />
<!--微信回调-->
<dubbo:reference interface="com.gic.wechat.business.api.service.fwh.WeixinBaseFunService" id="weixinBaseFunService" timeout="6000" />
<dubbo:reference interface="com.gic.wechat.business.api.service.fwh.WeixinUserFunService" id="weixinUserFunService" timeout="6000" />
<!--会员模块-->
<dubbo:reference interface="com.gic.member.api.service.ServiceUserApiService" id="serviceUserApiService" timeout="6000" />
<dubbo:reference interface="com.gic.store.service.StoreAuthorizationApiService" id="storeAuthorizationApiService" timeout="6000">
......
package com.gic.auth.web.controller;
import com.gic.auth.dto.wechat.WechatUserDTO;
import com.gic.auth.web.vo.SuperUserVO;
import com.gic.auth.web.vo.UserOfGicVO;
import com.gic.commons.annotation.HeaderSignIgnore;
......@@ -164,7 +165,16 @@ public class UserController {
LoginUserVO vo;
ServiceResponse<UserDTO> userResult = userApiService.getUserInfoById(UserDetailUtils.getUserDetail().getUserId());
if (userResult.isSuccess()) {
vo = EntityUtil.changeEntityNew(LoginUserVO.class, userResult.getResult());
UserDTO userDTO = userResult.getResult();
vo = EntityUtil.changeEntityNew(LoginUserVO.class, userDTO);
//查询微信信息
ServiceResponse<WechatUserDTO> memberInfoRes = userApiService.getMemberInfoByOpenId(userDTO.getOpenId());
if (memberInfoRes.isSuccess()) {
WechatUserDTO wechat = memberInfoRes.getResult();
vo.setNickname(wechat.getNickname());
vo.setHeadimgurl(wechat.getHeadimgurl());
}
} else {
vo = new LoginUserVO();
}
......@@ -176,6 +186,16 @@ public class UserController {
return RestResponse.success(vo);
}
/**
* 换绑
* @return
*/
@RequestMapping("/change-bind")
public RestResponse changeBind() {
return ResultControllerUtils.commonResult(userApiService.getUserQrcode(UserDetailUtils.getUserDetail().getUserId(),
UserDetailUtils.getUserDetail().getEnterpriseId()));
}
@RequestMapping("send-auth-code-to-modify-phone")
public RestResponse sendAuthCode(String phone, String nationCode) {
if (StringUtils.isBlank(nationCode)) {
......
......@@ -48,6 +48,16 @@ public class LoginUserVO implements Serializable{
*/
private Integer userPosition;
/**
* 用户的昵称
*/
public String nickname;
/**
* 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
*/
public String headimgurl;
public Integer getUserId() {
return userId;
}
......@@ -113,6 +123,24 @@ public class LoginUserVO implements Serializable{
return this;
}
public String getNickname() {
return nickname;
}
public LoginUserVO setNickname(String nickname) {
this.nickname = nickname;
return this;
}
public String getHeadimgurl() {
return headimgurl;
}
public LoginUserVO setHeadimgurl(String headimgurl) {
this.headimgurl = headimgurl;
return this;
}
@Override
public String toString() {
return "LoginUserVO{" +
......@@ -124,6 +152,8 @@ public class LoginUserVO implements Serializable{
", enterpriseName='" + enterpriseName + '\'' +
", companyName='" + companyName + '\'' +
", userPosition=" + userPosition +
", nickname='" + nickname + '\'' +
", headimgurl='" + headimgurl + '\'' +
'}';
}
}
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 to comment