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
eda95919
Commit
eda95919
authored
Feb 06, 2020
by
阮思源
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feat-1002185' into 'master'
个人号共读活动 See merge request rays/pcloud-book!351
parents
cac7a5f7
1cbcb00f
Show whitespace changes
Inline
Side-by-side
Showing
82 changed files
with
4465 additions
and
142 deletions
+4465
-142
ReadingActivityConstant.java
...pcloud/book/reading/constant/ReadingActivityConstant.java
+36
-0
AssignGroupDTO.java
...main/java/com/pcloud/book/reading/dto/AssignGroupDTO.java
+24
-0
ReadingActivityService.java
...m/pcloud/book/reading/service/ReadingActivityService.java
+40
-0
pom.xml
pcloud-service-book/pom.xml
+10
-0
AdvertisingBrandDao.java
.../com/pcloud/book/advertising/dao/AdvertisingBrandDao.java
+6
-0
AdvertisingBrandDaoImpl.java
...ud/book/advertising/dao/impl/AdvertisingBrandDaoImpl.java
+7
-0
BookBiz.java
...-book/src/main/java/com/pcloud/book/book/biz/BookBiz.java
+1
-1
BookBizImpl.java
.../main/java/com/pcloud/book/book/biz/impl/BookBizImpl.java
+5
-1
BookFacade.java
...src/main/java/com/pcloud/book/book/facade/BookFacade.java
+4
-0
BookFacadeImpl.java
...java/com/pcloud/book/book/facade/impl/BookFacadeImpl.java
+6
-2
WechatGroupConsr.java
...om/pcloud/book/consumer/wechatgroup/WechatGroupConsr.java
+11
-0
BookGroupBiz.java
...src/main/java/com/pcloud/book/group/biz/BookGroupBiz.java
+7
-0
GroupQrcodeBiz.java
...c/main/java/com/pcloud/book/group/biz/GroupQrcodeBiz.java
+4
-0
BookGroupBizImpl.java
...java/com/pcloud/book/group/biz/impl/BookGroupBizImpl.java
+32
-0
GroupQrcodeBizImpl.java
...va/com/pcloud/book/group/biz/impl/GroupQrcodeBizImpl.java
+11
-0
BookBusinessConstants.java
...com/pcloud/book/group/constant/BookBusinessConstants.java
+28
-0
BookGroupCipherUserDao.java
...ava/com/pcloud/book/group/dao/BookGroupCipherUserDao.java
+22
-0
GroupQrcodeDao.java
...c/main/java/com/pcloud/book/group/dao/GroupQrcodeDao.java
+5
-0
BookGroupCipherUserDaoImpl.java
...cloud/book/group/dao/impl/BookGroupCipherUserDaoImpl.java
+18
-0
GroupQrcodeDaoImpl.java
...va/com/pcloud/book/group/dao/impl/GroupQrcodeDaoImpl.java
+5
-0
UserSelectParamDTO.java
...in/java/com/pcloud/book/group/dto/UserSelectParamDTO.java
+5
-0
BookGroupFacade.java
...in/java/com/pcloud/book/group/facade/BookGroupFacade.java
+5
-0
BookGroupFacadeImpl.java
...om/pcloud/book/group/facade/impl/BookGroupFacadeImpl.java
+12
-1
GroupSet.java
...ook/src/main/java/com/pcloud/book/group/set/GroupSet.java
+89
-0
SendSelfMsgTools.java
...in/java/com/pcloud/book/group/tools/SendSelfMsgTools.java
+0
-115
RobotBaseInfoVO.java
...c/main/java/com/pcloud/book/group/vo/RobotBaseInfoVO.java
+35
-0
UserBookInfoItemVO.java
...ain/java/com/pcloud/book/group/vo/UserBookInfoItemVO.java
+41
-0
UserBookInfoVO.java
...rc/main/java/com/pcloud/book/group/vo/UserBookInfoVO.java
+4
-0
BookGuideBizImpl.java
...a/com/pcloud/book/keywords/biz/impl/BookGuideBizImpl.java
+1
-2
BookKeywordBizImpl.java
...com/pcloud/book/keywords/biz/impl/BookKeywordBizImpl.java
+10
-13
AddWxGroupListener.java
...ain/java/com/pcloud/book/mq/topic/AddWxGroupListener.java
+4
-0
WxGroupSendTextListener.java
...ava/com/pcloud/book/mq/topic/WxGroupSendTextListener.java
+5
-3
SelfPushBizImpl.java
...n/java/com/pcloud/book/push/biz/impl/SelfPushBizImpl.java
+3
-4
ReadingActivityBiz.java
.../java/com/pcloud/book/reading/biz/ReadingActivityBiz.java
+98
-0
ReadingActivityBizImpl.java
.../pcloud/book/reading/biz/impl/ReadingActivityBizImpl.java
+1149
-0
ParamCheck.java
...c/main/java/com/pcloud/book/reading/check/ParamCheck.java
+199
-0
BookGroupCollectionDao.java
...a/com/pcloud/book/reading/dao/BookGroupCollectionDao.java
+16
-0
ReadingActivityDao.java
.../java/com/pcloud/book/reading/dao/ReadingActivityDao.java
+46
-0
ReadingGroupCreateDao.java
...va/com/pcloud/book/reading/dao/ReadingGroupCreateDao.java
+13
-0
ReadingGroupDao.java
...ain/java/com/pcloud/book/reading/dao/ReadingGroupDao.java
+56
-0
ReadingGroupRobotDao.java
...ava/com/pcloud/book/reading/dao/ReadingGroupRobotDao.java
+65
-0
ReadingInviteDao.java
...in/java/com/pcloud/book/reading/dao/ReadingInviteDao.java
+28
-0
ReadingUserDao.java
...main/java/com/pcloud/book/reading/dao/ReadingUserDao.java
+49
-0
BookGroupCollectionDaoImpl.java
...oud/book/reading/dao/impl/BookGroupCollectionDaoImpl.java
+17
-0
ReadingActivityDaoImpl.java
.../pcloud/book/reading/dao/impl/ReadingActivityDaoImpl.java
+52
-0
ReadingGroupCreateDaoImpl.java
...loud/book/reading/dao/impl/ReadingGroupCreateDaoImpl.java
+21
-0
ReadingGroupDaoImpl.java
...com/pcloud/book/reading/dao/impl/ReadingGroupDaoImpl.java
+58
-0
ReadingGroupRobotDaoImpl.java
...cloud/book/reading/dao/impl/ReadingGroupRobotDaoImpl.java
+65
-0
ReadingInviteDaoImpl.java
...om/pcloud/book/reading/dao/impl/ReadingInviteDaoImpl.java
+29
-0
ReadingUserDaoImpl.java
.../com/pcloud/book/reading/dao/impl/ReadingUserDaoImpl.java
+61
-0
ActivityUserBookDTO.java
...java/com/pcloud/book/reading/dto/ActivityUserBookDTO.java
+22
-0
ActivityUserCountDTO.java
...ava/com/pcloud/book/reading/dto/ActivityUserCountDTO.java
+19
-0
GroupingUserDTO.java
...ain/java/com/pcloud/book/reading/dto/GroupingUserDTO.java
+36
-0
ReadingActivityAdditionParamDTO.java
...oud/book/reading/dto/ReadingActivityAdditionParamDTO.java
+54
-0
ReadingActivityBaseParamDTO.java
.../pcloud/book/reading/dto/ReadingActivityBaseParamDTO.java
+89
-0
ReadingActivityDTO.java
.../java/com/pcloud/book/reading/dto/ReadingActivityDTO.java
+169
-0
UserBaseDTO.java
...rc/main/java/com/pcloud/book/reading/dto/UserBaseDTO.java
+35
-0
BookGroupCollection.java
...a/com/pcloud/book/reading/entity/BookGroupCollection.java
+39
-0
ReadingActivity.java
.../java/com/pcloud/book/reading/entity/ReadingActivity.java
+120
-0
ReadingGroup.java
...ain/java/com/pcloud/book/reading/entity/ReadingGroup.java
+35
-0
ReadingGroupCreate.java
...va/com/pcloud/book/reading/entity/ReadingGroupCreate.java
+58
-0
ReadingGroupRobot.java
...ava/com/pcloud/book/reading/entity/ReadingGroupRobot.java
+43
-0
ReadingInvite.java
...in/java/com/pcloud/book/reading/entity/ReadingInvite.java
+47
-0
ReadingUser.java
...main/java/com/pcloud/book/reading/entity/ReadingUser.java
+35
-0
ContentTypeEnum.java
...n/java/com/pcloud/book/reading/enums/ContentTypeEnum.java
+25
-0
JoinConditionEnum.java
...java/com/pcloud/book/reading/enums/JoinConditionEnum.java
+30
-0
JoinStateEnum.java
...ain/java/com/pcloud/book/reading/enums/JoinStateEnum.java
+25
-0
JoinTypeEnum.java
...main/java/com/pcloud/book/reading/enums/JoinTypeEnum.java
+25
-0
ReadingActivityFacade.java
...com/pcloud/book/reading/facade/ReadingActivityFacade.java
+119
-0
ReadingActivityServiceImpl.java
...book/reading/service/impl/ReadingActivityServiceImpl.java
+78
-0
generatorConfig.xml
pcloud-service-book/src/main/resources/generatorConfig.xml
+43
-0
AdvertisingBrandMapper.xml
...n/resources/mapper/advertising/AdvertisingBrandMapper.xml
+12
-0
Book.Mapper.xml
...rvice-book/src/main/resources/mapper/book/Book.Mapper.xml
+12
-0
BookGroupCipherUser.xml
...k/src/main/resources/mapper/group/BookGroupCipherUser.xml
+82
-0
GroupQrcode.Mapper.xml
...ok/src/main/resources/mapper/group/GroupQrcode.Mapper.xml
+8
-0
BookGroupCollectionDao.xml
.../main/resources/mapper/reading/BookGroupCollectionDao.xml
+86
-0
ReadingActivityMapper.xml
...c/main/resources/mapper/reading/ReadingActivityMapper.xml
+231
-0
ReadingGroupCreateMapper.xml
...ain/resources/mapper/reading/ReadingGroupCreateMapper.xml
+34
-0
ReadingGroupMapper.xml
.../src/main/resources/mapper/reading/ReadingGroupMapper.xml
+89
-0
ReadingGroupRobotMapper.xml
...main/resources/mapper/reading/ReadingGroupRobotMapper.xml
+106
-0
ReadingInviteMapper.xml
...src/main/resources/mapper/reading/ReadingInviteMapper.xml
+44
-0
ReadingUserMapper.xml
...k/src/main/resources/mapper/reading/ReadingUserMapper.xml
+97
-0
No files found.
pcloud-facade-book/src/main/java/com/pcloud/book/reading/constant/ReadingActivityConstant.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
constant
;
/**
* @描述:共读活动
* @作者:zhuyajie
* @创建时间:15:46 2020/1/15
* @版本:1.0
*/
public
class
ReadingActivityConstant
{
/**
* 定时器类型名称
*/
public
static
final
String
JOB_GROUP
=
"readingActivity"
;
/**
* 邀请语-定时器方法名
*/
public
static
final
String
JOB_NAME_INVITE
=
"sendInvite"
;
/**
* 开场语-定时器方法名
*/
public
static
final
String
JOB_NAME_START
=
"sendStart"
;
/**
* 结束语-定时器方法名
*/
public
static
final
String
JOB_NAME_END
=
"sendEnd"
;
/**
* 打卡每日提醒-定时器方法名
*/
public
static
final
String
JOB_NAME_CLOCK_REMIND
=
"sendClockRemind"
;
}
pcloud-facade-book/src/main/java/com/pcloud/book/reading/dto/AssignGroupDTO.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dto
;
import
com.pcloud.common.dto.BaseDto
;
import
lombok.Data
;
/**
* @描述:分配群的参数
* @作者:zhuyajie
* @创建时间:13:53 2020/1/20
* @版本:1.0
*/
@Data
public
class
AssignGroupDTO
extends
BaseDto
{
/**
* 群id
*/
private
String
wxGroupId
;
/**
* 群主小号
*/
private
String
masterId
;
}
pcloud-facade-book/src/main/java/com/pcloud/book/reading/service/ReadingActivityService.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
service
;
import
io.swagger.annotations.ApiParam
;
import
org.springframework.cloud.netflix.feign.FeignClient
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
java.util.Map
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
/**
* @描述:共读活动
* @作者:zhuyajie
* @创建时间:15:45 2020/1/15
* @版本:1.0
*/
@FeignClient
(
value
=
"pcloud-service-book"
,
qualifier
=
"readingActivityServiceCloud"
,
path
=
"book/v1.0/readingActivityService"
)
@Api
(
description
=
"共读活动内部服务"
)
public
interface
ReadingActivityService
{
@ApiOperation
(
value
=
"定时任务发邀请语"
,
httpMethod
=
"POST"
)
@PostMapping
(
"/sendInviteMsg"
)
public
void
sendInviteMsg
(
@RequestBody
@ApiParam
Map
<
String
,
Object
>
map
);
@ApiOperation
(
value
=
"定时任务发开场语"
,
httpMethod
=
"POST"
)
@PostMapping
(
"/sendStartMsg"
)
public
void
sendStartMsg
(
@RequestBody
@ApiParam
Map
<
String
,
Object
>
map
);
@ApiOperation
(
value
=
"定时任务发结束语"
,
httpMethod
=
"POST"
)
@PostMapping
(
"/sendEndMsg"
)
public
void
sendEndMsg
(
@RequestBody
@ApiParam
Map
<
String
,
Object
>
map
);
@ApiOperation
(
value
=
"定时任务发打卡每日提醒"
,
httpMethod
=
"POST"
)
@PostMapping
(
"/sendClockRemind"
)
public
void
sendClockRemind
(
@RequestBody
@ApiParam
Map
<
String
,
Object
>
map
);
}
pcloud-service-book/pom.xml
View file @
eda95919
...
...
@@ -285,6 +285,16 @@
<skip>
true
</skip>
</configuration>
</plugin>
<plugin>
<groupId>
org.mybatis.generator
</groupId>
<artifactId>
mybatis-generator-maven-plugin
</artifactId>
<version>
1.3.2
</version>
<configuration>
<verbose>
true
</verbose>
<overwrite>
true
</overwrite>
</configuration>
</plugin>
</plugins>
</build>
</project>
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dao/AdvertisingBrandDao.java
View file @
eda95919
...
...
@@ -5,6 +5,7 @@ import com.pcloud.book.advertising.entity.AdvertisingBrand;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
import
java.util.Map
;
/**
* @描述:广告品牌方
...
...
@@ -67,4 +68,9 @@ public interface AdvertisingBrandDao extends BaseDao<AdvertisingBrand> {
* @return
*/
AdvertisingBrand
getLoginInfo
(
String
loginName
);
/**
* 根据id集合获取
*/
Map
<
Long
,
AdvertisingBrand
>
getMapByIds
(
List
<
Long
>
brandIds
);
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dao/impl/AdvertisingBrandDaoImpl.java
View file @
eda95919
...
...
@@ -61,4 +61,11 @@ public class AdvertisingBrandDaoImpl extends BaseDaoImpl<AdvertisingBrand> imple
map
.
put
(
"loginName"
,
loginName
);
return
getSessionTemplate
().
selectOne
(
getStatement
(
"getLoginInfo"
),
map
);
}
@Override
public
Map
<
Long
,
AdvertisingBrand
>
getMapByIds
(
List
<
Long
>
brandIds
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"brandIds"
,
brandIds
);
return
getSessionTemplate
().
selectMap
(
getStatement
(
"getMapByIds"
),
map
,
"id"
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/biz/BookBiz.java
View file @
eda95919
...
...
@@ -587,7 +587,7 @@ public interface BookBiz {
* @param adviserId
* @return
*/
PageBeanNew
<
AdviserBookInfoDTO
>
getListPage4SelfBookGroup
(
Integer
currentPage
,
Integer
numPerPage
,
String
name
,
Long
adviser
Id
);
PageBeanNew
<
AdviserBookInfoDTO
>
getListPage4SelfBookGroup
(
Integer
currentPage
,
Integer
numPerPage
,
String
name
,
Long
adviserId
,
Long
graLabelId
,
Long
subLabelId
,
Long
verLabelId
,
Long
areaLabel
Id
);
/**
* 获取书籍标签
...
...
pcloud-service-book/src/main/java/com/pcloud/book/book/biz/impl/BookBizImpl.java
View file @
eda95919
...
...
@@ -1778,7 +1778,7 @@ public class BookBizImpl implements BookBiz {
}
@Override
public
PageBeanNew
<
AdviserBookInfoDTO
>
getListPage4SelfBookGroup
(
Integer
currentPage
,
Integer
numPerPage
,
String
name
,
Long
adviserId
)
{
public
PageBeanNew
<
AdviserBookInfoDTO
>
getListPage4SelfBookGroup
(
Integer
currentPage
,
Integer
numPerPage
,
String
name
,
Long
adviserId
,
Long
graLabelId
,
Long
subLabelId
,
Long
verLabelId
,
Long
areaLabelId
)
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
if
(!
StringUtil
.
isEmpty
(
name
))
{
paramMap
.
put
(
"name"
,
name
);
...
...
@@ -1787,6 +1787,10 @@ public class BookBizImpl implements BookBiz {
paramMap
.
put
(
"adviserId"
,
adviserId
);
}
paramMap
.
put
(
"joinGroupTypes"
,
Arrays
.
asList
(
JoinGroupTypeEnum
.
ROBOT
.
getCode
(),
JoinGroupTypeEnum
.
AI_ROBOT
.
getCode
()));
paramMap
.
put
(
"graLabelId"
,
graLabelId
);
paramMap
.
put
(
"subLabelId"
,
subLabelId
);
paramMap
.
put
(
"verLabelId"
,
verLabelId
);
paramMap
.
put
(
"areaLabelId"
,
areaLabelId
);
PageBeanNew
<
AdviserBookInfoDTO
>
pageBean
=
bookDao
.
listPageNew
(
new
PageParam
(
currentPage
,
numPerPage
),
paramMap
,
"getListPage4BookGroup"
);
if
(
null
==
pageBean
||
ListUtils
.
isEmpty
(
pageBean
.
getRecordList
()))
{
return
new
PageBeanNew
<>(
currentPage
,
numPerPage
,
0
,
new
ArrayList
<>());
...
...
pcloud-service-book/src/main/java/com/pcloud/book/book/facade/BookFacade.java
View file @
eda95919
...
...
@@ -610,6 +610,10 @@ public interface BookFacade {
public
ResponseDto
<
PageBeanNew
<
AdviserBookInfoDTO
>>
getListPage4SelfBookGroup
(
@RequestHeader
(
"token"
)
String
token
,
@RequestParam
(
value
=
"name"
,
required
=
false
)
String
name
,
@RequestParam
(
value
=
"graLabelId"
,
required
=
false
)
Long
graLabelId
,
@RequestParam
(
value
=
"subLabelId"
,
required
=
false
)
Long
subLabelId
,
@RequestParam
(
value
=
"verLabelId"
,
required
=
false
)
Long
verLabelId
,
@RequestParam
(
value
=
"areaLabelId"
,
required
=
false
)
Long
areaLabelId
,
@RequestParam
(
value
=
"currentPage"
,
required
=
false
)
Integer
currentPage
,
@RequestParam
(
value
=
"numPerPage"
,
required
=
false
)
Integer
numPerPage
)
throws
BizException
,
PermissionException
;
...
...
pcloud-service-book/src/main/java/com/pcloud/book/book/facade/impl/BookFacadeImpl.java
View file @
eda95919
...
...
@@ -824,6 +824,10 @@ public class BookFacadeImpl implements BookFacade {
public
ResponseDto
<
PageBeanNew
<
AdviserBookInfoDTO
>>
getListPage4SelfBookGroup
(
@RequestHeader
(
"token"
)
String
token
,
@RequestParam
(
value
=
"name"
,
required
=
false
)
String
name
,
@RequestParam
(
value
=
"graLabelId"
,
required
=
false
)
Long
graLabelId
,
@RequestParam
(
value
=
"subLabelId"
,
required
=
false
)
Long
subLabelId
,
@RequestParam
(
value
=
"verLabelId"
,
required
=
false
)
Long
verLabelId
,
@RequestParam
(
value
=
"areaLabelId"
,
required
=
false
)
Long
areaLabelId
,
@RequestParam
(
value
=
"currentPage"
,
required
=
false
)
Integer
currentPage
,
@RequestParam
(
value
=
"numPerPage"
,
required
=
false
)
Integer
numPerPage
)
throws
BizException
,
PermissionException
{
...
...
@@ -831,7 +835,7 @@ public class BookFacadeImpl implements BookFacade {
if
(
currentPage
==
null
||
numPerPage
==
null
||
currentPage
<
0
||
numPerPage
<
0
)
{
throw
BookBizException
.
PAGE_PARAM_DELETION
;
}
PageBeanNew
<
AdviserBookInfoDTO
>
pageBean
=
bookBiz
.
getListPage4SelfBookGroup
(
currentPage
,
numPerPage
,
name
,
null
);
PageBeanNew
<
AdviserBookInfoDTO
>
pageBean
=
bookBiz
.
getListPage4SelfBookGroup
(
currentPage
,
numPerPage
,
name
,
null
,
graLabelId
,
subLabelId
,
verLabelId
,
areaLabelId
);
return
new
ResponseDto
<>(
null
==
pageBean
?
new
PageBeanNew
<>()
:
pageBean
);
}
...
...
@@ -847,7 +851,7 @@ public class BookFacadeImpl implements BookFacade {
if
(
currentPage
==
null
||
numPerPage
==
null
||
currentPage
<
0
||
numPerPage
<
0
)
{
throw
BookBizException
.
PAGE_PARAM_DELETION
;
}
PageBeanNew
<
AdviserBookInfoDTO
>
pageBean
=
bookBiz
.
getListPage4SelfBookGroup
(
currentPage
,
numPerPage
,
name
,
adviserId
);
PageBeanNew
<
AdviserBookInfoDTO
>
pageBean
=
bookBiz
.
getListPage4SelfBookGroup
(
currentPage
,
numPerPage
,
name
,
adviserId
,
null
,
null
,
null
,
null
);
return
new
ResponseDto
<>(
null
==
pageBean
?
new
PageBeanNew
<>()
:
pageBean
);
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/consumer/wechatgroup/WechatGroupConsr.java
View file @
eda95919
...
...
@@ -597,4 +597,15 @@ public class WechatGroupConsr {
}
return
map
;
}
@ParamLog
(
"根据小号类型获取小号id"
)
public
List
<
String
>
getSelfRobotByRobotType
(
Integer
robotType
)
{
List
<
String
>
ids
=
new
ArrayList
<>();
try
{
ids
=
ResponseHandleUtil
.
parseList
(
selfRobotService
.
getSelfRobotByRobotType
(
robotType
),
String
.
class
);
}
catch
(
Exception
e
){
log
.
error
(
"[selfRobotService.getSelfRobotByRobotType]调用失败"
+
e
.
getMessage
(),
e
);
}
return
ids
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/BookGroupBiz.java
View file @
eda95919
...
...
@@ -759,4 +759,11 @@ public interface BookGroupBiz {
* @return
*/
SelfRobotBookGroupDTO
getSelfRobotBookGroupInfoByUser
(
String
wxUserId
,
Long
bookGroupId
);
/**
* 共读活动-好友列表
* @param userSelectParamDTO
* @return
*/
PageBeanNew
<
UserBookInfoVO
>
listUser4ReadingActivity
(
UserSelectParamDTO
userSelectParamDTO
);
}
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/GroupQrcodeBiz.java
View file @
eda95919
...
...
@@ -25,6 +25,10 @@ import java.util.Map;
public
interface
GroupQrcodeBiz
{
/**
* 获取群人数
*/
Map
<
String
,
Integer
>
getGroupUserNum
(
List
<
String
>
wxGroups
);
/**
* 根据Server获取相关的群id
* @param serverId
* @return
...
...
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/impl/BookGroupBizImpl.java
View file @
eda95919
...
...
@@ -104,6 +104,7 @@ import com.pcloud.book.keywords.dao.BookKeywordDao;
import
com.pcloud.book.keywords.dto.KeywordDTO
;
import
com.pcloud.book.keywords.enums.ReplyTypeEnum
;
import
com.pcloud.book.keywords.vo.ListKeywordVO
;
import
com.pcloud.book.reading.dao.ReadingUserDao
;
import
com.pcloud.book.util.common.ThreadPoolUtils
;
import
com.pcloud.channelcenter.base.constants.ChannelConstants
;
import
com.pcloud.channelcenter.qrcode.dto.GroupQrcodeVO
;
...
...
@@ -311,6 +312,8 @@ public class BookGroupBizImpl implements BookGroupBiz {
private
BookGroupFriendGuideDao
bookGroupFriendGuideDao
;
@Autowired
private
ResourceConsr
resourceConsr
;
@Autowired
private
ReadingUserDao
readingUserDao
;
private
static
final
ThreadPoolExecutor
PLATFORM_STATISTICS_EXPORT_THREAD
=
new
ThreadPoolExecutor
(
2
,
2
,
0
,
TimeUnit
.
SECONDS
,
new
LinkedBlockingQueue
<>(),
...
...
@@ -4331,4 +4334,33 @@ public class BookGroupBizImpl implements BookGroupBiz {
}
return
dto
;
}
@Override
public
PageBeanNew
<
UserBookInfoVO
>
listUser4ReadingActivity
(
UserSelectParamDTO
userSelectParamDTO
)
{
Integer
currentPage
=
userSelectParamDTO
.
getCurrentPage
();
Integer
numPerPage
=
userSelectParamDTO
.
getNumPerPage
();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
//用户昵称id模糊查询
if
(!
StringUtil
.
isEmpty
(
userSelectParamDTO
.
getUserQuery
()))
{
List
<
String
>
wxUserIds
=
wechatGroupConsr
.
getByUserQuery
(
userSelectParamDTO
.
getUserQuery
());
if
(!
ListUtils
.
isEmpty
(
wxUserIds
))
{
map
.
put
(
"wxUserIds"
,
wxUserIds
);
}
else
{
return
new
PageBeanNew
<>(
currentPage
,
numPerPage
,
0
,
new
ArrayList
<>());
}
}
map
.
put
(
"bookIds"
,
userSelectParamDTO
.
getBookIds
());
map
.
put
(
"robotId"
,
userSelectParamDTO
.
getRobotId
());
map
.
put
(
"invitedFilter"
,
userSelectParamDTO
.
getInvitedFilter
());
List
<
UserBookInfoVO
>
countlist
=
bookGroupCipherUserDao
.
listUser4ReadingActivity
(
map
);
if
(
ListUtils
.
isEmpty
(
countlist
))
{
return
new
PageBeanNew
<>(
currentPage
,
numPerPage
,
0
,
new
ArrayList
<>());
}
map
.
put
(
"pageNum"
,
currentPage
*
numPerPage
);
map
.
put
(
"numPerPage"
,
numPerPage
);
List
<
UserBookInfoVO
>
list
=
bookGroupCipherUserDao
.
listUser4ReadingActivity
(
map
);
//填充用户信息、扫码书刊信息,小号信息
groupSet
.
setUserBookInfo4ReadingActivity
(
list
);
return
new
PageBeanNew
<>(
currentPage
,
numPerPage
,
countlist
.
size
(),
list
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/impl/GroupQrcodeBizImpl.java
View file @
eda95919
...
...
@@ -122,6 +122,17 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
private
AmqpTemplate
amqpTemplate
;
@Override
public
Map
<
String
,
Integer
>
getGroupUserNum
(
List
<
String
>
wxGroups
)
{
if
(
CollectionUtils
.
isEmpty
(
wxGroups
))
{
return
Maps
.
newHashMap
();
}
List
<
GroupQrcode
>
groupUserNum
=
groupQrcodeDao
.
getGroupUserNum
(
wxGroups
);
if
(
CollectionUtils
.
isEmpty
(
groupUserNum
))
{
return
Maps
.
newHashMap
();
}
return
groupUserNum
.
stream
().
collect
(
Collectors
.
toMap
(
GroupQrcode:
:
getWeixinGroupId
,
GroupQrcode:
:
getUserNumber
));
}
/**
* 自动更新群人数线程是否开始执行
...
...
pcloud-service-book/src/main/java/com/pcloud/book/group/constant/BookBusinessConstants.java
View file @
eda95919
...
...
@@ -15,4 +15,32 @@ public class BookBusinessConstants {
*/
public
static
final
Map
<
String
,
AutoUpdateGroupNumDTO
>
GROUP_NUM_DTO_MAP
=
new
ConcurrentHashMap
<>(
128
);
/**
* 收款状态
*/
public
enum
CollectionStatus
{
/**
* 代收款
*/
COLLECTION
(
1
),
/**
* 收款中
*/
RECEIVING
(
2
),
/**
* 收款成功
*/
COLLECTION_SUCCESSFUL
(
3
);
private
Integer
code
;
CollectionStatus
(
Integer
code
)
{
this
.
code
=
code
;
}
public
Integer
getCode
()
{
return
code
;
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/BookGroupCipherUserDao.java
View file @
eda95919
...
...
@@ -174,4 +174,26 @@ public interface BookGroupCipherUserDao extends BaseDao<BookGroupCipherUser> {
* @return
*/
SelfRobotBookGroupDTO
getSelfRobotBookGroupInfoByUser
(
String
wxUserId
,
Long
bookGroupId
);
/**
* 共读活动好友查询
* @param map
* @return
*/
List
<
UserBookInfoVO
>
listUser4ReadingActivity
(
Map
<
String
,
Object
>
map
);
/**
* 扫码书刊及关联的新标签
* @param wxUserId
* @param altId
* @return
*/
List
<
UserBookInfoItemVO
>
getScanBookInfoByUserNew
(
String
wxUserId
,
String
altId
);
/**
* 获取关联的小号列表
* @param wxUserId
* @return
*/
public
List
<
String
>
getAltIdListByUserId
(
String
wxUserId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/GroupQrcodeDao.java
View file @
eda95919
...
...
@@ -25,6 +25,11 @@ import java.util.Map;
*/
public
interface
GroupQrcodeDao
extends
BaseDao
<
GroupQrcode
>
{
/**
* 获取群人数
*/
List
<
GroupQrcode
>
getGroupUserNum
(
List
<
String
>
wxGroupIds
);
List
<
GroupQrcodeServerDTO
>
getWxGroupIdByServerId
(
List
<
Long
>
serverId
);
Integer
updateGroupCount
(
String
wxGroupId
,
Integer
num
);
...
...
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/impl/BookGroupCipherUserDaoImpl.java
View file @
eda95919
...
...
@@ -195,4 +195,22 @@ public class BookGroupCipherUserDaoImpl extends BaseDaoImpl<BookGroupCipherUser>
map
.
put
(
"wxUserId"
,
wxUserId
);
return
getSessionTemplate
().
selectOne
(
getStatement
(
"getSelfRobotBookGroupInfoByUser"
),
map
);
}
@Override
public
List
<
UserBookInfoVO
>
listUser4ReadingActivity
(
Map
<
String
,
Object
>
map
)
{
return
getSessionTemplate
().
selectList
(
getStatement
(
"listUser4ReadingActivity"
),
map
);
}
@Override
public
List
<
UserBookInfoItemVO
>
getScanBookInfoByUserNew
(
String
wxUserId
,
String
altId
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"wxUserId"
,
wxUserId
);
map
.
put
(
"altId"
,
altId
);
return
getSessionTemplate
().
selectList
(
getStatement
(
"getScanBookInfoByUserNew"
),
map
);
}
@Override
public
List
<
String
>
getAltIdListByUserId
(
String
wxUserId
)
{
return
getSessionTemplate
().
selectList
(
getStatement
(
"getAltIdListByUserId"
),
wxUserId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/impl/GroupQrcodeDaoImpl.java
View file @
eda95919
...
...
@@ -33,6 +33,11 @@ import java.util.Map;
public
class
GroupQrcodeDaoImpl
extends
BaseDaoImpl
<
GroupQrcode
>
implements
GroupQrcodeDao
{
@Override
public
List
<
GroupQrcode
>
getGroupUserNum
(
List
<
String
>
list
)
{
return
this
.
getSqlSession
().
selectList
(
"getGroupUserNum"
,
list
);
}
@Override
public
List
<
GroupQrcodeServerDTO
>
getWxGroupIdByServerId
(
List
<
Long
>
list
)
{
return
this
.
getSqlSession
().
selectList
(
this
.
getStatement
(
"getWxGroupIdByServerId"
),
list
);
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/group/dto/UserSelectParamDTO.java
View file @
eda95919
...
...
@@ -48,4 +48,9 @@ public class UserSelectParamDTO {
* 单本图书id
*/
private
Long
bookGroupId
;
/**
* 不展示活动已邀请的读者-共读活动
*/
private
Boolean
invitedFilter
;
}
pcloud-service-book/src/main/java/com/pcloud/book/group/facade/BookGroupFacade.java
View file @
eda95919
...
...
@@ -688,4 +688,9 @@ public interface BookGroupFacade {
@CookieValue
(
"userInfo"
)
String
userInfo
,
@RequestBody
WxWechatUserCorrelation
wxWechatUserCorrelation
)
throws
BizException
,
PermissionException
;
@ApiOperation
(
value
=
"共读活动-用户列表查询"
,
httpMethod
=
"POST"
)
@PostMapping
(
"listUser4ReadingActivity"
)
public
ResponseDto
<
PageBeanNew
<
UserBookInfoVO
>>
listUser4ReadingActivity
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
@ApiParam
UserSelectParamDTO
userSelectParamDTO
)
throws
PermissionException
;
}
pcloud-service-book/src/main/java/com/pcloud/book/group/facade/impl/BookGroupFacadeImpl.java
View file @
eda95919
...
...
@@ -11,7 +11,6 @@ import com.pcloud.book.group.dto.UserSelectParamDTO;
import
com.pcloud.book.group.entity.BookGroup
;
import
com.pcloud.book.group.entity.BookGroupClassify
;
import
com.pcloud.book.group.entity.BookGroupServe
;
import
com.pcloud.book.group.enums.JoinGroupTypeEnum
;
import
com.pcloud.book.group.entity.WxWechatUserCorrelation
;
import
com.pcloud.book.group.enums.JoinGroupTypeEnum
;
import
com.pcloud.book.group.facade.BookGroupFacade
;
...
...
@@ -1096,4 +1095,16 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
bookGroupBiz
.
createWxWechatUserCorrelation
(
wechatUserId
,
wxWechatUserCorrelation
);
return
new
ResponseDto
<>();
}
@ApiOperation
(
value
=
"共读活动-用户列表查询"
,
httpMethod
=
"POST"
)
@PostMapping
(
"listUser4ReadingActivity"
)
@Override
public
ResponseDto
<
PageBeanNew
<
UserBookInfoVO
>>
listUser4ReadingActivity
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
@ApiParam
UserSelectParamDTO
userSelectParamDTO
)
throws
PermissionException
{
SessionUtil
.
getToken4Redis
(
token
);
if
(
null
==
userSelectParamDTO
||
null
==
userSelectParamDTO
.
getCurrentPage
()
||
null
==
userSelectParamDTO
.
getNumPerPage
())
{
throw
new
WechatGroupBizException
(
WechatGroupBizException
.
PARAM_IS_NULL
,
"缺少参数"
);
}
PageBeanNew
<
UserBookInfoVO
>
pageBeanNew
=
bookGroupBiz
.
listUser4ReadingActivity
(
userSelectParamDTO
);
return
new
ResponseDto
<>(
pageBeanNew
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/set/GroupSet.java
View file @
eda95919
...
...
@@ -5,6 +5,8 @@ import com.pcloud.appcenter.app.dto.AppDto;
import
com.pcloud.appcenter.assist.dto.AssistTempletDTO
;
import
com.pcloud.appcenter.base.dto.AppPriceCacheDTO
;
import
com.pcloud.appcenter.cache.service.AppPriceCacheService
;
import
com.pcloud.book.book.dao.BookLabelDao
;
import
com.pcloud.book.book.entity.BookLabel
;
import
com.pcloud.book.consumer.analysisengine.BrowseRecordConsr
;
import
com.pcloud.book.consumer.app.AppConsr
;
import
com.pcloud.book.consumer.app.AssistTempletConsr
;
...
...
@@ -25,6 +27,7 @@ import com.pcloud.book.group.dto.CountAndTimeDTO;
import
com.pcloud.book.group.dto.GroupTopicDTO
;
import
com.pcloud.book.group.entity.BookGroupServe
;
import
com.pcloud.book.group.vo.BookGroupAnalysisVO
;
import
com.pcloud.book.group.vo.RobotBaseInfoVO
;
import
com.pcloud.book.group.vo.UserBookInfoItemVO
;
import
com.pcloud.book.group.vo.UserBookInfoVO
;
import
com.pcloud.book.keywords.dao.BookKeywordDao
;
...
...
@@ -57,6 +60,7 @@ import org.springframework.util.CollectionUtils;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
...
...
@@ -110,6 +114,8 @@ public class GroupSet {
private
ProductConsr
productConsr
;
@Autowired
private
AppPriceCacheService
appPriceCacheService
;
@Autowired
private
BookLabelDao
bookLabelDao
;
/**
* 群分类删除topic
...
...
@@ -707,4 +713,87 @@ public class GroupSet {
}
}
}
/**
* 共读活动好友列表-填充用户信息、扫码书刊信息
* @param list
*/
public
void
setUserBookInfo4ReadingActivity
(
List
<
UserBookInfoVO
>
list
)
{
List
<
String
>
wxUserIds
=
list
.
stream
().
filter
(
s
->
s
.
getWxUserId
()
!=
null
).
map
(
UserBookInfoVO:
:
getWxUserId
).
distinct
().
collect
(
Collectors
.
toList
());
Map
<
String
,
GroupUserDTO
>
userDTOMap
=
wechatGroupConsr
.
mapWxUserInfoByWxIdList
(
wxUserIds
);
List
<
Long
>
bookLabelIds
=
new
ArrayList
<>();
List
<
String
>
altIdList
=
new
ArrayList
<>();
for
(
UserBookInfoVO
userBookInfoVO
:
list
)
{
//用户信息
if
(!
MapUtils
.
isEmpty
(
userDTOMap
)
&&
userDTOMap
.
containsKey
(
userBookInfoVO
.
getWxUserId
()))
{
GroupUserDTO
userDTO
=
userDTOMap
.
get
(
userBookInfoVO
.
getWxUserId
());
userBookInfoVO
.
setHeadPic
(
userDTO
.
getHeadPic
());
userBookInfoVO
.
setNickName
(
userDTO
.
getNickName
());
userBookInfoVO
.
setSex
(
userDTO
.
getSex
());
}
//扫码书刊
List
<
UserBookInfoItemVO
>
bookList
=
bookGroupCipherUserDao
.
getScanBookInfoByUserNew
(
userBookInfoVO
.
getWxUserId
(),
userBookInfoVO
.
getAltId
());
userBookInfoVO
.
setBookInfoItemVOS
(
bookList
);
List
<
Long
>
graLabelIds
=
bookList
.
stream
().
filter
(
s
->
s
.
getGraLabelId
()
!=
null
).
map
(
UserBookInfoItemVO:
:
getGraLabelId
).
distinct
().
collect
(
Collectors
.
toList
());
List
<
Long
>
subLabelIds
=
bookList
.
stream
().
filter
(
s
->
s
.
getSubLabelId
()
!=
null
).
map
(
UserBookInfoItemVO:
:
getSubLabelId
).
distinct
().
collect
(
Collectors
.
toList
());
List
<
Long
>
verLabelIds
=
bookList
.
stream
().
filter
(
s
->
s
.
getVerLabelId
()
!=
null
).
map
(
UserBookInfoItemVO:
:
getVerLabelId
).
distinct
().
collect
(
Collectors
.
toList
());
List
<
Long
>
areaLabelIds
=
bookList
.
stream
().
filter
(
s
->
s
.
getAreaLabelId
()
!=
null
).
map
(
UserBookInfoItemVO:
:
getAreaLabelId
).
distinct
().
collect
(
Collectors
.
toList
());
if
(!
ListUtils
.
isEmpty
(
graLabelIds
))
{
bookLabelIds
.
addAll
(
graLabelIds
);
}
if
(!
ListUtils
.
isEmpty
(
subLabelIds
))
{
bookLabelIds
.
addAll
(
subLabelIds
);
}
if
(!
ListUtils
.
isEmpty
(
verLabelIds
))
{
bookLabelIds
.
addAll
(
verLabelIds
);
}
if
(!
ListUtils
.
isEmpty
(
areaLabelIds
))
{
bookLabelIds
.
addAll
(
areaLabelIds
);
}
//小号id
List
<
RobotBaseInfoVO
>
robotBaseInfoVOS
=
new
ArrayList
<>();
RobotBaseInfoVO
robotBaseInfoVO
=
new
RobotBaseInfoVO
();
robotBaseInfoVO
.
setRobotId
(
userBookInfoVO
.
getAltId
());
robotBaseInfoVOS
.
add
(
robotBaseInfoVO
);
userBookInfoVO
.
setRobotBaseInfoVOS
(
robotBaseInfoVOS
);
altIdList
.
addAll
(
Arrays
.
asList
(
userBookInfoVO
.
getAltId
()));
}
//标签,小号信息
Map
<
Long
,
BookLabel
>
bookLabelMap
=
new
HashMap
<>();
if
(!
ListUtils
.
isEmpty
(
bookLabelIds
)){
bookLabelMap
=
bookLabelDao
.
getMapByIds
(
bookLabelIds
);
}
Map
<
String
,
GroupUserDTO
>
groupUserDTOMap
=
new
HashMap
<>();
if
(!
ListUtils
.
isEmpty
(
altIdList
)){
groupUserDTOMap
=
wechatGroupConsr
.
mapRobotInfoByIdList
(
altIdList
);
}
for
(
UserBookInfoVO
userBookInfoVO:
list
){
if
(!
MapUtils
.
isEmpty
(
bookLabelMap
)){
for
(
UserBookInfoItemVO
bookInfoItemVO
:
userBookInfoVO
.
getBookInfoItemVOS
())
{
if
(
null
!=
bookInfoItemVO
.
getGraLabelId
()
&&
bookLabelMap
.
containsKey
(
bookInfoItemVO
.
getGraLabelId
()))
{
bookInfoItemVO
.
setGraLabelName
(
bookLabelMap
.
get
(
bookInfoItemVO
.
getGraLabelId
()).
getName
());
}
if
(
null
!=
bookInfoItemVO
.
getSubLabelId
()
&&
bookLabelMap
.
containsKey
(
bookInfoItemVO
.
getSubLabelId
()))
{
bookInfoItemVO
.
setSubLabelName
(
bookLabelMap
.
get
(
bookInfoItemVO
.
getSubLabelId
()).
getName
());
}
if
(
null
!=
bookInfoItemVO
.
getVerLabelId
()
&&
bookLabelMap
.
containsKey
(
bookInfoItemVO
.
getVerLabelId
()))
{
bookInfoItemVO
.
setVerLabelName
(
bookLabelMap
.
get
(
bookInfoItemVO
.
getVerLabelId
()).
getName
());
}
if
(
null
!=
bookInfoItemVO
.
getAreaLabelId
()
&&
bookLabelMap
.
containsKey
(
bookInfoItemVO
.
getAreaLabelId
()))
{
bookInfoItemVO
.
setAreaLabelName
(
bookLabelMap
.
get
(
bookInfoItemVO
.
getAreaLabelId
()).
getName
());
}
}
}
for
(
RobotBaseInfoVO
robotBaseInfoVO
:
userBookInfoVO
.
getRobotBaseInfoVOS
())
{
if
(!
MapUtils
.
isEmpty
(
groupUserDTOMap
)
&&
groupUserDTOMap
.
containsKey
(
robotBaseInfoVO
.
getRobotId
()))
{
GroupUserDTO
groupUserDTO
=
groupUserDTOMap
.
get
(
robotBaseInfoVO
.
getRobotId
());
robotBaseInfoVO
.
setNickName
(
groupUserDTO
.
getNickName
());
robotBaseInfoVO
.
setHeadPic
(
groupUserDTO
.
getHeadPic
());
robotBaseInfoVO
.
setSex
(
groupUserDTO
.
getSex
());
}
}
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/tools/SendSelfMsgTools.java
deleted
100644 → 0
View file @
cac7a5f7
package
com
.
pcloud
.
book
.
group
.
tools
;
import
com.pcloud.book.util.common.ThreadPoolUtils
;
import
com.pcloud.wechatgroup.selfrobot.dto.SelfRobotMsgRecord
;
import
com.pcloud.wechatgroup.selfrobot.service.SelfRobotService
;
import
com.sdk.wxgroup.SendArticleMessageVO
;
import
com.sdk.wxgroup.SendGroupInviteVO
;
import
com.sdk.wxgroup.SendPicMessageVO
;
import
com.sdk.wxgroup.SendTextMessageVO
;
import
com.sdk.wxgroup.WxGroupSDK
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.PostConstruct
;
import
lombok.extern.slf4j.Slf4j
;
/**
* @描述:1v1个人号发送消息
* @作者:zhuyajie
* @创建时间:18:02 2019/11/13
* @版本:1.0
*/
@Slf4j
@Component
public
class
SendSelfMsgTools
{
@Autowired
private
SelfRobotService
selfRobotService
;
private
static
SendSelfMsgTools
sendSelfMsgTools
;
/**
* 发送文本消息
*/
public
static
void
sendTextMessage
(
SendTextMessageVO
sendTextMessageVO
)
{
WxGroupSDK
.
sendTextMessage
(
sendTextMessageVO
);
ThreadPoolUtils
.
OTHER_THREAD_POOL
.
execute
(()
->
{
SelfRobotMsgRecord
selfRobotMsgRecord
=
new
SelfRobotMsgRecord
();
selfRobotMsgRecord
.
setMessageType
(
1
);
//文本
selfRobotMsgRecord
.
setTextContent
(
sendTextMessageVO
.
getContent
());
selfRobotMsgRecord
.
setWxId
(
sendTextMessageVO
.
getAltId
());
selfRobotMsgRecord
.
setWxUserId
(
sendTextMessageVO
.
getWxGroupId
());
insertMsg
(
selfRobotMsgRecord
);
});
}
/**
* 发送入群邀请链接
*/
public
static
void
sendGroupInvite
(
SendGroupInviteVO
sendGroupInviteVO
)
{
WxGroupSDK
.
sendGroupInvite
(
sendGroupInviteVO
);
ThreadPoolUtils
.
OTHER_THREAD_POOL
.
execute
(()
->
{
SelfRobotMsgRecord
selfRobotMsgRecord
=
new
SelfRobotMsgRecord
();
selfRobotMsgRecord
.
setMessageType
(
11
);
//链接
selfRobotMsgRecord
.
setWxId
(
sendGroupInviteVO
.
getAltId
());
selfRobotMsgRecord
.
setWxUserId
(
sendGroupInviteVO
.
getWxId
());
selfRobotMsgRecord
.
setTitle
(
"邀请你加入群聊"
);
insertMsg
(
selfRobotMsgRecord
);
});
}
/**
* 发送链接
* @param sendArticleMessageVO
*/
public
static
void
sendArticleMessage
(
SendArticleMessageVO
sendArticleMessageVO
){
WxGroupSDK
.
sendArticleMessage
(
sendArticleMessageVO
);
ThreadPoolUtils
.
OTHER_THREAD_POOL
.
execute
(()
->
{
SelfRobotMsgRecord
selfRobotMsgRecord
=
new
SelfRobotMsgRecord
();
selfRobotMsgRecord
.
setMessageType
(
11
);
//链接
selfRobotMsgRecord
.
setWxId
(
sendArticleMessageVO
.
getAltId
());
selfRobotMsgRecord
.
setWxUserId
(
sendArticleMessageVO
.
getWxGroupId
());
selfRobotMsgRecord
.
setTitle
(
sendArticleMessageVO
.
getTitle
());
selfRobotMsgRecord
.
setUrl
(
sendArticleMessageVO
.
getLinkUrl
());
insertMsg
(
selfRobotMsgRecord
);
});
}
/**
* 发送图片
*/
public
static
void
sendPicMessage
(
SendPicMessageVO
sendPicMessageVO
){
WxGroupSDK
.
sendPicMessage
(
sendPicMessageVO
);
ThreadPoolUtils
.
OTHER_THREAD_POOL
.
execute
(()
->
{
SelfRobotMsgRecord
selfRobotMsgRecord
=
new
SelfRobotMsgRecord
();
selfRobotMsgRecord
.
setMessageType
(
2
);
//图片
selfRobotMsgRecord
.
setWxId
(
sendPicMessageVO
.
getAltId
());
selfRobotMsgRecord
.
setWxUserId
(
sendPicMessageVO
.
getWxGroupId
());
selfRobotMsgRecord
.
setResourceUrl
(
sendPicMessageVO
.
getPicUrl
());
insertMsg
(
selfRobotMsgRecord
);
});
}
/**
* 保存发送记录
*/
public
static
void
insertMsg
(
SelfRobotMsgRecord
selfRobotMsgRecord
)
{
try
{
sendSelfMsgTools
.
selfRobotService
.
addSelfRobotMsg
(
selfRobotMsgRecord
);
}
catch
(
Exception
e
)
{
log
.
error
(
"添加个人号消息记录失败"
+
e
.
getMessage
(),
e
);
}
}
@PostConstruct
public
void
init
()
{
sendSelfMsgTools
=
this
;
sendSelfMsgTools
.
selfRobotService
=
this
.
selfRobotService
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/vo/RobotBaseInfoVO.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
group
.
vo
;
import
com.pcloud.common.dto.BaseDto
;
import
lombok.Data
;
/**
* @描述:小号基本信息
* @作者:zhuyajie
* @创建时间:15:58 2020/1/20
* @版本:1.0
*/
@Data
public
class
RobotBaseInfoVO
extends
BaseDto
{
/**
* 小号id
*/
private
String
robotId
;
/**
* 昵称
*/
private
String
nickName
;
/**
* 头像
*/
private
String
headPic
;
/**
* 性别
*/
private
Integer
sex
;
}
pcloud-service-book/src/main/java/com/pcloud/book/group/vo/UserBookInfoItemVO.java
View file @
eda95919
...
...
@@ -45,4 +45,45 @@ public class UserBookInfoItemVO extends BaseDto{
* 编辑id
*/
private
Long
adviserId
;
/**
* 年级标签id
*/
private
Long
graLabelId
;
/**
* 科目标签id
*/
private
Long
subLabelId
;
/**
* 版本标签id
*/
private
Long
verLabelId
;
/**
* 地域标签id
*/
private
Long
areaLabelId
;
/**
* 年级标签名称
*/
private
String
graLabelName
;
/**
* 科目标签名称
*/
private
String
subLabelName
;
/**
* 版本标签名称
*/
private
String
verLabelName
;
/**
* 地域标签名称
*/
private
String
areaLabelName
;
}
pcloud-service-book/src/main/java/com/pcloud/book/group/vo/UserBookInfoVO.java
View file @
eda95919
...
...
@@ -43,4 +43,8 @@ public class UserBookInfoVO extends BaseDto {
* 扫码书刊信息
*/
private
List
<
UserBookInfoItemVO
>
bookInfoItemVOS
;
/**
* 关联小号
*/
private
List
<
RobotBaseInfoVO
>
robotBaseInfoVOS
;
}
pcloud-service-book/src/main/java/com/pcloud/book/keywords/biz/impl/BookGuideBizImpl.java
View file @
eda95919
...
...
@@ -22,7 +22,6 @@ import com.pcloud.book.group.dto.SendGuideMessageDTO;
import
com.pcloud.book.group.entity.*
;
import
com.pcloud.book.group.enums.CipherTypeEnum
;
import
com.pcloud.book.group.enums.TouchTypeEnum
;
import
com.pcloud.book.group.tools.SendSelfMsgTools
;
import
com.pcloud.book.group.tools.SendWeixinRequestTools
;
import
com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO
;
import
com.pcloud.book.keywords.biz.BookGuideBiz
;
...
...
@@ -191,7 +190,7 @@ public class BookGuideBizImpl implements BookGuideBiz {
vo
.
setAltId
(
agreeAddUserDTO
.
getRobotWxId
());
vo
.
setWxGroupId
(
agreeAddUserDTO
.
getUserWxId
());
vo
.
setIp
(
agreeAddUserDTO
.
getIp
());
SendSelfMsgTools
.
sendTextMessage
(
vo
);
WxGroupSDK
.
sendTextMessage
(
vo
);
return
;
}
if
(
StringUtil
.
isBlank
(
cipher
))
{
...
...
pcloud-service-book/src/main/java/com/pcloud/book/keywords/biz/impl/BookKeywordBizImpl.java
View file @
eda95919
...
...
@@ -37,7 +37,6 @@ import com.pcloud.book.group.enums.JoinGroupTypeEnum;
import
com.pcloud.book.group.enums.QrcodeStatusEnum
;
import
com.pcloud.book.group.enums.TouchTypeEnum
;
import
com.pcloud.book.group.enums.UpdateStatusEnum
;
import
com.pcloud.book.group.tools.SendSelfMsgTools
;
import
com.pcloud.book.group.tools.SendWeixinRequestTools
;
import
com.pcloud.book.group.vo.ClassifyNameVO
;
import
com.pcloud.book.group.vo.ClassifyVO
;
...
...
@@ -58,6 +57,7 @@ import com.pcloud.book.keywords.vo.QrWeixinParam;
import
com.pcloud.book.keywords.vo.SetKeywordVO
;
import
com.pcloud.book.keywords.vo.SetRankVO
;
import
com.pcloud.book.keywords.vo.UpdateKeywordVO
;
import
com.pcloud.book.reading.biz.ReadingActivityBiz
;
import
com.pcloud.book.util.common.ThreadPoolUtils
;
import
com.pcloud.channelcenter.base.constants.ChannelEnum
;
import
com.pcloud.channelcenter.qrcode.service.QrcodeSceneService
;
...
...
@@ -82,14 +82,7 @@ import com.pcloud.resourcecenter.product.dto.ProductDto;
import
com.pcloud.resourcecenter.product.dto.ProductTypeDto
;
import
com.pcloud.wechatgroup.group.dto.RobotReplyDTO
;
import
com.pcloud.wechatgroup.message.dto.SendTextDTO
;
import
com.sdk.wxgroup.ChangeNameVO
;
import
com.sdk.wxgroup.SendArticleMessageVO
;
import
com.sdk.wxgroup.SendFileVO
;
import
com.sdk.wxgroup.SendGroupInviteVO
;
import
com.sdk.wxgroup.SendMessageTypeEnum
;
import
com.sdk.wxgroup.SendPicMessageVO
;
import
com.sdk.wxgroup.SendTextMessageVO
;
import
com.sdk.wxgroup.WxGroupSDK
;
import
com.sdk.wxgroup.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.MapUtils
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -176,6 +169,8 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
private
String
envStr
;
@Autowired
private
SelfRobotKeywordReplyDao
selfRobotKeywordReplyDao
;
@Autowired
private
ReadingActivityBiz
readingActivityBiz
;
/**
* 字符串切割长度
*/
...
...
@@ -586,7 +581,8 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
||
(
envStr
.
toUpperCase
().
equals
(
"UAT"
)
&&
sendTextDTO
.
getWxId
().
equals
(
"wxid_51ff9f099l9a22"
)
&&
new
Long
(
449L
).
equals
(
bookGroupCipherUser
.
getBookGroupId
()))
||
(
envStr
.
toUpperCase
().
equals
(
"PRO"
)
&&
sendTextDTO
.
getWxId
().
equals
(
"wxid_x8i897ryabo722"
)
&&
new
Long
(
23735L
).
equals
(
bookGroupCipherUser
.
getBookGroupId
())))){
BookGroup
bookGroup
=
bookGroupDao
.
getByShortBookName
(
content
);
if
(
bookGroup
==
null
)
{
Boolean
isActivityKeyword
=
readingActivityBiz
.
isKeyWord
(
sendTextDTO
);
if
(
bookGroup
==
null
&&
!
isActivityKeyword
)
{
//既不是关键词也不是识别码
String
altIdAndWxId
=
sendTextDTO
.
getWxId
()
+
"_"
+
sendTextDTO
.
getWechatUserId
();
Integer
send
=
JedisClusterUtils
.
hgetJson2Class
(
REPLY_GUIDE_CACHE
,
altIdAndWxId
,
Integer
.
class
);
...
...
@@ -599,7 +595,8 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
}
}
else
{
BookGroup
bookGroup
=
bookGroupDao
.
getByShortBookName
(
content
);
if
(
bookGroup
==
null
)
{
Boolean
isActivityKeyword
=
readingActivityBiz
.
isKeyWord
(
sendTextDTO
);
if
(
bookGroup
==
null
&&
!
isActivityKeyword
)
{
sendText
(
sendTextDTO
,
"抱歉呀!小睿不太明白你在说什么。嘿嘿!你的语言太高级了,待小睿深度解析一下,我还在不断学习呢!或者你看看,是不是关键词输错了呢?麻烦你再输一遍正确的关键词?比如回复我背单词。"
);
}
}
...
...
@@ -975,7 +972,7 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
vo
.
setAltId
(
robotId
);
vo
.
setWxGroupId
(
userWxId
);
vo
.
setIp
(
ip
);
SendSelfMsgTools
.
sendTextMessage
(
vo
);
WxGroupSDK
.
sendTextMessage
(
vo
);
log
.
info
(
"发送收到暗号后的本书介绍 : {}"
,
vo
);
}
...
...
@@ -1044,7 +1041,7 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
sendGroupInviteVO
.
setWxId
(
sendTextDTO
.
getWechatUserId
());
sendGroupInviteVO
.
setWxGroupId
(
wxGroupId
);
sendGroupInviteVO
.
setIp
(
sendTextDTO
.
getIp
());
SendSelfMsgTools
.
sendGroupInvite
(
sendGroupInviteVO
);
WxGroupSDK
.
sendGroupInvite
(
sendGroupInviteVO
);
log
.
info
(
"[同意加好友发送欢迎语] 发送进群链接 sendGroupInviteVO:{}"
,
sendGroupInviteVO
);
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/mq/topic/AddWxGroupListener.java
View file @
eda95919
...
...
@@ -2,6 +2,7 @@ package com.pcloud.book.mq.topic;
import
com.pcloud.book.group.biz.GroupQrcodeBiz
;
import
com.pcloud.book.mq.config.MQTopicConumer
;
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
;
...
...
@@ -21,6 +22,8 @@ public class AddWxGroupListener {
@Autowired
private
GroupQrcodeBiz
groupQrcodeBiz
;
@Autowired
private
ReadingActivityBiz
readingActivityBiz
;
/**
* 接收微信用户进群消息
...
...
@@ -32,6 +35,7 @@ public class AddWxGroupListener {
if
(
addWXGroupDTO
==
null
||
addWXGroupDTO
.
getWechatGroupId
()
==
null
||
addWXGroupDTO
.
getMemberCount
()
==
null
)
return
;
groupQrcodeBiz
.
addOneUser
(
addWXGroupDTO
.
getWechatGroupId
(),
addWXGroupDTO
.
getMemberCount
(),
addWXGroupDTO
.
getNickName
(),
addWXGroupDTO
.
getWxId
(),
addWXGroupDTO
.
getIp
());
readingActivityBiz
.
activityUserJoinGroup
(
addWXGroupDTO
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"接收微信用户进群消息失败"
+
e
.
getMessage
(),
e
);
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/mq/topic/WxGroupSendTextListener.java
View file @
eda95919
...
...
@@ -2,10 +2,10 @@ package com.pcloud.book.mq.topic;
import
com.pcloud.book.consumer.wechatgroup.WechatGroupConsr
;
import
com.pcloud.book.group.biz.BookGroupClassifyBiz
;
import
com.pcloud.book.group.biz.GroupQrcodeBiz
;
import
com.pcloud.book.group.dto.GroupClassifyQrcodeDTO
;
import
com.pcloud.book.keywords.biz.BookKeywordBiz
;
import
com.pcloud.book.mq.config.MQTopicConumer
;
import
com.pcloud.book.reading.biz.ReadingActivityBiz
;
import
com.pcloud.book.riddle.biz.RiddleRecordBiz
;
import
com.pcloud.book.util.common.ThreadPoolUtils
;
import
com.pcloud.book.weixinclock.biz.WeixinClockBiz
;
...
...
@@ -46,9 +46,9 @@ public class WxGroupSendTextListener {
@Autowired
private
WeixinClockBiz
weixinClockBiz
;
@Autowired
private
GroupQrcodeBiz
groupQrcodeBiz
;
@Autowired
private
BookGroupClassifyBiz
bookGroupClassifyBiz
;
@Autowired
private
ReadingActivityBiz
readingActivityBiz
;
/**
* 接收微信用户进群消息
...
...
@@ -73,6 +73,8 @@ public class WxGroupSendTextListener {
}
//猜谜语
riddleRecordBiz
.
riddleProcess
(
sendTextDTO
);
//共读活动
readingActivityBiz
.
receiveKeyWord
(
sendTextDTO
);
}
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"接收用户发送文本消息失败"
+
e
.
getMessage
(),
e
);
...
...
pcloud-service-book/src/main/java/com/pcloud/book/push/biz/impl/SelfPushBizImpl.java
View file @
eda95919
...
...
@@ -8,7 +8,6 @@ import com.pcloud.book.group.dto.BookGroupDTO;
import
com.pcloud.book.group.dto.SelfRobotBookGroupDTO
;
import
com.pcloud.book.group.entity.WeixinQrcodeGeneration
;
import
com.pcloud.book.group.set.GroupSet
;
import
com.pcloud.book.group.tools.SendSelfMsgTools
;
import
com.pcloud.book.group.vo.UserBookInfoVO
;
import
com.pcloud.book.push.biz.SelfPushBiz
;
import
com.pcloud.book.push.constant.PushConstant
;
...
...
@@ -251,7 +250,7 @@ public class SelfPushBizImpl implements SelfPushBiz {
sendTextMessageVO
.
setAltId
(
altId
);
sendTextMessageVO
.
setWxGroupId
(
userWxId
);
sendTextMessageVO
.
setIp
(
getIpByRobot
(
altId
));
SendSelfMsgTools
.
sendTextMessage
(
sendTextMessageVO
);
WxGroupSDK
.
sendTextMessage
(
sendTextMessageVO
);
return
;
}
if
(
ItemTypeEnum
.
LINK
.
value
.
equals
(
itemType
))
{
...
...
@@ -265,7 +264,7 @@ public class SelfPushBizImpl implements SelfPushBiz {
sendArticleMessageVO
.
setPicUrl
(
selfPushItem
.
getLinkImageUrl
());
sendArticleMessageVO
.
setTitle
(
selfPushItem
.
getLinkTitle
());
sendArticleMessageVO
.
setIp
(
getIpByRobot
(
altId
));
SendSelfMsgTools
.
sendArticleMessage
(
sendArticleMessageVO
);
WxGroupSDK
.
sendArticleMessage
(
sendArticleMessageVO
);
return
;
}
if
(
ItemTypeEnum
.
APP
.
value
.
equals
(
itemType
))
{
...
...
@@ -278,7 +277,7 @@ public class SelfPushBizImpl implements SelfPushBiz {
sendPicMessageVO
.
setWxGroupId
(
userWxId
);
sendPicMessageVO
.
setPicUrl
(
selfPushItem
.
getImageUrl
());
sendPicMessageVO
.
setIp
(
getIpByRobot
(
altId
));
SendSelfMsgTools
.
sendPicMessage
(
sendPicMessageVO
);
WxGroupSDK
.
sendPicMessage
(
sendPicMessageVO
);
return
;
}
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/reading/biz/ReadingActivityBiz.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
biz
;
import
com.pcloud.book.reading.dto.AssignGroupDTO
;
import
com.pcloud.book.reading.dto.ReadingActivityAdditionParamDTO
;
import
com.pcloud.book.reading.dto.ReadingActivityBaseParamDTO
;
import
com.pcloud.book.reading.dto.ReadingActivityDTO
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.wechatgroup.message.dto.AddWXGroupDTO
;
import
com.pcloud.wechatgroup.message.dto.SendTextDTO
;
import
com.sdk.wxgroup.CollectionVO
;
import
com.sdk.wxgroup.ReceiptMoneyVO
;
/**
* @描述:共读活动
* @作者:zhuyajie
* @创建时间:17:43 2020/1/14
* @版本:1.0
*/
public
interface
ReadingActivityBiz
{
/**
* 收到转账
* @param vo 转账信息
*/
void
receiveMoney
(
CollectionVO
vo
);
/**
* 创建
* @param readingActivityBaseParamDTO
*/
Long
add
(
ReadingActivityBaseParamDTO
readingActivityBaseParamDTO
);
/**
* 修改
* @param readingActivityBaseParamDTO
*/
void
update
(
ReadingActivityBaseParamDTO
readingActivityBaseParamDTO
);
/**
* 添加高级设置
* @param readingActivityAdditionParamDTO
*/
void
updateAdditionSetting
(
ReadingActivityAdditionParamDTO
readingActivityAdditionParamDTO
);
/**
* 定时任务回调-发送消息
* @param methodType
* @param activityId
*/
void
sendQuartzMsg
(
String
methodType
,
Long
activityId
);
/**
* 接收个人号关键词消息
*/
public
void
receiveKeyWord
(
SendTextDTO
sendTextDTO
);
/**
* 根据小号获取对应wxgroup ip
* @param altId
* @return
*/
String
getIP
(
String
altId
);
/**
* 根据id查询
* @param id
* @return
*/
ReadingActivityDTO
getById
(
Long
id
);
/**
* 定时任务回调-打卡每日提醒
* @param activityId
*/
void
sendClockRemind
(
Long
activityId
);
/**
* 分页查询活动
*/
PageBeanNew
<
ReadingActivityDTO
>
getList
(
Integer
currentPage
,
Integer
numPerPage
);
/**
* 分配群
* @param assignGroupDTO
*/
void
assignGroup
(
AssignGroupDTO
assignGroupDTO
);
/**
* 活动用户进群
* @param addWXGroupDTO
*/
void
activityUserJoinGroup
(
AddWXGroupDTO
addWXGroupDTO
);
/**
* 是否是入群关键词
* @param sendTextDTO
* @return
*/
Boolean
isKeyWord
(
SendTextDTO
sendTextDTO
);
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/biz/impl/ReadingActivityBizImpl.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
biz
.
impl
;
import
com.pcloud.book.advertising.dao.AdvertisingBrandDao
;
import
com.pcloud.book.advertising.dto.AdvertisingBrandDTO
;
import
com.pcloud.book.advertising.entity.AdvertisingBrand
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.consumer.convert.ConvertConsr
;
import
com.pcloud.book.consumer.reader.ReaderConsr
;
import
com.pcloud.book.consumer.wechatgroup.WechatGroupConsr
;
import
com.pcloud.book.group.biz.GroupQrcodeBiz
;
import
com.pcloud.book.group.constant.BookBusinessConstants
;
import
com.pcloud.book.group.dao.BookGroupCipherUserDao
;
import
com.pcloud.book.group.dao.WeixinQrcodeDao
;
import
com.pcloud.book.group.dao.WeixinQrcodeGenerationDao
;
import
com.pcloud.book.group.entity.BookGroupCipherUser
;
import
com.pcloud.book.group.entity.GroupQrcode
;
import
com.pcloud.book.group.entity.WeixinQrcode
;
import
com.pcloud.book.group.entity.WeixinQrcodeGeneration
;
import
com.pcloud.book.group.tools.QrcodeTools
;
import
com.pcloud.book.group.tools.SendWeixinRequestTools
;
import
com.pcloud.book.reading.biz.ReadingActivityBiz
;
import
com.pcloud.book.reading.constant.ReadingActivityConstant
;
import
com.pcloud.book.reading.dao.*
;
import
com.pcloud.book.reading.dto.ActivityUserBookDTO
;
import
com.pcloud.book.reading.dto.ActivityUserCountDTO
;
import
com.pcloud.book.reading.dto.AssignGroupDTO
;
import
com.pcloud.book.reading.dto.GroupingUserDTO
;
import
com.pcloud.book.reading.dto.ReadingActivityAdditionParamDTO
;
import
com.pcloud.book.reading.dto.ReadingActivityBaseParamDTO
;
import
com.pcloud.book.reading.dto.ReadingActivityDTO
;
import
com.pcloud.book.reading.dto.UserBaseDTO
;
import
com.pcloud.book.reading.entity.*
;
import
com.pcloud.book.reading.enums.ContentTypeEnum
;
import
com.pcloud.book.reading.enums.JoinConditionEnum
;
import
com.pcloud.book.reading.enums.JoinStateEnum
;
import
com.pcloud.book.reading.enums.JoinTypeEnum
;
import
com.pcloud.book.util.common.ThreadPoolUtils
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.common.page.PageParam
;
import
com.pcloud.common.utils.DateUtils
;
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.convert.file.entity.FileUploadInfo
;
import
com.pcloud.facade.quartz.entity.CallBackParam
;
import
com.pcloud.facade.quartz.entity.ScheduleJob
;
import
com.pcloud.facade.quartz.service.ScheduleService
;
import
com.pcloud.wechatgroup.group.dto.GroupRobotDTO
;
import
com.pcloud.wechatgroup.group.dto.GroupUserDTO
;
import
com.pcloud.wechatgroup.message.dto.AddWXGroupDTO
;
import
com.pcloud.wechatgroup.message.dto.SendTextDTO
;
import
com.sdk.wxgroup.*
;
import
com.sdk.wxgroup.constant.WxGroupSDKConstants
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.MapUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
lombok.extern.slf4j.Slf4j
;
/**
* @描述:共读活动
* @作者:zhuyajie
* @创建时间:17:44 2020/1/14
* @版本:1.0
*/
@Slf4j
@Component
(
"readingActivityBiz"
)
public
class
ReadingActivityBizImpl
implements
ReadingActivityBiz
{
@Autowired
private
ReadingActivityDao
readingActivityDao
;
@Autowired
private
ReadingInviteDao
readingInviteDao
;
@Autowired
private
ReadingUserDao
readingUserDao
;
@Autowired
private
WechatGroupConsr
wechatGroupConsr
;
@Autowired
private
WeixinQrcodeGenerationDao
weixinQrcodeGenerationDao
;
@Autowired
private
ReadingGroupDao
readingGroupDao
;
@Autowired
private
ScheduleService
scheduleService
;
@Autowired
private
GroupQrcodeBiz
groupQrcodeBiz
;
@Autowired
private
BookGroupCipherUserDao
bookGroupCipherUserDao
;
@Autowired
private
AdvertisingBrandDao
advertisingBrandDao
;
@Autowired
private
BookGroupCollectionDao
bookGroupCollectionDao
;
@Autowired
private
ReadingGroupRobotDao
readingGroupRobotDao
;
@Autowired
private
ReadingGroupCreateDao
readingGroupCreateDao
;
@Autowired
private
ConvertConsr
convertConsr
;
@Autowired
private
ReaderConsr
readerConsr
;
@Autowired
private
WeixinQrcodeDao
weixinQrcodeDao
;
@Value
(
"${system.env}"
)
private
String
envStr
;
/**
* 读书活动进群的用户集合
*/
private
static
final
String
ACTIVITY_USER_JOIN_GROUP_USERS
=
"BOOK:ACTIVITY_USER_JOIN_GROUP_USERS"
;
/**
* 读书活动进群的欢迎语
*/
private
static
final
String
ACTIVITY_USER_JOIN_GROUP_GUIDE
=
"BOOK:ACTIVITY_USER_JOIN_GROUP_GUIDE"
;
@ParamLog
(
"[receiveMoney]"
)
@Transactional
(
rollbackFor
=
{
Exception
.
class
})
@Override
public
void
receiveMoney
(
CollectionVO
vo
)
{
if
(
Objects
.
isNull
(
vo
)
||
StringUtils
.
isBlank
(
vo
.
getTransferId
())
||
StringUtils
.
isBlank
(
vo
.
getAltId
())
||
StringUtils
.
isBlank
(
vo
.
getWxId
())
||
Objects
.
isNull
(
vo
.
getAmount
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"接收转账信息失败,参数为空"
);
}
BookGroupCollection
byTransferId
=
this
.
bookGroupCollectionDao
.
getByTransferId
(
vo
.
getTransferId
());
ReadingActivity
byTheme
=
readingActivityDao
.
getByThemeAndJoinCondition
(
vo
.
getRemark
(),
JoinConditionEnum
.
TRANSFER
.
value
);
// 处理收款消息
if
(
WxGroupSDKConstants
.
PaySubTypeEnum
.
RECEIVE_COLLECTION_MESSAGE
.
getCode
().
equals
(
vo
.
getPaySubType
()))
{
this
.
processReceiveCollectionMessage
(
vo
,
byTransferId
,
byTheme
);
}
// 收款成功
if
(
WxGroupSDKConstants
.
PaySubTypeEnum
.
COLLECTION
.
getCode
().
equals
(
vo
.
getPaySubType
()))
{
this
.
processCollection
(
vo
,
byTransferId
,
byTheme
);
}
}
/**
* 处理收款消息
*/
@Transactional
(
rollbackFor
=
{
Exception
.
class
})
public
void
processReceiveCollectionMessage
(
CollectionVO
vo
,
BookGroupCollection
byTransferId
,
ReadingActivity
byTheme
)
{
SendTextMessageVO
sendText
=
new
SendTextMessageVO
();
// 转账说明不正确
if
(
Objects
.
isNull
(
byTheme
))
{
sendText
.
setContent
(
"您的转账说明不对,请填写正确金额和转账说明(活动主题)之后重新转账,此笔转账将会在24小时后自动退回。"
);
sendText
.
setAltId
(
vo
.
getAltId
());
sendText
.
setWxGroupId
(
vo
.
getWxId
());
sendText
.
setIp
(
getIP
(
vo
.
getAltId
()));
WxGroupSDK
.
sendTextMessage
(
sendText
);
return
;
}
// 转账金额不正确
if
(
byTheme
.
getJoinAmount
().
compareTo
(
vo
.
getAmount
())
!=
0
)
{
sendText
.
setContent
(
"您的转账金额不对,请填写正确金额和转账说明(活动主题)之后重新转账,此笔转账将会在24小时后自动退回。"
);
sendText
.
setAltId
(
vo
.
getAltId
());
sendText
.
setWxGroupId
(
vo
.
getWxId
());
sendText
.
setIp
(
getIP
(
vo
.
getAltId
()));
WxGroupSDK
.
sendTextMessage
(
sendText
);
return
;
}
if
(
Objects
.
isNull
(
byTransferId
))
{
// 插入收款中记录
BookGroupCollection
bookGroupCollection
=
BookGroupCollection
.
builder
().
amount
(
vo
.
getAmount
())
.
collectionRobotId
(
vo
.
getAltId
()).
transferId
(
vo
.
getTransferId
()).
status
(
BookBusinessConstants
.
CollectionStatus
.
RECEIVING
.
getCode
())
.
createUser
(
vo
.
getWxId
()).
createTime
(
new
Date
()).
updateUser
(
vo
.
getWxId
()).
updateTime
(
new
Date
()).
build
();
this
.
bookGroupCollectionDao
.
insert
(
bookGroupCollection
);
}
else
{
log
.
info
(
"[processReceiveCollectionMessage] byTransferId 已存在 vo:{}; byTransferId:{}"
,
vo
,
byTransferId
);
}
// 收款
ReceiptMoneyVO
receiptMoneyVO
=
new
ReceiptMoneyVO
();
receiptMoneyVO
.
setTransferId
(
vo
.
getTransferId
());
receiptMoneyVO
.
setAltId
(
vo
.
getAltId
());
receiptMoneyVO
.
setWxId
(
vo
.
getWxId
());
receiptMoneyVO
.
setIp
(
getIP
(
vo
.
getAltId
()));
WxGroupSDK
.
receiptMoney
(
receiptMoneyVO
);
}
/**
* 收款
*/
@Transactional
(
rollbackFor
=
{
Exception
.
class
})
public
void
processCollection
(
CollectionVO
vo
,
BookGroupCollection
byTransferId
,
ReadingActivity
byTheme
)
{
if
(
Objects
.
isNull
(
byTransferId
))
{
// 直接插入收款成功的数据
log
.
info
(
"[processCollection] 转账记录不存在时收款,直接插入转账成功 vo:{}"
,
vo
);
BookGroupCollection
bookGroupCollection
=
BookGroupCollection
.
builder
().
amount
(
vo
.
getAmount
())
.
collectionRobotId
(
vo
.
getAltId
()).
transferId
(
vo
.
getTransferId
()).
status
(
BookBusinessConstants
.
CollectionStatus
.
COLLECTION_SUCCESSFUL
.
getCode
())
.
createUser
(
vo
.
getWxId
()).
createTime
(
new
Date
()).
updateUser
(
vo
.
getWxId
()).
updateTime
(
new
Date
()).
build
();
this
.
bookGroupCollectionDao
.
insert
(
bookGroupCollection
);
}
else
{
// 修改收款状态为成功
byTransferId
.
setStatus
(
BookBusinessConstants
.
CollectionStatus
.
COLLECTION_SUCCESSFUL
.
getCode
());
this
.
bookGroupCollectionDao
.
update
(
byTransferId
);
}
//发群规
this
.
sendWxMsg
(
SendMessageTypeEnum
.
SELF
.
getCode
(),
byTheme
.
getRuleType
(),
vo
.
getAltId
(),
vo
.
getWxId
(),
byTheme
.
getRule
(),
byTheme
.
getRuleResourceId
(),
null
);
// 发送邀请进群链接
if
(
JoinTypeEnum
.
LINK
.
value
.
equals
(
byTheme
.
getJoinType
()))
{
List
<
ReadingGroup
>
groupList
=
readingGroupDao
.
getByActivityId
(
byTheme
.
getId
());
if
(
CollectionUtils
.
isEmpty
(
groupList
))
{
throw
new
BookBizException
(
BookBizException
.
ID_NOT_EXIST
,
"活动没有可用群"
);
}
Map
<
String
,
Integer
>
groupUserNum
=
groupQrcodeBiz
.
getGroupUserNum
(
groupList
.
stream
().
map
(
ReadingGroup:
:
getWxGroupId
).
collect
(
Collectors
.
toList
()));
String
min
=
null
;
Integer
num
=
500
;
for
(
ReadingGroup
group
:
groupList
)
{
Integer
integer
=
groupUserNum
.
get
(
group
.
getWxGroupId
());
if
(
integer
<
num
)
{
num
=
integer
;
min
=
group
.
getWxGroupId
();
}
}
SendGroupInviteVO
inviteVO
=
new
SendGroupInviteVO
();
inviteVO
.
setWxGroupId
(
min
);
inviteVO
.
setAltId
(
vo
.
getAltId
());
inviteVO
.
setWxId
(
vo
.
getWxId
());
inviteVO
.
setIp
(
getIP
(
vo
.
getAltId
()));
WxGroupSDK
.
sendGroupInvite
(
inviteVO
);
}
// 发送群二维码图片
if
(
JoinTypeEnum
.
QRCODE
.
value
.
equals
(
byTheme
.
getJoinType
()))
{
SendPicMessageVO
picMessageVO
=
new
SendPicMessageVO
();
picMessageVO
.
setAltId
(
vo
.
getAltId
());
picMessageVO
.
setWxGroupId
(
vo
.
getWxId
());
picMessageVO
.
setPicUrl
(
byTheme
.
getJoinQrcodePic
());
picMessageVO
.
setIp
(
getIP
(
vo
.
getAltId
()));
WxGroupSDK
.
sendPicMessage
(
picMessageVO
);
}
}
@Override
@ParamLog
(
"创建共读活动"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Long
add
(
ReadingActivityBaseParamDTO
readingActivityBaseParamDTO
)
{
Boolean
themeExist
=
readingActivityDao
.
themeExist
(
readingActivityBaseParamDTO
.
getTheme
());
if
(
themeExist
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"活动主题名称已存在"
);
}
//活动创建
Date
inviteTime
=
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getInviteTime
());
Date
startTime
=
null
;
Date
endTime
=
null
;
if
(
JoinTypeEnum
.
LINK
.
value
.
equals
(
readingActivityBaseParamDTO
.
getJoinType
())){
startTime
=
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getStartTime
());
endTime
=
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getEndTime
());
}
ReadingActivity
readingActivity
=
new
ReadingActivity
();
BeanUtils
.
copyProperties
(
readingActivityBaseParamDTO
,
readingActivity
);
readingActivity
.
setStartTime
(
startTime
);
readingActivity
.
setEndTime
(
endTime
);
readingActivity
.
setClockOpen
(
false
);
readingActivity
.
setClockResultOpen
(
false
);
readingActivity
.
setRiddleOpen
(
false
);
readingActivity
.
setAwardOpen
(
false
);
readingActivityDao
.
insert
(
readingActivity
);
Long
activityId
=
readingActivity
.
getId
();
//邀请语
List
<
ReadingInvite
>
inviteList
=
readingActivityBaseParamDTO
.
getInviteList
();
inviteList
.
forEach
(
readingInvite
->
{
readingInvite
.
setInviteTime
(
inviteTime
);
readingInvite
.
setActivityId
(
activityId
);
readingInvite
.
setCreateUser
(
readingActivityBaseParamDTO
.
getCreateUser
());
});
readingInviteDao
.
insert
(
inviteList
);
//邀请用户
List
<
ReadingUser
>
userList
=
readingActivityBaseParamDTO
.
getUserList
();
for
(
ReadingUser
readingUser
:
userList
)
{
readingUser
.
setActivityId
(
activityId
);
readingUser
.
setCreateUser
(
readingActivityBaseParamDTO
.
getCreateUser
());
if
(
StringUtil
.
isEmpty
(
readingUser
.
getAltId
()))
{
BookGroupCipherUser
bookGroupCipherUser
=
bookGroupCipherUserDao
.
getByWxUserId
(
readingUser
.
getWxUserId
());
if
(
null
==
bookGroupCipherUser
)
{
continue
;
}
readingUser
.
setAltId
(
bookGroupCipherUser
.
getAltId
());
}
if
(
JoinConditionEnum
.
NO
.
value
.
equals
(
readingActivity
.
getJoinCondition
()))
{
readingUser
.
setJoinState
(
JoinStateEnum
.
JOIN
.
value
);
}
else
{
readingUser
.
setJoinState
(
JoinStateEnum
.
NOT_JOIN
.
value
);
}
}
readingUserDao
.
insert
(
userList
);
//添加定时任务
this
.
addQuartz
(
activityId
,
readingActivityBaseParamDTO
);
//根据人数建群
this
.
createGroup
(
userList
,
readingActivity
);
return
activityId
;
}
@Override
@ParamLog
(
"修改共读活动基本设置"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
ReadingActivityBaseParamDTO
readingActivityBaseParamDTO
)
{
Long
activityId
=
readingActivityBaseParamDTO
.
getId
();
ReadingActivity
originActivity
=
readingActivityDao
.
getById
(
activityId
);
Boolean
themeUpdate
=
false
;
if
(!
readingActivityBaseParamDTO
.
getTheme
().
equals
(
originActivity
.
getTheme
())){
//修改了活动主题
themeUpdate
=
true
;
Boolean
themeExist
=
readingActivityDao
.
themeExist
(
readingActivityBaseParamDTO
.
getTheme
());
if
(
themeExist
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"活动主题名称已存在"
);
}
}
//基本设置更新
Date
inviteTime
=
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getInviteTime
());
Date
startTime
=
null
;
Date
endTime
=
null
;
if
(
JoinTypeEnum
.
LINK
.
value
.
equals
(
readingActivityBaseParamDTO
.
getJoinType
())){
startTime
=
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getStartTime
());
endTime
=
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getEndTime
());
}
ReadingActivity
readingActivity
=
new
ReadingActivity
();
BeanUtils
.
copyProperties
(
readingActivityBaseParamDTO
,
readingActivity
);
readingActivity
.
setStartTime
(
startTime
);
readingActivity
.
setEndTime
(
endTime
);
readingActivityDao
.
update
(
readingActivity
);
if
(
themeUpdate
){
//更新群名称
List
<
ReadingGroup
>
groupList
=
readingGroupDao
.
getAllByActivityId
(
activityId
);
for
(
ReadingGroup
group:
groupList
){
String
suffix
=
group
.
getWxGroupName
().
substring
(
group
.
getWxGroupName
().
length
()-
3
);
String
groupNewName
=
readingActivityBaseParamDTO
.
getTheme
()
+
suffix
;
readingGroupDao
.
updateGroupName
(
groupNewName
,
group
.
getId
());
if
(!
StringUtil
.
isEmpty
(
group
.
getWxGroupId
())){
//微信群已创建
String
masterId
=
readingGroupRobotDao
.
getMasterRobotByWxGroupId
(
group
.
getWxGroupId
());
SendWeixinRequestTools
.
changeGroupName
(
masterId
,
group
.
getWxGroupId
(),
groupNewName
,
getIP
(
masterId
));
}
}
}
if
(
JoinTypeEnum
.
LINK
.
value
.
equals
(
readingActivityBaseParamDTO
.
getJoinType
())){
//删除开场语结束语定时任务
deleteQuartzJob
(
ReadingActivityConstant
.
JOB_NAME_START
,
activityId
);
deleteQuartzJob
(
ReadingActivityConstant
.
JOB_NAME_END
,
activityId
);
}
//删除邀请设置
readingInviteDao
.
deleteByActivityId
(
activityId
);
//删除邀请语定时任务
deleteQuartzJob
(
ReadingActivityConstant
.
JOB_NAME_INVITE
,
activityId
);
//新增邀请语设置
List
<
ReadingInvite
>
inviteList
=
readingActivityBaseParamDTO
.
getInviteList
();
inviteList
.
forEach
(
readingInvite
->
{
readingInvite
.
setInviteTime
(
inviteTime
);
readingInvite
.
setActivityId
(
activityId
);
readingInvite
.
setCreateUser
(
readingActivityBaseParamDTO
.
getCreateUser
());
});
readingInviteDao
.
insert
(
inviteList
);
//新增开场语结束语邀请语定时任务
addQuartz
(
activityId
,
readingActivityBaseParamDTO
);
}
@ParamLog
(
"删除定时任务"
)
private
void
deleteQuartzJob
(
String
jobName
,
Long
activityId
)
{
try
{
scheduleService
.
deleteJob
(
jobName
+
activityId
,
ReadingActivityConstant
.
JOB_GROUP
);
}
catch
(
Exception
e
)
{
log
.
error
(
"删除定时任务失败,jobName="
+
jobName
+
"+activityId+"
+
activityId
);
}
}
@Override
@ParamLog
(
"添加高级配置"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateAdditionSetting
(
ReadingActivityAdditionParamDTO
readingActivityAdditionParamDTO
)
{
if
(
readingActivityAdditionParamDTO
.
getClockOpen
())
{
//添加打卡每日提醒定时任务
deleteQuartzJob
(
ReadingActivityConstant
.
JOB_NAME_CLOCK_REMIND
,
readingActivityAdditionParamDTO
.
getId
());
addClockRemindQuartz
(
readingActivityAdditionParamDTO
.
getId
(),
readingActivityAdditionParamDTO
.
getClockRemindTime
());
}
ReadingActivity
readingActivity
=
new
ReadingActivity
();
BeanUtils
.
copyProperties
(
readingActivityAdditionParamDTO
,
readingActivity
);
readingActivity
.
setId
(
readingActivityAdditionParamDTO
.
getId
());
readingActivityDao
.
updateAdditionSetting
(
readingActivity
);
}
@ParamLog
(
"添加打卡每日提醒定时任务"
)
private
void
addClockRemindQuartz
(
Long
id
,
String
sendtime
)
{
String
cron
;
try
{
int
hour
=
Integer
.
parseInt
(
sendtime
.
substring
(
0
,
2
));
int
minute
=
Integer
.
parseInt
(
sendtime
.
substring
(
3
,
5
));
int
second
=
Integer
.
parseInt
(
sendtime
.
substring
(
6
,
8
));
cron
=
second
+
" "
+
minute
+
" "
+
hour
+
" * * ?"
;
}
catch
(
Exception
e
)
{
throw
new
BookBizException
(
BookBizException
.
ERROR
,
"时间格式错误"
);
}
ScheduleJob
scheduleJob
=
new
ScheduleJob
();
scheduleJob
.
setJobGroup
(
ReadingActivityConstant
.
JOB_GROUP
);
scheduleJob
.
setJobName
(
ReadingActivityConstant
.
JOB_NAME_CLOCK_REMIND
+
id
);
scheduleJob
.
setCronExpression
(
cron
);
CallBackParam
callBackParam
=
new
CallBackParam
();
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"activityId"
,
id
);
callBackParam
.
setParamMap
(
paramMap
);
callBackParam
.
setMethodName
(
"sendClockRemind"
);
callBackParam
.
setBeanName
(
"readingActivityService"
);
Map
<
String
,
Object
>
scheduleMap
=
new
HashMap
<>();
scheduleMap
.
put
(
"scheduleJob"
,
scheduleJob
);
scheduleMap
.
put
(
"callBackParam"
,
callBackParam
);
try
{
scheduleService
.
addCronJob
(
scheduleMap
);
}
catch
(
Exception
e
)
{
log
.
error
(
"【共读活动】设置定时任务失败"
+
e
.
getMessage
(),
e
);
}
}
@ParamLog
(
"创建定时任务"
)
public
void
addQuartz
(
Long
activityId
,
ReadingActivityBaseParamDTO
readingActivityBaseParamDTO
)
{
//邀请语定时任务
this
.
addSendQuartzJob
(
activityId
,
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getInviteTime
()),
ReadingActivityConstant
.
JOB_NAME_INVITE
,
"sendInviteMsg"
);
//群链接方式入群
if
(
JoinTypeEnum
.
LINK
.
value
.
equals
(
readingActivityBaseParamDTO
.
getJoinType
()))
{
//开场语定时任务
this
.
addSendQuartzJob
(
activityId
,
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getStartTime
()),
ReadingActivityConstant
.
JOB_NAME_START
,
"sendStartMsg"
);
//结束语定时任务
this
.
addSendQuartzJob
(
activityId
,
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getEndTime
()),
ReadingActivityConstant
.
JOB_NAME_END
,
"sendEndMsg"
);
}
}
@ParamLog
(
"添加定时任务"
)
public
void
addSendQuartzJob
(
Long
activityId
,
Date
sendTime
,
String
jobName
,
String
methodName
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"activityId"
,
activityId
);
ScheduleJob
scheduleJob
=
new
ScheduleJob
();
scheduleJob
.
setJobGroup
(
ReadingActivityConstant
.
JOB_GROUP
);
scheduleJob
.
setJobName
(
jobName
+
activityId
);
Long
second
=
(
sendTime
.
getTime
()
-
System
.
currentTimeMillis
())
/
1000
;
scheduleJob
.
setStartTime
(
second
.
intValue
());
scheduleJob
.
setStartTimeFormat
(
"ss"
);
scheduleJob
.
setRepeatCount
(
0
);
scheduleJob
.
setIntervalTime
(
0
);
scheduleJob
.
setIntervalTimeFormat
(
"dd"
);
CallBackParam
callBackParam
=
new
CallBackParam
();
callBackParam
.
setBeanName
(
"readingActivityService"
);
callBackParam
.
setMethodName
(
methodName
);
callBackParam
.
setParamMap
(
map
);
Map
<
String
,
Object
>
scheduleMap
=
new
HashMap
<>();
scheduleMap
.
put
(
"scheduleJob"
,
scheduleJob
);
scheduleMap
.
put
(
"callBackParam"
,
callBackParam
);
try
{
scheduleService
.
addSimpleJob
(
scheduleMap
);
}
catch
(
Exception
e
)
{
log
.
error
(
"【共读活动】添加定时任务失败"
+
e
.
getMessage
(),
e
);
}
}
@ParamLog
(
"创建群"
)
public
void
createGroup
(
List
<
ReadingUser
>
userList
,
ReadingActivity
readingActivity
)
{
if
(!
JoinTypeEnum
.
LINK
.
value
.
equals
(
readingActivity
.
getJoinType
())){
return
;
}
List
<
String
>
robotIdList
=
userList
.
stream
().
filter
(
s
->
s
.
getAltId
()
!=
null
).
map
(
ReadingUser:
:
getAltId
).
distinct
().
collect
(
Collectors
.
toList
());
if
(
ListUtils
.
isEmpty
(
robotIdList
)
||
robotIdList
.
size
()<
3
){
log
.
info
(
"小号数量小于3个,取其他号补充"
);
Integer
need
=
3
-
robotIdList
.
size
();
//所需数量
if
(
"pro"
.
equalsIgnoreCase
(
envStr
)){
List
<
String
>
altIds
=
wechatGroupConsr
.
getSelfRobotByRobotType
(
null
);
altIds
.
removeAll
(
robotIdList
);
if
(
need
==
1
)
{
robotIdList
.
add
(
altIds
.
get
(
0
));
}
else
{
robotIdList
.
add
(
altIds
.
get
(
0
));
robotIdList
.
add
(
altIds
.
get
(
1
));
}
}
else
{
String
alt1
=
"wxid_lw4vjnxjg45d22"
;
//zyj
String
alt2
=
"wxid_gsfyy4m3a3w221"
;
//guiq
if
(
need
==
1
){
robotIdList
.
add
(
alt1
);
}
else
{
robotIdList
.
add
(
alt1
);
robotIdList
.
add
(
alt2
);
}
}
}
Integer
groupCount
=
(
userList
.
size
()+
robotIdList
.
size
())/
500
+
1
;
//每个群最多人数
for
(
int
i
=
1
;
i
<=
groupCount
;
i
++){
//根据小号创建群,初始微信群id为空,创建完后更新wxgroupid
ReadingGroup
readingGroup
=
new
ReadingGroup
();
readingGroup
.
setWxGroupId
(
null
);
readingGroup
.
setActivityId
(
readingActivity
.
getId
());
readingGroup
.
setWxGroupName
(
readingActivity
.
getTheme
()
+
"-"
+
i
+
"群"
);
readingGroup
.
setCreateUser
(
readingActivity
.
getCreateUser
());
readingGroupDao
.
insert
(
readingGroup
);
Long
groupId
=
readingGroup
.
getId
();
List
<
ReadingGroupRobot
>
readingGroupRobots
=
new
ArrayList
<>();
for
(
String
altId
:
robotIdList
)
{
ReadingGroupRobot
readingGroupRobot
=
new
ReadingGroupRobot
();
readingGroupRobot
.
setWxGroupId
(
null
);
readingGroupRobot
.
setIsMaster
(
false
);
readingGroupRobot
.
setAltId
(
altId
);
readingGroupRobot
.
setGroupId
(
groupId
);
readingGroupRobots
.
add
(
readingGroupRobot
);
}
readingGroupRobotDao
.
insert
(
readingGroupRobots
);
String
altId
=
robotIdList
.
get
(
0
);
//群主
robotIdList
.
remove
(
0
);
//成员列表
CreateGroupVO
createGroupVO
=
new
CreateGroupVO
();
createGroupVO
.
setMembers
(
robotIdList
);
createGroupVO
.
setAltId
(
altId
);
createGroupVO
.
setCode
(
SendMessageTypeEnum
.
GROUP
.
getCode
());
createGroupVO
.
setWxId
(
altId
);
createGroupVO
.
setIp
(
getIP
(
altId
));
WxGroupSDK
.
createGroup
(
createGroupVO
);
log
.
info
(
"请求建群 createGroupVO:{}"
,
createGroupVO
);
}
}
@Override
@ParamLog
(
"共读活动定时任务回调"
)
public
void
sendQuartzMsg
(
String
methodType
,
Long
activityId
)
{
ReadingActivity
readingActivity
=
readingActivityDao
.
getById
(
activityId
);
if
(
null
==
readingActivity
)
{
return
;
}
//给用户发邀请语,群链接/二维码
if
(
"invite"
.
equals
(
methodType
))
{
sendInviteToUser
(
activityId
);
return
;
}
//活动开始
if
(
"start"
.
equals
(
methodType
))
{
//群链接入群才能发群消息
if
(
JoinTypeEnum
.
LINK
.
value
.
equals
(
readingActivity
.
getJoinType
()))
{
//开场语
sendToGroup
(
activityId
,
readingActivity
.
getStartSloganType
(),
readingActivity
.
getStartSlogan
(),
readingActivity
.
getStartResourceId
());
}
return
;
}
//活动结束
if
(
"end"
.
equals
(
methodType
))
{
//群链接入群才能发群消息
if
(
JoinTypeEnum
.
LINK
.
value
.
equals
(
readingActivity
.
getJoinType
()))
{
//结束语
sendToGroup
(
activityId
,
readingActivity
.
getEndSloganType
(),
readingActivity
.
getEndSlogan
(),
readingActivity
.
getEndResourceId
());
//发送打卡成果
sendClockResultToGroup
(
readingActivity
);
try
{
Thread
.
sleep
(
2
*
60
*
1000
);
}
catch
(
InterruptedException
e
)
{
log
.
error
(
"线程休眠2min失败"
+
e
.
getMessage
());
}
//小号退群
exitGroup
(
activityId
);
}
//给用户发送活动奖励
sendAwardToUser
(
readingActivity
);
return
;
}
}
@ParamLog
(
"小号退群"
)
private
void
exitGroup
(
Long
activityId
)
{
List
<
ReadingGroupRobot
>
groupRobotList
=
readingGroupRobotDao
.
getByActivityId
(
activityId
);
if
(
ListUtils
.
isEmpty
(
groupRobotList
))
{
log
.
error
(
"没有可用的群"
);
return
;
}
ThreadPoolUtils
.
SEND_MESSAGE_THREAD_POOL
.
execute
(()
->
{
for
(
ReadingGroupRobot
groupRobot
:
groupRobotList
)
{
String
wxGroupId
=
groupRobot
.
getWxGroupId
();
String
altId
=
groupRobot
.
getAltId
();
ExitGroupVO
exitGroupVO
=
new
ExitGroupVO
();
exitGroupVO
.
setAltId
(
altId
);
exitGroupVO
.
setCode
(
SendMessageTypeEnum
.
GROUP
.
getCode
());
exitGroupVO
.
setIp
(
getIP
(
altId
));
exitGroupVO
.
setWxGroupId
(
wxGroupId
);
exitGroupVO
.
setWxId
(
altId
);
WxGroupSDK
.
exitGroup
(
exitGroupVO
);
log
.
info
(
"小号退群 exitGroupVO:{}"
,
exitGroupVO
);
}
});
}
@ParamLog
(
"给用户发邀请语"
)
public
void
sendInviteToUser
(
Long
activityId
)
{
ReadingActivity
readingActivity
=
readingActivityDao
.
getById
(
activityId
);
if
(
null
==
readingActivity
){
return
;
}
List
<
ReadingUser
>
userList
=
readingUserDao
.
getByActivityId
(
activityId
,
null
);
if
(
ListUtils
.
isEmpty
(
userList
))
{
return
;
}
List
<
ReadingInvite
>
inviteList
=
readingInviteDao
.
getByActivityId
(
activityId
);
if
(
ListUtils
.
isEmpty
(
inviteList
))
{
return
;
}
ThreadPoolUtils
.
SEND_MESSAGE_THREAD_POOL
.
execute
(()
->
{
for
(
ReadingUser
readingUser
:
userList
)
{
String
altId
=
readingUser
.
getAltId
();
String
wxUserId
=
readingUser
.
getWxUserId
();
//邀请语
for
(
ReadingInvite
invite
:
inviteList
)
{
sendWxMsg
(
SendMessageTypeEnum
.
SELF
.
getCode
(),
invite
.
getInviteType
(),
altId
,
wxUserId
,
invite
.
getInviteContent
(),
invite
.
getInviteResourceId
(),
null
);
}
//无进群条件
if
(
JoinConditionEnum
.
NO
.
value
.
equals
(
readingActivity
.
getJoinCondition
())){
//发群规
this
.
sendWxMsg
(
SendMessageTypeEnum
.
SELF
.
getCode
(),
readingActivity
.
getRuleType
(),
altId
,
wxUserId
,
readingActivity
.
getRule
(),
readingActivity
.
getRuleResourceId
(),
null
);
//发群链接/群二维码
sendGroupInviteToUser
(
altId
,
wxUserId
,
readingActivity
);
}
//关键词入群
else
if
(
JoinConditionEnum
.
KEYWORD
.
value
.
equals
(
readingActivity
.
getJoinCondition
())){
String
content
=
"请回复:“"
+
readingActivity
.
getJoinKeyword
()
+
"”,我会将入群链接发送给您。"
;
this
.
sendWxMsg
(
SendMessageTypeEnum
.
SELF
.
getCode
(),
ContentTypeEnum
.
TEXT
.
value
,
altId
,
wxUserId
,
content
,
null
,
null
);
}
//转账入群
else
if
(
JoinConditionEnum
.
TRANSFER
.
value
.
equals
(
readingActivity
.
getJoinCondition
())){
String
content
=
"活动名称:"
+
readingActivity
.
getTheme
()
+
"\n活动费用:¥"
+
readingActivity
.
getJoinAmount
()+
"\n若想参加本次活动,可直接转账给我,转账说明请填写活动名称。当转账金额与活动名称都符合时,我才会接受转账,"
+
"接受后我将发送入群链接(若人数较多,可能会有延迟)。"
;
this
.
sendWxMsg
(
SendMessageTypeEnum
.
SELF
.
getCode
(),
ContentTypeEnum
.
TEXT
.
value
,
altId
,
wxUserId
,
content
,
null
,
null
);
}
try
{
Thread
.
sleep
(
3000
);
}
catch
(
InterruptedException
e
)
{
log
.
error
(
"线程休眠3s失败"
+
e
.
getMessage
());
}
}
});
}
@ParamLog
(
"发送打卡成果"
)
public
void
sendClockResultToGroup
(
ReadingActivity
readingActivity
)
{
if
(!
readingActivity
.
getClockResultOpen
()){
return
;
}
//todo
String
resultLink
=
""
;
sendToGroup
(
readingActivity
.
getId
(),
ContentTypeEnum
.
TEXT
.
value
,
resultLink
,
null
);
}
@ParamLog
(
"发送活动奖励"
)
public
void
sendAwardToUser
(
ReadingActivity
readingActivity
)
{
if
(!
readingActivity
.
getAwardOpen
())
{
return
;
}
List
<
ReadingUser
>
userList
=
readingUserDao
.
getByActivityId
(
readingActivity
.
getId
(),
JoinStateEnum
.
JOIN
.
value
);
if
(
ListUtils
.
isEmpty
(
userList
))
{
return
;
}
List
<
ReadingUser
>
readingUserList
=
new
ArrayList
<>();
readingUserList
.
addAll
(
userList
);
ThreadPoolUtils
.
SEND_MESSAGE_THREAD_POOL
.
execute
(()
->
{
for
(
ReadingUser
readingUser
:
readingUserList
)
{
String
altId
=
readingUser
.
getAltId
();
String
wxUserId
=
readingUser
.
getWxUserId
();
if
(!
StringUtil
.
isEmpty
(
readingActivity
.
getAwardText
()))
{
sendWxMsg
(
SendMessageTypeEnum
.
SELF
.
getCode
(),
ContentTypeEnum
.
TEXT
.
value
,
altId
,
wxUserId
,
readingActivity
.
getAwardText
(),
null
,
null
);
}
if
(!
StringUtil
.
isEmpty
(
readingActivity
.
getAwardPic
()))
{
sendSelfPic
(
altId
,
wxUserId
,
readingActivity
.
getAwardPic
());
}
}
});
}
@ParamLog
(
"给群发送消息"
)
public
void
sendToGroup
(
Long
activityId
,
Integer
contentType
,
String
content
,
String
resourceId
)
{
List
<
ReadingGroup
>
groupList
=
readingGroupDao
.
getByActivityId
(
activityId
);
if
(
ListUtils
.
isEmpty
(
groupList
))
{
log
.
error
(
"没有可用的群"
);
return
;
}
ThreadPoolUtils
.
SEND_MESSAGE_THREAD_POOL
.
execute
(()
->
{
for
(
ReadingGroup
group
:
groupList
)
{
String
wxGroupId
=
group
.
getWxGroupId
();
String
altId
=
readingGroupRobotDao
.
getMasterRobotByWxGroupId
(
wxGroupId
);
if
(
StringUtil
.
isEmpty
(
altId
))
{
continue
;
}
sendWxMsg
(
SendMessageTypeEnum
.
GROUP
.
getCode
(),
contentType
,
altId
,
null
,
content
,
resourceId
,
wxGroupId
);
}
});
}
@ParamLog
(
"发送文本或文件"
)
public
void
sendWxMsg
(
Integer
code
,
Integer
type
,
String
altId
,
String
userWxId
,
String
content
,
String
resourceId
,
String
wxGroupId
)
{
String
ip
=
getIP
(
altId
);
if
(
ContentTypeEnum
.
TEXT
.
value
.
equals
(
type
))
{
SendTextMessageVO
sendTextMessageVO
=
new
SendTextMessageVO
();
sendTextMessageVO
.
setContent
(
content
);
sendTextMessageVO
.
setAltId
(
altId
);
if
(
SendMessageTypeEnum
.
SELF
.
getCode
().
equals
(
code
))
{
sendTextMessageVO
.
setWxGroupId
(
userWxId
);
}
else
if
(
SendMessageTypeEnum
.
GROUP
.
getCode
().
equals
(
code
))
{
sendTextMessageVO
.
setWxGroupId
(
wxGroupId
);
}
sendTextMessageVO
.
setIp
(
ip
);
sendTextMessageVO
.
setCode
(
code
);
WxGroupSDK
.
sendTextMessage
(
sendTextMessageVO
);
log
.
info
(
"发送文本 sendTextMessageVO:{}"
,
sendTextMessageVO
);
return
;
}
if
(
ContentTypeEnum
.
FILE
.
value
.
equals
(
type
))
{
SendFileVO
sendFileVO
=
new
SendFileVO
();
FileUploadInfo
fileUploadInfo
=
convertConsr
.
getByFileId
(
resourceId
);
if
(
null
==
fileUploadInfo
)
{
log
.
error
(
"文件路径为空,resourceId"
+
resourceId
);
return
;
}
String
fileName
=
fileUploadInfo
.
getName
();
String
fileType
=
fileUploadInfo
.
getExt
();
log
.
info
(
"fileName="
+
fileName
+
"+fileType+"
+
fileType
);
if
(!
StringUtil
.
isEmpty
(
fileType
)
&&
fileName
.
contains
(
fileType
)){
//去掉后缀
fileName
=
fileName
.
substring
(
0
,
fileName
.
indexOf
(
fileType
)-
1
);
}
sendFileVO
.
setFileName
(
fileName
);
sendFileVO
.
setFileUrl
(
fileUploadInfo
.
getUrl
());
sendFileVO
.
setIp
(
ip
);
sendFileVO
.
setAltId
(
altId
);
if
(
SendMessageTypeEnum
.
SELF
.
getCode
().
equals
(
code
))
{
sendFileVO
.
setWxId
(
userWxId
);
}
else
if
(
SendMessageTypeEnum
.
GROUP
.
getCode
().
equals
(
code
))
{
sendFileVO
.
setWxGroupId
(
wxGroupId
);
sendFileVO
.
setWxId
(
wxGroupId
);
}
sendFileVO
.
setCode
(
code
);
WxGroupSDK
.
sendFile
(
sendFileVO
);
log
.
info
(
"发送文件 sendFileVO:{}"
,
sendFileVO
);
return
;
}
try
{
Thread
.
sleep
(
3000
);
}
catch
(
InterruptedException
e
)
{
log
.
error
(
"线程休眠3s失败"
+
e
.
getMessage
());
}
}
@Override
@ParamLog
(
"关键词进群校验"
)
public
void
receiveKeyWord
(
SendTextDTO
sendTextDTO
)
{
//个人号收到的消息
if
(
SendMessageTypeEnum
.
SELF
.
getCode
().
equals
(
sendTextDTO
.
getCode
())){
String
textContent
=
sendTextDTO
.
getTextContent
().
trim
();
String
wxUserId
=
sendTextDTO
.
getWechatUserId
();
String
wxId
=
sendTextDTO
.
getWxId
();
//关键词是否正确
ReadingActivity
readingActivity
=
readingActivityDao
.
getJoinActivityByKeyword
(
wxId
,
wxUserId
,
textContent
);
if
(
null
!=
readingActivity
){
List
<
ReadingInvite
>
inviteList
=
readingInviteDao
.
getByActivityId
(
readingActivity
.
getId
());
Date
inviteTime
=
new
Date
();
if
(!
ListUtils
.
isEmpty
(
inviteList
)){
inviteTime
=
inviteList
.
get
(
0
).
getInviteTime
();
}
if
(
inviteTime
.
after
(
new
Date
())){
return
;
}
//发群规
this
.
sendWxMsg
(
SendMessageTypeEnum
.
SELF
.
getCode
(),
readingActivity
.
getRuleType
(),
wxId
,
wxUserId
,
readingActivity
.
getRule
(),
readingActivity
.
getRuleResourceId
(),
null
);
//入群链接/群二维码
this
.
sendGroupInviteToUser
(
wxId
,
wxUserId
,
readingActivity
);
}
}
}
@ParamLog
(
"个人号发送进群链接/群二维码"
)
private
void
sendGroupInviteToUser
(
String
altId
,
String
userWxId
,
ReadingActivity
readingActivity
)
{
if
(
JoinTypeEnum
.
LINK
.
value
.
equals
(
readingActivity
.
getJoinType
())){
List
<
ReadingGroup
>
groupList
=
readingGroupDao
.
getByActivityId
(
readingActivity
.
getId
());
if
(
CollectionUtils
.
isEmpty
(
groupList
))
{
log
.
error
(
"活动没有可用群,activityId="
+
readingActivity
.
getId
());
}
Map
<
String
,
Integer
>
groupUserNum
=
groupQrcodeBiz
.
getGroupUserNum
(
groupList
.
stream
().
map
(
ReadingGroup:
:
getWxGroupId
).
collect
(
Collectors
.
toList
()));
String
min
=
null
;
Integer
num
=
500
;
for
(
ReadingGroup
group
:
groupList
)
{
Integer
integer
=
groupUserNum
.
get
(
group
.
getWxGroupId
());
if
(
integer
<
num
)
{
num
=
integer
;
min
=
group
.
getWxGroupId
();
}
}
SendGroupInviteVO
sendGroupInviteVO
=
new
SendGroupInviteVO
();
sendGroupInviteVO
.
setAltId
(
altId
);
sendGroupInviteVO
.
setWxId
(
userWxId
);
sendGroupInviteVO
.
setWxGroupId
(
min
);
sendGroupInviteVO
.
setIp
(
getIP
(
altId
));
WxGroupSDK
.
sendGroupInvite
(
sendGroupInviteVO
);
log
.
info
(
"发送进群链接 sendGroupInviteVO:{}"
,
sendGroupInviteVO
);
return
;
}
if
(
JoinTypeEnum
.
QRCODE
.
value
.
equals
(
readingActivity
.
getJoinType
())){
this
.
sendSelfPic
(
altId
,
userWxId
,
readingActivity
.
getJoinQrcodePic
());
return
;
}
}
@ParamLog
(
"个人号发送图片"
)
private
void
sendSelfPic
(
String
altId
,
String
userWxId
,
String
pic
)
{
SendPicMessageVO
sendPicMessageVO
=
new
SendPicMessageVO
();
sendPicMessageVO
.
setCode
(
SendMessageTypeEnum
.
SELF
.
getCode
());
sendPicMessageVO
.
setAltId
(
altId
);
sendPicMessageVO
.
setWxGroupId
(
userWxId
);
sendPicMessageVO
.
setPicUrl
(
pic
);
sendPicMessageVO
.
setIp
(
getIP
(
altId
));
WxGroupSDK
.
sendPicMessage
(
sendPicMessageVO
);
log
.
info
(
"发送图片sendPicMessage:"
+
sendPicMessageVO
);
}
/**
* 根据小号获取ip
*/
@Override
public
String
getIP
(
String
altId
)
{
String
ip
=
null
;
GroupRobotDTO
groupRobotDTO
=
wechatGroupConsr
.
getGroupRobotByWxId
(
altId
);
if
(
null
!=
groupRobotDTO
)
{
WeixinQrcodeGeneration
weixinQrcodeGeneration
=
weixinQrcodeGenerationDao
.
getByGeneration
(
groupRobotDTO
.
getVersion
());
if
(
null
!=
weixinQrcodeGeneration
)
{
ip
=
weixinQrcodeGeneration
.
getWechatGroupIp
();
}
}
return
ip
;
}
@Override
public
ReadingActivityDTO
getById
(
Long
id
)
{
ReadingActivity
readingActivity
=
readingActivityDao
.
getById
(
id
);
if
(
null
==
readingActivity
)
{
return
new
ReadingActivityDTO
();
}
ReadingActivityDTO
activityDTO
=
new
ReadingActivityDTO
();
BeanUtils
.
copyProperties
(
readingActivity
,
activityDTO
);
List
<
ReadingInvite
>
inviteList
=
readingInviteDao
.
getByActivityId
(
id
);
List
<
ReadingUser
>
userList
=
readingUserDao
.
getByActivityId
(
id
,
null
);
AdvertisingBrandDTO
advertisingBrandDTO
=
advertisingBrandDao
.
getBrandById
(
readingActivity
.
getBrandId
());
if
(
null
!=
advertisingBrandDTO
)
{
activityDTO
.
setBrandName
(
advertisingBrandDTO
.
getBrandName
());
}
//填充活动资源
setActivityResource
(
readingActivity
,
activityDTO
);
//填充邀请资源
setInviteResource
(
inviteList
,
activityDTO
);
//小号用户分类
setGroupingUser
(
userList
,
activityDTO
);
activityDTO
.
setUserList
(
userList
);
//邀请时间
Date
inviteTime
=
inviteList
.
get
(
0
).
getInviteTime
();
activityDTO
.
setInviteTime
(
inviteTime
);
return
activityDTO
;
}
/**
* 小号用户分类
*/
private
void
setGroupingUser
(
List
<
ReadingUser
>
userList
,
ReadingActivityDTO
activityDTO
)
{
List
<
String
>
altIds
=
userList
.
stream
().
filter
(
s
->
s
.
getAltId
()
!=
null
).
map
(
ReadingUser:
:
getAltId
).
distinct
().
collect
(
Collectors
.
toList
());
if
(
ListUtils
.
isEmpty
(
altIds
))
{
return
;
}
Map
<
String
,
GroupUserDTO
>
baseInfoDTOMap
=
wechatGroupConsr
.
mapRobotInfoByIdList
(
altIds
);
List
<
GroupingUserDTO
>
groupingUserDTOList
=
new
ArrayList
<>();
for
(
String
altId
:
altIds
)
{
GroupingUserDTO
groupingUserDTO
=
new
GroupingUserDTO
();
groupingUserDTO
.
setAltId
(
altId
);
if
(!
MapUtils
.
isEmpty
(
baseInfoDTOMap
)
&&
baseInfoDTOMap
.
containsKey
(
altId
))
{
GroupUserDTO
baseInfoDTO
=
baseInfoDTOMap
.
get
(
altId
);
groupingUserDTO
.
setAltNickName
(
baseInfoDTO
.
getNickName
());
groupingUserDTO
.
setAltHeadPic
(
baseInfoDTO
.
getHeadPic
());
groupingUserDTO
.
setAltSex
(
baseInfoDTO
.
getSex
());
}
//小号对应的各用户
List
<
String
>
userIdList
=
userList
.
stream
().
filter
(
s
->
s
.
getAltId
().
equals
(
altId
)).
map
(
ReadingUser:
:
getWxUserId
).
distinct
().
collect
(
Collectors
.
toList
());
Map
<
String
,
GroupUserDTO
>
userDTOMap
=
wechatGroupConsr
.
mapWxUserInfoByWxIdList
(
userIdList
);
List
<
UserBaseDTO
>
userBaseDTOS
=
new
ArrayList
<>();
for
(
String
wxUserId
:
userIdList
)
{
UserBaseDTO
userBaseDTO
=
new
UserBaseDTO
();
userBaseDTO
.
setWxUserId
(
wxUserId
);
if
(!
MapUtils
.
isEmpty
(
userDTOMap
)
&&
userDTOMap
.
containsKey
(
wxUserId
))
{
GroupUserDTO
userDTO
=
userDTOMap
.
get
(
wxUserId
);
BeanUtils
.
copyProperties
(
userDTO
,
userBaseDTO
);
}
userBaseDTOS
.
add
(
userBaseDTO
);
}
groupingUserDTO
.
setUserBaseDTOS
(
userBaseDTOS
);
groupingUserDTOList
.
add
(
groupingUserDTO
);
}
activityDTO
.
setGroupingUserList
(
groupingUserDTOList
);
}
/**
* 填充邀请资源
*/
private
void
setInviteResource
(
List
<
ReadingInvite
>
inviteList
,
ReadingActivityDTO
activityDTO
)
{
for
(
ReadingInvite
invite
:
inviteList
)
{
if
(
ContentTypeEnum
.
FILE
.
value
.
equals
(
invite
.
getInviteType
())){
FileUploadInfo
fileUploadInfo
=
convertConsr
.
getByFileId
(
invite
.
getInviteResourceId
());
if
(
null
==
fileUploadInfo
)
{
continue
;
}
invite
.
setInviteResourceSize
(
fileUploadInfo
.
getUploadedSize
());
invite
.
setInviteResourceName
(
fileUploadInfo
.
getName
());
}
}
activityDTO
.
setInviteList
(
inviteList
);
}
/**
* 填充活动资源
*/
private
void
setActivityResource
(
ReadingActivity
readingActivity
,
ReadingActivityDTO
activityDTO
)
{
if
(
ContentTypeEnum
.
FILE
.
value
.
equals
(
readingActivity
.
getRuleType
()))
{
FileUploadInfo
fileUploadInfo
=
convertConsr
.
getByFileId
(
readingActivity
.
getRuleResourceId
());
if
(
null
!=
fileUploadInfo
){
activityDTO
.
setRuleResourceSize
(
fileUploadInfo
.
getUploadedSize
());
activityDTO
.
setRuleResourceName
(
fileUploadInfo
.
getName
());
}
}
if
(
JoinTypeEnum
.
LINK
.
value
.
equals
(
readingActivity
.
getJoinType
()))
{
if
(
null
!=
readingActivity
.
getStartSloganType
()
&&
ContentTypeEnum
.
FILE
.
value
.
equals
(
readingActivity
.
getStartSloganType
()))
{
FileUploadInfo
fileUploadInfo
=
convertConsr
.
getByFileId
(
readingActivity
.
getStartResourceId
());
if
(
null
!=
fileUploadInfo
){
activityDTO
.
setStartResourceSize
(
fileUploadInfo
.
getUploadedSize
());
activityDTO
.
setStartResourceName
(
fileUploadInfo
.
getName
());
}
}
if
(
null
!=
readingActivity
.
getEndSloganType
()
&&
ContentTypeEnum
.
FILE
.
value
.
equals
(
readingActivity
.
getEndSloganType
()))
{
FileUploadInfo
fileUploadInfo
=
convertConsr
.
getByFileId
(
readingActivity
.
getEndResourceId
());
if
(
null
!=
fileUploadInfo
){
activityDTO
.
setEndResourceSize
(
fileUploadInfo
.
getUploadedSize
());
activityDTO
.
setEndResourceName
(
fileUploadInfo
.
getName
());
}
}
}
}
@Override
public
void
sendClockRemind
(
Long
activityId
)
{
ReadingActivity
readingActivity
=
readingActivityDao
.
getById
(
activityId
);
if
(
null
==
readingActivity
)
{
return
;
}
if
(!
JoinTypeEnum
.
LINK
.
value
.
equals
(
readingActivity
.
getJoinType
())
||
!
readingActivity
.
getClockOpen
())
{
return
;
}
Date
startTime
=
readingActivity
.
getStartTime
();
Date
endTime
=
readingActivity
.
getEndTime
();
if
(
startTime
!=
null
&&
new
Date
().
before
(
startTime
))
{
return
;
}
if
(
endTime
!=
null
&&
new
Date
().
after
(
endTime
))
{
deleteQuartzJob
(
ReadingActivityConstant
.
JOB_NAME_CLOCK_REMIND
,
activityId
);
return
;
}
String
text
=
readingActivity
.
getClockRemindContent
();
String
clockLink
=
UrlUtils
.
getShortUrl4Own
(
readingActivity
.
getClockLink
());
text
=
text
+
"/n打卡链接:"
+
clockLink
;
//发送提醒内容+打卡链接
sendToGroup
(
activityId
,
ContentTypeEnum
.
TEXT
.
value
,
text
,
null
);
}
@ParamLog
(
"获取活动列表"
)
@Override
public
PageBeanNew
<
ReadingActivityDTO
>
getList
(
Integer
currentPage
,
Integer
numPerPage
)
{
if
(
currentPage
<
0
||
numPerPage
<=
0
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"分页参数有误!"
);
}
PageBeanNew
<
ReadingActivityDTO
>
page
=
readingActivityDao
.
listPageNew
(
new
PageParam
(
currentPage
,
numPerPage
),
new
HashMap
<>(),
"getList"
);
if
(!
ListUtils
.
isEmpty
(
page
.
getRecordList
()))
{
List
<
Long
>
brandIds
=
new
ArrayList
<>();
List
<
Long
>
activityIds
=
new
ArrayList
<>();
for
(
ReadingActivityDTO
readingActivityDTO
:
page
.
getRecordList
())
{
if
(!
brandIds
.
contains
(
readingActivityDTO
.
getBrandId
()))
{
brandIds
.
add
(
readingActivityDTO
.
getBrandId
());
}
if
(!
activityIds
.
contains
(
readingActivityDTO
.
getId
()))
{
activityIds
.
add
(
readingActivityDTO
.
getId
());
}
}
Map
<
Long
,
AdvertisingBrand
>
brandMap
=
advertisingBrandDao
.
getMapByIds
(
brandIds
);
List
<
ActivityUserCountDTO
>
userCountDTOS
=
readingUserDao
.
getUserCountsByActivityIds
(
activityIds
);
List
<
ActivityUserBookDTO
>
userBookDTOS
=
readingUserDao
.
getBooksByActivityIds
(
activityIds
);
Map
<
Long
,
List
<
ActivityUserBookDTO
>>
userBookDTOSMap
=
userBookDTOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
ActivityUserBookDTO:
:
getActivityId
));
Map
<
Long
,
Integer
>
userCountMap
=
new
HashMap
<>();
for
(
ActivityUserCountDTO
activityUserCountDTO
:
userCountDTOS
)
{
userCountMap
.
put
(
activityUserCountDTO
.
getActivityId
(),
activityUserCountDTO
.
getCount
());
}
for
(
ReadingActivityDTO
readingActivityDTO
:
page
.
getRecordList
())
{
AdvertisingBrand
advertisingBrand
=
brandMap
.
get
(
readingActivityDTO
.
getBrandId
());
if
(
advertisingBrand
!=
null
)
{
readingActivityDTO
.
setBrandName
(
advertisingBrand
.
getBrandName
());
}
readingActivityDTO
.
setUserCount
(
userCountMap
.
get
(
readingActivityDTO
.
getId
()));
readingActivityDTO
.
setActivityUserBookDTOS
(
userBookDTOSMap
.
get
(
readingActivityDTO
.
getId
()));
}
}
return
page
;
}
@Override
@ParamLog
(
"建群后进行分配"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
assignGroup
(
AssignGroupDTO
assignGroupDTO
)
{
String
wxGroupId
=
assignGroupDTO
.
getWxGroupId
();
String
masterId
=
assignGroupDTO
.
getMasterId
();
ReadingGroupCreate
groupCreate
=
new
ReadingGroupCreate
();
groupCreate
.
setWxGroupId
(
wxGroupId
);
groupCreate
.
setMasterId
(
masterId
);
groupCreate
.
setUseState
(
0
);
readingGroupCreateDao
.
insert
(
groupCreate
);
ThreadPoolUtils
.
OTHER_THREAD_POOL
.
execute
(()->{
//群分配给活动
this
.
assignGroupToActivity
(
wxGroupId
,
masterId
);
});
}
@ParamLog
(
"群分配给活动"
)
private
void
assignGroupToActivity
(
String
wxGroupId
,
String
masterId
)
{
//最近建的无群id的群
ReadingGroup
readingGroup
=
readingGroupDao
.
getLatestNullGroup
(
masterId
);
if
(
null
==
readingGroup
){
return
;
}
Long
aimGroupId
=
readingGroup
.
getId
();
List
<
ReadingGroupRobot
>
robots
=
readingGroupRobotDao
.
getByGroupId
(
aimGroupId
);
//更新wxgroupId
readingGroupRobotDao
.
updateWxGroupByGroupId
(
wxGroupId
,
aimGroupId
);
readingGroupRobotDao
.
setMaster
(
masterId
,
aimGroupId
);
readingGroupDao
.
updateWxGroupIdById
(
wxGroupId
,
aimGroupId
);
readingGroupCreateDao
.
updateStateByWxGroupId
(
wxGroupId
,
1
);
//修改群名称
SendWeixinRequestTools
.
changeGroupName
(
masterId
,
wxGroupId
,
readingGroup
.
getWxGroupName
(),
getIP
(
masterId
));
//上传到weixin_qrcode表
String
qrcodeUrl
=
"https://oss.5rs.me/oss/upload/image/png/0055b00c5c504a65951a850d6cf48c08.png"
;
//过期码
WeixinQrcode
weixinQrcode
=
new
WeixinQrcode
();
weixinQrcode
.
setCreateUser
(
0L
);
weixinQrcode
.
setQrcodeUrl
(
qrcodeUrl
);
weixinQrcode
.
setWeixinGroupId
(
wxGroupId
);
weixinQrcode
.
setRobotWxId
(
masterId
);
GroupRobotDTO
groupRobotDTO
=
wechatGroupConsr
.
getGroupRobotByWxId
(
masterId
);
if
(
groupRobotDTO
!=
null
){
weixinQrcode
.
setRobotId
(
Long
.
valueOf
(
groupRobotDTO
.
getId
()));
}
else
{
log
.
error
(
"getGroupRobotByWxId获取小号信息失败="
+
masterId
);
weixinQrcode
.
setRobotId
(
0L
);
}
weixinQrcode
.
setUpdateState
(
2
);
weixinQrcode
.
setUseState
(
1
);
weixinQrcode
.
setGeneration
(
6
);
Long
qrcodeId
=
weixinQrcodeDao
.
insert
(
weixinQrcode
);
//添加到bookGroupQrcode
GroupQrcode
groupQrcode
=
new
GroupQrcode
();
groupQrcode
.
setWeixinGroupId
(
wxGroupId
);
groupQrcode
.
setQrcodeUrl
(
qrcodeUrl
);
groupQrcode
.
setCreateUser
(
0L
);
groupQrcode
.
setWeixinQrcodeId
(
qrcodeId
);
groupQrcode
.
setUserNumber
(
robots
.
size
());
groupQrcode
.
setGroupSeq
(
1
);
groupQrcode
.
setGroupName
(
readingGroup
.
getWxGroupName
());
groupQrcode
.
setClassifyId
(
0L
);
groupQrcode
.
setQrcodeHeadUrl
(
readerConsr
.
getNineHeadUrl
());
groupQrcodeBiz
.
insert
(
groupQrcode
);
}
@ParamLog
(
"活动用户进群之后"
)
@Override
public
void
activityUserJoinGroup
(
AddWXGroupDTO
addWXGroupDTO
)
{
String
weixinGroupId
=
addWXGroupDTO
.
getWechatGroupId
();
ReadingGroup
readingGroup
=
readingGroupDao
.
getByWxGroupId
(
weixinGroupId
);
if
(
readingGroup
!=
null
){
List
<
String
>
nickNames
=
JedisClusterUtils
.
getJson
(
ACTIVITY_USER_JOIN_GROUP_USERS
+
weixinGroupId
,
List
.
class
);
if
(
nickNames
==
null
)
{
nickNames
=
new
ArrayList
<>();
}
nickNames
.
add
(
addWXGroupDTO
.
getNickName
());
log
.
info
(
"活动用新用户进群"
+
nickNames
);
JedisClusterUtils
.
setJson
(
ACTIVITY_USER_JOIN_GROUP_USERS
+
weixinGroupId
,
nickNames
,
600
);
String
value
=
JedisClusterUtils
.
getJson
(
ACTIVITY_USER_JOIN_GROUP_GUIDE
+
weixinGroupId
,
String
.
class
);
if
(
StringUtil
.
isEmpty
(
value
))
{
JedisClusterUtils
.
setJson
(
ACTIVITY_USER_JOIN_GROUP_GUIDE
+
weixinGroupId
,
weixinGroupId
,
10
);
String
nameStr
=
""
;
int
i
=
0
;
List
<
String
>
names
=
new
ArrayList
<>();
for
(
String
name
:
nickNames
)
{
if
(
i
==
5
)
{
break
;
}
names
.
add
(
name
);
i
++;
}
for
(
String
nickName
:
names
)
{
nickNames
.
remove
(
nickName
);
if
(
StringUtils
.
isNotEmpty
(
nickName
))
{
nameStr
=
nameStr
+
"@"
+
nickName
+
" "
;
}
}
JedisClusterUtils
.
setJson
(
ACTIVITY_USER_JOIN_GROUP_USERS
+
weixinGroupId
,
nickNames
,
600
);
if
(!
StringUtil
.
isEmpty
(
nameStr
)){
SendTextMessageVO
sendTextMessageVO
=
new
SendTextMessageVO
();
sendTextMessageVO
.
setContent
(
nameStr
+
",欢迎加入本群。"
);
sendTextMessageVO
.
setAltId
(
addWXGroupDTO
.
getWxId
());
sendTextMessageVO
.
setWxGroupId
(
weixinGroupId
);
sendTextMessageVO
.
setIp
(
addWXGroupDTO
.
getIp
());
WxGroupSDK
.
sendTextMessage
(
sendTextMessageVO
);
}
}
}
}
@Override
public
Boolean
isKeyWord
(
SendTextDTO
sendTextDTO
)
{
if
(!
SendMessageTypeEnum
.
SELF
.
getCode
().
equals
(
sendTextDTO
.
getCode
()))
{
return
false
;
}
String
textContent
=
sendTextDTO
.
getTextContent
().
trim
();
ReadingActivity
readingActivity
=
readingActivityDao
.
getJoinActivityByKeyword
(
sendTextDTO
.
getWxId
(),
sendTextDTO
.
getWechatUserId
(),
textContent
);
if
(
null
==
readingActivity
){
return
false
;
}
List
<
ReadingInvite
>
inviteList
=
readingInviteDao
.
getByActivityId
(
readingActivity
.
getId
());
Date
inviteTime
=
new
Date
();
if
(!
ListUtils
.
isEmpty
(
inviteList
)){
inviteTime
=
inviteList
.
get
(
0
).
getInviteTime
();
}
//在邀请时间之后
if
(
inviteTime
.
before
(
new
Date
())){
return
true
;
}
else
{
return
false
;
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/check/ParamCheck.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
check
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.reading.dao.ReadingInviteDao
;
import
com.pcloud.book.reading.dto.ReadingActivityAdditionParamDTO
;
import
com.pcloud.book.reading.dto.ReadingActivityBaseParamDTO
;
import
com.pcloud.book.reading.entity.ReadingInvite
;
import
com.pcloud.book.reading.enums.ContentTypeEnum
;
import
com.pcloud.book.reading.enums.JoinConditionEnum
;
import
com.pcloud.book.reading.enums.JoinTypeEnum
;
import
com.pcloud.common.utils.DateUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.string.StringUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
import
java.util.List
;
import
lombok.extern.slf4j.Slf4j
;
/**
* @描述:参数校验
* @作者:zhuyajie
* @创建时间:10:05 2020/1/15
* @版本:1.0
*/
@Component
(
"paramCheck"
)
@Slf4j
public
class
ParamCheck
{
@Autowired
private
ReadingInviteDao
readingInviteDao
;
public
void
checkAddParam
(
ReadingActivityBaseParamDTO
readingActivityBaseParamDTO
)
{
if
(
null
==
readingActivityBaseParamDTO
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"参数为空"
);
}
if
(
StringUtil
.
isEmpty
(
readingActivityBaseParamDTO
.
getTheme
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"活动主题为空"
);
}
if
(
null
==
readingActivityBaseParamDTO
.
getBrandId
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请选择品牌方"
);
}
if
(
null
==
readingActivityBaseParamDTO
.
getJoinCondition
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请选择读者入群条件"
);
}
if
(
null
==
readingActivityBaseParamDTO
.
getJoinType
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请选择入群方式"
);
}
if
(
JoinConditionEnum
.
KEYWORD
.
value
.
equals
(
readingActivityBaseParamDTO
.
getJoinCondition
())
&&
StringUtil
.
isEmpty
(
readingActivityBaseParamDTO
.
getJoinKeyword
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写入群关键词"
);
}
if
(
JoinConditionEnum
.
TRANSFER
.
value
.
equals
(
readingActivityBaseParamDTO
.
getJoinCondition
())
&&
null
==
readingActivityBaseParamDTO
.
getJoinAmount
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请输入进群转账金额"
);
}
if
(
JoinTypeEnum
.
QRCODE
.
equals
(
readingActivityBaseParamDTO
.
getJoinType
())
&&
StringUtil
.
isEmpty
(
readingActivityBaseParamDTO
.
getJoinQrcodePic
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请上传群二维码"
);
}
if
(
null
==
readingActivityBaseParamDTO
.
getRuleType
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写群规"
);
}
if
(
ContentTypeEnum
.
TEXT
.
value
.
equals
(
readingActivityBaseParamDTO
.
getRuleType
())
&&
StringUtil
.
isEmpty
(
readingActivityBaseParamDTO
.
getRule
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写群规内容"
);
}
if
(
ContentTypeEnum
.
FILE
.
value
.
equals
(
readingActivityBaseParamDTO
.
getRuleType
())
&&
null
==
readingActivityBaseParamDTO
.
getRuleResourceId
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请上传群规文件"
);
}
if
(
ListUtils
.
isEmpty
(
readingActivityBaseParamDTO
.
getUserList
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请选择邀请用户"
);
}
//群链接方式入群
if
(
JoinTypeEnum
.
LINK
.
value
.
equals
(
readingActivityBaseParamDTO
.
getJoinType
()))
{
if
(
null
==
readingActivityBaseParamDTO
.
getStartTime
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写开始时间"
);
}
if
(
null
==
readingActivityBaseParamDTO
.
getEndTime
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写结束时间"
);
}
if
(
null
==
readingActivityBaseParamDTO
.
getStartSloganType
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写开场语"
);
}
if
(
ContentTypeEnum
.
TEXT
.
value
.
equals
(
readingActivityBaseParamDTO
.
getStartSloganType
())
&&
StringUtil
.
isEmpty
(
readingActivityBaseParamDTO
.
getStartSlogan
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写开场语内容"
);
}
if
(
ContentTypeEnum
.
FILE
.
value
.
equals
(
readingActivityBaseParamDTO
.
getStartSloganType
())
&&
null
==
readingActivityBaseParamDTO
.
getStartResourceId
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请上传开场语文件"
);
}
if
(
null
==
readingActivityBaseParamDTO
.
getEndSloganType
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写结束语"
);
}
if
(
ContentTypeEnum
.
TEXT
.
value
.
equals
(
readingActivityBaseParamDTO
.
getEndSloganType
())
&&
StringUtil
.
isEmpty
(
readingActivityBaseParamDTO
.
getEndSlogan
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写结束语内容"
);
}
if
(
ContentTypeEnum
.
FILE
.
value
.
equals
(
readingActivityBaseParamDTO
.
getEndSloganType
())
&&
null
==
readingActivityBaseParamDTO
.
getEndResourceId
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请上传结束语文件"
);
}
if
(
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getEndTime
()).
before
(
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getStartTime
())))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"结束时间要大于开始时间"
);
}
}
if
(
null
==
readingActivityBaseParamDTO
.
getInviteTime
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写邀请时间"
);
}
long
diff
=
DateUtils
.
getDateDiff
(
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getInviteTime
()),
new
Date
());
// if (diff < 1) {
// throw new BookBizException(BookBizException.PARAM_IS_NULL, "邀请时间不能选择当天");
// }
if
(
ListUtils
.
isEmpty
(
readingActivityBaseParamDTO
.
getInviteList
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写邀请语"
);
}
if
(
readingActivityBaseParamDTO
.
getInviteList
().
size
()
>
3
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"邀请语最多3条"
);
}
for
(
ReadingInvite
readingInvite
:
readingActivityBaseParamDTO
.
getInviteList
())
{
if
(
null
==
readingInvite
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写邀请语"
);
}
readingInvite
.
setInviteTime
(
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getInviteTime
()));
if
(
null
==
readingInvite
.
getInviteTime
()
||
null
==
readingInvite
.
getInviteType
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写邀请语"
);
}
if
(
ContentTypeEnum
.
TEXT
.
value
.
equals
(
readingInvite
.
getInviteType
())
&&
StringUtil
.
isEmpty
(
readingInvite
.
getInviteContent
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写邀请语内容"
);
}
if
(
ContentTypeEnum
.
FILE
.
value
.
equals
(
readingInvite
.
getInviteType
())
&&
null
==
readingInvite
.
getInviteResourceId
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请上传邀请语文件"
);
}
if
(
JoinTypeEnum
.
LINK
.
value
.
equals
(
readingActivityBaseParamDTO
.
getJoinType
())
&&
readingInvite
.
getInviteTime
().
after
(
DateUtils
.
getDateByStr
(
readingActivityBaseParamDTO
.
getStartTime
())))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"开始时间要大于邀请时间"
);
}
}
if
(
JoinTypeEnum
.
QRCODE
.
value
.
equals
(
readingActivityBaseParamDTO
.
getJoinType
())
&&
readingActivityBaseParamDTO
.
getUserList
().
size
()
>
500
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"选择群二维码入群方式,活动读者最多可以选择500人"
);
}
}
public
void
checkAdditionParam
(
ReadingActivityAdditionParamDTO
activityAdditionParamDTO
)
{
if
(
null
==
activityAdditionParamDTO
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"参数为空"
);
}
if
(
null
==
activityAdditionParamDTO
.
getId
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"活动id为空"
);
}
//打卡
if
(
null
==
activityAdditionParamDTO
.
getClockOpen
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写打卡设置"
);
}
if
(
activityAdditionParamDTO
.
getClockOpen
())
{
if
(
null
==
activityAdditionParamDTO
.
getClockResultOpen
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写打卡成果设置"
);
}
if
(
StringUtil
.
isEmpty
(
activityAdditionParamDTO
.
getClockRemindTime
())
||
StringUtil
.
isEmpty
(
activityAdditionParamDTO
.
getClockRemindContent
())
||
StringUtil
.
isEmpty
(
activityAdditionParamDTO
.
getClockLink
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写打卡设置"
);
}
//编辑端自定义打卡
if
(!
activityAdditionParamDTO
.
getClockLink
().
contains
(
"clock"
))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写正确的打卡链接"
);
}
String
clockLink
=
activityAdditionParamDTO
.
getClockLink
();
String
clockId
=
clockLink
.
substring
(
clockLink
.
indexOf
(
"/A"
)
+
2
,
clockLink
.
indexOf
(
"/custom/sign?"
));
if
(
StringUtil
.
isEmpty
(
clockId
))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写正确的打卡链接"
);
}
activityAdditionParamDTO
.
setClockServeId
(
Long
.
valueOf
(
clockId
));
activityAdditionParamDTO
.
setClockServeType
(
"APP"
);
}
else
{
activityAdditionParamDTO
.
setClockResultOpen
(
false
);
}
//猜谜
if
(
null
==
activityAdditionParamDTO
.
getRiddleOpen
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写猜谜设置"
);
}
//奖励
if
(
null
==
activityAdditionParamDTO
.
getAwardOpen
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写奖励设置"
);
}
if
(
activityAdditionParamDTO
.
getAwardOpen
())
{
if
(
StringUtil
.
isEmpty
(
activityAdditionParamDTO
.
getAwardPic
())
&&
StringUtil
.
isEmpty
(
activityAdditionParamDTO
.
getAwardText
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"请填写奖励设置"
);
}
}
}
public
void
checkUpdateParam
(
ReadingActivityBaseParamDTO
readingActivityBaseParamDTO
)
{
if
(
null
==
readingActivityBaseParamDTO
.
getId
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"活动id为空"
);
}
List
<
ReadingInvite
>
inviteList
=
readingInviteDao
.
getByActivityId
(
readingActivityBaseParamDTO
.
getId
());
if
(!
ListUtils
.
isEmpty
(
inviteList
))
{
Date
inviteTime
=
inviteList
.
get
(
0
).
getInviteTime
();
if
(
inviteTime
.
before
(
new
Date
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"活动邀请已开始,不能修改"
);
}
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/BookGroupCollectionDao.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
;
import
com.pcloud.book.reading.entity.BookGroupCollection
;
import
com.pcloud.common.core.dao.BaseDao
;
public
interface
BookGroupCollectionDao
extends
BaseDao
<
BookGroupCollection
>
{
/**
* 根据TransferId获取转账信息
* @param transferId
* @return
*/
BookGroupCollection
getByTransferId
(
String
transferId
);
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/ReadingActivityDao.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
;
import
com.pcloud.book.reading.entity.ReadingActivity
;
import
com.pcloud.common.core.dao.BaseDao
;
/**
* @描述:共读活动基本设置
* @作者:zhuyajie
* @创建时间:17:26 2020/1/14
* @版本:1.0
*/
public
interface
ReadingActivityDao
extends
BaseDao
<
ReadingActivity
>
{
/**
* 更新高级设置
* @param readingActivity
*/
public
void
updateAdditionSetting
(
ReadingActivity
readingActivity
);
/**
* 根据主题获取活动信息
* @param theme
* @return
*/
ReadingActivity
getByTheme
(
String
theme
);
/**
* @param theme
* @return
*/
Boolean
themeExist
(
String
theme
);
/**
* 根据活动主题和入群条件获取
* @param theme
* @return
*/
ReadingActivity
getByThemeAndJoinCondition
(
String
theme
,
Integer
joinCondition
);
/**
* 根据关键词查活动
* @param altId
* @param wxUserId
* @param text
* @return
*/
ReadingActivity
getJoinActivityByKeyword
(
String
altId
,
String
wxUserId
,
String
text
);
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/ReadingGroupCreateDao.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
;
import
com.pcloud.book.reading.entity.ReadingGroupCreate
;
import
com.pcloud.common.core.dao.BaseDao
;
public
interface
ReadingGroupCreateDao
extends
BaseDao
<
ReadingGroupCreate
>
{
/**
* 更改使用状态
* @param wxGroupId
*/
public
void
updateStateByWxGroupId
(
String
wxGroupId
,
Integer
useState
);
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/ReadingGroupDao.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
;
import
com.pcloud.book.reading.entity.ReadingGroup
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
/**
* @描述:活动关联群
* @作者:zhuyajie
* @创建时间:15:30 2020/1/15
* @版本:1.0
*/
public
interface
ReadingGroupDao
extends
BaseDao
<
ReadingGroup
>
{
/**
* 根据活动id获取群,有微信群
* @param activityId
* @return
*/
public
List
<
ReadingGroup
>
getByActivityId
(
Long
activityId
);
/**
* 根据群id查
* @param wxGroupId
* @return
*/
public
ReadingGroup
getByWxGroupId
(
String
wxGroupId
);
/**
* 更新微信群id
* @param wxGroupId
* @param id
*/
public
void
updateWxGroupIdById
(
String
wxGroupId
,
Long
id
);
/**
* 最近无群id的群
* @return
*/
public
ReadingGroup
getLatestNullGroup
(
String
altId
);
/**
* getAllByActivityId
* @param activityId
* @return
*/
List
<
ReadingGroup
>
getAllByActivityId
(
Long
activityId
);
/**
* 更新群名称
* @param wxGroupName
* @param id
*/
public
void
updateGroupName
(
String
wxGroupName
,
Long
id
);
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/ReadingGroupRobotDao.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
;
import
com.pcloud.book.reading.entity.ReadingGroupRobot
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
/**
* @描述:群小号关联表
* @作者:zhuyajie
* @创建时间:13:42 2020/1/20
* @版本:1.0
*/
public
interface
ReadingGroupRobotDao
extends
BaseDao
<
ReadingGroupRobot
>
{
/**
* 更新微信群id
* @param wxGroupId
* @param groupId
*/
public
void
updateWxGroupByGroupId
(
String
wxGroupId
,
Long
groupId
);
/**
* 设置群主
* @param altId
* @param groupId
*/
public
void
setMaster
(
String
altId
,
Long
groupId
);
/**
* 获取一个小号
* @param wxGroupId
* @return
*/
String
getMasterRobotByWxGroupId
(
String
wxGroupId
);
/**
* 根据群成员数量查符合的群
* @param count
* @return
*/
List
<
Long
>
getGroupIdsByCount
(
Integer
count
);
/**
* 该群是否符合要求
* @param groupId
* @param altIds
* @return
*/
Boolean
groupExist
(
Long
groupId
,
List
<
String
>
altIds
);
/**
* 根据活动id查询
* @param activityId
* @return
*/
List
<
ReadingGroupRobot
>
getByActivityId
(
Long
activityId
);
/**
* groupId查询
* @param groupId
* @return
*/
List
<
ReadingGroupRobot
>
getByGroupId
(
Long
groupId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/ReadingInviteDao.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
;
import
com.pcloud.book.reading.entity.ReadingInvite
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
/**
* @描述:邀请语设置
* @作者:zhuyajie
* @创建时间:17:28 2020/1/14
* @版本:1.0
*/
public
interface
ReadingInviteDao
extends
BaseDao
<
ReadingInvite
>
{
/**
* 根据活动id查询
* @param activityId
* @return
*/
public
List
<
ReadingInvite
>
getByActivityId
(
Long
activityId
);
/**
* 删除
* @param activityId
*/
void
deleteByActivityId
(
Long
activityId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/ReadingUserDao.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
;
import
com.pcloud.book.reading.dto.ActivityUserBookDTO
;
import
com.pcloud.book.reading.dto.ActivityUserCountDTO
;
import
com.pcloud.book.reading.entity.ReadingUser
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
/**
* @描述:共读活动邀请用户
* @作者:zhuyajie
* @创建时间:17:31 2020/1/14
* @版本:1.0
*/
public
interface
ReadingUserDao
extends
BaseDao
<
ReadingUser
>
{
/**
* 根据活动id查询
* @param activityId
* @return
*/
List
<
ReadingUser
>
getByActivityId
(
Long
activityId
,
Integer
joinState
);
/**
* 修改用户参加状态
* @param joinState
* @param wxUserId
* @param activityId
*/
public
void
updateJoinState
(
Integer
joinState
,
String
wxUserId
,
String
activityId
);
/**
* 查询活动人数列表
*/
List
<
ActivityUserCountDTO
>
getUserCountsByActivityIds
(
List
<
Long
>
activityIds
);
/**
* 查用户id
* @param activityIds
* @return
*/
List
<
String
>
getWxUserIdByActivityIds
(
List
<
Long
>
activityIds
);
/**
* 批量获取活动读者书籍
*/
List
<
ActivityUserBookDTO
>
getBooksByActivityIds
(
List
<
Long
>
activityIds
);
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/impl/BookGroupCollectionDaoImpl.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
.
impl
;
import
com.pcloud.book.reading.dao.BookGroupCollectionDao
;
import
com.pcloud.book.reading.entity.BookGroupCollection
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
@Component
(
"bookGroupCollectionDao"
)
public
class
BookGroupCollectionDaoImpl
extends
BaseDaoImpl
<
BookGroupCollection
>
implements
BookGroupCollectionDao
{
@Override
public
BookGroupCollection
getByTransferId
(
String
transferId
)
{
return
this
.
getSqlSession
().
selectOne
(
"getByTransferId"
,
transferId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/impl/ReadingActivityDaoImpl.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
.
impl
;
import
com.pcloud.book.reading.dao.ReadingActivityDao
;
import
com.pcloud.book.reading.entity.ReadingActivity
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @描述:共读活动基本设置
* @作者:zhuyajie
* @创建时间:17:27 2020/1/14
* @版本:1.0
*/
@Component
(
"readingActivityDao"
)
public
class
ReadingActivityDaoImpl
extends
BaseDaoImpl
<
ReadingActivity
>
implements
ReadingActivityDao
{
@Override
public
void
updateAdditionSetting
(
ReadingActivity
readingActivity
)
{
getSessionTemplate
().
update
(
getStatement
(
"updateAdditionSetting"
),
readingActivity
);
}
@Override
public
ReadingActivity
getByTheme
(
String
theme
)
{
return
this
.
getSqlSession
().
selectOne
(
"getByTheme"
,
theme
);
}
public
Boolean
themeExist
(
String
theme
)
{
return
getSessionTemplate
().
selectOne
(
getStatement
(
"themeExist"
),
theme
);
}
@Override
public
ReadingActivity
getByThemeAndJoinCondition
(
String
theme
,
Integer
joinCondition
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"theme"
,
theme
);
map
.
put
(
"joinCondition"
,
joinCondition
);
return
this
.
getSqlSession
().
selectOne
(
"getByThemeAndJoinCondition"
,
map
);
}
@Override
public
ReadingActivity
getJoinActivityByKeyword
(
String
altId
,
String
wxUserId
,
String
text
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"altId"
,
altId
);
map
.
put
(
"wxUserId"
,
wxUserId
);
map
.
put
(
"joinKeyword"
,
text
);
return
getSessionTemplate
().
selectOne
(
getStatement
(
"getJoinActivityByKeyword"
),
map
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/impl/ReadingGroupCreateDaoImpl.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
.
impl
;
import
com.pcloud.book.reading.dao.ReadingGroupCreateDao
;
import
com.pcloud.book.reading.entity.ReadingGroupCreate
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.Map
;
@Component
(
"readingGroupCreateDao"
)
public
class
ReadingGroupCreateDaoImpl
extends
BaseDaoImpl
<
ReadingGroupCreate
>
implements
ReadingGroupCreateDao
{
@Override
public
void
updateStateByWxGroupId
(
String
wxGroupId
,
Integer
useState
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"wxGroupId"
,
wxGroupId
);
map
.
put
(
"useState"
,
useState
);
getSessionTemplate
().
update
(
getStatement
(
"updateStateByWxGroupId"
),
map
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/impl/ReadingGroupDaoImpl.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
.
impl
;
import
com.pcloud.book.reading.dao.ReadingGroupDao
;
import
com.pcloud.book.reading.entity.ReadingGroup
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @描述:活动关联群
* @作者:zhuyajie
* @创建时间:15:30 2020/1/15
* @版本:1.0
*/
@Component
(
"readingGroupDao"
)
public
class
ReadingGroupDaoImpl
extends
BaseDaoImpl
<
ReadingGroup
>
implements
ReadingGroupDao
{
@Override
public
List
<
ReadingGroup
>
getByActivityId
(
Long
activityId
)
{
return
getSessionTemplate
().
selectList
(
getStatement
(
"getByActivityId"
),
activityId
);
}
@Override
public
ReadingGroup
getByWxGroupId
(
String
wxGroupId
)
{
return
getSessionTemplate
().
selectOne
(
getStatement
(
"getByWxGroupId"
),
wxGroupId
);
}
@Override
public
void
updateWxGroupIdById
(
String
wxGroupId
,
Long
id
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"wxGroupId"
,
wxGroupId
);
map
.
put
(
"id"
,
id
);
getSessionTemplate
().
update
(
getStatement
(
"updateWxGroupIdById"
),
map
);
}
@Override
public
ReadingGroup
getLatestNullGroup
(
String
altId
)
{
return
getSessionTemplate
().
selectOne
(
getStatement
(
"getLatestNullGroup"
),
altId
);
}
@Override
public
List
<
ReadingGroup
>
getAllByActivityId
(
Long
activityId
)
{
return
getSessionTemplate
().
selectList
(
getStatement
(
"getAllByActivityId"
),
activityId
);
}
@Override
public
void
updateGroupName
(
String
wxGroupName
,
Long
id
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"wxGroupName"
,
wxGroupName
);
map
.
put
(
"id"
,
id
);
getSessionTemplate
().
update
(
getStatement
(
"updateGroupName"
),
map
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/impl/ReadingGroupRobotDaoImpl.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
.
impl
;
import
com.pcloud.book.reading.dao.ReadingGroupRobotDao
;
import
com.pcloud.book.reading.entity.ReadingGroupRobot
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @描述:群小号关联表
* @作者:zhuyajie
* @创建时间:13:43 2020/1/20
* @版本:1.0
*/
@Component
(
"readingGroupRobotDao"
)
public
class
ReadingGroupRobotDaoImpl
extends
BaseDaoImpl
<
ReadingGroupRobot
>
implements
ReadingGroupRobotDao
{
@Override
public
void
updateWxGroupByGroupId
(
String
wxGroupId
,
Long
groupId
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"wxGroupId"
,
wxGroupId
);
map
.
put
(
"groupId"
,
groupId
);
getSessionTemplate
().
update
(
getStatement
(
"updateWxGroupByGroupId"
),
map
);
}
@Override
public
void
setMaster
(
String
altId
,
Long
groupId
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"altId"
,
altId
);
map
.
put
(
"groupId"
,
groupId
);
getSessionTemplate
().
update
(
getStatement
(
"setMaster"
),
map
);
}
@Override
public
String
getMasterRobotByWxGroupId
(
String
wxGroupId
)
{
return
getSessionTemplate
().
selectOne
(
getStatement
(
"getMasterRobotByWxGroupId"
),
wxGroupId
);
}
@Override
public
List
<
Long
>
getGroupIdsByCount
(
Integer
count
)
{
return
getSessionTemplate
().
selectList
(
getStatement
(
"getGroupIdsByCount"
),
count
);
}
@Override
public
Boolean
groupExist
(
Long
groupId
,
List
<
String
>
altIds
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"groupId"
,
groupId
);
map
.
put
(
"altIds"
,
altIds
);
return
getSessionTemplate
().
selectOne
(
getStatement
(
"groupExist"
),
map
);
}
@Override
public
List
<
ReadingGroupRobot
>
getByActivityId
(
Long
activityId
)
{
return
getSessionTemplate
().
selectList
(
getStatement
(
"getByActivityId"
),
activityId
);
}
@Override
public
List
<
ReadingGroupRobot
>
getByGroupId
(
Long
groupId
)
{
return
getSessionTemplate
().
selectList
(
getStatement
(
"getByGroupId"
),
groupId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/impl/ReadingInviteDaoImpl.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
.
impl
;
import
com.pcloud.book.reading.dao.ReadingInviteDao
;
import
com.pcloud.book.reading.entity.ReadingInvite
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
/**
* @描述:邀请语设置
* @作者:zhuyajie
* @创建时间:17:29 2020/1/14
* @版本:1.0
*/
@Component
(
"readingInviteDao"
)
public
class
ReadingInviteDaoImpl
extends
BaseDaoImpl
<
ReadingInvite
>
implements
ReadingInviteDao
{
@Override
public
List
<
ReadingInvite
>
getByActivityId
(
Long
activityId
)
{
return
getSessionTemplate
().
selectList
(
getStatement
(
"getByActivityId"
),
activityId
);
}
@Override
public
void
deleteByActivityId
(
Long
activityId
)
{
getSessionTemplate
().
delete
(
getStatement
(
"deleteByActivityId"
),
activityId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dao/impl/ReadingUserDaoImpl.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dao
.
impl
;
import
com.pcloud.book.reading.dao.ReadingUserDao
;
import
com.pcloud.book.reading.dto.ActivityUserBookDTO
;
import
com.pcloud.book.reading.dto.ActivityUserCountDTO
;
import
com.pcloud.book.reading.entity.ReadingUser
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @描述:共读活动邀请用户
* @作者:zhuyajie
* @创建时间:17:31 2020/1/14
* @版本:1.0
*/
@Component
(
"readingUserDao"
)
public
class
ReadingUserDaoImpl
extends
BaseDaoImpl
<
ReadingUser
>
implements
ReadingUserDao
{
@Override
public
List
<
ReadingUser
>
getByActivityId
(
Long
activityId
,
Integer
joinState
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"activityId"
,
activityId
);
map
.
put
(
"joinState"
,
joinState
);
return
getSessionTemplate
().
selectList
(
getStatement
(
"getByActivityId"
),
map
);
}
@Override
public
void
updateJoinState
(
Integer
joinState
,
String
wxUserId
,
String
activityId
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"activityId"
,
activityId
);
map
.
put
(
"wxUserId"
,
wxUserId
);
map
.
put
(
"joinState"
,
joinState
);
getSessionTemplate
().
update
(
getStatement
(
"updateJoinState"
),
map
);
}
@Override
public
List
<
ActivityUserCountDTO
>
getUserCountsByActivityIds
(
List
<
Long
>
activityIds
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"activityIds"
,
activityIds
);
return
getSessionTemplate
().
selectList
(
getStatement
(
"getUserCountsByActivityIds"
),
map
);
}
@Override
public
List
<
String
>
getWxUserIdByActivityIds
(
List
<
Long
>
activityIds
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"activityIds"
,
activityIds
);
return
getSessionTemplate
().
selectList
(
getStatement
(
"getWxUserIdByActivityIds"
),
map
);
}
@Override
public
List
<
ActivityUserBookDTO
>
getBooksByActivityIds
(
List
<
Long
>
activityIds
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"activityIds"
,
activityIds
);
return
getSessionTemplate
().
selectList
(
getStatement
(
"getBooksByActivityIds"
),
map
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dto/ActivityUserBookDTO.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
lombok.Data
;
/**
* @Description
* @Author ruansiyuan
* @Date 2020/1/21 14:26
**/
@ApiModel
(
"活动书刊"
)
@Data
public
class
ActivityUserBookDTO
{
private
Long
bookId
;
private
String
bookName
;
private
Long
activityId
;
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dto/ActivityUserCountDTO.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
lombok.Data
;
/**
* @Description
* @Author ruansiyuan
* @Date 2020/1/20 11:01
**/
@Data
@ApiModel
(
"活动和活动人数"
)
public
class
ActivityUserCountDTO
{
private
Long
activityId
;
private
Integer
count
;
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dto/GroupingUserDTO.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dto
;
import
com.pcloud.common.dto.BaseDto
;
import
java.util.List
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @描述:小号用户分组
* @作者:zhuyajie
* @创建时间:18:02 2020/1/19
* @版本:1.0
*/
@ApiModel
(
"小号用户分组"
)
@Data
public
class
GroupingUserDTO
extends
BaseDto
{
@ApiModelProperty
(
"小号id"
)
private
String
altId
;
@ApiModelProperty
(
"昵称"
)
private
String
altNickName
;
@ApiModelProperty
(
"头像"
)
private
String
altHeadPic
;
@ApiModelProperty
(
"性别"
)
private
Integer
altSex
;
@ApiModelProperty
(
"用户列表"
)
private
List
<
UserBaseDTO
>
userBaseDTOS
;
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dto/ReadingActivityAdditionParamDTO.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dto
;
import
com.pcloud.common.dto.BaseDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @描述:高级设置
* @作者:zhuyajie
* @创建时间:15:31 2020/1/19
* @版本:1.0
*/
@Data
@ApiModel
(
"高级设置"
)
public
class
ReadingActivityAdditionParamDTO
extends
BaseDto
{
@ApiModelProperty
(
"活动id"
)
private
Long
id
;
@ApiModelProperty
(
"猜谜语开启状态"
)
private
Boolean
riddleOpen
;
@ApiModelProperty
(
"奖励开启"
)
private
Boolean
awardOpen
;
@ApiModelProperty
(
"奖励文案"
)
private
String
awardText
;
@ApiModelProperty
(
"奖励图片地址"
)
private
String
awardPic
;
@ApiModelProperty
(
"打卡开启"
)
private
Boolean
clockOpen
;
@ApiModelProperty
(
"打卡每日提醒时间"
)
private
String
clockRemindTime
;
@ApiModelProperty
(
"打卡提醒内容"
)
private
String
clockRemindContent
;
@ApiModelProperty
(
"打卡链接"
)
private
String
clockLink
;
@ApiModelProperty
(
"打卡应用或作品id"
)
private
Long
clockServeId
;
@ApiModelProperty
(
"打卡应用或作品"
)
private
String
clockServeType
;
@ApiModelProperty
(
"打卡成果是否发送"
)
private
Boolean
clockResultOpen
;
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dto/ReadingActivityBaseParamDTO.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dto
;
import
com.pcloud.book.reading.entity.ReadingInvite
;
import
com.pcloud.book.reading.entity.ReadingUser
;
import
com.pcloud.common.dto.BaseDto
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
"共读活动基本设置"
)
public
class
ReadingActivityBaseParamDTO
extends
BaseDto
{
@ApiModelProperty
(
"活动id"
)
private
Long
id
;
@ApiModelProperty
(
"活动主题"
)
private
String
theme
;
@ApiModelProperty
(
"品牌方id"
)
private
Long
brandId
;
@ApiModelProperty
(
"入群条件(1无限制2回复关键词3转账)"
)
private
Integer
joinCondition
;
@ApiModelProperty
(
"入群关键词"
)
private
String
joinKeyword
;
@ApiModelProperty
(
"入群转账金额"
)
private
BigDecimal
joinAmount
;
@ApiModelProperty
(
"入群方式(1邀请链接/2群二维码)"
)
private
Integer
joinType
;
@ApiModelProperty
(
"入群二维码图片"
)
private
String
joinQrcodePic
;
@ApiModelProperty
(
"群规类型(1文本2文件)"
)
private
Integer
ruleType
;
@ApiModelProperty
(
"群规"
)
private
String
rule
;
@ApiModelProperty
(
"群规文件资源id"
)
private
String
ruleResourceId
;
@ApiModelProperty
(
"活动开始时间"
)
private
String
startTime
;
@ApiModelProperty
(
"开场语类型(1文本2文件)"
)
private
Integer
startSloganType
;
@ApiModelProperty
(
"开场语"
)
private
String
startSlogan
;
@ApiModelProperty
(
"开场语资源id"
)
private
String
startResourceId
;
@ApiModelProperty
(
"活动结束时间"
)
private
String
endTime
;
@ApiModelProperty
(
"结束语(1文本2文件)"
)
private
Integer
endSloganType
;
@ApiModelProperty
(
"结束语"
)
private
String
endSlogan
;
@ApiModelProperty
(
"结束语资源id"
)
private
String
endResourceId
;
@ApiModelProperty
(
"邀请时间"
)
private
String
inviteTime
;
@ApiModelProperty
(
"邀请语设置"
)
private
List
<
ReadingInvite
>
inviteList
;
@ApiModelProperty
(
"邀请用户"
)
private
List
<
ReadingUser
>
userList
;
@ApiModelProperty
(
"创建人"
)
private
Long
createUser
;
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/reading/dto/ReadingActivityDTO.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dto
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.pcloud.book.reading.entity.ReadingInvite
;
import
com.pcloud.book.reading.entity.ReadingUser
;
import
com.pcloud.common.dto.BaseDto
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @描述:共读活动
* @作者:zhuyajie
* @创建时间:10:36 2020/1/19
* @版本:1.0
*/
@Data
@ApiModel
(
"共读活动基本设置"
)
public
class
ReadingActivityDTO
extends
BaseDto
{
@ApiModelProperty
(
"主键"
)
private
Long
id
;
@ApiModelProperty
(
"活动主题"
)
private
String
theme
;
@ApiModelProperty
(
"品牌方id"
)
private
Long
brandId
;
@ApiModelProperty
(
"品牌方名称"
)
private
String
brandName
;
@ApiModelProperty
(
"入群条件(1无限制2回复关键词3转账)"
)
private
Integer
joinCondition
;
@ApiModelProperty
(
"入群关键词"
)
private
String
joinKeyword
;
@ApiModelProperty
(
"入群转账金额"
)
private
BigDecimal
joinAmount
;
@ApiModelProperty
(
"入群方式(1邀请链接/2群二维码)"
)
private
Integer
joinType
;
@ApiModelProperty
(
"入群二维码图片"
)
private
String
joinQrcodePic
;
@ApiModelProperty
(
"群规类型(1文本2文件)"
)
private
Integer
ruleType
;
@ApiModelProperty
(
"群规"
)
private
String
rule
;
@ApiModelProperty
(
"群规文件资源id"
)
private
String
ruleResourceId
;
@ApiModelProperty
(
"群规文件资源名称"
)
private
String
ruleResourceName
;
@ApiModelProperty
(
"群规文件资源大小"
)
private
Long
ruleResourceSize
;
@ApiModelProperty
(
"活动开始时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
startTime
;
@ApiModelProperty
(
"开场语类型(1文本2文件)"
)
private
Integer
startSloganType
;
@ApiModelProperty
(
"开场语"
)
private
String
startSlogan
;
@ApiModelProperty
(
"开场语资源id"
)
private
String
startResourceId
;
@ApiModelProperty
(
"开场语资源名称"
)
private
String
startResourceName
;
@ApiModelProperty
(
"开场语资源大小"
)
private
Long
startResourceSize
;
@ApiModelProperty
(
"活动结束时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
endTime
;
@ApiModelProperty
(
"结束语(1文本2文件)"
)
private
Integer
endSloganType
;
@ApiModelProperty
(
"结束语"
)
private
String
endSlogan
;
@ApiModelProperty
(
"结束语资源id"
)
private
String
endResourceId
;
@ApiModelProperty
(
"结束语资源名称"
)
private
String
endResourceName
;
@ApiModelProperty
(
"结束语资源大小"
)
private
Long
endResourceSize
;
@ApiModelProperty
(
"猜谜语开启状态"
)
private
Boolean
riddleOpen
;
@ApiModelProperty
(
"奖励开启"
)
private
Boolean
awardOpen
;
@ApiModelProperty
(
"奖励文案"
)
private
String
awardText
;
@ApiModelProperty
(
"奖励图片地址"
)
private
String
awardPic
;
@ApiModelProperty
(
"打卡开启"
)
private
Boolean
clockOpen
;
@ApiModelProperty
(
"打卡每日提醒时间"
)
private
String
clockRemindTime
;
@ApiModelProperty
(
"打卡提醒内容"
)
private
String
clockRemindContent
;
@ApiModelProperty
(
"打卡链接"
)
private
String
clockLink
;
@ApiModelProperty
(
"打卡商品或作品id"
)
private
Long
clockServeId
;
@ApiModelProperty
(
"打卡应用或作品"
)
private
String
clockServeType
;
@ApiModelProperty
(
"打卡成果是否发送"
)
private
Boolean
clockResultOpen
;
@ApiModelProperty
(
"创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
@ApiModelProperty
(
"创建人"
)
private
Long
createUser
;
@ApiModelProperty
(
"更新时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
updateTime
;
@ApiModelProperty
(
"邀请时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
inviteTime
;
@ApiModelProperty
(
"邀请语设置"
)
private
List
<
ReadingInvite
>
inviteList
;
@ApiModelProperty
(
"邀请用户"
)
private
List
<
ReadingUser
>
userList
;
@ApiModelProperty
(
"小号用户分组"
)
private
List
<
GroupingUserDTO
>
groupingUserList
;
@ApiModelProperty
(
"活动用户人数"
)
private
Integer
userCount
;
@ApiModelProperty
(
"活动用户书籍"
)
private
List
<
ActivityUserBookDTO
>
activityUserBookDTOS
;
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/dto/UserBaseDTO.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
dto
;
import
com.pcloud.common.dto.BaseDto
;
import
lombok.Data
;
/**
* @描述:用户基本信息
* @作者:zhuyajie
* @创建时间:18:12 2020/1/19
* @版本:1.0
*/
@Data
public
class
UserBaseDTO
extends
BaseDto
{
/**
* 微信用户ID
*/
private
String
wxUserId
;
/**
* 昵称
*/
private
String
nickName
;
/**
* 头像
*/
private
String
headPic
;
/**
* 性别
*/
private
Integer
sex
;
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/entity/BookGroupCollection.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
entity
;
import
com.pcloud.common.entity.BaseEntity
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
BookGroupCollection
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
-
6375016882263463248L
;
private
BigDecimal
amount
;
private
Integer
status
;
private
String
transferId
;
private
String
collectionRobotId
;
private
String
createUser
;
private
Date
createTime
;
private
String
updateUser
;
private
Date
updateTime
;
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/reading/entity/ReadingActivity.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
entity
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.pcloud.common.entity.BaseEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
@Data
@ApiModel
(
"共读活动基本设置"
)
public
class
ReadingActivity
extends
BaseEntity
{
@ApiModelProperty
(
"活动主题"
)
private
String
theme
;
@ApiModelProperty
(
"品牌方id"
)
private
Long
brandId
;
@ApiModelProperty
(
"入群条件(1无限制2回复关键词3转账)"
)
private
Integer
joinCondition
;
@ApiModelProperty
(
"入群关键词"
)
private
String
joinKeyword
;
@ApiModelProperty
(
"入群转账金额"
)
private
BigDecimal
joinAmount
;
@ApiModelProperty
(
"入群方式(link/qrcode)"
)
private
Integer
joinType
;
@ApiModelProperty
(
"入群二维码图片"
)
private
String
joinQrcodePic
;
@ApiModelProperty
(
"群规类型(1文本2文件)"
)
private
Integer
ruleType
;
@ApiModelProperty
(
"群规"
)
private
String
rule
;
@ApiModelProperty
(
"群规文件资源id"
)
private
String
ruleResourceId
;
@ApiModelProperty
(
"活动开始时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
startTime
;
@ApiModelProperty
(
"开场语类型(1文本2文件)"
)
private
Integer
startSloganType
;
@ApiModelProperty
(
"开场语"
)
private
String
startSlogan
;
@ApiModelProperty
(
"开场语资源id"
)
private
String
startResourceId
;
@ApiModelProperty
(
"活动结束时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
endTime
;
@ApiModelProperty
(
"结束语(1文本2文件)"
)
private
Integer
endSloganType
;
@ApiModelProperty
(
"结束语"
)
private
String
endSlogan
;
@ApiModelProperty
(
"结束语资源id"
)
private
String
endResourceId
;
@ApiModelProperty
(
"猜谜语开启状态"
)
private
Boolean
riddleOpen
;
@ApiModelProperty
(
"奖励开启"
)
private
Boolean
awardOpen
;
@ApiModelProperty
(
"奖励文案"
)
private
String
awardText
;
@ApiModelProperty
(
"奖励图片地址"
)
private
String
awardPic
;
@ApiModelProperty
(
"打卡开启"
)
private
Boolean
clockOpen
;
@ApiModelProperty
(
"打卡每日提醒时间"
)
private
String
clockRemindTime
;
@ApiModelProperty
(
"打卡提醒内容"
)
private
String
clockRemindContent
;
@ApiModelProperty
(
"打卡链接"
)
private
String
clockLink
;
@ApiModelProperty
(
"打卡商品或作品id"
)
private
Long
clockServeId
;
@ApiModelProperty
(
"打卡应用或作品"
)
private
String
clockServeType
;
@ApiModelProperty
(
"打卡成果是否发送"
)
private
Boolean
clockResultOpen
;
@ApiModelProperty
(
"创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
@ApiModelProperty
(
"创建人"
)
private
Long
createUser
;
@ApiModelProperty
(
"更新时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
updateTime
;
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/reading/entity/ReadingGroup.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
entity
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.pcloud.common.entity.BaseEntity
;
import
java.util.Date
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
"共读活动关联群"
)
public
class
ReadingGroup
extends
BaseEntity
{
@ApiModelProperty
(
"群id"
)
private
String
wxGroupId
;
@ApiModelProperty
(
"群名称"
)
private
String
wxGroupName
;
@ApiModelProperty
(
"活动id"
)
private
Long
activityId
;
@ApiModelProperty
(
"创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
@ApiModelProperty
(
"创建人"
)
private
Long
createUser
;
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/reading/entity/ReadingGroupCreate.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
entity
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.pcloud.common.entity.BaseEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.util.Date
;
@ApiModel
(
"共读活动创建好的群"
)
public
class
ReadingGroupCreate
extends
BaseEntity
{
@ApiModelProperty
(
"群id"
)
private
String
wxGroupId
;
@ApiModelProperty
(
"群主id"
)
private
String
masterId
;
@ApiModelProperty
(
"创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
@ApiModelProperty
(
"使用状态"
)
private
Integer
useState
;
public
String
getWxGroupId
()
{
return
wxGroupId
;
}
public
void
setWxGroupId
(
String
wxGroupId
)
{
this
.
wxGroupId
=
wxGroupId
;
}
public
String
getMasterId
()
{
return
masterId
;
}
public
void
setMasterId
(
String
masterId
)
{
this
.
masterId
=
masterId
;
}
@Override
public
Date
getCreateTime
()
{
return
createTime
;
}
@Override
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
public
Integer
getUseState
()
{
return
useState
;
}
public
void
setUseState
(
Integer
useState
)
{
this
.
useState
=
useState
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/entity/ReadingGroupRobot.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
entity
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.pcloud.common.entity.BaseEntity
;
import
java.util.Date
;
import
lombok.Data
;
/**
* 群小号关联表
*/
@Data
public
class
ReadingGroupRobot
extends
BaseEntity
{
/**
* 群id
*/
private
String
wxGroupId
;
/**
* 小号id
*/
private
String
altId
;
/**
* 群id
*/
private
Long
groupId
;
/**
* 是否群主
*/
private
Boolean
isMaster
;
/**
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/reading/entity/ReadingInvite.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
entity
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.pcloud.common.entity.BaseEntity
;
import
java.util.Date
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
"邀请语设置"
)
public
class
ReadingInvite
extends
BaseEntity
{
@ApiModelProperty
(
"共读活动id"
)
private
Long
activityId
;
@ApiModelProperty
(
"邀请时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
inviteTime
;
@ApiModelProperty
(
"发送类型(1文本2文件)"
)
private
Integer
inviteType
;
@ApiModelProperty
(
"邀请语"
)
private
String
inviteContent
;
@ApiModelProperty
(
"邀请语资源id"
)
private
String
inviteResourceId
;
@ApiModelProperty
(
"邀请语资源大小"
)
private
Long
inviteResourceSize
;
@ApiModelProperty
(
"邀请语资源路径名称"
)
private
String
inviteResourceName
;
@ApiModelProperty
(
"创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
@ApiModelProperty
(
"创建人"
)
private
Long
createUser
;
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/reading/entity/ReadingUser.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
entity
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.pcloud.common.entity.BaseEntity
;
import
java.util.Date
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
"共读活动用户"
)
public
class
ReadingUser
extends
BaseEntity
{
@ApiModelProperty
(
"共读活动id"
)
private
Long
activityId
;
@ApiModelProperty
(
"用户id"
)
private
String
wxUserId
;
@ApiModelProperty
(
"小号id"
)
private
String
altId
;
@ApiModelProperty
(
"参与状态"
)
private
Integer
joinState
;
@ApiModelProperty
(
"创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
@ApiModelProperty
(
"创建人"
)
private
Long
createUser
;
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/reading/enums/ContentTypeEnum.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
enums
;
/**
* @描述:发送内容类型
* @作者:zhuyajie
* @创建时间:17:41 2020/1/14
* @版本:1.0
*/
public
enum
ContentTypeEnum
{
/**
* 文本
*/
TEXT
(
1
),
/**
* 文件
*/
FILE
(
2
);
public
Integer
value
;
ContentTypeEnum
(
Integer
value
)
{
this
.
value
=
value
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/enums/JoinConditionEnum.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
enums
;
/**
* @描述:入群条件
* @作者:zhuyajie
* @创建时间:17:33 2020/1/14
* @版本:1.0
*/
public
enum
JoinConditionEnum
{
/**
* 1无限制
*/
NO
(
1
),
/**
* 2回复关键词
*/
KEYWORD
(
2
),
/**
* 3转账
*/
TRANSFER
(
3
);
public
Integer
value
;
JoinConditionEnum
(
Integer
value
)
{
this
.
value
=
value
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/enums/JoinStateEnum.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
enums
;
/**
* @描述:参加活动状态
* @作者:zhuyajie
* @创建时间:17:46 2020/1/15
* @版本:1.0
*/
public
enum
JoinStateEnum
{
/**
* 未参加
*/
NOT_JOIN
(
0
),
/**
* 参加
*/
JOIN
(
1
);
public
Integer
value
;
JoinStateEnum
(
Integer
value
)
{
this
.
value
=
value
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/enums/JoinTypeEnum.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
enums
;
/**
* @描述:入群方式
* @作者:zhuyajie
* @创建时间:17:39 2020/1/14
* @版本:1.0
*/
public
enum
JoinTypeEnum
{
/**
* 发邀请链接
*/
LINK
(
1
),
/**
* 扫群二维码
*/
QRCODE
(
2
);
public
Integer
value
;
JoinTypeEnum
(
Integer
value
)
{
this
.
value
=
value
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/facade/ReadingActivityFacade.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
facade
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.reading.biz.ReadingActivityBiz
;
import
com.pcloud.book.reading.check.ParamCheck
;
import
com.pcloud.book.reading.dto.AssignGroupDTO
;
import
com.pcloud.book.reading.dto.ReadingActivityAdditionParamDTO
;
import
com.pcloud.book.reading.dto.ReadingActivityBaseParamDTO
;
import
com.pcloud.book.reading.dto.ReadingActivityDTO
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.common.permission.PermissionException
;
import
com.pcloud.common.utils.SessionUtil
;
import
com.sdk.wxgroup.CollectionVO
;
import
com.pcloud.common.utils.string.StringUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestHeader
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
lombok.extern.slf4j.Slf4j
;
/**
* @描述:共读活动外部接口
* @作者:zhuyajie
* @创建时间:17:45 2020/1/14
* @版本:1.0
*/
@Api
(
"共读活动"
)
@RestController
(
"readingActivityFacade"
)
@RequestMapping
(
"readingActivity"
)
@Slf4j
public
class
ReadingActivityFacade
{
@Autowired
private
ReadingActivityBiz
readingActivityBiz
;
@Autowired
private
ParamCheck
paramCheck
;
@PostMapping
(
"receiveMoney"
)
public
ResponseDto
<
Void
>
receiveMoney
(
@RequestBody
CollectionVO
vo
)
{
readingActivityBiz
.
receiveMoney
(
vo
);
return
new
ResponseDto
<>();
}
@ApiOperation
(
"创建共读活动"
)
@PostMapping
(
"add"
)
public
ResponseDto
<?>
add
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
@ApiParam
ReadingActivityBaseParamDTO
readingActivityBaseParamDTO
)
throws
PermissionException
{
Long
partyId
=
(
Long
)
SessionUtil
.
getVlaue
(
token
,
SessionUtil
.
PARTY_ID
);
paramCheck
.
checkAddParam
(
readingActivityBaseParamDTO
);
readingActivityBaseParamDTO
.
setCreateUser
(
partyId
);
Long
id
=
readingActivityBiz
.
add
(
readingActivityBaseParamDTO
);
return
new
ResponseDto
<>(
id
);
}
@ApiOperation
(
"修改共读活动"
)
@PostMapping
(
"update"
)
public
ResponseDto
<?>
update
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
@ApiParam
ReadingActivityBaseParamDTO
readingActivityBaseParamDTO
)
throws
PermissionException
{
SessionUtil
.
getToken4Redis
(
token
);
paramCheck
.
checkAddParam
(
readingActivityBaseParamDTO
);
paramCheck
.
checkUpdateParam
(
readingActivityBaseParamDTO
);
readingActivityBiz
.
update
(
readingActivityBaseParamDTO
);
return
new
ResponseDto
<>();
}
@ApiOperation
(
"共读活动高级设置"
)
@PostMapping
(
"updateAdditionSetting"
)
public
ResponseDto
<?>
updateAdditionSetting
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
@ApiParam
ReadingActivityAdditionParamDTO
readingActivityAdditionParamDTO
)
throws
PermissionException
{
SessionUtil
.
getToken4Redis
(
token
);
paramCheck
.
checkAdditionParam
(
readingActivityAdditionParamDTO
);
readingActivityBiz
.
updateAdditionSetting
(
readingActivityAdditionParamDTO
);
return
new
ResponseDto
<>();
}
@ApiOperation
(
"根据id查询"
)
@GetMapping
(
"getById"
)
public
ResponseDto
<
ReadingActivityDTO
>
getById
(
@RequestHeader
(
"token"
)
String
token
,
@RequestParam
(
"id"
)
Long
id
)
throws
PermissionException
{
SessionUtil
.
getToken4Redis
(
token
);
if
(
null
==
id
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"id为空"
);
}
ReadingActivityDTO
activityDTO
=
readingActivityBiz
.
getById
(
id
);
return
new
ResponseDto
<>(
activityDTO
);
}
@ApiOperation
(
"查询列表"
)
@GetMapping
(
"getList"
)
public
ResponseDto
<
PageBeanNew
<
ReadingActivityDTO
>>
getList
(
@RequestHeader
(
"token"
)
String
token
,
@RequestParam
(
"currentPage"
)
Integer
currentPage
,
@RequestParam
(
"numPerPage"
)
Integer
numPerPage
)
throws
PermissionException
{
SessionUtil
.
getToken4Redis
(
token
);
PageBeanNew
<
ReadingActivityDTO
>
page
=
readingActivityBiz
.
getList
(
currentPage
,
numPerPage
);
return
new
ResponseDto
<>(
page
);
}
@ApiOperation
(
"分配群"
)
@PostMapping
(
"assignGroup"
)
@ParamLog
(
"接收分配群参数"
)
public
ResponseDto
<?>
assignGroup
(
@RequestBody
@ApiParam
AssignGroupDTO
assignGroupDTO
)
{
if
(
null
==
assignGroupDTO
||
StringUtil
.
isEmpty
(
assignGroupDTO
.
getWxGroupId
())
||
StringUtil
.
isEmpty
(
assignGroupDTO
.
getMasterId
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"参数缺失"
);
}
readingActivityBiz
.
assignGroup
(
assignGroupDTO
);
return
new
ResponseDto
<>();
}
}
pcloud-service-book/src/main/java/com/pcloud/book/reading/service/impl/ReadingActivityServiceImpl.java
0 → 100644
View file @
eda95919
package
com
.
pcloud
.
book
.
reading
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.pcloud.book.reading.biz.ReadingActivityBiz
;
import
com.pcloud.book.reading.service.ReadingActivityService
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
io.swagger.annotations.ApiParam
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Map
;
/**
* @描述:共读活动
* @作者:zhuyajie
* @创建时间:16:00 2020/1/15
* @版本:1.0
*/
@RestController
(
"readingActivityService"
)
@RequestMapping
(
"readingActivityService"
)
public
class
ReadingActivityServiceImpl
implements
ReadingActivityService
{
@Autowired
private
ReadingActivityBiz
readingActivityBiz
;
@Override
@PostMapping
(
"sendInviteMsg"
)
@ParamLog
(
"定时任务发邀请语"
)
public
void
sendInviteMsg
(
@RequestBody
@ApiParam
Map
<
String
,
Object
>
map
)
{
Long
activityId
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
map
.
get
(
"activityId"
)),
new
TypeReference
<
Long
>()
{
});
if
(
null
==
activityId
)
{
return
;
}
readingActivityBiz
.
sendQuartzMsg
(
"invite"
,
activityId
);
}
@Override
@PostMapping
(
"sendStartMsg"
)
@ParamLog
(
"定时任务发开场语"
)
public
void
sendStartMsg
(
@RequestBody
@ApiParam
Map
<
String
,
Object
>
map
)
{
Long
activityId
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
map
.
get
(
"activityId"
)),
new
TypeReference
<
Long
>()
{
});
if
(
null
==
activityId
)
{
return
;
}
readingActivityBiz
.
sendQuartzMsg
(
"start"
,
activityId
);
}
@Override
@PostMapping
(
"sendEndMsg"
)
@ParamLog
(
"定时任务发结束语"
)
public
void
sendEndMsg
(
@RequestBody
@ApiParam
Map
<
String
,
Object
>
map
)
{
Long
activityId
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
map
.
get
(
"activityId"
)),
new
TypeReference
<
Long
>()
{
});
if
(
null
==
activityId
)
{
return
;
}
readingActivityBiz
.
sendQuartzMsg
(
"end"
,
activityId
);
}
@Override
@ParamLog
(
"定时任务发打卡每日提醒"
)
@PostMapping
(
"/sendClockRemind"
)
public
void
sendClockRemind
(
@RequestBody
@ApiParam
Map
<
String
,
Object
>
map
)
{
Long
activityId
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
map
.
get
(
"activityId"
)),
new
TypeReference
<
Long
>()
{
});
if
(
null
==
activityId
)
{
return
;
}
readingActivityBiz
.
sendClockRemind
(
activityId
);
}
}
pcloud-service-book/src/main/resources/generatorConfig.xml
0 → 100644
View file @
eda95919
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<classPathEntry
location=
"D:\maven\repository\mysql\mysql-connector-java\5.1.40\mysql-connector-java-5.1.40.jar"
/>
<context
id=
"my"
targetRuntime=
"MyBatis3"
>
<commentGenerator>
<property
name=
"suppressDate"
value=
"false"
/>
<property
name=
"suppressAllComments"
value=
"true"
/>
</commentGenerator>
<jdbcConnection
driverClass=
"com.mysql.jdbc.Driver"
connectionURL=
"jdbc:mysql://192.168.92.41:3306/book"
userId=
"root"
password=
"LGSC2016.lgsc"
/>
<javaModelGenerator
targetPackage=
"com.pcloud.book"
targetProject=
"D:\project\RAYS\pcloud-book\pcloud-service-book\src\main\java"
>
<property
name=
"enableSubPackages"
value=
"true"
/>
<property
name=
"trimStrings"
value=
"true"
/>
</javaModelGenerator>
<sqlMapGenerator
targetPackage=
"com.pcloud.book"
targetProject=
"D:\project\RAYS\pcloud-book\pcloud-service-book\src\main\java"
>
<property
name=
"enableSubPackages"
value=
"true"
/>
</sqlMapGenerator>
<javaClientGenerator
targetPackage=
"com.pcloud.book"
targetProject=
"D:\project\RAYS\pcloud-book\pcloud-service-book\src\main\java"
type=
"XMLMAPPER"
>
<property
name=
"enableSubPackages"
value=
"true"
/>
</javaClientGenerator>
<table
tableName=
"book_group_collection"
domainObjectName=
"BookGroupCollection"
enableCountByExample=
"false"
enableUpdateByExample=
"false"
enableDeleteByExample=
"false"
enableSelectByExample=
"false"
selectByExampleQueryId=
"false"
>
</table>
</context>
</generatorConfiguration>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/advertising/AdvertisingBrandMapper.xml
View file @
eda95919
...
...
@@ -139,4 +139,15 @@
LIMIT 1
</select>
<!--根据id集合获取列表-->
<select
id=
"getMapByIds"
parameterType=
"map"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from
advertising_brand
where
is_delete = 0
and id in
<foreach
collection=
"brandIds"
item=
"item"
open=
"("
separator=
","
close=
")"
>
${item}
</foreach>
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/book/Book.Mapper.xml
View file @
eda95919
...
...
@@ -1864,6 +1864,18 @@
<if
test=
"adviserId!=null"
>
AND a.ADVISER_ID = #{adviserId}
</if>
<if
test=
"graLabelId!=null"
>
and a.graLabel_id =#{graLabelId}
</if>
<if
test=
"subLabelId!=null"
>
and a.subLabel_id =#{subLabelId}
</if>
<if
test=
"verLabelId!=null"
>
and a.verLabel_id =#{verLabelId}
</if>
<if
test=
"areaLabelId!=null"
>
and a.areaLabel_id =#{areaLabelId}
</if>
ORDER BY
g.create_time DESC
</select>
...
...
pcloud-service-book/src/main/resources/mapper/group/BookGroupCipherUser.xml
View file @
eda95919
...
...
@@ -546,4 +546,85 @@
alt_id
</select>
<!--只查个人号1.0版本读者-->
<select
id=
"listUser4ReadingActivity"
parameterType=
"map"
resultType=
"com.pcloud.book.group.vo.UserBookInfoVO"
>
SELECT
s.wx_user_id wxUserId,
s.alt_id altId
FROM
book_group_cipher_user s
JOIN (
SELECT
MAX(u.id) uid
FROM
book_group_cipher_user u
LEFT JOIN book_group g ON u.book_group_id = g.id
WHERE
g.join_group_type = 3
<if
test=
"bookIds != null and bookIds.size>0"
>
AND g.book_id IN
<foreach
collection=
"bookIds"
open=
"("
close=
")"
item=
"item"
separator=
","
>
#{item}
</foreach>
</if>
<if
test=
"wxUserIds != null and wxUserIds.size>0"
>
AND u.wx_user_id IN
<foreach
collection=
"wxUserIds"
open=
"("
close=
")"
item=
"item"
separator=
","
>
#{item}
</foreach>
</if>
<if
test=
"robotId != null"
>
AND u.alt_id = #{robotId}
</if>
<if
test=
"invitedFilter != null and invitedFilter == 1"
>
AND u.wx_user_id NOT IN
(SELECT DISTINCT wx_user_id FROM reading_user)
</if>
GROUP BY
u.wx_user_id
) AS a ON s.id = a.uid
GROUP BY
s.wx_user_id
ORDER BY
s.create_time DESC,
s.id DESC
<if
test=
"pageNum>=0 and numPerPage>0"
>
LIMIT #{pageNum}, #{numPerPage}
</if>
</select>
<select
id=
"getScanBookInfoByUserNew"
parameterType=
"map"
resultType=
"com.pcloud.book.group.vo.UserBookInfoItemVO"
>
SELECT
u.book_group_id bookGroupId,
b.BOOK_NAME bookName,
a.GRA_LABEL_ID graLabelId,
a.SUB_LABEL_ID subLabelId,
a.VER_LABEL_ID verLabelId,
a.AREA_LABEL_ID areaLabelId
FROM
book_group_cipher_user u
LEFT JOIN book_group g ON u.book_group_id = g.id
LEFT JOIN book b ON g.book_id = b.BOOK_ID
LEFT JOIN book_adviser a ON g.book_id = a.BOOK_ID
AND g.create_user = a.ADVISER_ID
AND g.channel_id = a.CHANNEL_ID
WHERE
u.wx_user_id = #{wxUserId}
AND u.alt_id = #{altId}
AND a.GRA_LABEL_ID >0
GROUP BY
u.book_group_id
ORDER BY
g.id DESC
</select>
<select
id=
"getAltIdListByUserId"
resultType=
"string"
parameterType=
"string"
>
SELECT DISTINCT
alt_id
FROM
book_group_cipher_user
WHERE
wx_user_id = #{wxUserId}
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/group/GroupQrcode.Mapper.xml
View file @
eda95919
...
...
@@ -26,6 +26,14 @@
create_user,create_time,update_time,is_delete,riddle_open
</sql>
<select
id=
"getGroupUserNum"
parameterType=
"string"
resultMap=
"BaseResultMap"
>
select weixin_group_id, user_number FROM
book_group_qrcode where weixin_group_id in
<foreach
collection=
"list"
item=
"item"
open=
"("
close=
")"
separator=
","
>
#{item}
</foreach>
</select>
<update
id=
"updateGroupCount"
parameterType=
"map"
>
update book_group_qrcode set user_number = #{userNumber} where weixin_group_id = #{weixinGroupId}
</update>
...
...
pcloud-service-book/src/main/resources/mapper/reading/BookGroupCollectionDao.xml
0 → 100644
View file @
eda95919
<?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.reading.dao.impl.BookGroupCollectionDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.reading.entity.BookGroupCollection"
>
<id
column=
"id"
property=
"id"
jdbcType=
"INTEGER"
/>
<result
column=
"amount"
property=
"amount"
jdbcType=
"DECIMAL"
/>
<result
column=
"status"
property=
"status"
jdbcType=
"BIT"
/>
<result
column=
"transfer_id"
property=
"transferId"
jdbcType=
"VARCHAR"
/>
<result
column=
"collection_robot_id"
property=
"collectionRobotId"
jdbcType=
"VARCHAR"
/>
<result
column=
"create_user"
property=
"createUser"
jdbcType=
"VARCHAR"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"update_user"
property=
"updateUser"
jdbcType=
"VARCHAR"
/>
<result
column=
"update_time"
property=
"updateTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, amount, status, transfer_id, collection_robot_id, create_user, create_time, update_user,
update_time
</sql>
<select
id=
"getById"
resultMap=
"BaseResultMap"
parameterType=
"java.lang.Integer"
>
select
<include
refid=
"Base_Column_List"
/>
from book_group_collection
where id = #{id,jdbcType=INTEGER}
</select>
<select
id=
"getByTransferId"
resultType=
"com.pcloud.book.reading.entity.BookGroupCollection"
>
select
<include
refid=
"Base_Column_List"
/>
from book_group_collection
where transfer_id = #{transferId,jdbcType=VARCHAR}
</select>
<delete
id=
"deleteById"
parameterType=
"java.lang.Integer"
>
delete from book_group_collection
where id = #{id,jdbcType=INTEGER}
</delete>
<insert
id=
"insert"
parameterType=
"com.pcloud.book.reading.entity.BookGroupCollection"
>
insert into book_group_collection (id, amount, status,
transfer_id, collection_robot_id, create_user,
create_time, update_user, update_time
)
values (#{id,jdbcType=INTEGER}, #{amount,jdbcType=DECIMAL}, #{status,jdbcType=BIT},
#{transferId,jdbcType=VARCHAR}, #{collectionRobotId,jdbcType=VARCHAR}, #{createUser,jdbcType=VARCHAR},
#{createTime,jdbcType=TIMESTAMP}, #{updateUser,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}
)
</insert>
<update
id=
"update"
parameterType=
"com.pcloud.book.reading.entity.BookGroupCollection"
>
update book_group_collection
<set>
<if
test=
"amount != null"
>
amount = #{amount,jdbcType=DECIMAL},
</if>
<if
test=
"status != null"
>
status = #{status,jdbcType=BIT},
</if>
<if
test=
"transferId != null"
>
transfer_id = #{transferId,jdbcType=VARCHAR},
</if>
<if
test=
"collectionRobotId != null"
>
collection_robot_id = #{collectionRobotId,jdbcType=VARCHAR},
</if>
<if
test=
"createUser != null"
>
create_user = #{createUser,jdbcType=VARCHAR},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if
test=
"updateUser != null"
>
update_user = #{updateUser,jdbcType=VARCHAR},
</if>
<if
test=
"updateTime != null"
>
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/reading/ReadingActivityMapper.xml
0 → 100644
View file @
eda95919
<?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.reading.dao.impl.ReadingActivityDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.reading.entity.ReadingActivity"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"theme"
property=
"theme"
jdbcType=
"VARCHAR"
/>
<result
column=
"brand_id"
property=
"brandId"
jdbcType=
"BIGINT"
/>
<result
column=
"join_condition"
property=
"joinCondition"
jdbcType=
"TINYINT"
/>
<result
column=
"join_keyword"
property=
"joinKeyword"
jdbcType=
"VARCHAR"
/>
<result
column=
"join_amount"
property=
"joinAmount"
jdbcType=
"DECIMAL"
/>
<result
column=
"join_type"
property=
"joinType"
jdbcType=
"TINYINT"
/>
<result
column=
"join_qrcode_pic"
property=
"joinQrcodePic"
jdbcType=
"VARCHAR"
/>
<result
column=
"rule_type"
property=
"ruleType"
jdbcType=
"TINYINT"
/>
<result
column=
"rule"
property=
"rule"
jdbcType=
"VARCHAR"
/>
<result
column=
"rule_resource_id"
property=
"ruleResourceId"
jdbcType=
"VARCHAR"
/>
<result
column=
"start_time"
property=
"startTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"start_slogan_type"
property=
"startSloganType"
jdbcType=
"TINYINT"
/>
<result
column=
"start_slogan"
property=
"startSlogan"
jdbcType=
"VARCHAR"
/>
<result
column=
"start_resource_id"
property=
"startResourceId"
jdbcType=
"VARCHAR"
/>
<result
column=
"end_time"
property=
"endTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"end_slogan_type"
property=
"endSloganType"
jdbcType=
"TINYINT"
/>
<result
column=
"end_slogan"
property=
"endSlogan"
jdbcType=
"VARCHAR"
/>
<result
column=
"end_resource_id"
property=
"endResourceId"
jdbcType=
"VARCHAR"
/>
<result
column=
"riddle_open"
property=
"riddleOpen"
jdbcType=
"BIT"
/>
<result
column=
"award_open"
property=
"awardOpen"
jdbcType=
"BIT"
/>
<result
column=
"award_text"
property=
"awardText"
jdbcType=
"VARCHAR"
/>
<result
column=
"award_pic"
property=
"awardPic"
jdbcType=
"VARCHAR"
/>
<result
column=
"clock_open"
property=
"clockOpen"
jdbcType=
"BIT"
/>
<result
column=
"clock_remind_time"
property=
"clockRemindTime"
jdbcType=
"VARCHAR"
/>
<result
column=
"clock_remind_content"
property=
"clockRemindContent"
jdbcType=
"VARCHAR"
/>
<result
column=
"clock_link"
property=
"clockLink"
jdbcType=
"VARCHAR"
/>
<result
column=
"clock_serve_id"
property=
"clockServeId"
jdbcType=
"BIGINT"
/>
<result
column=
"clock_serve_type"
property=
"clockServeType"
jdbcType=
"VARCHAR"
/>
<result
column=
"clock_result_open"
property=
"clockResultOpen"
jdbcType=
"BIT"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"create_user"
property=
"createUser"
jdbcType=
"BIGINT"
/>
<result
column=
"update_time"
property=
"updateTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<resultMap
id=
"BaseDTOResultMap"
type=
"com.pcloud.book.reading.dto.ReadingActivityDTO"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"theme"
property=
"theme"
jdbcType=
"VARCHAR"
/>
<result
column=
"brand_id"
property=
"brandId"
jdbcType=
"BIGINT"
/>
<result
column=
"join_condition"
property=
"joinCondition"
jdbcType=
"TINYINT"
/>
<result
column=
"join_keyword"
property=
"joinKeyword"
jdbcType=
"VARCHAR"
/>
<result
column=
"join_amount"
property=
"joinAmount"
jdbcType=
"DECIMAL"
/>
<result
column=
"join_type"
property=
"joinType"
jdbcType=
"TINYINT"
/>
<result
column=
"join_qrcode_pic"
property=
"joinQrcodePic"
jdbcType=
"VARCHAR"
/>
<result
column=
"rule_type"
property=
"ruleType"
jdbcType=
"TINYINT"
/>
<result
column=
"rule"
property=
"rule"
jdbcType=
"VARCHAR"
/>
<result
column=
"rule_resource_id"
property=
"ruleResourceId"
jdbcType=
"VARCHAR"
/>
<result
column=
"start_time"
property=
"startTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"start_slogan_type"
property=
"startSloganType"
jdbcType=
"TINYINT"
/>
<result
column=
"start_slogan"
property=
"startSlogan"
jdbcType=
"VARCHAR"
/>
<result
column=
"start_resource_id"
property=
"startResourceId"
jdbcType=
"VARCHAR"
/>
<result
column=
"end_time"
property=
"endTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"end_slogan_type"
property=
"endSloganType"
jdbcType=
"TINYINT"
/>
<result
column=
"end_slogan"
property=
"endSlogan"
jdbcType=
"VARCHAR"
/>
<result
column=
"end_resource_id"
property=
"endResourceId"
jdbcType=
"VARCHAR"
/>
<result
column=
"riddle_open"
property=
"riddleOpen"
jdbcType=
"BIT"
/>
<result
column=
"award_open"
property=
"awardOpen"
jdbcType=
"BIT"
/>
<result
column=
"award_text"
property=
"awardText"
jdbcType=
"VARCHAR"
/>
<result
column=
"award_pic"
property=
"awardPic"
jdbcType=
"VARCHAR"
/>
<result
column=
"clock_open"
property=
"clockOpen"
jdbcType=
"BIT"
/>
<result
column=
"clock_remind_time"
property=
"clockRemindTime"
jdbcType=
"VARCHAR"
/>
<result
column=
"clock_remind_content"
property=
"clockRemindContent"
jdbcType=
"VARCHAR"
/>
<result
column=
"clock_link"
property=
"clockLink"
jdbcType=
"VARCHAR"
/>
<result
column=
"clock_serve_id"
property=
"clockServeId"
jdbcType=
"BIGINT"
/>
<result
column=
"clock_serve_type"
property=
"clockServeType"
jdbcType=
"VARCHAR"
/>
<result
column=
"clock_result_open"
property=
"clockResultOpen"
jdbcType=
"BIT"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"create_user"
property=
"createUser"
jdbcType=
"BIGINT"
/>
<result
column=
"update_time"
property=
"updateTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, theme, brand_id, join_condition, join_keyword, join_amount, join_type, join_qrcode_pic,
rule_type, rule, rule_resource_id, start_time, start_slogan_type, start_slogan, start_resource_id, end_time, end_slogan_type,
end_slogan,end_resource_id, riddle_open, award_open, award_text, award_pic, clock_open, clock_remind_time, clock_remind_content,
clock_link, clock_serve_id, clock_serve_type, clock_result_open, create_time, create_user, update_time
</sql>
<insert
id=
"insert"
parameterType=
"com.pcloud.book.reading.entity.ReadingActivity"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into reading_activity (theme, brand_id,
join_condition, join_keyword, join_amount,
join_type, join_qrcode_pic, rule_type,
rule, rule_resource_id, start_time, start_slogan_type,
start_slogan, start_resource_id, end_time, end_slogan_type,
end_slogan, end_resource_id, riddle_open, award_open,
award_text, award_pic,
clock_open, clock_remind_time, clock_remind_content,
clock_link, clock_serve_id, clock_serve_type, clock_result_open,
create_time, create_user, update_time
)
values (#{theme,jdbcType=VARCHAR}, #{brandId,jdbcType=BIGINT},
#{joinCondition,jdbcType=TINYINT}, #{joinKeyword,jdbcType=VARCHAR}, #{joinAmount,jdbcType=DECIMAL},
#{joinType,jdbcType=TINYINT}, #{joinQrcodePic,jdbcType=VARCHAR}, #{ruleType,jdbcType=TINYINT},
#{rule,jdbcType=VARCHAR}, #{ruleResourceId}, #{startTime,jdbcType=TIMESTAMP}, #{startSloganType,jdbcType=TINYINT},
#{startSlogan,jdbcType=VARCHAR}, #{startResourceId}, #{endTime,jdbcType=TIMESTAMP}, #{endSloganType,jdbcType=TINYINT},
#{endSlogan,jdbcType=VARCHAR}, #{endResourceId}, #{riddleOpen,jdbcType=BIT}, #{awardOpen,jdbcType=BIT},
#{awardText,jdbcType=VARCHAR}, #{awardPic,jdbcType=VARCHAR},
#{clockOpen,jdbcType=BIT}, #{clockRemindTime,jdbcType=VARCHAR}, #{clockRemindContent,jdbcType=VARCHAR},
#{clockLink,jdbcType=VARCHAR}, #{clockServeId,jdbcType=BIGINT}, #{clockServeType,jdbcType=VARCHAR},
#{clockResultOpen,jdbcType=BIT}, NOW(), #{createUser,jdbcType=BIGINT}, NOW()
)
</insert>
<select
id=
"getByTheme"
parameterType=
"string"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM reading_activity
WHERE theme = #{theme,jdbcType=VARCHAR} order by id desc limit 1
</select>
<select
id=
"getById"
parameterType=
"long"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM reading_activity
WHERE id = #{id}
</select>
<update
id=
"updateAdditionSetting"
parameterType=
"com.pcloud.book.reading.entity.ReadingActivity"
>
update reading_activity
set
riddle_open = #{riddleOpen,jdbcType=BIT},
award_open = #{awardOpen,jdbcType=BIT},
award_text = #{awardText,jdbcType=VARCHAR},
award_pic = #{awardPic,jdbcType=VARCHAR},
clock_open = #{clockOpen,jdbcType=BIT},
clock_remind_time = #{clockRemindTime,jdbcType=VARCHAR},
clock_remind_content = #{clockRemindContent,jdbcType=VARCHAR},
clock_link = #{clockLink,jdbcType=VARCHAR},
clock_serve_id = #{clockServeId,jdbcType=BIGINT},
clock_serve_type = #{clockServeType,jdbcType=VARCHAR},
clock_result_open = #{clockResultOpen,jdbcType=BIT},
update_time = NOW()
where id = #{id,jdbcType=BIGINT}
</update>
<!--获取列表-->
<select
id=
"getList"
parameterType=
"map"
resultMap=
"BaseDTOResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from reading_activity
order by create_time desc
</select>
<select
id=
"themeExist"
parameterType=
"string"
resultType=
"boolean"
>
SELECT
EXISTS (
SELECT
id
FROM
reading_activity
WHERE
theme = #{theme}
)
</select>
<update
id=
"update"
parameterType=
"com.pcloud.book.reading.entity.ReadingActivity"
>
update reading_activity
<set
>
<if
test=
"theme != null"
>
theme = #{theme,jdbcType=VARCHAR},
</if>
<if
test=
"ruleType != null"
>
rule_type = #{ruleType,jdbcType=TINYINT},
</if>
<if
test=
"rule != null"
>
rule = #{rule,jdbcType=VARCHAR},
</if>
<if
test=
"ruleResourceId != null"
>
rule_resource_id = #{ruleResourceId,jdbcType=VARCHAR},
</if>
<if
test=
"startTime != null"
>
start_time = #{startTime,jdbcType=TIMESTAMP},
</if>
<if
test=
"startSloganType != null"
>
start_slogan_type = #{startSloganType,jdbcType=TINYINT},
</if>
<if
test=
"startSlogan != null"
>
start_slogan = #{startSlogan,jdbcType=VARCHAR},
</if>
<if
test=
"startResourceId != null"
>
start_resource_id = #{startResourceId,jdbcType=VARCHAR},
</if>
<if
test=
"endTime != null"
>
end_time = #{endTime,jdbcType=TIMESTAMP},
</if>
<if
test=
"endSloganType != null"
>
end_slogan_type = #{endSloganType,jdbcType=TINYINT},
</if>
<if
test=
"endSlogan != null"
>
end_slogan = #{endSlogan,jdbcType=VARCHAR},
</if>
<if
test=
"endResourceId != null"
>
end_resource_id = #{endResourceId,jdbcType=VARCHAR},
</if>
update_time = NOW(),
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<select
id=
"getByThemeAndJoinCondition"
parameterType=
"map"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM reading_activity
WHERE theme = #{theme}
and join_condition =#{joinCondition}
order by id desc limit 1
</select>
<select
id=
"getJoinActivityByKeyword"
resultMap=
"BaseResultMap"
parameterType=
"map"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM
reading_activity
WHERE
join_condition = 2
AND join_keyword = #{joinKeyword}
AND id IN (
SELECT
activity_id
FROM
reading_user
WHERE
wx_user_id = #{wxUserId}
AND alt_id = #{altId}
)
AND (end_time IS NULL OR end_time > CURRENT_TIME)
ORDER BY
create_time DESC
LIMIT 1
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/reading/ReadingGroupCreateMapper.xml
0 → 100644
View file @
eda95919
<?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.reading.dao.impl.ReadingGroupCreateDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.reading.entity.ReadingGroupCreate"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"wx_group_id"
property=
"wxGroupId"
jdbcType=
"VARCHAR"
/>
<result
column=
"master_id"
property=
"masterId"
jdbcType=
"VARCHAR"
/>
<result
column=
"use_state"
property=
"useState"
jdbcType=
"INTEGER"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"update_time"
property=
"updateTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, wx_group_id, master_id, use_state, create_time, update_time
</sql>
<insert
id=
"insert"
parameterType=
"com.pcloud.book.reading.entity.ReadingGroupCreate"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into reading_group_create (wx_group_id, master_id,
use_state, create_time
)
values (#{wxGroupId,jdbcType=VARCHAR}, #{masterId,jdbcType=VARCHAR},
#{useState}, NOW()
)
</insert>
<update
id=
"updateStateByWxGroupId"
parameterType=
"map"
>
UPDATE reading_group_create
SET use_state = #{useState},
update_time = NOW()
WHERE wx_group_id = #{wxGroupId}
</update>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/reading/ReadingGroupMapper.xml
0 → 100644
View file @
eda95919
<?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.reading.dao.impl.ReadingGroupDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.reading.entity.ReadingGroup"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"wx_group_id"
property=
"wxGroupId"
jdbcType=
"VARCHAR"
/>
<result
column=
"wx_group_name"
property=
"wxGroupName"
jdbcType=
"VARCHAR"
/>
<result
column=
"activity_id"
property=
"activityId"
jdbcType=
"BIGINT"
/>
<result
column=
"create_user"
property=
"createUser"
jdbcType=
"BIGINT"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"update_time"
property=
"updateTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, wx_group_id, wx_group_name, activity_id, create_user, create_time
</sql>
<insert
id=
"insert"
parameterType=
"com.pcloud.book.reading.entity.ReadingGroup"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into reading_group (wx_group_id, wx_group_name,
activity_id, create_user, create_time
)
values (#{wxGroupId,jdbcType=VARCHAR}, #{wxGroupName,jdbcType=VARCHAR},
#{activityId,jdbcType=BIGINT}, #{createUser,jdbcType=BIGINT}, NOW()
)
</insert>
<select
id=
"getByActivityId"
parameterType=
"long"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM reading_group
WHERE activity_id = #{activityId}
AND wx_group_id IS NOT NULL
</select>
<select
id=
"getByWxGroupId"
parameterType=
"string"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM reading_group
WHERE wx_group_id = #{wxGroupId}
</select>
<update
id=
"updateWxGroupIdById"
parameterType=
"map"
>
UPDATE reading_group
SET wx_group_id = #{wxGroupId},
update_time = NOW()
WHERE id = #{id}
</update>
<select
id=
"getById"
parameterType=
"long"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM reading_group
WHERE id = #{id}
</select>
<select
id=
"getLatestNullGroup"
resultMap=
"BaseResultMap"
parameterType=
"string"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM
reading_group
WHERE
wx_group_id IS NULL
AND id IN (
SELECT DISTINCT
group_id
FROM
reading_group_robot
WHERE
alt_id = #{altId}
)
ORDER BY
id DESC
LIMIT 1
</select>
<select
id=
"getAllByActivityId"
parameterType=
"long"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM reading_group
WHERE activity_id = #{activityId}
</select>
<update
id=
"updateGroupName"
parameterType=
"map"
>
UPDATE reading_group
SET wx_group_name = #{wxGroupName}
WHERE
id = #{id}
</update>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/reading/ReadingGroupRobotMapper.xml
0 → 100644
View file @
eda95919
<?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.reading.dao.impl.ReadingGroupRobotDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.reading.entity.ReadingGroupRobot"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"wx_group_id"
property=
"wxGroupId"
jdbcType=
"VARCHAR"
/>
<result
column=
"alt_id"
property=
"altId"
jdbcType=
"VARCHAR"
/>
<result
column=
"group_id"
property=
"groupId"
jdbcType=
"BIGINT"
/>
<result
column=
"is_master"
property=
"isMaster"
jdbcType=
"BIT"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"update_time"
property=
"updateTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, wx_group_id, alt_id, group_id, is_master, create_time
</sql>
<insert
id=
"batchInsert"
useGeneratedKeys=
"true"
parameterType=
"java.util.List"
>
insert into reading_group_robot (wx_group_id, alt_id,
group_id, is_master, create_time
)
values
<foreach
collection=
"list"
item=
"item"
index=
"index"
separator=
","
>
( #{item.wxGroupId,jdbcType=VARCHAR}, #{item.altId,jdbcType=VARCHAR},
#{item.groupId}, #{item.isMaster,jdbcType=BIT}, NOW()
)
</foreach>
</insert>
<update
id=
"updateWxGroupByGroupId"
parameterType=
"map"
>
UPDATE reading_group_robot
SET wx_group_id = #{wxGroupId},
update_time = NOW()
WHERE group_id = #{groupId}
</update>
<update
id=
"setMaster"
parameterType=
"map"
>
UPDATE reading_group_robot
SET is_master = 1, update_time = NOW()
WHERE group_id = #{groupId}
AND alt_id = #{altId}
</update>
<select
id=
"getMasterRobotByWxGroupId"
parameterType=
"string"
resultType=
"string"
>
SELECT
alt_id
FROM
reading_group_robot
WHERE
wx_group_id = #{wxGroupId}
AND is_master = 1
LIMIT 1
</select>
<select
id=
"getGroupIdsByCount"
parameterType=
"integer"
resultType=
"long"
>
SELECT
group_id
FROM
reading_group_robot
WHERE
wx_group_id IS NULL
GROUP BY
group_id
HAVING
COUNT(1) = #{count}
ORDER BY
create_time DESC
</select>
<select
id=
"groupExist"
parameterType=
"map"
resultType=
"boolean"
>
SELECT EXISTS(
SELECT
id
FROM
reading_group_robot
WHERE
group_id = #{groupId}
AND wx_group_id IS NULL
AND alt_id IN
<foreach
collection=
"altIds"
open=
"("
close=
")"
item=
"item"
separator=
","
>
#{item}
</foreach>
)
</select>
<select
id=
"getByActivityId"
parameterType=
"long"
resultMap=
"BaseResultMap"
>
SELECT
r.id, r.wx_group_id, r.alt_id, r.group_id, r.is_master, r.create_time
FROM
reading_group_robot r
LEFT JOIN reading_group g ON r.group_id = g.id
WHERE
g.activity_id = #{activityId}
AND r.wx_group_id IS NOT NULL
</select>
<select
id=
"getByGroupId"
parameterType=
"long"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM
reading_group_robot
WHERE
group_id = #{groupId}
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/reading/ReadingInviteMapper.xml
0 → 100644
View file @
eda95919
<?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.reading.dao.impl.ReadingInviteDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.reading.entity.ReadingInvite"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"activity_id"
property=
"activityId"
jdbcType=
"BIGINT"
/>
<result
column=
"invite_time"
property=
"inviteTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"invite_type"
property=
"inviteType"
jdbcType=
"BIT"
/>
<result
column=
"invite_content"
property=
"inviteContent"
jdbcType=
"VARCHAR"
/>
<result
column=
"invite_resource_id"
property=
"inviteResourceId"
jdbcType=
"VARCHAR"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"create_user"
property=
"createUser"
jdbcType=
"BIGINT"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, activity_id, invite_time, invite_type, invite_content, invite_resource_id, create_time, create_user
</sql>
<insert
id=
"batchInsert"
useGeneratedKeys=
"true"
parameterType=
"java.util.List"
>
insert into reading_invite (activity_id, invite_time,
invite_type, invite_content, invite_resource_id, create_time,
create_user)
values
<foreach
collection=
"list"
item=
"item"
index=
"index"
separator=
","
>
(#{item.activityId,jdbcType=BIGINT}, #{item.inviteTime,jdbcType=TIMESTAMP},
#{item.inviteType,jdbcType=BIT}, #{item.inviteContent,jdbcType=VARCHAR}, #{item.inviteResourceId}, NOW(),
#{item.createUser,jdbcType=BIGINT})
</foreach>
</insert>
<select
id=
"getByActivityId"
parameterType=
"long"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM reading_invite
WHERE activity_id = #{activityId}
</select>
<delete
id=
"deleteByActivityId"
parameterType=
"long"
>
DELETE
FROM reading_invite
WHERE activity_id = #{activityId}
</delete>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/reading/ReadingUserMapper.xml
0 → 100644
View file @
eda95919
<?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.reading.dao.impl.ReadingUserDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.reading.entity.ReadingUser"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"activity_id"
property=
"activityId"
jdbcType=
"BIGINT"
/>
<result
column=
"wx_user_id"
property=
"wxUserId"
jdbcType=
"VARCHAR"
/>
<result
column=
"alt_id"
property=
"altId"
jdbcType=
"VARCHAR"
/>
<result
column=
"join_state"
property=
"joinState"
jdbcType=
"INTEGER"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"create_user"
property=
"createUser"
jdbcType=
"BIGINT"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, activity_id, wx_user_id, alt_id, join_state, create_time, create_user
</sql>
<insert
id=
"batchInsert"
useGeneratedKeys=
"true"
parameterType=
"java.util.List"
>
insert into reading_user (activity_id, wx_user_id, alt_id, join_state,
create_time, create_user)
values
<foreach
collection=
"list"
item=
"item"
index=
"index"
separator=
","
>
(#{item.activityId,jdbcType=BIGINT}, #{item.wxUserId,jdbcType=VARCHAR}, #{item.altId,jdbcType=VARCHAR},0,
NOW(), #{item.createUser,jdbcType=BIGINT})
</foreach>
</insert>
<select
id=
"getByActivityId"
resultMap=
"BaseResultMap"
parameterType=
"map"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM reading_user
WHERE activity_id = #{activityId}
<if
test=
"joinState != null"
>
AND join_state = #{joinState}
</if>
</select>
<update
id=
"updateJoinState"
parameterType=
"map"
>
UPDATE reading_user
SET join_state = #{joinState}
where wx_user_id = #{wxUserId} and activity_id = #{activityId}
</update>
<!--根据活动id集合获取活动人数-->
<select
id=
"getUserCountsByActivityIds"
parameterType=
"map"
resultType=
"com.pcloud.book.reading.dto.ActivityUserCountDTO"
>
SELECT
t.activity_id activityId,
COUNT(1) `count`
FROM
reading_user t
where activity_id in
<foreach
collection=
"activityIds"
item=
"item"
open=
"("
separator=
","
close=
")"
>
${item}
</foreach>
GROUP BY
t.activity_id
</select>
<select
id=
"getWxUserIdByActivityIds"
parameterType=
"map"
resultType=
"string"
>
SELECT DISTINCT
wx_user_id
FROM
reading_user
WHERE
1=1
<if
test=
"activityIds != null and activityIds.size>0"
>
AND activity_id IN
<foreach
collection=
"activityIds"
item=
"item"
open=
"("
separator=
","
close=
")"
>
${item}
</foreach>
</if>
</select>
<!--批量获取活动读者书籍-->
<select
id=
"getBooksByActivityIds"
parameterType=
"map"
resultType=
"com.pcloud.book.reading.dto.ActivityUserBookDTO"
>
SELECT
t.activity_id activityId,
t3.BOOK_ID bookId,
t3.BOOK_NAME bookName
FROM
reading_user t
INNER JOIN book_group_cipher_user t1 ON t.wx_user_id = t1.wx_user_id
INNER JOIN book_group t2 ON t1.book_group_id = t2.id
AND t2.is_delete = 0
INNER JOIN book t3 ON t2.book_id = t3.BOOK_ID
AND t3.IS_DELETE = 0
WHERE
t.activity_id IN
<foreach
collection=
"activityIds"
item=
"item"
open=
"("
separator=
","
close=
")"
>
${item}
</foreach>
GROUP BY
t.activity_id,
t3.BOOK_ID
</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