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
4be01c9b
Commit
4be01c9b
authored
Feb 18, 2020
by
zhangdongwei-intern
Committed by
裴大威
Feb 19, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat-1002402: 个人号分类加排序 feat 102399 feat 2364
parent
9de2455e
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
154 additions
and
3 deletions
+154
-3
RobotClassifyDTO.java
...a/com/pcloud/book/pcloudKeyword/dto/RobotClassifyDTO.java
+6
-0
BookApplication.java
...e-book/src/main/java/com/pcloud/book/BookApplication.java
+13
-0
BookBusinessConstants.java
...com/pcloud/book/group/constant/BookBusinessConstants.java
+5
-0
MQTopicConumer.java
...c/main/java/com/pcloud/book/mq/config/MQTopicConumer.java
+5
-0
RobotRealStatusListener.java
...ava/com/pcloud/book/mq/topic/RobotRealStatusListener.java
+43
-0
PcloudRobotBiz.java
...ava/com/pcloud/book/pcloudkeyword/biz/PcloudRobotBiz.java
+5
-0
PcloudRobotBizImpl.java
...cloud/book/pcloudkeyword/biz/impl/PcloudRobotBizImpl.java
+35
-0
PcloudRobotDao.java
...ava/com/pcloud/book/pcloudkeyword/dao/PcloudRobotDao.java
+5
-0
PcloudRobotDaoImpl.java
...cloud/book/pcloudkeyword/dao/impl/PcloudRobotDaoImpl.java
+11
-0
PcloudRobot.java
...ava/com/pcloud/book/pcloudkeyword/entity/PcloudRobot.java
+3
-0
PcloudRobot.Mapper.xml
...ain/resources/mapper/pcloudkeyword/PcloudRobot.Mapper.xml
+23
-3
No files found.
pcloud-facade-book/src/main/java/com/pcloud/book/pcloudKeyword/dto/RobotClassifyDTO.java
View file @
4be01c9b
...
...
@@ -19,4 +19,10 @@ public class RobotClassifyDTO {
@ApiModelProperty
(
"小号编号"
)
private
String
uniqueNumber
;
@ApiModelProperty
(
"小号状态(1:上线 2:离线)"
)
private
Integer
state
;
@ApiModelProperty
(
"小号真是状态(1:上线 2:离线)"
)
private
Integer
realStatus
;
}
pcloud-service-book/src/main/java/com/pcloud/book/BookApplication.java
View file @
4be01c9b
...
...
@@ -248,4 +248,17 @@ public class BookApplication {
public
Binding
wxGroupSendNotTextBind
()
{
return
RabbitMQFactory
.
bindingExchange
(
wxGroupSendNotTextQueue
(),
MQTopicProducer
.
WXGROUP_SEND_NOT_TEXT
);
}
/**
* 监听小号真实状态
*/
@Bean
public
Queue
wxGroupRealStatusQueue
()
{
return
RabbitMQFactory
.
queueBuilder
(
MQTopicConumer
.
ROBOT_REAL_STATUS
);
}
@Bean
public
Binding
wxGroupRealStatusBind
()
{
return
RabbitMQFactory
.
bindingExchange
(
wxGroupRealStatusQueue
(),
MQTopicProducer
.
ROBOT_REAL_STATUS
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/constant/BookBusinessConstants.java
View file @
4be01c9b
...
...
@@ -16,6 +16,11 @@ public class BookBusinessConstants {
public
static
final
Map
<
String
,
AutoUpdateGroupNumDTO
>
GROUP_NUM_DTO_MAP
=
new
ConcurrentHashMap
<>(
128
);
/**
* 小号上次心跳时间缓存
*/
public
static
final
String
ACTIVE_ROBOT_CACHE_KEY_PREFIX
=
"activerobot:"
;
/**
* 收款状态
*/
public
enum
CollectionStatus
{
...
...
pcloud-service-book/src/main/java/com/pcloud/book/mq/config/MQTopicConumer.java
View file @
4be01c9b
...
...
@@ -11,6 +11,11 @@ public class MQTopicConumer {
private
static
final
String
PREFIX
=
"consumer.book."
;
/**
* 小号状态
*/
public
static
final
String
ROBOT_REAL_STATUS
=
PREFIX
+
MQTopicProducer
.
ROBOT_REAL_STATUS
;
/**
* 清除录音消费者
*/
public
static
final
String
DELETE_VIDEO
=
PREFIX
+
MQTopicProducer
.
DELETE_VIDEO
;
...
...
pcloud-service-book/src/main/java/com/pcloud/book/mq/topic/RobotRealStatusListener.java
0 → 100644
View file @
4be01c9b
package
com
.
pcloud
.
book
.
mq
.
topic
;
import
com.pcloud.book.group.biz.GroupQrcodeBiz
;
import
com.pcloud.book.mq.config.MQTopicConumer
;
import
com.pcloud.book.pcloudkeyword.biz.PcloudRobotBiz
;
import
com.pcloud.book.reading.biz.ReadingActivityBiz
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.wechatgroup.message.dto.AddWXGroupDTO
;
import
com.pcloud.wechatgroup.selfrobot.dto.RobotStatusDTO
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.amqp.rabbit.annotation.RabbitHandler
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
@Slf4j
@Component
@RabbitListener
(
queues
=
MQTopicConumer
.
ROBOT_REAL_STATUS
)
public
class
RobotRealStatusListener
{
@Resource
private
PcloudRobotBiz
pcloudRobotBiz
;
/**
* 处理小号真实状态
*/
@ParamLog
(
value
=
"处理小号真实状态"
,
isAfterReturn
=
false
)
@RabbitHandler
public
void
onMessage
(
RobotStatusDTO
dto
)
throws
BizException
{
try
{
pcloudRobotBiz
.
changeRobotRealStatus
(
dto
.
getWxId
(),
dto
.
getStatus
());
}
catch
(
Exception
e
)
{
log
.
error
(
"接收微信用户进群消息失败"
+
e
.
getMessage
(),
e
);
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/pcloudkeyword/biz/PcloudRobotBiz.java
View file @
4be01c9b
...
...
@@ -14,6 +14,11 @@ import java.util.Map;
public
interface
PcloudRobotBiz
{
/**
* 校验小号真是状态
*/
void
changeRobotRealStatus
(
String
wxId
,
Integer
status
);
void
createPcloudRobot
(
PcloudRobot
pcloudRobot
);
void
updatePcloudRobot
(
PcloudRobot
pcloudRobot
);
...
...
pcloud-service-book/src/main/java/com/pcloud/book/pcloudkeyword/biz/impl/PcloudRobotBizImpl.java
View file @
4be01c9b
...
...
@@ -3,6 +3,7 @@ package com.pcloud.book.pcloudkeyword.biz.impl;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.consumer.content.ResourceConsr
;
import
com.pcloud.book.consumer.wechatgroup.WechatGroupConsr
;
import
com.pcloud.book.group.constant.BookBusinessConstants
;
import
com.pcloud.book.guide.biz.PcloudGuideBiz
;
import
com.pcloud.book.guide.biz.PcloudRobotWakeUpBiz
;
import
com.pcloud.book.guide.mapper.PcloudRobotSilenceMapper
;
...
...
@@ -31,6 +32,7 @@ import com.pcloud.common.page.PageParam;
import
com.pcloud.common.utils.BeanUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.QrcodeUtils
;
import
com.pcloud.common.utils.cache.redis.JedisClusterUtils
;
import
com.pcloud.common.utils.httpclient.UrlUtils
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.contentcenter.resource.dto.ResourceDTO
;
...
...
@@ -53,6 +55,7 @@ import java.util.ArrayList;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
@Component
(
"pcloudRobotBiz"
)
...
...
@@ -96,6 +99,38 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
@Autowired
private
WechatGroupConsr
wechatGroupConsr
;
@ParamLog
(
value
=
"[changeRobotRealStatus]"
,
isAfterReturn
=
false
)
@Override
@Transactional
(
rollbackFor
=
{
Exception
.
class
})
public
void
changeRobotRealStatus
(
String
wxId
,
Integer
status
)
{
PcloudRobot
robot
=
pcloudRobotDao
.
getByWxId
(
wxId
);
if
(
Objects
.
isNull
(
robot
))
{
return
;
}
if
(!
status
.
equals
(
robot
.
getRealStatus
()))
{
pcloudRobotDao
.
updateRealStatus
(
wxId
,
status
);
}
// 如果小号上线则缓存7s,心跳频率5s
if
(
1
==
status
)
{
JedisClusterUtils
.
hset
(
BookBusinessConstants
.
ACTIVE_ROBOT_CACHE_KEY_PREFIX
,
wxId
,
String
.
valueOf
(
System
.
currentTimeMillis
()
+
7
*
1000
));
}
// 处理无响应的上线状态小号,更新为下线
List
<
RobotClassifyDTO
>
allPcloudRobot
=
pcloudRobotDao
.
getAllPcloudRobot
();
List
<
String
>
ids
=
allPcloudRobot
.
stream
().
filter
(
x
->
1
==
x
.
getRealStatus
()).
map
(
RobotClassifyDTO:
:
getWxId
).
collect
(
Collectors
.
toList
());
Map
<
String
,
String
>
map
=
JedisClusterUtils
.
hgetAll
(
BookBusinessConstants
.
ACTIVE_ROBOT_CACHE_KEY_PREFIX
);
for
(
String
id
:
ids
)
{
String
s
=
map
.
get
(
id
);
if
(
null
==
s
)
{
JedisClusterUtils
.
hset
(
BookBusinessConstants
.
ACTIVE_ROBOT_CACHE_KEY_PREFIX
,
id
,
String
.
valueOf
(
System
.
currentTimeMillis
()
+
7
*
1000
));
continue
;
}
// 如果超时没有收到心跳则下线
if
(
System
.
currentTimeMillis
()
>
Long
.
parseLong
(
s
))
{
pcloudRobotDao
.
updateRealStatus
(
id
,
2
);
}
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
createPcloudRobot
(
PcloudRobot
pcloudRobot
)
{
...
...
pcloud-service-book/src/main/java/com/pcloud/book/pcloudkeyword/dao/PcloudRobotDao.java
View file @
4be01c9b
...
...
@@ -9,6 +9,11 @@ import java.util.Map;
public
interface
PcloudRobotDao
extends
BaseDao
<
PcloudRobot
>
{
/**
* c++心跳程序自动修改真实状态
*/
void
updateRealStatus
(
String
wxId
,
Integer
realStatus
);
PcloudRobot
getByWxId
(
String
wxId
);
PcloudRobot
getPcloudRobotByType
(
Integer
robotType
);
...
...
pcloud-service-book/src/main/java/com/pcloud/book/pcloudkeyword/dao/impl/PcloudRobotDaoImpl.java
View file @
4be01c9b
package
com
.
pcloud
.
book
.
pcloudkeyword
.
dao
.
impl
;
import
com.google.common.collect.Maps
;
import
com.pcloud.book.pcloudKeyword.dto.RobotClassifyDTO
;
import
com.pcloud.book.pcloudkeyword.dao.PcloudRobotDao
;
import
com.pcloud.book.pcloudkeyword.entity.PcloudRobot
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -13,6 +16,14 @@ import java.util.Map;
public
class
PcloudRobotDaoImpl
extends
BaseDaoImpl
<
PcloudRobot
>
implements
PcloudRobotDao
{
@Override
public
void
updateRealStatus
(
String
wxId
,
Integer
realStatus
)
{
Map
<
String
,
Object
>
map
=
Maps
.
newHashMap
();
map
.
put
(
"realStatus"
,
realStatus
);
map
.
put
(
"wxId"
,
wxId
);
this
.
getSqlSession
().
update
(
"updateRealStatus"
,
map
);
}
@Override
public
PcloudRobot
getByWxId
(
String
wxId
)
{
return
super
.
getSqlSession
().
selectOne
(
getStatement
(
"getByWxId"
),
wxId
);
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/pcloudkeyword/entity/PcloudRobot.java
View file @
4be01c9b
...
...
@@ -44,6 +44,9 @@ public class PcloudRobot extends BaseEntity {
@ApiModelProperty
(
"状态:1 在线 2 离线"
)
private
Integer
state
;
@ApiModelProperty
(
"真实状态:1 在线 2 离线"
)
private
Integer
realStatus
;
@ApiModelProperty
(
"小号回复欢迎语"
)
private
List
<
PcloudRobotWelcome
>
robotWelcomeList
;
...
...
pcloud-service-book/src/main/resources/mapper/pcloudkeyword/PcloudRobot.Mapper.xml
View file @
4be01c9b
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"com.pcloud.book.pcloudkeyword.dao.impl.PcloudRobotDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"PcloudRobot"
>
<resultMap
id=
"BaseResultMap"
type=
"
com.pcloud.book.pcloudkeyword.entity.
PcloudRobot"
>
<id
column=
"id"
property=
"id"
jdbcType=
"INTEGER"
/>
<result
column=
"wx_id"
property=
"wxId"
jdbcType=
"VARCHAR"
/>
<result
column=
"nick_name"
property=
"nickName"
jdbcType=
"VARCHAR"
/>
...
...
@@ -10,12 +10,13 @@
<result
column=
"robot_type"
jdbcType=
"INTEGER"
property=
"robotType"
/>
<result
column=
"keyword_classify_id"
jdbcType=
"BIGINT"
property=
"keywordClassifyId"
/>
<result
column=
"state"
property=
"state"
jdbcType=
"INTEGER"
/>
<result
column=
"real_status"
property=
"realStatus"
jdbcType=
"INTEGER"
/>
<result
column=
"wake_up"
property=
"wakeUp"
jdbcType=
"INTEGER"
/>
<result
column=
"unique_number"
property=
"uniqueNumber"
jdbcType=
"VARCHAR"
/>
<result
column=
"welcome_duration"
property=
"welcomeDuration"
jdbcType=
"INTEGER"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, wx_id, nick_name, head, qrcode_url, robot_type, keyword_classify_id, state, wake_up, unique_number,welcome_duration
id, wx_id, nick_name, head, qrcode_url, robot_type, keyword_classify_id, state,
real_status,
wake_up, unique_number,welcome_duration
</sql>
<insert
id=
"insert"
parameterType=
"PcloudRobot"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
...
...
@@ -27,6 +28,7 @@
robot_type,
keyword_classify_id,
state,
real_status,
wake_up,
unique_number,
welcome_duration
...
...
@@ -39,6 +41,7 @@
#{robotType,jdbcType=INTEGER},
#{keywordClassifyId,jdbcType=BIGINT},
#{state,jdbcType=INTEGER},
#{realStatus,jdbcType=INTEGER},
#{wakeUp,jdbcType=INTEGER},
#{uniqueNumber, jdbcType=VARCHAR},
#{welcomeDuration, jdbcType=INTEGER}
...
...
@@ -69,6 +72,9 @@
<if
test=
"state != null"
>
state = #{state,jdbcType=INTEGER},
</if>
<if
test=
"realStatus != null"
>
real_status = #{realStatus,jdbcType=INTEGER},
</if>
<if
test=
"wakeUp != null"
>
wake_up = #{wakeUp,jdbcType=INTEGER},
</if>
...
...
@@ -103,6 +109,9 @@
<if
test=
"state != null"
>
state = #{state,jdbcType=INTEGER},
</if>
<if
test=
"realStatus != null"
>
real_status = #{realStatus,jdbcType=INTEGER},
</if>
<if
test=
"wakeUp != null"
>
wake_up = #{wakeUp,jdbcType=INTEGER},
</if>
...
...
@@ -122,6 +131,12 @@
where id=#{id}
</update>
<update
id=
"updateRealStatus"
parameterType=
"map"
>
update pcloud_robot set
real_status = #{realStatus}
where wx_id=#{wxId}
</update>
<select
id=
"getById"
parameterType=
"long"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from pcloud_robot where id=#{id}
...
...
@@ -136,6 +151,7 @@
r.qrcode_url qrcodeUrl,
r.robot_type robotType,
r.state state,
r.real_status realStatus,
r.unique_number uniqueNumber
FROM
pcloud_robot r
...
...
@@ -162,7 +178,7 @@
</select>
<select
id=
"getPcloudKeywordRobotIds"
resultType=
"string"
>
select wx_id from pcloud_robot where state = 1
select wx_id from pcloud_robot where state = 1
and real_status = 1
</select>
<select
id=
"getByRobotWxId"
parameterType=
"string"
resultMap=
"BaseResultMap"
>
...
...
@@ -182,6 +198,7 @@
from pcloud_robot
where robot_type = #{robotType}
and state = 1
and real_status = 1
limit 1
</select>
...
...
@@ -222,6 +239,8 @@
p.nick_name nickName,
p.robot_type classifyId,
p.unique_number uniqueNumber,
p.state state,
p.real_status realStatus,
pr.classify_name classifyName
from
pcloud_robot p
...
...
@@ -248,6 +267,7 @@
#{item}
</foreach>
and state = 1
and real_status = 1
</select>
<select
id=
"getRobotCountByClassifyId"
parameterType=
"long"
resultType=
"int"
>
...
...
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