调试 微信服务号 登录注册

pull/26/head
3y 2 years ago
parent 9e493352ba
commit 02c64f4d82

@ -1,7 +1,7 @@
# 使用openjdk8的镜像
FROM openjdk:8-jre
ENV PARAMS="--spring.profiles.active=docker"
ENV PARAMS="--spring.profiles.active=test"
# 设置工作目录
WORKDIR /build

@ -0,0 +1,72 @@
package com.java3y.austin.support.config;
import com.java3y.austin.common.dto.account.WeChatOfficialAccount;
import com.java3y.austin.support.utils.WxServiceUtils;
import lombok.Data;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import javax.annotation.PostConstruct;
/**
* 使
* ( && 使)
*
* @author 3y
*/
@Profile("test")
@Configuration
@ConditionalOnProperty(name = "austin.login.officialAccount.enable", havingValue = "true")
@Data
public class WeChatLoginAccountConfig {
@Value("${austin.login.official.account.appId}")
private String appId;
@Value("${austin.login.official.account.secret}")
private String secret;
@Value("${austin.login.official.account.secret}")
private String token;
@Autowired
private WxServiceUtils wxServiceUtils;
private WxMpService officialAccountLoginService;
private WxMpDefaultConfigImpl config;
private WxMpMessageRouter wxMpMessageRouter;
@PostConstruct
private void init() {
WeChatOfficialAccount account = WeChatOfficialAccount.builder().appId(appId).secret(secret).token(token).build();
officialAccountLoginService = wxServiceUtils.initOfficialAccountService(account);
initConfig();
initRouter();
}
/**
*
*/
private void initRouter() {
wxMpMessageRouter = new WxMpMessageRouter(officialAccountLoginService);
wxMpMessageRouter.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT).event(WxConsts.EventType.SUBSCRIBE).handler(null).end();
wxMpMessageRouter.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT).event(WxConsts.EventType.UNSUBSCRIBE).handler(null).end();
}
/**
*
*/
private void initConfig() {
config.setAppId(appId);
config.setToken(token);
config.setSecret(secret);
}
}

@ -27,7 +27,7 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* /
* /
*
* @author 3y
*/
@ -36,12 +36,12 @@ import java.util.concurrent.ConcurrentHashMap;
@Data
public class WxServiceUtils {
/**
* /
*/
private Map<Long, WxMpService> officialAccountServiceMap = new ConcurrentHashMap<>();
private Map<Long, WxMaSubscribeService> miniProgramServiceMap = new ConcurrentHashMap<>();
private Map<Long, WeChatOfficialAccount> officialAccountHashMap = new ConcurrentHashMap<>();
private Map<Long, WeChatMiniProgramAccount> miniProgramHashMap = new ConcurrentHashMap<>();
@Autowired
private ChannelAccountDao channelAccountDao;
@ -50,27 +50,36 @@ public class WxServiceUtils {
initOfficialAccount();
initMiniProgram();
}
/**
* /Map
*/
public void fresh() {
init();
}
/**
*
*/
private void initMiniProgram() {
List<ChannelAccount> miniProgram = channelAccountDao.findAllByIsDeletedEqualsAndSendChannelEquals(CommonConstant.FALSE, ChannelType.MINI_PROGRAM.getCode());
for (ChannelAccount channelAccount : miniProgram) {
WeChatMiniProgramAccount weChatMiniProgramAccount = JSON.parseObject(channelAccount.getAccountConfig(), WeChatMiniProgramAccount.class);
miniProgramServiceMap.put(channelAccount.getId(), initMiniProgramService(weChatMiniProgramAccount));
miniProgramHashMap.put(channelAccount.getId(), weChatMiniProgramAccount);
}
}
/**
*
*/
private void initOfficialAccount() {
List<ChannelAccount> officialAccountList = channelAccountDao.findAllByIsDeletedEqualsAndSendChannelEquals(CommonConstant.FALSE, ChannelType.OFFICIAL_ACCOUNT.getCode());
for (ChannelAccount channelAccount : officialAccountList) {
WeChatOfficialAccount weChatOfficialAccount = JSON.parseObject(channelAccount.getAccountConfig(), WeChatOfficialAccount.class);
officialAccountServiceMap.put(channelAccount.getId(), initOfficialAccountService(weChatOfficialAccount));
officialAccountHashMap.put(channelAccount.getId(), weChatOfficialAccount);
}
}
/**

@ -44,109 +44,4 @@ austin.grayLog.ip=austin.graylog
# TODO if windows os and need upload file to send message ,replace path !【optional】
austin.business.upload.crowd.path=/Users/3y/temp
########################################## database start ##########################################
# notice:mysql version 5.7x !!!
spring.datasource.url=jdbc:mysql://${austin.database.ip}:${austin.database.port}/austin?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull
spring.datasource.username=${austin.database.username}
spring.datasource.password=${austin.database.password}
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
########################################## database end ##########################################
########################################## kafka start ##########################################
spring.kafka.bootstrap-servers=${austin.kafka.ip}:${austin.kafka.port}
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.auto.offset.reset=earliest
spring.kafka.consumer.auto-commit-interval=1000
spring.kafka.consumer.enable-auto-commit=true
###
austin.business.topic.name=austinBusiness
austin.business.recall.topic.name=austinRecall
austin.business.recall.group.name=recallGroupId
austin.business.log.topic.name=austinTraceLog
### TODO kafka tag filter,if you need, replace tagIdValue ,eg:com.java3y.austin.yyy
austin.business.tagId.key=kafka_tag_id
austin.business.tagId.value=com.java3y.austin.3y
########################################## kafka end ##########################################
########################################## rocketMq start ##########################################
rocketmq.name-server=${austin.rocketmq.nameserver.ip}:${austin.rocketmq.nameserver.port}
rocketmq.producer.group=unique-producer-group
austin.rocketmq.biz.consumer.group=unique-biz-consumer-group
austin.rocketmq.recall.consumer.group=unique-recall-consumer-group
########################################## rocketMq end ##########################################
########################################## RabbitMq start ##########################################
spring.rabbitmq.host=${austin.rabbitmq.ip}
spring.rabbitmq.port=${austin.rabbitmq.port}
spring.rabbitmq.username=root
spring.rabbitmq.password=123456
spring.rabbitmq.publisher-confirm-type=correlated
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.virtual-host=/
austin.rabbitmq.topic.name=austinRabbit
austin.rabbitmq.exchange.name=austin.point
########################################## RabbitMq end ##########################################
########################################## redis start ##########################################
spring.redis.host=${austin.redis.ip}
spring.redis.port=${austin.redis.port}
spring.redis.password=${austin.redis.password}
########################################## redis end ##########################################
########################################## xxl start ##########################################
xxl.job.admin.addresses=http://${austin.xxl.job.ip}:${austin.xxl.job.port}/xxl-job-admin
xxl.job.admin.username=admin
xxl.job.admin.password=123456
xxl.job.executor.appname=austin
xxl.job.executor.jobHandlerName=austinJob
xxl.job.executor.ip=
xxl.job.executor.port=6666
xxl.job.executor.logpath=logs/xxl
xxl.job.executor.logretentiondays=30
xxl.job.accessToken=
########################################## xxl end ##########################################
########################################## apollo start ##########################################
app.id=austin
apollo.bootstrap.enabled=${austin.apollo.enabled}
apollo.bootstrap.namespaces=boss.austin,dynamic-tp-apollo-dtp.yml
########################################## apollo end ##########################################
########################################## nacos start ##########################################
austin.nacos.server=
austin.nacos.username=
austin.nacos.password=
austin.nacos.dataId=austin
austin.nacos.group=DEFAULT_GROUP
austin.nacos.namespace=9537c674-f3a6-4203-b286-ef0c36bfacb2
nacos.config.enabled=${austin.nacos.enabled}
########################################## nacos end ##########################################
########################################## httpUtils start ##########################################
ok.http.connect-timeout=30
ok.http.keep-alive-duration=300
ok.http.max-idle-connections=200
ok.http.read-timeout=30
ok.http.write-timeout=30
########################################## httpUtils end ##########################################
########################################## monitor start ##########################################
management.endpoint.health.show-details=always
management.endpoint.metrics.enabled=true
management.endpoint.prometheus.enabled=true
management.endpoints.web.exposure.include=*
management.metrics.export.prometheus.enabled=true
management.health.rabbit.enabled=false
########################################## monitor end ##########################################
########################################## system start ##########################################
server.shutdown=graceful
########################################## system end ##########################################

@ -1,152 +0,0 @@
# TODO please replace 【must】 config value
# TODO please replace 【must】 config value
# TODO please replace 【must】 config value
server.port=8080
# todo [database] ip/port/username/password 【must】
austin.database.ip=austin-mysql
austin.database.port=3306
austin.database.username=root
austin.database.password=root123_A
# todo [redis] ip/port/password【must】
austin.redis.ip=austin-redis
austin.redis.port=6379
austin.redis.password=austin
# TODO choose : kafka/eventBus/rocketMq/rabbitMq, default eventBus
austin.mq.pipeline=eventBus
# todo [kafka] ip/port【optional】, if austin.mq.pipeline=kafka 【must】
austin.kafka.ip=austin.kafka
austin.kafka.port=9092
# todo [rocketMq] 【optional】, if austin.mq.pipeline=rocketMq【must】
austin.rocketmq.nameserver.ip=
austin.rocketmq.nameserver.port=
# todo [rabbitMq] 【optional】, if austin.mq.pipeline=rabbitMq【must】
austin.rabbitmq.ip=
austin.rabbitmq.port=
# todo [xxl-job] switch 【optional】, if austin.xxl.job.enabled=true 【must】
austin.xxl.job.enabled=false
austin.xxl.job.ip=127.0.0.1
austin.xxl.job.port=6767
# todo choose: apollo/nacos switch 【optional】 ,if apollo and nacos both false, use local.properties
austin.apollo.enabled=false
austin.nacos.enabled=false
# todo [grayLog] ip 【optional】
austin.grayLog.ip=austin.graylog
# TODO if windows os and need upload file to send message ,replace path !【optional】
austin.business.upload.crowd.path=/Users/3y/temp
########################################## database start ##########################################
# notice:mysql version 5.7x !!!
spring.datasource.url=jdbc:mysql://${austin.database.ip}:${austin.database.port}/austin?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull
spring.datasource.username=${austin.database.username}
spring.datasource.password=${austin.database.password}
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
########################################## database end ##########################################
########################################## kafka start ##########################################
spring.kafka.bootstrap-servers=${austin.kafka.ip}:${austin.kafka.port}
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.auto.offset.reset=earliest
spring.kafka.consumer.auto-commit-interval=1000
spring.kafka.consumer.enable-auto-commit=true
###
austin.business.topic.name=austinBusiness
austin.business.recall.topic.name=austinRecall
austin.business.recall.group.name=recallGroupId
austin.business.log.topic.name=austinTraceLog
### TODO kafka tag filter,if you need, replace tagIdValue ,eg:com.java3y.austin.yyy
austin.business.tagId.key=kafka_tag_id
austin.business.tagId.value=com.java3y.austin.3y
########################################## kafka end ##########################################
########################################## rocketMq start ##########################################
rocketmq.name-server=${austin.rocketmq.nameserver.ip}:${austin.rocketmq.nameserver.port}
rocketmq.producer.group=unique-producer-group
austin.rocketmq.biz.consumer.group=unique-biz-consumer-group
austin.rocketmq.recall.consumer.group=unique-recall-consumer-group
########################################## rocketMq end ##########################################
########################################## RabbitMq start ##########################################
spring.rabbitmq.host=${austin.rabbitmq.ip}
spring.rabbitmq.port=${austin.rabbitmq.port}
spring.rabbitmq.username=root
spring.rabbitmq.password=123456
spring.rabbitmq.publisher-confirm-type=correlated
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.virtual-host=/
austin.rabbitmq.topic.name=austinRabbit
austin.rabbitmq.exchange.name=austin.point
########################################## RabbitMq end ##########################################
########################################## redis start ##########################################
spring.redis.host=${austin.redis.ip}
spring.redis.port=${austin.redis.port}
spring.redis.password=${austin.redis.password}
########################################## redis end ##########################################
########################################## xxl start ##########################################
xxl.job.admin.addresses=http://${austin.xxl.job.ip}:${austin.xxl.job.port}/xxl-job-admin
xxl.job.admin.username=admin
xxl.job.admin.password=123456
xxl.job.executor.appname=austin
xxl.job.executor.jobHandlerName=austinJob
xxl.job.executor.ip=
xxl.job.executor.port=6666
xxl.job.executor.logpath=logs/xxl
xxl.job.executor.logretentiondays=30
xxl.job.accessToken=
########################################## xxl end ##########################################
########################################## apollo start ##########################################
app.id=austin
apollo.bootstrap.enabled=${austin.apollo.enabled}
apollo.bootstrap.namespaces=boss.austin,dynamic-tp-apollo-dtp.yml
########################################## apollo end ##########################################
########################################## nacos start ##########################################
austin.nacos.server=
austin.nacos.username=
austin.nacos.password=
austin.nacos.dataId=austin
austin.nacos.group=DEFAULT_GROUP
austin.nacos.namespace=9537c674-f3a6-4203-b286-ef0c36bfacb2
nacos.config.enabled=${austin.nacos.enabled}
########################################## nacos end ##########################################
########################################## httpUtils start ##########################################
ok.http.connect-timeout=30
ok.http.keep-alive-duration=300
ok.http.max-idle-connections=200
ok.http.read-timeout=30
ok.http.write-timeout=30
########################################## httpUtils end ##########################################
########################################## monitor start ##########################################
management.endpoint.health.show-details=always
management.endpoint.metrics.enabled=true
management.endpoint.prometheus.enabled=true
management.endpoints.web.exposure.include=*
management.metrics.export.prometheus.enabled=true
management.health.rabbit.enabled=false
########################################## monitor end ##########################################
########################################## system start ##########################################
server.shutdown=graceful
########################################## system end ##########################################

@ -0,0 +1,51 @@
# TODO please replace 【must】 config value
# TODO please replace 【must】 config value
# TODO please replace 【must】 config value
server.port=8080
# docker mysql
austin.database.ip=austin-mysql
austin.database.port=3306
austin.database.username=root
austin.database.password=root123_A
# docker redis
austin.redis.ip=austin-redis
austin.redis.port=6379
austin.redis.password=austin
# TODO choose : kafka/eventBus/rocketMq/rabbitMq, default eventBus
austin.mq.pipeline=eventBus
# todo [kafka] ip/port【optional】, if austin.mq.pipeline=kafka 【must】
austin.kafka.ip=austin.kafka
austin.kafka.port=9092
# todo [rocketMq] 【optional】, if austin.mq.pipeline=rocketMq【must】
austin.rocketmq.nameserver.ip=
austin.rocketmq.nameserver.port=
# todo [rabbitMq] 【optional】, if austin.mq.pipeline=rabbitMq【must】
austin.rabbitmq.ip=
austin.rabbitmq.port=
# todo [xxl-job] switch 【optional】, if austin.xxl.job.enabled=true 【must】
austin.xxl.job.enabled=false
austin.xxl.job.ip=127.0.0.1
austin.xxl.job.port=6767
# todo choose: apollo/nacos switch 【optional】 ,if apollo and nacos both false, use local.properties
austin.apollo.enabled=false
austin.nacos.enabled=false
# todo [grayLog] ip 【optional】
austin.grayLog.ip=austin.graylog
# TODO if windows os and need upload file to send message ,replace path !【optional】
austin.business.upload.crowd.path=/Users/3y/temp
# TODO if [login use officialAccount] switch 【optional】, if austin.login.officialAccount.enable=true 【must】
austin.login.official.account.enable=true
austin.login.official.account.appId=1
austin.login.official.account.secret=1
austin.login.official.account.token=1

@ -1,2 +1,108 @@
spring.profiles.active=dev
spring.application.name=austin
spring.application.name=austin
########################################## database start ##########################################
# notice:mysql version 5.7x !!!
spring.datasource.url=jdbc:mysql://${austin.database.ip}:${austin.database.port}/austin?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull
spring.datasource.username=${austin.database.username}
spring.datasource.password=${austin.database.password}
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
########################################## database end ##########################################
########################################## kafka start ##########################################
spring.kafka.bootstrap-servers=${austin.kafka.ip}:${austin.kafka.port}
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.auto.offset.reset=earliest
spring.kafka.consumer.auto-commit-interval=1000
spring.kafka.consumer.enable-auto-commit=true
###
austin.business.topic.name=austinBusiness
austin.business.recall.topic.name=austinRecall
austin.business.recall.group.name=recallGroupId
austin.business.log.topic.name=austinTraceLog
### TODO kafka tag filter,if you need, replace tagIdValue ,eg:com.java3y.austin.yyy
austin.business.tagId.key=kafka_tag_id
austin.business.tagId.value=com.java3y.austin.3y
########################################## kafka end ##########################################
########################################## rocketMq start ##########################################
rocketmq.name-server=${austin.rocketmq.nameserver.ip}:${austin.rocketmq.nameserver.port}
rocketmq.producer.group=unique-producer-group
austin.rocketmq.biz.consumer.group=unique-biz-consumer-group
austin.rocketmq.recall.consumer.group=unique-recall-consumer-group
########################################## rocketMq end ##########################################
########################################## RabbitMq start ##########################################
spring.rabbitmq.host=${austin.rabbitmq.ip}
spring.rabbitmq.port=${austin.rabbitmq.port}
spring.rabbitmq.username=root
spring.rabbitmq.password=123456
spring.rabbitmq.publisher-confirm-type=correlated
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.virtual-host=/
austin.rabbitmq.topic.name=austinRabbit
austin.rabbitmq.exchange.name=austin.point
########################################## RabbitMq end ##########################################
########################################## redis start ##########################################
spring.redis.host=${austin.redis.ip}
spring.redis.port=${austin.redis.port}
spring.redis.password=${austin.redis.password}
########################################## redis end ##########################################
########################################## xxl start ##########################################
xxl.job.admin.addresses=http://${austin.xxl.job.ip}:${austin.xxl.job.port}/xxl-job-admin
xxl.job.admin.username=admin
xxl.job.admin.password=123456
xxl.job.executor.appname=austin
xxl.job.executor.jobHandlerName=austinJob
xxl.job.executor.ip=
xxl.job.executor.port=6666
xxl.job.executor.logpath=logs/xxl
xxl.job.executor.logretentiondays=30
xxl.job.accessToken=
########################################## xxl end ##########################################
########################################## apollo start ##########################################
app.id=austin
apollo.bootstrap.enabled=${austin.apollo.enabled}
apollo.bootstrap.namespaces=boss.austin,dynamic-tp-apollo-dtp.yml
########################################## apollo end ##########################################
########################################## nacos start ##########################################
austin.nacos.server=
austin.nacos.username=
austin.nacos.password=
austin.nacos.dataId=austin
austin.nacos.group=DEFAULT_GROUP
austin.nacos.namespace=9537c674-f3a6-4203-b286-ef0c36bfacb2
nacos.config.enabled=${austin.nacos.enabled}
########################################## nacos end ##########################################
########################################## httpUtils start ##########################################
ok.http.connect-timeout=30
ok.http.keep-alive-duration=300
ok.http.max-idle-connections=200
ok.http.read-timeout=30
ok.http.write-timeout=30
########################################## httpUtils end ##########################################
########################################## monitor start ##########################################
management.endpoint.health.show-details=always
management.endpoint.metrics.enabled=true
management.endpoint.prometheus.enabled=true
management.endpoints.web.exposure.include=*
management.metrics.export.prometheus.enabled=true
management.health.rabbit.enabled=false
########################################## monitor end ##########################################
########################################## system start ##########################################
server.shutdown=graceful
########################################## system end ##########################################

Loading…
Cancel
Save