记得上下班打卡 | 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
Show 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