Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
zhangshaowu
/
pipi-helper
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit ffbb75a2
authored
Oct 16, 2022
by
weiss
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1
1 parent
3d68f4e2
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
64 additions
and
23 deletions
src/main/java/com/pipihelper/project/feishu/controller/FeiShuEventController.java
src/main/java/com/pipihelper/project/feishu/service/FeiShuApiService.java
src/main/java/com/pipihelper/project/feishu/service/massage/MassageService.java
src/main/java/com/pipihelper/project/scheduled/MassageNoticeScheduleService.java
src/main/java/com/pipihelper/project/feishu/controller/FeiShuEventController.java
View file @
ffbb75a
...
...
@@ -125,16 +125,14 @@ public class FeiShuEventController {
// 推迟 将当前用户放到队列最后 - 掉延迟更新卡片接口 更新大群、按摩群的按摩时间安排卡片
String
waitUserId
=
feiShuMsgCardEventDTO
.
getOpen_id
();
painService
.
waitPain
(
waitUserId
);
//
ToDo 没有按摩群的id
//
更新大群
massageService
.
updateMassageMsgCardToPiPiChat
(
feiShuConfig
.
getChatId
());
//
没有按摩群的id
// massageService.updateMassageMsgCardToPiPiChat(
);
//
更新按摩群
massageService
.
updateMassageMsgCardToPiPiChat
((
String
)
CacheUtil
.
get
(
"chatId"
)
);
String
fileName1
=
String
.
format
(
"/templates/massage-singel-msg-card-end.json"
);
return
getInteractiveCardStr
(
fileName1
,
"已为你推迟到最后"
);
}
else
if
(
"rob"
.
equals
(
actionTypeSecond
))
{
// 抢名额 - 掉延迟更新卡片接口 更新大群、按摩群的按摩时间安排卡片
massageService
.
updateMassageMsgCardToPiPiChat
(
feiShuConfig
.
getChatId
());
return
rob
(
feiShuMsgCardEventDTO
);
}
else
if
(
"next"
.
equals
(
actionTypeSecond
))
{
// 当前按完,有请下一位
...
...
@@ -148,6 +146,15 @@ public class FeiShuEventController {
noticePain
.
setStatus
(
1
);
painService
.
update
(
noticePain
);
massageService
.
updateSingleMassageMsgCardWhenBegin
(
noticePain
.
getMessageId
());
//按摩群中同步发送按摩进度信息
FeiShuMsgDTO
feiShuMsgDTO
=
new
FeiShuMsgDTO
();
String
msg
=
"当前按摩进度:"
+
String
.
format
(
"<at user_id=\\\"%s\\\">%s</at>"
,
noticePain
.
getOpenId
(),
noticePain
.
getName
());
JSONObject
content
=
new
JSONObject
();
content
.
put
(
"text"
,
msg
);
feiShuMsgDTO
.
setMsgType
(
"text"
);
feiShuMsgDTO
.
setContent
(
content
.
toString
());
feiShuMsgDTO
.
setReceiveId
((
String
)
CacheUtil
.
get
(
"chatId"
));
feiShuApiService
.
sendMsg
(
feiShuMsgDTO
,
"chat_id"
);
}
String
fileName1
=
String
.
format
(
"/templates/massage-singel-msg-card-end.json"
);
return
getInteractiveCardStr
(
fileName1
,
"欢迎下次光临~"
);
...
...
@@ -167,7 +174,12 @@ public class FeiShuEventController {
feiShuChatDTO
.
setChatId
((
String
)
CacheUtil
.
get
(
"chatId"
));
feiShuChatDTO
.
setIdList
(
new
String
[]{
feiShuMsgCardEventDTO
.
getOpen_id
()});
feiShuApiService
.
joinChatList
(
feiShuChatDTO
);
//ToDo 更新大群和按摩群的大卡片,异步
// 更新大群和按摩群的大卡片,异步
// 大群
massageService
.
updateMassageMsgCardToPiPiChat
(
feiShuConfig
.
getChatId
());
//按摩群
massageService
.
updateMassageMsgCardToPiPiChat
((
String
)
CacheUtil
.
get
(
"chatId"
));
String
fileName1
=
String
.
format
(
"/templates/massage-msg-card-rob-end.json"
);
return
getInteractiveCardStr
(
fileName1
,
"已经被抢啦啦啦~"
);
}
...
...
@@ -322,4 +334,16 @@ public class FeiShuEventController {
return
ResultGenerator
.
genSuccessResult
();
}
@PostMapping
(
"/send-msg"
)
public
Result
sendMsg
(
String
receiveId
,
String
msg
,
String
receiveIdType
){
FeiShuMsgDTO
feiShuMsgDTO
=
new
FeiShuMsgDTO
();
JSONObject
content
=
new
JSONObject
();
content
.
put
(
"text"
,
msg
);
feiShuMsgDTO
.
setMsgType
(
"text"
);
feiShuMsgDTO
.
setContent
(
content
.
toString
());
feiShuMsgDTO
.
setReceiveId
(
receiveId
);
feiShuApiService
.
sendMsg
(
feiShuMsgDTO
,
receiveIdType
);
return
ResultGenerator
.
genSuccessResult
();
}
}
src/main/java/com/pipihelper/project/feishu/service/FeiShuApiService.java
View file @
ffbb75a
...
...
@@ -156,7 +156,7 @@ public class FeiShuApiService {
@Async
public
JSONObject
patchUrgentApp
(
String
message_id
,
JSONObject
content
)
{
String
api
=
"/im/v1/messages/"
+
message_id
+
"/urgent_
sms?user_id_type=user
_id"
;
String
api
=
"/im/v1/messages/"
+
message_id
+
"/urgent_
app?user_id_type=open
_id"
;
OkHttpClient
client
=
new
OkHttpClient
();
String
url
=
feiShuConfig
.
getFeiShuOpenApiHost
()
+
api
;
RequestBody
requestBody
=
RequestBody
.
create
(
content
.
toString
(),
MediaType
.
parse
(
"application/json"
));
...
...
@@ -180,7 +180,7 @@ public class FeiShuApiService {
@Async
public
JSONObject
patchUrgentSms
(
String
message_id
,
JSONObject
content
)
{
String
api
=
"/im/v1/messages/"
+
message_id
+
"/urgent_
app?user_id_type=open
_id"
;
String
api
=
"/im/v1/messages/"
+
message_id
+
"/urgent_
sms?user_id_type=user
_id"
;
OkHttpClient
client
=
new
OkHttpClient
();
String
url
=
feiShuConfig
.
getFeiShuOpenApiHost
()
+
api
;
RequestBody
requestBody
=
RequestBody
.
create
(
content
.
toString
(),
MediaType
.
parse
(
"application/json"
));
...
...
src/main/java/com/pipihelper/project/feishu/service/massage/MassageService.java
View file @
ffbb75a
...
...
@@ -47,20 +47,22 @@ public class MassageService {
List
<
List
<
String
>>
pushUser
=
new
ArrayList
<>();
for
(
PushPainBO
pushPainBO
:
pushPainBOList
)
{
List
<
String
>
user
=
new
ArrayList
<>();
//给单个用户发送
String
singleContent
=
massageMsgCardSerivce
.
genMassageMsgCardForSingle
();
log
.
info
(
"给单个用户发送按摩消息:{}"
,
singleContent
);
FeiShuMsgDTO
feiShuMsgDTO
=
new
FeiShuMsgDTO
();
feiShuMsgDTO
.
setMsgType
(
"interactive"
);
feiShuMsgDTO
.
setContent
(
singleContent
);
feiShuMsgDTO
.
setReceiveId
(
pushPainBO
.
getOpenId
());
log
.
info
(
feiShuMsgDTO
.
toString
());
JSONObject
sendMsgResponse
=
feiShuApiService
.
sendMsg
(
feiShuMsgDTO
,
"open_id"
);
String
messageId
=
sendMsgResponse
.
getJSONObject
(
"data"
).
getString
(
"message_id"
);
//更新按摩记录表中的messageId
Pain
pain
=
painService
.
findByOpenId
(
pushPainBO
.
getOpenId
());
pain
.
setMessageId
(
messageId
);
painService
.
update
(
pain
);
if
(
chatId
.
equals
(
feiShuConfig
.
getChatId
())){
//给单个用户发送
String
singleContent
=
massageMsgCardSerivce
.
genMassageMsgCardForSingle
();
log
.
info
(
"给单个用户发送按摩消息:{}"
,
singleContent
);
FeiShuMsgDTO
feiShuMsgDTO
=
new
FeiShuMsgDTO
();
feiShuMsgDTO
.
setMsgType
(
"interactive"
);
feiShuMsgDTO
.
setContent
(
singleContent
);
feiShuMsgDTO
.
setReceiveId
(
pushPainBO
.
getOpenId
());
log
.
info
(
feiShuMsgDTO
.
toString
());
JSONObject
sendMsgResponse
=
feiShuApiService
.
sendMsg
(
feiShuMsgDTO
,
"open_id"
);
String
messageId
=
sendMsgResponse
.
getJSONObject
(
"data"
).
getString
(
"message_id"
);
//更新按摩记录表中的messageId
Pain
pain
=
painService
.
findByOpenId
(
pushPainBO
.
getOpenId
());
pain
.
setMessageId
(
messageId
);
painService
.
update
(
pain
);
}
//构建给大群发送的名单
user
.
add
(
pushPainBO
.
getIndex
().
toString
());
user
.
add
(
pushPainBO
.
getName
());
...
...
src/main/java/com/pipihelper/project/scheduled/MassageNoticeScheduleService.java
View file @
ffbb75a
package
com
.
pipihelper
.
project
.
scheduled
;
import
com.alibaba.fastjson.JSONObject
;
import
com.pipihelper.project.feishu.dto.msg.FeiShuMsgDTO
;
import
com.pipihelper.project.feishu.entity.Pain
;
import
com.pipihelper.project.feishu.service.FeiShuApiService
;
import
com.pipihelper.project.feishu.service.PainService
;
import
com.pipihelper.project.feishu.service.massage.MassageService
;
import
com.pipihelper.project.utils.CacheUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
...
...
@@ -49,18 +51,31 @@ public class MassageNoticeScheduleService {
// @Scheduled(cron = "0 0 10 * * ?")
public
void
massageStart
(){
List
<
Pain
>
pains
=
painService
.
findListAsc
(
3
);
// String msg = "{\"text\":\"当前按摩进度:<at user_id=\\\"%s\\\">%s</at> <at user_id=\\\"%s\\\">%s</at> <at user_id=\\\"%s\\\">%s</at>\"}";
StringBuilder
userString
=
new
StringBuilder
();
for
(
Pain
pain:
pains
){
String
messageId
=
pain
.
getMessageId
();
massageService
.
updateSingleMassageMsgCardWhenBegin
(
messageId
);
userString
.
append
(
String
.
format
(
"<at user_id=\\\"%s\\\">%s</at>"
,
pain
.
getOpenId
(),
pain
.
getName
()));
//1代表正在按
pain
.
setStatus
(
1
);
painService
.
update
(
pain
);
//发送应用内提醒
JSONObject
noticeMsg
=
new
JSONObject
();
noticeMsg
.
put
(
"user_id_list"
,
Arrays
.
asList
(
pain
.
getOpenId
()));
//发送应用内提醒
log
.
info
(
"发送应用内容消息提醒"
);
feiShuApiService
.
patchUrgentApp
(
messageId
,
noticeMsg
);
}
//按摩群中同步发送按摩进度信息
FeiShuMsgDTO
feiShuMsgDTO
=
new
FeiShuMsgDTO
();
String
msg
=
"当前按摩进度:"
+
userString
;
JSONObject
content
=
new
JSONObject
();
content
.
put
(
"text"
,
msg
);
feiShuMsgDTO
.
setMsgType
(
"text"
);
feiShuMsgDTO
.
setContent
(
content
.
toString
());
feiShuMsgDTO
.
setReceiveId
((
String
)
CacheUtil
.
get
(
"chatId"
));
feiShuApiService
.
sendMsg
(
feiShuMsgDTO
,
"chat_id"
);
}
...
...
Write
Preview
Markdown
is supported
Attach a file
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 post a comment