记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
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
董敬伟
liquidnet-bus-v1
Commits
2c0c89db
Commit
2c0c89db
authored
Oct 21, 2022
by
Administrator
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'pre' into 'master'
Pre See merge request
!320
parents
65cb2b38
b1c59055
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
226 additions
and
47 deletions
+226
-47
GoblinGoodsAnticipateValueVo.java
...ce/goblin/dto/manage/vo/GoblinGoodsAnticipateValueVo.java
+2
-0
GoblinListCollectVo.java
.../liquidnet/service/goblin/dto/vo/GoblinListCollectVo.java
+2
-0
GoblinMixDetailsVo.java
...m/liquidnet/service/goblin/dto/vo/GoblinMixDetailsVo.java
+2
-0
SweetYbEnrollParam.java
...liquidnet/service/sweet/dto/param/SweetYbEnrollParam.java
+5
-0
SweetYbActivityController.java
.../controller/zhengzai/sweet/SweetYbActivityController.java
+10
-7
bannerList.html
.../src/main/resources/templates/zhengzai/yb/bannerList.html
+1
-1
creatAndEdit.html
...rc/main/resources/templates/zhengzai/yb/creatAndEdit.html
+4
-0
SweetYbActivityExportVo.java
...ent/admin/zhengzai/sweet/dto/SweetYbActivityExportVo.java
+7
-1
ISweetYbActivityService.java
...admin/zhengzai/sweet/service/ISweetYbActivityService.java
+1
-1
SweetYbActivityServiceImpl.java
...engzai/sweet/service/impl/SweetYbActivityServiceImpl.java
+11
-22
SweetYbEnroll.java
...ava/com/liquidnet/service/sweet/entity/SweetYbEnroll.java
+5
-0
GoblinStoreZhengzaiServiceImpl.java
...e/goblin/service/impl/GoblinStoreZhengzaiServiceImpl.java
+10
-1
GoblinOrderServiceImpl.java
...et/service/order/service/impl/GoblinOrderServiceImpl.java
+14
-4
MixOrderServiceImpl.java
...idnet/service/order/service/impl/MixOrderServiceImpl.java
+1
-1
GoblinNftOrderUtils.java
...om/liquidnet/service/order/utils/GoblinNftOrderUtils.java
+137
-1
db_sweetsugar_structure.sql
.../liquidnet-service-sweet/docu/db_sweetsugar_structure.sql
+2
-0
SweetYbEnrollServiceImpl.java
.../service/sweet/service/impl/SweetYbEnrollServiceImpl.java
+11
-7
sqlmap.properties
...uidnet-service-sweet/src/main/resources/sqlmap.properties
+1
-1
No files found.
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/manage/vo/GoblinGoodsAnticipateValueVo.java
View file @
2c0c89db
package
com
.
liquidnet
.
service
.
goblin
.
dto
.
manage
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.service.goblin.dto.manage.GoblinGoodsAnticipateValueAddParam
;
import
io.swagger.annotations.ApiModelProperty
;
...
...
@@ -18,6 +19,7 @@ import java.time.LocalDateTime;
* @since 2022-04-08
*/
@Data
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
GoblinGoodsAnticipateValueVo
implements
Cloneable
{
private
static
final
long
serialVersionUID
=
1L
;
...
...
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/vo/GoblinListCollectVo.java
View file @
2c0c89db
package
com
.
liquidnet
.
service
.
goblin
.
dto
.
vo
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -8,6 +9,7 @@ import java.math.BigDecimal;
import
java.time.LocalDateTime
;
@Data
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
GoblinListCollectVo
implements
Serializable
,
Cloneable
{
@ApiModelProperty
(
value
=
"listId"
)
private
String
listId
;
...
...
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/vo/GoblinMixDetailsVo.java
View file @
2c0c89db
package
com
.
liquidnet
.
service
.
goblin
.
dto
.
vo
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.service.goblin.param.GoblinMixDetailsParam
;
...
...
@@ -13,6 +14,7 @@ import java.util.List;
@Data
@EqualsAndHashCode
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
GoblinMixDetailsVo
implements
Serializable
,
Cloneable
{
@ApiModelProperty
(
position
=
0
,
value
=
"活动id"
)
private
String
mixId
;
...
...
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/dto/param/SweetYbEnrollParam.java
View file @
2c0c89db
...
...
@@ -46,4 +46,9 @@ public class SweetYbEnrollParam implements Serializable {
@ApiModelProperty
(
position
=
19
,
required
=
false
,
value
=
"活动id"
,
example
=
"0"
)
private
String
activityId
;
@ApiModelProperty
(
position
=
20
,
required
=
false
,
value
=
"平均年龄"
,
example
=
"0"
)
private
Integer
age
;
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/sweet/SweetYbActivityController.java
View file @
2c0c89db
package
com
.
liquidnet
.
client
.
admin
.
web
.
controller
.
zhengzai
.
sweet
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.client.admin.common.core.controller.BaseController
;
import
com.liquidnet.client.admin.common.core.domain.AjaxResult
;
import
com.liquidnet.client.admin.common.core.page.TableDataInfo
;
import
com.liquidnet.client.admin.common.utils.poi.ExcelUtil
;
...
...
@@ -35,7 +37,7 @@ import java.util.List;
@Api
(
tags
=
"YB活动管理"
)
@RestController
@RequestMapping
(
"/sweet/activity"
)
public
class
SweetYbActivityController
{
public
class
SweetYbActivityController
extends
BaseController
{
@Autowired
ISweetYbActivityService
sweetYbActivityService
;
...
...
@@ -80,12 +82,13 @@ public class SweetYbActivityController {
@ApiOperation
(
"活动列表"
)
@ResponseBody
public
TableDataInfo
aList
(
SweetYbActivityListParam
param
)
{
PageInfo
<
SweetYbActivityVo
>
result
=
sweetYbActivityService
.
aList
(
param
);
TableDataInfo
rspData
=
new
TableDataInfo
();
rspData
.
setCode
(
0
);
rspData
.
setRows
(
result
.
getList
());
rspData
.
setTotal
(
result
.
getTotal
());
return
rspData
;
PageHelper
.
startPage
(
param
.
getPageNum
(),
param
.
getPageSize
());
List
<
SweetYbActivity
>
result
=
sweetYbActivityService
.
aList
(
param
);
// TableDataInfo rspData = new TableDataInfo();
// rspData.setCode(0);
// rspData.setRows(result.getList());
// rspData.setTotal(result.getTotal());
return
getDataTable
(
result
);
}
@PostMapping
(
"/export"
)
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/yb/bannerList.html
View file @
2c0c89db
...
...
@@ -117,7 +117,7 @@
// onCheckAll: onCheckAll,
sortName
:
"createdAt"
,
sortOrder
:
"desc"
,
modalName
:
"
活动
"
,
modalName
:
"
本活动名单
"
,
columns
:
[
{
field
:
'cover'
,
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/yb/creatAndEdit.html
View file @
2c0c89db
...
...
@@ -173,6 +173,10 @@
$
(
this
).
fileinput
(
"upload"
);
})
.
on
(
"fileuploaded"
,
function
(
event
,
data
)
{
//上传回调事件
console
.
log
(
event
,
data
,
'????'
)
if
(
data
.
response
.
code
==
1
)
{
return
layer
.
msg
(
data
.
response
.
message
)
}
let
showPicture
=
'https://img.zhengzai.tv/'
+
data
.
response
.
data
.
ossPath
;
$
(
"#viewImg"
).
attr
(
'src'
,
showPicture
)
})
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/sweet/dto/SweetYbActivityExportVo.java
View file @
2c0c89db
...
...
@@ -11,12 +11,16 @@ import java.time.format.DateTimeFormatter;
@Data
public
class
SweetYbActivityExportVo
implements
Serializable
,
Cloneable
{
@Excel
(
name
=
"活动名称"
,
cellType
=
Excel
.
ColumnType
.
STRING
)
private
String
activityName
;
@Excel
(
name
=
"联系电话"
,
cellType
=
Excel
.
ColumnType
.
STRING
)
private
String
contactTell
;
@Excel
(
name
=
"联系微信"
,
cellType
=
Excel
.
ColumnType
.
STRING
)
private
String
contactWechat
;
@Excel
(
name
=
"乐队名称"
,
cellType
=
Excel
.
ColumnType
.
STRING
)
private
String
nickname
;
@Excel
(
name
=
"平均年龄"
,
cellType
=
Excel
.
ColumnType
.
STRING
)
private
String
age
;
@Excel
(
name
=
"风格"
,
cellType
=
Excel
.
ColumnType
.
STRING
)
private
String
style
;
@Excel
(
name
=
"图片地址"
,
cellType
=
Excel
.
ColumnType
.
STRING
)
...
...
@@ -42,7 +46,9 @@ public class SweetYbActivityExportVo implements Serializable, Cloneable {
return
new
SweetYbActivityExportVo
();
}
public
SweetYbActivityExportVo
copyOrderExportVo
(
SweetYbEnroll
source
)
{
public
SweetYbActivityExportVo
copyOrderExportVo
(
SweetYbEnroll
source
,
String
name
)
{
this
.
setActivityName
(
name
);
this
.
setAge
(
source
.
getAge
()+
""
);
this
.
setContactTell
(
source
.
getContactTell
());
this
.
setContactWechat
(
source
.
getContactWechat
());
this
.
setNickname
(
source
.
getNickname
());
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/sweet/service/ISweetYbActivityService.java
View file @
2c0c89db
...
...
@@ -31,7 +31,7 @@ public interface ISweetYbActivityService {
SweetYbActivityVo
aDetails
(
String
activityId
);
PageInfo
<
SweetYbActivityVo
>
aList
(
SweetYbActivityListParam
param
);
List
<
SweetYbActivity
>
aList
(
SweetYbActivityListParam
param
);
AjaxResult
aUpdate
(
SweetYbActivityParam
param
);
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/sweet/service/impl/SweetYbActivityServiceImpl.java
View file @
2c0c89db
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
sweet
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.client.admin.common.core.domain.AjaxResult
;
import
com.liquidnet.client.admin.common.exception.BusinessException
;
import
com.liquidnet.client.admin.zhengzai.kylin.dto.OrderDetailedExportVo
;
import
com.liquidnet.client.admin.zhengzai.sweet.dto.SweetYbActivityExportVo
;
import
com.liquidnet.client.admin.zhengzai.sweet.service.ISweetAdminQrCodeService
;
import
com.liquidnet.client.admin.zhengzai.sweet.service.ISweetYbActivityService
;
import
com.liquidnet.client.admin.zhengzai.sweet.utils.SweetRedisAdminUtils
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.service.kylin.dao.OrderExportDao
;
import
com.liquidnet.service.kylin.dao.PerformanceAdminListDao
;
import
com.liquidnet.service.kylin.dto.param.CreateActiveQrCodeParam
;
import
com.liquidnet.service.sweet.dto.param.admin.SweetYbActivityListParam
;
import
com.liquidnet.service.sweet.dto.param.admin.SweetYbActivityParam
;
import
com.liquidnet.service.sweet.dto.vo.SweetYbActivityVo
;
import
com.liquidnet.service.sweet.entity.SweetQrCode
;
import
com.liquidnet.service.sweet.entity.SweetYbActivity
;
import
com.liquidnet.service.sweet.entity.SweetYbEnroll
;
import
com.liquidnet.service.sweet.mapper.SweetQrCodeMapper
;
import
com.liquidnet.service.sweet.mapper.SweetYbActivityMapper
;
import
com.liquidnet.service.sweet.mapper.SweetYbEnrollMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
static
com
.
liquidnet
.
commons
.
lang
.
util
.
DateUtil
.
DTF_YMD_HMS
;
...
...
@@ -84,16 +73,15 @@ public class SweetYbActivityServiceImpl implements ISweetYbActivityService {
}
@Override
public
PageInfo
<
SweetYbActivityVo
>
aList
(
SweetYbActivityListParam
param
)
{
PageInfo
<
SweetYbActivityVo
>
pageInfo
;
List
<
SweetYbActivity
>
data
=
sweetYbActivityMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
SweetYbActivity
.
class
).
like
(
SweetYbActivity:
:
getTitle
,
param
.
getTitle
()));
List
<
SweetYbActivityVo
>
voList
=
new
ArrayList
<>();
for
(
SweetYbActivity
entity
:
data
)
{
SweetYbActivityVo
vo
=
initVo
(
entity
);
voList
.
add
(
vo
);
}
pageInfo
=
new
PageInfo
(
voList
);
return
pageInfo
;
public
List
<
SweetYbActivity
>
aList
(
SweetYbActivityListParam
param
)
{
List
<
SweetYbActivity
>
data
=
sweetYbActivityMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
SweetYbActivity
.
class
).
like
(
SweetYbActivity:
:
getTitle
,
param
.
getTitle
()).
orderByDesc
(
SweetYbActivity:
:
getCreatedAt
));
// List<SweetYbActivityVo> voList = new ArrayList<>();
// for (SweetYbActivity entity : data) {
// SweetYbActivityVo vo = initVo(entity);
// voList.add(vo);
// }
// pageInfo = new PageInfo(voList);
return
data
;
}
@Override
...
...
@@ -151,10 +139,11 @@ public class SweetYbActivityServiceImpl implements ISweetYbActivityService {
@Override
public
List
<
SweetYbActivityExportVo
>
aExport
(
String
activityId
)
{
try
{
SweetYbActivity
activity
=
sweetYbActivityMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
SweetYbActivity
.
class
).
eq
(
SweetYbActivity:
:
getActivityId
,
activityId
));
List
<
SweetYbEnroll
>
list
=
sweetYbEnrollMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
SweetYbEnroll
.
class
).
eq
(
SweetYbEnroll:
:
getActivityId
,
activityId
));
List
<
SweetYbActivityExportVo
>
voList
=
new
ArrayList
();
for
(
SweetYbEnroll
item
:
list
)
{
voList
.
add
(
SweetYbActivityExportVo
.
getNew
().
copyOrderExportVo
(
item
));
voList
.
add
(
SweetYbActivityExportVo
.
getNew
().
copyOrderExportVo
(
item
,
activity
.
getTitle
()
));
}
return
voList
;
}
catch
(
Exception
e
)
{
...
...
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/java/com/liquidnet/service/sweet/entity/SweetYbEnroll.java
View file @
2c0c89db
...
...
@@ -70,6 +70,11 @@ public class SweetYbEnroll implements Serializable {
*/
private
String
cityName
;
/**
* 平均年龄
*/
private
int
age
;
/**
* 活动id
*/
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/service/impl/GoblinStoreZhengzaiServiceImpl.java
View file @
2c0c89db
...
...
@@ -71,7 +71,16 @@ public class GoblinStoreZhengzaiServiceImpl implements IGoblinStoreZhengzaiServi
if
(
storeInfoVo
==
null
)
{
return
ResponseDto
.
failure
(
"店铺不存在"
);
}
GoblinSelfMarketingVo
marketingVo
=
redisUtils
.
getSelfMarket
(
marketId
);
if
(
marketingVo
.
getStatus
()
==
7
)
{
return
ResponseDto
.
failure
(
"活动已停用"
);
}
//todo
String
storeId
=
storeInfoVo
.
getStoreId
();
GoblinMarketingZhengzaiRelationVo
marketingZhengzaiRelationVo
=
redisUtils
.
getZhengzaiRelation
(
marketId
,
storeId
);
if
(
marketingZhengzaiRelationVo
==
null
)
{
return
ResponseDto
.
failure
(
"未参加活动"
);
}
List
<
GoblinMarketRelationVo
>
relationVo
=
redisUtils
.
getMarketRelation
(
GoblinStatusConst
.
MarketPreStatus
.
MARKET_PRE_ZHENGZAI
.
getValue
(),
marketId
);
List
<
String
>
spuIdList
=
relationVo
.
stream
().
map
(
GoblinMarketRelationVo:
:
getSpuId
).
collect
(
Collectors
.
toList
());
List
<
GoblinZhengzaiGoodVo
>
voList
=
ObjectUtil
.
getGoblinZhengzaiGoodVoArrayList
();
...
...
@@ -124,7 +133,7 @@ public class GoblinStoreZhengzaiServiceImpl implements IGoblinStoreZhengzaiServi
//redis
redisUtils
.
setGoblinOrder
(
storeOrderVo
.
getOrderId
(),
storeOrderVo
);
sqlDataOrder
.
add
(
new
Object
[]{
storeOrderVo
.
getZhengzaiStatus
(),
storeOrderVo
.
getStatus
(),
now
,
storeOrderVo
.
getOrderId
(),
now
,
now
storeOrderVo
.
getZhengzaiStatus
(),
storeOrderVo
.
getStatus
(),
now
,
storeOrderVo
.
getOrderId
(),
now
,
now
});
}
//mysql
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/GoblinOrderServiceImpl.java
View file @
2c0c89db
...
...
@@ -485,12 +485,22 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
payInnerResultVo
.
setPrice
(
BigDecimal
.
valueOf
(
0
));
payInnerResultVo
.
setPayType
(
preParam
.
getPayType
());
}
else
if
(
preParam
.
getPayType
().
equals
(
"huifu"
))
{
isFree
=
true
;
preParam
.
setPayType
(
"huifu"
);
payCode
=
"HUIFU_PAY_CODE"
;
// isFree = true;
// preParam.setPayType("huifu");
// payCode = "HUIFU_PAY_CODE";
// payInnerResultVo = GoblinPayInnerResultVo.getNew();
// payInnerResultVo.setPrice(preParam.getPriceActual());
// payInnerResultVo.setPayType(preParam.getPayType());
payInnerResultVo
=
GoblinPayInnerResultVo
.
getNew
();
payInnerResultVo
.
setPrice
(
preParam
.
getPriceActual
());
payInnerResultVo
.
setCode
(
"HUIFU_PAY_CODE"
);
payInnerResultVo
.
setOrderCode
(
preParam
.
getOrderMasterCode
());
payInnerResultVo
.
setPayData
(
null
);
payInnerResultVo
.
setPayType
(
preParam
.
getPayType
());
payInnerResultVo
.
setPrice
(
preParam
.
getPriceActual
());
payInnerResultVo
.
setMsg
(
"汇付支付"
);
payCode
=
payInnerResultVo
.
getCode
();
payInnerResultVo
.
setShowUrl
(
preParam
.
getShowUrl
());
payInnerResultVo
.
setReturnUrl
(
preParam
.
getReturnUrl
());
}
else
{
isFree
=
true
;
preParam
.
setPayType
(
"FREE"
);
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/MixOrderServiceImpl.java
View file @
2c0c89db
...
...
@@ -129,7 +129,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
initStock
(
canBuyIds
,
mixId
,
isUseLimit
,
uid
);
return
ResponseDto
.
failure
(
"该商品SPU不存在~"
);
}
else
{
GoblinGoodsSkuInfoVo
boxSkuInfo
=
nftOrderUtils
.
lotteryDraw
(
skuIdList
,
itemVo
.
getCount
(),
nt
,
mixId
);
GoblinGoodsSkuInfoVo
boxSkuInfo
=
nftOrderUtils
.
lotteryDraw
UnStatus
(
skuIdList
,
itemVo
.
getCount
(),
nt
,
mixId
);
if
(
null
==
boxSkuInfo
)
{
return
ResponseDto
.
failure
(
"库存不足啦~"
);
}
else
{
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/utils/GoblinNftOrderUtils.java
View file @
2c0c89db
...
...
@@ -488,6 +488,37 @@ public class GoblinNftOrderUtils {
}
}
// 获取盲盒下藏品的库存 各种状态下不能算库存的排除掉 不考虑状态
public
int
getSkuAllStatusStockUnStatus
(
String
listId
,
GoblinGoodsSkuInfoVo
info
)
{
if
(
info
!=
null
&&
(
null
==
info
.
getHitRatio
()
||
info
.
getHitRatio
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
)
{
// 可以返回库存
// 外面只有盲盒才能请求进来 里面只有不是分批购才判断盲盒里藏品的开售时间
if
(
null
==
listId
)
{
return
goblinRedisUtils
.
getSkuStock
(
listId
,
info
.
getSkuId
());
}
else
{
return
goblinRedisUtils
.
getSkuStock
(
listId
,
info
.
getSkuId
());
}
}
else
{
// 不计入库存
return
0
;
}
}
//不考虑状态
public
boolean
getSkuAllStatusShowUnStatus
(
GoblinGoodsSkuInfoVo
info
)
{
if
(
info
!=
null
&&
info
.
getSkuType
()
==
1
&&
info
.
getDelFlg
().
equals
(
"0"
)
&&
((
info
.
getUnbox
().
equals
(
"0"
)
&&
info
.
getUpchain
()
==
1
)
||
info
.
getUnbox
().
equals
(
"1"
))
)
{
return
true
;
}
else
{
return
false
;
}
}
public
GoblinGoodsSkuInfoVo
lotteryDraw
(
List
<
String
>
skuIdList
,
int
number
,
LocalDateTime
nowTime
,
String
listId
)
{
// private HashMap<String, Object> lotteryDraw(List<String> skuIdList, int number, LocalDateTime nowTime) {
try
{
...
...
@@ -578,7 +609,112 @@ public class GoblinNftOrderUtils {
// String endListId = newListIds.get(index);
// 判断库存
int
surplusGeneral
=
goblinRedisUtils
.
decrSkuStock
(
listId
,
goodsSkuInfoVo
.
getSkuId
(),
number
);
log
.
error
(
"剩余 skuId = "
+
surplusGeneral
);
log
.
error
(
"剩余 skuId = "
+
surplusGeneral
);
if
(
surplusGeneral
<
0
)
{
goblinRedisUtils
.
incrSkuStock
(
listId
,
goodsSkuInfoVo
.
getSkuId
(),
number
);
return
lotteryDraw
(
skuIdList
,
number
,
nowTime
,
listId
);
}
else
{
// HashMap<String, Object> map = CollectionUtil.mapStringObject();
// map.put("goodsSkuInfoVo", goodsSkuInfoVo);
// map.put("listId", endListId);
// return map;
return
goodsSkuInfoVo
;
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"NFT下单-抽盲盒异常"
,
e
);
return
null
;
}
}
// 不判断状态
public
GoblinGoodsSkuInfoVo
lotteryDrawUnStatus
(
List
<
String
>
skuIdList
,
int
number
,
LocalDateTime
nowTime
,
String
listId
)
{
try
{
ArrayList
<
GoblinGoodsSkuInfoVo
>
skuInfoVos
=
ObjectUtil
.
cloneArrayGoblinGoodsSkuInfoListVo
();
for
(
String
kid
:
skuIdList
)
{
HashMap
<
String
,
Object
>
map
=
goblinRedisUtils
.
getGoodsSkuInfoVo
(
nowTime
,
kid
);
GoblinGoodsSkuInfoVo
skuInfoVo
=
(
GoblinGoodsSkuInfoVo
)
map
.
get
(
"vo"
);
// 是盲盒的扔掉
if
(
skuInfoVo
.
getUnbox
().
equals
(
"1"
))
{
continue
;
}
// 不能购买的 没库存的 概率是0的 过滤
if
(
getSkuAllStatusShowUnStatus
(
skuInfoVo
)
&&
getSkuAllStatusStockUnStatus
(
listId
,
skuInfoVo
)
>
0
)
{
skuInfoVos
.
add
(
skuInfoVo
);
}
}
if
(
CollectionUtil
.
isEmpty
(
skuInfoVos
))
{
return
null
;
}
else
{
// 计算总概率 和 剩余没填概率的平均概率
int
size
=
0
;
BigDecimal
sumHitRatio
=
BigDecimal
.
ZERO
;
for
(
GoblinGoodsSkuInfoVo
skuInfoVo
:
skuInfoVos
)
{
if
(
null
==
skuInfoVo
.
getHitRatio
())
{
size
++;
}
else
{
sumHitRatio
=
sumHitRatio
.
add
(
skuInfoVo
.
getHitRatio
());
}
}
/**
* 剔除掉没库存的商品再去算未设置概率商品的平均概率 会导致未设置概率的商品的概率增加
* 如果不剔除掉没库存的商品去算未设置概率商品的平均概率 会导致总概率小于100 如果随机数还是0-100的话就有可能会中奖溢出
* 想保持概率 1.不剔除无库存商品算平均概率 2.随机数最大值为排序后概率的最后一个值
*/
BigDecimal
avgHitRatio
=
BigDecimal
.
ZERO
;
if
(
size
>
0
)
{
// 说明有未设置抽奖概率的
avgHitRatio
=
new
BigDecimal
(
100
).
subtract
(
sumHitRatio
).
divide
(
new
BigDecimal
(
size
),
2
,
RoundingMode
.
HALF_UP
);
}
// 未设置概率的写入概率
ArrayList
<
GoblinGoodsSkuInfoVo
>
newSkuInfoVos
=
ObjectUtil
.
cloneArrayGoblinGoodsSkuInfoListVo
();
// ArrayList<String> newListIds = ObjectUtil.cloneArrayListString();
int
skuListSize
=
skuInfoVos
.
size
();
for
(
int
i
=
0
;
i
<
skuListSize
;
i
++)
{
GoblinGoodsSkuInfoVo
infoVo
=
skuInfoVos
.
get
(
i
);
if
(
null
==
infoVo
.
getHitRatio
()
||
infoVo
.
getHitRatio
().
compareTo
(
BigDecimal
.
ZERO
)
<
0
)
{
/**
* 算所得平均概率是0 即中不了 剔除掉
* 但是这么处理会导致前端页面显示有库存 买的时候显示没有
* 所以要么概率加起来必须100 要么前端计算盲盒总概率的时候也要同样处理
*/
if
(
avgHitRatio
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
continue
;
}
else
{
infoVo
.
setHitRatio
(
avgHitRatio
);
}
}
// 等于0的最终概率就是设置的值 大于0最终的概率是自己的+上面的
if
(
i
>
0
)
{
infoVo
.
setHitRatio
(
skuInfoVos
.
get
(
i
-
1
).
getHitRatio
().
add
(
infoVo
.
getHitRatio
()));
}
newSkuInfoVos
.
add
(
infoVo
);
// newListIds.add(listIds.get(i));
}
if
(
CollectionUtil
.
isEmpty
(
newSkuInfoVos
))
{
log
.
info
(
"该盲盒概率超过100导致不能卖 skuIdList:{}"
,
skuIdList
);
return
null
;
}
// 按照概率排序 按照上面的运算最后一定是最大的不用排序了
// List<GoblinGoodsSkuInfoVo> listSort = newSkuInfoVos.stream().sorted(Comparator.comparing(GoblinGoodsSkuInfoVo::getHitRatio)).collect(Collectors.toList());
List
<
BigDecimal
>
hitRatioList
=
newSkuInfoVos
.
stream
().
map
(
GoblinGoodsSkuInfoVo:
:
getHitRatio
).
collect
(
Collectors
.
toList
());
// 根据区块值来获取抽取到的物品索引
double
nextDouble
=
Math
.
random
();
BigDecimal
nextDoubleNew
=
BigDecimal
.
valueOf
(
nextDouble
);
nextDoubleNew
=
nextDoubleNew
.
multiply
(
hitRatioList
.
get
(
hitRatioList
.
size
()
-
1
)).
setScale
(
4
,
RoundingMode
.
HALF_UP
);
hitRatioList
.
add
(
nextDoubleNew
);
Collections
.
sort
(
hitRatioList
);
int
index
=
hitRatioList
.
indexOf
(
nextDoubleNew
);
GoblinGoodsSkuInfoVo
goodsSkuInfoVo
=
newSkuInfoVos
.
get
(
index
);
// String endListId = newListIds.get(index);
// 判断库存
int
surplusGeneral
=
goblinRedisUtils
.
decrSkuStock
(
listId
,
goodsSkuInfoVo
.
getSkuId
(),
number
);
log
.
error
(
"剩余 skuId = "
+
surplusGeneral
);
if
(
surplusGeneral
<
0
)
{
goblinRedisUtils
.
incrSkuStock
(
listId
,
goodsSkuInfoVo
.
getSkuId
(),
number
);
return
lotteryDraw
(
skuIdList
,
number
,
nowTime
,
listId
);
...
...
liquidnet-bus-service/liquidnet-service-sweet/docu/db_sweetsugar_structure.sql
View file @
2c0c89db
...
...
@@ -512,6 +512,8 @@ alter table sweet_yb_enroll
add
city_name
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'常驻城市名称'
after
universities
;
alter
table
sweet_yb_enroll
add
activity_id
varchar
(
255
)
DEFAULT
'0'
COMMENT
'活动id'
after
city_name
;
alter
table
sweet_yb_enroll
add
age
int
DEFAULT
0
COMMENT
'平均年龄'
after
city_name
;
-- YB活动
drop
TABLE
if
exists
`sweet_yb_activity`
;
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetYbEnrollServiceImpl.java
View file @
2c0c89db
...
...
@@ -15,6 +15,7 @@ import com.liquidnet.service.sweet.service.ISweetYbEnrollService;
import
com.liquidnet.service.sweet.utils.ObjectUtil
;
import
com.liquidnet.service.sweet.utils.QueueUtils
;
import
com.liquidnet.service.sweet.utils.RedisDataUtils
;
import
org.apache.logging.log4j.util.PropertySource
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -47,6 +48,9 @@ public class SweetYbEnrollServiceImpl implements ISweetYbEnrollService {
if
(
param
.
getActivityId
()
==
null
||
param
.
getActivityId
().
equals
(
""
))
{
param
.
setActivityId
(
"0"
);
}
if
(
param
.
getAge
()
==
null
)
{
param
.
setAge
(
0
);
}
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_yb_enroll.insert"
));
...
...
@@ -54,7 +58,7 @@ public class SweetYbEnrollServiceImpl implements ISweetYbEnrollService {
IDGenerator
.
nextSnowId
(),
StringUtil
.
isEmpty
(
param
.
getContactTell
())
?
""
:
param
.
getContactTell
(),
StringUtil
.
isEmpty
(
param
.
getContactWechat
())
?
""
:
param
.
getContactWechat
(),
param
.
getNickname
(),
param
.
getStyle
(),
param
.
getImgUrl
(),
param
.
getAudioUrl
(),
StringUtil
.
isEmpty
(
param
.
getUniversities
())
?
""
:
param
.
getUniversities
(),
StringUtil
.
isEmpty
(
param
.
getCityName
())
?
""
:
param
.
getCityName
(),
param
.
getActivityId
()
StringUtil
.
isEmpty
(
param
.
getCityName
())
?
""
:
param
.
getCityName
(),
param
.
getActivityId
()
,
param
.
getAge
()
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_ANSWER_INSERT
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
...
...
@@ -69,18 +73,18 @@ public class SweetYbEnrollServiceImpl implements ISweetYbEnrollService {
LocalDateTime
now
=
LocalDateTime
.
now
();
for
(
String
id
:
list
)
{
SweetYbActivityVo
vo
=
redisDataUtils
.
getSweetYbActivityVo
(
id
);
LocalDateTime
st
=
LocalDateTime
.
parse
(
vo
.
getStartTime
(),
DTF_YMD_HMS
);
LocalDateTime
et
=
LocalDateTime
.
parse
(
vo
.
getEndTime
(),
DTF_YMD_HMS
);
if
(
now
.
isAfter
(
et
))
{
LocalDateTime
st
=
LocalDateTime
.
parse
(
vo
.
getStartTime
(),
DTF_YMD_HMS
);
LocalDateTime
et
=
LocalDateTime
.
parse
(
vo
.
getEndTime
(),
DTF_YMD_HMS
);
if
(
now
.
isAfter
(
et
))
{
vo
.
setStatus
(
9
);
}
else
if
(
now
.
isBefore
(
st
))
{
}
else
if
(
now
.
isBefore
(
st
))
{
vo
.
setStatus
(
0
);
}
else
{
}
else
{
vo
.
setStatus
(
6
);
}
voList
.
add
(
vo
);
}
voList
=
voList
.
stream
().
sorted
(
Comparator
.
comparing
(
SweetYbActivityVo:
:
get
EndTime
,
Comparator
.
reverseOrder
())).
collect
(
Collectors
.
toList
());
voList
=
voList
.
stream
().
sorted
(
Comparator
.
comparing
(
SweetYbActivityVo:
:
get
Status
,
Comparator
.
naturalOrder
()).
thenComparing
(
SweetYbActivityVo:
:
getStartTime
,
Comparator
.
reverseOrder
())).
collect
(
Collectors
.
toList
());
return
ResponseDto
.
success
(
voList
);
}
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/resources/sqlmap.properties
View file @
2c0c89db
This diff is collapsed.
Click to expand it.
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