Browse Source

动态化微信配置 优化用户登陆逻辑

master
yanyan 3 years ago
parent
commit
c7f48f18b2
  1. 2
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/java/com/zdxt/RuoYiApplication.java
  2. 5
      lib/EmergencyService/zdxtEmergencyKnowledgeService/pom.xml
  3. 49
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/domain/WechatProperties.java
  4. 21
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/SceneManageServiceImpl.java
  5. 23
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/WechatServiceImpl.java
  6. 5
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/resources/mapper/WechatLoginMapper.xml

2
lib/EmergencyService/zdxtEmergencyBootStart/src/main/java/com/zdxt/RuoYiApplication.java

@ -5,6 +5,7 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
/** /**
@ -13,6 +14,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
* @author ruoyi * @author ruoyi
*/ */
@Slf4j @Slf4j
@EnableConfigurationProperties
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@MapperScan(value = {"com.zdxt.**.mapper"}) @MapperScan(value = {"com.zdxt.**.mapper"})
@EnableTransactionManagement @EnableTransactionManagement

5
lib/EmergencyService/zdxtEmergencyKnowledgeService/pom.xml

@ -53,6 +53,11 @@
<version>1.0</version> <version>1.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies> </dependencies>
</project> </project>

49
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/domain/WechatProperties.java

@ -0,0 +1,49 @@
package com.zdxt.knowledge.domain;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "wechat.config")
public class WechatProperties {
private String appId;
private String secret;
private String grantType;
private String requestUrl;
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public String getSecret() {
return secret;
}
public void setSecret(String secret) {
this.secret = secret;
}
public String getGrantType() {
return grantType;
}
public void setGrantType(String grantType) {
this.grantType = grantType;
}
public String getRequestUrl() {
return requestUrl;
}
public void setRequestUrl(String requestUrl) {
this.requestUrl = requestUrl;
}
}

21
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/SceneManageServiceImpl.java

@ -24,6 +24,7 @@ import com.zdxt.common.zdxtFile.ZdxtFileCommon;
import com.zdxt.knowledge.domain.LocalFileMultipartFile; import com.zdxt.knowledge.domain.LocalFileMultipartFile;
import com.zdxt.knowledge.domain.SceneImportDataModel; import com.zdxt.knowledge.domain.SceneImportDataModel;
import com.zdxt.knowledge.domain.SceneManage; import com.zdxt.knowledge.domain.SceneManage;
import com.zdxt.knowledge.domain.WechatProperties;
import com.zdxt.knowledge.mapper.SceneManageMapper; import com.zdxt.knowledge.mapper.SceneManageMapper;
import com.zdxt.knowledge.service.ISceneManageService; import com.zdxt.knowledge.service.ISceneManageService;
import com.zdxt.knowledge.utils.ExcelUtil; import com.zdxt.knowledge.utils.ExcelUtil;
@ -69,9 +70,8 @@ public class SceneManageServiceImpl implements ISceneManageService {
@Autowired @Autowired
private ZdxtFileCommonApi zdxtFileCommonApi; private ZdxtFileCommonApi zdxtFileCommonApi;
private static final String APPID = "wx93ec514a5c456507"; @Autowired
private WechatProperties wechatProperties;
private static final String SECRET = "f5a3f295dbee3cc1c2f73b9a324c2eb2";
/** /**
* 查询【请填写功能名称】 * 查询【请填写功能名称】
@ -112,25 +112,26 @@ public class SceneManageServiceImpl implements ISceneManageService {
@Override @Override
public ZDResponse getQRCode() throws Exception { public ZDResponse getQRCode() throws Exception {
String appId = wechatProperties.getAppId();
ZdxtFileBean zdxtFileBean = new ZdxtFileBean(); ZdxtFileBean zdxtFileBean = new ZdxtFileBean();
zdxtFileBean.setBusinessId(APPID); zdxtFileBean.setBusinessId(appId);
List<ZdxtFileBean> zdxtFileBeans = zdxtFileCommonApi.selectZdxtFileList(zdxtFileBean); List<ZdxtFileBean> zdxtFileBeans = zdxtFileCommonApi.selectZdxtFileList(zdxtFileBean);
if (CollectionUtils.isEmpty(zdxtFileBeans)) { if (CollectionUtils.isEmpty(zdxtFileBeans)) {
InputStream inputStream = generateQRCode(APPID); InputStream inputStream = generateQRCode(appId);
//存入本地数据库 //存入本地数据库
File file = File.createTempFile("temp", ".png"); File file = File.createTempFile("temp", ".png");
FileUtils.copyInputStreamToFile(inputStream, file); FileUtils.copyInputStreamToFile(inputStream, file);
MultipartFile multipartFile = new LocalFileMultipartFile(file); MultipartFile multipartFile = new LocalFileMultipartFile(file);
String uploadPath = fileUploadApi.upload(multipartFile); String uploadPath = fileUploadApi.upload(multipartFile);
zdxtFileCommonApi.deleteZdxtFileByIds(APPID); zdxtFileCommonApi.deleteZdxtFileByIds(appId);
//zdxtFileCommonApi.insertZdxtFile(multipartFile, APPID, uploadPath); //zdxtFileCommonApi.insertZdxtFile(multipartFile, APPID, uploadPath);
ZdxtFileCommon zdxtFileCommon = new ZdxtFileCommon(); ZdxtFileCommon zdxtFileCommon = new ZdxtFileCommon();
zdxtFileCommon.setUploadPersonId("0000"); zdxtFileCommon.setUploadPersonId("0000");
zdxtFileCommon.setUploadPersonName("System"); zdxtFileCommon.setUploadPersonName("System");
zdxtFileCommon.setUploadPath(uploadPath); zdxtFileCommon.setUploadPath(uploadPath);
zdxtFileCommon.setGuid(StringUtils.getUUID()); zdxtFileCommon.setGuid(StringUtils.getUUID());
zdxtFileCommon.setBusinessId(APPID); zdxtFileCommon.setBusinessId(appId);
zdxtFileCommonApi.insertZdxtFileToApp(multipartFile,zdxtFileCommon); zdxtFileCommonApi.insertZdxtFileToApp(multipartFile, zdxtFileCommon);
file.deleteOnExit(); file.deleteOnExit();
return ZDResponse.success("成功", uploadPath); return ZDResponse.success("成功", uploadPath);
} }
@ -203,8 +204,8 @@ public class SceneManageServiceImpl implements ISceneManageService {
} }
public String getAccessToken() { public String getAccessToken() {
String appid = APPID; String appid = wechatProperties.getAppId();
String secret = SECRET; String secret = wechatProperties.getSecret();
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret; String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret;
String result = HttpUtil.get(url); String result = HttpUtil.get(url);
JSONObject jsonObject = JSONUtil.parseObj(result); JSONObject jsonObject = JSONUtil.parseObj(result);

23
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/WechatServiceImpl.java

@ -6,10 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.zdxt.common.ZDResponse; import com.zdxt.common.ZDResponse;
import com.zdxt.common.util.Convert; import com.zdxt.common.util.Convert;
import com.zdxt.common.util.StringUtils; import com.zdxt.common.util.StringUtils;
import com.zdxt.knowledge.domain.RawDataDO; import com.zdxt.knowledge.domain.*;
import com.zdxt.knowledge.domain.SceneMedal;
import com.zdxt.knowledge.domain.WechatLoginRequest;
import com.zdxt.knowledge.domain.WechatUser;
import com.zdxt.knowledge.mapper.SceneMedalMapper; import com.zdxt.knowledge.mapper.SceneMedalMapper;
import com.zdxt.knowledge.mapper.WechatLoginMapper; import com.zdxt.knowledge.mapper.WechatLoginMapper;
import com.zdxt.knowledge.service.WechatService; import com.zdxt.knowledge.service.WechatService;
@ -44,10 +41,8 @@ public class WechatServiceImpl implements WechatService {
@Autowired @Autowired
private SceneMedalMapper sceneMedalMapper; private SceneMedalMapper sceneMedalMapper;
private static final String REQUEST_URL = "https://api.weixin.qq.com/sns/jscode2session"; @Autowired
private static final String APPID = "wx93ec514a5c456507"; private WechatProperties wechatProperties;
private static final String SECRET = "f5a3f295dbee3cc1c2f73b9a324c2eb2";
private static final String GRANT_TYPE = "authorization_code";
@Override @Override
@ -110,7 +105,7 @@ public class WechatServiceImpl implements WechatService {
userInfoMap.put("userId", insertOrUpdateDO.getGuid()); userInfoMap.put("userId", insertOrUpdateDO.getGuid());
} else { } else {
userInfoMap.put("token", openId); userInfoMap.put("token", openId);
userInfoMap.put("userId", insertOrUpdateDO.getGuid()); userInfoMap.put("userId", user.getGuid());
// 已存在,做已存在的处理,如更新用户的头像,昵称等,根据openID更新 // 已存在,做已存在的处理,如更新用户的头像,昵称等,根据openID更新
//wechatLoginMapper.updateByOpenId(insertOrUpdateDO); //wechatLoginMapper.updateByOpenId(insertOrUpdateDO);
} }
@ -143,20 +138,20 @@ public class WechatServiceImpl implements WechatService {
Map<String, String> requestUrlParam = new HashMap<>(); Map<String, String> requestUrlParam = new HashMap<>();
// 小程序appId // 小程序appId
requestUrlParam.put("appid", APPID); requestUrlParam.put("appid", wechatProperties.getAppId());
// 小程序secret // 小程序secret
requestUrlParam.put("secret", SECRET); requestUrlParam.put("secret", wechatProperties.getSecret());
// 小程序端返回的code // 小程序端返回的code
requestUrlParam.put("js_code", code); requestUrlParam.put("js_code", code);
// 默认参数 // 默认参数
requestUrlParam.put("grant_type", GRANT_TYPE); requestUrlParam.put("grant_type", wechatProperties.getGrantType());
// 发送post请求读取调用微信接口获取openid用户唯一标识 // 发送post请求读取调用微信接口获取openid用户唯一标识
String result = HttpClientUtils.doPost(REQUEST_URL, requestUrlParam); String result = HttpClientUtils.doPost(wechatProperties.getRequestUrl(), requestUrlParam);
return JSON.parseObject(result); return JSON.parseObject(result);
} }
private WechatUser buildWechatUserAuthInfoDO(WechatLoginRequest loginRequest, String sessionKey, String openId) { private WechatUser buildWechatUserAuthInfoDO(WechatLoginRequest loginRequest, String openId, String sessionKey) {
WechatUser wechatUserDO = new WechatUser(); WechatUser wechatUserDO = new WechatUser();
wechatUserDO.setOpenId(openId); wechatUserDO.setOpenId(openId);

5
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/resources/mapper/WechatLoginMapper.xml

@ -5,7 +5,6 @@
<resultMap type="com.zdxt.knowledge.domain.WechatUser" id="WechatUserResult"> <resultMap type="com.zdxt.knowledge.domain.WechatUser" id="WechatUserResult">
<result property="guid" column="guid"/> <result property="guid" column="guid"/>
<result property="token" column="token"/>
<result property="nickname" column="nickname"/> <result property="nickname" column="nickname"/>
<result property="avatarUrl" column="avatar_url"/> <result property="avatarUrl" column="avatar_url"/>
<result property="gender" column="gender"/> <result property="gender" column="gender"/>
@ -24,7 +23,6 @@
<sql id="selectWechatUserVo"> <sql id="selectWechatUserVo">
select guid, select guid,
token,
nickname, nickname,
avatar_url, avatar_url,
gender, gender,
@ -74,7 +72,6 @@
insert into wechat_user insert into wechat_user
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="guid != null ">guid,</if> <if test="guid != null ">guid,</if>
<if test="token != null and token != ''">`token`,</if>
<if test="nickname != null and nickname != ''">nickname,</if> <if test="nickname != null and nickname != ''">nickname,</if>
<if test="avatarUrl != null and avatarUrl != ''">avatar_url,</if> <if test="avatarUrl != null and avatarUrl != ''">avatar_url,</if>
<if test="gender != null and gender != ''">gender,</if> <if test="gender != null and gender != ''">gender,</if>
@ -89,7 +86,6 @@
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="guid != null ">#{guid},</if> <if test="guid != null ">#{guid},</if>
<if test="token != null and token != ''">#{token},</if>
<if test="nickname != null and nickname != ''">#{nickname},</if> <if test="nickname != null and nickname != ''">#{nickname},</if>
<if test="avatarUrl != null and avatarUrl != ''">#{avatarUrl},</if> <if test="avatarUrl != null and avatarUrl != ''">#{avatarUrl},</if>
<if test="gender != null and gender != ''">#{gender},</if> <if test="gender != null and gender != ''">#{gender},</if>
@ -107,7 +103,6 @@
<update id="updateById" parameterType="WechatUser"> <update id="updateById" parameterType="WechatUser">
update wechat_user update wechat_user
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
<if test="token != null and token != ''">token = #{token},</if>
<if test="nickname != null and nickname != ''">nickname = #{nickname},</if> <if test="nickname != null and nickname != ''">nickname = #{nickname},</if>
<if test="avatarUrl != null and avatarUrl != ''">avatar_url = #{avatarUrl},</if> <if test="avatarUrl != null and avatarUrl != ''">avatar_url = #{avatarUrl},</if>
<if test="gender != null and gender != ''">gender = #{gender},</if> <if test="gender != null and gender != ''">gender = #{gender},</if>

Loading…
Cancel
Save