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
688d5b89
Commit
688d5b89
authored
Dec 03, 2020
by
田超
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/1003917' into 'master'
feat: [1003917] 增加本书服务订阅更新机制 See merge request rays/pcloud-book!1086
parents
276f0c7d
1897f8b1
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
412 additions
and
68 deletions
+412
-68
AnswerSubscribeBizImpl.java
...m/pcloud/book/applet/biz/impl/AnswerSubscribeBizImpl.java
+122
-61
AnswerSubscribeAdviserDao.java
...com/pcloud/book/applet/dao/AnswerSubscribeAdviserDao.java
+32
-0
AnswerSubscribeDao.java
...n/java/com/pcloud/book/applet/dao/AnswerSubscribeDao.java
+16
-0
AnswerSubscribeAdviserDaoImpl.java
...d/book/applet/dao/impl/AnswerSubscribeAdviserDaoImpl.java
+29
-0
AnswerSubscribeDaoImpl.java
...m/pcloud/book/applet/dao/impl/AnswerSubscribeDaoImpl.java
+15
-0
AnswerSubscribeCountDto.java
...a/com/pcloud/book/applet/dto/AnswerSubscribeCountDto.java
+32
-0
AnswerSubscribe.java
...n/java/com/pcloud/book/applet/entity/AnswerSubscribe.java
+5
-0
AnswerSubscribeAdviser.java
...com/pcloud/book/applet/entity/AnswerSubscribeAdviser.java
+45
-0
AnswerSubscribeAdviserDao.xml
...ain/resources/mapper/applet/AnswerSubscribeAdviserDao.xml
+85
-0
AnswerSubscribeDao.xml
...k/src/main/resources/mapper/applet/AnswerSubscribeDao.xml
+31
-7
No files found.
pcloud-service-book/src/main/java/com/pcloud/book/applet/biz/impl/AnswerSubscribeBizImpl.java
View file @
688d5b89
package
com
.
pcloud
.
book
.
applet
.
biz
.
impl
;
import
com.pcloud.book.applet.biz.AnswerSubscribeBiz
;
import
com.pcloud.book.applet.
contants.AppletConstants
;
import
com.pcloud.book.applet.
dao.AnswerSubscribeAdviserDao
;
import
com.pcloud.book.applet.dao.AnswerSubscribeDao
;
import
com.pcloud.book.applet.dto.AnswerSubscribeCountDto
;
import
com.pcloud.book.applet.dto.AnswerSubscribeDTO
;
import
com.pcloud.book.applet.entity.AnswerSubscribe
;
import
com.pcloud.book.applet.entity.AnswerSubscribeAdviser
;
import
com.pcloud.book.applet.enums.AnswerSendStateEnum
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.book.biz.BookBiz
;
import
com.pcloud.book.book.dto.BookDto
;
import
com.pcloud.book.consumer.app.AppConsr
;
import
com.pcloud.book.consumer.message.TemplateConsr
;
import
com.pcloud.book.consumer.user.AdviserConsr
;
import
com.pcloud.book.group.biz.BookGroupBiz
;
import
com.pcloud.book.group.dto.BookServeDTO
;
import
com.pcloud.book.util.properties.BookProps
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.constant.SceneCode
;
import
com.pcloud.common.core.constant.SendType
;
import
com.pcloud.common.core.constant.SystemCode
;
import
com.pcloud.common.core.dto.AppletTemplateMessageDto
;
import
com.pcloud.common.enums.AppTypeEnum
;
import
com.pcloud.common.utils.DateUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.string.StringUtil
;
...
...
@@ -25,12 +29,10 @@ import org.springframework.beans.BeanUtils;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -53,6 +55,10 @@ public class AnswerSubscribeBizImpl implements AnswerSubscribeBiz {
private
BookGroupBiz
bookGroupBiz
;
@Autowired
private
BookBiz
bookBiz
;
@Autowired
private
AdviserConsr
adviserConsr
;
@Autowired
private
AnswerSubscribeAdviserDao
answerSubscribeAdviserDao
;
@Override
public
void
answerSubscribe
(
AnswerSubscribeDTO
answerSubscribeDTO
)
{
...
...
@@ -66,6 +72,8 @@ public class AnswerSubscribeBizImpl implements AnswerSubscribeBiz {
if
(!
ListUtils
.
isEmpty
(
list
))
{
return
;
}
List
<
BookServeDTO
>
serveIds
=
bookGroupBiz
.
getBookAndBookGroupServeIds
(
answerSubscribeDTO
.
getAdviserId
(),
answerSubscribeDTO
.
getBookId
(),
answerSubscribeDTO
.
getChannelId
());
answerSubscribe
.
setResourceCount
(
serveIds
.
size
());
answerSubscribeDao
.
insert
(
answerSubscribe
);
}
...
...
@@ -82,100 +90,133 @@ public class AnswerSubscribeBizImpl implements AnswerSubscribeBiz {
if
(!
ListUtils
.
isEmpty
(
list
))
{
state
=
true
;
}
Boolean
hasAnswer
=
hasAnswer
(
answerSubscribe
.
getBookId
(),
answerSubscribe
.
getAdviserId
(),
answerSubscribe
.
getChannelId
());
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"subscribeState"
,
state
);
map
.
put
(
"hasAnswer"
,
hasAnswer
);
return
map
;
}
private
Boolean
hasAnswer
(
Long
bookId
,
Long
adviserId
,
Long
channelId
){
//默认有答案
Boolean
hasAnswer
=
true
;
List
<
BookServeDTO
>
bookServeVOS
=
bookGroupBiz
.
getBookAndBookGroupServeIds
(
adviserId
,
bookId
,
channelId
);
bookGroupBiz
.
fillBookServe
(
bookServeVOS
);
bookGroupBiz
.
removeCanNotBuy
(
bookServeVOS
);
List
<
BookServeDTO
>
answerList
=
new
ArrayList
<>();
if
(!
ListUtils
.
isEmpty
(
bookServeVOS
)){
answerList
=
bookServeVOS
.
stream
().
filter
(
s
->
AppTypeEnum
.
ANSWER
.
value
.
equals
(
s
.
getFromType
())
||
s
.
getServeName
().
contains
(
"答案"
)).
collect
(
Collectors
.
toList
());
}
if
(
ListUtils
.
isEmpty
(
answerList
))
{
if
(
"pro"
.
equals
(
BookProps
.
getSystemEnv
())
&&
AppletConstants
.
NO_ANSWER_BOOK
.
contains
(
bookId
))
{
hasAnswer
=
false
;
}
else
if
(!
"pro"
.
equals
(
BookProps
.
getSystemEnv
())){
hasAnswer
=
false
;
}
}
return
hasAnswer
;
}
@Override
@ParamLog
(
"发送答案订阅小程序模板消息"
)
public
void
sendAppletMsg4Answer
()
{
//待发送消息的书刊
List
<
AnswerSubscribe
>
bookList
=
answerSubscribeDao
.
getBookBySendState
(
AnswerSendStateEnum
.
wait_send
.
code
);
if
(
ListUtils
.
isEmpty
(
bookList
))
{
return
;
}
if
(!
ListUtils
.
isEmpty
(
bookList
))
{
for
(
AnswerSubscribe
answerSubscribeBook
:
bookList
)
{
if
(
"pro"
.
equals
(
BookProps
.
getSystemEnv
())
&&
!
AppletConstants
.
NO_ANSWER_BOOK
.
contains
(
answerSubscribeBook
.
getBookId
()))
{
continue
;
}
Long
adviserId
=
answerSubscribeBook
.
getAdviserId
();
Long
channelId
=
answerSubscribeBook
.
getChannelId
()
;
Long
bookId
=
answerSubscribeBook
.
getBookId
();
AnswerSubscribe
subscribe
=
new
AnswerSubscribe
();
subscribe
.
setSendState
(
AnswerSendStateEnum
.
wait_send
.
code
);
subscribe
.
setBookId
(
answerSubscribeBook
.
getBookId
()
);
subscribe
.
setChannelId
(
answerSubscribeBook
.
getChannelId
()
);
subscribe
.
setAdviserId
(
answerSubscribeBook
.
getAdviserId
()
);
subscribe
.
setBookId
(
bookId
);
subscribe
.
setChannelId
(
channelId
);
subscribe
.
setAdviserId
(
adviserId
);
List
<
AnswerSubscribe
>
userList
=
answerSubscribeDao
.
getBySendStateAndBook
(
subscribe
);
if
(
ListUtils
.
isEmpty
(
userList
))
{
continue
;
}
BookDto
bookDto
=
bookBiz
.
getBaseById
(
answerSubscribeBook
.
getBookId
()
);
BookDto
bookDto
=
bookBiz
.
getBaseById
(
bookId
);
if
(
null
==
bookDto
)
{
continue
;
}
List
<
BookServeDTO
>
bookServeVOS
=
bookGroupBiz
.
getBookAndBookGroupServeIds
(
answerSubscribeBook
.
getAdviserId
(),
answerSubscribeBook
.
getBookId
(),
answerSubscribeBook
.
getChannelId
());
bookGroupBiz
.
fillBookServe
(
bookServeVOS
);
bookGroupBiz
.
removeCanNotBuy
(
bookServeVOS
);
if
(
ListUtils
.
isEmpty
(
bookServeVOS
)){
continue
;
}
List
<
BookServeDTO
>
answerList
=
bookServeVOS
.
stream
().
filter
(
s
->
AppTypeEnum
.
ANSWER
.
value
.
equals
(
s
.
getFromType
())
||
s
.
getServeName
().
contains
(
"答案"
)).
collect
(
Collectors
.
toList
());
if
(
ListUtils
.
isEmpty
(
answerList
))
{
List
<
BookServeDTO
>
serveIds
=
bookGroupBiz
.
getBookAndBookGroupServeIds
(
adviserId
,
bookId
,
channelId
);
if
(
ListUtils
.
isEmpty
(
serveIds
)){
continue
;
}
String
bookName
=
bookDto
.
getBookName
();
for
(
AnswerSubscribe
answerSubscribeUser
:
userList
)
{
sendAppletTemplateMsg
(
answerSubscribeUser
.
getWechatUserId
(),
answerSubscribeUser
.
getAccountSettingId
(),
bookDto
.
getBookName
(),
answerList
.
get
(
0
).
getServeName
());
//更新发送状态
Long
wechatUserId
=
answerSubscribeUser
.
getWechatUserId
();
if
(
serveIds
.
size
()
<=
answerSubscribeUser
.
getResourceCount
())
{
//资源无新增,改为订阅未发送状态
answerSubscribeUser
.
setSendState
(
AnswerSendStateEnum
.
subscribe
.
code
);
}
else
{
//资源有新增,发送消息
Long
accountSettingId
=
answerSubscribeUser
.
getAccountSettingId
();
if
(
BookProps
.
getMiniOfficialAccountsId
().
equals
(
accountSettingId
)){
//小程序消息
this
.
sendAppletTemplateMsg
(
wechatUserId
,
accountSettingId
,
bookName
);
}
else
{
//公众号消息
this
.
sendTemplate4Customer
(
channelId
,
wechatUserId
,
bookName
);
}
answerSubscribeUser
.
setSendState
(
AnswerSendStateEnum
.
has_send
.
code
);
}
answerSubscribeDao
.
updateSendState
(
answerSubscribeUser
);
}
}
}
//待发消息的编辑
List
<
AnswerSubscribeAdviser
>
adviserList
=
answerSubscribeAdviserDao
.
getRecord4Send
();
if
(!
ListUtils
.
isEmpty
(
adviserList
)){
for
(
AnswerSubscribeAdviser
answerSubscribeAdviser:
adviserList
){
AnswerSubscribe
subscribe
=
new
AnswerSubscribe
();
subscribe
.
setBookId
(
answerSubscribeAdviser
.
getBookId
());
subscribe
.
setChannelId
(
answerSubscribeAdviser
.
getChannelId
());
subscribe
.
setAdviserId
(
answerSubscribeAdviser
.
getAdviserId
());
Integer
userCount
=
answerSubscribeDao
.
getUserCountByBookAdviser
(
subscribe
);
BookDto
bookDto
=
bookBiz
.
getBaseById
(
answerSubscribeAdviser
.
getBookId
());
if
(
null
==
bookDto
)
{
continue
;
}
this
.
sendTemplateToAdviser
(
answerSubscribeAdviser
.
getAdviserId
(),
userCount
,
bookDto
.
getBookName
(),
answerSubscribeAdviser
.
getSendType
());
answerSubscribeAdviser
.
setSendState
(
1
);
answerSubscribeAdviserDao
.
update
(
answerSubscribeAdviser
);
}
}
}
@Override
@ParamLog
(
"检测
答案是否有提供
"
)
@ParamLog
(
"检测
服务是否有新增
"
)
public
void
checkAnswerUpdate
()
{
//已订阅的书
List
<
AnswerSubscribe
>
list
=
answerSubscribeDao
.
getBookBySendState
(
AnswerSendStateEnum
.
subscribe
.
code
);
if
(
ListUtils
.
isEmpty
(
list
)){
return
;
}
for
(
AnswerSubscribe
answerSubscribe:
list
){
Boolean
hasAnswer
=
hasAnswer
(
answerSubscribe
.
getBookId
(),
answerSubscribe
.
getAdviserId
(),
answerSubscribe
.
getChannelId
());
if
(
hasAnswer
){
if
(!
ListUtils
.
isEmpty
(
list
))
{
for
(
AnswerSubscribe
answerSubscribe
:
list
)
{
List
<
BookServeDTO
>
serveIds
=
bookGroupBiz
.
getBookAndBookGroupServeIds
(
answerSubscribe
.
getAdviserId
(),
answerSubscribe
.
getBookId
(),
answerSubscribe
.
getChannelId
());
if
(
serveIds
.
size
()
>
answerSubscribe
.
getResourceCount
())
{
answerSubscribe
.
setSendState
(
AnswerSendStateEnum
.
wait_send
.
code
);
answerSubscribeDao
.
updateSendState
(
answerSubscribe
);
}
}
}
//检查订阅人数,10人
List
<
AnswerSubscribeCountDto
>
countDtos
=
answerSubscribeDao
.
getSubscribeCount4Adviser
(
10
);
if
(!
ListUtils
.
isEmpty
(
countDtos
)){
for
(
AnswerSubscribeCountDto
dto:
countDtos
){
AnswerSubscribeAdviser
query
=
new
AnswerSubscribeAdviser
();
BeanUtils
.
copyProperties
(
dto
,
query
);
AnswerSubscribeAdviser
subscribeAdviser
=
answerSubscribeAdviserDao
.
queryAll
(
query
);
if
(
null
==
subscribeAdviser
){
query
.
setSendState
(
0
);
query
.
setSendType
(
10
);
answerSubscribeAdviserDao
.
insert
(
query
);
}
}
}
//50人
List
<
AnswerSubscribeCountDto
>
subscribeCountDtos
=
answerSubscribeDao
.
getSubscribeCount4Adviser
(
50
);
if
(!
ListUtils
.
isEmpty
(
subscribeCountDtos
))
{
for
(
AnswerSubscribeCountDto
dto
:
subscribeCountDtos
)
{
AnswerSubscribeAdviser
query
=
new
AnswerSubscribeAdviser
();
BeanUtils
.
copyProperties
(
dto
,
query
);
AnswerSubscribeAdviser
subscribeAdviser
=
answerSubscribeAdviserDao
.
queryAll
(
query
);
if
(
null
==
subscribeAdviser
)
{
query
.
setSendState
(
0
);
query
.
setSendType
(
50
);
answerSubscribeAdviserDao
.
insert
(
query
);
continue
;
}
if
(
subscribeAdviser
.
getSendState
()
==
1
&&
subscribeAdviser
.
getSendType
()
==
50
)
{
continue
;
}
subscribeAdviser
.
setSendState
(
0
);
subscribeAdviser
.
setSendType
(
50
);
answerSubscribeAdviserDao
.
update
(
subscribeAdviser
);
}
}
}
private
void
sendAppletTemplateMsg
(
Long
wechatUserId
,
Long
accountSettingId
,
String
bookName
,
String
appName
)
{
private
void
sendAppletTemplateMsg
(
Long
wechatUserId
,
Long
accountSettingId
,
String
bookName
)
{
bookName
=
bookName
.
length
()
>
13
?
bookName
.
substring
(
0
,
13
)
+
"..."
:
bookName
;
appName
=
appName
.
length
()
>
13
?
appName
.
substring
(
0
,
13
)
+
"..."
:
appName
;
AppletTemplateMessageDto
appletTemplateMessage
;
Map
<
String
,
String
>
tempMap
;
appletTemplateMessage
=
new
AppletTemplateMessageDto
();
...
...
@@ -184,12 +225,32 @@ public class AnswerSubscribeBizImpl implements AnswerSubscribeBiz {
appletTemplateMessage
.
setTempalteTypeCode
(
"xiaorui_content_update_remind"
);
appletTemplateMessage
.
setPage
(
"pages/customize/index"
);
tempMap
=
new
HashMap
<>();
tempMap
.
put
(
"thing4"
,
"
答案上架提醒
"
);
tempMap
.
put
(
"thing4"
,
"
书刊配套资源服务
"
);
tempMap
.
put
(
"thing10"
,
StringUtil
.
addBracket
(
bookName
));
tempMap
.
put
(
"thing9"
,
appName
);
tempMap
.
put
(
"thing9"
,
"本书有新的资源服务上架,是你想要的吗?"
);
tempMap
.
put
(
"date5"
,
DateUtils
.
formatDate
(
new
Date
(),
DateUtils
.
DATE_FORMAT_DATETIME
));
appletTemplateMessage
.
setData
(
tempMap
);
templateConsr
.
sendAppletMessageQueue
(
appletTemplateMessage
);
}
private
void
sendTemplateToAdviser
(
Long
adviserId
,
Integer
userCount
,
String
bookName
,
Integer
sendType
)
{
bookName
=
bookName
.
length
()
>
13
?
bookName
.
substring
(
0
,
13
)
+
"..."
:
bookName
;
Long
agentId
=
adviserConsr
.
getAgentIdByAdviser
(
adviserId
);
String
content
=
String
.
format
(
"已有"
+
sendType
+
"人订阅了本书服务更新,很多人关注本书,建议尽快上架新服务!"
);
Map
<
String
,
String
>
temParam
=
new
HashMap
<>();
temParam
.
put
(
"first"
,
content
);
temParam
.
put
(
"keyword1"
,
"订阅"
+
StringUtil
.
addBracket
(
bookName
));
temParam
.
put
(
"keyword2"
,
"累计"
+
userCount
+
"人订阅了本书服务更新"
);
temParam
.
put
(
"remark"
,
"如果有资源服务还没有上传,请尽快上传方便读者使用哦"
);
templateConsr
.
sendManage
(
SceneCode
.
PROJECT_TASK_SCENE
.
value
,
agentId
,
adviserId
,
SystemCode
.
adviser
.
code
,
null
,
temParam
,
SendType
.
SEND_BY_PARTY_ID
.
value
,
false
);
}
private
void
sendTemplate4Customer
(
Long
channelId
,
Long
wechatUserId
,
String
bookName
)
{
Map
<
String
,
String
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"first"
,
"本书有新的资源服务上架,看看是不是你想要的?"
);
paramMap
.
put
(
"keyword1"
,
StringUtil
.
addBracket
(
bookName
));
paramMap
.
put
(
"keyword2"
,
"书刊配套资源服务"
);
paramMap
.
put
(
"remark"
,
"再次扫描书上二维码,即可查看更新内容"
);
templateConsr
.
sendOperate
(
SceneCode
.
PROJECT_TASK_SCENE
.
value
,
channelId
,
wechatUserId
,
null
,
paramMap
,
SendType
.
SEND_BY_WECHAT_USER_ID
.
value
,
false
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/applet/dao/AnswerSubscribeAdviserDao.java
0 → 100644
View file @
688d5b89
package
com
.
pcloud
.
book
.
applet
.
dao
;
import
com.pcloud.book.applet.entity.AnswerSubscribeAdviser
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
/**
* 答案订阅-编辑发送记录(AnswerSubscribeAdviser)表数据库访问层
*
* @author makejava
* @since 2020-12-01 19:15:10
*/
public
interface
AnswerSubscribeAdviserDao
extends
BaseDao
<
AnswerSubscribeAdviser
>
{
/**
* 查询
* @author:zhuyajie
* @date:2020/12/1 19:34
* * @param null
*/
AnswerSubscribeAdviser
queryAll
(
AnswerSubscribeAdviser
answerSubscribeAdviser
);
/**
* 查询待发送记录
* @author:zhuyajie
* @date:2020/12/1 19:48
* * @param null
*/
List
<
AnswerSubscribeAdviser
>
getRecord4Send
();
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/applet/dao/AnswerSubscribeDao.java
View file @
688d5b89
package
com
.
pcloud
.
book
.
applet
.
dao
;
import
com.pcloud.book.applet.dto.AnswerSubscribeCountDto
;
import
com.pcloud.book.applet.entity.AnswerSubscribe
;
import
com.pcloud.common.core.dao.BaseDao
;
...
...
@@ -46,4 +47,18 @@ public interface AnswerSubscribeDao extends BaseDao<AnswerSubscribe>{
* * @param null
*/
List
<
AnswerSubscribe
>
getBookBySendState
(
Integer
sendState
);
/**
* 查编辑订阅人数
* @author:zhuyajie
* @date:2020/12/1 19:21
* * @param null
*/
List
<
AnswerSubscribeCountDto
>
getSubscribeCount4Adviser
(
Integer
limit
);
/**
* 查订阅人数
* @author:zhuyajie
* @date:2020/12/1 19:54
* * @param null
*/
Integer
getUserCountByBookAdviser
(
AnswerSubscribe
answerSubscribe
);
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/applet/dao/impl/AnswerSubscribeAdviserDaoImpl.java
0 → 100644
View file @
688d5b89
package
com
.
pcloud
.
book
.
applet
.
dao
.
impl
;
import
com.pcloud.book.applet.dao.AnswerSubscribeAdviserDao
;
import
com.pcloud.book.applet.entity.AnswerSubscribeAdviser
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
/**
* @ClassName com.pcloud.book.applet.dao.impl.AnswerSubscribeAdviserDaoImpl
* @Author zhuyajie
* @Description
* @Date 2020/12/1 19:17
* @Version 1.0
**/
@Component
public
class
AnswerSubscribeAdviserDaoImpl
extends
BaseDaoImpl
<
AnswerSubscribeAdviser
>
implements
AnswerSubscribeAdviserDao
{
@Override
public
AnswerSubscribeAdviser
queryAll
(
AnswerSubscribeAdviser
answerSubscribeAdviser
)
{
return
getSessionTemplate
().
selectOne
(
getStatement
(
"queryAll"
),
answerSubscribeAdviser
);
}
@Override
public
List
<
AnswerSubscribeAdviser
>
getRecord4Send
()
{
return
getSessionTemplate
().
selectList
(
getStatement
(
"getRecord4Send"
));
}
}
pcloud-service-book/src/main/java/com/pcloud/book/applet/dao/impl/AnswerSubscribeDaoImpl.java
View file @
688d5b89
package
com
.
pcloud
.
book
.
applet
.
dao
.
impl
;
import
com.pcloud.book.applet.dao.AnswerSubscribeDao
;
import
com.pcloud.book.applet.dto.AnswerSubscribeCountDto
;
import
com.pcloud.book.applet.entity.AnswerSubscribe
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @ClassName com.pcloud.book.applet.dao.impl.AnswerSubscribeDaoImpl
...
...
@@ -37,4 +40,16 @@ public class AnswerSubscribeDaoImpl extends BaseDaoImpl<AnswerSubscribe> impleme
public
List
<
AnswerSubscribe
>
getBookBySendState
(
Integer
sendState
)
{
return
getSessionTemplate
().
selectList
(
getStatement
(
"getBookBySendState"
),
sendState
);
}
@Override
public
List
<
AnswerSubscribeCountDto
>
getSubscribeCount4Adviser
(
Integer
limit
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"limit"
,
limit
);
return
getSessionTemplate
().
selectList
(
getStatement
(
"getSubscribeCount4Adviser"
),
map
);
}
@Override
public
Integer
getUserCountByBookAdviser
(
AnswerSubscribe
answerSubscribe
)
{
return
getSessionTemplate
().
selectOne
(
getStatement
(
"getUserCountByBookAdviser"
),
answerSubscribe
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/applet/dto/AnswerSubscribeCountDto.java
0 → 100644
View file @
688d5b89
package
com
.
pcloud
.
book
.
applet
.
dto
;
import
com.pcloud.common.dto.BaseDto
;
import
lombok.Data
;
/**
* @ClassName com.pcloud.book.applet.dto.AnswerSubscribeCountDto
* @Author zhuyajie
* @Description 订阅服务
* @Date 2020/12/1 19:18
* @Version 1.0
**/
@Data
public
class
AnswerSubscribeCountDto
extends
BaseDto
{
private
Integer
userCount
;
/**
* 书刊id
*/
private
Long
bookId
;
/**
* 渠道id
*/
private
Long
channelId
;
/**
* 编辑id
*/
private
Long
adviserId
;
}
pcloud-service-book/src/main/java/com/pcloud/book/applet/entity/AnswerSubscribe.java
View file @
688d5b89
...
...
@@ -49,5 +49,9 @@ public class AnswerSubscribe extends BaseEntity {
* 公众号id
*/
private
Long
accountSettingId
;
/**
* 当前资源数量
*/
private
Integer
resourceCount
;
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/applet/entity/AnswerSubscribeAdviser.java
0 → 100644
View file @
688d5b89
package
com
.
pcloud
.
book
.
applet
.
entity
;
import
com.pcloud.common.entity.BaseEntity
;
import
java.util.Date
;
import
java.io.Serializable
;
import
lombok.Data
;
/**
* 答案订阅-编辑发送记录(AnswerSubscribeAdviser)实体类
*
* @author makejava
* @since 2020-12-01 19:15:10
*/
@Data
public
class
AnswerSubscribeAdviser
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
441706888820089566L
;
/**
* 主键
*/
private
Long
id
;
/**
* 发送状态(0/1)
*/
private
Integer
sendState
;
/**
* 发送类型(10人发/50人发)
*/
private
Integer
sendType
;
/**
* 书刊id
*/
private
Long
bookId
;
/**
* 渠道id
*/
private
Long
channelId
;
/**
* 编辑id
*/
private
Long
adviserId
;
}
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/applet/AnswerSubscribeAdviserDao.xml
0 → 100644
View file @
688d5b89
<?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.applet.dao.impl.AnswerSubscribeAdviserDaoImpl"
>
<resultMap
type=
"com.pcloud.book.applet.entity.AnswerSubscribeAdviser"
id=
"AnswerSubscribeAdviserMap"
>
<result
property=
"id"
column=
"id"
jdbcType=
"INTEGER"
/>
<result
property=
"adviserId"
column=
"adviser_id"
jdbcType=
"INTEGER"
/>
<result
property=
"sendState"
column=
"send_state"
jdbcType=
"INTEGER"
/>
<result
property=
"sendType"
column=
"send_type"
jdbcType=
"INTEGER"
/>
<result
property=
"createTime"
column=
"create_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"updateTime"
column=
"update_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"bookId"
column=
"book_id"
jdbcType=
"INTEGER"
/>
<result
property=
"channelId"
column=
"channel_id"
jdbcType=
"INTEGER"
/>
</resultMap>
<!--查询单个-->
<select
id=
"getById"
resultMap=
"AnswerSubscribeAdviserMap"
>
select
id, adviser_id, send_state, send_type, create_time, update_time, book_id, channel_id
from book.answer_subscribe_adviser
where id = #{id}
</select>
<!--通过实体作为筛选条件查询-->
<select
id=
"queryAll"
resultMap=
"AnswerSubscribeAdviserMap"
>
select
id, adviser_id, send_state, send_type, create_time, update_time, book_id, channel_id
from book.answer_subscribe_adviser
<where>
<if
test=
"adviserId != null"
>
and adviser_id = #{adviserId}
</if>
<if
test=
"bookId != null"
>
and book_id = #{bookId}
</if>
<if
test=
"channelId != null"
>
and channel_id = #{channelId}
</if>
<if
test=
"sendState != null"
>
and send_state = #{sendState}
</if>
<if
test=
"sendType != null"
>
and send_type = #{sendType}
</if>
</where>
limit 1
</select>
<!--新增所有列-->
<insert
id=
"insert"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
insert into book.answer_subscribe_adviser(adviser_id, send_state, send_type, create_time, update_time,book_id, channel_id)
values (#{adviserId}, #{sendState}, #{sendType}, now(), now(), #{bookId}, #{channelId})
</insert>
<!--通过主键修改数据-->
<update
id=
"update"
>
update book.answer_subscribe_adviser
<set>
<if
test=
"sendState != null"
>
send_state = #{sendState},
</if>
<if
test=
"sendType != null"
>
send_type = #{sendType},
</if>
update_time = now(),
</set>
where id = #{id}
</update>
<!--通过主键删除-->
<delete
id=
"deleteById"
>
delete from book.answer_subscribe_adviser where id = #{id}
</delete>
<select
id=
"getRecord4Send"
resultMap=
"AnswerSubscribeAdviserMap"
>
select
id, adviser_id, send_state, send_type, create_time, update_time, book_id, channel_id
from book.answer_subscribe_adviser
WHERE send_state = 0
GROUP BY
book_id, channel_id, adviser_id
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/applet/AnswerSubscribeDao.xml
View file @
688d5b89
...
...
@@ -12,17 +12,18 @@
<result
property=
"accountSettingId"
column=
"account_setting_id"
jdbcType=
"INTEGER"
/>
<result
property=
"createTime"
column=
"create_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"updateTime"
column=
"update_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"resourceCount"
column=
"resource_count"
jdbcType=
"INTEGER"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, wechat_user_id, book_id, channel_id, adviser_id, send_state, account_setting_id, create_time, update_time
id, wechat_user_id, book_id, channel_id, adviser_id, send_state, account_setting_id, create_time, update_time
, resource_count
</sql>
<!--新增所有列-->
<insert
id=
"insert"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
insert into book.answer_subscribe(wechat_user_id, book_id, channel_id, adviser_id, send_state,
account_setting_id, create_time, update_time)
values (#{wechatUserId}, #{bookId}, #{channelId}, #{adviserId}, 0, #{accountSettingId}, NOW(), NOW())
account_setting_id, create_time, update_time
, resource_count
)
values (#{wechatUserId}, #{bookId}, #{channelId}, #{adviserId}, 0, #{accountSettingId}, NOW(), NOW()
, #{resourceCount}
)
</insert>
...
...
@@ -57,14 +58,36 @@
and adviser_id = #{adviserId}
</select>
<select
id=
"getBookBySendState"
result
Type=
"com.pcloud.book.applet.entity.AnswerSubscribe
"
parameterType=
"integer"
>
<select
id=
"getBookBySendState"
result
Map=
"AnswerSubscribeMap
"
parameterType=
"integer"
>
SELECT
book_id bookId,
channel_id channelId,
adviser_id adviserId
<include
refid=
"Base_Column_List"
/>
FROM book.answer_subscribe
WHERE send_state = #{sendState}
group by book_id, channel_id, adviser_id
</select>
<select
id=
"getSubscribeCount4Adviser"
parameterType=
"map"
resultType=
"com.pcloud.book.applet.dto.AnswerSubscribeCountDto"
>
SELECT
adviser_id adviserId,
COUNT(DISTINCT wechat_user_id) userCount,
book_id bookId,
channel_id channelId
FROM
answer_subscribe
WHERE
1=1
GROUP BY
book_id, channel_id, adviser_id
HAVING
COUNT(DISTINCT wechat_user_id) >= #{limit}
</select>
<select
id=
"getUserCountByBookAdviser"
resultType=
"integer"
parameterType=
"com.pcloud.book.applet.entity.AnswerSubscribe"
>
SELECT COUNT(DISTINCT wechat_user_id)
FROM book.answer_subscribe
WHERE book_id = #{bookId}
and channel_id = #{channelId}
and adviser_id = #{adviserId}
</select>
</mapper>
\ 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