From 9d5b198ecb5fefae265973f89a3c3dd047a148b3 Mon Sep 17 00:00:00 2001
From: wanggeng888 <450292408@qq.com>
Date: Thu, 29 Apr 2021 11:16:42 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=BE=AE=E4=BF=A1=E5=B0=8F?=
=?UTF-8?q?=E7=A8=8B=E5=BA=8F=E7=94=A8=E6=88=B7=E5=92=8C=E5=85=AC=E4=BC=97?=
=?UTF-8?q?=E5=8F=B7=E7=94=A8=E6=88=B7=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../interfaces/consts/ISystemConstant.java | 5 +++
.../wechat/miniapp/MiniAppProperties.java | 2 +-
.../account/OfficialAccountProperties.java | 2 +-
login-wechat/pom.xml | 5 +++
.../api/sign/MiniAppSignController.java | 7 ++++
.../service/sign/IMiniAppSignService.java | 2 -
.../sign/impl/MiniAppSignServiceImpl.java | 9 ++---
.../wechat/startup/LoginWechatStartUp.java | 40 -------------------
module-wechat/pom.xml | 2 +-
.../OfficialAccountWechatController.java | 11 ++++-
.../wechat/dao/miniapp}/IMiniAppUserDao.java | 4 +-
.../pojo/bos/miniapp}/MiniAppUserInfoBO.java | 2 +-
.../pojo/pos/miniapp}/MiniAppUserPO.java | 2 +-
.../service/miniapp}/IMiniAppUserService.java | 10 ++++-
.../miniapp}/impl/MiniAppUserServiceImpl.java | 18 ++++-----
.../account/IOfficialAccountUserService.java | 9 ++++-
.../impl/OfficialAccountUserServiceImpl.java | 23 +++++++++++
.../module/wechat/startup/WechatStartUp.java | 22 +++++++++-
.../mybatis/mapper/miniapp-user-mapper.xml | 4 +-
.../user/service/impl/UserServiceImpl.java | 2 +-
20 files changed, 106 insertions(+), 75 deletions(-)
delete mode 100644 login-wechat/src/main/java/ink/wgink/login/wechat/startup/LoginWechatStartUp.java
rename {login-wechat/src/main/java/ink/wgink/login/wechat/dao/user => module-wechat/src/main/java/ink/wgink/module/wechat/dao/miniapp}/IMiniAppUserDao.java (89%)
rename {login-wechat/src/main/java/ink/wgink/login/wechat/pojo/bos/user => module-wechat/src/main/java/ink/wgink/module/wechat/pojo/bos/miniapp}/MiniAppUserInfoBO.java (97%)
rename {login-wechat/src/main/java/ink/wgink/login/wechat/pojo/pos/user => module-wechat/src/main/java/ink/wgink/module/wechat/pojo/pos/miniapp}/MiniAppUserPO.java (96%)
rename {login-wechat/src/main/java/ink/wgink/login/wechat/service/user => module-wechat/src/main/java/ink/wgink/module/wechat/service/miniapp}/IMiniAppUserService.java (82%)
rename {login-wechat/src/main/java/ink/wgink/login/wechat/service/user => module-wechat/src/main/java/ink/wgink/module/wechat/service/miniapp}/impl/MiniAppUserServiceImpl.java (80%)
rename {login-wechat => module-wechat}/src/main/resources/mybatis/mapper/miniapp-user-mapper.xml (92%)
diff --git a/basic-interface/src/main/java/ink/wgink/interfaces/consts/ISystemConstant.java b/basic-interface/src/main/java/ink/wgink/interfaces/consts/ISystemConstant.java
index 1766123f..21ee3e2d 100644
--- a/basic-interface/src/main/java/ink/wgink/interfaces/consts/ISystemConstant.java
+++ b/basic-interface/src/main/java/ink/wgink/interfaces/consts/ISystemConstant.java
@@ -190,4 +190,9 @@ public interface ISystemConstant {
*/
String DATE_FORMATTER_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
+ /**
+ * 默认密码
+ */
+ String DEFAULT_PASSWORD = "88888888";
+
}
diff --git a/basic-properties/src/main/java/ink/wgink/properties/wechat/miniapp/MiniAppProperties.java b/basic-properties/src/main/java/ink/wgink/properties/wechat/miniapp/MiniAppProperties.java
index 1d3ba802..a6ac6902 100644
--- a/basic-properties/src/main/java/ink/wgink/properties/wechat/miniapp/MiniAppProperties.java
+++ b/basic-properties/src/main/java/ink/wgink/properties/wechat/miniapp/MiniAppProperties.java
@@ -24,7 +24,7 @@ public class MiniAppProperties {
private String appSecret;
public Boolean getActive() {
- return active;
+ return active == null ? false : active;
}
public void setActive(Boolean active) {
diff --git a/basic-properties/src/main/java/ink/wgink/properties/wechat/official/account/OfficialAccountProperties.java b/basic-properties/src/main/java/ink/wgink/properties/wechat/official/account/OfficialAccountProperties.java
index 4bac42d3..c6607015 100644
--- a/basic-properties/src/main/java/ink/wgink/properties/wechat/official/account/OfficialAccountProperties.java
+++ b/basic-properties/src/main/java/ink/wgink/properties/wechat/official/account/OfficialAccountProperties.java
@@ -35,7 +35,7 @@ public class OfficialAccountProperties {
}
public Boolean getActivate() {
- return activate;
+ return activate == null ? false : activate;
}
public void setActivate(Boolean activate) {
diff --git a/login-wechat/pom.xml b/login-wechat/pom.xml
index 9759351d..61aab02e 100644
--- a/login-wechat/pom.xml
+++ b/login-wechat/pom.xml
@@ -17,6 +17,11 @@
login-base
1.0-SNAPSHOT
+
+ ink.wgink
+ module-wechat
+ 1.0-SNAPSHOT
+
\ No newline at end of file
diff --git a/login-wechat/src/main/java/ink/wgink/login/wechat/controller/api/sign/MiniAppSignController.java b/login-wechat/src/main/java/ink/wgink/login/wechat/controller/api/sign/MiniAppSignController.java
index 4328d5d3..2fe776ce 100644
--- a/login-wechat/src/main/java/ink/wgink/login/wechat/controller/api/sign/MiniAppSignController.java
+++ b/login-wechat/src/main/java/ink/wgink/login/wechat/controller/api/sign/MiniAppSignController.java
@@ -1,10 +1,12 @@
package ink.wgink.login.wechat.controller.api.sign;
import ink.wgink.annotation.CheckRequestBodyAnnotation;
+import ink.wgink.exceptions.PropertiesException;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.login.wechat.pojo.vos.sign.MiniAppLoginVO;
import ink.wgink.login.wechat.service.sign.IMiniAppSignService;
import ink.wgink.pojo.result.SuccessResultData;
+import ink.wgink.properties.wechat.miniapp.MiniAppProperties;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@@ -27,12 +29,17 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping(ISystemConstant.WECHAT_MINI_APP_PREFIX + "/sign")
public class MiniAppSignController {
+ @Autowired
+ private MiniAppProperties miniAppProperties;
@Autowired
private IMiniAppSignService miniAppSignService;
@PostMapping("default")
@CheckRequestBodyAnnotation
public SuccessResultData defaultSign(@RequestBody MiniAppLoginVO miniAppLoginVO) throws Exception {
+ if (!miniAppProperties.getActive()) {
+ throw new PropertiesException("小程序配置未激活");
+ }
return new SuccessResultData<>(miniAppSignService.defaultSign(miniAppLoginVO));
}
diff --git a/login-wechat/src/main/java/ink/wgink/login/wechat/service/sign/IMiniAppSignService.java b/login-wechat/src/main/java/ink/wgink/login/wechat/service/sign/IMiniAppSignService.java
index e8e88a2f..8ff44fec 100644
--- a/login-wechat/src/main/java/ink/wgink/login/wechat/service/sign/IMiniAppSignService.java
+++ b/login-wechat/src/main/java/ink/wgink/login/wechat/service/sign/IMiniAppSignService.java
@@ -15,8 +15,6 @@ import ink.wgink.pojo.result.SuccessResultData;
*/
public interface IMiniAppSignService {
- String WECHAT_RANDOM_USER_PREFIX = "WX_";
-
/**
* 默认登录
*
diff --git a/login-wechat/src/main/java/ink/wgink/login/wechat/service/sign/impl/MiniAppSignServiceImpl.java b/login-wechat/src/main/java/ink/wgink/login/wechat/service/sign/impl/MiniAppSignServiceImpl.java
index bf0528d3..1ff292b5 100644
--- a/login-wechat/src/main/java/ink/wgink/login/wechat/service/sign/impl/MiniAppSignServiceImpl.java
+++ b/login-wechat/src/main/java/ink/wgink/login/wechat/service/sign/impl/MiniAppSignServiceImpl.java
@@ -7,11 +7,11 @@ import ink.wgink.exceptions.WechatAccessTokenForUserException;
import ink.wgink.exceptions.WechatUserInfoException;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.login.base.service.BaseAppSignService;
+import ink.wgink.module.wechat.pojo.bos.miniapp.MiniAppUserInfoBO;
+import ink.wgink.module.wechat.service.miniapp.IMiniAppUserService;
import ink.wgink.properties.wechat.miniapp.MiniAppProperties;
-import ink.wgink.login.wechat.pojo.bos.user.MiniAppUserInfoBO;
import ink.wgink.login.wechat.pojo.vos.sign.MiniAppLoginVO;
import ink.wgink.login.wechat.service.sign.IMiniAppSignService;
-import ink.wgink.login.wechat.service.user.IMiniAppUserService;
import ink.wgink.service.user.pojo.pos.UserPO;
import ink.wgink.service.user.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -46,9 +46,6 @@ public class MiniAppSignServiceImpl extends BaseAppSignService implements IMiniA
if (miniAppLoginVO == null) {
throw new PropertiesException("未有相关配置");
}
- if (miniAppProperties.getActive() == null || !miniAppProperties.getActive()) {
- throw new PropertiesException("未激活小程序配置");
- }
Map params = new HashMap<>(2);
params.put("appid", miniAppProperties.getAppKey());
params.put("secret", miniAppProperties.getAppSecret());
@@ -74,7 +71,7 @@ public class MiniAppSignServiceImpl extends BaseAppSignService implements IMiniA
throw new SearchException("用户不存在");
}
String isRandomUsername = ISystemConstant.IS_FALSE_INT;
- if (userPO.getUserUsername().startsWith(IMiniAppSignService.WECHAT_RANDOM_USER_PREFIX)) {
+ if (userPO.getUserUsername().startsWith(IMiniAppUserService.MINIAPP_RANDOM_USER_PREFIX)) {
isRandomUsername = ISystemConstant.IS_TRUE_INT;
}
return getToken(userPO) + "_" + isRandomUsername;
diff --git a/login-wechat/src/main/java/ink/wgink/login/wechat/startup/LoginWechatStartUp.java b/login-wechat/src/main/java/ink/wgink/login/wechat/startup/LoginWechatStartUp.java
deleted file mode 100644
index 79920ed4..00000000
--- a/login-wechat/src/main/java/ink/wgink/login/wechat/startup/LoginWechatStartUp.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package ink.wgink.login.wechat.startup;
-
-import ink.wgink.login.wechat.dao.user.IMiniAppUserDao;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.stereotype.Component;
-
-/**
- * When you feel like quitting. Think about why you started
- * 当你想要放弃的时候,想想当初你为何开始
- *
- * @ClassName: LoginWechatStartUp
- * @Description: 微信登录
- * @Author: wanggeng
- * @Date: 2021/4/9 11:44 上午
- * @Version: 1.0
- */
-@Component
-public class LoginWechatStartUp implements ApplicationRunner {
-
- private static final Logger LOG = LoggerFactory.getLogger(LoginWechatStartUp.class);
- @Autowired
- private IMiniAppUserDao miniAppUserDao;
-
- @Override
- public void run(ApplicationArguments args) throws Exception {
- initTable();
- }
-
- /**
- * 建表
- */
- private void initTable() {
- LOG.debug("创建 wechat_mini_app_user 表");
- miniAppUserDao.createTable();
- }
-}
diff --git a/module-wechat/pom.xml b/module-wechat/pom.xml
index aa0f1b09..45ee0434 100644
--- a/module-wechat/pom.xml
+++ b/module-wechat/pom.xml
@@ -14,7 +14,7 @@
ink.wgink
- common
+ service-user
1.0-SNAPSHOT
diff --git a/module-wechat/src/main/java/ink/wgink/module/wechat/controller/official/account/OfficialAccountWechatController.java b/module-wechat/src/main/java/ink/wgink/module/wechat/controller/official/account/OfficialAccountWechatController.java
index 520fed34..5c655b90 100644
--- a/module-wechat/src/main/java/ink/wgink/module/wechat/controller/official/account/OfficialAccountWechatController.java
+++ b/module-wechat/src/main/java/ink/wgink/module/wechat/controller/official/account/OfficialAccountWechatController.java
@@ -2,6 +2,7 @@ package ink.wgink.module.wechat.controller.official.account;
import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.exceptions.ParamsException;
+import ink.wgink.exceptions.PropertiesException;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.wechat.enums.XmlEventTypeEnum;
import ink.wgink.module.wechat.enums.XmlMsgTypeEnum;
@@ -9,6 +10,7 @@ import ink.wgink.module.wechat.pojo.vos.official.account.OfficialAccountUserVO;
import ink.wgink.module.wechat.result.OfficialAccountEventResult;
import ink.wgink.module.wechat.service.official.account.IOfficialAccountCheckService;
import ink.wgink.module.wechat.service.official.account.IOfficialAccountUserService;
+import ink.wgink.properties.wechat.official.account.OfficialAccountProperties;
import ink.wgink.util.xml.XMLUtil;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
@@ -41,6 +43,8 @@ import java.util.concurrent.CompletableFuture;
@RequestMapping(ISystemConstant.WECHAT_PREFIX + "/official/account")
public class OfficialAccountWechatController extends DefaultBaseController {
+ @Autowired
+ private OfficialAccountProperties officialAccountProperties;
@Autowired
private IOfficialAccountCheckService officialAccountCheckService;
@Autowired
@@ -48,6 +52,9 @@ public class OfficialAccountWechatController extends DefaultBaseController {
@RequestMapping("event")
public void event(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ if (!officialAccountProperties.getActivate()) {
+ throw new PropertiesException("公众号配置未激活");
+ }
// 处理认证
if (StringUtils.equalsIgnoreCase(HttpMethod.GET.toString(), request.getMethod())) {
officialAccountCheckService.checkSignature(request, response);
@@ -102,7 +109,9 @@ public class OfficialAccountWechatController extends DefaultBaseController {
if (StringUtils.equalsIgnoreCase(XmlEventTypeEnum.SUBSCRIBE.getType(), officialAccountEventResult.getEvent())) {
OfficialAccountUserVO officialAccountUserVO = new OfficialAccountUserVO();
officialAccountUserVO.setOpenId(officialAccountEventResult.getFromUserName());
- officialAccountUserService.save(officialAccountUserVO);
+ synchronized (this) {
+ officialAccountUserService.save(officialAccountUserVO);
+ }
} else if (StringUtils.equalsIgnoreCase(XmlEventTypeEnum.UNSUBSCRIBE.getType(), officialAccountEventResult.getEvent())) {
officialAccountUserService.updateStatus(officialAccountEventResult.getFromUserName(), XmlEventTypeEnum.UNSUBSCRIBE);
}
diff --git a/login-wechat/src/main/java/ink/wgink/login/wechat/dao/user/IMiniAppUserDao.java b/module-wechat/src/main/java/ink/wgink/module/wechat/dao/miniapp/IMiniAppUserDao.java
similarity index 89%
rename from login-wechat/src/main/java/ink/wgink/login/wechat/dao/user/IMiniAppUserDao.java
rename to module-wechat/src/main/java/ink/wgink/module/wechat/dao/miniapp/IMiniAppUserDao.java
index 482f49fd..8a57c232 100644
--- a/login-wechat/src/main/java/ink/wgink/login/wechat/dao/user/IMiniAppUserDao.java
+++ b/module-wechat/src/main/java/ink/wgink/module/wechat/dao/miniapp/IMiniAppUserDao.java
@@ -1,9 +1,9 @@
-package ink.wgink.login.wechat.dao.user;
+package ink.wgink.module.wechat.dao.miniapp;
import ink.wgink.exceptions.SaveException;
import ink.wgink.exceptions.SearchException;
import ink.wgink.exceptions.UpdateException;
-import ink.wgink.login.wechat.pojo.pos.user.MiniAppUserPO;
+import ink.wgink.module.wechat.pojo.pos.miniapp.MiniAppUserPO;
import org.springframework.stereotype.Repository;
import java.util.Map;
diff --git a/login-wechat/src/main/java/ink/wgink/login/wechat/pojo/bos/user/MiniAppUserInfoBO.java b/module-wechat/src/main/java/ink/wgink/module/wechat/pojo/bos/miniapp/MiniAppUserInfoBO.java
similarity index 97%
rename from login-wechat/src/main/java/ink/wgink/login/wechat/pojo/bos/user/MiniAppUserInfoBO.java
rename to module-wechat/src/main/java/ink/wgink/module/wechat/pojo/bos/miniapp/MiniAppUserInfoBO.java
index 59a45ec1..5199b11d 100644
--- a/login-wechat/src/main/java/ink/wgink/login/wechat/pojo/bos/user/MiniAppUserInfoBO.java
+++ b/module-wechat/src/main/java/ink/wgink/module/wechat/pojo/bos/miniapp/MiniAppUserInfoBO.java
@@ -1,4 +1,4 @@
-package ink.wgink.login.wechat.pojo.bos.user;
+package ink.wgink.module.wechat.pojo.bos.miniapp;
/**
* When you feel like quitting. Think about why you started
diff --git a/login-wechat/src/main/java/ink/wgink/login/wechat/pojo/pos/user/MiniAppUserPO.java b/module-wechat/src/main/java/ink/wgink/module/wechat/pojo/pos/miniapp/MiniAppUserPO.java
similarity index 96%
rename from login-wechat/src/main/java/ink/wgink/login/wechat/pojo/pos/user/MiniAppUserPO.java
rename to module-wechat/src/main/java/ink/wgink/module/wechat/pojo/pos/miniapp/MiniAppUserPO.java
index b51ce344..2fc06fec 100644
--- a/login-wechat/src/main/java/ink/wgink/login/wechat/pojo/pos/user/MiniAppUserPO.java
+++ b/module-wechat/src/main/java/ink/wgink/module/wechat/pojo/pos/miniapp/MiniAppUserPO.java
@@ -1,4 +1,4 @@
-package ink.wgink.login.wechat.pojo.pos.user;
+package ink.wgink.module.wechat.pojo.pos.miniapp;
import java.io.Serializable;
diff --git a/login-wechat/src/main/java/ink/wgink/login/wechat/service/user/IMiniAppUserService.java b/module-wechat/src/main/java/ink/wgink/module/wechat/service/miniapp/IMiniAppUserService.java
similarity index 82%
rename from login-wechat/src/main/java/ink/wgink/login/wechat/service/user/IMiniAppUserService.java
rename to module-wechat/src/main/java/ink/wgink/module/wechat/service/miniapp/IMiniAppUserService.java
index 0ae2f047..713696d2 100644
--- a/login-wechat/src/main/java/ink/wgink/login/wechat/service/user/IMiniAppUserService.java
+++ b/module-wechat/src/main/java/ink/wgink/module/wechat/service/miniapp/IMiniAppUserService.java
@@ -1,6 +1,7 @@
-package ink.wgink.login.wechat.service.user;
+package ink.wgink.module.wechat.service.miniapp;
-import ink.wgink.login.wechat.pojo.pos.user.MiniAppUserPO;
+
+import ink.wgink.module.wechat.pojo.pos.miniapp.MiniAppUserPO;
import java.util.Map;
@@ -16,6 +17,11 @@ import java.util.Map;
*/
public interface IMiniAppUserService {
+ /**
+ * 微信随机用户前缀
+ */
+ String MINIAPP_RANDOM_USER_PREFIX = "WXM_";
+
/**
* 创建用户并返回用户ID,已经存在的不操作
*
diff --git a/login-wechat/src/main/java/ink/wgink/login/wechat/service/user/impl/MiniAppUserServiceImpl.java b/module-wechat/src/main/java/ink/wgink/module/wechat/service/miniapp/impl/MiniAppUserServiceImpl.java
similarity index 80%
rename from login-wechat/src/main/java/ink/wgink/login/wechat/service/user/impl/MiniAppUserServiceImpl.java
rename to module-wechat/src/main/java/ink/wgink/module/wechat/service/miniapp/impl/MiniAppUserServiceImpl.java
index cdda2b73..45b0e54b 100644
--- a/login-wechat/src/main/java/ink/wgink/login/wechat/service/user/impl/MiniAppUserServiceImpl.java
+++ b/module-wechat/src/main/java/ink/wgink/module/wechat/service/miniapp/impl/MiniAppUserServiceImpl.java
@@ -1,15 +1,13 @@
-package ink.wgink.login.wechat.service.user.impl;
+package ink.wgink.module.wechat.service.miniapp.impl;
import ink.wgink.common.base.DefaultBaseService;
-import ink.wgink.login.wechat.dao.user.IMiniAppUserDao;
-import ink.wgink.login.wechat.pojo.pos.user.MiniAppUserPO;
-import ink.wgink.login.wechat.service.sign.IMiniAppSignService;
-import ink.wgink.login.wechat.service.user.IMiniAppUserService;
-import ink.wgink.service.user.pojo.pos.UserPO;
+import ink.wgink.interfaces.consts.ISystemConstant;
+import ink.wgink.module.wechat.dao.miniapp.IMiniAppUserDao;
+import ink.wgink.module.wechat.pojo.pos.miniapp.MiniAppUserPO;
+import ink.wgink.module.wechat.service.miniapp.IMiniAppUserService;
import ink.wgink.service.user.pojo.vos.UserVO;
import ink.wgink.service.user.service.IUserService;
import ink.wgink.util.date.DateUtil;
-import ink.wgink.util.map.HashMapUtil;
import ink.wgink.util.string.WStringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -30,7 +28,7 @@ import java.util.Map;
@Service
public class MiniAppUserServiceImpl extends DefaultBaseService implements IMiniAppUserService {
- @Value("${user.default-password:888888}")
+ @Value("${user.default-password:"+ ISystemConstant.DEFAULT_PASSWORD +"}")
private String defaultPassword;
@Autowired
private IMiniAppUserDao miniAppUserDao;
@@ -47,8 +45,8 @@ public class MiniAppUserServiceImpl extends DefaultBaseService implements IMiniA
// 随机字符串
String randomUserName = WStringUtil.randomSubStr(openId, 6);
UserVO userVO = new UserVO();
- userVO.setUserUsername(IMiniAppSignService.WECHAT_RANDOM_USER_PREFIX + randomUserName);
- userVO.setUserName("微信" + randomUserName);
+ userVO.setUserUsername(MINIAPP_RANDOM_USER_PREFIX + randomUserName);
+ userVO.setUserName("微信M" + randomUserName);
userVO.setUserPassword(defaultPassword);
userVO.setUserState(0);
userVO.setUserType(2);
diff --git a/module-wechat/src/main/java/ink/wgink/module/wechat/service/official/account/IOfficialAccountUserService.java b/module-wechat/src/main/java/ink/wgink/module/wechat/service/official/account/IOfficialAccountUserService.java
index 1340ec16..175c7e5c 100644
--- a/module-wechat/src/main/java/ink/wgink/module/wechat/service/official/account/IOfficialAccountUserService.java
+++ b/module-wechat/src/main/java/ink/wgink/module/wechat/service/official/account/IOfficialAccountUserService.java
@@ -23,14 +23,19 @@ import java.util.Map;
public interface IOfficialAccountUserService {
/**
- * 新增用户
+ * 公众号用户前缀
+ */
+ String OFFICIAL_ACCOUNT_RANDOM_USER_PREFIX = "WX_";
+
+ /**
+ * 新增用户,用户关注微信公众号时触执行,创建随机账号;如果已经有则,修改订阅状态
*
* @param officialAccountUserVO
*/
void save(OfficialAccountUserVO officialAccountUserVO);
/**
- * 修改状态
+ * 修改状态,修改订阅状态
*
* @param openId
* @param xmlEventTypeEnum
diff --git a/module-wechat/src/main/java/ink/wgink/module/wechat/service/official/account/impl/OfficialAccountUserServiceImpl.java b/module-wechat/src/main/java/ink/wgink/module/wechat/service/official/account/impl/OfficialAccountUserServiceImpl.java
index 4296e6ff..7c2a6a5c 100644
--- a/module-wechat/src/main/java/ink/wgink/module/wechat/service/official/account/impl/OfficialAccountUserServiceImpl.java
+++ b/module-wechat/src/main/java/ink/wgink/module/wechat/service/official/account/impl/OfficialAccountUserServiceImpl.java
@@ -1,6 +1,7 @@
package ink.wgink.module.wechat.service.official.account.impl;
import ink.wgink.common.base.DefaultBaseService;
+import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.wechat.dao.official.account.IOfficialAccountUserDao;
import ink.wgink.module.wechat.enums.XmlEventTypeEnum;
import ink.wgink.module.wechat.pojo.dtos.official.account.OfficialAccountUserDTO;
@@ -10,10 +11,13 @@ import ink.wgink.module.wechat.service.official.account.IOfficialAccountUserServ
import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.result.SuccessResultList;
import ink.wgink.properties.wechat.official.account.OfficialAccountProperties;
+import ink.wgink.service.user.pojo.vos.UserVO;
+import ink.wgink.service.user.service.IUserService;
import ink.wgink.util.date.DateUtil;
import ink.wgink.util.map.HashMapUtil;
import ink.wgink.util.string.WStringUtil;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -32,10 +36,14 @@ import java.util.Map;
@Service
public class OfficialAccountUserServiceImpl extends DefaultBaseService implements IOfficialAccountUserService {
+ @Value("${user.default-password:" + ISystemConstant.DEFAULT_PASSWORD + "}")
+ private String defaultPassword;
@Autowired
private IOfficialAccountUserDao officialAccountUserDao;
@Autowired
private OfficialAccountProperties officialAccountProperties;
+ @Autowired
+ private IUserService userService;
@Override
public void save(OfficialAccountUserVO officialAccountUserVO) {
@@ -44,9 +52,24 @@ public class OfficialAccountUserServiceImpl extends DefaultBaseService implement
updateStatus(officialAccountUserVO.getOpenId(), XmlEventTypeEnum.SUBSCRIBE);
return;
}
+
+ // 创建随机用户
+ String openId = officialAccountUserVO.getOpenId();
+ // 随机字符串
+ String randomUserName = WStringUtil.randomSubStr(openId, 6);
+ UserVO userVO = new UserVO();
+ userVO.setUserUsername(OFFICIAL_ACCOUNT_RANDOM_USER_PREFIX + randomUserName);
+ userVO.setUserName("微信" + randomUserName);
+ userVO.setUserPassword(defaultPassword);
+ userVO.setUserState(0);
+ userVO.setUserType(2);
+ String userId = userService.saveAndReturnId(userVO, true);
+
String time = DateUtil.getTime();
officialAccountUserVO.setAppId(officialAccountProperties.getAppId());
// 用户码,用于绑定账号时使用
+ // 绑定用户
+ officialAccountUserVO.setUserId(userId);
officialAccountUserVO.setUserCode(WStringUtil.randomSubStr(String.valueOf(System.currentTimeMillis()), 6));
// 标记为初始化账号
officialAccountUserVO.setIsInitAccount(1);
diff --git a/module-wechat/src/main/java/ink/wgink/module/wechat/startup/WechatStartUp.java b/module-wechat/src/main/java/ink/wgink/module/wechat/startup/WechatStartUp.java
index 491e969c..68e2ef74 100644
--- a/module-wechat/src/main/java/ink/wgink/module/wechat/startup/WechatStartUp.java
+++ b/module-wechat/src/main/java/ink/wgink/module/wechat/startup/WechatStartUp.java
@@ -1,7 +1,9 @@
package ink.wgink.module.wechat.startup;
+import ink.wgink.module.wechat.dao.miniapp.IMiniAppUserDao;
import ink.wgink.module.wechat.dao.official.account.IOfficialAccountUserDao;
import ink.wgink.module.wechat.manager.OfficialAccountAccessTokenManager;
+import ink.wgink.properties.wechat.miniapp.MiniAppProperties;
import ink.wgink.properties.wechat.official.account.OfficialAccountProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -25,8 +27,12 @@ import org.springframework.stereotype.Component;
public class WechatStartUp implements ApplicationRunner {
private static final Logger LOG = LoggerFactory.getLogger(WechatStartUp.class);
@Autowired
+ private MiniAppProperties miniAppProperties;
+ @Autowired
private OfficialAccountProperties officialAccountProperties;
@Autowired
+ private IMiniAppUserDao miniAppUserDao;
+ @Autowired
private IOfficialAccountUserDao officialAccountUserDao;
@Override
@@ -35,13 +41,25 @@ public class WechatStartUp implements ApplicationRunner {
new Thread(() -> refreshOfficialAccountAccessToken()).start();
}
+ /**
+ * 建表
+ */
private void initTable() {
- LOG.debug("创建 wechat_official_account_user 表");
- officialAccountUserDao.createTable();
+ if (miniAppProperties.getActive()) {
+ LOG.debug("创建 wechat_mini_app_user 表");
+ miniAppUserDao.createTable();
+ }
+ if (officialAccountProperties.getActivate()) {
+ LOG.debug("创建 wechat_official_account_user 表");
+ officialAccountUserDao.createTable();
+ }
}
@Scheduled(cron = "0 0/5 * * * ?")
public void refreshOfficialAccountAccessToken() {
+ if (!officialAccountProperties.getActivate()) {
+ return;
+ }
OfficialAccountAccessTokenManager.getInstance().refreshAccessToken(officialAccountProperties);
}
diff --git a/login-wechat/src/main/resources/mybatis/mapper/miniapp-user-mapper.xml b/module-wechat/src/main/resources/mybatis/mapper/miniapp-user-mapper.xml
similarity index 92%
rename from login-wechat/src/main/resources/mybatis/mapper/miniapp-user-mapper.xml
rename to module-wechat/src/main/resources/mybatis/mapper/miniapp-user-mapper.xml
index b5b1e7a2..cb8deb2c 100644
--- a/login-wechat/src/main/resources/mybatis/mapper/miniapp-user-mapper.xml
+++ b/module-wechat/src/main/resources/mybatis/mapper/miniapp-user-mapper.xml
@@ -1,10 +1,10 @@
-
+
-
+
diff --git a/service-user/src/main/java/ink/wgink/service/user/service/impl/UserServiceImpl.java b/service-user/src/main/java/ink/wgink/service/user/service/impl/UserServiceImpl.java
index bc22287a..0bdbc78a 100644
--- a/service-user/src/main/java/ink/wgink/service/user/service/impl/UserServiceImpl.java
+++ b/service-user/src/main/java/ink/wgink/service/user/service/impl/UserServiceImpl.java
@@ -74,7 +74,7 @@ public class UserServiceImpl extends DefaultBaseService implements IUserService
private IUserAdjustmentService userAdjustmentService;
@Autowired
private PasswordEncoder passwordEncoder;
- @Value("${user.default-password:88888888}")
+ @Value("${user.default-password:" + ISystemConstant.DEFAULT_PASSWORD + "}")
private String defaultPassword;
@Autowired
private IFileService fileService;