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;