记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
e15bafc6
Commit
e15bafc6
authored
Sep 29, 2021
by
刘喆
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'pre' into 'master'
Pre See merge request
!65
parents
aad3f7f5
92d549b4
Changes
40
Hide whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
1095 additions
and
318 deletions
+1095
-318
SweetAntigenicQuestionParam.java
.../service/sweet/dto/param/SweetAntigenicQuestionParam.java
+75
-0
WechatTokenInfoVo.java
...com/liquidnet/service/sweet/dto/vo/WechatTokenInfoVo.java
+48
-0
WechatUserInfoVo.java
.../com/liquidnet/service/sweet/dto/vo/WechatUserInfoVo.java
+76
-0
MQConst.java
...ain/java/com/liquidnet/service/base/constant/MQConst.java
+1
-0
application-dev.yml
liquidnet-bus-config/liquidnet-config/application-dev.yml
+4
-1
application-test.yml
liquidnet-bus-config/liquidnet-config/application-test.yml
+4
-1
SweetAntigenicQuestion.java
...iquidnet/service/sweet/entity/SweetAntigenicQuestion.java
+121
-0
SweetAntigenicQuestionMapper.java
...et/service/sweet/mapper/SweetAntigenicQuestionMapper.java
+16
-0
ConsumerAntigenicQuestionRedisStreamConfig.java
...et/config/ConsumerAntigenicQuestionRedisStreamConfig.java
+77
-0
ConsumerAntigenicQuestionRdsReceiver.java
.../sweet/receiver/ConsumerAntigenicQuestionRdsReceiver.java
+17
-0
db_kylin_structure.sql
.../liquidnet-service-kylin-impl/docu/db_kylin_structure.sql
+0
-15
WechatMpConfigure.java
.../liquidnet/service/platform/config/WechatMpConfigure.java
+0
-93
WechatShareController.java
...tform/controller/basicServices/WechatShareController.java
+0
-75
db_sweetsugar_structure.sql
.../liquidnet-service-sweet/docu/db_sweetsugar_structure.sql
+31
-0
redis_queue_create.txt
...rvice/liquidnet-service-sweet/docu/redis_queue_create.txt
+5
-1
pom.xml
liquidnet-bus-service/liquidnet-service-sweet/pom.xml
+12
-0
SweetConstant.java
...a/com/liquidnet/service/sweet/constant/SweetConstant.java
+4
-0
SweetAnswerController.java
...idnet/service/sweet/controller/SweetAnswerController.java
+1
-3
SweetAntigenicQuestionController.java
...ce/sweet/controller/SweetAntigenicQuestionController.java
+35
-0
SweetCityVoteController.java
...net/service/sweet/controller/SweetCityVoteController.java
+1
-1
SweetWechatActionCallbackController.java
...sweet/controller/SweetWechatActionCallbackController.java
+7
-7
SweetWechatLoginController.java
.../service/sweet/controller/SweetWechatLoginController.java
+25
-3
SweetWechatShareController.java
.../service/sweet/controller/SweetWechatShareController.java
+1
-1
SweetWechatTemplateController.java
...rvice/sweet/controller/SweetWechatTemplateController.java
+6
-4
RedisDataController.java
...rvice/sweet/controller/syncRedis/RedisDataController.java
+20
-13
UserDataController.java
...ervice/sweet/controller/syncRedis/UserDataController.java
+21
-10
SubscribeHandler.java
...com/liquidnet/service/sweet/handler/SubscribeHandler.java
+74
-34
UnsubscribeHandler.java
...m/liquidnet/service/sweet/handler/UnsubscribeHandler.java
+42
-16
SweetCityVoteParam.java
...com/liquidnet/service/sweet/param/SweetCityVoteParam.java
+2
-1
ISweetAntigenicQuestionService.java
...service/sweet/service/ISweetAntigenicQuestionService.java
+19
-0
SweetAntigenicQuestionServiceImpl.java
...sweet/service/impl/SweetAntigenicQuestionServiceImpl.java
+47
-0
SweetWechatCallbackServiceImpl.java
...ce/sweet/service/impl/SweetWechatCallbackServiceImpl.java
+5
-2
SweetWechatLoginServiceImpl.java
...rvice/sweet/service/impl/SweetWechatLoginServiceImpl.java
+30
-5
SweetWechatService.java
...uidnet/service/sweet/service/impl/SweetWechatService.java
+13
-2
SweetWechatTemplateServiceImpl.java
...ce/sweet/service/impl/SweetWechatTemplateServiceImpl.java
+36
-25
RedisDataServiceImpl.java
...ce/sweet/service/impl/syncRedis/RedisDataServiceImpl.java
+1
-1
UserDataServiceImpl.java
...ice/sweet/service/impl/syncRedis/UserDataServiceImpl.java
+165
-0
RedisDataUtils.java
...ava/com/liquidnet/service/sweet/utils/RedisDataUtils.java
+47
-0
WechatSignUtils.java
...va/com/liquidnet/service/sweet/utils/WechatSignUtils.java
+1
-1
sqlmap.properties
...uidnet-service-sweet/src/main/resources/sqlmap.properties
+5
-3
No files found.
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/dto/param/SweetAntigenicQuestionParam.java
0 → 100644
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
dto
.
param
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.*
;
import
java.io.Serializable
;
@ApiModel
(
value
=
"SweetAntigenicQuestionParam"
,
description
=
"防疫答题记录入参"
)
@Data
public
class
SweetAntigenicQuestionParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
9038992103808199663L
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"type 1MDSK防疫答题 2草莓防疫答题"
,
example
=
"1"
)
@NotNull
(
message
=
"type不能为空"
)
@Min
(
value
=
1
,
message
=
"type无效"
)
@Max
(
value
=
2
,
message
=
"type无效"
)
private
Integer
type
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"openId"
,
example
=
"openId"
)
@NotBlank
(
message
=
"openId不能为空"
)
private
String
openId
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"unionId"
,
example
=
"unionId"
)
@NotBlank
(
message
=
"unionId不能为空"
)
private
String
unionId
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"姓名"
,
example
=
"姓名"
)
@NotBlank
(
message
=
"姓名不能为空"
)
private
String
nickname
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"居住地址"
,
example
=
"居住地址"
)
@NotBlank
(
message
=
"居住地址不能为空"
)
private
String
address
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"联系电话"
,
example
=
"15811009011"
)
@NotBlank
(
message
=
"联系电话不能为空"
)
private
String
phone
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"紧急联系人电话"
,
example
=
"15811009011"
)
// @NotBlank(message = "紧急联系人电话不能为空")
private
String
urgentPhone
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"keyword1"
,
example
=
"1"
)
@NotBlank
(
message
=
"keyword1不能为空"
)
private
String
keyword1
;
@ApiModelProperty
(
position
=
10
,
required
=
false
,
value
=
"keyword11"
,
example
=
"补充信息"
)
private
String
keyword11
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"keyword2"
,
example
=
"1"
)
@NotBlank
(
message
=
"keyword2不能为空"
)
private
String
keyword2
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"keyword3"
,
example
=
"1"
)
@NotBlank
(
message
=
"keyword3不能为空"
)
private
String
keyword3
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"keyword4"
,
example
=
"1"
)
@NotBlank
(
message
=
"keyword4不能为空"
)
private
String
keyword4
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"keyword5"
,
example
=
"1"
)
@NotBlank
(
message
=
"keyword5不能为空"
)
private
String
keyword5
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"keyword6"
,
example
=
"1"
)
@NotBlank
(
message
=
"keyword6不能为空"
)
private
String
keyword6
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"keyword7"
,
example
=
"1"
)
@NotBlank
(
message
=
"keyword7不能为空"
)
private
String
keyword7
;
}
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/dto/vo/WechatTokenInfoVo.java
0 → 100644
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
dto
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken
;
import
java.io.Serializable
;
/**
* <p>
* WxOAuth2AccessToken vo
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
@Data
@ApiModel
public
class
WechatTokenInfoVo
implements
Serializable
,
Cloneable
{
private
static
final
long
serialVersionUID
=
3404938811111878417L
;
@ApiModelProperty
(
value
=
"openId"
)
private
String
openId
;
@ApiModelProperty
(
value
=
"unionId"
)
private
String
unionId
;
private
static
final
WechatTokenInfoVo
obj
=
new
WechatTokenInfoVo
();
public
static
WechatTokenInfoVo
getNew
()
{
try
{
return
(
WechatTokenInfoVo
)
obj
.
clone
();
}
catch
(
CloneNotSupportedException
e
)
{
return
new
WechatTokenInfoVo
();
}
}
public
WechatTokenInfoVo
copy
(
WxOAuth2AccessToken
source
)
{
if
(
null
==
source
)
return
this
;
this
.
setOpenId
(
source
.
getOpenId
());
this
.
setUnionId
(
source
.
getUnionId
());
return
this
;
}
}
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/dto/vo/WechatUserInfoVo.java
0 → 100644
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
dto
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
me.chanjar.weixin.common.bean.WxOAuth2UserInfo
;
import
java.io.Serializable
;
/**
* <p>
* WxOAuth2UserInfo vo
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
@Data
@ApiModel
public
class
WechatUserInfoVo
implements
Serializable
,
Cloneable
{
private
static
final
long
serialVersionUID
=
5067978046376025813L
;
@ApiModelProperty
(
value
=
"普通用户的标识,对当前开发者帐号唯一"
)
private
String
openid
;
@ApiModelProperty
(
value
=
"普通用户昵称"
)
private
String
nickname
;
@ApiModelProperty
(
value
=
"普通用户性别,1为男性,2为女性"
)
private
Integer
sex
;
@ApiModelProperty
(
value
=
"普通用户个人资料填写的城市"
)
private
String
city
;
@ApiModelProperty
(
value
=
"普通用户个人资料填写的省份"
)
private
String
province
;
@ApiModelProperty
(
value
=
"国家,如中国为CN"
)
private
String
country
;
@ApiModelProperty
(
value
=
"用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像) 用户没有头像时该项为空"
)
private
String
headImgUrl
;
@ApiModelProperty
(
value
=
"用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的"
)
private
String
unionId
;
@ApiModelProperty
(
value
=
"用户特权信息,json数组,如微信沃卡用户为(chinaunicom)"
)
private
String
[]
privileges
;
private
static
final
WechatUserInfoVo
obj
=
new
WechatUserInfoVo
();
public
static
WechatUserInfoVo
getNew
()
{
try
{
return
(
WechatUserInfoVo
)
obj
.
clone
();
}
catch
(
CloneNotSupportedException
e
)
{
return
new
WechatUserInfoVo
();
}
}
public
WechatUserInfoVo
copy
(
WxOAuth2UserInfo
source
)
{
if
(
null
==
source
)
return
this
;
this
.
setOpenid
(
source
.
getOpenid
());
this
.
setNickname
(
source
.
getNickname
());
this
.
setSex
(
source
.
getSex
());
this
.
setCity
(
source
.
getCity
());
this
.
setProvince
(
source
.
getProvince
());
this
.
setCountry
(
source
.
getCountry
());
this
.
setHeadImgUrl
(
source
.
getHeadImgUrl
());
this
.
setUnionId
(
source
.
getUnionId
());
this
.
setPrivileges
(
source
.
getPrivileges
());
return
this
;
}
}
liquidnet-bus-common/liquidnet-common-service-base/src/main/java/com/liquidnet/service/base/constant/MQConst.java
View file @
e15bafc6
...
...
@@ -84,6 +84,7 @@ public class MQConst {
SWEET_APPLET_USER_INSERT_DRAW
(
"sweet:stream:rk.sweetAppletUserInsert"
,
"group.sweetAppletUserInsert"
,
"小程序登录记录用户解密后信息"
),
SWEET_TEMPLATE_MSG
(
"sweet:stream:rk.sweetTemplateMsg"
,
"group.sweetTemplateMsg"
,
"发送模版消息"
),
SWEET_CITY_VOTE_DRAW
(
"sweet:stream:rk.cityVote"
,
"group.cityVote"
,
"用户投票记录"
),
SWEET_ANTIGENIC_QUESTION_DRAW
(
"sweet:stream:rk.antigenicQuestion"
,
"group.antigenicQuestion"
,
"防疫答题"
),
;
private
final
String
key
;
...
...
liquidnet-bus-config/liquidnet-config/application-dev.yml
View file @
e15bafc6
...
...
@@ -112,9 +112,12 @@ liquidnet:
secret
:
a1307fab0a5f2380086a7c636f7339ea
token
:
tftipg1427706847
aeskey
:
LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx
modernsk
y
:
zhengzaiActivit
y
:
appid
:
wx769aa9167bef9ce2
secret
:
bebccc204b9472ba41661372b197eb81
modernsky
:
appid
:
wx6bf7999941a06d15
secret
:
a12012b31307a539719dbe4d137ca45a
applet
:
zhengzai
:
appid
:
wx4732efeaa2b08086
...
...
liquidnet-bus-config/liquidnet-config/application-test.yml
View file @
e15bafc6
...
...
@@ -114,9 +114,12 @@ liquidnet:
secret
:
a1307fab0a5f2380086a7c636f7339ea
token
:
tftipg1427706847
aeskey
:
LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx
modernsk
y
:
zhengzaiActivit
y
:
appid
:
wx769aa9167bef9ce2
secret
:
bebccc204b9472ba41661372b197eb81
modernsky
:
appid
:
wx6bf7999941a06d15
secret
:
a12012b31307a539719dbe4d137ca45a
applet
:
zhengzai
:
appid
:
wx4732efeaa2b08086
...
...
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/java/com/liquidnet/service/sweet/entity/SweetAntigenicQuestion.java
0 → 100644
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
java.time.LocalDateTime
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
java.io.Serializable
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* <p>
* 防疫答题表
* </p>
*
* @author jiangxiulong
* @since 2021-09-29
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
SweetAntigenicQuestion
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1268639425174449151L
;
@TableId
(
value
=
"mid"
,
type
=
IdType
.
AUTO
)
private
Long
mid
;
/**
* question_id
*/
private
String
questionId
;
/**
* 活动类型 1MDSK防疫答题 2草莓防疫答题
*/
private
Integer
type
;
/**
* openId
*/
@TableField
(
"openId"
)
private
String
openId
;
/**
* unionId
*/
@TableField
(
"unionId"
)
private
String
unionId
;
/**
* 姓名
*/
private
String
nickname
;
/**
* 居住地址
*/
private
String
address
;
/**
* 联系电话
*/
private
String
phone
;
/**
* 紧急联系人电话
*/
private
String
urgentPhone
;
/**
* 答案
*/
private
String
keyword1
;
/**
* 答案补充
*/
private
String
keyword11
;
/**
* 答案
*/
private
String
keyword2
;
/**
* 答案
*/
private
String
keyword3
;
/**
* 答案
*/
private
String
keyword4
;
/**
* 答案
*/
private
String
keyword5
;
/**
* 答案
*/
private
String
keyword6
;
/**
* 答案
*/
private
String
keyword7
;
/**
* 创建时间
*/
private
LocalDateTime
createdAt
;
/**
* 更新时间
*/
private
LocalDateTime
updatedAt
;
}
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/java/com/liquidnet/service/sweet/mapper/SweetAntigenicQuestionMapper.java
0 → 100644
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.liquidnet.service.sweet.entity.SweetAntigenicQuestion
;
/**
* <p>
* 防疫答题表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
public
interface
SweetAntigenicQuestionMapper
extends
BaseMapper
<
SweetAntigenicQuestion
>
{
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-sweet/src/main/java/com/liquidnet/service/consumer/sweet/config/ConsumerAntigenicQuestionRedisStreamConfig.java
0 → 100644
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
consumer
.
sweet
.
config
;
import
com.liquidnet.service.consumer.sweet.receiver.ConsumerAntigenicQuestionRdsReceiver
;
import
lombok.var
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.connection.stream.Consumer
;
import
org.springframework.data.redis.connection.stream.MapRecord
;
import
org.springframework.data.redis.connection.stream.ReadOffset
;
import
org.springframework.data.redis.connection.stream.StreamOffset
;
import
org.springframework.data.redis.stream.StreamMessageListenerContainer
;
import
org.springframework.data.redis.stream.Subscription
;
import
java.time.Duration
;
import
static
com
.
liquidnet
.
service
.
base
.
constant
.
MQConst
.
SweetQueue
.
SWEET_ANTIGENIC_QUESTION_DRAW
;
@Configuration
public
class
ConsumerAntigenicQuestionRedisStreamConfig
{
@Autowired
ConsumerAntigenicQuestionRdsReceiver
consumerAntigenicQuestionRdsReceiver
;
private
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
buildStreamMessageListenerContainer
(
RedisConnectionFactory
factory
)
{
var
options
=
StreamMessageListenerContainer
.
StreamMessageListenerContainerOptions
.
builder
()
.
pollTimeout
(
Duration
.
ofMillis
(
1
))
.
build
();
return
StreamMessageListenerContainer
.
create
(
factory
,
options
);
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
*/
private
Subscription
receiveSqlAntigenicQuestion
(
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
listenerContainer
,
int
t
)
{
return
listenerContainer
.
receiveAutoAck
(
Consumer
.
from
(
SWEET_ANTIGENIC_QUESTION_DRAW
.
getGroup
(),
SWEET_ANTIGENIC_QUESTION_DRAW
.
name
()
+
t
),
StreamOffset
.
create
(
SWEET_ANTIGENIC_QUESTION_DRAW
.
getKey
(),
ReadOffset
.
lastConsumed
()),
consumerAntigenicQuestionRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public
Subscription
subscriptionSqlAntigenicQuestion
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlAntigenicQuestion
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlAntigenicQuestion2
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlAntigenicQuestion
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlAntigenicQuestion3
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlAntigenicQuestion
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
/* -------------------------------------------------------- | */
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-sweet/src/main/java/com/liquidnet/service/consumer/sweet/receiver/ConsumerAntigenicQuestionRdsReceiver.java
0 → 100644
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
consumer
.
sweet
.
receiver
;
import
com.liquidnet.service.base.constant.MQConst
;
import
org.springframework.stereotype.Component
;
@Component
public
class
ConsumerAntigenicQuestionRdsReceiver
extends
AbstractSqlRedisReceiver
{
@Override
protected
String
getRedisStreamKey
()
{
return
MQConst
.
SweetQueue
.
SWEET_ANTIGENIC_QUESTION_DRAW
.
getKey
();
}
@Override
protected
String
getRedisStreamGroup
()
{
return
MQConst
.
SweetQueue
.
SWEET_ANTIGENIC_QUESTION_DRAW
.
getGroup
();
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/docu/db_kylin_structure.sql
View file @
e15bafc6
...
...
@@ -928,21 +928,6 @@ CREATE TABLE `kylin_order_express_status`
PRIMARY
KEY
(
`mid`
)
)
ENGINE
=
InnoDB
COMMENT
'订单快递状态表'
;
drop
TABLE
if
exists
`kylin_order_express_performances`
;
CREATE
TABLE
`kylin_order_express_performances`
(
`mid`
int
unsigned
NOT
NULL
AUTO_INCREMENT
,
`order_express_performances_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'order_express_performances_id'
,
`performances_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'performances_id'
,
`total1`
int
NOT
NULL
DEFAULT
0
COMMENT
'已下单'
,
`total2`
int
NOT
NULL
DEFAULT
0
COMMENT
'已揽收'
,
`total3`
int
NOT
NULL
DEFAULT
0
COMMENT
'已签收'
,
`created_at`
timestamp
NULL
DEFAULT
NULL
,
`updated_at`
timestamp
NULL
DEFAULT
NULL
,
KEY
`order_express_performances_id_index`
(
`order_express_performances_id`
),
PRIMARY
KEY
(
`mid`
)
)
ENGINE
=
InnoDB
COMMENT
'订单快递演出记录表'
;
drop
TABLE
if
exists
`kylin_order_refund_pic`
;
CREATE
TABLE
`kylin_order_refund_pic`
(
...
...
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/config/WechatMpConfigure.java
deleted
100644 → 0
View file @
aad3f7f5
package
com
.
liquidnet
.
service
.
platform
.
config
;
import
me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
me.chanjar.weixin.mp.api.impl.WxMpServiceImpl
;
import
me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
javax.annotation.PostConstruct
;
@Configuration
public
class
WechatMpConfigure
{
private
static
String
appidZhengzai
;
private
static
String
secretZhengzai
;
private
static
String
tokenZhengzai
;
private
static
String
aeskeyZhengzai
;
private
static
String
appidModernsky
;
private
static
String
secretModernsky
;
@Value
(
"${liquidnet.wechat.service.zhengzai.appid}"
)
public
void
setAppidZhengzai
(
String
appidZhengzai
)
{
WechatMpConfigure
.
appidZhengzai
=
appidZhengzai
;
}
@Value
(
"${liquidnet.wechat.service.zhengzai.secret}"
)
public
void
setSecretZhengzai
(
String
secretZhengzai
)
{
WechatMpConfigure
.
secretZhengzai
=
secretZhengzai
;
}
@Value
(
"${liquidnet.wechat.service.zhengzai.token}"
)
public
void
setTokenZhengzai
(
String
tokenZhengzai
)
{
WechatMpConfigure
.
tokenZhengzai
=
tokenZhengzai
;
}
@Value
(
"${liquidnet.wechat.service.zhengzai.aeskey}"
)
public
void
setAeskeyZhengzai
(
String
aeskeyZhengzai
)
{
WechatMpConfigure
.
aeskeyZhengzai
=
aeskeyZhengzai
;
}
@Value
(
"${liquidnet.wechat.service.modernsky.appid}"
)
public
void
setAppidModernsky
(
String
appidModernsky
)
{
WechatMpConfigure
.
appidModernsky
=
appidModernsky
;
}
@Value
(
"${liquidnet.wechat.service.modernsky.secret}"
)
public
void
setSecretModernsky
(
String
secretModernsky
)
{
WechatMpConfigure
.
secretModernsky
=
secretModernsky
;
}
private
WxMpService
wxMpZhengzaiService
;
private
WxMpService
wxMpModernskyService
;
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
@PostConstruct
public
void
init
()
{
wxMpZhengzaiService
=
new
WxMpServiceImpl
()
{
{
RedisTemplateWxRedisOps
redisTemplateWxRedisOps
=
new
RedisTemplateWxRedisOps
(
stringRedisTemplate
);
WxMpRedisConfigImpl
wxMpDefaultConfig
=
new
WxMpRedisConfigImpl
(
redisTemplateWxRedisOps
,
"sweet:accessToken:service:zhengzai"
);
wxMpDefaultConfig
.
setAppId
(
appidZhengzai
);
wxMpDefaultConfig
.
setSecret
(
secretZhengzai
);
wxMpDefaultConfig
.
setToken
(
tokenZhengzai
);
wxMpDefaultConfig
.
setAesKey
(
aeskeyZhengzai
);
this
.
setWxMpConfigStorage
(
wxMpDefaultConfig
);
}
};
wxMpModernskyService
=
new
WxMpServiceImpl
()
{
{
RedisTemplateWxRedisOps
redisTemplateWxRedisOps
=
new
RedisTemplateWxRedisOps
(
stringRedisTemplate
);
WxMpRedisConfigImpl
wxMpDefaultConfig
=
new
WxMpRedisConfigImpl
(
redisTemplateWxRedisOps
,
"sweet:accessToken:service:modernsky"
);
wxMpDefaultConfig
.
setAppId
(
appidModernsky
);
wxMpDefaultConfig
.
setSecret
(
secretModernsky
);
this
.
setWxMpConfigStorage
(
wxMpDefaultConfig
);
}
};
}
public
WxMpService
getWxMpService
(
Integer
pnum
)
{
switch
(
pnum
)
{
case
1
:
return
wxMpZhengzaiService
;
case
2
:
return
wxMpModernskyService
;
}
return
null
;
}
}
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/controller/basicServices/WechatShareController.java
deleted
100644 → 0
View file @
aad3f7f5
package
com
.
liquidnet
.
service
.
platform
.
controller
.
basicServices
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.platform.config.WechatMpConfigure
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.bean.WxJsapiSignature
;
import
me.chanjar.weixin.common.enums.TicketType
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
/**
* <p>
* 阿里云上传
* </p>
*
* @author jiangxiulong
* @since 2021-07-09
*/
@Slf4j
@Api
(
tags
=
"basicServices"
)
@RestController
@RequestMapping
(
"basicServices/wechatShareSign"
)
public
class
WechatShareController
{
@Autowired
WechatMpConfigure
wechatMpConfigure
;
@GetMapping
(
"/zhengzai"
)
@ApiOperation
(
"正在微信分享sign"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"url"
,
value
=
"url地址 注意 URL 一定要动态获取,不能 hardcode"
,
required
=
true
),
})
public
ResponseDto
<
WxJsapiSignature
>
zhengzai
(
@RequestParam
String
url
)
{
try
{
WxMpService
wxMpService
=
wechatMpConfigure
.
getWxMpService
(
1
);
wxMpService
.
getWxMpConfigStorage
().
getAccessToken
();
log
.
info
(
"zhengzaiShare-isAccessTokenExpired:[{}] "
,
wxMpService
.
getWxMpConfigStorage
().
isAccessTokenExpired
());
log
.
info
(
"zhengzaiShare-getAccessToken:[{}] "
,
wxMpService
.
getWxMpConfigStorage
().
getAccessToken
());
log
.
info
(
"zhengzaiShare-isTicketExpired:[{}] "
,
wxMpService
.
getWxMpConfigStorage
().
isTicketExpired
(
TicketType
.
JSAPI
));
log
.
info
(
"zhengzaiShare-Ticket:[{}] "
,
wxMpService
.
getWxMpConfigStorage
().
getTicket
(
TicketType
.
JSAPI
));
WxJsapiSignature
jsapiSignature
=
wxMpService
.
createJsapiSignature
(
url
);
return
ResponseDto
.
success
(
jsapiSignature
);
}
catch
(
Exception
e
)
{
log
.
error
(
"分享signZhengzaiException"
,
e
);
return
ResponseDto
.
success
();
}
}
@GetMapping
(
"/modernsky"
)
@ApiOperation
(
"摩登微信分享sign"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"url"
,
value
=
"url地址 注意 URL 一定要动态获取,不能 hardcode"
,
required
=
true
),
})
public
ResponseDto
<
WxJsapiSignature
>
modernsky
(
@RequestParam
String
url
)
{
try
{
WxMpService
wxMpService
=
wechatMpConfigure
.
getWxMpService
(
2
);
wxMpService
.
getWxMpConfigStorage
().
getAccessToken
();
log
.
info
(
"modernskyShare-isAccessTokenExpired:[{}] "
,
wxMpService
.
getWxMpConfigStorage
().
isAccessTokenExpired
());
log
.
info
(
"modernskyShare-getAccessToken:[{}] "
,
wxMpService
.
getWxMpConfigStorage
().
getAccessToken
());
log
.
info
(
"modernskyShare-isTicketExpired:[{}] "
,
wxMpService
.
getWxMpConfigStorage
().
isTicketExpired
(
TicketType
.
JSAPI
));
log
.
info
(
"modernskyShare-Ticket:[{}] "
,
wxMpService
.
getWxMpConfigStorage
().
getTicket
(
TicketType
.
JSAPI
));
WxJsapiSignature
jsapiSignature
=
wxMpService
.
createJsapiSignature
(
url
);
return
ResponseDto
.
success
(
jsapiSignature
);
}
catch
(
Exception
e
)
{
log
.
error
(
"分享signModernskyException"
,
e
);
return
ResponseDto
.
success
();
}
}
}
liquidnet-bus-service/liquidnet-service-sweet/docu/db_sweetsugar_structure.sql
View file @
e15bafc6
...
...
@@ -439,6 +439,7 @@ CREATE TABLE `sweet_wechat_user`
DEFAULT
CHARSET
utf8mb4
COLLATE
utf8mb4_unicode_ci
ROW_FORMAT
=
DYNAMIC
COMMENT
'正在现场服务号关注事件储存用户信息表'
;
alter
table
sweet_wechat_user
add
type
tinyint
NOT
NULL
DEFAULT
1
COMMENT
'服务类型 1正在 2摩登'
after
user_id
;
-- 小程序登录记录用户解密后信息表
drop
TABLE
if
exists
`sweet_applet_user`
;
...
...
@@ -539,3 +540,33 @@ CREATE TABLE `sweet_remind`
COLLATE
utf8mb4_unicode_ci
ROW_FORMAT
=
DYNAMIC
COMMENT
'提醒记录表'
;
-- 防疫答题
drop
TABLE
if
exists
`sweet_antigenic_question`
;
CREATE
TABLE
`sweet_antigenic_question`
(
`mid`
bigint
unsigned
NOT
NULL
AUTO_INCREMENT
,
`question_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'question_id'
,
`type`
tinyint
NOT
NULL
DEFAULT
0
COMMENT
'活动类型 1MDSK防疫答题 2草莓防疫答题'
,
`openId`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'openId'
,
`unionId`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'unionId'
,
`nickname`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'姓名'
,
`address`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'居住地址'
,
`phone`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'联系电话'
,
`urgent_phone`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'紧急联系人电话'
,
`keyword1`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'答案'
,
`keyword11`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'答案补充'
,
`keyword2`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'答案'
,
`keyword3`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'答案'
,
`keyword4`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'答案'
,
`keyword5`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'答案'
,
`keyword6`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'答案'
,
`keyword7`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'答案'
,
`created_at`
datetime
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'创建时间'
,
`updated_at`
datetime
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'更新时间'
,
PRIMARY
KEY
(
`mid`
),
KEY
`sweet_question_id`
(
`question_id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
utf8mb4
COLLATE
utf8mb4_unicode_ci
ROW_FORMAT
=
DYNAMIC
COMMENT
'防疫答题表'
;
liquidnet-bus-service/liquidnet-service-sweet/docu/redis_queue_create.txt
View file @
e15bafc6
...
...
@@ -31,4 +31,8 @@ XGROUP CREATE sweet:stream:rk.sweetTemplateMsg group.sweetTemplateMsg 0
-- 用户投票记录 --
XADD sweet:stream:rk.cityVote * 0 0
XGROUP CREATE sweet:stream:rk.cityVote group.cityVote 0
\ No newline at end of file
XGROUP CREATE sweet:stream:rk.cityVote group.cityVote 0
-- 防疫答题 --
XADD sweet:stream:rk.antigenicQuestion * 0 0
XGROUP CREATE sweet:stream:rk.antigenicQuestion group.antigenicQuestion 0
\ No newline at end of file
liquidnet-bus-service/liquidnet-service-sweet/pom.xml
View file @
e15bafc6
...
...
@@ -69,6 +69,18 @@
<groupId>
redis.clients
</groupId>
<artifactId>
jedis
</artifactId>
</dependency>
<dependency>
<groupId>
com.liquidnet
</groupId>
<artifactId>
liquidnet-service-sweet-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<scope>
compile
</scope>
</dependency>
<dependency>
<groupId>
com.liquidnet
</groupId>
<artifactId>
liquidnet-service-sweet-do
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<scope>
compile
</scope>
</dependency>
</dependencies>
<build>
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/constant/SweetConstant.java
View file @
e15bafc6
...
...
@@ -29,6 +29,10 @@ public class SweetConstant {
public
final
static
String
REDIS_KEY_SWEET_CITY_VOTE_USER
=
"sweet:cityVote:user:"
;
public
final
static
String
REDIS_KEY_SWEET_CITY_VOTE_STAT_UPDATE_TIME
=
"sweet:cityVote:updateTime"
;
public
final
static
String
REDIS_KEY_SWEET_WECHAT_USER_INFO_MODERNSKY
=
"sweet:wechatUser:modernsky:unionId:"
;
public
final
static
String
REDIS_KEY_SWEET_WECHAT_USER_INFO_STR_MODERNSKY
=
"sweet:wechatUser:modernsky:unionIdStr:"
;
public
final
static
String
REDIS_KEY_SWEET_WECHAT_USER_UNIONID_MODERNSKY
=
"sweet:wechatUser:modernsky:openId:"
;
// public enum ManualPosition {
// artist("艺人","artist"),
// signingTime("签售时间","signingTime"),
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetAnswerController.java
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
controller
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.entity.SweetArtists
;
import
com.liquidnet.service.sweet.service.ISweetAnswerService
;
import
com.liquidnet.service.sweet.vo.SweetAnswerVo
;
import
io.swagger.annotations.Api
;
...
...
@@ -21,7 +19,7 @@ import org.springframework.web.bind.annotation.*;
* @author jiangxiulong
* @since 2021-08-12
*/
@Api
(
tags
=
"答案"
)
@Api
(
tags
=
"
活动-
答案"
)
@RestController
@RequestMapping
(
"/sweetAnswer"
)
public
class
SweetAnswerController
{
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetAntigenicQuestionController.java
0 → 100644
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
controller
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.dto.param.SweetAntigenicQuestionParam
;
import
com.liquidnet.service.sweet.service.ISweetAntigenicQuestionService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
/**
* <p>
* 防疫答题表 前端控制器
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
@Api
(
tags
=
"活动-防疫答题"
)
@RestController
@RequestMapping
(
"/AntigenicQuestion"
)
public
class
SweetAntigenicQuestionController
{
@Autowired
private
ISweetAntigenicQuestionService
sweetAntigenicQuestionService
;
@PostMapping
(
"create"
)
@ApiOperation
(
"添加答题记录"
)
public
ResponseDto
<
Boolean
>
add
(
@Valid
@RequestBody
SweetAntigenicQuestionParam
param
)
{
return
sweetAntigenicQuestionService
.
create
(
param
);
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetCityVoteController.java
View file @
e15bafc6
...
...
@@ -23,7 +23,7 @@ import java.util.List;
* @author jiangxiulong
* @since 2021-09-15
*/
@Api
(
tags
=
"城市投票"
)
@Api
(
tags
=
"
活动-
城市投票"
)
@RestController
@RequestMapping
(
"/sweetCityVote"
)
public
class
SweetCityVoteController
{
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetWechatActionCallbackController.java
View file @
e15bafc6
...
...
@@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.*;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.PrintWriter
;
@Api
(
tags
=
"
公众号
动作回调"
)
@Api
(
tags
=
"
服务号-
动作回调"
)
@RestController
@RequestMapping
(
"/actionCallback"
)
@Slf4j
...
...
@@ -24,7 +24,7 @@ public class SweetWechatActionCallbackController {
private
WechatSignUtils
wechatSignUtils
;
@GetMapping
(
"record"
)
@ApiOperation
(
"
get
"
)
@ApiOperation
(
"
配置验签微信调用
"
)
public
void
record
(
HttpServletResponse
response
,
@RequestParam
()
String
signature
,
...
...
@@ -47,10 +47,10 @@ public class SweetWechatActionCallbackController {
}
@PostMapping
(
"record"
)
@ApiOperation
(
"
post
"
)
@ApiOperation
(
"
用户动作微信回调
"
)
public
String
record
(
@RequestBody
String
requestBody
,
// @RequestParam String requestBody
,
@RequestParam
(
"type"
)
Integer
type
,
@RequestParam
(
"signature"
)
String
signature
,
@RequestParam
(
"timestamp"
)
String
timestamp
,
@RequestParam
(
"nonce"
)
String
nonce
,
...
...
@@ -58,13 +58,13 @@ public class SweetWechatActionCallbackController {
@RequestParam
(
name
=
"encrypt_type"
,
required
=
false
)
String
encType
,
@RequestParam
(
name
=
"msg_signature"
,
required
=
false
)
String
msgSignature
)
{
log
.
info
(
"\n接收微信请求:[openid=[{}], [signature=[{}], encType=[{}], msgSignature=[{}],"
log
.
info
(
"\n接收微信请求:[
type=[{}],
openid=[{}], [signature=[{}], encType=[{}], msgSignature=[{}],"
+
" timestamp=[{}], nonce=[{}], requestBody=[\n{}\n] "
,
openid
,
signature
,
encType
,
msgSignature
,
timestamp
,
nonce
,
requestBody
);
type
,
openid
,
signature
,
encType
,
msgSignature
,
timestamp
,
nonce
,
requestBody
);
if
(!
wechatSignUtils
.
checkSignature
(
signature
,
timestamp
,
nonce
))
{
log
.
info
(
"验签未通过,非法请求,可能属于伪造的请求!"
);
return
""
;
}
return
sweetWechatCallbackService
.
record
(
requestBody
,
timestamp
,
nonce
,
encType
,
msgSignature
);
return
sweetWechatCallbackService
.
record
(
requestBody
,
t
ype
,
t
imestamp
,
nonce
,
encType
,
msgSignature
);
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetWechatLoginController.java
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
controller
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.dto.vo.WechatTokenInfoVo
;
import
com.liquidnet.service.sweet.dto.vo.WechatUserInfoVo
;
import
com.liquidnet.service.sweet.service.impl.SweetWechatLoginServiceImpl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
...
...
@@ -23,7 +25,7 @@ public class SweetWechatLoginController {
private
SweetWechatLoginServiceImpl
sweetLoginService
;
@GetMapping
(
"userInfo"
)
@ApiOperation
(
"
code获取用户信息
"
)
@ApiOperation
(
"
小程序解密手机号
"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"code"
,
value
=
"微信code"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"encryptedData"
,
value
=
"encryptedData"
,
required
=
true
),
...
...
@@ -39,7 +41,7 @@ public class SweetWechatLoginController {
return
sweetLoginService
.
userInfo
(
code
,
encryptedData
,
iv
,
type
);
}
@ApiOperation
(
value
=
"
微信小程序登录凭证校验
获取openid"
,
notes
=
"这里仅用于获取OPENID使用"
)
@ApiOperation
(
value
=
"
小程序
获取openid"
,
notes
=
"这里仅用于获取OPENID使用"
)
@GetMapping
(
value
=
{
"maOpenId"
})
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"jsCode"
,
value
=
"微信jsCode"
,
required
=
true
),
...
...
@@ -49,7 +51,7 @@ public class SweetWechatLoginController {
return
sweetLoginService
.
wxaCode2Session
(
jsCode
,
type
);
}
@ApiOperation
(
value
=
"
微信公众号登录
获取openid"
,
notes
=
"这里仅用于获取OPENID使用"
)
@ApiOperation
(
value
=
"
服务号
获取openid"
,
notes
=
"这里仅用于获取OPENID使用"
)
@GetMapping
(
value
=
{
"mpOpenId"
})
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"code"
,
value
=
"微信code"
,
required
=
true
),
...
...
@@ -59,4 +61,24 @@ public class SweetWechatLoginController {
return
sweetLoginService
.
wxOauth2AccessToken
(
code
,
type
);
}
@ApiOperation
(
value
=
"服务号获取openId、unionId"
,
notes
=
"本接口在scope参数为snsapi_base时不再提供unionID字段,只需将scope参数修改为snsapi_userinfo即可重新获得用户unionID"
)
@GetMapping
(
value
=
{
"mpAccessTokenInfo"
})
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"code"
,
value
=
"微信code"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"Integer"
,
name
=
"type"
,
value
=
"1正在 2摩登"
,
required
=
true
)
})
public
ResponseDto
<
WechatTokenInfoVo
>
mpWxOauth2AccessTokenInfo
(
@RequestParam
String
code
,
@RequestParam
Integer
type
)
{
return
sweetLoginService
.
mpWxOauth2AccessTokenInfo
(
code
,
type
);
}
@ApiOperation
(
value
=
"服务号获取用户基本信息"
,
notes
=
"本接口在用户未关注公众号时,将不返回用户unionID信息,已关注的用户,开发者可使用“获取用户基本信息接口”获取unionID,未关注用户,开发者可使用“微信授权登录接口”并将scope参数设置为snsapi_userinfo,获取用户unionID"
)
@GetMapping
(
value
=
{
"mpUserInfo"
})
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"code"
,
value
=
"微信code"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"Integer"
,
name
=
"type"
,
value
=
"1正在 2摩登"
,
required
=
true
)
})
public
ResponseDto
<
WechatUserInfoVo
>
mpUserInfo
(
@RequestParam
String
code
,
@RequestParam
Integer
type
)
{
return
sweetLoginService
.
mpUserInfo
(
code
,
type
);
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetWechatShareController.java
View file @
e15bafc6
...
...
@@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
* @since 2021-08-20
*/
@Slf4j
@Api
(
tags
=
"
正在-摩登公众号
分享"
)
@Api
(
tags
=
"
服务号-
分享"
)
@RestController
@RequestMapping
(
"wechatShareSign"
)
public
class
SweetWechatShareController
{
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetWechatTemplateController.java
View file @
e15bafc6
...
...
@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*;
import
javax.validation.Valid
;
@Api
(
tags
=
"
公众号
模版消息"
)
@Api
(
tags
=
"
服务号-
模版消息"
)
@RestController
@RequestMapping
(
"/wechatTemplate"
)
public
class
SweetWechatTemplateController
{
...
...
@@ -33,7 +33,7 @@ public class SweetWechatTemplateController {
}
@PostMapping
(
"remind"
)
@ApiOperation
(
"提醒记录"
)
@ApiOperation
(
"
小程序演出
提醒记录"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"openId"
,
value
=
"微信openId"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"unionId"
,
value
=
"微信unionId"
,
required
=
true
),
...
...
@@ -51,11 +51,13 @@ public class SweetWechatTemplateController {
@ApiOperation
(
"获取关注状态"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"unionId"
,
value
=
"微信unionId"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"Integer"
,
name
=
"type"
,
value
=
"type 1正在 2摩登"
,
required
=
false
),
})
public
ResponseDto
followStatus
(
@RequestParam
()
String
unionId
@RequestParam
()
String
unionId
,
@RequestParam
(
defaultValue
=
"1"
)
Integer
type
)
{
boolean
status
=
sweetTemplateService
.
followStatus
(
unionId
);
boolean
status
=
sweetTemplateService
.
followStatus
(
unionId
,
type
);
if
(
status
)
{
return
ResponseDto
.
success
(
1
);
}
else
{
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/syncRedis/
Jxl
DataController.java
→
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/syncRedis/
Redis
DataController.java
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
controller
.
syncRedis
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.service.impl.syncRedis.
JxlData
Impl
;
import
com.liquidnet.service.sweet.service.impl.syncRedis.
RedisDataService
Impl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -9,14 +9,21 @@ import org.springframework.web.bind.annotation.PostMapping;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@Api
(
tags
=
"redis数据迁移-jxl"
)
/**
* <p>
* 同步redis数据
* </p>
*
* @author jiangxiulong
* @since 2021-08-12
*/
@Api
(
tags
=
"数据迁移"
)
@RestController
@RequestMapping
(
"sync"
)
public
class
Jxl
DataController
{
public
class
Redis
DataController
{
@Autowired
private
JxlDataImpl
jxlData
;
private
RedisDataServiceImpl
redisDataService
;
/**
* basicServices
...
...
@@ -25,14 +32,14 @@ public class JxlDataController {
@PostMapping
(
"basicServices/versions"
)
@ApiOperation
(
"basicServices版本控制数据迁移-可以通过后台编辑"
)
public
ResponseDto
<
Boolean
>
basicServicesVersions
()
{
Boolean
result
=
jxlData
.
basicServicesVersions
();
Boolean
result
=
redisDataService
.
basicServicesVersions
();
return
ResponseDto
.
success
(
result
);
}
@PostMapping
(
"basicServices/upush"
)
@ApiOperation
(
"basicServices推送数据迁移"
)
public
ResponseDto
<
Boolean
>
basicServicesUpush
()
{
Boolean
result
=
jxlData
.
basicServicesUpush
();
Boolean
result
=
redisDataService
.
basicServicesUpush
();
return
ResponseDto
.
success
(
result
);
}
...
...
@@ -43,7 +50,7 @@ public class JxlDataController {
@PostMapping
(
"kylin/banner"
)
@ApiOperation
(
"kylin-banner数据迁移-可以通过后台编辑"
)
public
ResponseDto
<
Boolean
>
kylinBanner
()
{
Boolean
result
=
jxlData
.
kylinBanner
();
Boolean
result
=
redisDataService
.
kylinBanner
();
return
ResponseDto
.
success
(
result
);
}
...
...
@@ -54,35 +61,35 @@ public class JxlDataController {
@PostMapping
(
"sweet/accessToken"
)
@ApiOperation
(
"sweet-AccessToken数据迁移-可不迁可自动生成"
)
public
ResponseDto
<
Boolean
>
sweetAccessToken
()
{
Boolean
result
=
jxlData
.
sweetAccessToken
();
Boolean
result
=
redisDataService
.
sweetAccessToken
();
return
ResponseDto
.
success
(
result
);
}
@PostMapping
(
"sweet/answer"
)
@ApiOperation
(
"sweet-answer数据迁移"
)
public
ResponseDto
<
Boolean
>
sweetAnswer
()
{
Boolean
result
=
jxlData
.
sweetAnswer
();
Boolean
result
=
redisDataService
.
sweetAnswer
();
return
ResponseDto
.
success
(
result
);
}
@PostMapping
(
"sweet/wechatUser/openId"
)
@ApiOperation
(
"sweet-wechatUser-openId数据迁移"
)
public
ResponseDto
<
Boolean
>
sweetOpenId
()
{
Boolean
result
=
jxlData
.
sweetOpenId
();
Boolean
result
=
redisDataService
.
sweetOpenId
();
return
ResponseDto
.
success
(
result
);
}
@PostMapping
(
"sweet/wechatUser/unionId"
)
@ApiOperation
(
"sweet-wechatUser-unionId数据迁移-这里也会同步unionIdStr会抛异常过滤掉"
)
public
ResponseDto
<
Boolean
>
sweetUnionId
()
{
Boolean
result
=
jxlData
.
sweetUnionId
();
Boolean
result
=
redisDataService
.
sweetUnionId
();
return
ResponseDto
.
success
(
result
);
}
@PostMapping
(
"sweet/wechatUser/unionIdStr"
)
@ApiOperation
(
"sweet-wechatUser-unionIdStr数据迁移"
)
public
ResponseDto
<
Boolean
>
sweetUnionIdStr
()
{
Boolean
result
=
jxlData
.
sweetUnionIdStr
();
Boolean
result
=
redisDataService
.
sweetUnionIdStr
();
return
ResponseDto
.
success
(
result
);
}
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/syncRedis/
SweetWechatSync
DataController.java
→
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/syncRedis/
User
DataController.java
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
controller
.
syncRedis
;
import
com.liquidnet.commons.lang.util.HttpUtil
;
import
com.liquidnet.service.sweet.service.impl.
SweetWechatMpService
;
import
com.liquidnet.service.sweet.service.impl.
syncRedis.UserDataServiceImpl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
...
...
@@ -17,17 +17,25 @@ import org.springframework.web.bind.annotation.RestController;
import
java.io.*
;
@Api
(
tags
=
"同步微信用户数据"
)
/**
* <p>
* 外部用户注册、微信服务号关注用户数据同步
* </p>
*
* @author jiangxiulong
* @since 2021-08-12
*/
@Api
(
tags
=
"数据迁移"
)
@RestController
@RequestMapping
(
"/wechatSync"
)
@Slf4j
public
class
SweetWechatSync
DataController
{
public
class
User
DataController
{
@Autowired
private
SweetWechatMpService
sweetWechatMp
Service
;
private
UserDataServiceImpl
userData
Service
;
@GetMapping
(
"regMobile"
)
@ApiOperation
(
"注册"
)
@ApiOperation
(
"
外部手机号调用adam
注册"
)
public
void
regMobile
()
throws
IOException
{
String
filePath
=
"/Users/jiangxiulong/Desktop/keys2.txt"
;
String
encoding
=
"UTF-8"
;
...
...
@@ -58,23 +66,26 @@ public class SweetWechatSyncDataController {
}
@GetMapping
(
"users"
)
@ApiOperation
(
"关注用户"
)
public
void
getUsers
()
{
@ApiOperation
(
"同步所有关注服务号用户"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"Integer"
,
name
=
"type"
,
value
=
"type 1正在 2摩登"
,
required
=
true
)
})
public
void
getUsers
(
@RequestParam
()
Integer
type
)
{
try
{
sweetWechatMpService
.
userInfo
(
);
userDataService
.
userInfo
(
type
);
}
catch
(
Exception
e
)
{
log
.
error
(
"getUsers"
,
e
);
}
}
@GetMapping
(
"user"
)
@ApiOperation
(
"
openid同步单个关注
用户"
)
@ApiOperation
(
"
以openid同步单个关注服务号的
用户"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"openId"
,
value
=
"openId"
,
required
=
true
)
})
public
void
getUser
(
@RequestParam
()
String
openId
)
{
try
{
sweetWechatMp
Service
.
getUser
(
openId
);
userData
Service
.
getUser
(
openId
);
}
catch
(
Exception
e
)
{
log
.
error
(
"getUser"
,
e
);
}
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/handler/SubscribeHandler.java
View file @
e15bafc6
...
...
@@ -5,6 +5,7 @@ import com.liquidnet.commons.lang.util.DateUtil;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.sweet.config.WechatMpConfigure
;
import
com.liquidnet.service.sweet.entity.SweetWechatUser
;
import
com.liquidnet.service.sweet.service.impl.SweetWechatTemplateServiceImpl
;
import
com.liquidnet.service.sweet.utils.QueueUtils
;
...
...
@@ -20,7 +21,6 @@ import me.chanjar.weixin.mp.bean.result.WxMpUser;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.util.LinkedList
;
import
java.util.Map
;
...
...
@@ -39,6 +39,8 @@ public class SubscribeHandler implements WxMpMessageHandler {
private
RedisDataUtils
redisDataUtils
;
@Autowired
private
QueueUtils
queueUtils
;
@Autowired
WechatMpConfigure
wechatMpConfigure
;
@Autowired
private
SweetWechatTemplateServiceImpl
sweetWechatTemplateService
;
...
...
@@ -46,6 +48,9 @@ public class SubscribeHandler implements WxMpMessageHandler {
@Override
public
WxMpXmlOutMessage
handle
(
WxMpXmlMessage
wxMessage
,
Map
<
String
,
Object
>
context
,
WxMpService
wxMpService
,
WxSessionManager
sessionManager
)
throws
WxErrorException
{
String
zhengzaiAppId
=
wechatMpConfigure
.
getWxMpService
(
1
).
getWxMpConfigStorage
().
getAppId
();
String
otherAppId
=
wxMpService
.
getWxMpConfigStorage
().
getAppId
();
log
.
info
(
"接收到一个订阅事件:[{}]"
,
wxMessage
.
toString
());
// 1、获取微信用户信息
WxMpUser
wxMpUser
=
wxMpService
.
getUserService
().
userInfo
(
wxMessage
.
getFromUser
());
...
...
@@ -54,39 +59,74 @@ public class SubscribeHandler implements WxMpMessageHandler {
return
null
;
}
log
.
info
(
"根据 openId:[{}]获取到的微信用户信息:[{}]"
,
wxMessage
.
getFromUser
(),
wxMpUser
.
toString
());
// 记录用户信息
SweetWechatUser
userInfo
=
redisDataUtils
.
getSweetWechatUser
(
wxMpUser
.
getUnionId
());
SweetWechatUser
sweetWechatUser
=
SweetWechatUser
.
getNew
();
sweetWechatUser
.
setOpenId
(
wxMpUser
.
getOpenId
());
sweetWechatUser
.
setUnionId
(
wxMpUser
.
getUnionId
());
sweetWechatUser
.
setNickname
(
wxMpUser
.
getNickname
());
sweetWechatUser
.
setSexDesc
(
wxMpUser
.
getSexDesc
());
sweetWechatUser
.
setSex
(
wxMpUser
.
getSex
());
sweetWechatUser
.
setHeadImgUrl
(
wxMpUser
.
getHeadImgUrl
());
sweetWechatUser
.
setLanguage
(
wxMpUser
.
getLanguage
());
sweetWechatUser
.
setCountry
(
wxMpUser
.
getCountry
());
sweetWechatUser
.
setProvince
(
wxMpUser
.
getProvince
());
sweetWechatUser
.
setCity
(
wxMpUser
.
getCity
());
sweetWechatUser
.
setSubscribeTime
(
DateUtil
.
ofEpochMilli
(
wxMpUser
.
getSubscribeTime
()));
sweetWechatUser
.
setSubscribeScene
(
wxMpUser
.
getSubscribeScene
());
if
(
null
==
userInfo
)
{
sweetWechatUser
.
setUserId
(
IDGenerator
.
nextSnowId
());
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
LocalDateTime
now
=
LocalDateTime
.
now
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_user.insert"
));
sqlsDataA
.
add
(
new
Object
[]{
sweetWechatUser
.
getUserId
(),
sweetWechatUser
.
getOpenId
(),
sweetWechatUser
.
getUnionId
(),
sweetWechatUser
.
getNickname
(),
sweetWechatUser
.
getSexDesc
(),
sweetWechatUser
.
getSex
(),
sweetWechatUser
.
getHeadImgUrl
(),
sweetWechatUser
.
getLanguage
(),
sweetWechatUser
.
getCountry
(),
sweetWechatUser
.
getProvince
(),
sweetWechatUser
.
getCity
(),
sweetWechatUser
.
getSubscribeTime
(),
sweetWechatUser
.
getSubscribeScene
()
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
// 入缓存
redisDataUtils
.
setSweetWechatUser
(
sweetWechatUser
);
//发送模版消息
sweetWechatTemplateService
.
subscribeSend
(
sweetWechatUser
);
if
(
zhengzaiAppId
.
equals
(
otherAppId
))
{
// 记录用户信息
SweetWechatUser
userInfo
=
redisDataUtils
.
getSweetWechatUser
(
wxMpUser
.
getUnionId
());
SweetWechatUser
sweetWechatUser
=
SweetWechatUser
.
getNew
();
sweetWechatUser
.
setOpenId
(
wxMpUser
.
getOpenId
());
sweetWechatUser
.
setUnionId
(
wxMpUser
.
getUnionId
());
sweetWechatUser
.
setNickname
(
wxMpUser
.
getNickname
());
sweetWechatUser
.
setSexDesc
(
wxMpUser
.
getSexDesc
());
sweetWechatUser
.
setSex
(
wxMpUser
.
getSex
());
sweetWechatUser
.
setHeadImgUrl
(
wxMpUser
.
getHeadImgUrl
());
sweetWechatUser
.
setLanguage
(
wxMpUser
.
getLanguage
());
sweetWechatUser
.
setCountry
(
wxMpUser
.
getCountry
());
sweetWechatUser
.
setProvince
(
wxMpUser
.
getProvince
());
sweetWechatUser
.
setCity
(
wxMpUser
.
getCity
());
sweetWechatUser
.
setSubscribeTime
(
DateUtil
.
ofEpochMilli
(
wxMpUser
.
getSubscribeTime
()));
sweetWechatUser
.
setSubscribeScene
(
wxMpUser
.
getSubscribeScene
());
if
(
null
==
userInfo
)
{
sweetWechatUser
.
setUserId
(
IDGenerator
.
nextSnowId
());
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_user.insert"
));
sqlsDataA
.
add
(
new
Object
[]{
sweetWechatUser
.
getUserId
(),
1
,
sweetWechatUser
.
getOpenId
(),
sweetWechatUser
.
getUnionId
(),
sweetWechatUser
.
getNickname
(),
sweetWechatUser
.
getSexDesc
(),
sweetWechatUser
.
getSex
(),
sweetWechatUser
.
getHeadImgUrl
(),
sweetWechatUser
.
getLanguage
(),
sweetWechatUser
.
getCountry
(),
sweetWechatUser
.
getProvince
(),
sweetWechatUser
.
getCity
(),
sweetWechatUser
.
getSubscribeTime
(),
sweetWechatUser
.
getSubscribeScene
()
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
// 入缓存
redisDataUtils
.
setSweetWechatUser
(
sweetWechatUser
);
//发送模版消息
sweetWechatTemplateService
.
subscribeSend
(
wxMpService
,
sweetWechatUser
);
}
}
else
{
// 记录用户信息
SweetWechatUser
userInfo
=
redisDataUtils
.
getSweetWechatUserModernsky
(
wxMpUser
.
getUnionId
());
SweetWechatUser
sweetWechatUser
=
SweetWechatUser
.
getNew
();
sweetWechatUser
.
setOpenId
(
wxMpUser
.
getOpenId
());
sweetWechatUser
.
setUnionId
(
wxMpUser
.
getUnionId
());
sweetWechatUser
.
setNickname
(
wxMpUser
.
getNickname
());
sweetWechatUser
.
setSexDesc
(
wxMpUser
.
getSexDesc
());
sweetWechatUser
.
setSex
(
wxMpUser
.
getSex
());
sweetWechatUser
.
setHeadImgUrl
(
wxMpUser
.
getHeadImgUrl
());
sweetWechatUser
.
setLanguage
(
wxMpUser
.
getLanguage
());
sweetWechatUser
.
setCountry
(
wxMpUser
.
getCountry
());
sweetWechatUser
.
setProvince
(
wxMpUser
.
getProvince
());
sweetWechatUser
.
setCity
(
wxMpUser
.
getCity
());
sweetWechatUser
.
setSubscribeTime
(
DateUtil
.
ofEpochMilli
(
wxMpUser
.
getSubscribeTime
()));
sweetWechatUser
.
setSubscribeScene
(
wxMpUser
.
getSubscribeScene
());
if
(
null
==
userInfo
)
{
sweetWechatUser
.
setUserId
(
IDGenerator
.
nextSnowId
());
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_user.insert"
));
sqlsDataA
.
add
(
new
Object
[]{
sweetWechatUser
.
getUserId
(),
2
,
sweetWechatUser
.
getOpenId
(),
sweetWechatUser
.
getUnionId
(),
sweetWechatUser
.
getNickname
(),
sweetWechatUser
.
getSexDesc
(),
sweetWechatUser
.
getSex
(),
sweetWechatUser
.
getHeadImgUrl
(),
sweetWechatUser
.
getLanguage
(),
sweetWechatUser
.
getCountry
(),
sweetWechatUser
.
getProvince
(),
sweetWechatUser
.
getCity
(),
sweetWechatUser
.
getSubscribeTime
(),
sweetWechatUser
.
getSubscribeScene
()
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
// 入缓存
redisDataUtils
.
setSweetWechatUserModernsky
(
sweetWechatUser
);
//发送模版消息
sweetWechatTemplateService
.
subscribeSend
(
wxMpService
,
sweetWechatUser
);
}
}
return
null
;
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/handler/UnsubscribeHandler.java
View file @
e15bafc6
...
...
@@ -3,6 +3,7 @@ package com.liquidnet.service.sweet.handler;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.sweet.config.WechatMpConfigure
;
import
com.liquidnet.service.sweet.entity.SweetWechatUser
;
import
com.liquidnet.service.sweet.utils.QueueUtils
;
import
com.liquidnet.service.sweet.utils.RedisDataUtils
;
...
...
@@ -37,12 +38,16 @@ public class UnsubscribeHandler implements WxMpMessageHandler {
private
RedisDataUtils
redisDataUtils
;
@Autowired
private
QueueUtils
queueUtils
;
@Autowired
WechatMpConfigure
wechatMpConfigure
;
@Override
public
WxMpXmlOutMessage
handle
(
WxMpXmlMessage
wxMessage
,
Map
<
String
,
Object
>
context
,
WxMpService
wxMpService
,
WxSessionManager
sessionManager
)
throws
WxErrorException
{
log
.
info
(
"接收到一个取消订阅事件:[{}]"
,
wxMessage
.
toString
());
String
zhengzaiAppId
=
wechatMpConfigure
.
getWxMpService
(
1
).
getWxMpConfigStorage
().
getAppId
();
String
otherAppId
=
wxMpService
.
getWxMpConfigStorage
().
getAppId
();
log
.
info
(
"接收到一个取消订阅事件:[{}]"
,
wxMessage
.
toString
());
// 1、获取微信用户信息
WxMpUser
wxMpUser
=
wxMpService
.
getUserService
().
userInfo
(
wxMessage
.
getFromUser
());
if
(
null
==
wxMpUser
)
{
...
...
@@ -50,23 +55,44 @@ public class UnsubscribeHandler implements WxMpMessageHandler {
return
null
;
}
log
.
info
(
"根据 openId:[{}]获取到的微信用户信息:[{}]"
,
wxMessage
.
getFromUser
(),
wxMpUser
.
toString
());
// 删除用户信息
String
sweetWechatUserUnionid
=
redisDataUtils
.
getSweetWechatUserUnionid
(
wxMpUser
.
getOpenId
());
if
(
null
!=
sweetWechatUserUnionid
&&
!
sweetWechatUserUnionid
.
isEmpty
())
{
SweetWechatUser
userInfo
=
redisDataUtils
.
getSweetWechatUser
(
sweetWechatUserUnionid
);
if
(
null
!=
userInfo
)
{
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
LocalDateTime
now
=
LocalDateTime
.
now
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_user.update"
));
sqlsDataA
.
add
(
new
Object
[]{
2
,
now
,
sweetWechatUserUnionid
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
redisDataUtils
.
delSweetWechatUser
(
sweetWechatUserUnionid
,
wxMpUser
.
getOpenId
());
if
(
zhengzaiAppId
.
equals
(
otherAppId
))
{
// 删除用户信息
String
sweetWechatUserUnionid
=
redisDataUtils
.
getSweetWechatUserUnionid
(
wxMpUser
.
getOpenId
());
if
(
null
!=
sweetWechatUserUnionid
&&
!
sweetWechatUserUnionid
.
isEmpty
())
{
SweetWechatUser
userInfo
=
redisDataUtils
.
getSweetWechatUser
(
sweetWechatUserUnionid
);
if
(
null
!=
userInfo
)
{
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
LocalDateTime
now
=
LocalDateTime
.
now
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_user.update"
));
sqlsDataA
.
add
(
new
Object
[]{
2
,
now
,
sweetWechatUserUnionid
,
1
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
redisDataUtils
.
delSweetWechatUser
(
sweetWechatUserUnionid
,
wxMpUser
.
getOpenId
());
}
}
}
else
{
// 删除用户信息
String
sweetWechatUserUnionid
=
redisDataUtils
.
getSweetWechatUserUnionidModernsky
(
wxMpUser
.
getOpenId
());
if
(
null
!=
sweetWechatUserUnionid
&&
!
sweetWechatUserUnionid
.
isEmpty
())
{
SweetWechatUser
userInfo
=
redisDataUtils
.
getSweetWechatUserModernsky
(
sweetWechatUserUnionid
);
if
(
null
!=
userInfo
)
{
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
LocalDateTime
now
=
LocalDateTime
.
now
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_user.update"
));
sqlsDataA
.
add
(
new
Object
[]{
2
,
now
,
sweetWechatUserUnionid
,
2
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
redisDataUtils
.
delSweetWechatUserModernsky
(
sweetWechatUserUnionid
,
wxMpUser
.
getOpenId
());
}
}
}
return
null
;
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/param/SweetCityVoteParam.java
View file @
e15bafc6
...
...
@@ -5,10 +5,11 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.io.Serializable
;
@ApiModel
(
value
=
"SweetCityVoteParam"
,
description
=
"用户投票记录入参"
)
@Data
public
class
SweetCityVoteParam
implements
java
.
io
.
Serializable
{
public
class
SweetCityVoteParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
2626425843975309892L
;
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/ISweetAntigenicQuestionService.java
0 → 100644
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
service
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.dto.param.SweetAntigenicQuestionParam
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.liquidnet.service.sweet.entity.SweetAntigenicQuestion
;
/**
* <p>
* 防疫答题表 服务类
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
public
interface
ISweetAntigenicQuestionService
extends
IService
<
SweetAntigenicQuestion
>
{
ResponseDto
<
Boolean
>
create
(
SweetAntigenicQuestionParam
param
);
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetAntigenicQuestionServiceImpl.java
0 → 100644
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.sweet.dto.param.SweetAntigenicQuestionParam
;
import
com.liquidnet.service.sweet.entity.SweetAntigenicQuestion
;
import
com.liquidnet.service.sweet.mapper.SweetAntigenicQuestionMapper
;
import
com.liquidnet.service.sweet.service.ISweetAntigenicQuestionService
;
import
com.liquidnet.service.sweet.utils.QueueUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.LinkedList
;
/**
* <p>
* 防疫答题表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
@Service
public
class
SweetAntigenicQuestionServiceImpl
extends
ServiceImpl
<
SweetAntigenicQuestionMapper
,
SweetAntigenicQuestion
>
implements
ISweetAntigenicQuestionService
{
@Autowired
QueueUtils
queueUtils
;
@Override
public
ResponseDto
<
Boolean
>
create
(
SweetAntigenicQuestionParam
param
)
{
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_antigenic_question.insert"
));
sqlsDataA
.
add
(
new
Object
[]{
IDGenerator
.
nextSnowId
(),
param
.
getType
(),
param
.
getOpenId
(),
param
.
getUnionId
(),
param
.
getNickname
(),
param
.
getAddress
(),
param
.
getPhone
(),
param
.
getUrgentPhone
(),
param
.
getKeyword1
(),
param
.
getKeyword11
(),
param
.
getKeyword2
(),
param
.
getKeyword3
(),
param
.
getKeyword4
(),
param
.
getKeyword5
(),
param
.
getKeyword6
(),
param
.
getKeyword7
()
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_ANTIGENIC_QUESTION_DRAW
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
return
ResponseDto
.
success
();
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetWechatCallbackServiceImpl.java
View file @
e15bafc6
...
...
@@ -53,8 +53,11 @@ public class SweetWechatCallbackServiceImpl {
return
router
;
}
public
String
record
(
String
requestBody
,
String
timestamp
,
String
nonce
,
String
encType
,
String
msgSignature
)
{
WxMpService
wxMpService
=
wechatMpConfigure
.
getWxMpService
(
1
);
public
String
record
(
String
requestBody
,
Integer
type
,
String
timestamp
,
String
nonce
,
String
encType
,
String
msgSignature
)
{
if
(
null
==
type
||
type
<=
0
)
{
type
=
1
;
}
WxMpService
wxMpService
=
wechatMpConfigure
.
getWxMpService
(
type
);
String
out
=
null
;
if
(
encType
==
null
||
encType
.
isEmpty
())
{
// 明文传输的消息
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetWechatLoginServiceImpl.java
View file @
e15bafc6
...
...
@@ -9,8 +9,11 @@ import com.liquidnet.commons.lang.util.JsonUtils;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.sweet.dto.vo.WechatTokenInfoVo
;
import
com.liquidnet.service.sweet.dto.vo.WechatUserInfoVo
;
import
com.liquidnet.service.sweet.utils.QueueUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.bean.WxOAuth2UserInfo
;
import
me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -20,7 +23,6 @@ import org.springframework.stereotype.Service;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
import
java.util.Objects
;
...
...
@@ -89,7 +91,7 @@ public class SweetWechatLoginServiceImpl {
return
ResponseDto
.
success
(
userInfo
);
}
catch
(
Exception
e
)
{
log
.
error
(
"WechatUserInfoError"
,
e
);
log
.
error
(
"WechatUserInfoError
Exception:{}
"
,
e
);
return
ResponseDto
.
failure
();
}
}
...
...
@@ -101,7 +103,7 @@ public class SweetWechatLoginServiceImpl {
params
.
add
(
"mobile"
,
mobile
);
HttpUtil
.
post
(
adamUrl
.
concat
(
"/adam/rsc/reg/mobile"
),
params
);
}
catch
(
Exception
e
)
{
log
.
error
(
"registerByMobile失败"
,
e
);
log
.
error
(
"registerByMobile失败
Exception:{}
"
,
e
);
}
}
...
...
@@ -110,7 +112,7 @@ public class SweetWechatLoginServiceImpl {
WxMaJscode2SessionResult
wxMaJscode2SessionResult
=
sweetWechatService
.
sessionInfo
(
jsCode
,
type
);
return
ResponseDto
.
success
(
wxMaJscode2SessionResult
.
getOpenid
());
}
catch
(
Exception
e
)
{
log
.
error
(
"wxaCode2SessionError"
,
e
);
log
.
error
(
"wxaCode2SessionError
Exception:{}
"
,
e
);
return
ResponseDto
.
failure
();
}
}
...
...
@@ -120,8 +122,31 @@ public class SweetWechatLoginServiceImpl {
WxOAuth2AccessToken
wxOAuth2AccessToken
=
sweetWechatService
.
wxOauth2AccessToken
(
code
,
type
);
return
ResponseDto
.
success
(
wxOAuth2AccessToken
.
getOpenId
());
}
catch
(
Exception
e
)
{
log
.
error
(
"wxaCode2SessionError"
,
e
);
log
.
error
(
"wxaCode2SessionError
Exception:{}
"
,
e
);
return
ResponseDto
.
failure
();
}
}
public
ResponseDto
<
WechatTokenInfoVo
>
mpWxOauth2AccessTokenInfo
(
String
code
,
Integer
type
)
{
try
{
WxOAuth2AccessToken
wxOAuth2AccessToken
=
sweetWechatService
.
wxOauth2AccessToken
(
code
,
type
);
WechatTokenInfoVo
userInfoVo
=
WechatTokenInfoVo
.
getNew
().
copy
(
wxOAuth2AccessToken
);
return
ResponseDto
.
success
(
userInfoVo
);
}
catch
(
Exception
e
)
{
log
.
error
(
"wxaCode2SessionError Exception:{}"
,
e
);
return
ResponseDto
.
failure
();
}
}
public
ResponseDto
<
WechatUserInfoVo
>
mpUserInfo
(
String
code
,
Integer
type
)
{
try
{
WxOAuth2UserInfo
wxOAuth2UserInfo
=
sweetWechatService
.
mpUserInfo
(
code
,
type
);
WechatUserInfoVo
tokenInfoVo
=
WechatUserInfoVo
.
getNew
().
copy
(
wxOAuth2UserInfo
);
return
ResponseDto
.
success
(
tokenInfoVo
);
}
catch
(
Exception
e
)
{
log
.
error
(
"wxaCode2SessionError Exception:{}"
,
e
);
return
ResponseDto
.
failure
();
}
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetWechatService.java
View file @
e15bafc6
...
...
@@ -7,6 +7,7 @@ import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import
com.liquidnet.service.sweet.config.WechatMaConfigure
;
import
com.liquidnet.service.sweet.config.WechatMpConfigure
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.bean.WxOAuth2UserInfo
;
import
me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
me.chanjar.weixin.mp.api.WxMpService
;
...
...
@@ -22,6 +23,9 @@ public class SweetWechatService {
@Autowired
WechatMpConfigure
wechatMpConfigure
;
/**
* 小程序--------------
*/
public
WxMaJscode2SessionResult
sessionInfo
(
String
code
,
Integer
anum
)
throws
WxErrorException
{
WxMaService
wxMaService
=
wechatMaConfigure
.
getWxMaService
(
anum
);
log
.
info
(
"isAccessTokenExpired:[{}] "
,
wxMaService
.
getWxMaConfig
().
isAccessTokenExpired
());
...
...
@@ -39,12 +43,19 @@ public class SweetWechatService {
return
wxMaService
.
getUserService
().
getPhoneNoInfo
(
sessionKey
,
encryptedData
,
iv
);
}
/**
* 服务号--------------
*/
public
WxOAuth2AccessToken
wxOauth2AccessToken
(
String
code
,
Integer
type
)
throws
WxErrorException
{
WxMpService
wxMpService
=
wechatMpConfigure
.
getWxMpService
(
type
);
log
.
info
(
"isAccessTokenExpired:[{}] "
,
wxMpService
.
getWxMpConfigStorage
().
isAccessTokenExpired
());
log
.
info
(
"getAccessToken:[{}] "
,
wxMpService
.
getWxMpConfigStorage
().
getAccessToken
());
return
wxMpService
.
getOAuth2Service
().
getAccessToken
(
code
);
}
public
WxOAuth2UserInfo
mpUserInfo
(
String
code
,
Integer
type
)
throws
WxErrorException
{
WxMpService
wxMpService
=
wechatMpConfigure
.
getWxMpService
(
type
);
WxOAuth2AccessToken
wxOAuth2AccessToken
=
wxMpService
.
getOAuth2Service
().
getAccessToken
(
code
);
return
wxMpService
.
getOAuth2Service
().
getUserInfo
(
wxOAuth2AccessToken
,
"zh_CN"
);
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetWechatTemplateServiceImpl.java
View file @
e15bafc6
...
...
@@ -157,30 +157,36 @@ public class SweetWechatTemplateServiceImpl {
return
ResponseDto
.
success
();
}
public
void
subscribeSend
(
SweetWechatUser
sweetWechatUser
)
{
String
templateId
=
"y-j82V1TYhlTH1j8QscuDPcPQtNiDtENb7N5IZMBvqU"
;
try
{
String
nowTime
=
DateUtil
.
getNowTime
();
if
(
DateUtil
.
compareStrDay
(
nowTime
,
"2021-08-14 10:00:00"
)
==
1
)
{
WxMpTemplateMessage
templateMessage
=
getTemplateMessage
(
templateId
,
sweetWechatUser
.
getOpenId
(),
appletAppid
,
"pages/webview?query=lottery"
);
// 添加模板数据
templateMessage
.
addData
(
new
WxMpTemplateData
(
"first"
,
"感谢关注「正在现场」服务号。我们是草莓音乐节演出官方票务平台。"
))
.
addData
(
new
WxMpTemplateData
(
"keyword1"
,
"您已成功关注「正在现场」服务号"
))
.
addData
(
new
WxMpTemplateData
(
"keyword2"
,
"4006-310-750"
))
.
addData
(
new
WxMpTemplateData
(
"remark"
,
"点击下方小程序,再次参与「草莓星球来的人」周边抽奖"
));
String
msgId
=
sendTmpMsg
(
templateMessage
);
}
else
{
WxMpTemplateMessage
templateMessage
=
getTemplateMessage
(
templateId
,
sweetWechatUser
.
getOpenId
(),
""
);
// 添加模板数据
templateMessage
.
addData
(
new
WxMpTemplateData
(
"first"
,
"感谢关注「正在现场」服务号。我们是草莓音乐节演出官方票务平台。"
))
.
addData
(
new
WxMpTemplateData
(
"keyword1"
,
"您已成功关注「正在现场」服务号"
))
.
addData
(
new
WxMpTemplateData
(
"keyword2"
,
"4006-310-750"
))
.
addData
(
new
WxMpTemplateData
(
"remark"
,
"随时查阅订单信息,第一时间获取演出开售提醒,更天天有福利,周周有惊喜!"
));
String
msgId
=
sendTmpMsg
(
templateMessage
);
}
public
void
subscribeSend
(
WxMpService
wxMpService
,
SweetWechatUser
sweetWechatUser
)
{
String
zhengzaiAppId
=
wechatMpConfigure
.
getWxMpService
(
1
).
getWxMpConfigStorage
().
getAppId
();
String
otherAppId
=
wxMpService
.
getWxMpConfigStorage
().
getAppId
();
if
(
zhengzaiAppId
.
equals
(
otherAppId
))
{
String
templateId
=
"y-j82V1TYhlTH1j8QscuDPcPQtNiDtENb7N5IZMBvqU"
;
try
{
String
nowTime
=
DateUtil
.
getNowTime
();
if
(
DateUtil
.
compareStrDay
(
nowTime
,
"2021-08-14 10:00:00"
)
==
1
)
{
WxMpTemplateMessage
templateMessage
=
getTemplateMessage
(
templateId
,
sweetWechatUser
.
getOpenId
(),
appletAppid
,
"pages/webview?query=lottery"
);
// 添加模板数据
templateMessage
.
addData
(
new
WxMpTemplateData
(
"first"
,
"感谢关注「正在现场」服务号。我们是草莓音乐节演出官方票务平台。"
))
.
addData
(
new
WxMpTemplateData
(
"keyword1"
,
"您已成功关注「正在现场」服务号"
))
.
addData
(
new
WxMpTemplateData
(
"keyword2"
,
"4006-310-750"
))
.
addData
(
new
WxMpTemplateData
(
"remark"
,
"点击下方小程序,再次参与「草莓星球来的人」周边抽奖"
));
String
msgId
=
sendTmpMsg
(
templateMessage
);
}
else
{
WxMpTemplateMessage
templateMessage
=
getTemplateMessage
(
templateId
,
sweetWechatUser
.
getOpenId
(),
""
);
// 添加模板数据
templateMessage
.
addData
(
new
WxMpTemplateData
(
"first"
,
"感谢关注「正在现场」服务号。我们是草莓音乐节演出官方票务平台。"
))
.
addData
(
new
WxMpTemplateData
(
"keyword1"
,
"您已成功关注「正在现场」服务号"
))
.
addData
(
new
WxMpTemplateData
(
"keyword2"
,
"4006-310-750"
))
.
addData
(
new
WxMpTemplateData
(
"remark"
,
"随时查阅订单信息,第一时间获取演出开售提醒,更天天有福利,周周有惊喜!"
));
String
msgId
=
sendTmpMsg
(
templateMessage
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"关注模版消息处理异常"
,
e
);
}
catch
(
Exception
e
)
{
log
.
error
(
"关注模版消息处理异常"
,
e
);
}
}
else
{
log
.
info
(
"不是正在, 不发模版消息"
);
}
}
...
...
@@ -253,8 +259,13 @@ public class SweetWechatTemplateServiceImpl {
}
}
public
boolean
followStatus
(
String
unionId
)
{
SweetWechatUser
sweetWechatUser
=
redisDataUtils
.
getSweetWechatUser
(
unionId
);
public
boolean
followStatus
(
String
unionId
,
Integer
type
)
{
SweetWechatUser
sweetWechatUser
=
null
;
if
(
null
==
type
||
type
<=
1
)
{
sweetWechatUser
=
redisDataUtils
.
getSweetWechatUser
(
unionId
);
}
else
if
(
type
==
2
)
{
sweetWechatUser
=
redisDataUtils
.
getSweetWechatUserModernsky
(
unionId
);
}
if
(
null
!=
sweetWechatUser
&&
!
sweetWechatUser
.
getUnionId
().
isEmpty
())
{
return
true
;
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/syncRedis/
JxlData
Impl.java
→
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/syncRedis/
RedisDataService
Impl.java
View file @
e15bafc6
...
...
@@ -26,7 +26,7 @@ import java.util.Set;
@Service
@Slf4j
public
class
JxlData
Impl
{
public
class
RedisDataService
Impl
{
@Autowired
private
RedisUtil
redisUtil
;
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/
SweetWechatMpService
.java
→
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/
syncRedis/UserDataServiceImpl
.java
View file @
e15bafc6
package
com
.
liquidnet
.
service
.
sweet
.
service
.
impl
;
package
com
.
liquidnet
.
service
.
sweet
.
service
.
impl
.
syncRedis
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
...
...
@@ -22,7 +22,7 @@ import java.util.List;
@Slf4j
@Service
public
class
SweetWechatMpService
{
public
class
UserDataServiceImpl
{
@Autowired
WechatMpConfigure
wechatMpConfigure
;
...
...
@@ -31,8 +31,8 @@ public class SweetWechatMpService {
@Autowired
private
QueueUtils
queueUtils
;
public
void
userInfo
()
throws
WxErrorException
{
WxMpService
wxMpService
=
wechatMpConfigure
.
getWxMpService
(
1
);
public
void
userInfo
(
Integer
type
)
throws
WxErrorException
{
WxMpService
wxMpService
=
wechatMpConfigure
.
getWxMpService
(
type
);
String
nextOpenid
=
""
;
do
{
...
...
@@ -53,36 +53,70 @@ public class SweetWechatMpService {
log
.
info
(
"getSubscribeFalse:openId:[{}]"
,
openId
);
continue
;
}
SweetWechatUser
userInfo
=
redisDataUtils
.
getSweetWechatUser
(
wxMpUser
.
getUnionId
());
if
(
null
==
userInfo
)
{
SweetWechatUser
sweetWechatUser
=
SweetWechatUser
.
getNew
();
sweetWechatUser
.
setOpenId
(
wxMpUser
.
getOpenId
());
sweetWechatUser
.
setUnionId
(
wxMpUser
.
getUnionId
());
sweetWechatUser
.
setNickname
(
wxMpUser
.
getNickname
());
sweetWechatUser
.
setSexDesc
(
wxMpUser
.
getSexDesc
());
sweetWechatUser
.
setSex
(
wxMpUser
.
getSex
());
sweetWechatUser
.
setHeadImgUrl
(
wxMpUser
.
getHeadImgUrl
());
sweetWechatUser
.
setLanguage
(
wxMpUser
.
getLanguage
());
sweetWechatUser
.
setCountry
(
wxMpUser
.
getCountry
());
sweetWechatUser
.
setProvince
(
wxMpUser
.
getProvince
());
sweetWechatUser
.
setCity
(
wxMpUser
.
getCity
());
sweetWechatUser
.
setSubscribeTime
(
DateUtil
.
ofEpochMilli
(
wxMpUser
.
getSubscribeTime
()));
sweetWechatUser
.
setSubscribeScene
(
wxMpUser
.
getSubscribeScene
());
sweetWechatUser
.
setUserId
(
IDGenerator
.
nextSnowId
());
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_user.insert"
));
sqlsDataA
.
add
(
new
Object
[]{
sweetWechatUser
.
getUserId
(),
sweetWechatUser
.
getOpenId
(),
sweetWechatUser
.
getUnionId
(),
sweetWechatUser
.
getNickname
(),
sweetWechatUser
.
getSexDesc
(),
sweetWechatUser
.
getSex
(),
sweetWechatUser
.
getHeadImgUrl
(),
sweetWechatUser
.
getLanguage
(),
sweetWechatUser
.
getCountry
(),
sweetWechatUser
.
getProvince
(),
sweetWechatUser
.
getCity
(),
sweetWechatUser
.
getSubscribeTime
(),
sweetWechatUser
.
getSubscribeScene
()
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
// 入缓存
redisDataUtils
.
setSweetWechatUser
(
sweetWechatUser
);
if
(
type
==
1
)
{
SweetWechatUser
userInfo
=
redisDataUtils
.
getSweetWechatUser
(
wxMpUser
.
getUnionId
());
if
(
null
==
userInfo
)
{
SweetWechatUser
sweetWechatUser
=
SweetWechatUser
.
getNew
();
sweetWechatUser
.
setOpenId
(
wxMpUser
.
getOpenId
());
sweetWechatUser
.
setUnionId
(
wxMpUser
.
getUnionId
());
sweetWechatUser
.
setNickname
(
wxMpUser
.
getNickname
());
sweetWechatUser
.
setSexDesc
(
wxMpUser
.
getSexDesc
());
sweetWechatUser
.
setSex
(
wxMpUser
.
getSex
());
sweetWechatUser
.
setHeadImgUrl
(
wxMpUser
.
getHeadImgUrl
());
sweetWechatUser
.
setLanguage
(
wxMpUser
.
getLanguage
());
sweetWechatUser
.
setCountry
(
wxMpUser
.
getCountry
());
sweetWechatUser
.
setProvince
(
wxMpUser
.
getProvince
());
sweetWechatUser
.
setCity
(
wxMpUser
.
getCity
());
sweetWechatUser
.
setSubscribeTime
(
DateUtil
.
ofEpochMilli
(
wxMpUser
.
getSubscribeTime
()));
sweetWechatUser
.
setSubscribeScene
(
wxMpUser
.
getSubscribeScene
());
sweetWechatUser
.
setUserId
(
IDGenerator
.
nextSnowId
());
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_user.insert"
));
sqlsDataA
.
add
(
new
Object
[]{
sweetWechatUser
.
getUserId
(),
1
,
sweetWechatUser
.
getOpenId
(),
sweetWechatUser
.
getUnionId
(),
sweetWechatUser
.
getNickname
(),
sweetWechatUser
.
getSexDesc
(),
sweetWechatUser
.
getSex
(),
sweetWechatUser
.
getHeadImgUrl
(),
sweetWechatUser
.
getLanguage
(),
sweetWechatUser
.
getCountry
(),
sweetWechatUser
.
getProvince
(),
sweetWechatUser
.
getCity
(),
sweetWechatUser
.
getSubscribeTime
(),
sweetWechatUser
.
getSubscribeScene
()
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
// 入缓存
redisDataUtils
.
setSweetWechatUser
(
sweetWechatUser
);
}
}
else
if
(
type
==
2
)
{
SweetWechatUser
userInfo
=
redisDataUtils
.
getSweetWechatUserModernsky
(
wxMpUser
.
getUnionId
());
if
(
null
==
userInfo
)
{
SweetWechatUser
sweetWechatUser
=
SweetWechatUser
.
getNew
();
sweetWechatUser
.
setOpenId
(
wxMpUser
.
getOpenId
());
sweetWechatUser
.
setUnionId
(
wxMpUser
.
getUnionId
());
sweetWechatUser
.
setNickname
(
wxMpUser
.
getNickname
());
sweetWechatUser
.
setSexDesc
(
wxMpUser
.
getSexDesc
());
sweetWechatUser
.
setSex
(
wxMpUser
.
getSex
());
sweetWechatUser
.
setHeadImgUrl
(
wxMpUser
.
getHeadImgUrl
());
sweetWechatUser
.
setLanguage
(
wxMpUser
.
getLanguage
());
sweetWechatUser
.
setCountry
(
wxMpUser
.
getCountry
());
sweetWechatUser
.
setProvince
(
wxMpUser
.
getProvince
());
sweetWechatUser
.
setCity
(
wxMpUser
.
getCity
());
sweetWechatUser
.
setSubscribeTime
(
DateUtil
.
ofEpochMilli
(
wxMpUser
.
getSubscribeTime
()));
sweetWechatUser
.
setSubscribeScene
(
wxMpUser
.
getSubscribeScene
());
sweetWechatUser
.
setUserId
(
IDGenerator
.
nextSnowId
());
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_user.insert"
));
sqlsDataA
.
add
(
new
Object
[]{
sweetWechatUser
.
getUserId
(),
2
,
sweetWechatUser
.
getOpenId
(),
sweetWechatUser
.
getUnionId
(),
sweetWechatUser
.
getNickname
(),
sweetWechatUser
.
getSexDesc
(),
sweetWechatUser
.
getSex
(),
sweetWechatUser
.
getHeadImgUrl
(),
sweetWechatUser
.
getLanguage
(),
sweetWechatUser
.
getCountry
(),
sweetWechatUser
.
getProvince
(),
sweetWechatUser
.
getCity
(),
sweetWechatUser
.
getSubscribeTime
(),
sweetWechatUser
.
getSubscribeScene
()
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
// 入缓存
redisDataUtils
.
setSweetWechatUserModernsky
(
sweetWechatUser
);
}
}
}
catch
(
Exception
e
)
{
log
.
info
(
"forException:openId:[{}]"
,
openId
);
}
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/utils/RedisDataUtils.java
View file @
e15bafc6
...
...
@@ -544,4 +544,51 @@ public class RedisDataUtils {
return
(
String
)
obj
;
}
}
// wechat user 摩登
public
void
setSweetWechatUserModernsky
(
SweetWechatUser
sweetWechatUser
)
{
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_WECHAT_USER_INFO_MODERNSKY
.
concat
(
sweetWechatUser
.
getUnionId
());
String
redisKeyUnid
=
SweetConstant
.
REDIS_KEY_SWEET_WECHAT_USER_UNIONID_MODERNSKY
.
concat
(
sweetWechatUser
.
getOpenId
());
redisUtil
.
set
(
redisKey
,
sweetWechatUser
);
redisUtil
.
set
(
redisKeyUnid
,
sweetWechatUser
.
getUnionId
());
}
public
String
getSweetWechatUserUnionidModernsky
(
String
openid
)
{
if
(
openid
.
isEmpty
())
{
return
null
;
}
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_WECHAT_USER_UNIONID_MODERNSKY
.
concat
(
openid
);
return
(
String
)
redisUtil
.
get
(
redisKey
);
}
public
SweetWechatUser
getSweetWechatUserModernsky
(
String
unionid
)
{
if
(
unionid
.
isEmpty
())
{
return
null
;
}
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_WECHAT_USER_INFO_MODERNSKY
.
concat
(
unionid
);
return
(
SweetWechatUser
)
redisUtil
.
get
(
redisKey
);
}
public
String
getSweetWechatOpenIdModernsky
(
String
unionid
)
{
if
(
unionid
.
isEmpty
())
{
return
""
;
}
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_WECHAT_USER_INFO_MODERNSKY
.
concat
(
unionid
);
Object
obj
=
redisUtil
.
get
(
redisKey
);
if
(
null
==
obj
)
{
return
""
;
}
else
{
SweetWechatUser
sweetWechatUser
=
(
SweetWechatUser
)
redisUtil
.
get
(
redisKey
);
return
sweetWechatUser
.
getOpenId
();
}
}
public
void
delSweetWechatUserModernsky
(
String
unionid
,
String
openid
)
{
if
(!
unionid
.
isEmpty
())
{
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_WECHAT_USER_INFO_MODERNSKY
.
concat
(
unionid
);
redisUtil
.
del
(
redisKey
);
String
redisKeyUnid
=
SweetConstant
.
REDIS_KEY_SWEET_WECHAT_USER_UNIONID_MODERNSKY
.
concat
(
openid
);
redisUtil
.
del
(
redisKeyUnid
);
}
}
// wechat user 摩登
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/utils/WechatSignUtils.java
View file @
e15bafc6
...
...
@@ -24,7 +24,7 @@ public class WechatSignUtils {
/**
* 验证签名
*
*
验签不区分服务号 token url配置成一样
* @param signature
* @param timestamp
* @param nonce
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/resources/sqlmap.properties
View file @
e15bafc6
...
...
@@ -43,8 +43,8 @@ sweet_luck_draw.insert=INSERT INTO sweet_luck_draw (mobile,union_id,luck_draw_nu
# --------------------------答案--------------------------
sweet_answer.insert
=
INSERT INTO sweet_answer (answer_id,phone,answer_json,img_url) VALUES (?,?,?,?)
# --------------------------关注/取消服务号的用户信息--------------------------
sweet_user.insert
=
INSERT INTO sweet_wechat_user (user_id,
openId,unionId,nickname,sexDesc,sex,headImgUrl,language,country,province,city,subscribeTime,subscribeScene) VALUES (
?,?,?,?,?,?,?,?,?,?,?,?,?)
sweet_user.update
=
UPDATE sweet_wechat_user SET is_cancel = ?, updated_at = ? WHERE unionId = ?
sweet_user.insert
=
INSERT INTO sweet_wechat_user (user_id,
type,openId,unionId,nickname,sexDesc,sex,headImgUrl,language,country,province,city,subscribeTime,subscribeScene) VALUES (?,
?,?,?,?,?,?,?,?,?,?,?,?,?)
sweet_user.update
=
UPDATE sweet_wechat_user SET is_cancel = ?, updated_at = ? WHERE unionId = ?
and type = ?
# --------------------------提醒记录--------------------------
sweet_remind.insert
=
INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) VALUES (?,?,?,?)
# --------------------------小程序登录记录用户解密后信息--------------------------
...
...
@@ -52,4 +52,6 @@ sweet_applet_user.insert=INSERT INTO sweet_applet_user (user_id,openId,unionId,g
# --------------------------用户投票记录--------------------------
sweet_city_vote.insert
=
INSERT INTO sweet_city_vote (vote_id,phone,openId,unionId,city_code,city_name,day_time) VALUES (?,?,?,?,?,?,?)
sweet_city_vote_stat.insert
=
INSERT INTO sweet_city_vote_stat (stat_id,city_code,city_name,vote_num) VALUES (?,?,?,?)
sweet_city_vote_stat.update
=
UPDATE sweet_city_vote_stat SET vote_num = IFNULL(vote_num, 0) + 1, updated_at = ? WHERE city_code = ?
\ No newline at end of file
sweet_city_vote_stat.update
=
UPDATE sweet_city_vote_stat SET vote_num = IFNULL(vote_num, 0) + 1, updated_at = ? WHERE city_code = ?
# --------------------------防疫答题--------------------------
sweet_antigenic_question.insert
=
INSERT INTO sweet_antigenic_question (question_id,type,openId,unionId,nickname,address,phone,urgent_phone,keyword1,keyword11,keyword2,keyword3,keyword4,keyword5,keyword6,keyword7) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment