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
8410ff4e
Commit
8410ff4e
authored
Sep 25, 2020
by
桂前礼
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: [1003702] 平台端出版社项目数据一览
parent
89f3d60c
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
878 additions
and
30 deletions
+878
-30
BookVarietyStatsDto.java
...in/java/com/pcloud/book/book/dto/BookVarietyStatsDto.java
+126
-0
BookVarietyStatsRequestDto.java
.../com/pcloud/book/book/dto/BookVarietyStatsRequestDto.java
+29
-0
ERPPublishNumDTO.java
.../main/java/com/pcloud/book/book/dto/ERPPublishNumDTO.java
+26
-0
ErpBookInfoDTO.java
...rc/main/java/com/pcloud/book/book/dto/ErpBookInfoDTO.java
+45
-0
BookAdviserService.java
...java/com/pcloud/book/book/service/BookAdviserService.java
+21
-2
BookAdviserBiz.java
...rc/main/java/com/pcloud/book/book/biz/BookAdviserBiz.java
+23
-1
BookAdviserBizImpl.java
...ava/com/pcloud/book/book/biz/impl/BookAdviserBizImpl.java
+0
-0
BookAdviserDao.java
...rc/main/java/com/pcloud/book/book/dao/BookAdviserDao.java
+9
-0
BookAdviserDaoImpl.java
...ava/com/pcloud/book/book/dao/impl/BookAdviserDaoImpl.java
+36
-1
BookAdviserFacade.java
...n/java/com/pcloud/book/book/facade/BookAdviserFacade.java
+38
-2
BookAdviserFacadeImpl.java
...m/pcloud/book/book/facade/impl/BookAdviserFacadeImpl.java
+61
-16
BookAdviserServiceImpl.java
...pcloud/book/book/service/impl/BookAdviserServiceImpl.java
+24
-2
AgentBookStatsDetailVO.java
.../java/com/pcloud/book/book/vo/AgentBookStatsDetailVO.java
+148
-0
QrcodeInfoDto.java
.../src/main/java/com/pcloud/book/book/vo/QrcodeInfoDto.java
+36
-0
BrowseRecordConsr.java
...cloud/book/consumer/analysisengine/BrowseRecordConsr.java
+17
-1
ErpConsr.java
.../src/main/java/com/pcloud/book/consumer/erp/ErpConsr.java
+76
-0
TradeConsr.java
.../main/java/com/pcloud/book/consumer/trade/TradeConsr.java
+15
-1
ChannelConsr.java
...main/java/com/pcloud/book/consumer/user/ChannelConsr.java
+14
-0
WechatGroupConsr.java
...om/pcloud/book/consumer/wechatgroup/WechatGroupConsr.java
+28
-4
BookAdviser.Mapper.xml
...ook/src/main/resources/mapper/book/BookAdviser.Mapper.xml
+106
-0
No files found.
pcloud-facade-book/src/main/java/com/pcloud/book/book/dto/BookVarietyStatsDto.java
0 → 100644
View file @
8410ff4e
package
com
.
pcloud
.
book
.
book
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* 编辑做书品种统计信息
*
* @author guiq
* @version 1.0
* @since 2020年9月24日
*/
@Data
@ApiModel
(
"编辑做书品种统计信息"
)
public
class
BookVarietyStatsDto
implements
Serializable
{
/**
* 累计做书品种数
*/
@ApiModelProperty
(
"累计做书品种数"
)
private
Integer
varietyTotal
;
/**
* 上季度做书品种数
*/
@ApiModelProperty
(
"上季度做书品种数"
)
private
Integer
varietyLastQuarter
;
/**
* 本季度做书品种数
*/
@ApiModelProperty
(
"本季度做书品种数"
)
private
Integer
varietyThisQuarter
;
/**
* 累计印册量
*/
@ApiModelProperty
(
"累计印册量"
)
private
Integer
printTotal
;
/**
* 上季度印册量
*/
@ApiModelProperty
(
"上季度印册量"
)
private
Integer
printLastQuarter
;
/**
* 本季度印册量
*/
@ApiModelProperty
(
"本季度印册量"
)
private
Integer
printThisQuarter
;
/**
* 累计扫码人数
*/
@ApiModelProperty
(
"累计扫码人数"
)
private
Integer
scanUserTotal
;
/**
* 上季度扫码人数
*/
@ApiModelProperty
(
"上季度扫码人数"
)
private
Integer
scanUserLastQuarter
;
/**
* 本季度扫码人数
*/
@ApiModelProperty
(
"本季度扫码人数"
)
private
Integer
scanUserThisQuarter
;
/**
* 累计浏览人数
*/
@ApiModelProperty
(
"累计浏览人数"
)
private
Integer
browseUserTotal
;
/**
* 上季度浏览人数
*/
@ApiModelProperty
(
"上季度浏览人数"
)
private
Integer
browseUserLastQuarter
;
/**
* 本季度浏览人数
*/
@ApiModelProperty
(
"本季度浏览人数"
)
private
Integer
browseUserThisQuarter
;
/**
* 累计扫码量
*/
@ApiModelProperty
(
"累计扫码量"
)
private
Integer
scanTotal
;
/**
* 上季度扫码量
*/
@ApiModelProperty
(
"上季度扫码量"
)
private
Integer
scanLastQuarter
;
/**
* 本季度扫码量
*/
@ApiModelProperty
(
"本季度扫码量"
)
private
Integer
scanThisQuarter
;
/**
* 累计浏览量
*/
@ApiModelProperty
(
"累计浏览量"
)
private
Integer
browseTotal
;
/**
* 上季度浏览量
*/
@ApiModelProperty
(
"上季度浏览量"
)
private
Integer
browseLastQuarter
;
/**
* 本季度浏览量
*/
@ApiModelProperty
(
"本季度浏览量"
)
private
Integer
browseThisQuarter
;
}
pcloud-facade-book/src/main/java/com/pcloud/book/book/dto/BookVarietyStatsRequestDto.java
0 → 100644
View file @
8410ff4e
package
com
.
pcloud
.
book
.
book
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* 编辑做书品种统计信息 请求参数
*
* @author guiq
* @version 1.0
* @since 2020年9月24日
*/
@Data
@ApiModel
(
"编辑做书品种统计信息 请求参数"
)
public
class
BookVarietyStatsRequestDto
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1377926071522171617L
;
@ApiModelProperty
(
"出版社ID"
)
private
Long
agentId
;
@ApiModelProperty
(
"出版社编辑ID列表"
)
private
List
<
Long
>
adviserIds
;
}
pcloud-facade-book/src/main/java/com/pcloud/book/book/dto/ERPPublishNumDTO.java
0 → 100644
View file @
8410ff4e
package
com
.
pcloud
.
book
.
book
.
dto
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* ERP 图书印册量
*/
@Data
@ApiModel
(
"ERP 图书印册量"
)
public
class
ERPPublishNumDTO
{
@ApiModelProperty
(
"编辑ID"
)
private
Long
adviserId
;
@ApiModelProperty
(
"渠道ID"
)
private
Long
channelId
;
@ApiModelProperty
(
"图书ID"
)
private
Long
bookId
;
@ApiModelProperty
(
"印册量"
)
private
Long
expectPublishNum
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createDate
;
}
pcloud-facade-book/src/main/java/com/pcloud/book/book/dto/ErpBookInfoDTO.java
0 → 100644
View file @
8410ff4e
package
com
.
pcloud
.
book
.
book
.
dto
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
@Data
@ApiModel
(
"ERP图书信息"
)
public
class
ErpBookInfoDTO
{
@ApiModelProperty
(
"项目编号"
)
private
String
projectNumber
;
@ApiModelProperty
(
"erp编号"
)
private
String
erpNumber
;
@ApiModelProperty
(
"出版物名称"
)
private
String
bookName
;
@ApiModelProperty
(
"RAYS编辑ID"
)
private
Integer
raysAdviserId
;
@ApiModelProperty
(
"关联RAYS书刊ID"
)
private
Integer
raysBookId
;
@ApiModelProperty
(
"关联RAYS渠道ID"
)
private
Integer
raysChannelId
;
@ApiModelProperty
(
"编辑id"
)
private
Long
adviserId
;
@ApiModelProperty
(
"ISBN"
)
private
String
isbn
;
@ApiModelProperty
(
"印册量"
)
private
Long
publishNum
;
@ApiModelProperty
(
"立项时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
buildTime
;
}
pcloud-facade-book/src/main/java/com/pcloud/book/book/service/BookAdviserService.java
View file @
8410ff4e
...
@@ -3,7 +3,17 @@
...
@@ -3,7 +3,17 @@
*/
*/
package
com
.
pcloud
.
book
.
book
.
service
;
package
com
.
pcloud
.
book
.
book
.
service
;
import
com.pcloud.book.book.dto.*
;
import
com.pcloud.book.book.dto.AdviserBookInfoDTO
;
import
com.pcloud.book.book.dto.AviserBookInfoParam
;
import
com.pcloud.book.book.dto.BookAdviserDto
;
import
com.pcloud.book.book.dto.BookCountAndAdviserIdDTO
;
import
com.pcloud.book.book.dto.BookCountByAdvisersDto
;
import
com.pcloud.book.book.dto.BookDto
;
import
com.pcloud.book.book.dto.BookResourceStatisticsDTO
;
import
com.pcloud.book.book.dto.BookRightsSettingDTO
;
import
com.pcloud.book.book.dto.BookVarietyStatsDto
;
import
com.pcloud.book.book.dto.BookVarietyStatsRequestDto
;
import
com.pcloud.book.book.dto.MapResourceTotalCountDTO
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.BizException
;
...
@@ -13,7 +23,12 @@ import io.swagger.annotations.ApiImplicitParams;
...
@@ -13,7 +23,12 @@ import io.swagger.annotations.ApiImplicitParams;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.cloud.netflix.feign.FeignClient
;
import
org.springframework.cloud.netflix.feign.FeignClient
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
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.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -140,4 +155,8 @@ public interface BookAdviserService {
...
@@ -140,4 +155,8 @@ public interface BookAdviserService {
@ApiOperation
(
"获取书下资源总数(包括现代纸书、1V1、小睿、社群码)"
)
@ApiOperation
(
"获取书下资源总数(包括现代纸书、1V1、小睿、社群码)"
)
@GetMapping
(
"mapResourceTotalCount"
)
@GetMapping
(
"mapResourceTotalCount"
)
ResponseEntity
<
ResponseDto
<
Map
<
String
,
BookResourceStatisticsDTO
>>>
mapResourceTotalCount
(
@RequestBody
MapResourceTotalCountDTO
mapResourceTotalCountDTO
);
ResponseEntity
<
ResponseDto
<
Map
<
String
,
BookResourceStatisticsDTO
>>>
mapResourceTotalCount
(
@RequestBody
MapResourceTotalCountDTO
mapResourceTotalCountDTO
);
@ApiOperation
(
value
=
"获取编辑做书品种数统计信息"
,
httpMethod
=
"POST"
)
@PostMapping
(
"/getAdviserBookVarietyStats"
)
ResponseEntity
<
ResponseDto
<
Map
<
Long
,
BookVarietyStatsDto
>>>
getAdviserBookVarietyStats
(
@RequestBody
List
<
BookVarietyStatsRequestDto
>
requestDtos
)
throws
BizException
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/biz/BookAdviserBiz.java
View file @
8410ff4e
...
@@ -4,15 +4,31 @@
...
@@ -4,15 +4,31 @@
package
com
.
pcloud
.
book
.
book
.
biz
;
package
com
.
pcloud
.
book
.
book
.
biz
;
import
com.pcloud.book.base.dto.CountDto
;
import
com.pcloud.book.base.dto.CountDto
;
import
com.pcloud.book.book.dto.*
;
import
com.pcloud.book.book.dto.AdviserBookInfoDTO
;
import
com.pcloud.book.book.dto.AdviserManageDto
;
import
com.pcloud.book.book.dto.AviserBookInfoParam
;
import
com.pcloud.book.book.dto.BookAdviserDto
;
import
com.pcloud.book.book.dto.BookCountAndAdviserIdDTO
;
import
com.pcloud.book.book.dto.BookCountByAdvisersDto
;
import
com.pcloud.book.book.dto.BookCountDto
;
import
com.pcloud.book.book.dto.BookDataStatisticsDTO
;
import
com.pcloud.book.book.dto.BookDto
;
import
com.pcloud.book.book.dto.BookQrcodeStatisticsDTO
;
import
com.pcloud.book.book.dto.BookResourceStatisticsDTO
;
import
com.pcloud.book.book.dto.BookRightsSettingDTO
;
import
com.pcloud.book.book.dto.BookVarietyStatsDto
;
import
com.pcloud.book.book.dto.BookVarietyStatsRequestDto
;
import
com.pcloud.book.book.dto.QrcodeStatisticsDTO
;
import
com.pcloud.book.book.entity.Book
;
import
com.pcloud.book.book.entity.Book
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.book.book.vo.AgentBookStatsDetailVO
;
import
com.pcloud.book.book.vo.ErpAdviserBookVO
;
import
com.pcloud.book.book.vo.ErpAdviserBookVO
;
import
com.pcloud.book.book.vo.PcloudAdviserBookVO
;
import
com.pcloud.book.book.vo.PcloudAdviserBookVO
;
import
com.pcloud.book.book.vo.QrCodeVO
;
import
com.pcloud.book.book.vo.QrCodeVO
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.common.page.PageBeanNew
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -268,4 +284,10 @@ public interface BookAdviserBiz {
...
@@ -268,4 +284,10 @@ public interface BookAdviserBiz {
Map
<
String
,
BookAdviserDto
>
getBookInfoByBookIds
(
List
<
Long
>
bookIds
,
List
<
Long
>
adviserIds
,
List
<
Long
>
channelIds
);
Map
<
String
,
BookAdviserDto
>
getBookInfoByBookIds
(
List
<
Long
>
bookIds
,
List
<
Long
>
adviserIds
,
List
<
Long
>
channelIds
);
BookAdviserDto
getBookByBookIdAdviserId
(
Long
bookId
,
Long
adviserId
);
BookAdviserDto
getBookByBookIdAdviserId
(
Long
bookId
,
Long
adviserId
);
Map
<
Long
,
BookVarietyStatsDto
>
getAdviserBookVarietyStats
(
List
<
BookVarietyStatsRequestDto
>
requestDtos
);
PageBeanNew
<
AgentBookStatsDetailVO
>
getAgentBookStatsDetail
(
Long
agentId
,
String
name
,
Date
startDate
,
Date
endDate
,
Integer
isRay
,
Integer
currentPage
,
Integer
numPerPage
);
void
exportAgentBookStatsDetail
(
Long
agentId
,
String
name
,
Date
startDate
,
Date
endDate
,
Integer
isRay
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/biz/impl/BookAdviserBizImpl.java
View file @
8410ff4e
This diff is collapsed.
Click to expand it.
pcloud-service-book/src/main/java/com/pcloud/book/book/dao/BookAdviserDao.java
View file @
8410ff4e
...
@@ -10,7 +10,10 @@ import com.pcloud.book.book.dto.BookAdviserDto;
...
@@ -10,7 +10,10 @@ import com.pcloud.book.book.dto.BookAdviserDto;
import
com.pcloud.book.book.dto.BookCountAndAdviserIdDTO
;
import
com.pcloud.book.book.dto.BookCountAndAdviserIdDTO
;
import
com.pcloud.book.book.dto.BookCountByAdvisersDto
;
import
com.pcloud.book.book.dto.BookCountByAdvisersDto
;
import
com.pcloud.book.book.dto.BookCountDto
;
import
com.pcloud.book.book.dto.BookCountDto
;
import
com.pcloud.book.book.dto.ERPPublishNumDTO
;
import
com.pcloud.book.book.dto.ErpBookInfoDTO
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.book.book.vo.AgentBookStatsDetailVO
;
import
com.pcloud.common.core.dao.BaseDao
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
import
java.util.List
;
...
@@ -289,4 +292,10 @@ public interface BookAdviserDao extends BaseDao<BookAdviser> {
...
@@ -289,4 +292,10 @@ public interface BookAdviserDao extends BaseDao<BookAdviser> {
List
<
BookAdviserDto
>
getBookInfoByBookIds
(
List
<
Long
>
bookIds
,
List
<
Long
>
adviserIds
,
List
<
Long
>
channelIds
);
List
<
BookAdviserDto
>
getBookInfoByBookIds
(
List
<
Long
>
bookIds
,
List
<
Long
>
adviserIds
,
List
<
Long
>
channelIds
);
BookAdviserDto
getBookByBookIdAdviserId
(
Long
bookId
,
Long
adviserId
);
BookAdviserDto
getBookByBookIdAdviserId
(
Long
bookId
,
Long
adviserId
);
List
<
BookAdviserDto
>
getAdviserBookVarietyStats
(
List
<
Long
>
adviserIds
);
List
<
ERPPublishNumDTO
>
getErpPublishNumQueryParams
(
List
<
Long
>
adviserIds
);
List
<
AgentBookStatsDetailVO
>
getAgentBookStatsDetail
(
List
<
ErpBookInfoDTO
>
raysBookIds
,
Integer
isRay
,
String
name
,
List
<
Long
>
advisers
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/dao/impl/BookAdviserDaoImpl.java
View file @
8410ff4e
...
@@ -3,10 +3,22 @@
...
@@ -3,10 +3,22 @@
*/
*/
package
com
.
pcloud
.
book
.
book
.
dao
.
impl
;
package
com
.
pcloud
.
book
.
book
.
dao
.
impl
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
com.pcloud.book.book.dao.BookAdviserDao
;
import
com.pcloud.book.book.dao.BookAdviserDao
;
import
com.pcloud.book.book.dto.*
;
import
com.pcloud.book.book.dto.AdviserBookInfoDTO
;
import
com.pcloud.book.book.dto.AdviserManageDto
;
import
com.pcloud.book.book.dto.AviserBookInfoParam
;
import
com.pcloud.book.book.dto.BookAdviserDto
;
import
com.pcloud.book.book.dto.BookCountAndAdviserIdDTO
;
import
com.pcloud.book.book.dto.BookCountByAdvisersDto
;
import
com.pcloud.book.book.dto.BookCountDto
;
import
com.pcloud.book.book.dto.ERPPublishNumDTO
;
import
com.pcloud.book.book.dto.ErpBookInfoDTO
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.book.book.vo.AgentBookStatsDetailVO
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
...
@@ -316,4 +328,27 @@ public class BookAdviserDaoImpl extends BaseDaoImpl<BookAdviser> implements Book
...
@@ -316,4 +328,27 @@ public class BookAdviserDaoImpl extends BaseDaoImpl<BookAdviser> implements Book
paramMap
.
put
(
"adviserId"
,
adviserId
);
paramMap
.
put
(
"adviserId"
,
adviserId
);
return
super
.
getSqlSession
().
selectOne
(
this
.
getStatement
(
"getBookByBookIdAdviserId"
),
paramMap
);
return
super
.
getSqlSession
().
selectOne
(
this
.
getStatement
(
"getBookByBookIdAdviserId"
),
paramMap
);
}
}
@Override
public
List
<
BookAdviserDto
>
getAdviserBookVarietyStats
(
List
<
Long
>
adviserIds
)
{
return
super
.
getSqlSession
().
selectList
(
this
.
getStatement
(
"getAdviserBookVarietyStats"
),
MapUtil
.
of
(
"adviserIds"
,
adviserIds
));
}
@Override
public
List
<
ERPPublishNumDTO
>
getErpPublishNumQueryParams
(
List
<
Long
>
adviserIds
)
{
return
super
.
getSqlSession
().
selectList
(
getStatement
(
"getErpPublishNumQueryParams"
),
MapUtil
.
of
(
"adviserIds"
,
adviserIds
));
}
@Override
public
List
<
AgentBookStatsDetailVO
>
getAgentBookStatsDetail
(
List
<
ErpBookInfoDTO
>
raysBookIds
,
Integer
isRay
,
String
name
,
List
<
Long
>
advisers
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
if
(
StrUtil
.
isNotBlank
(
name
)
&&
name
.
startsWith
(
"BK"
)){
map
.
put
(
"bookNo"
,
name
.
substring
(
2
));
}
map
.
put
(
"raysBookIds"
,
CollUtil
.
isEmpty
(
raysBookIds
)
?
null
:
raysBookIds
);
map
.
put
(
"isRay"
,
isRay
);
map
.
put
(
"name"
,
name
);
map
.
put
(
"advisers"
,
advisers
);
return
super
.
getSqlSession
().
selectList
(
getStatement
(
"getAgentBookStatsDetail"
),
map
);
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/facade/BookAdviserFacade.java
View file @
8410ff4e
...
@@ -11,16 +11,28 @@ import com.pcloud.book.book.dto.BookQrcodeStatisticsDTO;
...
@@ -11,16 +11,28 @@ import com.pcloud.book.book.dto.BookQrcodeStatisticsDTO;
import
com.pcloud.book.book.dto.BookResourceStatisticsDTO
;
import
com.pcloud.book.book.dto.BookResourceStatisticsDTO
;
import
com.pcloud.book.book.dto.MapResourceTotalCountDTO
;
import
com.pcloud.book.book.dto.MapResourceTotalCountDTO
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.book.book.vo.AgentBookStatsDetailVO
;
import
com.pcloud.book.book.vo.PcloudAdviserBookVO
;
import
com.pcloud.book.book.vo.PcloudAdviserBookVO
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.common.permission.PermissionException
;
import
com.pcloud.common.permission.PermissionException
;
import
io.swagger.annotations.*
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
org.codehaus.jackson.JsonParseException
;
import
org.codehaus.jackson.JsonParseException
;
import
org.springframework.cloud.netflix.feign.FeignClient
;
import
org.springframework.cloud.netflix.feign.FeignClient
;
import
org.springframework.web.bind.annotation.*
;
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.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -252,4 +264,28 @@ public interface BookAdviserFacade {
...
@@ -252,4 +264,28 @@ public interface BookAdviserFacade {
@PostMapping
(
"getBookInfoByBookIds"
)
@PostMapping
(
"getBookInfoByBookIds"
)
ResponseDto
<?>
getBookInfoByBookIds
(
@RequestBody
MapResourceTotalCountDTO
mapResourceTotalCountDTO
);
ResponseDto
<?>
getBookInfoByBookIds
(
@RequestBody
MapResourceTotalCountDTO
mapResourceTotalCountDTO
);
@ApiOperation
(
"出版社作书数据列表明细"
)
@RequestMapping
(
value
=
"/getAgentBookStatsDetail"
,
method
=
RequestMethod
.
GET
)
ResponseDto
<
PageBeanNew
<
AgentBookStatsDetailVO
>>
getAgentBookStatsDetail
(
@RequestHeader
(
"token"
)
String
token
,
@RequestParam
(
value
=
"agentId"
)
Long
agentId
,
@RequestParam
(
value
=
"name"
,
required
=
false
)
String
name
,
@RequestParam
(
value
=
"startDate"
,
required
=
false
)
String
startDate
,
@RequestParam
(
value
=
"endDate"
,
required
=
false
)
String
endDate
,
@RequestParam
(
value
=
"isRay"
,
required
=
false
)
Integer
isRay
,
@RequestParam
(
value
=
"currentPage"
)
Integer
currentPage
,
@RequestParam
(
value
=
"numPerPage"
)
Integer
numPerPage
)
throws
BizException
;
@ApiOperation
(
"出版社作书数据列表明细导出"
)
@RequestMapping
(
value
=
"/exportAgentBookStatsDetail"
,
method
=
RequestMethod
.
GET
)
ResponseDto
<?>
exportAgentBookStatsDetail
(
@RequestHeader
(
"token"
)
String
token
,
@RequestParam
(
value
=
"agentId"
)
Long
agentId
,
@RequestParam
(
value
=
"name"
,
required
=
false
)
String
name
,
@RequestParam
(
value
=
"startDate"
,
required
=
false
)
String
startDate
,
@RequestParam
(
value
=
"endDate"
,
required
=
false
)
String
endDate
,
@RequestParam
(
value
=
"isRay"
,
required
=
false
)
Integer
isRay
)
throws
BizException
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/facade/impl/BookAdviserFacadeImpl.java
View file @
8410ff4e
...
@@ -3,19 +3,29 @@
...
@@ -3,19 +3,29 @@
*/
*/
package
com
.
pcloud
.
book
.
book
.
facade
.
impl
;
package
com
.
pcloud
.
book
.
book
.
facade
.
impl
;
import
java.util.ArrayList
;
import
cn.hutool.core.date.DateTime
;
import
java.util.List
;
import
cn.hutool.core.date.DateUtil
;
import
java.util.Map
;
import
com.pcloud.book.base.dto.CountDto
;
import
com.pcloud.book.book.biz.BookAdviserBiz
;
import
com.pcloud.book.book.dto.AdviserManageDto
;
import
com.pcloud.book.book.dto.BookAdviserDto
;
import
com.pcloud.book.book.dto.BookCountDto
;
import
com.pcloud.book.book.dto.BookDataStatisticsDTO
;
import
com.pcloud.book.book.dto.BookDataStatisticsDTO
;
import
com.pcloud.book.book.dto.BookQrcodeStatisticsDTO
;
import
com.pcloud.book.book.dto.BookQrcodeStatisticsDTO
;
import
com.pcloud.book.book.dto.BookResourceStatisticsDTO
;
import
com.pcloud.book.book.dto.BookResourceStatisticsDTO
;
import
com.pcloud.book.book.dto.MapResourceTotalCountDTO
;
import
com.pcloud.book.book.dto.MapResourceTotalCountDTO
;
import
com.pcloud.book.book.dto.QrcodeStatisticsDTO
;
import
com.pcloud.book.book.dto.QrcodeStatisticsDTO
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.book.book.facade.BookAdviserFacade
;
import
com.pcloud.book.book.vo.AgentBookStatsDetailVO
;
import
com.pcloud.book.book.vo.PcloudAdviserBookVO
;
import
com.pcloud.book.book.vo.PcloudAdviserBookVO
;
import
com.pcloud.book.book.vo.QrCodeVO
;
import
com.pcloud.book.book.vo.QrCodeVO
;
import
com.pcloud.channelcenter.qrcode.entity.QrcodeScene
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.common.permission.PermissionException
;
import
com.pcloud.common.utils.ParamChecker
;
import
com.pcloud.common.utils.SessionUtil
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
org.codehaus.jackson.JsonParseException
;
import
org.codehaus.jackson.JsonParseException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -27,17 +37,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
...
@@ -27,17 +37,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.pcloud.book.base.dto.CountDto
;
import
com.pcloud.book.book.biz.BookAdviserBiz
;
import
java.util.ArrayList
;
import
com.pcloud.book.book.dto.AdviserManageDto
;
import
java.util.Date
;
import
com.pcloud.book.book.dto.BookAdviserDto
;
import
java.util.List
;
import
com.pcloud.book.book.dto.BookCountDto
;
import
java.util.Map
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
java.util.Objects
;
import
com.pcloud.book.book.facade.BookAdviserFacade
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.permission.PermissionException
;
import
com.pcloud.common.utils.SessionUtil
;
/**
/**
* @描述:顾问书籍管理接口实现类
* @描述:顾问书籍管理接口实现类
...
@@ -266,4 +271,44 @@ public class BookAdviserFacadeImpl implements BookAdviserFacade {
...
@@ -266,4 +271,44 @@ public class BookAdviserFacadeImpl implements BookAdviserFacade {
public
ResponseDto
<?>
getBookInfoByBookIds
(
@RequestBody
MapResourceTotalCountDTO
mapResourceTotalCountDTO
)
{
public
ResponseDto
<?>
getBookInfoByBookIds
(
@RequestBody
MapResourceTotalCountDTO
mapResourceTotalCountDTO
)
{
return
new
ResponseDto
<>(
bookAdviserBiz
.
getBookInfoByBookIds
(
mapResourceTotalCountDTO
.
getBookIds
(),
mapResourceTotalCountDTO
.
getAdviserIds
(),
mapResourceTotalCountDTO
.
getChannelIds
()));
return
new
ResponseDto
<>(
bookAdviserBiz
.
getBookInfoByBookIds
(
mapResourceTotalCountDTO
.
getBookIds
(),
mapResourceTotalCountDTO
.
getAdviserIds
(),
mapResourceTotalCountDTO
.
getChannelIds
()));
}
}
@Override
@RequestMapping
(
value
=
"/getAgentBookStatsDetail"
,
method
=
RequestMethod
.
GET
)
public
ResponseDto
<
PageBeanNew
<
AgentBookStatsDetailVO
>>
getAgentBookStatsDetail
(
@RequestHeader
(
"token"
)
String
token
,
@RequestParam
(
value
=
"agentId"
)
Long
agentId
,
@RequestParam
(
value
=
"name"
,
required
=
false
)
String
name
,
@RequestParam
(
value
=
"startDate"
,
required
=
false
)
String
startDate
,
@RequestParam
(
value
=
"endDate"
,
required
=
false
)
String
endDate
,
@RequestParam
(
value
=
"isRay"
,
required
=
false
)
Integer
isRay
,
@RequestParam
(
value
=
"currentPage"
)
Integer
currentPage
,
@RequestParam
(
value
=
"numPerPage"
)
Integer
numPerPage
)
throws
BizException
{
SessionUtil
.
getToken4Redis
(
token
);
ParamChecker
.
checkPageParamIsAbsent
(
currentPage
,
numPerPage
,
"分页参数错误"
);
DateTime
start
=
Objects
.
isNull
(
DateUtil
.
parse
(
startDate
))?
null
:
DateUtil
.
beginOfDay
(
DateUtil
.
parse
(
startDate
));
DateTime
end
=
Objects
.
isNull
(
DateUtil
.
parse
(
endDate
))?
null
:
DateUtil
.
beginOfDay
(
DateUtil
.
parse
(
endDate
));
// 开始结束同一天 则结束时间后延一天
if
(
Objects
.
nonNull
(
start
)
&&
Objects
.
equals
(
start
,
end
)){
end
=
DateUtil
.
offsetDay
(
end
.
toJdkDate
(),
1
);
}
return
new
ResponseDto
<>(
bookAdviserBiz
.
getAgentBookStatsDetail
(
agentId
,
name
,
start
,
end
,
isRay
,
currentPage
,
numPerPage
));
}
@Override
@RequestMapping
(
value
=
"/exportAgentBookStatsDetail"
,
method
=
RequestMethod
.
GET
)
public
ResponseDto
<?>
exportAgentBookStatsDetail
(
@RequestHeader
(
"token"
)
String
token
,
@RequestParam
(
value
=
"agentId"
)
Long
agentId
,
@RequestParam
(
value
=
"name"
,
required
=
false
)
String
name
,
@RequestParam
(
value
=
"startDate"
,
required
=
false
)
String
startDate
,
@RequestParam
(
value
=
"endDate"
,
required
=
false
)
String
endDate
,
@RequestParam
(
value
=
"isRay"
,
required
=
false
)
Integer
isRay
)
throws
BizException
{
SessionUtil
.
getToken4Redis
(
token
);
DateTime
start
=
Objects
.
isNull
(
DateUtil
.
parse
(
startDate
))?
null
:
DateUtil
.
beginOfDay
(
DateUtil
.
parse
(
startDate
));
DateTime
end
=
Objects
.
isNull
(
DateUtil
.
parse
(
endDate
))?
null
:
DateUtil
.
beginOfDay
(
DateUtil
.
parse
(
endDate
));
bookAdviserBiz
.
exportAgentBookStatsDetail
(
agentId
,
name
,
start
,
end
,
isRay
);
return
new
ResponseDto
<>();
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/service/impl/BookAdviserServiceImpl.java
View file @
8410ff4e
...
@@ -5,7 +5,17 @@ package com.pcloud.book.book.service.impl;
...
@@ -5,7 +5,17 @@ package com.pcloud.book.book.service.impl;
import
com.pcloud.book.book.biz.BookAdviserBiz
;
import
com.pcloud.book.book.biz.BookAdviserBiz
;
import
com.pcloud.book.book.biz.BookRaysClassifyBiz
;
import
com.pcloud.book.book.biz.BookRaysClassifyBiz
;
import
com.pcloud.book.book.dto.*
;
import
com.pcloud.book.book.dto.AdviserBookInfoDTO
;
import
com.pcloud.book.book.dto.AviserBookInfoParam
;
import
com.pcloud.book.book.dto.BookAdviserDto
;
import
com.pcloud.book.book.dto.BookCountAndAdviserIdDTO
;
import
com.pcloud.book.book.dto.BookCountByAdvisersDto
;
import
com.pcloud.book.book.dto.BookDto
;
import
com.pcloud.book.book.dto.BookResourceStatisticsDTO
;
import
com.pcloud.book.book.dto.BookRightsSettingDTO
;
import
com.pcloud.book.book.dto.BookVarietyStatsDto
;
import
com.pcloud.book.book.dto.BookVarietyStatsRequestDto
;
import
com.pcloud.book.book.dto.MapResourceTotalCountDTO
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.book.book.entity.BookAdviser
;
import
com.pcloud.book.book.service.BookAdviserService
;
import
com.pcloud.book.book.service.BookAdviserService
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.dto.ResponseDto
;
...
@@ -13,7 +23,13 @@ import com.pcloud.common.exceptions.BizException;
...
@@ -13,7 +23,13 @@ import com.pcloud.common.exceptions.BizException;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
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.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -149,4 +165,10 @@ public class BookAdviserServiceImpl implements BookAdviserService {
...
@@ -149,4 +165,10 @@ public class BookAdviserServiceImpl implements BookAdviserService {
public
ResponseEntity
<
ResponseDto
<
Map
<
String
,
BookResourceStatisticsDTO
>>>
mapResourceTotalCount
(
@RequestBody
MapResourceTotalCountDTO
mapResourceTotalCountDTO
)
{
public
ResponseEntity
<
ResponseDto
<
Map
<
String
,
BookResourceStatisticsDTO
>>>
mapResourceTotalCount
(
@RequestBody
MapResourceTotalCountDTO
mapResourceTotalCountDTO
)
{
return
ResponseHandleUtil
.
toResponse
(
bookAdviserBiz
.
mapResourceTotalCount
(
mapResourceTotalCountDTO
.
getAdviserIds
(),
mapResourceTotalCountDTO
.
getBookIds
(),
mapResourceTotalCountDTO
.
getChannelIds
()));
return
ResponseHandleUtil
.
toResponse
(
bookAdviserBiz
.
mapResourceTotalCount
(
mapResourceTotalCountDTO
.
getAdviserIds
(),
mapResourceTotalCountDTO
.
getBookIds
(),
mapResourceTotalCountDTO
.
getChannelIds
()));
}
}
@Override
@PostMapping
(
"/getAdviserBookVarietyStats"
)
public
ResponseEntity
<
ResponseDto
<
Map
<
Long
,
BookVarietyStatsDto
>>>
getAdviserBookVarietyStats
(
@RequestBody
List
<
BookVarietyStatsRequestDto
>
requestDtos
)
throws
BizException
{
return
ResponseHandleUtil
.
toResponse
(
bookAdviserBiz
.
getAdviserBookVarietyStats
(
requestDtos
));
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/vo/AgentBookStatsDetailVO.java
0 → 100644
View file @
8410ff4e
package
com
.
pcloud
.
book
.
book
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* 出版社做书数据列表明细
*
* @author guiq
* @version 1.0
* @since 2020年9月24日
*/
@Data
@ApiModel
(
"出版社做书数据列表明细"
)
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
public
class
AgentBookStatsDetailVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
9125134175050870278L
;
/**
* 书名
*/
@ApiModelProperty
(
"书名"
)
private
String
bookName
;
/**
* ISBN
*/
@ApiModelProperty
(
"ISBN"
)
private
String
isbn
;
/**
* 序号
*/
@ApiModelProperty
(
"序号"
)
private
String
serialNumber
;
/**
* ERP编号
*/
@ApiModelProperty
(
"ERP编号"
)
private
String
erpNumber
;
/**
* 项目编号
*/
@ApiModelProperty
(
"项目编号"
)
private
String
projectNumber
;
/**
* 图书ID
*/
@ApiModelProperty
(
"图书ID"
)
private
Long
bookId
;
/**
* 二维码列表
*/
@ApiModelProperty
(
"二维码列表"
)
private
List
<
QrcodeInfoDto
>
qrcodeList
;
/**
* 编辑名称
*/
@ApiModelProperty
(
"编辑名称"
)
private
String
adviserName
;
/**
* 编辑ID
*/
@ApiModelProperty
(
"编辑ID"
)
private
Long
adviserId
;
/**
* 是否小睿书
*/
@ApiModelProperty
(
"是否小睿书"
)
private
Integer
isRay
;
/**
* 立项时间
*/
@ApiModelProperty
(
"立项时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
toProjectTime
;
/**
* 印册量
*/
@ApiModelProperty
(
"印册量"
)
private
Integer
expectPublishNum
;
/**
* 总浏览量
*/
@ApiModelProperty
(
"总浏览量"
)
private
Integer
browseTotal
;
/**
* 总浏览人数
*/
@ApiModelProperty
(
"总浏览人数"
)
private
Integer
browseUserTotal
;
/**
* 总扫码量
*/
@ApiModelProperty
(
"总扫码量"
)
private
Integer
scanTotal
;
/**
* 总扫码人数
*/
@ApiModelProperty
(
"总扫码人数"
)
private
Integer
scanUserTotal
;
/**
* 总成交金额
*/
@ApiModelProperty
(
"总成交金额"
)
private
BigDecimal
amountTotal
;
/**
* bookAdviserId
*/
@ApiModelProperty
(
"bookAdviserId"
)
private
Long
bookAdviserId
;
/**
* channelId
*/
@ApiModelProperty
(
"channelId"
)
private
Long
channelId
;
/**
* bookGroupId
*/
@ApiModelProperty
(
"bookGroupId"
)
private
Long
bookGroupId
;
}
pcloud-service-book/src/main/java/com/pcloud/book/book/vo/QrcodeInfoDto.java
0 → 100644
View file @
8410ff4e
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
;
import
java.io.Serializable
;
/**
* 出版社作书数据列表-二维码信息
*
* @author guiq
* @version 1.0
* @since 2020年9月24日
*/
@Data
@ApiModel
(
"出版社作书数据列表-二维码信息"
)
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
public
class
QrcodeInfoDto
implements
Serializable
{
private
static
final
long
serialVersionUID
=
3951537842280735854L
;
/**
* 印码位置
*/
@ApiModelProperty
(
"印码位置"
)
private
String
locationName
;
/**
* 二维码地址
*/
@ApiModelProperty
(
"二维码地址"
)
private
String
qrcodeUrl
;
}
pcloud-service-book/src/main/java/com/pcloud/book/consumer/analysisengine/BrowseRecordConsr.java
View file @
8410ff4e
...
@@ -3,6 +3,8 @@
...
@@ -3,6 +3,8 @@
*/
*/
package
com
.
pcloud
.
book
.
consumer
.
analysisengine
;
package
com
.
pcloud
.
book
.
consumer
.
analysisengine
;
import
cn.hutool.core.collection.CollUtil
;
import
com.pcloud.analysisengine.browse.dto.BookBrowseAndScanStatsDTO
;
import
com.pcloud.analysisengine.browse.dto.BookServeBrowseCountParameterDTO
;
import
com.pcloud.analysisengine.browse.dto.BookServeBrowseCountParameterDTO
;
import
com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto
;
import
com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto
;
import
com.pcloud.analysisengine.browse.dto.GroupBrowseStatisticVO
;
import
com.pcloud.analysisengine.browse.dto.GroupBrowseStatisticVO
;
...
@@ -12,12 +14,12 @@ import com.pcloud.common.core.aspect.ParamLog;
...
@@ -12,12 +14,12 @@ import com.pcloud.common.core.aspect.ParamLog;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.BizException
;
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
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -181,4 +183,18 @@ public class BrowseRecordConsr {
...
@@ -181,4 +183,18 @@ public class BrowseRecordConsr {
return
map
;
return
map
;
}
}
@ParamLog
(
"获取图书扫码量,浏览量"
)
public
List
<
BookBrowseAndScanStatsDTO
>
getBookBrowseAndScanStats
(
List
<
BookBrowseAndScanStatsDTO
>
dtos
)
{
if
(
CollUtil
.
isEmpty
(
dtos
)){
return
new
ArrayList
<>();
}
List
<
BookBrowseAndScanStatsDTO
>
bookBrowseAndScanStatsDTOS
=
new
ArrayList
<>();
try
{
bookBrowseAndScanStatsDTOS
=
ResponseHandleUtil
.
parseList
(
browseRecordService
.
getBookBrowseAndScanStats
(
dtos
),
BookBrowseAndScanStatsDTO
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"获取图书扫码量,浏览量失败,err:{}"
,
e
.
getMessage
(),
e
);
}
return
bookBrowseAndScanStatsDTOS
;
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/consumer/erp/ErpConsr.java
View file @
8410ff4e
package
com
.
pcloud
.
book
.
consumer
.
erp
;
package
com
.
pcloud
.
book
.
consumer
.
erp
;
import
cn.hutool.core.collection.CollUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.alibaba.fastjson.TypeReference
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.book.dto.CreateBookResultVO
;
import
com.pcloud.book.book.dto.CreateBookResultVO
;
import
com.pcloud.book.book.dto.ERPPublishNumDTO
;
import
com.pcloud.book.book.dto.ErpBookInfoDTO
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.ListUtils
;
...
@@ -18,6 +21,8 @@ import org.slf4j.LoggerFactory;
...
@@ -18,6 +21,8 @@ import org.slf4j.LoggerFactory;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -161,4 +166,75 @@ public class ErpConsr {
...
@@ -161,4 +166,75 @@ public class ErpConsr {
throw
new
BookBizException
(
BookBizException
.
INVOKE_CONTENT_ERROR
,
"创建书刊之后同步去更新erp信息~!"
);
throw
new
BookBizException
(
BookBizException
.
INVOKE_CONTENT_ERROR
,
"创建书刊之后同步去更新erp信息~!"
);
}
}
}
}
@ParamLog
(
"获取图书印册量"
)
public
List
<
ERPPublishNumDTO
>
getBookExpectPublishNum
(
List
<
ERPPublishNumDTO
>
dtos
)
{
if
(
CollUtil
.
isEmpty
(
dtos
))
{
return
new
ArrayList
<>();
}
Map
<
String
,
String
>
headers
=
new
HashMap
<>();
headers
.
put
(
"Content-Type"
,
"application/json"
);
try
{
HttpResponse
response
=
HttpUtils
.
doPost
(
domain
,
"/erp/project4Third/getBookExpectPublishNum"
,
"POST"
,
headers
,
new
HashMap
<>(),
JSONObject
.
toJSONString
(
dtos
));
String
entityString
=
EntityUtils
.
toString
(
response
.
getEntity
());
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
entityString
);
if
(
jsonObject
.
getInteger
(
"errCode"
)
!=
0
)
{
throw
new
BizException
(
jsonObject
.
getString
(
"message"
));
}
return
JSONObject
.
parseArray
(
jsonObject
.
getJSONArray
(
"data"
).
toJSONString
(),
ERPPublishNumDTO
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"获取图书印册量失败 [projectService.getBookExpectPublishNum]:"
+
e
.
getMessage
(),
e
);
throw
new
BookBizException
(
BookBizException
.
INVOKE_CONTENT_ERROR
,
"获取图书印册量失败!"
);
}
}
@ParamLog
(
"模糊查询图书信息"
)
public
List
<
ErpBookInfoDTO
>
searchBookInfo
(
String
name
,
List
<
Long
>
advisers
,
Date
startTime
,
Date
endTime
)
{
if
(
CollUtil
.
isEmpty
(
advisers
))
{
return
new
ArrayList
<>();
}
Map
<
String
,
String
>
headers
=
new
HashMap
<>();
headers
.
put
(
"Content-Type"
,
"application/json"
);
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"name"
,
name
);
params
.
put
(
"advisers"
,
advisers
);
params
.
put
(
"startTime"
,
startTime
);
params
.
put
(
"endTime"
,
endTime
);
try
{
HttpResponse
response
=
HttpUtils
.
doPost
(
domain
,
"/erp/project4Third/searchBookInfo"
,
"GET"
,
headers
,
new
HashMap
<>(),
JSONObject
.
toJSONString
(
params
));
String
entityString
=
EntityUtils
.
toString
(
response
.
getEntity
());
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
entityString
);
if
(
jsonObject
.
getInteger
(
"errCode"
)
!=
0
)
{
throw
new
BizException
(
jsonObject
.
getString
(
"message"
));
}
return
JSONObject
.
parseArray
(
jsonObject
.
getJSONArray
(
"data"
).
toJSONString
(),
ErpBookInfoDTO
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"模糊查询图书信息 [projectService.searchBookInfo]:"
+
e
.
getMessage
(),
e
);
throw
new
BookBizException
(
BookBizException
.
INVOKE_CONTENT_ERROR
,
"模糊查询图书信息失败!"
);
}
}
@ParamLog
(
"模糊查询erp图书ID"
)
public
List
<
ErpBookInfoDTO
>
searchRaysBookId
(
List
<
ErpBookInfoDTO
>
erpBookInfoDTOS
)
{
if
(
CollUtil
.
isEmpty
(
erpBookInfoDTOS
))
{
return
new
ArrayList
<>();
}
Map
<
String
,
String
>
headers
=
new
HashMap
<>();
headers
.
put
(
"Content-Type"
,
"application/json"
);
try
{
HttpResponse
response
=
HttpUtils
.
doPost
(
domain
,
"/erp/project4Third/searchRaysBookId"
,
"GET"
,
headers
,
new
HashMap
<>(),
JSONObject
.
toJSONString
(
erpBookInfoDTOS
));
String
entityString
=
EntityUtils
.
toString
(
response
.
getEntity
());
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
entityString
);
if
(
jsonObject
.
getInteger
(
"errCode"
)
!=
0
)
{
throw
new
BizException
(
jsonObject
.
getString
(
"message"
));
}
return
JSONObject
.
parseArray
(
jsonObject
.
getJSONArray
(
"data"
).
toJSONString
(),
ErpBookInfoDTO
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"模糊查询图书信息 [projectService.searchBookInfo]:"
+
e
.
getMessage
(),
e
);
throw
new
BookBizException
(
BookBizException
.
INVOKE_CONTENT_ERROR
,
"模糊查询erp图书ID失败!"
);
}
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/consumer/trade/TradeConsr.java
View file @
8410ff4e
package
com
.
pcloud
.
book
.
consumer
.
trade
;
package
com
.
pcloud
.
book
.
consumer
.
trade
;
import
com.pcloud.book.base.exception.BookBizException
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.BizException
;
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.facade.tradecenter.dto.Amount4BookAdviserDto
;
import
com.pcloud.facade.tradecenter.dto.BookGroupSaleSearchDto
;
import
com.pcloud.facade.tradecenter.dto.BookGroupSaleSearchDto
;
import
com.pcloud.facade.tradecenter.dto.BookIncomeQueryVo
;
import
com.pcloud.facade.tradecenter.dto.BookIncomeQueryVo
;
import
com.pcloud.facade.tradecenter.dto.ClassifyPayDetailDto
;
import
com.pcloud.facade.tradecenter.dto.ClassifyPayDetailDto
;
...
@@ -264,4 +265,17 @@ public class TradeConsr {
...
@@ -264,4 +265,17 @@ public class TradeConsr {
}
}
return
map
;
return
map
;
}
}
public
List
<
Amount4BookAdviserDto
>
getAmount4BookAdviser
(
List
<
Amount4BookAdviserDto
>
requestDtos
)
{
if
(
CollUtil
.
isEmpty
(
requestDtos
))
{
return
new
ArrayList
<>();
}
try
{
return
ResponseHandleUtil
.
parseList
(
orderFormService
.
getAmount4BookAdviser
(
requestDtos
),
Amount4BookAdviserDto
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"查询编辑图书交易额失败.[getAmount4BookAdviser]:{}"
,
e
.
getMessage
(),
e
);
}
return
new
ArrayList
<>();
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/consumer/user/ChannelConsr.java
View file @
8410ff4e
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
package
com
.
pcloud
.
book
.
consumer
.
user
;
package
com
.
pcloud
.
book
.
consumer
.
user
;
import
com.pcloud.channelcenter.base.exceptions.ChannelBizException
;
import
com.pcloud.channelcenter.base.exceptions.ChannelBizException
;
import
com.pcloud.channelcenter.qrcode.dto.AdviserQrcodeSceneDTO
;
import
com.pcloud.channelcenter.qrcode.dto.MapResourceCountDTO
;
import
com.pcloud.channelcenter.qrcode.dto.MapResourceCountDTO
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto
;
...
@@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -249,4 +251,16 @@ public class ChannelConsr {
...
@@ -249,4 +251,16 @@ public class ChannelConsr {
throw
new
ChannelBizException
(
ChannelBizException
.
PARAM_IS_NULL
,
"获取二维码位置失败"
);
throw
new
ChannelBizException
(
ChannelBizException
.
PARAM_IS_NULL
,
"获取二维码位置失败"
);
}
}
}
}
public
List
<
AdviserQrcodeSceneDTO
>
listQrcodeSceneByBookAdviserIds
(
List
<
AdviserQrcodeSceneDTO
>
bookAdviserIds
)
{
if
(
CollectionUtils
.
isEmpty
(
bookAdviserIds
))
{
return
new
ArrayList
<>();
}
try
{
return
ResponseHandleUtil
.
parseList
(
qrcodeSceneService
.
listQrcodeSceneByBookAdviserIds
(
bookAdviserIds
),
AdviserQrcodeSceneDTO
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"批量获取二维码及其印码位置 失败:{} "
,
e
.
getMessage
(),
e
);
}
return
new
ArrayList
<>();
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/consumer/wechatgroup/WechatGroupConsr.java
View file @
8410ff4e
package
com
.
pcloud
.
book
.
consumer
.
wechatgroup
;
package
com
.
pcloud
.
book
.
consumer
.
wechatgroup
;
import
cn.hutool.core.collection.CollUtil
;
import
com.dcg.coolq.sdk.CoolQSDK
;
import
com.dcg.coolq.sdk.CoolQSDK
;
import
com.dcg.coolq.sdk.message.vos.send.PrivateMsgSendVO
;
import
com.dcg.coolq.sdk.message.vos.send.PrivateMsgSendVO
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.pcloud.book.applet.dto.SpecialBookDTO
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.BizException
;
...
@@ -14,6 +14,7 @@ import com.pcloud.common.utils.json.JSONUtils;
...
@@ -14,6 +14,7 @@ import com.pcloud.common.utils.json.JSONUtils;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.wechatgroup.group.dto.GroupMemberStatisDTO
;
import
com.pcloud.wechatgroup.group.dto.GroupMemberStatisDTO
;
import
com.pcloud.wechatgroup.group.dto.GroupRobotDTO
;
import
com.pcloud.wechatgroup.group.dto.GroupRobotDTO
;
import
com.pcloud.wechatgroup.group.dto.GroupScanUserStatsDTO
;
import
com.pcloud.wechatgroup.group.dto.GroupUserCountDTO
;
import
com.pcloud.wechatgroup.group.dto.GroupUserCountDTO
;
import
com.pcloud.wechatgroup.group.dto.GroupUserDTO
;
import
com.pcloud.wechatgroup.group.dto.GroupUserDTO
;
import
com.pcloud.wechatgroup.group.dto.RobotReplyDTO
;
import
com.pcloud.wechatgroup.group.dto.RobotReplyDTO
;
...
@@ -37,7 +38,7 @@ import com.pcloud.wechatgroup.selfrobot.dto.SelfRobotDTO;
...
@@ -37,7 +38,7 @@ import com.pcloud.wechatgroup.selfrobot.dto.SelfRobotDTO;
import
com.pcloud.wechatgroup.selfrobot.dto.SendMessageDTO
;
import
com.pcloud.wechatgroup.selfrobot.dto.SendMessageDTO
;
import
com.pcloud.wechatgroup.selfrobot.dto.UserRobotDTO
;
import
com.pcloud.wechatgroup.selfrobot.dto.UserRobotDTO
;
import
com.pcloud.wechatgroup.selfrobot.service.SelfRobotService
;
import
com.pcloud.wechatgroup.selfrobot.service.SelfRobotService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -50,8 +51,6 @@ import java.util.HashMap;
...
@@ -50,8 +51,6 @@ import java.util.HashMap;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
lombok.extern.slf4j.Slf4j
;
@Slf4j
@Slf4j
@Component
(
"wechatGroupConsr"
)
@Component
(
"wechatGroupConsr"
)
public
class
WechatGroupConsr
{
public
class
WechatGroupConsr
{
...
@@ -792,4 +791,29 @@ public class WechatGroupConsr {
...
@@ -792,4 +791,29 @@ public class WechatGroupConsr {
}
}
return
map
;
return
map
;
}
}
@ParamLog
(
"根据编辑列表获取社群书扫码统计信息"
)
public
List
<
GroupScanUserStatsDTO
>
getBookGroupScanStats
(
List
<
Long
>
adviserIds
){
List
<
GroupScanUserStatsDTO
>
list
=
new
ArrayList
<>();
try
{
list
=
ResponseHandleUtil
.
parseList
(
groupMemberService
.
getBookGroupScanStats
(
adviserIds
),
GroupScanUserStatsDTO
.
class
);
}
catch
(
Exception
e
){
log
.
error
(
"根据编辑列表获取社群书扫码统计信息.[getBookGroupScanStats]失败, err:{}"
,
e
.
getMessage
(),
e
);
}
return
list
;
}
@ParamLog
(
"根据bookGroupIds获取社群书扫码统计信息"
)
public
List
<
GroupScanUserStatsDTO
>
getAdviserBookGroupScanStats
(
List
<
Long
>
bookAdviserIds
){
if
(
CollUtil
.
isEmpty
(
bookAdviserIds
)){
return
new
ArrayList
<>();
}
List
<
GroupScanUserStatsDTO
>
list
=
new
ArrayList
<>();
try
{
list
=
ResponseHandleUtil
.
parseList
(
groupMemberService
.
getAdviserBookGroupScanStats
(
bookAdviserIds
),
GroupScanUserStatsDTO
.
class
);
}
catch
(
Exception
e
){
log
.
error
(
"根据bookGroupIds获取社群书扫码统计信息.[getAdviserBookGroupScanStats]失败, err:{}"
,
e
.
getMessage
(),
e
);
}
return
list
;
}
}
}
pcloud-service-book/src/main/resources/mapper/book/BookAdviser.Mapper.xml
View file @
8410ff4e
...
@@ -869,4 +869,110 @@
...
@@ -869,4 +869,110 @@
ORDER BY IS_MAIN_EDITOR DESC,IS_DELETE ASC
ORDER BY IS_MAIN_EDITOR DESC,IS_DELETE ASC
LIMIT 1
LIMIT 1
</select>
</select>
<select
id=
"getAdviserBookVarietyStats"
parameterType=
"map"
resultType=
"com.pcloud.book.book.dto.BookAdviserDto"
>
SELECT
BOOK_ID AS bookId,
ADVISER_ID adviserId,
CREATED_DATE createdDate
FROM
book_adviser
WHERE
IS_DELETE = 0
<if
test=
"null != adviserIds and adviserIds.size > 0"
>
AND ADVISER_ID IN
<foreach
collection=
"adviserIds"
open=
"("
item=
"item"
close=
")"
separator=
","
>
#{item}
</foreach>
</if>
</select>
<select
id=
"getErpPublishNumQueryParams"
parameterType=
"map"
resultType=
"com.pcloud.book.book.dto.ERPPublishNumDTO"
>
SELECT
ADVISER_ID AS adviserId,
CHANNEL_ID AS channelId,
BOOK_ID AS bookId,
CREATED_DATE AS createDate
FROM
book_adviser
WHERE
IS_DELETE = 0 AND ADVISER_ID IN
<foreach
collection=
"adviserIds"
item=
"item"
close=
")"
open=
"("
separator=
","
>
#{item}
</foreach>
GROUP BY
ADVISER_ID,
CHANNEL_ID,
BOOK_ID
</select>
<select
id=
"getAgentBookStatsDetail"
parameterType=
"map"
resultType=
"com.pcloud.book.book.vo.AgentBookStatsDetailVO"
>
SELECT
tb.bookAdviserId,
tb.channelId,
tb.bookName,
tb.isbn,
tb.bookId,
tb.adviserId,
tb.isRay,
tb.serialNumber,
tb.bookGroupId
FROM (
SELECT
ba.BOOK_ADVISER_ID AS bookAdviserId,
ba.CHANNEL_ID AS channelId,
b.BOOK_NAME AS bookName,
b.ISBN AS isbn,
b.BOOK_ID AS bookId,
ba.ADVISER_ID AS adviserId,
IF(ba.is_open_robot_process OR bg.join_group_type = 4, 1, 0) AS isRay,
b.SERIAL_NUMBER AS serialNumber,
bg.id AS bookGroupId
FROM
book_adviser ba
LEFT JOIN book b ON ba.BOOK_ID = b.BOOK_ID
LEFT JOIN book_group bg on ba.BOOK_ID = bg.book_id AND ba.CHANNEL_ID = bg.channel_id AND ba.ADVISER_ID = bg.create_user
<where>
ba.ADVISER_ID IN
<foreach
collection=
"advisers"
separator=
","
close=
")"
item=
"it"
open=
"("
>
${it}
</foreach>
<if
test=
"raysBookIds != null and raysBookIds.size > 0 or name != null"
>
AND (
<if
test=
"raysBookIds != null and raysBookIds.size > 0"
>
<foreach
collection=
"raysBookIds"
open=
"("
item=
"item"
close=
")"
separator=
"OR"
>
( 1=1
<if
test=
"item.adviserId != null"
>
AND ba.ADVISER_ID =${item.adviserId}
</if>
<if
test=
"item.raysChannelId != null"
>
AND ba.CHANNEL_ID=${item.raysChannelId}
</if>
<if
test=
"item.raysBookId != null"
>
AND ba.BOOK_ID=${item.raysBookId}
</if>
)
</foreach>
<if
test=
"name != null"
>
OR
</if>
</if>
<if
test=
"name != null"
>
(
b.BOOK_NAME LIKE CONCAT('%',#{name},'%') OR b.ISBN LIKE CONCAT('%',#{name},'%')
<if
test=
"bookNo != null"
>
OR b.BOOK_ID LIKE CONCAT('%',#{bookNo},'%')
</if>
)
</if>
)
</if>
</where>
) tb
<if
test=
"isRay != null"
>
where tb.isRay = #{isRay}
</if>
ORDER BY tb.bookAdviserId DESC
</select>
</mapper>
</mapper>
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