记得上下班打卡 | 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
b754c644
Commit
b754c644
authored
Oct 09, 2021
by
胡佳晨
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into dev_10-1
parents
22bb0389
853cfdb3
Changes
54
Hide whitespace changes
Inline
Side-by-side
Showing
54 changed files
with
1199 additions
and
365 deletions
+1199
-365
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
CandyCouponCodeAdminController.java
...roller/zhengzai/candy/CandyCouponCodeAdminController.java
+1
-1
performanceData.html
...rces/templates/zhengzai/kylin/report/performanceData.html
+24
-10
AdamMemberOrderAdminServiceImpl.java
...ai/adam/service/impl/AdamMemberOrderAdminServiceImpl.java
+4
-1
MQConst.java
...ain/java/com/liquidnet/service/base/constant/MQConst.java
+1
-0
EasemobUtil.java
.../com/liquidnet/common/third/easemob/util/EasemobUtil.java
+25
-1
application-dev.yml
liquidnet-bus-config/liquidnet-config/application-dev.yml
+5
-2
application-test.yml
liquidnet-bus-config/liquidnet-config/application-test.yml
+5
-2
SweetAntigenicQuestion.java
...iquidnet/service/sweet/entity/SweetAntigenicQuestion.java
+121
-0
SweetAntigenicQuestionMapper.java
...et/service/sweet/mapper/SweetAntigenicQuestionMapper.java
+16
-0
AdamRscController.java
.../liquidnet/service/adam/controller/AdamRscController.java
+1
-1
AdamMemberOrderServiceImpl.java
...service/adam/service/impl/AdamMemberOrderServiceImpl.java
+1
-1
AdamUserInfoServiceImpl.java
...et/service/adam/service/impl/AdamUserInfoServiceImpl.java
+7
-2
CandyCouponServiceImpl.java
...et/service/candy/service/impl/CandyCouponServiceImpl.java
+1
-1
ChimeUserBiz.java
...in/java/com/liquidnet/service/chime/biz/ChimeUserBiz.java
+3
-2
TestDataUtils.java
.../java/com/liquidnet/service/chime/test/TestDataUtils.java
+1
-1
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
bootstrap-dev.yml
...t-service-order-impl/src/main/resources/bootstrap-dev.yml
+1
-1
bootstrap.yml
...idnet-service-order-impl/src/main/resources/bootstrap.yml
+1
-1
WechatMpConfigure.java
.../liquidnet/service/platform/config/WechatMpConfigure.java
+0
-93
WechatShareController.java
...tform/controller/basicServices/WechatShareController.java
+0
-75
PlatformMemberRefundService.java
...atform/service/impl/adam/PlatformMemberRefundService.java
+25
-15
PlatformCandyUserCouponService.java
...rm/service/impl/candy/PlatformCandyUserCouponService.java
+7
-7
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 @
b754c644
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 @
b754c644
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 @
b754c644
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-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/candy/CandyCouponCodeAdminController.java
View file @
b754c644
...
...
@@ -158,7 +158,7 @@ public class CandyCouponCodeAdminController extends BaseController {
List
<
CandyUserCouponBasicDto
>
vos
=
(
List
<
CandyUserCouponBasicDto
>)
redisUtil
.
get
(
uckey
);
if
(!
CollectionUtils
.
isEmpty
(
vos
))
{
CandyUserCouponBasicDto
userCouponBasicDto
=
vos
.
parallelS
tream
().
filter
(
v
->
v
.
getCouponId
().
equals
(
couponId
)).
findAny
().
orElse
(
null
);
CandyUserCouponBasicDto
userCouponBasicDto
=
vos
.
s
tream
().
filter
(
v
->
v
.
getCouponId
().
equals
(
couponId
)).
findAny
().
orElse
(
null
);
if
(
null
!=
userCouponBasicDto
&&
userCouponBasicDto
.
getState
()
==
1
)
{
String
cckey
=
CandyRedisConst
.
BASIC_COUPON_CODE
.
concat
(
r
.
getCcode
());
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/kylin/report/performanceData.html
View file @
b754c644
...
...
@@ -60,9 +60,9 @@
</a>
</div>
</div>
<div
class=
"ibox-content"
>
<div
class=
"ibox-content"
style=
"height:480px"
>
<div
class=
"echarts"
id=
"provinceDataChart"
></div>
<div
class=
"echarts"
id=
"provinceDataChart"
style =
"height:400px"
></div>
</div>
</div>
</div>
...
...
@@ -90,9 +90,9 @@
</a>
</div>
</div>
<div
class=
"ibox-content"
>
<div
class=
"ibox-content"
style=
"height:480px"
>
<div
class=
"echarts"
id=
"cityDataChart"
></div>
<div
class=
"echarts"
id=
"cityDataChart"
style=
"height:400px"
></div>
</div>
</div>
</div>
...
...
@@ -120,9 +120,9 @@
</a>
</div>
</div>
<div
class=
"ibox-content"
>
<div
class=
"ibox-content"
style=
"height:480px"
>
<div
class=
"echarts"
id=
"ageDataChart"
></div>
<div
class=
"echarts"
id=
"ageDataChart"
style=
"height:400px"
></div>
</div>
</div>
</div>
...
...
@@ -281,14 +281,21 @@
grid
:{
x
:
30
,
x2
:
40
,
y2
:
24
y2
:
100
},
calculable
:
true
,
xAxis
:
[
{
type
:
'category'
,
// data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
data
:
name
data
:
name
,
axisLabel
:{
formatter
:
function
(
value
){
return
value
.
split
(
""
).
join
(
"
\n
"
);
}
// interval: 0,
// rotate: 30
}
}
],
yAxis
:
[
...
...
@@ -390,14 +397,21 @@
grid
:{
x
:
30
,
x2
:
40
,
y2
:
24
y2
:
100
},
calculable
:
true
,
xAxis
:
[
{
type
:
'category'
,
// data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
data
:
name
data
:
name
,
axisLabel
:{
formatter
:
function
(
value
){
return
value
.
split
(
""
).
join
(
"
\n
"
);
}
// interval: 0,
// rotate: 30
}
}
],
yAxis
:
[
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/adam/service/impl/AdamMemberOrderAdminServiceImpl.java
View file @
b754c644
...
...
@@ -171,6 +171,7 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
updateInfoMemberOrder
.
setMid
(
memberOrder
.
getMid
());
updateInfoMemberOrder
.
setState
(
4
);
updateInfoMemberOrder
.
setUpdatedAt
(
now
);
updateInfoMemberOrder
.
setComment
(
"R"
);
adamMemberOrderMapper
.
updateById
(
updateInfoMemberOrder
);
String
moKey
=
AdamRedisConst
.
INFO_MEMBER_ORDER
+
memberOrder
.
getUid
();
...
...
@@ -184,9 +185,10 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
vos
.
set
(
idx
,
vo
);
redisUtil
.
set
(
moKey
,
vos
);
if
(
memberRefund
.
getRenewable
()
==
2
)
{
if
(
memberRefund
.
getRenewable
()
==
2
)
{
// 拉黑用户,直接更新用户会员状态信息
AdamUserMember
updateUserMember
=
new
AdamUserMember
();
updateUserMember
.
setState
(
2
);
updateUserMember
.
setExpiryAt
(
now
);
updateUserMember
.
setUpdatedAt
(
now
);
updateUserMember
.
setComment
(
"R"
);
...
...
@@ -198,6 +200,7 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
AdamUserMemberVo
userMemberVo
=
(
AdamUserMemberVo
)
redisUtil
.
get
(
umkey
);
userMemberVo
.
setState
(
2
);
userMemberVo
.
setExpiryAt
(
now
);
userMemberVo
.
setUpdatedAt
(
now
);
redisUtil
.
set
(
umkey
,
userMemberVo
);
...
...
liquidnet-bus-common/liquidnet-common-service-base/src/main/java/com/liquidnet/service/base/constant/MQConst.java
View file @
b754c644
...
...
@@ -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-common/liquidnet-common-third/liquidnet-common-third-easemob/src/main/java/com/liquidnet/common/third/easemob/util/EasemobUtil.java
View file @
b754c644
...
...
@@ -18,6 +18,8 @@ import org.springframework.util.LinkedMultiValueMap;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.web.client.HttpClientErrorException
;
import
java.nio.charset.StandardCharsets
;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
...
...
@@ -36,6 +38,9 @@ public class EasemobUtil{
@Autowired
private
RedisUtil
redisUtil
;
private
static
MultiValueMap
<
String
,
String
>
commonHeader
=
new
LinkedMultiValueMap
();
private
static
MultiValueMap
<
String
,
String
>
commonParams
=
new
LinkedMultiValueMap
();
private
String
getAccessToken
(){
//构造请求参数
...
...
@@ -76,7 +81,8 @@ public class EasemobUtil{
}
public
String
createUser
(
String
userName
,
String
password
,
String
nickName
){
MultiValueMap
<
String
,
String
>
commonHeader
=
new
LinkedMultiValueMap
();
// MultiValueMap<String, String> commonHeader = new LinkedMultiValueMap();
commonHeader
.
clear
();
commonHeader
.
add
(
"Authorization"
,
"Bearer "
+
this
.
getAccessToken
());
JSONObject
json
=
new
JSONObject
();
...
...
@@ -114,4 +120,22 @@ public class EasemobUtil{
//result
// {application=c785eced-c603-41c3-afe8-13ee3378540c, access_token=YWMt_rE7Rg8DEeyy6gf--JvBcwAAAAAAAAAAAAAAAAAAAAHHheztxgNBw6_oE-4zeFQMAgMAAAF7utOj1gBPGgANws4VZcHltyc-SPep4q09E0mqitzKe5IA6Npu-MqLBg, expires_in=5184000}
}
public
void
settingNoticeNickname
(
String
nickname
,
String
username
)
{
try
{
commonHeader
.
clear
();
commonHeader
.
add
(
"Authorization"
,
"Bearer "
+
this
.
getAccessToken
());
commonParams
.
clear
();
commonParams
.
add
(
"nickname"
,
nickname
);
String
url
=
easemobConfig
.
getPreUrl
().
concat
(
EasemobConstant
.
CREATE_USER_URL
).
concat
(
"/"
).
concat
(
username
);
String
response
=
HttpUtil
.
put
(
url
,
commonParams
,
commonHeader
);
log
.
info
(
"IM setting notice.nickname:[url={},nickname={},response={}]"
,
url
,
nickname
,
response
);
}
catch
(
HttpClientErrorException
e
)
{
String
responseBodyAsString
=
e
.
getResponseBodyAsString
(
StandardCharsets
.
UTF_8
);
log
.
error
(
"IM setting notice.nickname error:[request.status=400,msg={}]"
,
responseBodyAsString
);
}
catch
(
Exception
e
)
{
log
.
error
(
"IM setting notice.nickname exception"
,
e
);
}
}
}
liquidnet-bus-config/liquidnet-config/application-dev.yml
View file @
b754c644
...
...
@@ -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
...
...
@@ -155,7 +158,7 @@ liquidnet:
jProvince
:
北京
jCity
:
北京市
jAddress
:
朝阳区广渠路1号北京市商业储运公司3-12号 摩登天空
expressType
:
1
# 默认顺丰特快
expressType
:
2
# 默认顺丰特快
depositumInfo
:
演出纸质票
...
...
liquidnet-bus-config/liquidnet-config/application-test.yml
View file @
b754c644
...
...
@@ -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
...
...
@@ -157,7 +160,7 @@ liquidnet:
jProvince
:
北京
jCity
:
北京市
jAddress
:
朝阳区广渠路1号北京市商业储运公司3-12号 摩登天空
expressType
:
1
# 默认顺丰特快
expressType
:
2
# 默认顺丰特快
depositumInfo
:
演出纸质票
...
...
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/java/com/liquidnet/service/sweet/entity/SweetAntigenicQuestion.java
0 → 100644
View file @
b754c644
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 @
b754c644
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-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/controller/AdamRscController.java
View file @
b754c644
...
...
@@ -103,7 +103,7 @@ public class AdamRscController {
}
try
{
List
<
String
>
uidList
=
req
.
getUidList
();
uidList
.
parallelStream
().
forEach
(
r
->
{
uidList
.
forEach
(
r
->
{
AdamUserInfoVo
userInfoVo
=
adamRdmService
.
getUserInfoVoByUid
(
r
);
if
(
null
!=
userInfoVo
)
{
list
.
add
(
AdamChimeUinfoDto
.
getNew
().
copy
(
userInfoVo
));
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/AdamMemberOrderServiceImpl.java
View file @
b754c644
...
...
@@ -612,7 +612,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
if
(!
CollectionUtils
.
isEmpty
(
memberRightsCouponVoList
))
{
// 该权益下关联券统计
Map
<
String
,
Long
>
rightsCouponCtMap
=
memberRightsCouponVoList
.
parallelS
tream
()
Map
<
String
,
Long
>
rightsCouponCtMap
=
memberRightsCouponVoList
.
s
tream
()
.
collect
(
Collectors
.
groupingBy
(
AdamMemberRightsCouponVo:
:
getCouponId
,
Collectors
.
counting
()));
rightsCouponCtMap
.
forEach
((
couponId
,
num
)
->
{
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/AdamUserInfoServiceImpl.java
View file @
b754c644
...
...
@@ -18,6 +18,7 @@ import com.liquidnet.service.base.SqlMapping;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.feign.adam.rsc.FeignAdamChimeClient
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
...
...
@@ -92,8 +93,6 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
syncChimeRegisterFlg
=
true
;
}
}
else
if
(
isComplete
==
11
)
{
// 同步IM信息
// TODO: 2021/9/17 暂未接入
}
syncChimeFlg
=
true
;
...
...
@@ -101,6 +100,12 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
tagMe
=
existUserInfoVo
.
getTagMe
();
}
String
beforeNickname
=
existUserInfoVo
.
getNickname
();
if
(
StringUtils
.
isEmpty
(
beforeNickname
)
||
!
beforeNickname
.
equals
(
parameter
.
getNickname
()))
{
// IM设置推送昵称
easemobUtil
.
settingNoticeNickname
(
parameter
.
getNickname
(),
existUserInfoVo
.
getUid
());
}
existUserInfoVo
.
setAvatar
(
parameter
.
getAvatar
());
existUserInfoVo
.
setBackground
(
parameter
.
getBackground
());
existUserInfoVo
.
setNickname
(
parameter
.
getNickname
());
...
...
liquidnet-bus-service/liquidnet-service-candy/liquidnet-service-candy-impl/src/main/java/com/liquidnet/service/candy/service/impl/CandyCouponServiceImpl.java
View file @
b754c644
...
...
@@ -95,7 +95,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
}
List
<
CandyUserCouponBasicDto
>
dtoList
=
redisDataUtils
.
getCouponByUid
(
uid
,
userCreateTime
);
if
(!
CollectionUtil
.
isEmpty
(
dtoList
))
{
Map
<
String
,
Long
>
mCouponCountMap
=
dtoList
.
parallelS
tream
()
Map
<
String
,
Long
>
mCouponCountMap
=
dtoList
.
s
tream
()
.
filter
(
r
->
(
r
.
getExclusive
()
==
1
&&
r
.
getState
()
==
1
))
.
collect
(
Collectors
.
groupingBy
(
CandyUserCouponBasicDto:
:
getMcouponId
,
Collectors
.
counting
()));
...
...
liquidnet-bus-service/liquidnet-service-chime/liquidnet-service-chime-impl/src/main/java/com/liquidnet/service/chime/biz/ChimeUserBiz.java
View file @
b754c644
...
...
@@ -82,7 +82,7 @@ public class ChimeUserBiz {
}
List
<
ChimeUserTagsMappingVo
>
userTagList
=
new
ArrayList
<>();
//设置用户id
userTagVoList
.
parallelStream
().
forEach
(
vo
->
{
userTagVoList
.
forEach
(
vo
->
{
ChimeUserTagsMappingVo
userTagsMappingVo
=
ChimeUserTagsMappingVo
.
getNew
();
userTagsMappingVo
.
setTagCode
(
vo
.
getVal
());
userTagsMappingVo
.
setTagDesc
(
vo
.
getDesc
());
...
...
@@ -111,7 +111,7 @@ public class ChimeUserBiz {
// }
// }
// //设置用户id
// userTagVoList.
parallelStream().
forEach(vo -> {
// userTagVoList.forEach(vo -> {
// ChimeUserTagDto userTagDto = ChimeUserTagDto.getNew();
// userTagDto.setTagCode(vo.getVal());
// userTagDto.setTagDesc(vo.getDesc());
...
...
@@ -198,6 +198,7 @@ public class ChimeUserBiz {
KylinPerformanceVo
kylinPerformanceVo
=
responseDto
.
getData
();
if
(
kylinPerformanceVo
.
getAppStatus
()
==
KylinPerformanceStatusEnum
.
PERFORMANCESTATUS6
.
getIndex
()
||
kylinPerformanceVo
.
getAppStatus
()
==
KylinPerformanceStatusEnum
.
PERFORMANCESTATUS8
.
getIndex
()
||
kylinPerformanceVo
.
getAppStatus
()
==
KylinPerformanceStatusEnum
.
PERFORMANCESTATUS11
.
getIndex
()
||
kylinPerformanceVo
.
getAppStatus
()
==
KylinPerformanceStatusEnum
.
PERFORMANCESTATUS9
.
getIndex
()){
isOnline
=
true
;
}
...
...
liquidnet-bus-service/liquidnet-service-chime/liquidnet-service-chime-impl/src/test/java/com/liquidnet/service/chime/test/TestDataUtils.java
View file @
b754c644
...
...
@@ -242,7 +242,7 @@ public class TestDataUtils {
// reqDto.setTags("tags40,tags80");
NewPageResult
<
ChimeUserInfoDto
>
pageInfo
=
chimePerformanceService
.
getUserListByCon
(
reqDto
);
log
.
info
(
"总共获取总数pagecount:{}"
,
pageInfo
.
getList
().
size
());
pageInfo
.
getList
().
parallelStream
().
forEach
(
dto
->
{
pageInfo
.
getList
().
forEach
(
dto
->
{
// System.out.println(dto.getUserId());
// System.out.println(JsonUtils.toJson(dto.getUserTags()));
});
...
...
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 @
b754c644
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 @
b754c644
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 @
b754c644
...
...
@@ -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-order/liquidnet-service-order-impl/src/main/resources/bootstrap-dev.yml
View file @
b754c644
...
...
@@ -11,4 +11,4 @@ liquidnet:
spring
:
profiles
:
include
:
service-order
include
:
service-order
\ No newline at end of file
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/resources/bootstrap.yml
View file @
b754c644
...
...
@@ -6,6 +6,6 @@ spring:
server
:
tomcat
:
max-threads
:
2000
min-spare-threads
:
200
min-spare-threads
:
200
0
max-connections
:
20000
connection-timeout
:
5000
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 @
22bb0389
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 @
22bb0389
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-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/service/impl/adam/PlatformMemberRefundService.java
View file @
b754c644
...
...
@@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
javax.servlet.http.HttpServletRequest
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.stream.IntStream
;
...
...
@@ -96,31 +97,40 @@ public class PlatformMemberRefundService extends ServiceImpl<AdamMemberRefundMap
vo
.
setUpdatedAt
(
now
);
vos
.
set
(
idx
,
vo
);
boolean
syncVo
=
redisUtil
.
set
(
moKey
,
vos
);
log
.
warn
(
"###会员退款回调处理成功:更新REDIS会员订单状态
{}[orderNo:{},uid:{}]"
,
syncVo
?
"成功"
:
"失败"
,
orderNo
,
memberOrder
.
getUid
());
log
.
info
(
"###会员退款回调处理成功:更新REDIS会员订单信息
{}[orderNo:{},uid:{}]"
,
syncVo
?
"成功"
:
"失败"
,
orderNo
,
memberOrder
.
getUid
());
String
umKey
=
AdamRedisConst
.
INFO_USER_MEMBER
.
concat
(
memberOrder
.
getUid
());
AdamUserMemberVo
userMemberVo
=
(
AdamUserMemberVo
)
redisUtil
.
get
(
umKey
);
newExpiryAt
=
userMemberVo
.
getExpiryAt
().
minusDays
(
memberOrder
.
getDays
());
userMemberVo
.
setExpiryAt
(
newExpiryAt
);
userMemberVo
.
setUpdatedAt
(
now
);
if
(
userMemberVo
.
getState
()
==
1
)
{
// 非拉黑用户,则更新到期时间为减去订单标记的会员有效期的日期
newExpiryAt
=
userMemberVo
.
getExpiryAt
().
minusDays
(
memberOrder
.
getDays
());
syncVo
=
redisUtil
.
set
(
umKey
,
userMemberVo
);
log
.
warn
(
"###会员退款回调处理成功:更新REDIS会员状态{}[orderNo:{},uid:{}]"
,
syncVo
?
"成功"
:
"失败"
,
orderNo
,
memberOrder
.
getUid
());
}
LocalDate
nowDate
=
now
.
toLocalDate
();
LocalDate
newExpiryDate
=
newExpiryAt
.
toLocalDate
();
if
(
newExpiryDate
.
isEqual
(
nowDate
))
{
// 新的过期时间如果和当前时间为同一天,则重置到期时间为当天00:00:00
newExpiryAt
=
now
.
withHour
(
0
).
withMinute
(
0
).
withSecond
(
0
);
}
userMemberVo
.
setExpiryAt
(
newExpiryAt
);
userMemberVo
.
setUpdatedAt
(
now
);
AdamUserMember
updateInfoUserMember
=
new
AdamUserMember
();
updateInfoUserMember
.
setExpiryAt
(
newExpiryAt
);
updateInfoUserMember
.
setUpdatedAt
(
now
);
updateInfoUserMember
.
setComment
(
"R"
);
int
updateRst
=
adamUserMemberMapper
.
update
(
updateInfoUserMember
,
Wrappers
.
lambdaUpdate
(
AdamUserMember
.
class
).
eq
(
AdamUserMember:
:
getUid
,
memberOrder
.
getUid
()));
log
.
warn
(
"###会员退款回调处理成功:更新用户会员状态{}[orderNo:{},uid:{}]"
,
updateRst
<=
0
?
"失败"
:
"成功"
,
orderNo
,
memberOrder
.
getUid
());
syncVo
=
redisUtil
.
set
(
umKey
,
userMemberVo
);
log
.
info
(
"###会员退款回调处理成功:更新REDIS会员信息{}[orderNo:{},uid:{}]"
,
syncVo
?
"成功"
:
"失败"
,
orderNo
,
memberOrder
.
getUid
());
AdamUserMember
updateInfoUserMember
=
new
AdamUserMember
();
updateInfoUserMember
.
setExpiryAt
(
newExpiryAt
);
updateInfoUserMember
.
setUpdatedAt
(
now
);
updateInfoUserMember
.
setComment
(
"R"
);
int
updateRst
=
adamUserMemberMapper
.
update
(
updateInfoUserMember
,
Wrappers
.
lambdaUpdate
(
AdamUserMember
.
class
).
eq
(
AdamUserMember:
:
getUid
,
memberOrder
.
getUid
()));
log
.
info
(
"###会员退款回调处理成功:更新DB会员信息{}[orderNo:{},uid:{}]"
,
updateRst
<=
0
?
"失败"
:
"成功"
,
orderNo
,
memberOrder
.
getUid
());
}
}
AdamMemberOrder
updateInfoMemberOrder
=
new
AdamMemberOrder
();
updateInfoMemberOrder
.
setMid
(
memberOrder
.
getMid
());
updateInfoMemberOrder
.
setState
(
5
);
updateInfoMemberOrder
.
setUpdatedAt
(
now
);
updateRst
=
adamMemberOrderMapper
.
updateById
(
updateInfoMemberOrder
);
log
.
warn
(
"###会员退款回调处理成功:更新会员订单状态
{}[orderNo:{}]"
,
updateRst
<=
0
?
"失败"
:
"成功"
,
orderNo
);
int
updateRst
=
adamMemberOrderMapper
.
updateById
(
updateInfoMemberOrder
);
log
.
info
(
"###会员退款回调处理成功:更新DB订单信息
{}[orderNo:{}]"
,
updateRst
<=
0
?
"失败"
:
"成功"
,
orderNo
);
}
}
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/service/impl/candy/PlatformCandyUserCouponService.java
View file @
b754c644
...
...
@@ -74,15 +74,15 @@ public class PlatformCandyUserCouponService extends ServiceImpl<CandyUserCouponM
List
<
CandyUserCouponBasicDto
>
basicDtoList
=
candyUserCouponMapper
.
selectMultiForUserCouponBasicDto
(
uid
);
if
(!
CollectionUtils
.
isEmpty
(
basicDtoList
))
{
List
<
String
>
couponIdList
=
basicDtoList
.
parallelS
tream
().
map
(
CandyUserCouponBasicDto:
:
getCouponId
).
collect
(
Collectors
.
toList
());
List
<
String
>
couponIdList
=
basicDtoList
.
s
tream
().
map
(
CandyUserCouponBasicDto:
:
getCouponId
).
collect
(
Collectors
.
toList
());
List
<
CandyCouponRuleDto
>
couponRuleDtoList
=
candyCouponRuleMapper
.
selectListForCouponRuleDto
(
couponIdList
);
Map
<
String
,
List
<
CandyCouponRuleDto
>>
couponRuleDtoListMap
=
couponRuleDtoList
.
parallelS
tream
().
collect
(
Collectors
.
groupingBy
(
CandyCouponRuleDto:
:
getCouponId
));
Map
<
String
,
List
<
CandyCouponRuleDto
>>
couponRuleDtoListMap
=
couponRuleDtoList
.
s
tream
().
collect
(
Collectors
.
groupingBy
(
CandyCouponRuleDto:
:
getCouponId
));
// Map<String, List<CandyUserCouponBasicDto>> basicDtoListMap = basicDtoList.
parallelS
tream().collect(Collectors.groupingBy(CandyUserCouponBasicDto::getCouponId));
// Map<String, List<CandyUserCouponBasicDto>> basicDtoListMap = basicDtoList.
s
tream().collect(Collectors.groupingBy(CandyUserCouponBasicDto::getCouponId));
basicDtoList
.
parallelStream
().
forEach
(
dto
->
{
basicDtoList
.
forEach
(
dto
->
{
dto
.
setUseRules
(
couponRuleDtoListMap
.
get
(
dto
.
getCouponId
()));
});
...
...
@@ -94,13 +94,13 @@ public class PlatformCandyUserCouponService extends ServiceImpl<CandyUserCouponM
public
List
<
CandyCommonCouponBasicDto
>
ccouponBasicDtoByUidProcessing
(
LocalDateTime
ucreatedAt
)
{
List
<
CandyCommonCouponBasicDto
>
basicDtoList
=
candyCommonCouponMapper
.
selectMultiForCommonCouponBasicDto
(
ucreatedAt
);
if
(!
CollectionUtils
.
isEmpty
(
basicDtoList
))
{
List
<
String
>
couponIdList
=
basicDtoList
.
parallelS
tream
().
map
(
CandyCommonCouponBasicDto:
:
getCouponId
).
collect
(
Collectors
.
toList
());
List
<
String
>
couponIdList
=
basicDtoList
.
s
tream
().
map
(
CandyCommonCouponBasicDto:
:
getCouponId
).
collect
(
Collectors
.
toList
());
List
<
CandyCouponRuleDto
>
couponRuleDtoList
=
candyCouponRuleMapper
.
selectListForCouponRuleDto
(
couponIdList
);
Map
<
String
,
List
<
CandyCouponRuleDto
>>
couponRuleDtoListMap
=
couponRuleDtoList
.
parallelS
tream
().
collect
(
Collectors
.
groupingBy
(
CandyCouponRuleDto:
:
getCouponId
));
Map
<
String
,
List
<
CandyCouponRuleDto
>>
couponRuleDtoListMap
=
couponRuleDtoList
.
s
tream
().
collect
(
Collectors
.
groupingBy
(
CandyCouponRuleDto:
:
getCouponId
));
basicDtoList
.
parallelStream
().
forEach
(
dto
->
{
basicDtoList
.
forEach
(
dto
->
{
dto
.
setUseRules
(
couponRuleDtoListMap
.
get
(
dto
.
getCouponId
()));
});
...
...
liquidnet-bus-service/liquidnet-service-sweet/docu/db_sweetsugar_structure.sql
View file @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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 @
b754c644
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 @
b754c644
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 @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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 @
b754c644
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 @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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 @
b754c644
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 @
b754c644
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 @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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 @
b754c644
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 @
b754c644
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 @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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 @
b754c644
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 @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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 @
b754c644
...
...
@@ -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