Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
midjourney-proxy
Overview
Overview
Details
Activity
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
徐少华
midjourney-proxy
Commits
4d78f867
Commit
4d78f867
authored
Oct 12, 2019
by
裴大威
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature-lz-1001822' into 'master'
修改欢迎语 See merge request rays/pcloud-book!193
parents
f0680452
0a0994b8
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
75 additions
and
93 deletions
+75
-93
SendWeixinRequestTools.java
...a/com/pcloud/book/group/tools/SendWeixinRequestTools.java
+75
-93
No files found.
pcloud-service-book/src/main/java/com/pcloud/book/group/tools/SendWeixinRequestTools.java
View file @
4d78f867
...
@@ -336,47 +336,8 @@ public class SendWeixinRequestTools {
...
@@ -336,47 +336,8 @@ public class SendWeixinRequestTools {
content
.
append
(
"本群目的为学习交流和学习辅导,线上资源和工具为图书的增值服务,可根据实际情况配合图书一起使用。"
);
content
.
append
(
"本群目的为学习交流和学习辅导,线上资源和工具为图书的增值服务,可根据实际情况配合图书一起使用。"
);
}
}
StringBuilder
sb
=
new
StringBuilder
();
StringBuilder
sb
=
new
StringBuilder
();
boolean
isOld
=
true
;
boolean
isOld
=
createGuideMessageBase
(
isGroupRobot
,
keywords
,
classifyQrcodeInfo
,
sb
,
dto
.
getAccountSettingDto
(),
content
.
length
());
boolean
haveKeyword
=
!
CollectionUtils
.
isEmpty
(
keywords
)
&&
isGroupRobot
;
StringBuilder
groupKeyword
=
createGroupKeyword
(
keywordStatusDTO
,
classifyQrcodeInfo
,
sb
,
isOld
,
dto
.
getAccountSettingDto
());
if
(
haveKeyword
)
{
List
<
KeywordDTO
>
collect
=
keywords
.
stream
()
.
filter
(
p
->
(
ReplyTypeEnum
.
IMAGE
.
value
.
equals
(
p
.
getReplyType
())
||
ReplyTypeEnum
.
TEXT
.
value
.
equals
(
p
.
getReplyType
())))
.
collect
(
Collectors
.
toList
());
// 1001745 包含图片和文字则不合并关键词详情,其他情况走之前的模式
if
(
CollectionUtils
.
isEmpty
(
collect
)){
isOld
=
false
;
sb
.
append
(
"\n\n本群配有以下资源服务,戳链接立即获取:\n"
);
for
(
KeywordDTO
keyword
:
keywords
)
{
if
(
sb
.
length
()
+
(
keyword
.
getKeywords
()
+
"\n"
).
length
()
>=
730
)
{
break
;
}
sb
.
append
(
"【"
).
append
(
keyword
.
getKeywords
()).
append
(
"】\n"
);
if
(
ReplyTypeEnum
.
LINK
.
value
.
equals
(
keyword
.
getReplyType
())
||
ReplyTypeEnum
.
APP
.
value
.
equals
(
keyword
.
getReplyType
()))
{
String
linkUrl
=
SendWeixinRequestTools
.
splitUrlNew
(
dto
.
getAccountSettingDto
(),
keyword
.
getLinkUrl
(),
classifyQrcodeInfo
.
getBookGroupId
(),
classifyQrcodeInfo
.
getClassifyId
(),
classifyQrcodeInfo
.
getGroupQrcodeId
());
sb
.
append
(
" "
).
append
(
keyword
.
getContent
()).
append
(
UrlUtils
.
getShortUrl4Own
(
linkUrl
)).
append
(
"\n\n"
);
}
}
}
else
{
sb
.
append
(
"\n\n在群内回复以下关键词,领取任务或资源:\n"
);
for
(
KeywordDTO
keyword
:
keywords
)
{
if
((
content
.
length
()
+
sb
.
length
())
>=
1000
&&
(
sb
.
length
()
+
(
keyword
.
getKeywords
()
+
"\n"
).
length
())
>=
892
)
{
break
;
}
sb
.
append
(
"【"
).
append
(
keyword
.
getKeywords
()).
append
(
"】"
);
}
}
}
// 运营关键词
StringBuilder
groupKeyword
=
getGroupKeyword
(
keywordStatusDTO
,
sb
,
isOld
);
if
(
haveKeyword
&&
!
isOld
)
{
groupKeyword
.
append
(
"后续也可以回复【】里的关键词,再次领取"
);
}
// 拼接反馈链接
AccountSettingDto
accountSettingDto
=
dto
.
getAccountSettingDto
();
String
feedbackUrl
=
"*common/C"
+
classifyQrcodeInfo
.
getChannelId
()+
"/A0/feedback/suggest?groupQrcodeId="
+
classifyQrcodeInfo
.
getGroupQrcodeId
();
String
url
=
splitUrl
(
accountSettingDto
,
feedbackUrl
);
LOGGER
.
info
(
"发送欢迎语反馈链接feedbackUrl:{}, url:{}"
,
feedbackUrl
,
url
);
groupKeyword
.
append
(
"\n\n群资源与书上介绍不符?点这里反馈\n->"
).
append
(
UrlUtils
.
getShortUrl4Own
(
url
));
// 1001692 自定义欢迎语+关键词文案,如果超过300字,关键词拆分出来发
// 1001692 自定义欢迎语+关键词文案,如果超过300字,关键词拆分出来发
if
((
content
.
length
()
+
sb
.
length
())
>=
1000
)
{
if
((
content
.
length
()
+
sb
.
length
())
>=
1000
)
{
sendTextMessage
(
content
.
toString
(),
robotId
,
weixinGroupId
,
ip
);
sendTextMessage
(
content
.
toString
(),
robotId
,
weixinGroupId
,
ip
);
...
@@ -386,7 +347,6 @@ public class SendWeixinRequestTools {
...
@@ -386,7 +347,6 @@ public class SendWeixinRequestTools {
}
}
}
}
@ParamLog
(
"发送欢迎语消息"
)
@ParamLog
(
"发送欢迎语消息"
)
public
static
void
sendGuideMessage
(
SendGuideMessageDTO
dto
)
{
public
static
void
sendGuideMessage
(
SendGuideMessageDTO
dto
)
{
if
(
Objects
.
isNull
(
dto
)
||
CollectionUtils
.
isEmpty
(
dto
.
getReplyMessages
()))
{
if
(
Objects
.
isNull
(
dto
)
||
CollectionUtils
.
isEmpty
(
dto
.
getReplyMessages
()))
{
...
@@ -412,70 +372,78 @@ public class SendWeixinRequestTools {
...
@@ -412,70 +372,78 @@ public class SendWeixinRequestTools {
if
(
ReplyTypeEnum
.
TEXT
.
value
.
equals
(
sendMessageDTO
.
getReplyType
()))
{
if
(
ReplyTypeEnum
.
TEXT
.
value
.
equals
(
sendMessageDTO
.
getReplyType
()))
{
String
s
=
nickNameStr
+
" "
+
sendMessageDTO
.
getContent
();
String
s
=
nickNameStr
+
" "
+
sendMessageDTO
.
getContent
();
StringBuilder
sb
=
new
StringBuilder
();
StringBuilder
sb
=
new
StringBuilder
();
boolean
isOld
=
createGuideMessageBase
(
isGroupRobot
,
keywords
,
classifyQrcodeInfo
,
sb
,
dto
.
getAccountSettingDto
(),
s
.
length
());
StringBuilder
groupKeyword
=
createGroupKeyword
(
keywordStatusDTO
,
classifyQrcodeInfo
,
sb
,
isOld
,
dto
.
getAccountSettingDto
());
// 1001692 自定义欢迎语+关键词文案,如果超过300字,关键词拆分出来发
if
(
s
.
length
()
+
groupKeyword
.
length
()
>=
1000
)
{
sendMessageDTO
.
setContent
(
s
);
sendMessage
(
sendMessageDTO
,
robotId
,
weixinGroupId
,
ip
,
code
);
sendMessageDTO
.
setContent
(
groupKeyword
.
toString
().
replaceFirst
(
"\n\n"
,
""
));
sendMessage
(
sendMessageDTO
,
robotId
,
weixinGroupId
,
ip
,
code
);
i
++;
continue
;
}
else
{
sendMessageDTO
.
setContent
(
s
+
groupKeyword
.
toString
());
}
}
else
{
SendTextMessageVO
sendTextMessageVO
=
new
SendTextMessageVO
();
sendTextMessageVO
.
setContent
(
nickNameStr
);
sendTextMessageVO
.
setAltId
(
robotId
);
sendTextMessageVO
.
setWxGroupId
(
weixinGroupId
);
sendTextMessageVO
.
setIp
(
ip
);
WxGroupSDK
.
sendTextMessage
(
sendTextMessageVO
);
}
// }
}
sendMessage
(
sendMessageDTO
,
robotId
,
weixinGroupId
,
ip
,
code
);
i
++;
}
}
private
static
boolean
createGuideMessageBase
(
Boolean
isGroupRobot
,
List
<
KeywordDTO
>
keywords
,
GroupClassifyQrcodeDTO
classifyQrcodeInfo
,
StringBuilder
sb
,
AccountSettingDto
accountSettingDto
,
int
length
)
{
boolean
isOld
=
true
;
boolean
isOld
=
true
;
boolean
haveKeyword
=
!
CollectionUtils
.
isEmpty
(
keywords
)
&&
isGroupRobot
;
boolean
haveKeyword
=
!
CollectionUtils
.
isEmpty
(
keywords
)
&&
isGroupRobot
;
if
(
haveKeyword
)
{
if
(
haveKeyword
)
{
List
<
KeywordDTO
>
collect
=
keywords
.
stream
()
List
<
KeywordDTO
>
collect
=
keywords
.
stream
()
.
filter
(
p
->
(
ReplyTypeEnum
.
IMAGE
.
value
.
equals
(
p
.
getReplyType
())
||
ReplyTypeEnum
.
TEXT
.
value
.
equals
(
p
.
getReplyType
())))
.
filter
(
p
->
(
ReplyTypeEnum
.
IMAGE
.
value
.
equals
(
p
.
getReplyType
())
||
ReplyTypeEnum
.
TEXT
.
value
.
equals
(
p
.
getReplyType
())))
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
// 1001745 包含图片则不合并关键词详情
// 1001745 包含图片和文字则不合并关键词详情,其他情况走之前的模式
if
(
CollectionUtils
.
isEmpty
(
collect
))
{
if
(
CollectionUtils
.
isEmpty
(
collect
))
{
isOld
=
false
;
isOld
=
false
;
sb
.
append
(
"\n\n本群配有以下资源服务,戳链接
立即获取:\n"
);
sb
.
append
(
"\n\n本群配有以下资源服务,戳链接或回复相应关键词
立即获取:\n"
);
for
(
KeywordDTO
keyword
:
keywords
)
{
for
(
KeywordDTO
keyword
:
keywords
)
{
if
(
sb
.
length
()
+
(
keyword
.
getKeywords
()
+
"\n"
).
length
()
>=
730
)
{
if
(
sb
.
length
()
+
(
keyword
.
getKeywords
()
+
"\n"
).
length
()
>=
730
)
{
break
;
break
;
}
}
sb
.
append
(
"【"
).
append
(
keyword
.
getKeywords
()).
append
(
"】
\n"
);
sb
.
append
(
"关键词:"
).
append
(
keyword
.
getKeywords
()).
append
(
"
\n"
);
if
(
ReplyTypeEnum
.
LINK
.
value
.
equals
(
keyword
.
getReplyType
())
||
ReplyTypeEnum
.
APP
.
value
.
equals
(
keyword
.
getReplyType
()))
{
if
(
ReplyTypeEnum
.
LINK
.
value
.
equals
(
keyword
.
getReplyType
())
||
ReplyTypeEnum
.
APP
.
value
.
equals
(
keyword
.
getReplyType
()))
{
String
linkUrl
=
SendWeixinRequestTools
.
splitUrlNew
(
dto
.
getAccountSettingDto
()
,
keyword
.
getLinkUrl
(),
classifyQrcodeInfo
.
getBookGroupId
(),
classifyQrcodeInfo
.
getClassifyId
(),
classifyQrcodeInfo
.
getGroupQrcodeId
());
String
linkUrl
=
SendWeixinRequestTools
.
splitUrlNew
(
accountSettingDto
,
keyword
.
getLinkUrl
(),
classifyQrcodeInfo
.
getBookGroupId
(),
classifyQrcodeInfo
.
getClassifyId
(),
classifyQrcodeInfo
.
getGroupQrcodeId
());
sb
.
append
(
" "
).
append
(
keyword
.
getContent
()).
append
(
UrlUtils
.
getShortUrl4Own
(
linkUrl
)).
append
(
"\n\n"
);
sb
.
append
(
" "
).
append
(
keyword
.
getContent
()).
append
(
UrlUtils
.
getShortUrl4Own
(
linkUrl
)).
append
(
"\n\n"
);
}
}
}
}
}
else
{
}
else
{
sb
.
append
(
"\n\n在群内回复以下关键词,领取任务或资源:\n"
);
sb
.
append
(
"\n\n在群内回复以下关键词,领取任务或资源:\n"
);
for
(
KeywordDTO
keyword
:
keywords
)
{
for
(
KeywordDTO
keyword
:
keywords
)
{
if
((
s
.
length
()
+
sb
.
length
())
>=
1000
&&
(
sb
.
length
()
+
(
keyword
.
getKeywords
()
+
"\n"
).
length
())
>=
892
)
{
if
((
length
+
sb
.
length
())
>=
1000
&&
(
sb
.
length
()
+
(
keyword
.
getKeywords
()
+
"\n"
).
length
())
>=
892
)
{
break
;
break
;
}
}
sb
.
append
(
"【"
).
append
(
keyword
.
getKeywords
()).
append
(
"】"
);
sb
.
append
(
"【"
).
append
(
keyword
.
getKeywords
()).
append
(
"】"
);
}
}
}
}
}
}
StringBuilder
groupKeyword
=
getGroupKeyword
(
keywordStatusDTO
,
sb
,
isOld
);
return
isOld
;
if
(
haveKeyword
&&
!
isOld
)
{
groupKeyword
.
append
(
"后续也可以回复【】里的关键词,再次领取"
);
}
}
private
static
StringBuilder
createGroupKeyword
(
KeywordStatusDTO
keywordStatusDTO
,
GroupClassifyQrcodeDTO
classifyQrcodeInfo
,
StringBuilder
sb
,
boolean
isOld
,
AccountSettingDto
accountSettingDto
)
{
// 运营关键词
StringBuilder
groupKeyword
=
getGroupKeyword
(
keywordStatusDTO
,
sb
,
isOld
);
// 拼接反馈链接
// 拼接反馈链接
AccountSettingDto
accountSettingDto
=
dto
.
getAccountSettingDto
();
String
feedbackUrl
=
"*common/C"
+
classifyQrcodeInfo
.
getChannelId
()
+
"/A0/feedback/suggest?groupQrcodeId="
+
classifyQrcodeInfo
.
getGroupQrcodeId
();
String
feedbackUrl
=
"*common/C"
+
classifyQrcodeInfo
.
getChannelId
()+
"/A0/feedback/suggest?groupQrcodeId="
+
classifyQrcodeInfo
.
getGroupQrcodeId
();
String
url
=
splitUrl
(
accountSettingDto
,
feedbackUrl
);
String
url
=
splitUrl
(
accountSettingDto
,
feedbackUrl
);
LOGGER
.
info
(
"发送欢迎语反馈链接feedbackUrl:{}, url:{}"
,
feedbackUrl
,
url
);
LOGGER
.
info
(
"发送欢迎语反馈链接feedbackUrl:{}, url:{}"
,
feedbackUrl
,
url
);
groupKeyword
.
append
(
"\n\n群资源与书上介绍不符?点这里反馈\n->"
).
append
(
UrlUtils
.
getShortUrl4Own
(
url
));
groupKeyword
.
append
(
"\n\n群资源与书上介绍不符?点这里反馈\n->"
).
append
(
UrlUtils
.
getShortUrl4Own
(
url
));
// 1001692 自定义欢迎语+关键词文案,如果超过300字,关键词拆分出来发
return
groupKeyword
;
if
(
s
.
length
()
+
groupKeyword
.
length
()
>=
1000
)
{
sendMessageDTO
.
setContent
(
s
);
sendMessage
(
sendMessageDTO
,
robotId
,
weixinGroupId
,
ip
,
code
);
sendMessageDTO
.
setContent
(
groupKeyword
.
toString
().
replaceFirst
(
"\n\n"
,
""
));
sendMessage
(
sendMessageDTO
,
robotId
,
weixinGroupId
,
ip
,
code
);
i
++;
continue
;
}
else
{
sendMessageDTO
.
setContent
(
s
+
groupKeyword
.
toString
());
}
}
else
{
SendTextMessageVO
sendTextMessageVO
=
new
SendTextMessageVO
();
sendTextMessageVO
.
setContent
(
nickNameStr
);
sendTextMessageVO
.
setAltId
(
robotId
);
sendTextMessageVO
.
setWxGroupId
(
weixinGroupId
);
sendTextMessageVO
.
setIp
(
ip
);
WxGroupSDK
.
sendTextMessage
(
sendTextMessageVO
);
}
// }
}
sendMessage
(
sendMessageDTO
,
robotId
,
weixinGroupId
,
ip
,
code
);
i
++;
}
}
}
/**
/**
...
@@ -486,36 +454,50 @@ public class SendWeixinRequestTools {
...
@@ -486,36 +454,50 @@ public class SendWeixinRequestTools {
* @return 最终发送内容
* @return 最终发送内容
*/
*/
private
static
StringBuilder
getGroupKeyword
(
KeywordStatusDTO
dto
,
StringBuilder
sb
,
Boolean
isOld
)
{
private
static
StringBuilder
getGroupKeyword
(
KeywordStatusDTO
dto
,
StringBuilder
sb
,
Boolean
isOld
)
{
if
(!
sb
.
toString
().
contains
(
"【"
)
&&
(
dto
.
getClockOpen
()
||
dto
.
getRiddleOpen
()
||
dto
.
getReportOpen
()))
{
String
currentContent
=
sb
.
toString
();
if
(!
currentContent
.
contains
(
"关键词"
)
&&
(
dto
.
getClockOpen
()
||
dto
.
getRiddleOpen
()
||
dto
.
getReportOpen
()))
{
// 检查是否包含关键词
sb
.
append
(
"\n\n在群内回复以下关键词:\n"
);
sb
.
append
(
"\n\n在群内回复以下关键词:\n"
);
}
}
if
(
dto
.
getReportOpen
())
{
if
(
isOld
)
{
// 旧流程直接输出关键词, 不用考虑换行问题
if
(
dto
.
getReportOpen
())
{
sb
.
append
(
"【学习报告】"
);
sb
.
append
(
"【学习报告】"
);
if
(!
isOld
)
{
sb
.
append
(
"\n回复学习报告,获取个人学习报告,与群成员PK元气值\n\n"
);
}
}
if
(
dto
.
getRiddleOpen
())
{
sb
.
append
(
"【猜谜语】"
);
}
}
if
(
dto
.
getRiddleOpen
())
{
if
(
dto
.
getClockOpen
())
{
if
(!
isOld
&&
!
sb
.
toString
().
contains
(
"【学习报告】"
))
{
sb
.
append
(
"【"
).
append
(
dto
.
getClockKeyword
()).
append
(
"】"
);
sb
.
append
(
"\n"
);
}
}
sb
.
append
(
"【猜谜语】"
);
if
(!
isOld
)
{
sb
.
append
(
"\n回复猜谜语,开启群游戏,连续答对5题,所有群成员可获得精美礼券\n\n"
);
}
}
else
{
//新流程在每个关键词开头检查前面是否有关键词输出, 并决定是否需要添加空行
boolean
hasItem
=
false
;
if
(
dto
.
getReportOpen
())
{
sb
.
append
(
"关键词:学习报告\n回复学习报告,获取个人学习报告,与群成员PK元气值"
);
hasItem
=
true
;
}
}
if
(
dto
.
getClockOpen
())
{
if
(
dto
.
getRiddleOpen
())
{
if
(!
isOld
&&
!
sb
.
toString
().
contains
(
"【学习报告】"
)
&&
!
sb
.
toString
().
contains
(
"【猜谜语】"
))
{
addEmptyLineWhenHasItem
(
hasItem
,
sb
);
sb
.
append
(
"\n"
);
sb
.
append
(
"关键词:猜谜语\n回复猜谜语,开启群游戏,连续答对5题,所有群成员可获得精美礼券"
);
hasItem
=
true
;
}
}
sb
.
append
(
"【"
).
append
(
dto
.
getClockKeyword
()).
append
(
"】"
);
if
(
dto
.
getClockOpen
())
{
if
(!
isOld
)
{
addEmptyLineWhenHasItem
(
hasItem
,
sb
);
sb
.
append
(
"
\n"
).
append
(
dto
.
getClockGuide
()).
append
(
"\n\n"
);
sb
.
append
(
"
关键词:"
).
append
(
dto
.
getClockKeyword
()).
append
(
"\n"
).
append
(
dto
.
getClockGuide
()
);
}
}
}
}
return
sb
;
return
sb
;
}
}
private
static
void
addEmptyLineWhenHasItem
(
boolean
hasItem
,
StringBuilder
sb
)
{
if
(
hasItem
){
sb
.
append
(
"\n\n"
);
}
}
private
static
String
getNickNameStr
(
String
weixinGroupId
)
{
private
static
String
getNickNameStr
(
String
weixinGroupId
)
{
StringBuilder
nameStr
=
new
StringBuilder
();
StringBuilder
nameStr
=
new
StringBuilder
();
Map
<
String
,
Integer
>
nickNames
=
JedisClusterUtils
.
getJson
(
"BOOK:WEIXINGROUP:GUIDEUSER"
+
weixinGroupId
,
Map
.
class
);
Map
<
String
,
Integer
>
nickNames
=
JedisClusterUtils
.
getJson
(
"BOOK:WEIXINGROUP:GUIDEUSER"
+
weixinGroupId
,
Map
.
class
);
...
...
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