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
9e6a5db0
Commit
9e6a5db0
authored
Jul 08, 2019
by
宋祥
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'mymaster' into 'master'
修改统计的bug See merge request rays/pcloud-book!37
parents
a8cc654a
2269cb49
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
222 additions
and
1 deletions
+222
-1
pom.xml
pcloud-service-book/pom.xml
+18
-0
TradeConsr.java
.../main/java/com/pcloud/book/consumer/trade/TradeConsr.java
+21
-0
BookGroupBizImpl.java
...java/com/pcloud/book/group/biz/impl/BookGroupBizImpl.java
+180
-0
pom.xml
pom.xml
+3
-1
No files found.
pcloud-service-book/pom.xml
View file @
9e6a5db0
...
@@ -158,6 +158,24 @@
...
@@ -158,6 +158,24 @@
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
com.pcloud.facade
</groupId>
<artifactId>
pcloud-facade-audioapp
</artifactId>
<version>
${pcloud-facade-audioapp.version}
</version>
</dependency>
<dependency>
<groupId>
com.pcloud.facade
</groupId>
<artifactId>
pcloud-facade-videolesson
</artifactId>
<version>
${pcloud-facade-videolesson.version}
</version>
</dependency>
<dependency>
<groupId>
com.pcloud.facade
</groupId>
<artifactId>
pcloud-facade-liveapp
</artifactId>
<version>
${pcloud-facade-liveapp.version}
</version>
</dependency>
<dependency>
<groupId>
fakepath
</groupId>
<groupId>
fakepath
</groupId>
<artifactId>
jbarcode
</artifactId>
<artifactId>
jbarcode
</artifactId>
<version>
0.2.8
</version>
<version>
0.2.8
</version>
...
...
pcloud-service-book/src/main/java/com/pcloud/book/consumer/trade/TradeConsr.java
View file @
9e6a5db0
...
@@ -6,6 +6,7 @@ import com.pcloud.common.utils.ListUtils;
...
@@ -6,6 +6,7 @@ import com.pcloud.common.utils.ListUtils;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.facade.tradecenter.dto.GroupMoneyDto
;
import
com.pcloud.facade.tradecenter.dto.GroupMoneyDto
;
import
com.pcloud.facade.tradecenter.dto.QrGroupBuyDetailDto
;
import
com.pcloud.facade.tradecenter.dto.QrGroupBuyDetailDto
;
import
com.pcloud.facade.tradecenter.dto.SpeWechatGroupDto
;
import
com.pcloud.facade.tradecenter.dto.WechatGroupDto
;
import
com.pcloud.facade.tradecenter.dto.WechatGroupDto
;
import
com.pcloud.facade.tradecenter.service.OrderFormService
;
import
com.pcloud.facade.tradecenter.service.OrderFormService
;
...
@@ -69,4 +70,24 @@ public class TradeConsr {
...
@@ -69,4 +70,24 @@ public class TradeConsr {
}
}
return
map
;
return
map
;
}
}
/**
* 获取购买人数量
*/
public
Map
<
Long
,
GroupMoneyDto
>
getSpeQrGroupSaleMoney
(
SpeWechatGroupDto
speWechatGroupDto
)
throws
BizException
{
Map
<
Long
,
GroupMoneyDto
>
map
=
new
HashMap
<>();
if
(
speWechatGroupDto
==
null
)
{
return
map
;
}
try
{
ResponseEntity
<
ResponseDto
<
Map
<
Long
,
GroupMoneyDto
>>>
responseEntityP
=
orderFormService
.
getSpeQrGroupSaleMoney
(
speWechatGroupDto
);
map
=
ResponseHandleUtil
.
parseMap
(
responseEntityP
,
Long
.
class
,
GroupMoneyDto
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"获取交易额.[获取购买人数量]:"
+
e
.
getMessage
(),
e
);
}
if
(
map
==
null
)
{
map
=
new
HashMap
<>();
}
return
map
;
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/impl/BookGroupBizImpl.java
View file @
9e6a5db0
...
@@ -2,6 +2,7 @@ package com.pcloud.book.group.biz.impl;
...
@@ -2,6 +2,7 @@ package com.pcloud.book.group.biz.impl;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.pcloud.appcenter.app.dto.AppDto
;
import
com.pcloud.appcenter.app.dto.AppDto
;
import
com.pcloud.audioapp.audioLesson.service.AudioLessonService
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.book.biz.BookBiz
;
import
com.pcloud.book.book.biz.BookBiz
;
import
com.pcloud.book.book.dao.BookDao
;
import
com.pcloud.book.book.dao.BookDao
;
...
@@ -44,15 +45,20 @@ import com.pcloud.common.utils.ResponseHandleUtil;
...
@@ -44,15 +45,20 @@ import com.pcloud.common.utils.ResponseHandleUtil;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.common.utils.zip.CompressUtils
;
import
com.pcloud.common.utils.zip.CompressUtils
;
import
com.pcloud.facade.tradecenter.dto.GroupMoneyDto
;
import
com.pcloud.facade.tradecenter.dto.GroupMoneyDto
;
import
com.pcloud.facade.tradecenter.dto.SpeWechatGroupDto
;
import
com.pcloud.facade.tradecenter.dto.WechatGroupDto
;
import
com.pcloud.facade.tradecenter.dto.WechatGroupDto
;
import
com.pcloud.labelcenter.label.service.LabelService
;
import
com.pcloud.labelcenter.label.service.LabelService
;
import
com.pcloud.liveapp.live.dto.ProductIdSearchDto
;
import
com.pcloud.liveapp.live.service.TimeTableService
;
import
com.pcloud.resourcecenter.product.dto.AddAppProductParamDTO
;
import
com.pcloud.resourcecenter.product.dto.AddAppProductParamDTO
;
import
com.pcloud.resourcecenter.product.dto.ProductDto
;
import
com.pcloud.resourcecenter.product.dto.ProductDto
;
import
com.pcloud.resourcecenter.product.dto.ProductTypeDto
;
import
com.pcloud.resourcecenter.product.dto.ProductTypeDto
;
import
com.pcloud.resourcecenter.product.dto.SpecificationDto
;
import
com.pcloud.resourcecenter.product.dto.UpdateAppProductParamDTO
;
import
com.pcloud.resourcecenter.product.dto.UpdateAppProductParamDTO
;
import
com.pcloud.resourcecenter.product.entity.Product
;
import
com.pcloud.resourcecenter.product.entity.Product
;
import
com.pcloud.resourcecenter.product.service.ProductService
;
import
com.pcloud.resourcecenter.product.service.ProductService
;
import
com.pcloud.settlementcenter.record.service.SettlementService
;
import
com.pcloud.settlementcenter.record.service.SettlementService
;
import
com.pcloud.videolesson.schedule.service.ScheduleService
;
import
com.pcloud.wechatgroup.group.service.GroupMemberService
;
import
com.pcloud.wechatgroup.group.service.GroupMemberService
;
import
org.apache.commons.collections.MapUtils
;
import
org.apache.commons.collections.MapUtils
;
...
@@ -66,6 +72,7 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -66,6 +72,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
...
@@ -126,6 +133,12 @@ public class BookGroupBizImpl implements BookGroupBiz {
...
@@ -126,6 +133,12 @@ public class BookGroupBizImpl implements BookGroupBiz {
private
MainLineConsr
mainLineConsr
;
private
MainLineConsr
mainLineConsr
;
@Autowired
@Autowired
private
MessageBiz
messageBiz
;
private
MessageBiz
messageBiz
;
@Autowired
private
AudioLessonService
audioLessonService
;
@Autowired
private
ScheduleService
scheduleService
;
@Autowired
private
TimeTableService
timeTableService
;
/**
/**
...
@@ -632,9 +645,176 @@ public class BookGroupBizImpl implements BookGroupBiz {
...
@@ -632,9 +645,176 @@ public class BookGroupBizImpl implements BookGroupBiz {
appStatisticsDTO
.
setBuyRate
(
new
BigDecimal
(
buyCount
.
doubleValue
()
/
clickCount
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
appStatisticsDTO
.
setBuyRate
(
new
BigDecimal
(
buyCount
.
doubleValue
()
/
clickCount
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
}
}
//处理音频、视频、直播课的逻辑
dealOtherSale
(
appStatisticsDTOS
,
productDtoMap
,
bookGroupId
,
qrcodeId
,
partyId
);
return
pageBeanNew
;
return
pageBeanNew
;
}
}
@ParamLog
(
"处理音频、视频、直播课的逻辑"
)
private
void
dealOtherSale
(
List
<
AppStatisticsDTO
>
appStatisticsDTOS
,
Map
<
Long
,
ProductDto
>
productDtoMap
,
Long
bookGroupId
,
Long
qrcodeId
,
Long
partyId
)
{
if
(
productDtoMap
==
null
||
productDtoMap
.
values
()
==
null
||
productDtoMap
.
values
().
isEmpty
())
{
return
;
}
//视频课,音频课,直播课特殊处理
List
<
Long
>
videoProductIds
=
new
ArrayList
<>();
List
<
Long
>
audioProductIds
=
new
ArrayList
<>();
List
<
Long
>
liveProductIds
=
new
ArrayList
<>();
List
<
ProductDto
>
productDtos
=
new
ArrayList
<>(
productDtoMap
.
values
());
if
(!
ListUtils
.
isEmpty
(
productDtos
))
{
for
(
ProductDto
productDto
:
productDtos
)
{
ProductTypeDto
productTypeDto
=
productDto
.
getProductTypeDto
();
String
productTypeCode
=
""
;
if
(
productTypeDto
!=
null
){
productTypeCode
=
productTypeDto
.
getTypeCode
();
}
String
[]
videoTypes
=
{
"VIDEO_COURSE"
,
"VIDEO_SCHEDULE"
};
if
(
Arrays
.
asList
(
videoTypes
).
contains
(
productTypeCode
))
{
videoProductIds
.
add
(
productDto
.
getProductId
());
}
String
[]
audioTypes
=
{
"AUDIOAPP"
,
"AUDIO_RESOURCE"
,
"AUDIO_SCHEDULE"
,
"AUDIO_COURSE"
};
if
(
Arrays
.
asList
(
audioTypes
).
contains
(
productTypeCode
))
{
audioProductIds
.
add
(
productDto
.
getProductId
());
}
String
[]
liveTypes
=
{
"LIVE"
,
"SCHEDULE"
};
if
(
Arrays
.
asList
(
liveTypes
).
contains
(
productTypeCode
))
{
liveProductIds
.
add
(
productDto
.
getProductId
());
}
}
}
Map
<
Long
,
List
<
Long
>>
videoPProductMapIds
=
new
HashMap
<>();
Map
<
Long
,
List
<
Long
>>
audioPProductMapIds
=
new
HashMap
<>();
Map
<
Long
,
List
<
Long
>>
livePProductMapIds
=
new
HashMap
<>();
//视频课
if
(!
ListUtils
.
isEmpty
(
videoProductIds
))
{
videoPProductMapIds
=
ResponseHandleUtil
.
parseMapList
(
scheduleService
.
getCourseProductIdByIds
(
videoProductIds
,
"PRODUCT"
),
Long
.
class
,
Long
.
class
);
}
//音频课
if
(!
ListUtils
.
isEmpty
(
audioProductIds
))
{
audioPProductMapIds
=
ResponseHandleUtil
.
parseMapList
(
audioLessonService
.
getProIdsByIds
(
audioProductIds
,
"PRODUCT"
),
Long
.
class
,
Long
.
class
);
}
//直播课
if
(!
ListUtils
.
isEmpty
(
liveProductIds
))
{
ProductIdSearchDto
productIdSearchDto
=
new
ProductIdSearchDto
();
productIdSearchDto
.
setIds
(
liveProductIds
);
productIdSearchDto
.
setType
(
"PRODUCT"
);
livePProductMapIds
=
ResponseHandleUtil
.
parseMapList
(
timeTableService
.
getCoursePidsUnderTable
(
productIdSearchDto
),
Long
.
class
,
Long
.
class
);
}
List
<
Long
>
valProductIds
=
new
ArrayList
<>();
fillProductIdsFromLL
(
valProductIds
,
videoPProductMapIds
);
fillProductIdsFromLL
(
valProductIds
,
audioPProductMapIds
);
fillProductIdsFromLL
(
valProductIds
,
livePProductMapIds
);
if
(!
ListUtils
.
isEmpty
(
valProductIds
)){
//调交易中心获取交易额信息
WechatGroupDto
wechatGroupDtoP
=
new
WechatGroupDto
();
wechatGroupDtoP
.
setBookGroupId
(
bookGroupId
);
wechatGroupDtoP
.
setIds
(
valProductIds
);
wechatGroupDtoP
.
setPartyId
(
partyId
);
wechatGroupDtoP
.
setType
(
"PRODUCT"
);
wechatGroupDtoP
.
setQrcodeId
(
qrcodeId
);
Map
<
Long
,
GroupMoneyDto
>
productSaleMap
=
tradeConsr
.
getQrGroupSaleMoney
(
wechatGroupDtoP
);
SpeWechatGroupDto
speWechatGroupDto
=
new
SpeWechatGroupDto
();
speWechatGroupDto
.
setBookGroupId
(
bookGroupId
);
speWechatGroupDto
.
setPartyId
(
partyId
);
speWechatGroupDto
.
setQrcodeId
(
qrcodeId
);
Map
<
Long
,
List
<
Long
>>
map
=
new
HashMap
<>();
map
.
putAll
(
videoPProductMapIds
);
map
.
putAll
(
audioPProductMapIds
);
map
.
putAll
(
livePProductMapIds
);
speWechatGroupDto
.
setProductIdMap
(
map
);
Map
<
Long
,
GroupMoneyDto
>
forBuyCountMap
=
tradeConsr
.
getSpeQrGroupSaleMoney
(
speWechatGroupDto
);
Map
<
Long
,
Double
>
proSaleMap
=
new
HashMap
<>();
if
(
productSaleMap
.
values
()
!=
null
&&
!
productSaleMap
.
values
().
isEmpty
())
{
dealSale
(
videoProductIds
,
videoPProductMapIds
,
productSaleMap
,
proSaleMap
);
dealSale
(
audioProductIds
,
audioPProductMapIds
,
productSaleMap
,
proSaleMap
);
dealSale
(
liveProductIds
,
livePProductMapIds
,
productSaleMap
,
proSaleMap
);
for
(
AppStatisticsDTO
appStatisticsDTO
:
appStatisticsDTOS
)
{
Long
id
=
appStatisticsDTO
.
getServeId
();
String
type
=
appStatisticsDTO
.
getServeType
();
if
(
"PRODUCT"
.
equalsIgnoreCase
(
type
))
{
Integer
toAddCount
=
0
;
GroupMoneyDto
groupMoneyDto
=
forBuyCountMap
.
get
(
id
);
if
(
groupMoneyDto
!=
null
&&
groupMoneyDto
.
getSaleCount
()
!=
null
)
{
toAddCount
=
groupMoneyDto
.
getSaleCount
().
intValue
();
}
addProductSale
(
id
,
productDtoMap
,
proSaleMap
,
toAddCount
,
appStatisticsDTO
);
}
}
}
}
}
private
void
addProductSale
(
Long
id
,
Map
<
Long
,
ProductDto
>
productDtoMap
,
Map
<
Long
,
Double
>
proSaleMap
,
Integer
toAddCount
,
AppStatisticsDTO
appStatisticsDTO
)
{
ProductDto
productDto
=
productDtoMap
.
get
(
id
);
String
[]
videoTypes
=
{
"VIDEO_COURSE"
,
"VIDEO_SCHEDULE"
};
String
[]
audioTypes
=
{
"AUDIOAPP"
,
"AUDIO_RESOURCE"
,
"AUDIO_SCHEDULE"
,
"AUDIO_COURSE"
};
String
[]
liveTypes
=
{
"LIVE"
,
"SCHEDULE"
};
String
typeCode
=
""
;
if
(
productDto
!=
null
&&
productDto
.
getProductTypeDto
()
!=
null
)
{
typeCode
=
productDto
.
getProductTypeDto
().
getTypeCode
();
}
if
(
productDto
!=
null
&&
(
Arrays
.
asList
(
videoTypes
).
contains
(
typeCode
)
||
Arrays
.
asList
(
audioTypes
).
contains
(
typeCode
)
||
Arrays
.
asList
(
liveTypes
).
contains
(
typeCode
)))
{
Double
toAdd
=
proSaleMap
.
get
(
id
);
if
(
toAdd
!=
null
)
{
Double
oldSale
=
appStatisticsDTO
.
getSaleAmount
();
if
(
oldSale
==
null
)
{
oldSale
=
0
D
;
}
appStatisticsDTO
.
setSaleAmount
(
oldSale
+
toAdd
);
}
if
(
toAddCount
!=
null
)
{
Integer
oldBuy
=
appStatisticsDTO
.
getBuyCount
();
if
(
oldBuy
==
null
)
{
oldBuy
=
0
;
}
appStatisticsDTO
.
setBuyCount
(
oldBuy
+
toAddCount
);
Integer
buyCount
=
appStatisticsDTO
.
getBuyCount
();
Integer
clickCount
=
appStatisticsDTO
.
getClickCount
();
//重新设置购买率
if
(
buyCount
==
null
||
buyCount
==
0
||
clickCount
==
null
||
clickCount
==
0
)
{
appStatisticsDTO
.
setBuyRate
(
0
D
);
}
else
{
appStatisticsDTO
.
setBuyRate
(
new
BigDecimal
(
buyCount
.
doubleValue
()
/
clickCount
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
}
}
private
void
dealSale
(
List
<
Long
>
ids
,
Map
<
Long
,
List
<
Long
>>
productMapIds
,
Map
<
Long
,
GroupMoneyDto
>
productSaleMap
,
Map
<
Long
,
Double
>
saleMap
)
{
if
(!
ListUtils
.
isEmpty
(
ids
))
{
for
(
Long
id
:
ids
)
{
List
<
Long
>
productIds
=
productMapIds
.
get
(
id
);
if
(!
ListUtils
.
isEmpty
(
productIds
))
{
Double
saleMoney
=
0
D
;
Long
saleCount
=
0L
;
for
(
Long
productId
:
productIds
)
{
GroupMoneyDto
groupMoneyDto
=
productSaleMap
.
get
(
productId
);
if
(
groupMoneyDto
!=
null
)
{
if
(
groupMoneyDto
.
getSaleMoney
()
!=
null
)
{
saleMoney
=
saleMoney
+
groupMoneyDto
.
getSaleMoney
();
}
if
(
groupMoneyDto
.
getSaleCount
()
!=
null
)
{
saleCount
=
saleCount
+
groupMoneyDto
.
getSaleCount
();
}
}
}
saleMap
.
put
(
id
,
saleMoney
);
}
}
}
}
private
void
fillProductIdsFromLL
(
List
<
Long
>
productIds
,
Map
<
Long
,
List
<
Long
>>
map
){
if
(
map
!=
null
&&
!
map
.
values
().
isEmpty
())
{
List
<
List
<
Long
>>
ll
=
new
ArrayList
<>(
map
.
values
());
for
(
List
<
Long
>
l
:
ll
)
{
if
(!
ListUtils
.
isEmpty
(
l
))
{
productIds
.
addAll
(
l
);
}
}
}
}
@Override
@Override
public
void
exportGroupQrcode4Adviser
(
Map
<
String
,
Object
>
paramMap
,
Long
adviserId
)
{
public
void
exportGroupQrcode4Adviser
(
Map
<
String
,
Object
>
paramMap
,
Long
adviserId
)
{
EXECUTOR_SINGLE_SERVICE
.
execute
(()
->
{
EXECUTOR_SINGLE_SERVICE
.
execute
(()
->
{
...
...
pom.xml
View file @
9e6a5db0
...
@@ -125,7 +125,9 @@
...
@@ -125,7 +125,9 @@
<pcloud-facade-labelcenter.version>
2.1.0-RELEASE
</pcloud-facade-labelcenter.version>
<pcloud-facade-labelcenter.version>
2.1.0-RELEASE
</pcloud-facade-labelcenter.version>
<pcloud-facade-wechatgroup.version>
2.1.0-RELEASE
</pcloud-facade-wechatgroup.version>
<pcloud-facade-wechatgroup.version>
2.1.0-RELEASE
</pcloud-facade-wechatgroup.version>
<pcloud-facade-promotion.version>
2.1.0-RELEASE
</pcloud-facade-promotion.version>
<pcloud-facade-promotion.version>
2.1.0-RELEASE
</pcloud-facade-promotion.version>
<pcloud-facade-audioapp.version>
2.1.0-RELEASE
</pcloud-facade-audioapp.version>
<pcloud-facade-videolesson.version>
2.1.0-RELEASE
</pcloud-facade-videolesson.version>
<pcloud-facade-liveapp.version>
2.1.0-RELEASE
</pcloud-facade-liveapp.version>
</properties>
</properties>
<dependencyManagement>
<dependencyManagement>
...
...
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