记得上下班打卡 | 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
d3c7b41d
Commit
d3c7b41d
authored
Aug 10, 2021
by
Administrator
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'test' into 'master'
Test See merge request
!8
parents
6db63fa4
db23a2c8
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
156 additions
and
49 deletions
+156
-49
DateUtil.java
...c/main/java/com/liquidnet/commons/lang/util/DateUtil.java
+10
-0
liquidnet-service-sweet-dev.yml
...s-config/liquidnet-config/liquidnet-service-sweet-dev.yml
+2
-2
SweetManualAppletDto.java
...com/liquidnet/service/sweet/dto/SweetManualAppletDto.java
+6
-0
SweetManualAppletMDSKDto.java
...liquidnet/service/sweet/dto/SweetManualAppletMDSKDto.java
+7
-0
SweetWechatTemplateServiceImpl.java
...ce/sweet/service/impl/SweetWechatTemplateServiceImpl.java
+65
-43
RedisDataUtils.java
...ava/com/liquidnet/service/sweet/utils/RedisDataUtils.java
+3
-0
RedisMDSKDataUtils.java
...com/liquidnet/service/sweet/utils/RedisMDSKDataUtils.java
+3
-0
SweetManualMapper.xml
.../com/liquidnet/service/sweet/mapper/SweetManualMapper.xml
+30
-2
SweetManualMdskMapper.xml
.../liquidnet/service/sweet/mapper/SweetManualMdskMapper.xml
+30
-2
No files found.
liquidnet-bus-common/liquidnet-common-base/src/main/java/com/liquidnet/commons/lang/util/DateUtil.java
View file @
d3c7b41d
...
...
@@ -125,6 +125,16 @@ public abstract class DateUtil {
return
new
Date
(
c
.
getTimeInMillis
());
}
/**
* 计算日期,增加分支
*/
public
static
Date
addMin
(
Date
date
,
int
months
)
{
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
date
);
c
.
set
(
Calendar
.
MINUTE
,
c
.
get
(
Calendar
.
MINUTE
)
+
months
);
return
new
Date
(
c
.
getTimeInMillis
());
}
/**
* 计算日期,增加天数
*
...
...
liquidnet-bus-config/liquidnet-config/liquidnet-service-sweet-dev.yml
View file @
d3c7b41d
...
...
@@ -13,9 +13,9 @@ liquidnet:
file-max-size
:
200MB
level
:
debug
mysql
:
database-name
:
dev
_ln_scene
database-name
:
test
_ln_scene
mongodb
:
sslEnabled
:
false
database
:
dev
_ln_scene
database
:
test
_ln_scene
#以下为spring各环境个性配置
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/dto/SweetManualAppletDto.java
View file @
d3c7b41d
...
...
@@ -26,6 +26,12 @@ public class SweetManualAppletDto implements Serializable ,Cloneable{
private
String
timeStart
;
@ApiModelProperty
(
"演出结束时间"
)
private
String
timeEnd
;
@ApiModelProperty
(
"演出开售时间"
)
private
String
timeSell
;
@ApiModelProperty
(
"是否会员"
)
private
Integer
isMember
;
@ApiModelProperty
(
"提前时间"
)
private
Integer
payCountdownMinute
;
@ApiModelProperty
(
"经度"
)
private
String
longitude
;
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/dto/SweetManualAppletMDSKDto.java
View file @
d3c7b41d
...
...
@@ -25,6 +25,13 @@ public class SweetManualAppletMDSKDto implements Serializable ,Cloneable{
private
String
timeStart
;
@ApiModelProperty
(
"演出结束时间"
)
private
String
timeEnd
;
@ApiModelProperty
(
"演出开售时间"
)
private
String
timeSell
;
@ApiModelProperty
(
"是否会员"
)
private
Integer
isMember
;
@ApiModelProperty
(
"提前时间"
)
private
Integer
payCountdownMinute
;
@ApiModelProperty
(
"经度"
)
private
String
longitude
;
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetWechatTemplateServiceImpl.java
View file @
d3c7b41d
...
...
@@ -10,6 +10,7 @@ import com.liquidnet.service.sweet.constant.SweetConstant;
import
com.liquidnet.service.sweet.entity.SweetWechatUser
;
import
com.liquidnet.service.sweet.utils.RedisDataUtils
;
import
com.liquidnet.service.sweet.vo.SweetRemindVo
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
me.chanjar.weixin.mp.api.impl.WxMpServiceImpl
;
...
...
@@ -24,6 +25,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.util.CollectionUtils
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.Set
;
/**
...
...
@@ -34,6 +36,7 @@ import java.util.Set;
* @author liquidnet
* @since 2021-07-27
*/
@Slf4j
@Service
public
class
SweetWechatTemplateServiceImpl
{
...
...
@@ -56,53 +59,72 @@ public class SweetWechatTemplateServiceImpl {
Set
<
String
>
keys
=
redisTemplate
.
keys
(
redisKey
);
if
(!
CollectionUtils
.
isEmpty
(
keys
))
{
for
(
String
rkey
:
keys
)
{
SweetRemindVo
remindInfo
=
(
SweetRemindVo
)
redisUtil
.
get
(
rkey
);
SweetWechatUser
sweetWechatUser
=
redisDataUtils
.
getSweetWechatUser
(
remindInfo
.
getUnionId
());
KylinPerformanceVo
performanceVo
=
(
KylinPerformanceVo
)
redisUtil
.
get
(
KylinRedisConst
.
PERFORMANCES
.
concat
(
remindInfo
.
getPerformancesId
()));
KylinTicketTimesVo
kylinTicketTimesVo
=
performanceVo
.
getTicketTimeList
().
get
(
0
);
if
(
null
==
sweetWechatUser
||
null
==
performanceVo
)
{
continue
;
}
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
LocalDateTime
newNowTime
=
nowTime
.
minusMinutes
(
5
);
String
nowTimeStr
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
newNowTime
);
String
sellTime
=
performanceVo
.
getSellTime
();
String
stopSellTime
=
performanceVo
.
getStopSellTime
();
if
(
1
==
DateUtil
.
compareStrDay
(
nowTimeStr
,
stopSellTime
))
{
// 超过售卖期 不推 删redis
redisDataUtils
.
delSweetRemind
(
remindInfo
.
getUnionId
());
continue
;
}
if
(-
1
==
DateUtil
.
compareStrDay
(
nowTimeStr
,
sellTime
))
{
// 还没到售卖期
continue
;
}
// 发送模板消息接口
WxMpTemplateMessage
templateMessage
=
WxMpTemplateMessage
.
builder
()
// 接收者openid
.
toUser
(
sweetWechatUser
.
getOpenId
())
// 模板id
.
templateId
(
templateId
)
// 模板跳转链接
.
url
(
h5Url
.
concat
(
"/#/ticket/detail?id="
).
concat
(
remindInfo
.
getPerformancesId
()))
.
build
();
// 添加模板数据
templateMessage
.
addData
(
new
WxMpTemplateData
(
"first"
,
"您关注的演出即将开始售票"
))
.
addData
(
new
WxMpTemplateData
(
"keyword1"
,
performanceVo
.
getTitle
()))
.
addData
(
new
WxMpTemplateData
(
"keyword2"
,
kylinTicketTimesVo
.
getTitle
()))
.
addData
(
new
WxMpTemplateData
(
"keyword3"
,
performanceVo
.
getFieldName
()))
.
addData
(
new
WxMpTemplateData
(
"remark"
,
"点击这里跳转购票"
));
String
msgId
=
null
;
try
{
// 发送模板消息
WxMpConfigStorage
wxMpConfig
=
wxMpConfig
(
appid
,
secret
);
WxMpService
wxMpService
=
wxMpService
(
wxMpConfig
);
msgId
=
wxMpService
.
getTemplateMsgService
().
sendTemplateMsg
(
templateMessage
);
if
(
null
!=
msgId
)
{
SweetRemindVo
remindInfo
=
(
SweetRemindVo
)
redisUtil
.
get
(
rkey
);
SweetWechatUser
sweetWechatUser
=
redisDataUtils
.
getSweetWechatUser
(
remindInfo
.
getUnionId
());
KylinPerformanceVo
performanceVo
=
(
KylinPerformanceVo
)
redisUtil
.
get
(
KylinRedisConst
.
PERFORMANCES
.
concat
(
remindInfo
.
getPerformancesId
()));
if
(
null
==
sweetWechatUser
)
{
log
.
info
(
"无用户数据:[UnionId=[{}]"
,
remindInfo
.
getUnionId
());
continue
;
}
if
(
null
==
performanceVo
)
{
log
.
info
(
"无演出数据:[getPerformancesId=[{}]"
,
remindInfo
.
getPerformancesId
());
continue
;
}
KylinTicketTimesVo
kylinTicketTimesVo
=
performanceVo
.
getTicketTimeList
().
get
(
0
);
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
// LocalDateTime newNowTime = nowTime.minusMinutes(5);
String
nowTimeStr
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
nowTime
);
String
sellTime
=
performanceVo
.
getSellTime
();
LocalDateTime
sellTimeLocal
=
LocalDateTime
.
parse
(
sellTime
,
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
LocalDateTime
sellTimeLocalNew
=
sellTimeLocal
.
minusMinutes
(
5
);
String
sellTimeLocalNewStr
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
sellTimeLocalNew
);
String
stopSellTime
=
performanceVo
.
getStopSellTime
();
if
(
1
==
DateUtil
.
compareStrDay
(
nowTimeStr
,
stopSellTime
))
{
// 超过售卖期 不推 删redis
log
.
info
(
"超过售卖期:[nowTimeStr=[{}], [stopSellTime=[{}]"
,
nowTimeStr
,
stopSellTime
);
redisDataUtils
.
delSweetRemind
(
remindInfo
.
getUnionId
());
continue
;
}
if
(-
1
==
DateUtil
.
compareStrDay
(
nowTimeStr
,
sellTimeLocalNewStr
))
{
// 还没到售卖期
log
.
info
(
"还没到售卖期:[nowTimeStr=[{}], [sellTimeLocalNewStr=[{}]"
,
nowTimeStr
,
sellTimeLocalNewStr
);
continue
;
}
// 发送模板消息接口
WxMpTemplateMessage
templateMessage
=
WxMpTemplateMessage
.
builder
()
// 接收者openid
.
toUser
(
sweetWechatUser
.
getOpenId
())
// 模板id
.
templateId
(
templateId
)
// 模板跳转链接
.
url
(
h5Url
.
concat
(
"/#/ticket/detail?id="
).
concat
(
remindInfo
.
getPerformancesId
()))
.
build
();
// 添加模板数据
templateMessage
.
addData
(
new
WxMpTemplateData
(
"first"
,
"您关注的演出即将开始售票"
))
.
addData
(
new
WxMpTemplateData
(
"keyword1"
,
performanceVo
.
getTitle
()))
.
addData
(
new
WxMpTemplateData
(
"keyword2"
,
kylinTicketTimesVo
.
getTitle
()))
.
addData
(
new
WxMpTemplateData
(
"keyword3"
,
performanceVo
.
getFieldName
()))
.
addData
(
new
WxMpTemplateData
(
"remark"
,
"点击这里跳转购票"
));
String
msgId
=
null
;
try
{
// 发送模板消息
WxMpConfigStorage
wxMpConfig
=
wxMpConfig
(
appid
,
secret
);
WxMpService
wxMpService
=
wxMpService
(
wxMpConfig
);
msgId
=
wxMpService
.
getTemplateMsgService
().
sendTemplateMsg
(
templateMessage
);
if
(
null
!=
msgId
)
{
redisDataUtils
.
delSweetRemind
(
remindInfo
.
getUnionId
());
}
}
catch
(
WxErrorException
e
)
{
log
.
error
(
"小程序演出提醒消息发送异常"
,
e
);
}
}
catch
(
WxErrorException
e
)
{
e
.
printStackTrace
();
log
.
info
(
"发送成功:[msgId=[{}]"
,
msgId
);
}
catch
(
Exception
e
)
{
log
.
error
(
"小程序演出提醒消息处理异常"
,
e
);
}
System
.
out
.
println
(
msgId
);
}
}
return
ResponseDto
.
success
();
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/utils/RedisDataUtils.java
View file @
d3c7b41d
...
...
@@ -50,6 +50,9 @@ public class RedisDataUtils {
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_MANUAL_PUSH_LIST
;
List
<
SweetManualAppletDto
>
data
=
sweetManualMapper
.
getManualAppletDto
();
for
(
SweetManualAppletDto
item
:
data
)
{
if
(!
item
.
getIsMember
().
equals
(
1
)){
item
.
setTimeSell
(
DateUtil
.
format
(
DateUtil
.
addMin
(
DateUtil
.
parse
(
item
.
getTimeSell
(),
"yyyy-MM-dd HH:mm:ss"
),
item
.
getPayCountdownMinute
()),
DateUtil
.
Formatter
.
yyyyMMddHHmmss
));
}
item
.
setFieldName
((
String
)
redisUtil
.
hget
(
"kylin:fields:id"
+
":"
+
item
.
getFieldId
(),
"name"
));
item
.
setCityName
((
String
)
redisUtil
.
hget
(
"kylin:fields:id"
+
":"
+
item
.
getFieldId
(),
"city_name"
));
item
.
setLatitude
((
String
)
redisUtil
.
hget
(
"kylin:fields:id"
+
":"
+
item
.
getFieldId
(),
"latitude"
));
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/utils/RedisMDSKDataUtils.java
View file @
d3c7b41d
...
...
@@ -45,6 +45,9 @@ public class RedisMDSKDataUtils {
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_MDSK_MANUAL_PUSH_LIST
;
List
<
SweetManualAppletMDSKDto
>
data
=
sweetManualMdskMapper
.
getManualAppletDto
();
for
(
SweetManualAppletMDSKDto
item
:
data
)
{
if
(!
item
.
getIsMember
().
equals
(
1
)){
item
.
setTimeSell
(
DateUtil
.
format
(
DateUtil
.
addMin
(
DateUtil
.
parse
(
item
.
getTimeSell
(),
"yyyy-MM-dd HH:mm:ss"
),-
item
.
getPayCountdownMinute
()),
DateUtil
.
Formatter
.
yyyyMMddHHmmss
));
}
item
.
setFieldName
((
String
)
redisUtil
.
hget
(
"kylin:fields:id"
+
":"
+
item
.
getFieldId
(),
"name"
));
item
.
setCityName
((
String
)
redisUtil
.
hget
(
"kylin:fields:id"
+
":"
+
item
.
getFieldId
(),
"city_name"
));
item
.
setLatitude
((
String
)
redisUtil
.
hget
(
"kylin:fields:id"
+
":"
+
item
.
getFieldId
(),
"latitude"
));
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/resources/com/liquidnet/service/sweet/mapper/SweetManualMapper.xml
View file @
d3c7b41d
...
...
@@ -32,6 +32,9 @@
<result
column=
"field_id"
property=
"fieldId"
/>
<result
column=
"time_start"
property=
"timeStart"
/>
<result
column=
"time_end"
property=
"timeEnd"
/>
<result
column=
"time_sell"
property=
"timeSell"
/>
<result
column=
"pay_countdown_minute"
property=
"payCountdownMinute"
/>
<result
column=
"is_member"
property=
"isMember"
/>
</resultMap>
<!-- 电子手册列表 -->
...
...
@@ -130,7 +133,10 @@
p.title ,
pr.field_id ,
p.time_start ,
p.time_end
p.time_end,
t1.time_sell,
t1.pay_countdown_minute,
t1.is_member
FROM
kylin_performances AS p
LEFT JOIN kylin_performance_status AS ps ON p.performances_id = ps.performance_id
...
...
@@ -153,6 +159,28 @@
LEFT JOIN kylin_ticket_time_relation AS ttr ON tr.times_id = ttr.times_id
GROUP BY
ttr.performance_id
) AS t ON p.performances_id = t.performance_id where sm.`status` = 1 and sm.is_release = 1
) AS t ON p.performances_id = t.performance_id
LEFT JOIN(
SELECT
ttr.performance_id ,
ts.is_member,
pay_countdown_minute,
sum(ts.total_general) AS 'total_general' ,
MIN(
DATE_SUB(
t.time_start ,
INTERVAL pay_countdown_minute MINUTE
)
) AS 'time_sell' ,
MAX(t.time_end) AS 'time_stop'
FROM
kylin_ticket_status AS ts
LEFT JOIN kylin_ticket_relations AS tr ON tr.ticket_id = ts.ticket_id
LEFT JOIN kylin_tickets AS t ON t.tickets_id = ts.ticket_id
LEFT JOIN kylin_ticket_time_relation AS ttr ON tr.times_id = ttr.times_id
GROUP BY
ttr.performance_id
) AS t1 ON p.performances_id = t1.performance_id
where sm.`status` = 1 and sm.is_release = 1
</select>
</mapper>
liquidnet-bus-service/liquidnet-service-sweet/src/main/resources/com/liquidnet/service/sweet/mapper/SweetManualMdskMapper.xml
View file @
d3c7b41d
...
...
@@ -32,6 +32,9 @@
<result
column=
"field_id"
property=
"fieldId"
/>
<result
column=
"time_start"
property=
"timeStart"
/>
<result
column=
"time_end"
property=
"timeEnd"
/>
<result
column=
"time_sell"
property=
"timeSell"
/>
<result
column=
"pay_countdown_minute"
property=
"payCountdownMinute"
/>
<result
column=
"is_member"
property=
"isMember"
/>
</resultMap>
<!-- 电子手册列表 -->
...
...
@@ -130,7 +133,10 @@
p.title ,
pr.field_id ,
p.time_start ,
p.time_end
p.time_end,
t1.time_sell,
t1.pay_countdown_minute,
t1.is_member
FROM
kylin_performances AS p
LEFT JOIN kylin_performance_status AS ps ON p.performances_id = ps.performance_id
...
...
@@ -153,7 +159,29 @@
LEFT JOIN kylin_ticket_time_relation AS ttr ON tr.times_id = ttr.times_id
GROUP BY
ttr.performance_id
) AS t ON p.performances_id = t.performance_id where sm.`status` = 1 and sm.is_release = 1
) AS t ON p.performances_id = t.performance_id
LEFT JOIN(
SELECT
ttr.performance_id ,
pay_countdown_minute,
ts.is_member,
sum(ts.total_general) AS 'total_general' ,
MIN(
DATE_SUB(
t.time_start ,
INTERVAL pay_countdown_minute MINUTE
)
) AS 'time_sell' ,
MAX(t.time_end) AS 'time_stop'
FROM
kylin_ticket_status AS ts
LEFT JOIN kylin_ticket_relations AS tr ON tr.ticket_id = ts.ticket_id
LEFT JOIN kylin_tickets AS t ON t.tickets_id = ts.ticket_id
LEFT JOIN kylin_ticket_time_relation AS ttr ON tr.times_id = ttr.times_id
GROUP BY
ttr.performance_id
) AS t1 ON p.performances_id = t1.performance_id
where sm.`status` = 1 and sm.is_release = 1
</select>
</mapper>
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