|
@@ -1,5 +1,7 @@
|
|
package com.xyzc.start.service.impl;
|
|
package com.xyzc.start.service.impl;
|
|
|
|
|
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.xyzc.common.core.exception.ErrorCode;
|
|
import com.xyzc.common.core.exception.ErrorCode;
|
|
import com.xyzc.common.core.exception.ServerException;
|
|
import com.xyzc.common.core.exception.ServerException;
|
|
import com.xyzc.common.core.utils.AssertUtils;
|
|
import com.xyzc.common.core.utils.AssertUtils;
|
|
@@ -9,10 +11,10 @@ import com.xyzc.common.web.security.cache.TokenStoreCache;
|
|
import com.xyzc.common.web.security.mobile.WeiXinScanAuthenticationToken;
|
|
import com.xyzc.common.web.security.mobile.WeiXinScanAuthenticationToken;
|
|
import com.xyzc.common.web.security.user.UserDetail;
|
|
import com.xyzc.common.web.security.user.UserDetail;
|
|
import com.xyzc.start.cache.SysParamsCache;
|
|
import com.xyzc.start.cache.SysParamsCache;
|
|
-import com.xyzc.start.domain.AgentConfig;
|
|
|
|
import com.xyzc.start.domain.BaseUser;
|
|
import com.xyzc.start.domain.BaseUser;
|
|
import com.xyzc.start.domain.WxConfig;
|
|
import com.xyzc.start.domain.WxConfig;
|
|
import com.xyzc.start.domain.vo.AccessTokenVo;
|
|
import com.xyzc.start.domain.vo.AccessTokenVo;
|
|
|
|
+import com.xyzc.start.domain.vo.BaseUserVo;
|
|
import com.xyzc.start.domain.vo.TicketVo;
|
|
import com.xyzc.start.domain.vo.TicketVo;
|
|
import com.xyzc.start.mapper.BaseUserMapper;
|
|
import com.xyzc.start.mapper.BaseUserMapper;
|
|
import com.xyzc.start.mapper.WxConfigMapper;
|
|
import com.xyzc.start.mapper.WxConfigMapper;
|
|
@@ -37,7 +39,6 @@ import org.apache.http.util.EntityUtils;
|
|
import org.dom4j.Document;
|
|
import org.dom4j.Document;
|
|
import org.dom4j.Element;
|
|
import org.dom4j.Element;
|
|
import org.dom4j.io.SAXReader;
|
|
import org.dom4j.io.SAXReader;
|
|
-import org.springframework.boot.configurationprocessor.json.JSONObject;
|
|
|
|
import org.springframework.security.authentication.AuthenticationManager;
|
|
import org.springframework.security.authentication.AuthenticationManager;
|
|
import org.springframework.security.authentication.BadCredentialsException;
|
|
import org.springframework.security.authentication.BadCredentialsException;
|
|
import org.springframework.security.core.Authentication;
|
|
import org.springframework.security.core.Authentication;
|
|
@@ -82,17 +83,18 @@ public class WeiXinAuthServiceImpl implements IWeiXinAuthService {
|
|
/**
|
|
/**
|
|
* 微信扫码登录
|
|
* 微信扫码登录
|
|
*
|
|
*
|
|
- * @param agentId Long
|
|
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public TicketVo sacn(Long agentId) {
|
|
|
|
|
|
+ public TicketVo sacn() {
|
|
// 获取商户信息,商户没有微信公众号,就返回错误信息
|
|
// 获取商户信息,商户没有微信公众号,就返回错误信息
|
|
// WxConfig agentConfig = (WxConfig) sysParamsCache.getAgentConfig(String.valueOf(agentId));
|
|
// WxConfig agentConfig = (WxConfig) sysParamsCache.getAgentConfig(String.valueOf(agentId));
|
|
// AssertUtils.notNull(agentConfig, ErrorCode.COMPANY_NO_OPEN_WEIXIN);
|
|
// AssertUtils.notNull(agentConfig, ErrorCode.COMPANY_NO_OPEN_WEIXIN);
|
|
try {
|
|
try {
|
|
|
|
+ // TODO : 后期写活
|
|
|
|
+ Long agentId = 1810310843224322049L;
|
|
// sceneStr 是扫码后微信返回的参数
|
|
// sceneStr 是扫码后微信返回的参数
|
|
- return generateQRCode("wx:sceneStr");
|
|
|
|
|
|
+ return generateQRCode("" + agentId);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
throw new ServerException(ErrorCode.COMPANY_NO_OPEN_WEIXIN);
|
|
throw new ServerException(ErrorCode.COMPANY_NO_OPEN_WEIXIN);
|
|
}
|
|
}
|
|
@@ -113,9 +115,15 @@ public class WeiXinAuthServiceImpl implements IWeiXinAuthService {
|
|
"&secret=" + APPSECRET;
|
|
"&secret=" + APPSECRET;
|
|
HttpGet httpGet = new HttpGet(url);
|
|
HttpGet httpGet = new HttpGet(url);
|
|
HttpResponse httpResponse = httpClient.execute(httpGet);
|
|
HttpResponse httpResponse = httpClient.execute(httpGet);
|
|
|
|
+ log.info("httpResponse: {}", httpResponse);
|
|
String response = EntityUtils.toString(httpResponse.getEntity());
|
|
String response = EntityUtils.toString(httpResponse.getEntity());
|
|
- JSONObject jsonObject = new JSONObject(response);
|
|
|
|
- return jsonObject.getString("access_token");
|
|
|
|
|
|
+ log.info("response: {}", response);
|
|
|
|
+ JSONObject entries = new JSONObject(response);
|
|
|
|
+ return entries.getStr("access_token");
|
|
|
|
+//
|
|
|
|
+// JSONObject jsonObject = new JSONObject(response);
|
|
|
|
+// log.info("jsonObject: {}", jsonObject);
|
|
|
|
+// return jsonObject.getString("access_token");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -133,11 +141,13 @@ public class WeiXinAuthServiceImpl implements IWeiXinAuthService {
|
|
HttpPost httpPost = new HttpPost(url);
|
|
HttpPost httpPost = new HttpPost(url);
|
|
httpPost.setEntity(new StringEntity(postData, "UTF-8"));
|
|
httpPost.setEntity(new StringEntity(postData, "UTF-8"));
|
|
HttpResponse httpResponse = httpClient.execute(httpPost);
|
|
HttpResponse httpResponse = httpClient.execute(httpPost);
|
|
|
|
+ log.info("httpResponse: {}", httpResponse);
|
|
String response = EntityUtils.toString(httpResponse.getEntity());
|
|
String response = EntityUtils.toString(httpResponse.getEntity());
|
|
|
|
+ log.info("response: {}", response);
|
|
|
|
|
|
// 获取ticket
|
|
// 获取ticket
|
|
- org.springframework.boot.configurationprocessor.json.JSONObject jsonObject = new org.springframework.boot.configurationprocessor.json.JSONObject(response);
|
|
|
|
- String ticket = jsonObject.getString("ticket");
|
|
|
|
|
|
+ JSONObject jsonObject = new JSONObject(response);
|
|
|
|
+ String ticket = jsonObject.getStr("ticket");
|
|
TicketVo ticketVo = new TicketVo();
|
|
TicketVo ticketVo = new TicketVo();
|
|
ticketVo.setTicket(ticket);
|
|
ticketVo.setTicket(ticket);
|
|
ticketVo.setCodeUrl("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + URLEncoder.encode(ticket, "UTF-8"));
|
|
ticketVo.setCodeUrl("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + URLEncoder.encode(ticket, "UTF-8"));
|
|
@@ -155,9 +165,9 @@ public class WeiXinAuthServiceImpl implements IWeiXinAuthService {
|
|
@Override
|
|
@Override
|
|
public AccessTokenVo auth(String code, Long agentId) {
|
|
public AccessTokenVo auth(String code, Long agentId) {
|
|
// 帮我生成微信授权携带的code码
|
|
// 帮我生成微信授权携带的code码
|
|
- getBaseUserInfoByOpenid(code, agentId);
|
|
|
|
|
|
+ AccessTokenVo baseUserInfoByOpenid = getBaseUserInfoByOpenid(code, agentId);
|
|
|
|
|
|
- return null;
|
|
|
|
|
|
+ return baseUserInfoByOpenid;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -195,6 +205,21 @@ public class WeiXinAuthServiceImpl implements IWeiXinAuthService {
|
|
if (StringUtils.isNotEmpty(scene_str)) {
|
|
if (StringUtils.isNotEmpty(scene_str)) {
|
|
// 将微信公众号用户ID缓存到redis中,标记用户已经扫码完成,执行登录逻辑。
|
|
// 将微信公众号用户ID缓存到redis中,标记用户已经扫码完成,执行登录逻辑。
|
|
sysParamsCache.setUserStatus(ticket, fromUserName);
|
|
sysParamsCache.setUserStatus(ticket, fromUserName);
|
|
|
|
+
|
|
|
|
+ // 判断用户是否注册过本代理商公众号
|
|
|
|
+ BaseUser baseUser = baseUserMapper.selectOne(new LambdaQueryWrapper<BaseUser>()
|
|
|
|
+ .select(BaseUser::getId)
|
|
|
|
+ .eq(BaseUser::getOpenid, fromUserName)
|
|
|
|
+ .eq(BaseUser::getAgentMerId, Long.getLong(scene_str)));
|
|
|
|
+ if (baseUser == null) {
|
|
|
|
+ // 未注册过,则自动注册
|
|
|
|
+ baseUser = new BaseUser();
|
|
|
|
+ baseUser.setOpenid(fromUserName);
|
|
|
|
+ baseUser.setAgentMerId(Long.getLong(scene_str));
|
|
|
|
+ baseUser.setSurplusFuel(10L);
|
|
|
|
+ baseUser.setStatus(1);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
//返回消息
|
|
//返回消息
|
|
try {
|
|
try {
|
|
@@ -206,6 +231,7 @@ public class WeiXinAuthServiceImpl implements IWeiXinAuthService {
|
|
|
|
|
|
/**
|
|
/**
|
|
* 扫码循环判断是否登录
|
|
* 扫码循环判断是否登录
|
|
|
|
+ *
|
|
* @param ticket
|
|
* @param ticket
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@@ -298,6 +324,8 @@ public class WeiXinAuthServiceImpl implements IWeiXinAuthService {
|
|
// 未授权登录过,授权,登记用户信息
|
|
// 未授权登录过,授权,登记用户信息
|
|
WxMpUser wxMpUser = wxMpService.getUserService().userInfo(accessToken.getOpenId());
|
|
WxMpUser wxMpUser = wxMpService.getUserService().userInfo(accessToken.getOpenId());
|
|
baseUser.setAgentMerId(agentId);
|
|
baseUser.setAgentMerId(agentId);
|
|
|
|
+ baseUser.setOpenid(wxMpUser.getOpenId());
|
|
|
|
+ baseUserMapper.insert(baseUser);
|
|
//新增一个系统用户,不给这个用户账号密码
|
|
//新增一个系统用户,不给这个用户账号密码
|
|
//绑定微信基础用户角色
|
|
//绑定微信基础用户角色
|
|
// SysRole sysRole = roleMapper.selectRoleIdByRoleKey(MerTypeConst.BASE_USER);
|
|
// SysRole sysRole = roleMapper.selectRoleIdByRoleKey(MerTypeConst.BASE_USER);
|