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
af5e9a50
Commit
af5e9a50
authored
Mar 31, 2020
by
阮思源
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feat-1002621' into 'master'
1002621 小睿小程序二期-新用户注册进入小程序流程功能 See merge request rays/pcloud-book!593
parents
9c387ba8
569a85dc
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
362 additions
and
25 deletions
+362
-25
SearchBiz.java
...ook/src/main/java/com/pcloud/book/book/biz/SearchBiz.java
+5
-2
SearchBizImpl.java
...ain/java/com/pcloud/book/book/biz/impl/SearchBizImpl.java
+38
-8
SearchRecordDao.java
...c/main/java/com/pcloud/book/book/dao/SearchRecordDao.java
+5
-0
SearchRecordDaoImpl.java
...va/com/pcloud/book/book/dao/impl/SearchRecordDaoImpl.java
+16
-0
SearchRecord.java
...c/main/java/com/pcloud/book/book/entity/SearchRecord.java
+3
-0
SearchFacade.java
...c/main/java/com/pcloud/book/book/facade/SearchFacade.java
+10
-2
SearchFacadeImpl.java
...va/com/pcloud/book/book/facade/impl/SearchFacadeImpl.java
+15
-4
BookSearchTopVO.java
...rc/main/java/com/pcloud/book/book/vo/BookSearchTopVO.java
+28
-0
CultivateBiz.java
...main/java/com/pcloud/book/cultivate/biz/CultivateBiz.java
+5
-0
CultivateBizImpl.java
.../com/pcloud/book/cultivate/biz/impl/CultivateBizImpl.java
+34
-0
CultivateBookUserDao.java
...a/com/pcloud/book/cultivate/dao/CultivateBookUserDao.java
+8
-0
CultivateBookUserDaoImpl.java
...oud/book/cultivate/dao/impl/CultivateBookUserDaoImpl.java
+14
-0
CultivateBookUser.java
...a/com/pcloud/book/cultivate/entity/CultivateBookUser.java
+21
-0
ReadTypeEnum.java
...in/java/com/pcloud/book/cultivate/enums/ReadTypeEnum.java
+24
-0
CultivateFacade.java
...ava/com/pcloud/book/cultivate/facade/CultivateFacade.java
+17
-0
BookKeywordBizImpl.java
...com/pcloud/book/keywords/biz/impl/BookKeywordBizImpl.java
+5
-1
Book.Mapper.xml
...rvice-book/src/main/resources/mapper/book/Book.Mapper.xml
+1
-1
SearchRecord.xml
...vice-book/src/main/resources/mapper/book/SearchRecord.xml
+67
-7
CultivateBookUser.xml
...src/main/resources/mapper/cultivate/CultivateBookUser.xml
+46
-0
No files found.
pcloud-service-book/src/main/java/com/pcloud/book/book/biz/SearchBiz.java
View file @
af5e9a50
...
@@ -2,6 +2,7 @@ package com.pcloud.book.book.biz;
...
@@ -2,6 +2,7 @@ package com.pcloud.book.book.biz;
import
com.pcloud.book.book.entity.HotBook
;
import
com.pcloud.book.book.entity.HotBook
;
import
com.pcloud.book.book.entity.SearchRecord
;
import
com.pcloud.book.book.entity.SearchRecord
;
import
com.pcloud.book.book.vo.BookSearchTopVO
;
import
com.pcloud.book.book.vo.SearchBookVO
;
import
com.pcloud.book.book.vo.SearchBookVO
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.common.page.PageBeanNew
;
...
@@ -22,13 +23,15 @@ public interface SearchBiz {
...
@@ -22,13 +23,15 @@ public interface SearchBiz {
PageBeanNew
<
SearchRecord
>
getSearchRecordList
(
String
content
,
Long
bookId
,
Long
agentId
,
Integer
currentPage
,
Integer
numPerPage
);
PageBeanNew
<
SearchRecord
>
getSearchRecordList
(
String
content
,
Long
bookId
,
Long
agentId
,
Integer
currentPage
,
Integer
numPerPage
);
PageBeanNew
<
SearchRecord
>
getUserSearchList4H5
(
String
wxId
,
Integer
currentPage
,
Integer
numPerPage
);
PageBeanNew
<
SearchRecord
>
getUserSearchList4H5
(
String
wxId
,
Long
wechatUserId
,
Integer
currentPage
,
Integer
numPerPage
);
void
deleteUserSearchList4H5
(
String
wxId
);
void
deleteUserSearchList4H5
(
String
wxId
,
Long
wechatUserId
);
void
exportSearchList
(
String
systemCode
,
Long
partyId
,
String
content
);
void
exportSearchList
(
String
systemCode
,
Long
partyId
,
String
content
);
void
exportSearchRecordList
(
String
systemCode
,
Long
partyId
,
String
content
,
Long
bookId
,
Long
agentId
);
void
exportSearchRecordList
(
String
systemCode
,
Long
partyId
,
String
content
,
Long
bookId
,
Long
agentId
);
List
<
String
>
getBookSearchUserList4H5
(
Long
bookId
);
List
<
String
>
getBookSearchUserList4H5
(
Long
bookId
);
List
<
BookSearchTopVO
>
getBookSearchTop
(
Integer
top
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/biz/impl/SearchBizImpl.java
View file @
af5e9a50
...
@@ -2,10 +2,13 @@ package com.pcloud.book.book.biz.impl;
...
@@ -2,10 +2,13 @@ package com.pcloud.book.book.biz.impl;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.book.biz.SearchBiz
;
import
com.pcloud.book.book.biz.SearchBiz
;
import
com.pcloud.book.book.dao.BookDao
;
import
com.pcloud.book.book.dao.HotBookDao
;
import
com.pcloud.book.book.dao.HotBookDao
;
import
com.pcloud.book.book.dao.SearchRecordDao
;
import
com.pcloud.book.book.dao.SearchRecordDao
;
import
com.pcloud.book.book.dto.BookDto
;
import
com.pcloud.book.book.entity.HotBook
;
import
com.pcloud.book.book.entity.HotBook
;
import
com.pcloud.book.book.entity.SearchRecord
;
import
com.pcloud.book.book.entity.SearchRecord
;
import
com.pcloud.book.book.vo.BookSearchTopVO
;
import
com.pcloud.book.book.vo.SearchBookVO
;
import
com.pcloud.book.book.vo.SearchBookVO
;
import
com.pcloud.book.consumer.common.ExportConsr
;
import
com.pcloud.book.consumer.common.ExportConsr
;
import
com.pcloud.book.consumer.message.MessageConsr
;
import
com.pcloud.book.consumer.message.MessageConsr
;
...
@@ -53,6 +56,8 @@ public class SearchBizImpl implements SearchBiz {
...
@@ -53,6 +56,8 @@ public class SearchBizImpl implements SearchBiz {
private
ExportConsr
exportConsr
;
private
ExportConsr
exportConsr
;
@Autowired
@Autowired
private
MessageConsr
messageConsr
;
private
MessageConsr
messageConsr
;
@Autowired
private
BookDao
bookDao
;
@ParamLog
(
"创建热门书"
)
@ParamLog
(
"创建热门书"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
@@ -125,12 +130,12 @@ public class SearchBizImpl implements SearchBiz {
...
@@ -125,12 +130,12 @@ public class SearchBizImpl implements SearchBiz {
if
(
searchRecord
==
null
){
if
(
searchRecord
==
null
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"参数为空!"
);
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"参数为空!"
);
}
}
if
(
StringUtil
.
isEmpty
(
searchRecord
.
getWxId
())){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"wxId不能为空!"
);
}
if
(
StringUtil
.
isEmpty
(
searchRecord
.
getContent
())){
if
(
StringUtil
.
isEmpty
(
searchRecord
.
getContent
())){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"内容不能为空!"
);
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"内容不能为空!"
);
}
}
if
(
searchRecord
.
getContent
().
length
()>
50
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"内容长度不能超过!"
);
}
searchRecordDao
.
insert
(
searchRecord
);
searchRecordDao
.
insert
(
searchRecord
);
}
}
...
@@ -273,6 +278,25 @@ public class SearchBizImpl implements SearchBiz {
...
@@ -273,6 +278,25 @@ public class SearchBizImpl implements SearchBiz {
return
headPics
;
return
headPics
;
}
}
@ParamLog
(
"获取用户搜索书籍前几"
)
@Override
public
List
<
BookSearchTopVO
>
getBookSearchTop
(
Integer
top
)
{
if
(
top
==
null
||
top
<=
0
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"参数有误!"
);
}
List
<
BookSearchTopVO
>
list
=
searchRecordDao
.
getBookSearchTop
(
top
);
if
(!
ListUtils
.
isEmpty
(
list
)){
List
<
Long
>
bookIds
=
list
.
stream
().
filter
(
s
->
s
.
getBookId
()!=
null
).
map
(
BookSearchTopVO:
:
getBookId
).
collect
(
Collectors
.
toList
());
Map
<
Long
,
BookDto
>
map
=
bookDao
.
getMapByIds
(
bookIds
);
for
(
BookSearchTopVO
vo:
list
){
if
(
map
.
get
(
vo
.
getBookId
())!=
null
){
vo
.
setCoverImg
(
map
.
get
(
vo
.
getBookId
()).
getCoverImg
());
}
}
}
return
list
;
}
@ParamLog
(
"导出"
)
@ParamLog
(
"导出"
)
private
void
exportSRL
(
List
<
SearchRecord
>
list
,
String
systemCode
,
Long
partyId
)
{
private
void
exportSRL
(
List
<
SearchRecord
>
list
,
String
systemCode
,
Long
partyId
)
{
if
(
ListUtils
.
isEmpty
(
list
))
{
if
(
ListUtils
.
isEmpty
(
list
))
{
...
@@ -310,24 +334,30 @@ public class SearchBizImpl implements SearchBiz {
...
@@ -310,24 +334,30 @@ public class SearchBizImpl implements SearchBiz {
@ParamLog
(
"获取用户最近搜索列表H5"
)
@ParamLog
(
"获取用户最近搜索列表H5"
)
@Override
@Override
public
PageBeanNew
<
SearchRecord
>
getUserSearchList4H5
(
String
wxId
,
Integer
currentPage
,
Integer
numPerPage
)
{
public
PageBeanNew
<
SearchRecord
>
getUserSearchList4H5
(
String
wxId
,
Long
wechatUserId
,
Integer
currentPage
,
Integer
numPerPage
)
{
if
(
currentPage
==
null
||
currentPage
<
0
||
numPerPage
==
null
||
numPerPage
<=
0
){
if
(
currentPage
==
null
||
currentPage
<
0
||
numPerPage
==
null
||
numPerPage
<=
0
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"分页参数有误!"
);
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"分页参数有误!"
);
}
}
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"wxId"
,
wxId
);
map
.
put
(
"wxId"
,
wxId
);
PageBeanNew
<
SearchRecord
>
page
=
searchRecordDao
.
listPageNew
(
new
PageParam
(
currentPage
,
numPerPage
),
map
,
"getUserSearchList4H5"
);
map
.
put
(
"wechatUserId"
,
wechatUserId
);
PageBeanNew
<
SearchRecord
>
page
=
searchRecordDao
.
listPageNew
(
new
PageParam
(
currentPage
,
numPerPage
),
map
,
"getUserSearchList4H5"
,
"countUserSearchList4H5"
);
return
page
;
return
page
;
}
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@ParamLog
(
"删除用户搜索记录H5"
)
@ParamLog
(
"删除用户搜索记录H5"
)
@Override
@Override
public
void
deleteUserSearchList4H5
(
String
wxId
)
{
public
void
deleteUserSearchList4H5
(
String
wxId
,
Long
wechatUserId
)
{
if
(
StringUtil
.
isEmpty
(
wxId
)){
if
(
StringUtil
.
isEmpty
(
wxId
)
&&
wechatUserId
==
null
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"参数有误!"
);
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"参数有误!"
);
}
}
searchRecordDao
.
updateUserDeleteByWxId
(
wxId
,
true
);
if
(!
StringUtil
.
isEmpty
(
wxId
)){
searchRecordDao
.
updateUserDeleteByWxId
(
wxId
,
true
);
}
if
(
wechatUserId
!=
null
){
searchRecordDao
.
updateUserDeleteByWechatUserId
(
wechatUserId
,
true
);
}
}
}
@ParamLog
(
"填充出版社和用户信息"
)
@ParamLog
(
"填充出版社和用户信息"
)
...
...
pcloud-service-book/src/main/java/com/pcloud/book/book/dao/SearchRecordDao.java
View file @
af5e9a50
package
com
.
pcloud
.
book
.
book
.
dao
;
package
com
.
pcloud
.
book
.
book
.
dao
;
import
com.pcloud.book.book.entity.SearchRecord
;
import
com.pcloud.book.book.entity.SearchRecord
;
import
com.pcloud.book.book.vo.BookSearchTopVO
;
import
com.pcloud.common.core.dao.BaseDao
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
import
java.util.List
;
...
@@ -11,4 +12,8 @@ public interface SearchRecordDao extends BaseDao<SearchRecord> {
...
@@ -11,4 +12,8 @@ public interface SearchRecordDao extends BaseDao<SearchRecord> {
List
<
String
>
getRecent5WxIds
(
Long
bookId
);
List
<
String
>
getRecent5WxIds
(
Long
bookId
);
void
updateUserDeleteByWxId
(
String
wxId
,
Boolean
userDelete
);
void
updateUserDeleteByWxId
(
String
wxId
,
Boolean
userDelete
);
List
<
BookSearchTopVO
>
getBookSearchTop
(
Integer
top
);
void
updateUserDeleteByWechatUserId
(
Long
wechatUserId
,
Boolean
userDelete
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/dao/impl/SearchRecordDaoImpl.java
View file @
af5e9a50
...
@@ -2,6 +2,7 @@ package com.pcloud.book.book.dao.impl;
...
@@ -2,6 +2,7 @@ package com.pcloud.book.book.dao.impl;
import
com.pcloud.book.book.dao.SearchRecordDao
;
import
com.pcloud.book.book.dao.SearchRecordDao
;
import
com.pcloud.book.book.entity.SearchRecord
;
import
com.pcloud.book.book.entity.SearchRecord
;
import
com.pcloud.book.book.vo.BookSearchTopVO
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -29,4 +30,19 @@ public class SearchRecordDaoImpl extends BaseDaoImpl<SearchRecord> implements Se
...
@@ -29,4 +30,19 @@ public class SearchRecordDaoImpl extends BaseDaoImpl<SearchRecord> implements Se
map
.
put
(
"userDelete"
,
userDelete
);
map
.
put
(
"userDelete"
,
userDelete
);
super
.
getSqlSession
().
update
(
super
.
getStatement
(
"updateUserDeleteByWxId"
),
map
);
super
.
getSqlSession
().
update
(
super
.
getStatement
(
"updateUserDeleteByWxId"
),
map
);
}
}
@Override
public
List
<
BookSearchTopVO
>
getBookSearchTop
(
Integer
top
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"top"
,
top
);
return
super
.
getSqlSession
().
selectList
(
super
.
getStatement
(
"getBookSearchTop"
),
map
);
}
@Override
public
void
updateUserDeleteByWechatUserId
(
Long
wechatUserId
,
Boolean
userDelete
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"wechatUserId"
,
wechatUserId
);
map
.
put
(
"userDelete"
,
userDelete
);
super
.
getSqlSession
().
update
(
super
.
getStatement
(
"updateUserDeleteByWechatUserId"
),
map
);
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/entity/SearchRecord.java
View file @
af5e9a50
...
@@ -27,6 +27,9 @@ public class SearchRecord extends BaseEntity {
...
@@ -27,6 +27,9 @@ public class SearchRecord extends BaseEntity {
@ApiModelProperty
(
"用户wxId"
)
@ApiModelProperty
(
"用户wxId"
)
private
String
wxId
;
private
String
wxId
;
@ApiModelProperty
(
"微信id"
)
private
Long
wechatUserId
;
@ApiModelProperty
(
"头像"
)
@ApiModelProperty
(
"头像"
)
private
String
headUrl
;
private
String
headUrl
;
...
...
pcloud-service-book/src/main/java/com/pcloud/book/book/facade/SearchFacade.java
View file @
af5e9a50
...
@@ -100,7 +100,8 @@ public interface SearchFacade {
...
@@ -100,7 +100,8 @@ public interface SearchFacade {
@ApiOperation
(
"获取用户最近搜索列表H5"
)
@ApiOperation
(
"获取用户最近搜索列表H5"
)
@GetMapping
(
"getUserSearchList4H5"
)
@GetMapping
(
"getUserSearchList4H5"
)
ResponseDto
<?>
getUserSearchList4H5
(
ResponseDto
<?>
getUserSearchList4H5
(
@RequestParam
(
"wxId"
)
@ApiParam
(
"用户id"
)
String
wxId
,
@RequestParam
(
value
=
"wxId"
,
required
=
false
)
@ApiParam
(
"用户id"
)
String
wxId
,
@RequestParam
(
value
=
"wechatUserId"
,
required
=
false
)
@ApiParam
(
"微信id"
)
Long
wechatUserId
,
@RequestParam
(
"currentPage"
)
@ApiParam
(
"当前页"
)
Integer
currentPage
,
@RequestParam
(
"currentPage"
)
@ApiParam
(
"当前页"
)
Integer
currentPage
,
@RequestParam
(
"numPerPage"
)
@ApiParam
(
"每页条数"
)
Integer
numPerPage
@RequestParam
(
"numPerPage"
)
@ApiParam
(
"每页条数"
)
Integer
numPerPage
)
throws
BizException
,
PermissionException
;
)
throws
BizException
,
PermissionException
;
...
@@ -108,7 +109,8 @@ public interface SearchFacade {
...
@@ -108,7 +109,8 @@ public interface SearchFacade {
@ApiOperation
(
"删除用户搜索记录H5"
)
@ApiOperation
(
"删除用户搜索记录H5"
)
@GetMapping
(
"deleteUserSearchList4H5"
)
@GetMapping
(
"deleteUserSearchList4H5"
)
ResponseDto
<?>
deleteUserSearchList4H5
(
ResponseDto
<?>
deleteUserSearchList4H5
(
@RequestParam
(
"wxId"
)
@ApiParam
(
"用户id"
)
String
wxId
@RequestParam
(
value
=
"wxId"
,
required
=
false
)
@ApiParam
(
"用户id"
)
String
wxId
,
@RequestParam
(
value
=
"wechatUserId"
,
required
=
false
)
@ApiParam
(
"微信id"
)
Long
wechatUserId
)
throws
BizException
,
PermissionException
;
)
throws
BizException
,
PermissionException
;
@ApiOperation
(
"获取搜索书籍的用户H5"
)
@ApiOperation
(
"获取搜索书籍的用户H5"
)
...
@@ -117,4 +119,10 @@ public interface SearchFacade {
...
@@ -117,4 +119,10 @@ public interface SearchFacade {
@RequestParam
(
"bookId"
)
@ApiParam
(
"书id"
)
Long
bookId
@RequestParam
(
"bookId"
)
@ApiParam
(
"书id"
)
Long
bookId
)
throws
BizException
,
PermissionException
;
)
throws
BizException
,
PermissionException
;
@ApiOperation
(
"获取用户搜索书籍前几"
)
@GetMapping
(
"getBookSearchTop"
)
ResponseDto
<?>
getBookSearchTop
(
@RequestParam
(
"top"
)
@ApiParam
(
"前几"
)
Integer
top
)
throws
BizException
,
PermissionException
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/facade/impl/SearchFacadeImpl.java
View file @
af5e9a50
...
@@ -177,20 +177,22 @@ public class SearchFacadeImpl implements SearchFacade {
...
@@ -177,20 +177,22 @@ public class SearchFacadeImpl implements SearchFacade {
@GetMapping
(
"getUserSearchList4H5"
)
@GetMapping
(
"getUserSearchList4H5"
)
@Override
@Override
public
ResponseDto
<?>
getUserSearchList4H5
(
public
ResponseDto
<?>
getUserSearchList4H5
(
@RequestParam
(
"wxId"
)
@ApiParam
(
"用户id"
)
String
wxId
,
@RequestParam
(
value
=
"wxId"
,
required
=
false
)
@ApiParam
(
"用户id"
)
String
wxId
,
@RequestParam
(
value
=
"wechatUserId"
,
required
=
false
)
@ApiParam
(
"微信id"
)
Long
wechatUserId
,
@RequestParam
(
"currentPage"
)
@ApiParam
(
"当前页"
)
Integer
currentPage
,
@RequestParam
(
"currentPage"
)
@ApiParam
(
"当前页"
)
Integer
currentPage
,
@RequestParam
(
"numPerPage"
)
@ApiParam
(
"每页条数"
)
Integer
numPerPage
@RequestParam
(
"numPerPage"
)
@ApiParam
(
"每页条数"
)
Integer
numPerPage
)
throws
BizException
,
PermissionException
{
)
throws
BizException
,
PermissionException
{
return
new
ResponseDto
<>(
searchBiz
.
getUserSearchList4H5
(
wxId
,
currentPage
,
numPerPage
));
return
new
ResponseDto
<>(
searchBiz
.
getUserSearchList4H5
(
wxId
,
wechatUserId
,
currentPage
,
numPerPage
));
}
}
@ApiOperation
(
"删除用户搜索记录H5"
)
@ApiOperation
(
"删除用户搜索记录H5"
)
@GetMapping
(
"deleteUserSearchList4H5"
)
@GetMapping
(
"deleteUserSearchList4H5"
)
@Override
@Override
public
ResponseDto
<?>
deleteUserSearchList4H5
(
public
ResponseDto
<?>
deleteUserSearchList4H5
(
@RequestParam
(
"wxId"
)
@ApiParam
(
"用户id"
)
String
wxId
@RequestParam
(
value
=
"wxId"
,
required
=
false
)
@ApiParam
(
"用户id"
)
String
wxId
,
@RequestParam
(
value
=
"wechatUserId"
,
required
=
false
)
@ApiParam
(
"微信id"
)
Long
wechatUserId
)
throws
BizException
,
PermissionException
{
)
throws
BizException
,
PermissionException
{
searchBiz
.
deleteUserSearchList4H5
(
wxId
);
searchBiz
.
deleteUserSearchList4H5
(
wxId
,
wechatUserId
);
return
new
ResponseDto
<>();
return
new
ResponseDto
<>();
}
}
...
@@ -202,4 +204,13 @@ public class SearchFacadeImpl implements SearchFacade {
...
@@ -202,4 +204,13 @@ public class SearchFacadeImpl implements SearchFacade {
)
throws
BizException
,
PermissionException
{
)
throws
BizException
,
PermissionException
{
return
new
ResponseDto
<>(
searchBiz
.
getBookSearchUserList4H5
(
bookId
));
return
new
ResponseDto
<>(
searchBiz
.
getBookSearchUserList4H5
(
bookId
));
}
}
@ApiOperation
(
"获取用户搜索书籍前几"
)
@GetMapping
(
"getBookSearchTop"
)
@Override
public
ResponseDto
<?>
getBookSearchTop
(
@RequestParam
(
"top"
)
@ApiParam
(
"前几"
)
Integer
top
)
throws
BizException
,
PermissionException
{
return
new
ResponseDto
<>(
searchBiz
.
getBookSearchTop
(
top
));
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/vo/BookSearchTopVO.java
0 → 100644
View file @
af5e9a50
package
com
.
pcloud
.
book
.
book
.
vo
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
@Data
@ApiModel
(
"获取搜索前几书VO"
)
public
class
BookSearchTopVO
{
@ApiModelProperty
(
"书籍id"
)
private
Long
bookId
;
@ApiModelProperty
(
"书名"
)
private
String
bookName
;
@ApiModelProperty
(
"书封面"
)
private
String
coverImg
;
@ApiModelProperty
(
"出版社id"
)
private
Long
agentId
;
@ApiModelProperty
(
"出版社名称"
)
private
String
agentName
;
}
pcloud-service-book/src/main/java/com/pcloud/book/cultivate/biz/CultivateBiz.java
View file @
af5e9a50
...
@@ -6,6 +6,7 @@ import com.pcloud.book.cultivate.dto.FishBallConversionDTO;
...
@@ -6,6 +6,7 @@ import com.pcloud.book.cultivate.dto.FishBallConversionDTO;
import
com.pcloud.book.cultivate.dto.FishBallPickDTO
;
import
com.pcloud.book.cultivate.dto.FishBallPickDTO
;
import
com.pcloud.book.cultivate.dto.SkillUseDTO
;
import
com.pcloud.book.cultivate.dto.SkillUseDTO
;
import
com.pcloud.book.cultivate.entity.Cultivate
;
import
com.pcloud.book.cultivate.entity.Cultivate
;
import
com.pcloud.book.cultivate.entity.CultivateBookUser
;
import
com.pcloud.book.cultivate.entity.CultivateRecord
;
import
com.pcloud.book.cultivate.entity.CultivateRecord
;
import
com.pcloud.book.cultivate.entity.CultivateRobotClassify
;
import
com.pcloud.book.cultivate.entity.CultivateRobotClassify
;
import
com.pcloud.book.personal.dto.PersonalMedalRecordDto
;
import
com.pcloud.book.personal.dto.PersonalMedalRecordDto
;
...
@@ -46,4 +47,8 @@ public interface CultivateBiz {
...
@@ -46,4 +47,8 @@ public interface CultivateBiz {
List
<
PersonalMedalRecordDto
>
getUserMedalList
(
Long
wechatUserId
);
List
<
PersonalMedalRecordDto
>
getUserMedalList
(
Long
wechatUserId
);
Integer
getResidueLightTime
(
Long
cultivateId
);
Integer
getResidueLightTime
(
Long
cultivateId
);
Long
createCultivateBookUser
(
CultivateBookUser
cultivateBookUser
);
CultivateBookUser
getLastCultivateBookUser
(
Long
wechatUserId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/cultivate/biz/impl/CultivateBizImpl.java
View file @
af5e9a50
...
@@ -5,11 +5,13 @@ import com.pcloud.book.base.exception.BookBizException;
...
@@ -5,11 +5,13 @@ import com.pcloud.book.base.exception.BookBizException;
import
com.pcloud.book.consumer.reader.ReaderConsr
;
import
com.pcloud.book.consumer.reader.ReaderConsr
;
import
com.pcloud.book.cultivate.biz.CultivateBiz
;
import
com.pcloud.book.cultivate.biz.CultivateBiz
;
import
com.pcloud.book.cultivate.constant.CultivateConstant
;
import
com.pcloud.book.cultivate.constant.CultivateConstant
;
import
com.pcloud.book.cultivate.dao.CultivateBookUserDao
;
import
com.pcloud.book.cultivate.dao.CultivateDao
;
import
com.pcloud.book.cultivate.dao.CultivateDao
;
import
com.pcloud.book.cultivate.dao.CultivateRecordDao
;
import
com.pcloud.book.cultivate.dao.CultivateRecordDao
;
import
com.pcloud.book.cultivate.dao.CultivateRobotClassifyDao
;
import
com.pcloud.book.cultivate.dao.CultivateRobotClassifyDao
;
import
com.pcloud.book.cultivate.dto.*
;
import
com.pcloud.book.cultivate.dto.*
;
import
com.pcloud.book.cultivate.entity.Cultivate
;
import
com.pcloud.book.cultivate.entity.Cultivate
;
import
com.pcloud.book.cultivate.entity.CultivateBookUser
;
import
com.pcloud.book.cultivate.entity.CultivateRecord
;
import
com.pcloud.book.cultivate.entity.CultivateRecord
;
import
com.pcloud.book.cultivate.entity.CultivateRobotClassify
;
import
com.pcloud.book.cultivate.entity.CultivateRobotClassify
;
import
com.pcloud.book.cultivate.enums.CultivateChangeTypeEnum
;
import
com.pcloud.book.cultivate.enums.CultivateChangeTypeEnum
;
...
@@ -38,6 +40,7 @@ import com.pcloud.common.page.PageParam;
...
@@ -38,6 +40,7 @@ import com.pcloud.common.page.PageParam;
import
com.pcloud.common.utils.DateUtils
;
import
com.pcloud.common.utils.DateUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.facade.shareimage.dto.HtmlDto
;
import
com.pcloud.facade.shareimage.dto.HtmlDto
;
import
com.pcloud.facade.shareimage.facade.Htm2ImgService
;
import
com.pcloud.facade.shareimage.facade.Htm2ImgService
;
import
com.pcloud.readercenter.wechat.entity.WechatUser
;
import
com.pcloud.readercenter.wechat.entity.WechatUser
;
...
@@ -79,6 +82,8 @@ public class CultivateBizImpl implements CultivateBiz {
...
@@ -79,6 +82,8 @@ public class CultivateBizImpl implements CultivateBiz {
@Autowired
@Autowired
private
PersonalMedalBiz
personalMedalBiz
;
private
PersonalMedalBiz
personalMedalBiz
;
@Autowired
private
CultivateBookUserDao
cultivateBookUserDao
;
...
@@ -569,6 +574,35 @@ public class CultivateBizImpl implements CultivateBiz {
...
@@ -569,6 +574,35 @@ public class CultivateBizImpl implements CultivateBiz {
return
time
;
return
time
;
}
}
@ParamLog
(
"小睿养成读者喜好书籍"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
Long
createCultivateBookUser
(
CultivateBookUser
cultivateBookUser
)
{
if
(
cultivateBookUser
==
null
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"参数为空!"
);
}
if
(
cultivateBookUser
.
getWechatUserId
()==
null
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"wechatUserId参数为空!"
);
}
if
(
StringUtil
.
isEmpty
(
cultivateBookUser
.
getBookName
())){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"书名参数为空!"
);
}
if
(
cultivateBookUser
.
getReadType
()==
null
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"阅读类型参数为空!"
);
}
cultivateBookUserDao
.
insert
(
cultivateBookUser
);
return
cultivateBookUser
.
getId
();
}
@ParamLog
(
"获取最后一次小睿养成读者喜好书籍"
)
@Override
public
CultivateBookUser
getLastCultivateBookUser
(
Long
wechatUserId
)
{
if
(
wechatUserId
==
null
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"参数为空!"
);
}
return
cultivateBookUserDao
.
getLastCultivateBookUser
(
wechatUserId
);
}
@Override
@Override
@ParamLog
(
"分享"
)
@ParamLog
(
"分享"
)
public
String
shareMedal
(
Long
wechatUserId
)
{
public
String
shareMedal
(
Long
wechatUserId
)
{
...
...
pcloud-service-book/src/main/java/com/pcloud/book/cultivate/dao/CultivateBookUserDao.java
0 → 100644
View file @
af5e9a50
package
com
.
pcloud
.
book
.
cultivate
.
dao
;
import
com.pcloud.book.cultivate.entity.CultivateBookUser
;
import
com.pcloud.common.core.dao.BaseDao
;
public
interface
CultivateBookUserDao
extends
BaseDao
<
CultivateBookUser
>
{
CultivateBookUser
getLastCultivateBookUser
(
Long
wechatUserId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/cultivate/dao/impl/CultivateBookUserDaoImpl.java
0 → 100644
View file @
af5e9a50
package
com
.
pcloud
.
book
.
cultivate
.
dao
.
impl
;
import
com.pcloud.book.cultivate.dao.CultivateBookUserDao
;
import
com.pcloud.book.cultivate.entity.CultivateBookUser
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
@Component
(
"cultivateBookUserDao"
)
public
class
CultivateBookUserDaoImpl
extends
BaseDaoImpl
<
CultivateBookUser
>
implements
CultivateBookUserDao
{
@Override
public
CultivateBookUser
getLastCultivateBookUser
(
Long
wechatUserId
)
{
return
super
.
getSqlSession
().
selectOne
(
getStatement
(
"getLastCultivateBookUser"
),
wechatUserId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/cultivate/entity/CultivateBookUser.java
0 → 100644
View file @
af5e9a50
package
com
.
pcloud
.
book
.
cultivate
.
entity
;
import
com.pcloud.common.entity.BaseEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
"小睿养成读者喜好书籍"
)
public
class
CultivateBookUser
extends
BaseEntity
{
@ApiModelProperty
(
"用户id"
)
private
Long
wechatUserId
;
@ApiModelProperty
(
"书名"
)
private
String
bookName
;
@ApiModelProperty
(
"阅读类型:1轻松阅读,2高效阅读,3深度阅读"
)
private
Integer
readType
;
}
pcloud-service-book/src/main/java/com/pcloud/book/cultivate/enums/ReadTypeEnum.java
0 → 100644
View file @
af5e9a50
package
com
.
pcloud
.
book
.
cultivate
.
enums
;
public
enum
ReadTypeEnum
{
/**
* 轻松阅读
*/
QS_READ
(
1
),
/**
* 高效阅读
*/
GX_READ
(
2
),
/**
* 深度阅读
*/
SD_READ
(
3
);
public
final
Integer
value
;
ReadTypeEnum
(
Integer
value
)
{
this
.
value
=
value
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/cultivate/facade/CultivateFacade.java
View file @
af5e9a50
...
@@ -7,6 +7,7 @@ import com.pcloud.book.cultivate.dto.EnergyConsumptionDTO;
...
@@ -7,6 +7,7 @@ import com.pcloud.book.cultivate.dto.EnergyConsumptionDTO;
import
com.pcloud.book.cultivate.dto.FishBallConversionDTO
;
import
com.pcloud.book.cultivate.dto.FishBallConversionDTO
;
import
com.pcloud.book.cultivate.dto.FishBallPickDTO
;
import
com.pcloud.book.cultivate.dto.FishBallPickDTO
;
import
com.pcloud.book.cultivate.dto.SkillUseDTO
;
import
com.pcloud.book.cultivate.dto.SkillUseDTO
;
import
com.pcloud.book.cultivate.entity.CultivateBookUser
;
import
com.pcloud.book.cultivate.entity.CultivateRobotClassify
;
import
com.pcloud.book.cultivate.entity.CultivateRobotClassify
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.BizException
;
...
@@ -156,5 +157,21 @@ public class CultivateFacade {
...
@@ -156,5 +157,21 @@ public class CultivateFacade {
return
new
ResponseDto
<>(
cultivateBiz
.
getResidueLightTime
(
cultivateId
));
return
new
ResponseDto
<>(
cultivateBiz
.
getResidueLightTime
(
cultivateId
));
}
}
@ApiOperation
(
"小睿养成读者喜好书籍"
)
@PostMapping
(
"/createCultivateBookUser"
)
public
ResponseDto
<?>
createCultivateBookUser
(
@RequestBody
CultivateBookUser
cultivateBookUser
)
throws
BizException
,
PermissionException
{
return
new
ResponseDto
<>(
cultivateBiz
.
createCultivateBookUser
(
cultivateBookUser
));
}
@ApiOperation
(
"获取最后一次小睿养成读者喜好书籍"
)
@GetMapping
(
"/getLastCultivateBookUser"
)
public
ResponseDto
<?>
getLastCultivateBookUser
(
@RequestParam
(
"wechatUserId"
)
Long
wechatUserId
)
throws
BizException
,
PermissionException
{
return
new
ResponseDto
<>(
cultivateBiz
.
getLastCultivateBookUser
(
wechatUserId
));
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/keywords/biz/impl/BookKeywordBizImpl.java
View file @
af5e9a50
...
@@ -672,7 +672,11 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
...
@@ -672,7 +672,11 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
searchRecord
.
setWxId
(
userWxId
);
searchRecord
.
setWxId
(
userWxId
);
Long
agentId
=
adviserConsr
.
getAgentIdByAdviser
(
bookDto
.
getAdviserId
());
Long
agentId
=
adviserConsr
.
getAgentIdByAdviser
(
bookDto
.
getAdviserId
());
searchRecord
.
setAgentId
(
agentId
);
searchRecord
.
setAgentId
(
agentId
);
searchRecordDao
.
insert
(
searchRecord
);
if
(
searchRecord
.
getContent
().
length
()>
50
){
log
.
error
(
"长度大于50"
+
bookName
);
}
else
{
searchRecordDao
.
insert
(
searchRecord
);
}
}
}
}
}
...
...
pcloud-service-book/src/main/resources/mapper/book/Book.Mapper.xml
View file @
af5e9a50
...
@@ -2114,7 +2114,7 @@
...
@@ -2114,7 +2114,7 @@
1=1
1=1
AND A.IS_MAIN_EDITOR = 1
AND A.IS_MAIN_EDITOR = 1
<if
test=
"keyword != null"
>
<if
test=
"keyword != null"
>
AND (B.BOOK_NAME LIKE CONCAT('%', #{keyword}, '%'))
AND (B.BOOK_NAME LIKE CONCAT('%', #{keyword}, '%')
or B.ISBN LIKE CONCAT(#{keyword},'%')
)
</if>
</if>
<if
test=
"templetId != null"
>
<if
test=
"templetId != null"
>
AND
AND
...
...
pcloud-service-book/src/main/resources/mapper/book/SearchRecord.xml
View file @
af5e9a50
...
@@ -8,13 +8,14 @@
...
@@ -8,13 +8,14 @@
<result
column=
"book_id"
property=
"bookId"
jdbcType=
"BIGINT"
/>
<result
column=
"book_id"
property=
"bookId"
jdbcType=
"BIGINT"
/>
<result
column=
"agent_id"
property=
"agentId"
jdbcType=
"BIGINT"
/>
<result
column=
"agent_id"
property=
"agentId"
jdbcType=
"BIGINT"
/>
<result
column=
"wx_id"
property=
"wxId"
jdbcType=
"VARCHAR"
/>
<result
column=
"wx_id"
property=
"wxId"
jdbcType=
"VARCHAR"
/>
<result
column=
"wechat_user_id"
property=
"wechatUserId"
jdbcType=
"BIGINT"
/>
<result
column=
"hot_book_id"
property=
"hotBookId"
jdbcType=
"BIGINT"
/>
<result
column=
"hot_book_id"
property=
"hotBookId"
jdbcType=
"BIGINT"
/>
<result
column=
"user_delete"
property=
"userDelete"
jdbcType=
"BOOLEAN"
/>
<result
column=
"user_delete"
property=
"userDelete"
jdbcType=
"BOOLEAN"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"INTEGER"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"INTEGER"
/>
</resultMap>
</resultMap>
<sql
id=
"Base_Column_List"
>
<sql
id=
"Base_Column_List"
>
id,content,book_id,agent_id,wx_id,hot_book_id,user_delete,create_time
id,content,book_id,agent_id,wx_id,
wechat_user_id,
hot_book_id,user_delete,create_time
</sql>
</sql>
<insert
id=
"insert"
parameterType=
"com.pcloud.book.book.entity.SearchRecord"
useGeneratedKeys=
"true"
<insert
id=
"insert"
parameterType=
"com.pcloud.book.book.entity.SearchRecord"
useGeneratedKeys=
"true"
...
@@ -25,6 +26,7 @@
...
@@ -25,6 +26,7 @@
book_id,
book_id,
agent_id,
agent_id,
wx_id,
wx_id,
wechat_user_id,
hot_book_id,
hot_book_id,
create_time
create_time
</trim>
</trim>
...
@@ -33,6 +35,7 @@
...
@@ -33,6 +35,7 @@
#{bookId,jdbcType=BIGINT},
#{bookId,jdbcType=BIGINT},
#{agentId,jdbcType=BIGINT},
#{agentId,jdbcType=BIGINT},
#{wxId,jdbcType=VARCHAR},
#{wxId,jdbcType=VARCHAR},
#{wechatUserId,jdbcType=BIGINT},
#{hotBookId,jdbcType=BIGINT},
#{hotBookId,jdbcType=BIGINT},
NOW()
NOW()
</trim>
</trim>
...
@@ -66,12 +69,49 @@
...
@@ -66,12 +69,49 @@
</select>
</select>
<select
id=
"getUserSearchList4H5"
parameterType=
"map"
resultMap=
"BaseResultMap"
>
<select
id=
"getUserSearchList4H5"
parameterType=
"map"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
select
from search_record
<include
refid=
"Base_Column_List"
/>
where wx_id=#{wxId}
FROM
and user_delete=0
search_record
group by content
WHERE
order by create_time desc
id IN (
SELECT
MAX(id)
FROM
search_record
WHERE user_delete = 0
<if
test=
"wxId!=null"
>
and wx_id = #{wxId}
</if>
<if
test=
"wechatUserId!=null"
>
and wechat_user_id = #{wechatUserId}
</if>
GROUP BY
content
) ORDER by id DESC
</select>
<select
id=
"countUserSearchList4H5"
parameterType=
"map"
resultType=
"integer"
>
select
count(1)
FROM
search_record
WHERE
id IN (
SELECT
MAX(id)
FROM
search_record
WHERE user_delete = 0
<if
test=
"wxId!=null"
>
and wx_id = #{wxId}
</if>
<if
test=
"wechatUserId!=null"
>
and wechat_user_id = #{wechatUserId}
</if>
GROUP BY
content
)
</select>
</select>
<delete
id=
"deleteByWxId"
parameterType=
"string"
>
<delete
id=
"deleteByWxId"
parameterType=
"string"
>
...
@@ -92,4 +132,23 @@
...
@@ -92,4 +132,23 @@
where wx_id=#{wxId}
where wx_id=#{wxId}
</update>
</update>
<select
id=
"getBookSearchTop"
parameterType=
"map"
resultType=
"com.pcloud.book.book.vo.BookSearchTopVO"
>
select
content bookName,
book_id bookId,
agent_id agentId
from search_record
where book_id is not null
and agent_id is not null
group by book_id,agent_id
order by count(1) desc
limit #{top}
</select>
<update
id=
"updateUserDeleteByWechatUserId"
parameterType=
"map"
>
update search_record
set user_delete=#{userDelete}
where wechat_user_id=#{wechatUserId}
</update>
</mapper>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/cultivate/CultivateBookUser.xml
0 → 100644
View file @
af5e9a50
<?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.cultivate.dao.impl.CultivateBookUserDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.cultivate.entity.CultivateBookUser"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"wechat_user_id"
property=
"wechatUserId"
jdbcType=
"BIGINT"
/>
<result
column=
"book_name"
property=
"bookName"
jdbcType=
"VARCHAR"
/>
<result
column=
"read_type"
property=
"readType"
jdbcType=
"INTEGER"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, wechat_user_id, book_name, read_type, create_time
</sql>
<insert
id=
"insert"
parameterType=
"com.pcloud.book.cultivate.entity.CultivateBookUser"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into cultivate_book_user
(
wechat_user_id,
book_name,
read_type,
create_time
)
values (
#{wechatUserId},
#{bookName},
#{readType},
NOW()
)
</insert>
<select
id=
"getById"
parameterType=
"long"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from
cultivate_book_user
where id=#{id}
</select>
<select
id=
"getLastCultivateBookUser"
parameterType=
"long"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from
cultivate_book_user
where wechat_user_id=#{wechatUserId}
order by create_time desc limit 1
</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