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
6cb05388
Commit
6cb05388
authored
Sep 23, 2020
by
Administrator
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/1003584' into 'master'
feat: [1003584] ERP新增质检功能 See merge request rays/pcloud-book!974
parents
388c2833
a56313e6
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
640 additions
and
3 deletions
+640
-3
QrcodeServeDto.java
...rc/main/java/com/pcloud/book/book/dto/QrcodeServeDto.java
+84
-0
BookBiz.java
...-book/src/main/java/com/pcloud/book/book/biz/BookBiz.java
+10
-0
BookBizImpl.java
.../main/java/com/pcloud/book/book/biz/impl/BookBizImpl.java
+459
-1
BookFacadeImpl.java
...java/com/pcloud/book/book/facade/impl/BookFacadeImpl.java
+36
-0
QrcodeSceneConsr.java
...va/com/pcloud/book/consumer/channel/QrcodeSceneConsr.java
+11
-0
ChannelConsr.java
...main/java/com/pcloud/book/consumer/user/ChannelConsr.java
+18
-1
BookGroupDTO.java
...src/main/java/com/pcloud/book/group/dto/BookGroupDTO.java
+21
-0
Book.Mapper.xml
...rvice-book/src/main/resources/mapper/book/Book.Mapper.xml
+1
-1
No files found.
pcloud-facade-book/src/main/java/com/pcloud/book/book/dto/QrcodeServeDto.java
0 → 100644
View file @
6cb05388
package
com
.
pcloud
.
book
.
book
.
dto
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
public
class
QrcodeServeDto
implements
Serializable
{
@ApiModelProperty
(
"作品或应用id"
)
private
Long
serveId
;
@ApiModelProperty
(
"sceneId"
)
private
Long
sceneId
;
@ApiModelProperty
(
"社群书id"
)
private
Long
bookGroupId
;
@ApiModelProperty
(
"类型;APP应用,PRODUCT作品"
)
private
String
serveType
;
@ApiModelProperty
(
"链接"
)
private
String
serveUrl
;
@ApiModelProperty
(
"短链"
)
private
String
shortUrl
;
@ApiModelProperty
(
"应用或作品名称"
)
private
String
serveName
;
@ApiModelProperty
(
"类型"
)
private
String
fromType
;
@ApiModelProperty
(
"是否超级作者"
)
private
Boolean
isSuper
;
@ApiModelProperty
(
"销售价"
)
private
Double
retailPrice
;
@ApiModelProperty
(
"协议价"
)
private
Double
dealPrice
;
@ApiModelProperty
(
"图片地址"
)
private
String
picUrl
;
@ApiModelProperty
(
"描述信息"
)
private
String
description
;
@ApiModelProperty
(
"类型"
)
private
String
typeCode
;
@ApiModelProperty
(
"唯一码"
)
private
String
uniqueNumber
;
@ApiModelProperty
(
"专业"
)
private
Long
proLabelId
;
@ApiModelProperty
(
"深度"
)
private
Long
depLabelId
;
@ApiModelProperty
(
"目的"
)
private
Long
purLabelId
;
@ApiModelProperty
(
"专业"
)
private
String
proLabelName
;
@ApiModelProperty
(
"深度"
)
private
String
depLabelName
;
@ApiModelProperty
(
"目的"
)
private
String
purLabelName
;
@ApiModelProperty
(
"服务创建人"
)
private
Long
serveCreateUser
;
@ApiModelProperty
(
"服务创建人名称"
)
private
String
serveCreateUserName
;
@ApiModelProperty
(
"横图"
)
private
String
transverseImg
;;
}
pcloud-service-book/src/main/java/com/pcloud/book/book/biz/BookBiz.java
View file @
6cb05388
...
...
@@ -13,6 +13,7 @@ import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import
com.pcloud.book.book.dto.BookInfoAndAuthStatusDTO
;
import
com.pcloud.book.book.dto.CreateBookResultVO
;
import
com.pcloud.book.book.dto.CreateBookVO
;
import
com.pcloud.book.book.dto.QrcodeServeDto
;
import
com.pcloud.book.book.dto.RelateAdviserVO
;
import
com.pcloud.book.book.entity.Book
;
import
com.pcloud.book.book.entity.BookLabel
;
...
...
@@ -25,6 +26,7 @@ import com.pcloud.book.book.vo.request.BookQualifyInfoVO;
import
com.pcloud.book.book.vo.request.BookSearchParamVO
;
import
com.pcloud.book.book.dto.BookUniqueNumberDTO
;
import
com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.page.PageBean
;
import
com.pcloud.common.page.PageBeanNew
;
...
...
@@ -679,4 +681,12 @@ public interface BookBiz {
void
addCreateInfoToMq
(
List
<
CreateBookVO
>
createBookVOList
);
List
<
CreateBookResultVO
>
batchCreateBook4ErpNew
(
List
<
CreateBookVO
>
createBookVOList
);
BookDto
getBaseById4Erp
(
Long
bookId
,
Long
channelId
,
Long
adviserId
);
List
<
BookGroupDTO
>
getQrcode4Erp
(
Long
bookId
,
Long
channelId
,
Long
adviserId
);
PageBeanNew
<
QrcodeServeDto
>
getQrcodeDetail4Erp
(
Long
sceneId
,
Long
bookGroupId
,
Long
channelId
,
Integer
currentPage
,
Integer
numPerPage
);
BookGroupDTO
checkQrcodeDetail4Erp
(
String
url
);
}
pcloud-service-book/src/main/java/com/pcloud/book/book/biz/impl/BookBizImpl.java
View file @
6cb05388
...
...
@@ -9,8 +9,11 @@ import com.google.common.collect.Maps;
import
com.alibaba.fastjson.JSONObject
;
import
com.netflix.discovery.converters.Auto
;
import
com.pcloud.analysisengine.qrcode.dto.BookTimeSourceDto
;
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.base.exception.AppBizException
;
import
com.pcloud.appcenter.cache.service.AppPriceCacheService
;
import
com.pcloud.book.applet.biz.AppletBookClassifyBiz
;
import
com.pcloud.book.applet.entity.AppletUserLabelRelation
;
import
com.pcloud.book.applet.enums.LabelTypeEnum
;
...
...
@@ -50,6 +53,7 @@ import com.pcloud.book.book.dto.BookNameUpdateDTO;
import
com.pcloud.book.book.dto.CreateBookResultVO
;
import
com.pcloud.book.book.dto.CreateBookVO
;
import
com.pcloud.book.book.dto.CreateQrcodeVO
;
import
com.pcloud.book.book.dto.QrcodeServeDto
;
import
com.pcloud.book.book.dto.RelateAdviserVO
;
import
com.pcloud.book.book.entity.Book
;
import
com.pcloud.book.book.entity.BookAdviser
;
...
...
@@ -69,16 +73,20 @@ import com.pcloud.book.book.vo.request.BookSearchParamVO;
import
com.pcloud.book.book.dto.BookUniqueNumberDTO
;
import
com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto
;
import
com.pcloud.book.consumer.analysisengine.SceneRecordConsr
;
import
com.pcloud.book.consumer.app.AppConsr
;
import
com.pcloud.book.consumer.app.AssistTempletConsr
;
import
com.pcloud.book.consumer.channel.QrcodeSceneConsr
;
import
com.pcloud.book.consumer.common.ExportConsr
;
import
com.pcloud.book.consumer.erp.ErpConsr
;
import
com.pcloud.book.consumer.isbn.IsbnConsr
;
import
com.pcloud.book.consumer.label.LabelConsr
;
import
com.pcloud.book.consumer.message.MessageConsr
;
import
com.pcloud.book.consumer.raystask.MainLineConsr
;
import
com.pcloud.book.consumer.resource.ProductConsr
;
import
com.pcloud.book.consumer.user.AdviserConsr
;
import
com.pcloud.book.consumer.user.AgentConsr
;
import
com.pcloud.book.consumer.user.ChannelConsr
;
import
com.pcloud.book.consumer.user.MerchantConsr
;
import
com.pcloud.book.consumer.user.PartyConsr
;
import
com.pcloud.book.consumer.wechat.WechatConsr
;
import
com.pcloud.book.copyright.biz.BookAuthInfoBiz
;
...
...
@@ -88,21 +96,30 @@ import com.pcloud.book.es.entity.ESBookAndAdviser;
import
com.pcloud.book.group.biz.BookGroupBiz
;
import
com.pcloud.book.group.dao.BookAppletSceneDao
;
import
com.pcloud.book.group.dao.BookGroupDao
;
import
com.pcloud.book.group.dao.BookGroupServeDao
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.entity.BookAppletScene
;
import
com.pcloud.book.group.entity.BookGroup
;
import
com.pcloud.book.group.entity.BookGroupServe
;
import
com.pcloud.book.group.enums.AppAndProductTypeEnum
;
import
com.pcloud.book.group.enums.JoinGroupTypeEnum
;
import
com.pcloud.book.group.tools.SendWeixinRequestTools
;
import
com.pcloud.book.mq.producer.BookMQProducer
;
import
com.pcloud.book.rightsSetting.mapper.RightsSettingBookRelationMapper
;
import
com.pcloud.book.util.common.ThreadPoolUtils
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeLocationDto
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto
;
import
com.pcloud.channelcenter.qrcode.entity.QrcodeLabel
;
import
com.pcloud.channelcenter.qrcode.entity.QrcodeScene
;
import
com.pcloud.channelcenter.qrcode.entity.QrcodeStyle
;
import
com.pcloud.channelcenter.wechat.dto.AccountSettingDto
;
import
com.pcloud.channelcenter.wechat.dto.BookServeParamVO
;
import
com.pcloud.channelcenter.wechat.dto.MessageDto
;
import
com.pcloud.channelcenter.wechat.vo.BookServeVO
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.constant.AgentTypeEnum
;
import
com.pcloud.common.core.constant.SystemCode
;
import
com.pcloud.common.enums.AppTypeEnum
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.ExportException
;
import
com.pcloud.common.page.PageBean
;
...
...
@@ -111,9 +128,13 @@ import com.pcloud.common.page.PageParam;
import
com.pcloud.common.utils.DateUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.NumberUtil
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.common.utils.cache.redis.JedisClusterUtils
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.commoncenter.export.service.ExportService
;
import
com.pcloud.labelcenter.label.service.LabelService
;
import
com.pcloud.resourcecenter.product.dto.ProductDto
;
import
com.pcloud.resourcecenter.product.dto.SpecificationDto
;
import
com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto
;
import
org.apache.commons.collections.MapUtils
;
...
...
@@ -129,6 +150,7 @@ import org.springframework.transaction.annotation.Transactional;
import
org.springframework.util.CollectionUtils
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Calendar
;
...
...
@@ -141,8 +163,10 @@ import java.util.Objects;
import
java.util.Optional
;
import
java.util.Random
;
import
java.util.UUID
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -240,7 +264,22 @@ public class BookBizImpl implements BookBiz {
@Autowired
private
ErpConsr
erpConsr
;
@Autowired
private
LabelService
labelService
;
@Autowired
private
ProductConsr
productConsr
;
@Autowired
private
AppConsr
appConsr
;
@Autowired
private
BookGroupServeDao
bookGroupServeDao
;
@Autowired
private
AppPriceCacheService
appPriceCacheService
;
@Autowired
private
MerchantConsr
merchantConsr
;
@Autowired
private
BookBiz
bookBiz
;
@Autowired
private
LabelConsr
labelConsr
;
/**
...
...
@@ -2464,6 +2503,43 @@ public class BookBizImpl implements BookBiz {
bookDao
.
relateUniqueNumber4Erp
(
bookUniqueNumberVos
);
}
/**
* 获取书籍基础信息
*/
@Override
public
BookDto
getBaseById4Erp
(
Long
bookId
,
Long
channelId
,
Long
adviserId
)
throws
BizException
{
if
(
bookId
==
null
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"bookId 不能为空"
);
}
BookDto
bookDto
=
null
;
if
(
channelId
!=
null
&&
adviserId
!=
null
){
Map
<
String
,
Object
>
paramMap
=
Maps
.
newHashMap
();
paramMap
.
put
(
"bookId"
,
bookId
);
paramMap
.
put
(
"adviserId"
,
adviserId
);
paramMap
.
put
(
"channelId"
,
channelId
);
bookDto
=
bookDao
.
getById
(
paramMap
);
bookDto
.
setAdviserId
(
adviserId
);
bookDto
.
setChannelId
(
channelId
);
bookDto
.
setChannelName
(
channelConsr
.
getNameById
(
channelId
));
bookDto
.
setAdviserName
(
adviserConsr
.
getNameById
(
adviserId
));
Long
agentId
=
adviserConsr
.
getAgentIdByAdviser
(
adviserId
);
Map
<
Long
,
String
>
agentNameMap
=
agentConsr
.
getNames
(
Collections
.
singletonList
(
agentId
));
if
(!
MapUtils
.
isEmpty
(
agentNameMap
)
&&
agentNameMap
.
containsKey
(
agentId
))
{
bookDto
.
setAgentName
(
agentNameMap
.
get
(
agentId
));
}
}
else
{
// 从redis获取书籍信息
bookDto
=
bookCache
.
getBookToRedis
(
bookId
);
if
(
null
==
bookDto
)
{
bookDto
=
bookDao
.
getBaseById
(
bookId
);
// 将数据存入redis
bookCache
.
setBookToRedis
(
bookDto
);
}
}
return
bookDto
==
null
?
new
BookDto
()
:
bookDto
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
relateBookAdviser4Erp
(
RelateAdviserVO
relateAdviserVO
){
...
...
@@ -2793,4 +2869,386 @@ public class BookBizImpl implements BookBiz {
erpConsr
.
batchUpdateRelateInfo
(
resultList
);
return
resultList
;
}
@Override
public
List
<
BookGroupDTO
>
getQrcode4Erp
(
Long
bookId
,
Long
channelId
,
Long
adviserId
)
{
if
(
bookId
==
null
||
channelId
==
null
||
adviserId
==
null
){
return
null
;
}
// 获取所有的现代纸书二维码
List
<
QrcodeSceneDto
>
qrcodeSceneDtos
=
qrcodeSceneConsr
.
getQrCodeList
(
bookId
,
adviserId
,
channelId
);
if
(
CollectionUtils
.
isEmpty
(
qrcodeSceneDtos
)){
qrcodeSceneDtos
=
Lists
.
newArrayList
();
}
// 获取所有的社群码
List
<
BookGroupDTO
>
bookGroupList
=
bookGroupDao
.
getDTOByBookIdsAdviserIdsChannelIds
(
Lists
.
newArrayList
(
bookId
),
Lists
.
newArrayList
(
adviserId
),
Lists
.
newArrayList
(
channelId
));
if
(
CollectionUtils
.
isEmpty
(
bookGroupList
)){
bookGroupList
=
Lists
.
newArrayList
();
}
// 填充二维码位置
this
.
fillLocationName
(
bookGroupList
);
// 整合结果
this
.
mergeQrcodeData
(
qrcodeSceneDtos
,
bookGroupList
);
// 填充书刊标签
this
.
setBookGroupLabel
(
bookGroupList
);
return
bookGroupList
;
}
private
void
mergeQrcodeData
(
List
<
QrcodeSceneDto
>
qrcodeSceneDtos
,
List
<
BookGroupDTO
>
bookGroupList
)
{
BookGroupDTO
tempBookGroupDTO
;
for
(
QrcodeSceneDto
qrcodeSceneDto
:
qrcodeSceneDtos
)
{
tempBookGroupDTO
=
new
BookGroupDTO
();
tempBookGroupDTO
.
setSceneId
(
qrcodeSceneDto
.
getSceneId
());
tempBookGroupDTO
.
setGroupQrcodeName
(
qrcodeSceneDto
.
getSceneName
());
tempBookGroupDTO
.
setGroupQrcodeUrl
(
qrcodeSceneDto
.
getQrcodeUrl
());
tempBookGroupDTO
.
setLocationName
(
joinLocationName
(
qrcodeSceneDto
.
getQrcodeLocations
()));
if
(
qrcodeSceneDto
.
getQrcodeLabelDto
()
!=
null
)
{
tempBookGroupDTO
.
setProLabelId
(
qrcodeSceneDto
.
getQrcodeLabelDto
().
getProLabelId
());
tempBookGroupDTO
.
setDepLabelId
(
qrcodeSceneDto
.
getQrcodeLabelDto
().
getDepLabelId
());
tempBookGroupDTO
.
setPurLabelId
(
qrcodeSceneDto
.
getQrcodeLabelDto
().
getPurLabelId
());
}
tempBookGroupDTO
.
setCreateTime
(
qrcodeSceneDto
.
getCreatedDate
());
tempBookGroupDTO
.
setChannelId
(
qrcodeSceneDto
.
getChannelPartyId
());
tempBookGroupDTO
.
setQrcodeType
(
qrcodeSceneDto
.
getQrcodeType
());
bookGroupList
.
add
(
tempBookGroupDTO
);
}
}
private
void
fillLocationName
(
List
<
BookGroupDTO
>
bookGroupList
)
{
List
<
Long
>
locationIds
=
Lists
.
newArrayList
();
for
(
BookGroupDTO
bookGroupDTO
:
bookGroupList
)
{
if
(!
NumberUtil
.
isNumber
(
bookGroupDTO
.
getGroupQrcodeLocationId
())){
continue
;
}
locationIds
.
add
(
bookGroupDTO
.
getGroupQrcodeLocationId
().
longValue
());
}
Map
<
Long
,
String
>
locationNameMap
=
channelConsr
.
listLocationNames
(
locationIds
);
if
(
MapUtils
.
isEmpty
(
locationNameMap
)){
return
;
}
for
(
BookGroupDTO
bookGroupDTO
:
bookGroupList
)
{
if
(!
NumberUtil
.
isNumber
(
bookGroupDTO
.
getGroupQrcodeLocationId
())){
continue
;
}
bookGroupDTO
.
setLocationName
(
locationNameMap
.
get
(
bookGroupDTO
.
getGroupQrcodeLocationId
().
longValue
()));
}
}
private
String
joinLocationName
(
List
<
QrcodeLocationDto
>
locationDtos
){
if
(
CollectionUtils
.
isEmpty
(
locationDtos
)){
return
""
;
}
return
String
.
join
(
";"
,
locationDtos
.
stream
().
map
(
x
->
x
.
getLocationName
()).
collect
(
Collectors
.
toList
()));
}
private
void
setBookGroupLabel
(
List
<
BookGroupDTO
>
bookGroupList
)
{
List
<
Long
>
labelIds
=
new
ArrayList
<>();
for
(
BookGroupDTO
bookGroupDTO
:
bookGroupList
)
{
if
(
null
!=
bookGroupDTO
.
getProLabelId
())
{
labelIds
.
add
(
bookGroupDTO
.
getProLabelId
());
}
if
(
null
!=
bookGroupDTO
.
getDepLabelId
())
{
labelIds
.
add
(
bookGroupDTO
.
getDepLabelId
());
}
if
(
null
!=
bookGroupDTO
.
getPurLabelId
())
{
labelIds
.
add
(
bookGroupDTO
.
getPurLabelId
());
}
}
labelIds
=
labelIds
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
labelIds
))
{
return
;
}
Map
<
Long
,
String
>
labelMap
=
ResponseHandleUtil
.
parseMap
(
labelService
.
getLabelName
(
labelIds
),
Long
.
class
,
String
.
class
);
if
(
MapUtils
.
isEmpty
(
labelMap
))
{
return
;
}
for
(
BookGroupDTO
bookGroupDTO
:
bookGroupList
)
{
if
(
null
!=
bookGroupDTO
.
getProLabelId
()
&&
labelMap
.
containsKey
(
bookGroupDTO
.
getProLabelId
()))
{
bookGroupDTO
.
setProLabelName
(
labelMap
.
get
(
bookGroupDTO
.
getProLabelId
()));
}
if
(
null
!=
bookGroupDTO
.
getDepLabelId
()
&&
labelMap
.
containsKey
(
bookGroupDTO
.
getDepLabelId
()))
{
bookGroupDTO
.
setDepLabelName
(
labelMap
.
get
(
bookGroupDTO
.
getDepLabelId
()));
}
if
(
null
!=
bookGroupDTO
.
getPurLabelId
()
&&
labelMap
.
containsKey
(
bookGroupDTO
.
getPurLabelId
()))
{
bookGroupDTO
.
setPurLabelName
(
labelMap
.
get
(
bookGroupDTO
.
getPurLabelId
()));
}
}
}
@Override
public
PageBeanNew
<
QrcodeServeDto
>
getQrcodeDetail4Erp
(
Long
sceneId
,
Long
bookGroupId
,
Long
channelId
,
Integer
currentPage
,
Integer
numPerPage
)
{
if
(
sceneId
==
null
&&
bookGroupId
==
null
){
throw
new
BizException
(
BizException
.
PARAM_IS_NULL
.
getCode
(),
"sceneId 或者 bookGroupId 不能为空"
);
}
if
(
sceneId
!=
null
&&
bookGroupId
!=
null
){
throw
new
BizException
(
BizException
.
PARAM_IS_NULL
.
getCode
(),
"sceneId 和 bookGroupId 不能同时存在"
);
}
List
<
QrcodeServeDto
>
qrcodeServeDtoList
=
Lists
.
newArrayList
();
if
(
bookGroupId
!=
null
&&
bookGroupId
>
0
){
List
<
BookGroupServe
>
bookGroupServes
=
bookGroupServeDao
.
getListByBookGroupId
(
bookGroupId
);
if
(!
CollectionUtils
.
isEmpty
(
bookGroupServes
)){
for
(
BookGroupServe
bookGroupServe
:
bookGroupServes
)
{
QrcodeServeDto
qrcodeServeDto
=
new
QrcodeServeDto
();
BeanUtils
.
copyProperties
(
bookGroupServe
,
qrcodeServeDto
);
qrcodeServeDtoList
.
add
(
qrcodeServeDto
);
}
}
}
if
(
sceneId
!=
null
&&
sceneId
>
0
){
QrcodeSceneDto
qrcodeSceneDto
=
qrcodeSceneConsr
.
getById
(
sceneId
);
List
<
MessageDto
>
messages
=
qrcodeSceneDto
.
getMessages
();
if
(!
CollectionUtils
.
isEmpty
(
messages
)){
QrcodeServeDto
qrcodeServeDto
;
for
(
MessageDto
message
:
messages
)
{
qrcodeServeDto
=
new
QrcodeServeDto
();
qrcodeServeDto
.
setServeId
(
message
.
getFromId
());
qrcodeServeDto
.
setServeType
(
message
.
getTypeCode
());
qrcodeServeDto
.
setServeUrl
(
message
.
getUrl
());
qrcodeServeDto
.
setTypeCode
(
message
.
getFromType
());
qrcodeServeDto
.
setSceneId
(
sceneId
);
qrcodeServeDtoList
.
add
(
qrcodeServeDto
);
}
}
}
int
totalCount
=
qrcodeServeDtoList
.
size
();
qrcodeServeDtoList
=
qrcodeServeDtoList
.
stream
().
skip
(
currentPage
*
numPerPage
).
limit
(
numPerPage
).
collect
(
Collectors
.
toList
());
// 填充价格(销售价、协议价)
this
.
fillPrice
(
qrcodeServeDtoList
,
channelId
);
// 填充标签
this
.
fillLabels
(
qrcodeServeDtoList
);
// 填充编辑、作者
this
.
fillCreateName
(
qrcodeServeDtoList
);
return
new
PageBeanNew
<>(
currentPage
,
numPerPage
,
totalCount
,
qrcodeServeDtoList
);
}
private
void
fillLabels
(
List
<
QrcodeServeDto
>
dtoList
)
{
if
(
CollectionUtils
.
isEmpty
(
dtoList
)){
return
;
}
dtoList
=
dtoList
.
stream
().
filter
(
x
->
"APP"
.
equalsIgnoreCase
(
x
.
getServeType
())).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
dtoList
)){
return
;
}
List
<
Long
>
labelId
=
Lists
.
newArrayList
();
for
(
QrcodeServeDto
vo
:
dtoList
)
{
labelId
.
add
(
vo
.
getProLabelId
());
labelId
.
add
(
vo
.
getPurLabelId
());
labelId
.
add
(
vo
.
getDepLabelId
());
}
Map
<
Long
,
String
>
labelName
=
labelConsr
.
getLabelName
(
labelId
);
if
(
MapUtils
.
isEmpty
(
labelName
)){
return
;
}
for
(
QrcodeServeDto
vo
:
dtoList
)
{
vo
.
setPurLabelName
(
labelName
.
get
(
vo
.
getPurLabelId
()));
vo
.
setProLabelName
(
labelName
.
get
(
vo
.
getProLabelId
()));
vo
.
setDepLabelName
(
labelName
.
get
(
vo
.
getDepLabelId
()));
}
}
private
void
fillCreateName
(
List
<
QrcodeServeDto
>
list
)
{
if
(
ListUtils
.
isEmpty
(
list
))
{
return
;
}
List
<
Long
>
adviserIds
=
list
.
stream
().
filter
(
s
->
"APP"
.
equalsIgnoreCase
(
s
.
getServeType
())).
map
(
x
->
x
.
getServeCreateUser
()).
collect
(
Collectors
.
toList
());
List
<
Long
>
merchantIds
=
list
.
stream
().
filter
(
s
->
"PRODUCT"
.
equalsIgnoreCase
(
s
.
getServeType
())).
map
(
x
->
x
.
getServeCreateUser
()).
collect
(
Collectors
.
toList
());
Map
<
Long
,
String
>
merchantNameMap
=
merchantConsr
.
getNamesByIdList
(
merchantIds
);
Map
<
Long
,
String
>
adviserNameMap
=
adviserConsr
.
getNames
(
adviserIds
);
if
(
MapUtils
.
isEmpty
(
merchantNameMap
)){
merchantNameMap
=
new
HashMap
<>();
}
if
(
MapUtils
.
isEmpty
(
adviserNameMap
)){
adviserNameMap
=
new
HashMap
<>();
}
for
(
QrcodeServeDto
serveDto
:
list
)
{
if
(
"PRODUCT"
.
equals
(
serveDto
.
getServeType
())){
serveDto
.
setServeCreateUserName
(
merchantNameMap
.
get
(
serveDto
.
getServeCreateUser
()));
}
else
if
(
"APP"
.
equals
(
serveDto
.
getServeType
())){
serveDto
.
setServeCreateUserName
(
adviserNameMap
.
get
(
serveDto
.
getServeCreateUser
()));
}
}
}
private
void
fillPrice
(
List
<
QrcodeServeDto
>
list
,
Long
channelId
)
{
if
(
ListUtils
.
isEmpty
(
list
))
{
return
;
}
AccountSettingDto
accountSettingDto
=
qrcodeSceneConsr
.
getWechatInfo
(
channelId
);
List
<
Long
>
appIds
=
list
.
stream
().
filter
(
s
->
"APP"
.
equalsIgnoreCase
(
s
.
getServeType
())).
map
(
x
->
x
.
getServeId
()).
collect
(
Collectors
.
toList
());
List
<
Long
>
productIds
=
list
.
stream
().
filter
(
s
->
"PRODUCT"
.
equalsIgnoreCase
(
s
.
getServeType
())).
map
(
x
->
x
.
getServeId
()).
collect
(
Collectors
.
toList
());
Map
<
Long
,
ProductDto
>
productDtoMap
=
new
HashMap
<>();
Map
<
Long
,
AppDto
>
appDtoMap
=
new
HashMap
<>();
// 销售价协议价
Map
<
Long
,
BigDecimal
>
appPriceMap
=
new
HashMap
<>();
if
(!
ListUtils
.
isEmpty
(
productIds
))
{
productDtoMap
=
productConsr
.
getProBasesByIds
(
productIds
);
}
if
(!
ListUtils
.
isEmpty
(
appIds
))
{
appDtoMap
=
appConsr
.
mapByIds
(
appIds
);
List
<
AppPriceCacheDTO
>
appPriceCacheDTOS
=
new
ArrayList
<>();
for
(
Long
appId
:
appIds
)
{
if
(
null
!=
appDtoMap
.
get
(
appId
))
{
AppPriceCacheDTO
appPriceCacheDTO
=
new
AppPriceCacheDTO
();
appPriceCacheDTO
.
setAppId
(
appId
);
appPriceCacheDTO
.
setAppTypeEnum
(
AppTypeEnum
.
APP_TYPE_MAP
.
get
(
appDtoMap
.
get
(
appId
).
getTypeCode
()));
appPriceCacheDTOS
.
add
(
appPriceCacheDTO
);
}
}
appPriceMap
=
ResponseHandleUtil
.
parseMapResponse
(
appPriceCacheService
.
getCaches
(
appPriceCacheDTOS
),
Long
.
class
,
BigDecimal
.
class
);
}
for
(
QrcodeServeDto
serveDto
:
list
)
{
Long
serveId
=
serveDto
.
getServeId
();
if
(
"PRODUCT"
.
equals
(
serveDto
.
getServeType
()))
{
if
(!
MapUtils
.
isEmpty
(
productDtoMap
)
&&
productDtoMap
.
containsKey
(
serveId
))
{
ProductDto
productDto
=
productDtoMap
.
get
(
serveId
);
if
(
productDto
!=
null
)
{
serveDto
.
setServeName
(
productDto
.
getProductName
());
if
(
productDto
.
getProductTypeDto
()
!=
null
)
{
serveDto
.
setFromType
(
productDto
.
getProductTypeDto
().
getTypeCode
());
serveDto
.
setDescription
(
productDto
.
getProductTypeDto
().
getTypeName
());
serveDto
.
setPicUrl
(
productDto
.
getCoverImg
());
serveDto
.
setUniqueNumber
(
productDto
.
getUniqueNumber
());
if
(!
CollectionUtils
.
isEmpty
(
productDto
.
getProductLabels
())){
serveDto
.
setProLabelName
(
productDto
.
getProductLabels
().
get
(
0
).
getProLabelName
());
serveDto
.
setDepLabelName
(
productDto
.
getProductLabels
().
get
(
0
).
getDepLabelName
());
serveDto
.
setPurLabelName
(
productDto
.
getProductLabels
().
get
(
0
).
getPurLabelName
());
}
serveDto
.
setShortUrl
(
SendWeixinRequestTools
.
splitUrl
(
accountSettingDto
,
serveDto
.
getServeUrl
()));
serveDto
.
setServeCreateUser
(
productDto
.
getAuthor
());
serveDto
.
setTransverseImg
(
productDto
.
getPicture1
());
}
List
<
SpecificationDto
>
specificationDtos
=
productDto
.
getSpecification
();
if
(!
ListUtils
.
isEmpty
(
specificationDtos
))
{
SpecificationDto
specificationDto
=
specificationDtos
.
get
(
0
);
if
(
null
!=
specificationDto
)
{
serveDto
.
setRetailPrice
(
specificationDto
.
getAdvisePrice
());
serveDto
.
setDealPrice
(
specificationDto
.
getDealPrice
());
}
}
}
}
}
else
if
(
"APP"
.
equals
(
serveDto
.
getServeType
()))
{
if
(!
MapUtils
.
isEmpty
(
appDtoMap
)
&&
appDtoMap
.
containsKey
(
serveId
))
{
AppDto
appDto
=
appDtoMap
.
get
(
serveId
);
if
(
appDto
!=
null
)
{
serveDto
.
setServeName
(
appDto
.
getTitle
());
serveDto
.
setFromType
(
appDto
.
getTypeCode
());
serveDto
.
setDescription
(
appDto
.
getTypeName
());
serveDto
.
setPicUrl
(
appDto
.
getSquareImg
());
serveDto
.
setUniqueNumber
(
appDto
.
getUniqueNumber
());
serveDto
.
setProLabelId
(
appDto
.
getProLabelId
());
serveDto
.
setDepLabelId
(
appDto
.
getDepLabelId
());
serveDto
.
setPurLabelId
(
appDto
.
getPurLabelId
());
serveDto
.
setShortUrl
(
SendWeixinRequestTools
.
splitUrl
(
accountSettingDto
,
serveDto
.
getServeUrl
()));
serveDto
.
setServeCreateUser
(
appDto
.
getCreatedUser
());
serveDto
.
setTransverseImg
(
appDto
.
getTransverseImg
());
}
}
if
(!
MapUtils
.
isEmpty
(
appPriceMap
))
{
if
(
appPriceMap
.
get
(
serveId
)
!=
null
)
{
serveDto
.
setRetailPrice
(
appPriceMap
.
get
(
serveId
).
doubleValue
());
serveDto
.
setDealPrice
(
0
D
);
}
}
}
}
}
@Override
public
BookGroupDTO
checkQrcodeDetail4Erp
(
String
url
)
{
List
<
CompletableFuture
>
futureList
=
Lists
.
newArrayList
();
// 社群书二维码
getGroupQrcodeInfo
(
url
,
futureList
);
// 现代纸书二维码
getBookQrcodeInfo
(
url
,
futureList
);
// 等待执行完成
CompletableFuture
.
allOf
(
futureList
.
toArray
(
new
CompletableFuture
[
futureList
.
size
()])).
join
();
BookGroupDTO
bookGroupInfo
=
null
;
for
(
CompletableFuture
completableFuture
:
futureList
)
{
try
{
bookGroupInfo
=
(
BookGroupDTO
)
completableFuture
.
get
(
5
,
TimeUnit
.
SECONDS
);
}
catch
(
Exception
e
){
LOGGER
.
info
(
"质检查询二维码信息失败;"
);
}
if
(
bookGroupInfo
!=
null
){
return
bookGroupInfo
;
}
}
return
bookGroupInfo
;
}
/**
* 查询社群书二维码信息
*/
private
void
getGroupQrcodeInfo
(
String
url
,
List
<
CompletableFuture
>
futureList
)
{
// https://qrcode.raysgo.com/2233
String
strBookGroupId
=
url
.
substring
(
url
.
indexOf
(
"/"
,
url
.
indexOf
(
"https://"
)
+
8
)
+
1
);
if
(
NumberUtil
.
isNumber
(
strBookGroupId
)){
futureList
.
add
(
CompletableFuture
.
supplyAsync
(()->{
BookGroupDTO
bookGroupInfo
=
null
;
try
{
bookGroupInfo
=
bookGroupBiz
.
getBookGroupInfo
(
Long
.
valueOf
(
strBookGroupId
));
}
catch
(
Exception
ex
)
{
}
if
(
bookGroupInfo
!=
null
)
{
// 填充二维码位置
this
.
fillLocationName
(
Lists
.
newArrayList
(
bookGroupInfo
));
BookDto
bookInfo
=
bookGroupInfo
.
getBookInfo
();
if
(
bookInfo
!=
null
)
{
bookInfo
.
setAdviserName
(
adviserConsr
.
getNameById
(
bookInfo
.
getCreatedUser
()));
Long
agentId
=
adviserConsr
.
getAgentIdByAdviser
(
bookInfo
.
getCreatedUser
());
Map
<
Long
,
String
>
agentNameMap
=
agentConsr
.
getNames
(
Collections
.
singletonList
(
agentId
));
if
(!
MapUtils
.
isEmpty
(
agentNameMap
)
&&
agentNameMap
.
containsKey
(
agentId
))
{
bookInfo
.
setAgentName
(
agentNameMap
.
get
(
agentId
));
}
}
}
return
bookGroupInfo
;
},
ThreadPoolUtils
.
FILL_APPLET_RECORD
));
}
}
/**
* 查询现代纸书二维码信息
*/
private
void
getBookQrcodeInfo
(
String
url
,
List
<
CompletableFuture
>
futureList
)
{
// http://weixin.qq.com/q/02mGra51v48q_10000M07-
futureList
.
add
(
CompletableFuture
.
supplyAsync
(()
->
{
BookGroupDTO
bookGroupInfo
=
null
;
QrcodeSceneDto
qrcodeSceneDto
=
qrcodeSceneConsr
.
getByUrl
(
url
);
if
(
qrcodeSceneDto
!=
null
&&
qrcodeSceneDto
.
getSceneId
()
>
0
)
{
bookGroupInfo
=
new
BookGroupDTO
();
bookGroupInfo
.
setGroupQrcodeUrl
(
qrcodeSceneDto
.
getQrcodeUrl
());
bookGroupInfo
.
setGroupQrcodeName
(
qrcodeSceneDto
.
getSceneName
());
bookGroupInfo
.
setLocationName
(
qrcodeSceneDto
.
getQrcodeLocations
().
get
(
0
).
getLocationName
());
bookGroupInfo
.
setProLabelId
(
qrcodeSceneDto
.
getQrcodeLabelDto
().
getProLabelId
());
bookGroupInfo
.
setDepLabelId
(
qrcodeSceneDto
.
getQrcodeLabelDto
().
getDepLabelId
());
bookGroupInfo
.
setPurLabelId
(
qrcodeSceneDto
.
getQrcodeLabelDto
().
getPurLabelId
());
bookGroupInfo
.
setCreateTime
(
qrcodeSceneDto
.
getCreatedDate
());
bookGroupInfo
.
setBookId
(
qrcodeSceneDto
.
getAdviserBookId
());
bookGroupInfo
.
setAdviserId
(
qrcodeSceneDto
.
getCreatedByUserLogin
());
BookDto
bookInfo
=
bookBiz
.
getBaseById
(
bookGroupInfo
.
getBookId
());
if
(
null
!=
bookInfo
)
{
bookInfo
.
setBookName
(
null
!=
bookInfo
.
getBookName
()
?
StringUtil
.
addBracket
(
bookInfo
.
getBookName
())
:
null
);
bookInfo
.
setAdviserName
(
adviserConsr
.
getNameById
(
bookInfo
.
getCreatedUser
()));
Long
agentId
=
adviserConsr
.
getAgentIdByAdviser
(
bookInfo
.
getCreatedUser
());
Map
<
Long
,
String
>
agentNameMap
=
agentConsr
.
getNames
(
Collections
.
singletonList
(
agentId
));
if
(!
MapUtils
.
isEmpty
(
agentNameMap
)
&&
agentNameMap
.
containsKey
(
agentId
))
{
bookInfo
.
setAgentName
(
agentNameMap
.
get
(
agentId
));
}
bookGroupInfo
.
setBookInfo
(
bookInfo
);
}
// 填充标签
this
.
setBookGroupLabel
(
Lists
.
newArrayList
(
bookGroupInfo
));
}
return
bookGroupInfo
;
},
ThreadPoolUtils
.
FILL_APPLET_RECORD
));
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/facade/impl/BookFacadeImpl.java
View file @
6cb05388
...
...
@@ -1141,4 +1141,40 @@ public class BookFacadeImpl implements BookFacade {
bookBiz
.
addCreateInfoToMq
(
createBookVOList
);
return
new
ResponseDto
<>();
}
/**
* 获取单个书籍基础信息
*/
@ApiOperation
(
"获取单个书籍基础信息(ERP)"
)
@RequestMapping
(
value
=
"getBaseById4Erp"
,
method
=
RequestMethod
.
GET
)
public
ResponseDto
<
BookDto
>
getBaseById4Erp
(
@RequestParam
(
value
=
"bookId"
)
Long
bookId
,
@RequestParam
(
value
=
"channelId"
)
Long
channelId
,
@RequestParam
(
value
=
"adviserId"
)
Long
adviserId
)
throws
BizException
{
return
new
ResponseDto
<>(
bookBiz
.
getBaseById4Erp
(
bookId
,
channelId
,
adviserId
));
}
@ApiOperation
(
"获取书籍下所有二维码信息(ERP)"
)
@GetMapping
(
"getQrcode4Erp"
)
public
ResponseDto
<?>
getQrcode4Erp
(
@RequestParam
(
value
=
"bookId"
)
Long
bookId
,
@RequestParam
(
value
=
"channelId"
)
Long
channelId
,
@RequestParam
(
value
=
"adviserId"
)
Long
adviserId
)
{
return
new
ResponseDto
<>(
bookBiz
.
getQrcode4Erp
(
bookId
,
channelId
,
adviserId
));
}
@ApiOperation
(
"获取二维码下的应用作品(ERP)"
)
@GetMapping
(
"getQrcodeDetail4Erp"
)
public
ResponseDto
<?>
getQrcodeDetail4Erp
(
@RequestParam
(
value
=
"sceneId"
,
required
=
false
)
Long
sceneId
,
@RequestParam
(
value
=
"bookGroupId"
,
required
=
false
)
Long
bookGroupId
,
@RequestParam
(
value
=
"channelId"
)
Long
channelId
,
@RequestParam
(
value
=
"currentPage"
)
Integer
currentPage
,
@RequestParam
(
value
=
"numPerPage"
)
Integer
numPerPage
)
{
return
new
ResponseDto
<>(
bookBiz
.
getQrcodeDetail4Erp
(
sceneId
,
bookGroupId
,
channelId
,
currentPage
,
numPerPage
));
}
@ApiOperation
(
"扫码检查二维码内容(ERP)"
)
@GetMapping
(
"checkQrcodeDetail4Erp"
)
public
ResponseDto
<?>
checkQrcodeDetail4Erp
(
@RequestParam
(
value
=
"url"
)
String
url
)
{
return
new
ResponseDto
<>(
bookBiz
.
checkQrcodeDetail4Erp
(
url
));
}
}
pcloud-service-book/src/main/java/com/pcloud/book/consumer/channel/QrcodeSceneConsr.java
View file @
6cb05388
...
...
@@ -438,4 +438,15 @@ public class QrcodeSceneConsr {
public
Long
createQrcodeScene4Erp
(
QrcodeScene
qrcodeScene
)
{
return
ResponseHandleUtil
.
parseResponse
(
qrcodeSceneService
.
createQrcodeScene4Erp
(
qrcodeScene
),
Long
.
class
);
}
@ParamLog
(
"根据url获取二维码信息"
)
public
QrcodeSceneDto
getByUrl
(
String
url
)
{
if
(
url
==
null
)
return
null
;
try
{
return
ResponseHandleUtil
.
parseResponse
(
qrcodeSceneService
.
getByUrl
(
url
),
QrcodeSceneDto
.
class
);
}
catch
(
BizException
e
)
{
LOGGER
.
error
(
"【二维码-渠道(消)】 获取二维码基本信息失败,<ERROR>.[getById]:"
+
e
.
getMessage
(),
e
);
}
return
null
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/consumer/user/ChannelConsr.java
View file @
6cb05388
...
...
@@ -7,6 +7,7 @@ import com.pcloud.channelcenter.base.exceptions.ChannelBizException;
import
com.pcloud.channelcenter.qrcode.dto.MapResourceCountDTO
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto
;
import
com.pcloud.channelcenter.qrcode.service.QrcodeLocationAssocService
;
import
com.pcloud.channelcenter.qrcode.service.QrcodeSceneService
;
import
com.pcloud.channelcenter.wechat.entity.AccountSetting
;
import
com.pcloud.channelcenter.wechat.service.AccountSettingService
;
...
...
@@ -20,7 +21,9 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -45,6 +48,8 @@ public class ChannelConsr {
private
QrcodeSceneService
qrcodeSceneService
;
@Autowired
private
AccountSettingService
accountSettingService
;
@Autowired
private
QrcodeLocationAssocService
qrcodeLocationAssocService
;
/**
* 获取渠道名称
...
...
@@ -219,7 +224,7 @@ public class ChannelConsr {
}
/**
* 批量获取现代纸书下所有
的二维码
* 批量获取现代纸书下所有
二维码的统计信息UV/PV
* @param adviserIds
* @param bookIds
* @param channelIds
...
...
@@ -232,4 +237,16 @@ public class ChannelConsr {
mapResourceCountDTO
.
setChannelIds
(
channelIds
);
return
ResponseHandleUtil
.
parseList
(
qrcodeSceneService
.
listQrcodeScene
(
mapResourceCountDTO
),
QrcodeSceneDto
.
class
);
}
public
Map
<
Long
,
String
>
listLocationNames
(
List
<
Long
>
locationIds
)
{
if
(
CollectionUtils
.
isEmpty
(
locationIds
)){
return
new
HashMap
<>();
}
try
{
return
ResponseHandleUtil
.
parseMap
(
qrcodeLocationAssocService
.
listLocationNames
(
locationIds
),
Long
.
class
,
String
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"获取二维码位置 "
+
e
.
getMessage
(),
e
);
throw
new
ChannelBizException
(
ChannelBizException
.
PARAM_IS_NULL
,
"获取二维码位置失败"
);
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dto/BookGroupDTO.java
View file @
6cb05388
...
...
@@ -287,6 +287,19 @@ public class BookGroupDTO extends BaseDto {
private
Integer
groupQrcodePageNum
;
private
Integer
groupQrcodeLocationId
;
private
String
groupQrcodeRemark
;
private
String
locationName
;
/**
* wechat:公众号码;ali:自有码
*/
private
String
qrcodeType
;
public
String
getQrcodeType
()
{
return
qrcodeType
;
}
public
void
setQrcodeType
(
String
qrcodeType
)
{
this
.
qrcodeType
=
qrcodeType
;
}
public
String
getGroupQrcodeLink
()
{
return
groupQrcodeLink
;
...
...
@@ -797,6 +810,14 @@ public class BookGroupDTO extends BaseDto {
this
.
groupQrcodeRemark
=
groupQrcodeRemark
;
}
public
String
getLocationName
()
{
return
locationName
;
}
public
void
setLocationName
(
String
locationName
)
{
this
.
locationName
=
locationName
;
}
@Override
public
String
toString
()
{
return
"BookGroupDTO{"
+
...
...
pcloud-service-book/src/main/resources/mapper/book/Book.Mapper.xml
View file @
6cb05388
...
...
@@ -305,7 +305,7 @@
IF(ISNULL(BF.BOOK_FUND_ID),0,1) IS_FUND_SUPPORT,START_TIME,END_TIME,BA.TEMPLET_ID,BA.SECOND_TEMPLET_ID,
BA.GRA_LABEL_ID,BA.SUB_LABEL_ID,BA.VER_LABEL_ID,BA.AREA_LABEL_ID, BA.IS_PRINT isPrint,
BA.pro_label_id, BA.dep_label_id,BA.pur_label_id,BA.vol_label_id,if(G.ID IS NULL, 0, 1) isBookGroup, G.id BOOK_GROUP_ID,G.join_group_type,
BA.is_open_robot_process,BA.vol_label_id,b.unique_number
BA.is_open_robot_process,BA.vol_label_id,b.unique_number
,BA.CREATED_DATE
FROM
BOOK_ADVISER BA
INNER JOIN
...
...
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