调整微信工具
This commit is contained in:
parent
07bed0ab0d
commit
a8025c2f24
|
|
@ -0,0 +1,98 @@
|
||||||
|
package com.mdd.common.config.wechat;
|
||||||
|
|
||||||
|
import cn.binarywang.wx.miniapp.api.WxMaService;
|
||||||
|
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
|
||||||
|
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.github.binarywang.wxpay.service.WxPayService;
|
||||||
|
import com.mdd.common.entity.system.SystemConfig;
|
||||||
|
import com.mdd.common.mapper.system.SystemConfigMapper;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import me.chanjar.weixin.mp.api.WxMpService;
|
||||||
|
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
|
||||||
|
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author panweiliang
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
@ConditionalOnClass(WxPayService.class)
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class WxMnpConfiguration {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private final SystemConfigMapper systemConfigMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信小程序配置
|
||||||
|
*
|
||||||
|
* @author fzr
|
||||||
|
* @return WxMaService
|
||||||
|
*/
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean
|
||||||
|
public WxMaService wxMnpService() {
|
||||||
|
Map<String, String> config = this.getChannelConfig("mp_channel");
|
||||||
|
|
||||||
|
WxMaDefaultConfigImpl wxConfig = new WxMaDefaultConfigImpl();
|
||||||
|
wxConfig.setAppid(config.getOrDefault("appId", ""));
|
||||||
|
wxConfig.setSecret(config.getOrDefault("appSecret", ""));
|
||||||
|
|
||||||
|
WxMaService wxService = new WxMaServiceImpl();
|
||||||
|
wxService.setWxMaConfig(wxConfig);
|
||||||
|
return wxService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信公众号配置
|
||||||
|
*
|
||||||
|
* @author zr
|
||||||
|
* @return WxMpService
|
||||||
|
*/
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean
|
||||||
|
public WxMpService wxOaService() {
|
||||||
|
Map<String, String> config = this.getChannelConfig("oa_channel");
|
||||||
|
|
||||||
|
WxMpDefaultConfigImpl wxMpDefaultConfig = new WxMpDefaultConfigImpl();
|
||||||
|
wxMpDefaultConfig.setAppId(config.getOrDefault("appId", "").trim());
|
||||||
|
wxMpDefaultConfig.setSecret(config.getOrDefault("appSecret", "").trim());
|
||||||
|
wxMpDefaultConfig.setToken(config.getOrDefault("token", "").trim());
|
||||||
|
wxMpDefaultConfig.setAesKey(config.getOrDefault("encodingAesKey", "").trim());
|
||||||
|
|
||||||
|
WxMpService wxService = new WxMpServiceImpl();
|
||||||
|
wxService.setWxMpConfigStorage(wxMpDefaultConfig);
|
||||||
|
return wxService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置读取
|
||||||
|
*
|
||||||
|
* @author fzr
|
||||||
|
* @param type 类型
|
||||||
|
* @return Map<String, String>
|
||||||
|
*/
|
||||||
|
private Map<String, String> getChannelConfig(String type) {
|
||||||
|
List<SystemConfig> configs = systemConfigMapper.selectList(
|
||||||
|
new QueryWrapper<SystemConfig>()
|
||||||
|
.select("id", "type", "name", "value")
|
||||||
|
.eq("type", type));
|
||||||
|
|
||||||
|
Map<String, String> map = new LinkedHashMap<>();
|
||||||
|
for (SystemConfig config : configs) {
|
||||||
|
map.put(config.getName(), config.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,15 +1,41 @@
|
||||||
package com.mdd.common.util;
|
package com.mdd.common.plugin.wechat;
|
||||||
|
|
||||||
import cn.binarywang.wx.miniapp.api.WxMaService;
|
import cn.binarywang.wx.miniapp.api.WxMaService;
|
||||||
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
|
|
||||||
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
|
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
|
||||||
|
import com.mdd.common.util.ConfigUtils;
|
||||||
import me.chanjar.weixin.mp.api.WxMpService;
|
import me.chanjar.weixin.mp.api.WxMpService;
|
||||||
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
|
|
||||||
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
|
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class WeChatUtils {
|
/**
|
||||||
|
* 微信基础驱动
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class WxMnpDriver {
|
||||||
|
|
||||||
|
private static WxMaService wxMaService;
|
||||||
|
|
||||||
|
private static WxMpService wxMpService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信小程序依赖注入
|
||||||
|
*/
|
||||||
|
@Resource
|
||||||
|
public void setWxMaService(WxMaService wxMaService) {
|
||||||
|
WxMnpDriver.wxMaService = wxMaService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信公众号依赖注入
|
||||||
|
*/
|
||||||
|
@Resource
|
||||||
|
public void setWxOaService(WxMpService wxMpService) {
|
||||||
|
WxMnpDriver.wxMpService = wxMpService;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信小程序
|
* 微信小程序
|
||||||
|
|
@ -20,14 +46,13 @@ public class WeChatUtils {
|
||||||
public static WxMaService mnp() {
|
public static WxMaService mnp() {
|
||||||
Map<String, String> config = ConfigUtils.get("mp_channel");
|
Map<String, String> config = ConfigUtils.get("mp_channel");
|
||||||
|
|
||||||
WxMaService service = new WxMaServiceImpl();
|
|
||||||
WxMaDefaultConfigImpl wxConfig = new WxMaDefaultConfigImpl();
|
WxMaDefaultConfigImpl wxConfig = new WxMaDefaultConfigImpl();
|
||||||
wxConfig.setAppid(config.getOrDefault("appId", ""));
|
wxConfig.setAppid(config.getOrDefault("appId", ""));
|
||||||
wxConfig.setSecret(config.getOrDefault("appSecret", ""));
|
wxConfig.setSecret(config.getOrDefault("appSecret", ""));
|
||||||
service.setWxMaConfig(wxConfig);
|
wxMaService.setWxMaConfig(wxConfig);
|
||||||
return service;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
return wxMaService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信公众号
|
* 微信公众号
|
||||||
|
|
@ -35,7 +60,7 @@ public class WeChatUtils {
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @return WxMpService
|
* @return WxMpService
|
||||||
*/
|
*/
|
||||||
public static WxMpService official() {
|
public static WxMpService oa() {
|
||||||
Map<String, String> config = ConfigUtils.get("oa_channel");
|
Map<String, String> config = ConfigUtils.get("oa_channel");
|
||||||
|
|
||||||
WxMpDefaultConfigImpl wxMpDefaultConfig = new WxMpDefaultConfigImpl();
|
WxMpDefaultConfigImpl wxMpDefaultConfig = new WxMpDefaultConfigImpl();
|
||||||
|
|
@ -43,10 +68,8 @@ public class WeChatUtils {
|
||||||
wxMpDefaultConfig.setSecret(config.getOrDefault("appSecret", "").trim());
|
wxMpDefaultConfig.setSecret(config.getOrDefault("appSecret", "").trim());
|
||||||
wxMpDefaultConfig.setToken(config.getOrDefault("token", "").trim());
|
wxMpDefaultConfig.setToken(config.getOrDefault("token", "").trim());
|
||||||
wxMpDefaultConfig.setAesKey(config.getOrDefault("encodingAesKey", "").trim());
|
wxMpDefaultConfig.setAesKey(config.getOrDefault("encodingAesKey", "").trim());
|
||||||
|
wxMpService.setWxMpConfigStorage(wxMpDefaultConfig);
|
||||||
|
|
||||||
WxMpService service = new WxMpServiceImpl();
|
return wxMpService;
|
||||||
service.setWxMpConfigStorage(wxMpDefaultConfig);
|
|
||||||
return service;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -14,6 +14,9 @@ import org.springframework.stereotype.Component;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信支付驱动
|
||||||
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class WxPayDriver {
|
public class WxPayDriver {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import com.mdd.common.exception.OperateException;
|
||||||
import com.mdd.common.mapper.user.UserAuthMapper;
|
import com.mdd.common.mapper.user.UserAuthMapper;
|
||||||
import com.mdd.common.mapper.user.UserMapper;
|
import com.mdd.common.mapper.user.UserMapper;
|
||||||
import com.mdd.common.plugin.notice.NoticeCheck;
|
import com.mdd.common.plugin.notice.NoticeCheck;
|
||||||
|
import com.mdd.common.plugin.wechat.WxMnpDriver;
|
||||||
import com.mdd.common.util.*;
|
import com.mdd.common.util.*;
|
||||||
import com.mdd.front.cache.ScanLoginCache;
|
import com.mdd.front.cache.ScanLoginCache;
|
||||||
import com.mdd.front.service.ILoginService;
|
import com.mdd.front.service.ILoginService;
|
||||||
|
|
@ -146,7 +147,7 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
@Transactional
|
@Transactional
|
||||||
public LoginTokenVo mnpLogin(String code, Integer terminal) {
|
public LoginTokenVo mnpLogin(String code, Integer terminal) {
|
||||||
try {
|
try {
|
||||||
WxMaService wxMaService = WeChatUtils.mnp();
|
WxMaService wxMaService = WxMnpDriver.mnp();
|
||||||
WxMaJscode2SessionResult sessionResult = wxMaService.getUserService().getSessionInfo(code);
|
WxMaJscode2SessionResult sessionResult = wxMaService.getUserService().getSessionInfo(code);
|
||||||
String openId = sessionResult.getOpenid();
|
String openId = sessionResult.getOpenid();
|
||||||
String uniId = sessionResult.getUnionid();
|
String uniId = sessionResult.getUnionid();
|
||||||
|
|
@ -169,7 +170,7 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
@Override
|
@Override
|
||||||
public LoginTokenVo officeLogin(String code, Integer terminal) {
|
public LoginTokenVo officeLogin(String code, Integer terminal) {
|
||||||
try {
|
try {
|
||||||
WxMpService wxMpService = WeChatUtils.official();
|
WxMpService wxMpService = WxMnpDriver.oa();
|
||||||
WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code);
|
WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code);
|
||||||
String uniId = wxOAuth2AccessToken.getUnionId();
|
String uniId = wxOAuth2AccessToken.getUnionId();
|
||||||
String openId = wxOAuth2AccessToken.getOpenId();
|
String openId = wxOAuth2AccessToken.getOpenId();
|
||||||
|
|
@ -189,7 +190,7 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String oaCodeUrl(String url) {
|
public String oaCodeUrl(String url) {
|
||||||
WxMpService wxMpService = WeChatUtils.official();
|
WxMpService wxMpService = WxMnpDriver.oa();
|
||||||
WxMpOAuth2ServiceImpl wxMpOAuth2Service = new WxMpOAuth2ServiceImpl(wxMpService);
|
WxMpOAuth2ServiceImpl wxMpOAuth2Service = new WxMpOAuth2ServiceImpl(wxMpService);
|
||||||
return wxMpOAuth2Service.buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null);
|
return wxMpOAuth2Service.buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import com.mdd.common.exception.OperateException;
|
||||||
import com.mdd.common.mapper.user.UserAuthMapper;
|
import com.mdd.common.mapper.user.UserAuthMapper;
|
||||||
import com.mdd.common.mapper.user.UserMapper;
|
import com.mdd.common.mapper.user.UserMapper;
|
||||||
import com.mdd.common.plugin.notice.NoticeCheck;
|
import com.mdd.common.plugin.notice.NoticeCheck;
|
||||||
|
import com.mdd.common.plugin.wechat.WxMnpDriver;
|
||||||
import com.mdd.common.util.*;
|
import com.mdd.common.util.*;
|
||||||
import com.mdd.front.LikeFrontThreadLocal;
|
import com.mdd.front.LikeFrontThreadLocal;
|
||||||
import com.mdd.front.service.IUserService;
|
import com.mdd.front.service.IUserService;
|
||||||
|
|
@ -331,19 +332,18 @@ public class UserServiceImpl implements IUserService {
|
||||||
userMapper.updateById(user);
|
userMapper.updateById(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 绑定小程序
|
* 绑定小程序
|
||||||
*
|
*
|
||||||
* @param bindMnpValidate
|
* @param bindMnpValidate 参数
|
||||||
* @param userId
|
* @param userId 用户ID
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void bindMnp(UserBindWechatValidate bindMnpValidate, Integer userId) {
|
public void bindMnp(UserBindWechatValidate bindMnpValidate, Integer userId) {
|
||||||
try {
|
try {
|
||||||
// 通过code获取微信信息
|
// 通过code获取微信信息
|
||||||
String code = bindMnpValidate.getCode();
|
String code = bindMnpValidate.getCode();
|
||||||
WxMaService wxMaService = WeChatUtils.mnp();
|
WxMaService wxMaService = WxMnpDriver.mnp();
|
||||||
WxMaJscode2SessionResult sessionResult = wxMaService.getUserService().getSessionInfo(code);
|
WxMaJscode2SessionResult sessionResult = wxMaService.getUserService().getSessionInfo(code);
|
||||||
String openId = sessionResult.getOpenid();
|
String openId = sessionResult.getOpenid();
|
||||||
String uniId = sessionResult.getUnionid();
|
String uniId = sessionResult.getUnionid();
|
||||||
|
|
@ -357,18 +357,17 @@ public class UserServiceImpl implements IUserService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 绑定公众号
|
* 绑定公众号
|
||||||
*
|
*
|
||||||
* @param bindOaValidate
|
* @param bindOaValidate 参数
|
||||||
* @param userId
|
* @param userId 用户ID
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void bindOa(UserBindWechatValidate bindOaValidate, Integer userId) {
|
public void bindOa(UserBindWechatValidate bindOaValidate, Integer userId) {
|
||||||
try {
|
try {
|
||||||
// 通过code获取微信信息
|
// 通过code获取微信信息
|
||||||
WxMpService wxMpService = WeChatUtils.official();
|
WxMpService wxMpService = WxMnpDriver.oa();
|
||||||
WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(bindOaValidate.getCode());
|
WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(bindOaValidate.getCode());
|
||||||
String uniId = wxOAuth2AccessToken.getUnionId();
|
String uniId = wxOAuth2AccessToken.getUnionId();
|
||||||
String openId = wxOAuth2AccessToken.getOpenId();
|
String openId = wxOAuth2AccessToken.getOpenId();
|
||||||
|
|
@ -382,14 +381,13 @@ public class UserServiceImpl implements IUserService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 绑定微信授权
|
* 绑定微信授权
|
||||||
*
|
*
|
||||||
* @param openId
|
* @param openId openId
|
||||||
* @param unionId
|
* @param unionId unionId
|
||||||
* @param terminal
|
* @param terminal 客户端端
|
||||||
* @param userId
|
* @param userId 用户ID
|
||||||
*/
|
*/
|
||||||
public void bindWechatAuth(String openId, String unionId, Integer terminal, Integer userId) {
|
public void bindWechatAuth(String openId, String unionId, Integer terminal, Integer userId) {
|
||||||
// 授权表中查找授权记录
|
// 授权表中查找授权记录
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue