记得上下班打卡 | 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
5f9d0f8b
Commit
5f9d0f8b
authored
Aug 11, 2022
by
zhengfuxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改bug
parent
a9591733
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
283 additions
and
12 deletions
+283
-12
GoblinCommonServiceImpl.java
...zhengzai/goblin/service/impl/GoblinCommonServiceImpl.java
+1
-1
KylinRecommendActiveServiceImpl.java
...e/kylin/service/impl/KylinRecommendActiveServiceImpl.java
+69
-11
GoblinAnticipateUtils.java
.../liquidnet/service/kylin/utils/GoblinAnticipateUtils.java
+67
-0
GoblinOrderUtils.java
...a/com/liquidnet/service/kylin/utils/GoblinOrderUtils.java
+58
-0
KylinRedisUtils.java
...va/com/liquidnet/service/kylin/utils/KylinRedisUtils.java
+88
-0
No files found.
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/goblin/service/impl/GoblinCommonServiceImpl.java
View file @
5f9d0f8b
...
...
@@ -76,7 +76,7 @@ public class GoblinCommonServiceImpl implements IGoblinCommonService {
if
(
spuAppear
!=
null
)
{
queryWrapper
.
eq
(
GoblinGoods:
:
getSpuAppear
,
spuAppear
);
}
else
{
queryWrapper
.
eq
(
GoblinGoods:
:
getSpuAppear
,
"1"
);
/* queryWrapper.eq(GoblinGoods::getSpuAppear, "1");*/
}
queryWrapper
.
eq
(
GoblinGoods:
:
getSpuType
,
type
);
if
(
StringUtil
.
isNotBlank
(
name
))
{
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinRecommendActiveServiceImpl.java
View file @
5f9d0f8b
package
com
.
liquidnet
.
service
.
kylin
.
service
.
impl
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.StringUtil
;
import
com.liquidnet.service.goblin.dto.manage.vo.AnticipateValueVo
;
import
com.liquidnet.service.goblin.dto.manage.vo.GoblinGoodsAnticipateValueVo
;
import
com.liquidnet.service.goblin.dto.vo.*
;
import
com.liquidnet.service.kylin.dto.vo.KylinRecommendActiveRelationVo
;
import
com.liquidnet.service.kylin.dto.vo.KylinRecommendActiveVo
;
...
...
@@ -9,20 +13,17 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import
com.liquidnet.service.kylin.entity.KylinRecommendActive
;
import
com.liquidnet.service.kylin.entity.KylinRecommendActiveRelation
;
import
com.liquidnet.service.kylin.service.IKylinRecommendActiveService
;
import
com.liquidnet.service.kylin.utils.DataUtils
;
import
com.liquidnet.service.kylin.utils.KylinRedisUtils
;
import
com.liquidnet.service.kylin.utils.ObjectUtil
;
import
com.liquidnet.service.kylin.utils.*
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.math.BigInteger
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.*
;
/**
*
...
...
@@ -33,6 +34,8 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
private
DataUtils
dataUtils
;
@Autowired
private
KylinRedisUtils
kylinRedisUtils
;
@Autowired
private
GoblinOrderUtils
goblinOrderUtils
;
@Override
public
KylinRecommendActiveVo
getRecommendById
(
List
<
KylinRecommendActive
>
list
)
throws
ParseException
{
...
...
@@ -76,7 +79,9 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
}*/
//遍历list
List
<
KylinRecommendActiveRelationVo
>
kylinRecommendActiveVoList
=
kylinRecommendActiveVo
.
getList
();
for
(
KylinRecommendActiveRelationVo
kylinRecommendActiveRelationVo
:
kylinRecommendActiveVoList
)
{
ListIterator
<
KylinRecommendActiveRelationVo
>
iterator
=
kylinRecommendActiveVoList
.
listIterator
();
while
(
iterator
.
hasNext
())
{
KylinRecommendActiveRelationVo
kylinRecommendActiveRelationVo
=
iterator
.
next
();
if
(
kylinRecommendActiveRelationVo
.
getType
()
==
1
)
{
//NFT
GoblinNftGoodsSkuInfoVo
goblinNftGoodsSkuInfoVo
=
goodsDetail
(
kylinRecommendActiveRelationVo
.
getRecommendBindId
());
...
...
@@ -90,8 +95,8 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
kylinRecommendActiveRelationVo
.
setCount
(
true
);
}
else
{
kylinRecommendActiveRelationVo
.
setCount
(
false
);
iterator
.
remove
();
}
}
else
if
(
kylinRecommendActiveRelationVo
.
getType
()
==
2
)
{
//组合购
GoblinMixAppDetailsVo
goblinMixAppDetailsVo
=
mixDetails
(
kylinRecommendActiveRelationVo
.
getRecommendBindId
());
...
...
@@ -103,9 +108,11 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
kylinRecommendActiveRelationVo
.
setCount
(
true
);
}
else
{
kylinRecommendActiveRelationVo
.
setCount
(
false
);
iterator
.
remove
();
}
}
else
{
kylinRecommendActiveRelationVo
.
setCount
(
false
);
iterator
.
remove
();
}
}
else
if
(
kylinRecommendActiveRelationVo
.
getType
()
==
3
)
{
//演出
...
...
@@ -116,9 +123,11 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
kylinRecommendActiveRelationVo
.
setCount
(
true
);
}
else
{
kylinRecommendActiveRelationVo
.
setCount
(
false
);
iterator
.
remove
();
}
}
else
{
kylinRecommendActiveRelationVo
.
setCount
(
false
);
iterator
.
remove
();
}
}
else
if
(
kylinRecommendActiveRelationVo
.
getType
()
==
4
)
{
//商品 //商品
...
...
@@ -131,11 +140,16 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
kylinRecommendActiveRelationVo
.
setCount
(
true
);
}
else
{
kylinRecommendActiveRelationVo
.
setCount
(
false
);
iterator
.
remove
();
}
}
else
{
kylinRecommendActiveRelationVo
.
setCount
(
false
);
iterator
.
remove
();
}
}
/* for (KylinRecommendActiveRelationVo kylinRecommendActiveRelationVo : kylinRecommendActiveVoList) {
}*/
}
return
kylinRecommendActiveVo
;
}
...
...
@@ -183,6 +197,28 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
System.out.println(date.compareTo(date2));*/
}
public
AnticipateValueVo
getAnticipateValueBySkuId
(
String
skuId
,
int
hasHead
)
{
GoblinGoodsAnticipateValueVo
anticipateValueVo
=
kylinRedisUtils
.
getValueBySkuId
(
skuId
);
AnticipateValueVo
valueVo
=
AnticipateValueVo
.
getNew
();
if
(
anticipateValueVo
!=
null
)
{
valueVo
=
valueVo
.
copy
(
anticipateValueVo
);
valueVo
.
setState
(
GoblinAnticipateUtils
.
setState
(
valueVo
.
getAboutStartDate
(),
valueVo
.
getAboutEndDate
()));
}
else
{
valueVo
.
setState
(
null
);
valueVo
.
setAboutEndDate
(
null
);
valueVo
.
setAboutStartDate
(
null
);
valueVo
.
setAboutPeople
(
BigInteger
.
ZERO
);
valueVo
.
setType
(
null
);
valueVo
.
setPeopleType
(
null
);
valueVo
.
setRule
(
""
);
}
if
(
hasHead
==
1
)
{
valueVo
.
setAboutAvatarList
(
kylinRedisUtils
.
getUserAvatar
(
skuId
));
}
else
{
valueVo
.
setAboutAvatarList
(
CollectionUtil
.
linkedListString
());
}
return
valueVo
;
}
/**
* NFT 获取详情
*/
...
...
@@ -199,18 +235,40 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
LocalDateTime
baseSaleStartTime
=
(
LocalDateTime
)
map
.
get
(
"baseSaleStartTime"
);
LocalDateTime
nextSaleStartTime
=
(
LocalDateTime
)
map
.
get
(
"nextSaleStartTime"
);
if
(
kylinRedisUtils
.
getSkuAllStatusShow
(
skuInfoVo
))
{
//获取预约相关
AnticipateValueVo
anticipateValueVo
=
getAnticipateValueBySkuId
(
skuId
,
1
);
GoblinNftGoodsSkuInfoVo
nftGoodsSkuInfoVo
=
GoblinNftGoodsSkuInfoVo
.
getNew
().
copy
(
skuInfoVo
,
null
);
GoblinNftGoodsSkuInfoVo
nftGoodsSkuInfoVo
=
GoblinNftGoodsSkuInfoVo
.
getNew
().
copy
(
skuInfoVo
,
anticipateValueVo
);
// 限购数量
Integer
buyCount
=
0
;
String
userId
=
CurrentUtil
.
getCurrentUid
();
if
(
StringUtils
.
isNotBlank
(
userId
))
{
buyCount
=
kylinRedisUtils
.
getSkuCountByUid
(
userId
,
skuId
);
}
if
(
null
!=
skuInfoVo
.
getBuyLimit
()
&&
0
!=
skuInfoVo
.
getBuyLimit
())
{
nftGoodsSkuInfoVo
.
setCanBuyNum
(
skuInfoVo
.
getBuyLimit
()
-
buyCount
);
}
// spu信息
GoblinGoodsInfoVo
goodsInfoVo
=
kylinRedisUtils
.
getGoodsInfoVo
(
skuInfoVo
.
getSpuId
());
GoblinNftGoodsDetailSpuInfoVo
nftGoodsDetailSpuInfoVo
=
GoblinNftGoodsDetailSpuInfoVo
.
getNew
().
copy
(
goodsInfoVo
);
nftGoodsSkuInfoVo
.
setGoblinNftGoodsDetailSpuInfoVo
(
nftGoodsDetailSpuInfoVo
);
// 库存
HashMap
<
String
,
Integer
>
stockHashMap
=
goblinOrderUtils
.
getIsStock
(
listId
,
skuId
,
skuInfoVo
.
getUnbox
(),
skuInfoVo
.
getSoldoutStatus
(),
goodsInfoVo
.
getSkuIdList
());
nftGoodsSkuInfoVo
.
setIsStock
(
stockHashMap
.
get
(
"isStock"
));
// 总库存
if
(
skuInfoVo
.
getUnbox
().
equals
(
"1"
))
{
nftGoodsSkuInfoVo
.
setSkuStock
(
stockHashMap
.
get
(
"totalStock"
));
}
// 系统时间
nftGoodsSkuInfoVo
.
setSystime
(
LocalDateTime
.
now
());
nftGoodsSkuInfoVo
.
setTagType
(
tagType
);
nftGoodsSkuInfoVo
.
setListId
(
listId
);
nftGoodsSkuInfoVo
.
setBaseSaleStartTime
(
baseSaleStartTime
);
nftGoodsSkuInfoVo
.
setNextSaleStartTime
(
nextSaleStartTime
);
// 是否开启兑换
nftGoodsSkuInfoVo
.
setIsExchange
(
kylinRedisUtils
.
getIsExchange
(
skuId
));
// 待支付订单数量
nftGoodsSkuInfoVo
.
setNotPayNum
(
kylinRedisUtils
.
getNotPayNum
(
skuId
,
listId
));
return
nftGoodsSkuInfoVo
;
}
else
{
return
null
;
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/GoblinAnticipateUtils.java
0 → 100644
View file @
5f9d0f8b
package
com
.
liquidnet
.
service
.
kylin
.
utils
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.commons.lang.util.HttpUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.adam.dto.vo.AdamUserInfoVo
;
import
com.liquidnet.service.adam.dto.vo.AdamUserProfileVo
;
import
com.liquidnet.service.base.ResponseDto
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.MultiValueMap
;
import
java.time.LocalDateTime
;
/**
* @author TT
*/
@Component
@Slf4j
public
class
GoblinAnticipateUtils
{
@Value
(
"${liquidnet.service.adam.url}"
)
private
String
adamUrl
;
public
AdamUserInfoVo
getUserInfo
()
{
try
{
MultiValueMap
<
String
,
String
>
header
=
CollectionUtil
.
linkedMultiValueMapStringString
();
header
.
add
(
"Authorization"
,
"Bearer "
+
CurrentUtil
.
getToken
());
header
.
add
(
"Accept"
,
"application/json;charset=UTF-8"
);
String
returnData
=
HttpUtil
.
post
(
adamUrl
+
"/adam/user/info"
,
null
,
header
);
ResponseDto
<
AdamUserProfileVo
>
innerReturnVo
=
JsonUtils
.
fromJson
(
returnData
,
new
TypeReference
<
ResponseDto
<
AdamUserProfileVo
>>()
{
});
if
(
innerReturnVo
.
getData
()
!=
null
)
{
return
innerReturnVo
.
getData
().
getUserInfo
();
}
log
.
info
(
"post url:{}<----->Authorization:{}"
,
adamUrl
+
" /adam/user/info"
,
CurrentUtil
.
getToken
());
return
null
;
}
catch
(
Exception
e
)
{
log
.
info
(
"post url:{}<----->Authorization:{}"
,
adamUrl
+
" /adam/user/info"
,
CurrentUtil
.
getToken
());
log
.
error
(
"获取用户头像失败"
,
e
);
return
null
;
}
}
public
static
Integer
setState
(
LocalDateTime
startDate
,
LocalDateTime
endDate
)
{
LocalDateTime
now
=
LocalDateTime
.
now
();
if
(
startDate
.
isAfter
(
now
))
{
//未开始 0
return
0
;
}
if
(
startDate
.
isBefore
(
now
)
&&
endDate
.
isAfter
(
now
))
{
//预约中 1
return
1
;
}
if
(
endDate
.
isBefore
(
now
))
{
//已结束 2
return
2
;
}
//其他
return
null
;
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/GoblinOrderUtils.java
0 → 100644
View file @
5f9d0f8b
package
com
.
liquidnet
.
service
.
kylin
.
utils
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.List
;
@Component
@Slf4j
public
class
GoblinOrderUtils
{
@Value
(
"${liquidnet.service.candy.url}"
)
private
String
candyUrl
;
/* @Autowired
GoblinRedisUtils redisUtils;*/
private
KylinRedisUtils
kylinRedisUtils
;
@Autowired
QueueUtils
queueUtils
;
// NFT判断是否售罄
public
HashMap
<
String
,
Integer
>
getIsStock
(
String
listId
,
String
skuId
,
String
unbox
,
String
soldoutStatus
,
List
<
String
>
skuIdList
)
{
HashMap
<
String
,
Integer
>
returnMap
=
CollectionUtil
.
mapStringInteger
();
Integer
isStock
=
0
;
Integer
totalStock
=
0
;
if
(
null
==
soldoutStatus
||
soldoutStatus
.
equals
(
"0"
))
{
// 未设置售罄 查询库存
int
surplusStock
=
0
;
if
(
unbox
.
equals
(
"0"
))
{
// 不是盲盒
surplusStock
=
kylinRedisUtils
.
getSkuStock
(
listId
,
skuId
);
}
else
{
for
(
String
skuIdItem
:
skuIdList
)
{
// 盲盒计算所有sku库存总数
if
(
skuIdItem
.
equals
(
skuId
))
{
// 过滤自己
continue
;
}
HashMap
<
String
,
Object
>
map
=
kylinRedisUtils
.
getGoodsSkuInfoVo
(
LocalDateTime
.
now
(),
skuIdItem
);
GoblinGoodsSkuInfoVo
itemVo
=
(
GoblinGoodsSkuInfoVo
)
map
.
get
(
"vo"
);
// String listId2 = (String) map.get("listId");
// surplusStock += redisUtils.getSkuAllStatusStock(itemVo, listId2);
surplusStock
+=
kylinRedisUtils
.
getSkuAllStatusStock
(
itemVo
,
listId
);
totalStock
+=
kylinRedisUtils
.
getSkuTotalStock
(
itemVo
);
}
}
if
(
surplusStock
>
0
)
{
isStock
=
1
;
}
}
returnMap
.
put
(
"isStock"
,
isStock
);
returnMap
.
put
(
"totalStock"
,
totalStock
);
return
returnMap
;
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/KylinRedisUtils.java
View file @
5f9d0f8b
...
...
@@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
...
...
@@ -285,6 +286,93 @@ public class KylinRedisUtils {
public
GoblinGoodsAnticipateValueVo
getValueBySkuId
(
String
skuId
)
{
return
(
GoblinGoodsAnticipateValueVo
)
redisUtil
.
get
(
GoblinRedisConst
.
ANTICIPATE_VALUE_SKUID
.
concat
(
skuId
));
}
//获取 用户sku购买个数
public
Integer
getSkuCountByUid
(
String
uid
,
String
skuId
)
{
String
redisKey
=
GoblinRedisConst
.
REDIS_GOBLIN_BUY_COUNT
.
concat
(
uid
+
":skuId:"
+
skuId
);
Object
obj
=
redisUtil
.
get
(
redisKey
);
if
(
obj
==
null
)
{
return
0
;
}
else
{
return
(
Integer
)
obj
;
}
}
public
int
getIsExchange
(
String
skuId
)
{
String
redisKey
=
GoblinRedisConst
.
ACTIVITY_SKU_TIME
.
concat
(
skuId
);
Object
obj
=
redisUtil
.
get
(
redisKey
);
if
(
obj
==
null
)
{
return
1
;
}
else
{
GoblinNftExSkuVo
exSkuVo
=
(
GoblinNftExSkuVo
)
obj
;
if
((
null
==
exSkuVo
.
getExStartTime
()
||
LocalDateTime
.
now
().
isAfter
(
exSkuVo
.
getExStartTime
()))
&&
(
null
==
exSkuVo
.
getExStopTime
()
||
LocalDateTime
.
now
().
isBefore
(
exSkuVo
.
getExStopTime
())))
{
return
2
;
}
else
{
return
1
;
}
}
}
public
int
getNotPayNum
(
String
skuId
,
String
listId
)
{
String
redisKey
=
GoblinRedisConst
.
REDIS_GOBLIN_NFT_NOT_PAY_NUM
.
concat
(
skuId
);
if
(
null
!=
listId
)
{
redisKey
=
redisKey
.
concat
(
":"
).
concat
(
listId
);
}
Object
obj
=
redisUtil
.
get
(
redisKey
);
if
(
obj
==
null
)
{
return
1
;
}
else
{
return
(
int
)
obj
;
}
}
// 获取盲盒下藏品的库存 各种状态下不能算库存的排除掉
public
int
getSkuAllStatusStock
(
GoblinGoodsSkuInfoVo
info
,
String
listId
)
{
if
(
info
!=
null
// && LocalDateTime.now().isAfter(info.getSaleStartTime())
&&
(
null
==
info
.
getSoldoutStatus
()
||
info
.
getSoldoutStatus
().
equals
(
"0"
))
&&
(
null
==
info
.
getHitRatio
()
||
info
.
getHitRatio
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
&&
(
null
==
info
.
getSkuCanbuy
()
||
info
.
getSkuCanbuy
().
equals
(
"1"
))
)
{
// 可以返回库存
// 外面只有盲盒才能请求进来 里面只有不是分批购才判断盲盒里藏品的开售时间
if
(
null
==
listId
)
{
// if (LocalDateTime.now().isAfter(info.getSaleStartTime())) {
return
getSkuStock
(
listId
,
info
.
getSkuId
());
// } else {
// return 0;
// }
}
else
{
return
getSkuStock
(
listId
,
info
.
getSkuId
());
}
}
else
{
// 不计入库存
return
0
;
}
}
// 各种状态下判断藏品总库存
public
Integer
getSkuTotalStock
(
GoblinGoodsSkuInfoVo
info
)
{
if
(
info
!=
null
// && LocalDateTime.now().isAfter(info.getSaleStartTime())
// && (null == info.getSoldoutStatus() || info.getSoldoutStatus().equals("0"))
// && (null == info.getHitRatio() || info.getHitRatio().compareTo(BigDecimal.ZERO) > 0)
)
{
// 可以返回库存
return
info
.
getSkuStock
();
}
else
{
// 不计入库存
return
0
;
}
}
/**
* 获取用户预约头像
*/
public
List
<
String
>
getUserAvatar
(
String
skuId
)
{
String
rdk
=
GoblinRedisConst
.
ANTICIPATE_SKUID_AVATAR
.
concat
(
skuId
);
Object
obj
=
redisUtil
.
get
(
rdk
);
if
(
obj
==
null
)
{
return
CollectionUtil
.
arrayListString
();
}
else
{
return
(
List
<
String
>)
obj
;
}
}
// 获取 组合售数据
public
GoblinMixDetailsVo
getMixDetails
(
String
mixId
)
{
...
...
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