记得上下班打卡 | 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
4db77df5
Commit
4db77df5
authored
Jul 15, 2022
by
胡佳晨
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'hjc_admin_galaxy' into dev_pre
parents
9d3e0109
5583f29f
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
741 additions
and
41 deletions
+741
-41
GoblinRedisConst.java
...m/liquidnet/service/goblin/constant/GoblinRedisConst.java
+3
-0
IGoblinNftOrderService.java
...uidnet/service/goblin/service/IGoblinNftOrderService.java
+2
-1
BusinessType.java
...com/liquidnet/client/admin/common/enums/BusinessType.java
+5
-0
GoblinGagoController.java
.../web/controller/zhengzai/goblin/GoblinGagoController.java
+116
-0
remote-search-nft.js
...min-web/src/main/resources/static/js/remote-search-nft.js
+169
-0
gago.html
...c/main/resources/templates/zhengzai/goblin/gago/gago.html
+104
-0
edit.html
...n/resources/templates/zhengzai/smile/volunteers/edit.html
+6
-6
pom.xml
...dnet-client-admin/liquidnet-client-admin-zhengzai/pom.xml
+5
-0
GoblinGageServiceImpl.java
...n/zhengzai/goblin/service/impl/GoblinGageServiceImpl.java
+9
-0
GoblinRedisUtils.java
.../client/admin/zhengzai/goblin/utils/GoblinRedisUtils.java
+76
-2
liquidnet-service-order.yml
...t-bus-config/liquidnet-config/liquidnet-service-order.yml
+1
-0
GalaxyTradeBiz.java
...java/com/liquidnet/service/galaxy/biz/GalaxyTradeBiz.java
+77
-0
ZxinTradeCommonBiz.java
...et/service/galaxy/router/zxin/biz/ZxinTradeCommonBiz.java
+19
-0
AbstractDataUtils.java
...com/liquidnet/service/galaxy/utils/AbstractDataUtils.java
+26
-0
TestRedisUtil.java
...java/com/liquidnet/service/goblin/test/TestRedisUtil.java
+39
-0
GoblinNftOrderController.java
...et/service/order/controller/GoblinNftOrderController.java
+6
-1
GoblinInnerNftController.java
...vice/order/controller/inner/GoblinInnerNftController.java
+19
-1
GoblinNftOrderServiceImpl.java
...service/order/service/impl/GoblinNftOrderServiceImpl.java
+57
-30
MixOrderServiceImpl.java
...idnet/service/order/service/impl/MixOrderServiceImpl.java
+2
-0
No files found.
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/constant/GoblinRedisConst.java
View file @
4db77df5
...
@@ -342,4 +342,7 @@ public class GoblinRedisConst {
...
@@ -342,4 +342,7 @@ public class GoblinRedisConst {
public
static
final
String
GOBLIN_ORDER_LOG
=
PREFIX
.
concat
(
"order:log:"
);
//无用
public
static
final
String
GOBLIN_ORDER_LOG
=
PREFIX
.
concat
(
"order:log:"
);
//无用
/* ----------------------------------------------------------------- */
/* ----------------------------------------------------------------- */
public
static
final
String
GOBLIN_NUM_LIST
=
PREFIX
.
concat
(
"nft:num:"
);
//$key+":"+$skuId 根据skuId获取序号list
public
static
final
String
GOBLIN_NUM_DETAILS
=
PREFIX
.
concat
(
"nft:num:details:"
);
//$key+$num+$skuId 根据num+skuId获取DTO
}
}
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/service/IGoblinNftOrderService.java
View file @
4db77df5
...
@@ -26,5 +26,6 @@ public interface IGoblinNftOrderService {
...
@@ -26,5 +26,6 @@ public interface IGoblinNftOrderService {
String
refundSyncOrder
(
GoblinNftOrderRefundCallbackParam
refundCallbackParam
);
String
refundSyncOrder
(
GoblinNftOrderRefundCallbackParam
refundCallbackParam
);
ResponseDto
<
Boolean
>
exchange
(
String
code
,
String
uid
,
String
deviceFrom
,
int
orderType
);
ResponseDto
<
String
>
exchange
(
String
code
,
String
uid
,
String
deviceFrom
,
int
orderType
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-common/src/main/java/com/liquidnet/client/admin/common/enums/BusinessType.java
View file @
4db77df5
...
@@ -139,4 +139,9 @@ public enum BusinessType
...
@@ -139,4 +139,9 @@ public enum BusinessType
* 修改
* 修改
*/
*/
PERFORMANCE_SAVE
,
PERFORMANCE_SAVE
,
/**
* 内部操作
*/
INNER_OPERATION
,
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/goblin/GoblinGagoController.java
0 → 100644
View file @
4db77df5
package
com
.
liquidnet
.
client
.
admin
.
web
.
controller
.
zhengzai
.
goblin
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.liquidnet.client.admin.common.annotation.Log
;
import
com.liquidnet.client.admin.common.core.controller.BaseController
;
import
com.liquidnet.client.admin.common.core.domain.AjaxResult
;
import
com.liquidnet.client.admin.common.enums.BusinessType
;
import
com.liquidnet.client.admin.zhengzai.goblin.utils.GoblinRedisUtils
;
import
com.liquidnet.common.cache.redis.util.RedisDataSourceUtil
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.HttpUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.adam.constant.AdamRedisConst
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.candy.vo.CandyCouponVo
;
import
com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishAndBuyReqDto
;
import
com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
@Api
(
tags
=
"商铺公共方法"
)
@Controller
@RequestMapping
(
"goblin/gago"
)
public
class
GoblinGagoController
extends
BaseController
{
@Autowired
RedisDataSourceUtil
redisDataSourceUtil
;
@Autowired
GoblinRedisUtils
goblinRedisUtils
;
@Value
(
"${liquidnet.service.order.url}"
)
private
String
orderUrl
;
// private String orderUrl = "http://127.0.0.1:9004/order";
private
final
String
prefix
=
"zhengzai/goblin/gago"
;
@GetMapping
()
public
String
mainHtml
()
{
return
prefix
+
"/gago"
;
}
@Log
(
title
=
"判断手机号是否开通数字账号"
,
businessType
=
BusinessType
.
INNER_OPERATION
)
@GetMapping
(
"nftAccount"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
name
=
"userMobile"
,
value
=
"手机号"
),
})
@ResponseBody
public
AjaxResult
storeSearch
(
String
userMobile
)
{
AjaxResult
ajaxResult
=
AjaxResult
.
success
();
Object
obj1
=
redisDataSourceUtil
.
getRedisAdamUtil
().
get
(
AdamRedisConst
.
IDENTITY_MOBILE
.
concat
(
userMobile
));
if
(
obj1
==
null
)
{
return
AjaxResult
.
error
(
"账号不存在"
);
}
String
uid
=
(
String
)
obj1
;
Boolean
obj2
=
goblinRedisUtils
.
getIsOpenAccount
(
uid
);
if
(!
obj2
)
{
return
AjaxResult
.
error
(
"账号未开通数字账号"
);
}
ajaxResult
.
put
(
"uid"
,
uid
);
return
ajaxResult
;
}
@Log
(
title
=
"生成兑换订单"
,
businessType
=
BusinessType
.
INNER_OPERATION
)
@PostMapping
(
value
=
"/exchangeNumNftOrder"
)
@ResponseBody
public
AjaxResult
listByStatus
(
@RequestParam
(
value
=
"skuId"
)
String
skuId
,
@RequestParam
(
value
=
"nftNum"
)
int
nftNum
,
@RequestParam
(
value
=
"uid"
)
String
uid
)
{
//当前 nft序号
GoblinGoodsSkuInfoVo
skuInfoVo
=
goblinRedisUtils
.
getGoodsSkuInfoVo
(
skuId
);
int
cNufCount
=
goblinRedisUtils
.
getNftCountBySku
(
skuInfoVo
.
getRouteType
(),
skuId
);
if
(
cNufCount
>=
nftNum
)
{
return
AjaxResult
.
error
(
"该序号已售卖"
);
}
if
(
skuInfoVo
==
null
||
skuInfoVo
.
getSkuStock
()
<=
nftNum
)
{
return
AjaxResult
.
error
(
"该序号不存在"
);
}
if
(
skuInfoVo
.
getUnbox
().
equals
(
"1"
))
{
return
AjaxResult
.
error
(
"不支持盲盒"
);
}
boolean
addResult
=
goblinRedisUtils
.
addNftList
(
skuId
,
nftNum
+
""
);
if
(!
addResult
)
{
return
AjaxResult
.
error
(
"该序号已被占用"
);
}
//
MultiValueMap
<
String
,
String
>
params
=
CollectionUtil
.
linkedMultiValueMapStringString
();
params
.
add
(
"userId"
,
uid
);
params
.
add
(
"skuId"
,
skuId
);
MultiValueMap
<
String
,
String
>
header
=
CollectionUtil
.
linkedMultiValueMapStringString
();
header
.
add
(
"Accept"
,
"application/json;charset=UTF-8"
);
System
.
out
.
println
(
orderUrl
.
concat
(
"/goblin/nft/airdropInner"
));
String
returnData
=
HttpUtil
.
post
(
orderUrl
.
concat
(
"/order/goblin/nft/airdropInner"
),
params
,
header
);
ResponseDto
<
String
>
innerReturnVo
=
JsonUtils
.
fromJson
(
returnData
,
new
TypeReference
<
ResponseDto
<
String
>>()
{
});
if
(
innerReturnVo
.
isSuccess
())
{
GalaxyNftPublishAndBuyReqDto
dto
=
GalaxyNftPublishAndBuyReqDto
.
getNew
();
dto
.
setBuyTimestamp
(
DateUtil
.
getNowTime
());
dto
.
setNftOrderPayId
(
innerReturnVo
.
getData
());
dto
.
setSkuId
(
skuId
);
dto
.
setUserId
(
uid
);
goblinRedisUtils
.
setNftNumDetails
(
nftNum
+
""
,
skuId
,
dto
);
return
AjaxResult
.
success
();
}
else
{
return
AjaxResult
.
error
();
}
}
/** ------------------------------------------------------------------------ **/
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/static/js/remote-search-nft.js
0 → 100644
View file @
4db77df5
;(
function
(
$
)
{
//这里放入插件代码
var
RemoteSearchPerformance
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
);
this
.
options
=
$
.
extend
(
true
,
{},
$
.
fn
.
remoteSearchPerformance
.
defaults
,
options
);
this
.
id
=
$
(
element
).
attr
(
'id'
);
this
.
ulID
=
'#'
+
this
.
id
+
'_ul'
;
this
.
ulFoucus
=
false
;
// Method overrides
this
.
render
=
this
.
options
.
render
||
this
.
render
;
this
.
select
=
this
.
options
.
select
||
this
.
select
;
this
.
ajax
=
$
.
extend
({},
$
.
fn
.
remoteSearchPerformance
.
defaults
.
ajax
,
this
.
options
.
ajax
);
this
.
listen
();
}
RemoteSearchPerformance
.
prototype
=
{
listen
:
function
()
{
this
.
$element
.
on
(
'blur'
,
$
.
proxy
(
this
.
blur
,
this
))
.
on
(
'keyup'
,
$
.
proxy
(
this
.
keyup
,
this
));
this
.
$element
.
parent
(
'div.remote_wrapper'
).
on
(
'click'
,
this
.
ulID
,
$
.
proxy
(
this
.
click
,
this
));
},
blur
:
function
(
e
)
{
var
that
=
this
;
e
.
stopPropagation
();
e
.
preventDefault
();
setTimeout
(
function
()
{
if
(
!
that
.
ulFoucus
)
{
that
.
$element
.
val
(
that
.
$element
.
attr
(
'data-name'
));
that
.
hide
();
}
},
150
)
},
keyup
:
function
(
e
)
{
e
.
stopPropagation
();
e
.
preventDefault
();
switch
(
e
.
keyCode
)
{
case
40
:
// down arrow
case
38
:
// up arrow
break
;
case
9
:
// tab
case
13
:
// enter
this
.
ajaxer
();
case
27
:
// escape
break
;
default
:
this
.
ajaxer
();
}
},
hide
:
function
()
{
$
(
this
.
ulID
).
remove
();
return
this
;
},
ajaxer
:
function
()
{
var
that
=
this
,
title
=
that
.
$element
.
val
();
// Query changed
that
.
title
=
title
;
// Cancel last timer if set
if
(
that
.
ajax
.
timerId
)
{
clearTimeout
(
that
.
ajax
.
timerId
);
that
.
ajax
.
timerId
=
null
;
}
// Query is good to send, set a timer
that
.
ajax
.
timerId
=
setTimeout
(
function
()
{
var
params
=
{
title
:
title
};
var
jAjax
=
(
that
.
ajax
.
method
===
"post"
)
?
$
.
post
:
$
.
get
;
jAjax
(
that
.
ajax
.
url
,
params
,
function
(
data
){
return
that
.
render
(
data
.
data
);
});
that
.
ajax
.
timerId
=
null
;
},
that
.
ajax
.
timeout
);
return
that
;
},
render
:
function
(
data
)
{
this
.
ulFoucus
=
false
;
var
liList
=
data
||
[];
var
num
=
this
.
_getNum
();
//添加 ul
if
(
$
(
this
.
ulID
).
length
==
0
)
{
this
.
$element
.
after
(
"<ul id='"
+
this
.
id
+
"_ul' class='remote_search remote_search_top'></ul>"
);
};
//添加li
var
str
=
""
;
if
(
num
)
{
if
(
liList
.
length
)
{
for
(
var
i
=
0
;
i
<
liList
.
length
;
i
++
)
{
str
+=
"<li data-id='"
+
liList
[
i
].
spuId
+
"' data-name='"
+
liList
[
i
].
spuName
+
"' title='"
+
liList
[
i
].
spuName
+
"' value='"
+
liList
[
i
].
spuId
+
"'>"
+
liList
[
i
].
spuName
+
"</li>"
;
}
}
else
{
str
=
"<li data-id='' data-name=''>搜索无数据</li>"
}
}
else
{
this
.
$element
.
attr
(
'data-name'
,
""
);
this
.
$element
.
attr
(
'data-id'
,
""
);
}
$
(
this
.
ulID
).
html
(
str
);
var
bodyHeight
=
$
(
document
.
body
).
height
();
var
offsetTop
=
this
.
$element
.
offset
().
top
;
var
height
=
$
(
this
.
ulID
).
outerHeight
(
true
);
if
(
offsetTop
+
height
>
bodyHeight
){
$
(
this
.
ulID
).
addClass
(
'remote_search_bottom'
).
removeClass
(
'remote_search_top'
);
}
else
{
$
(
this
.
ulID
).
addClass
(
'remote_search_top'
).
removeClass
(
'remote_search_bottom'
);
}
return
this
;
},
click
:
function
(
e
)
{
e
.
stopPropagation
();
e
.
preventDefault
();
var
dataName
=
$
(
e
.
target
).
attr
(
'data-name'
);
var
dataID
=
$
(
e
.
target
).
attr
(
'data-id'
);
this
.
$element
.
val
(
dataName
);
this
.
$element
.
attr
(
'data-name'
,
dataName
);
this
.
$element
.
attr
(
'data-id'
,
dataID
);
this
.
options
.
chose
(
dataName
,
dataID
);
this
.
ulFoucus
=
true
;
return
this
.
hide
();
},
_getNum
:
function
(){
return
this
.
$element
.
val
().
length
;
}
}
$
.
fn
.
remoteSearchPerformance
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
),
data
=
$this
.
data
(
'remoteSearchPerformance'
),
options
=
typeof
option
===
'object'
&&
option
;
if
(
!
data
)
{
$this
.
data
(
'remoteSearchPerformance'
,
(
data
=
new
RemoteSearchPerformance
(
this
,
options
)));
}
if
(
typeof
option
===
'string'
)
{
data
[
option
]();
}
});
}
$
.
fn
.
remoteSearchPerformance
.
defaults
=
{
hiddenVal
:
''
,
chose
:
function
()
{
},
ajax
:
{
url
:
null
,
timeout
:
300
,
method
:
'get'
,
timerId
:
null
},
success
:
function
(
res
){
}
}
$
.
fn
.
remoteSearchPerformance
.
Constructor
=
RemoteSearchPerformance
;
})(
jQuery
);
\ No newline at end of file
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/goblin/gago/gago.html
0 → 100644
View file @
4db77df5
<!DOCTYPE html>
<html
lang=
"zh"
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<th:block
th:include=
"include :: header('gago')"
/>
</head>
<style>
td
{
horiz-align
:
center
;
text-align
:
left
;
padding
:
10px
;
}
</style>
<body
class=
"white-bg"
>
<div
class=
"wrapper wrapper-content animated fadeInRight ibox-content"
>
<form
class=
"form-horizontal m"
id=
"userMobile-form"
>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label is-required"
>
用户手机号码:
</label>
<div
class=
"col-sm-8"
>
<input
type=
"number"
id=
"userMobile"
name=
"userMobile"
class=
"form-control"
>
<input
id=
"userId"
name=
"userId"
class=
"form-control"
type=
"hidden"
readonly
>
</div>
<button
type=
"button"
class=
"btn btn-w-m btn-success"
onclick=
"getMobileIsAudit()"
>
验证手机号
</button>
</div>
</form>
<form
class=
"form-horizontal m"
id=
"nft-form"
>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label is-required"
>
数字藏品名称:
</label>
<div
class=
"col-sm-8"
>
<input
id=
"skuId"
name=
"skuId"
th:value=
"*{skuId}"
type=
"hidden"
>
<div
class=
"remote_wrapper"
style=
"position: relative;"
>
<input
name=
"ids"
type=
"hidden"
>
<input
type=
"text"
id=
"remoteSearch"
>
</div>
</div>
</div>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label is-required"
>
生成序号:
</label>
<div
class=
"col-sm-8"
>
<input
type=
"number"
id=
"nftNum"
name=
"nftNum"
class=
"form-control"
>
</div>
</div>
</form>
<button
type=
"button"
class=
"btn btn-w-m btn-success"
onclick=
"ce()"
>
生成订单
</button>
</div>
<th:block
th:include=
"include :: footer"
/>
<th:block
th:include=
"include :: bootstrap-suggest-js"
/>
<script
th:src=
"@{/js/remote-search-nft.js}"
></script>
<script
th:inline=
"javascript"
>
var
prefix
=
ctx
+
"goblin/gago"
;
function
getMobileIsAudit
()
{
var
mobile
=
$
(
"#userMobile"
).
val
();
$
(
"#userId"
).
val
(
''
);
$
.
operate
.
get
(
prefix
+
"/nftAccount?userMobile="
+
mobile
,
function
(
res
)
{
uid
=
res
.
uid
;
$
(
"#userId"
).
val
(
uid
);
});
}
$
(
'#remoteSearch'
).
remoteSearchPerformance
({
ajax
:
{
url
:
"/goblin/common/sku?type=1"
,
type
:
"get"
},
chose
:
function
(
text
,
val
)
{
$
(
"#skuId"
).
val
(
val
);
},
success
:
function
()
{
}
})
function
ce
()
{
var
skuId
=
$
(
"#skuId"
).
val
();
var
nftNum
=
$
(
"#nftNum"
).
val
();
var
uid
=
$
(
"#userId"
).
val
();
if
(
uid
==
""
||
nftNum
==
""
||
uid
==
""
)
{
alert
(
"请完整填写信息"
)
}
else
{
var
param
=
{
skuId
:
skuId
,
nftNum
:
nftNum
,
uid
:
uid
};
$
.
operate
.
post
(
prefix
+
"/exchangeNumNftOrder"
,
param
,
function
(
res
)
{
});
// alert("uid =" + uid + " skuId=" + skuId + " nftNum=" + nftNum)
}
}
</script>
</body>
</html>
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/smile/volunteers/edit.html
View file @
4db77df5
...
@@ -101,14 +101,14 @@
...
@@ -101,14 +101,14 @@
<table
id=
"team-table_user"
class=
"table table-condensed table-sm"
th:border=
"1"
>
<table
id=
"team-table_user"
class=
"table table-condensed table-sm"
th:border=
"1"
>
<tr>
<tr>
<td>
名称
</td>
<td>
名称
</td>
<td>
介绍
</td
>
<!-- <td>介绍</td>--
>
<tr/>
<tr/>
<div
th:each=
"item : ${smileVolunteersDetailsVo.teamArray}"
>
<div
th:each=
"item : ${smileVolunteersDetailsVo.teamArray}"
>
<tr
class=
"content-tr"
>
<tr
class=
"content-tr"
>
<td
th:value=
"${item.name}"
th:text=
"${item.name}"
>
<td
th:value=
"${item.name}"
th:text=
"${item.name}"
>
</td>
</td>
<td
th:text=
"${item.introduce}"
>
<!-- <td th:text="${item.introduce}">--
>
</td
>
<!-- </td>--
>
</tr>
</tr>
</div>
</div>
</table>
</table>
...
@@ -118,15 +118,15 @@
...
@@ -118,15 +118,15 @@
<table
id=
"team-table"
class=
"table table-condensed table-sm"
th:border=
"1"
>
<table
id=
"team-table"
class=
"table table-condensed table-sm"
th:border=
"1"
>
<tr>
<tr>
<td>
名称
</td>
<td>
名称
</td>
<td>
介绍
</td
>
<!-- <td>介绍</td>--
>
<td>
选中
</td>
<td>
选中
</td>
<tr/>
<tr/>
<div
th:each=
"item : ${listData}"
>
<div
th:each=
"item : ${listData}"
>
<tr
class=
"content-tr"
>
<tr
class=
"content-tr"
>
<td
th:value=
"${item.name}"
th:text=
"${item.name}"
>
<td
th:value=
"${item.name}"
th:text=
"${item.name}"
>
</td>
</td>
<td
th:text=
"${item.introduce}"
>
<!-- <td th:text="${item.introduce}">--
>
</td
>
<!-- </td>--
>
<td>
<td>
<input
name=
"teamCheck"
type=
"radio"
th:value=
"${item.teamId}"
>
选中
</label>
<input
name=
"teamCheck"
type=
"radio"
th:value=
"${item.teamId}"
>
选中
</label>
</td>
</td>
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/pom.xml
View file @
4db77df5
...
@@ -151,6 +151,11 @@
...
@@ -151,6 +151,11 @@
<artifactId>
liquidnet-service-goblin-api
</artifactId>
<artifactId>
liquidnet-service-goblin-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<version>
1.0-SNAPSHOT
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.liquidnet
</groupId>
<artifactId>
liquidnet-service-galaxy-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<dependency>
<groupId>
com.liquidnet
</groupId>
<groupId>
com.liquidnet
</groupId>
<artifactId>
liquidnet-service-smile-do
</artifactId>
<artifactId>
liquidnet-service-smile-do
</artifactId>
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/goblin/service/impl/GoblinGageServiceImpl.java
0 → 100644
View file @
4db77df5
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
goblin
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.client.admin.zhengzai.goblin.service.IGoblinFrontSelectGoodsService
;
import
com.liquidnet.service.goblin.entity.GoblinFrontSelectGoods
;
import
com.liquidnet.service.goblin.mapper.GoblinFrontSelectGoodsMapper
;
public
class
GoblinGageServiceImpl
extends
ServiceImpl
<
GoblinFrontSelectGoodsMapper
,
GoblinFrontSelectGoods
>
implements
IGoblinFrontSelectGoodsService
{
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/goblin/utils/GoblinRedisUtils.java
View file @
4db77df5
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
goblin
.
utils
;
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
goblin
.
utils
;
import
com.liquidnet.common.cache.redis.util.RedisDataSourceUtil
;
import
com.liquidnet.common.cache.redis.util.RedisDataSourceUtil
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.service.galaxy.constant.GalaxyConstant
;
import
com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishAndBuyReqDto
;
import
com.liquidnet.service.goblin.constant.GoblinRedisConst
;
import
com.liquidnet.service.goblin.constant.GoblinRedisConst
;
import
com.liquidnet.service.goblin.dto.vo.GoblinMarketingZhengzaiRelationVo
;
import
com.liquidnet.service.goblin.constant.GoblinStatusConst
;
import
com.liquidnet.service.goblin.dto.vo.GoblinSelfMarketingVo
;
import
com.liquidnet.service.goblin.constant.NftAccStatusEnum
;
import
com.liquidnet.service.goblin.dto.GoblinUserNftAccInfoVo
;
import
com.liquidnet.service.goblin.dto.vo.*
;
import
com.liquidnet.service.goblin.entity.GoblinGoodsSku
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
@Component
@Component
...
@@ -131,4 +139,70 @@ public class GoblinRedisUtils {
...
@@ -131,4 +139,70 @@ public class GoblinRedisUtils {
redisDataSourceUtil
.
getRedisGoblinUtil
().
set
(
redisKey
,
list
);
redisDataSourceUtil
.
getRedisGoblinUtil
().
set
(
redisKey
,
list
);
}
}
//是否开通数字账号
public
Boolean
getIsOpenAccount
(
String
userId
)
{
String
redisKey
=
GoblinRedisConst
.
REDIS_GOBLIN_NFT_NUM_ACCOUNT_INFO
.
concat
(
userId
);
Object
obj
=
redisDataSourceUtil
.
getRedisGoblinUtil
().
get
(
redisKey
);
GoblinUserNftAccInfoVo
openAccountInfo
;
if
(
obj
==
null
)
{
openAccountInfo
=
null
;
}
else
{
openAccountInfo
=
(
GoblinUserNftAccInfoVo
)
obj
;
}
// 认证验证
if
(
null
==
openAccountInfo
||
!
NftAccStatusEnum
.
StatusAcc
.
SUCCESS
.
getCode
().
equals
(
openAccountInfo
.
getCode
()))
{
return
false
;
}
else
{
return
true
;
}
}
//获取 当前xx链上SkuId 发行的数量
public
int
getNftCountBySku
(
String
routerType
,
String
skuId
)
{
String
redisKey
=
GalaxyConstant
.
REDIS_KEY_GALAXY_PUBLISH_NFT
.
concat
(
routerType
).
concat
(
":"
).
concat
(
skuId
);
Object
obj
=
redisDataSourceUtil
.
getRedisGoblinUtil
().
get
(
redisKey
);
if
(
obj
==
null
)
{
return
-
1
;
}
else
{
return
(
int
)
obj
;
}
}
//获取 nft序号站位list
public
List
<
String
>
getNftList
(
String
skuId
)
{
String
redisKey
=
GoblinRedisConst
.
GOBLIN_NUM_LIST
.
concat
(
skuId
);
Object
obj
=
redisDataSourceUtil
.
getRedisGoblinUtil
().
get
(
redisKey
);
if
(
obj
==
null
)
{
return
CollectionUtil
.
arrayListString
();
}
else
{
return
(
List
<
String
>)
obj
;
}
}
//添加 nft序号站位list
public
boolean
addNftList
(
String
skuId
,
String
num
)
{
String
redisKey
=
GoblinRedisConst
.
GOBLIN_NUM_LIST
.
concat
(
skuId
);
List
<
String
>
voList
=
getNftList
(
skuId
);
if
(
voList
.
contains
(
num
))
{
return
false
;
}
voList
.
add
(
num
);
redisDataSourceUtil
.
getRedisGoblinUtil
().
set
(
redisKey
,
voList
);
return
true
;
}
public
GoblinGoodsSkuInfoVo
getGoodsSkuInfoVo
(
String
skuId
)
{
String
rk
=
GoblinRedisConst
.
BASIC_GOODS_SKU
.
concat
(
skuId
);
GoblinGoodsSkuInfoVo
vo
=
(
GoblinGoodsSkuInfoVo
)
redisDataSourceUtil
.
getRedisGoblinUtil
().
get
(
rk
);
if
(
null
==
vo
)
{
return
null
;
}
return
vo
;
}
//覆盖 站位宾哥要dto
public
void
setNftNumDetails
(
String
num
,
String
skuId
,
GalaxyNftPublishAndBuyReqDto
dto
)
{
String
redisKey
=
GoblinRedisConst
.
GOBLIN_NUM_DETAILS
.
concat
(
num
).
concat
(
skuId
);
redisDataSourceUtil
.
getRedisGoblinUtil
().
set
(
redisKey
,
dto
);
}
}
}
liquidnet-bus-config/liquidnet-config/liquidnet-service-order.yml
View file @
4db77df5
...
@@ -108,6 +108,7 @@ global-auth:
...
@@ -108,6 +108,7 @@ global-auth:
-
${liquidnet.info.context}/goblin/nft/refundSyncOrder
-
${liquidnet.info.context}/goblin/nft/refundSyncOrder
-
${liquidnet.info.context}/goblin/nft/airdrop
-
${liquidnet.info.context}/goblin/nft/airdrop
-
${liquidnet.info.context}/mix/syncOrder
-
${liquidnet.info.context}/mix/syncOrder
-
${liquidnet.info.context}/goblin/nft/airdropInner
# -----------------------------------------------------------
# -----------------------------------------------------------
# -----------------------------------------------------------
# -----------------------------------------------------------
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-common/src/main/java/com/liquidnet/service/galaxy/biz/GalaxyTradeBiz.java
0 → 100644
View file @
4db77df5
package
com
.
liquidnet
.
service
.
galaxy
.
biz
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.commons.lang.util.StringUtil
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBindBo
;
import
com.liquidnet.service.galaxy.dto.bo.GalaxySeriesNftInfoBo
;
import
com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishAndBuyReqDto
;
import
com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishAndBuyRespDto
;
import
com.liquidnet.service.galaxy.router.zxin.biz.ZxinTradeCommonBiz
;
import
com.liquidnet.service.galaxy.utils.GalaxyDataUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: GalaxyTradeBiz
* @Package com.liquidnet.service.galaxy.biz
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/7/11 15:47
*/
@Slf4j
@Component
public
class
GalaxyTradeBiz
{
@Autowired
private
GalaxyDataUtils
dataUtils
;
@Autowired
private
ZxinTradeCommonBiz
zxinTradeCommonBiz
;
/**
* 根据skuid和nftIndex判断是否切换nft购买订单
* @param skuid
* @param nftIndex
*/
public
boolean
isNeedSwitch
(
String
skuid
,
String
nftIndex
){
List
numsList
=
dataUtils
.
getGoblinNumList
(
skuid
);
if
(
StringUtil
.
isNotEmpty
(
numsList
)){
if
(
numsList
.
contains
(
nftIndex
)){
return
true
;
}
}
return
false
;
}
/**
* 根据skuid和nftIndex判断是否切换nft购买订单
* @param skuid
* @param nftIndex
*/
public
void
switchBuyRouterBySkuId
(
String
skuid
,
String
nftIndex
,
GalaxySeriesNftInfoBo
seriesNftInfoBo
){
GalaxyNftPublishAndBuyReqDto
reqDto
=
dataUtils
.
getGoblinNumDetails
(
skuid
,
nftIndex
);
//设置绑定信息
GalaxyNftOrderBindBo
nftOrderBindBo
=
GalaxyNftOrderBindBo
.
getNew
();
nftOrderBindBo
.
setNftOrderPayId
(
reqDto
.
getNftOrderPayId
());
nftOrderBindBo
.
setSeriesId
(
seriesNftInfoBo
.
getSeriesId
());
nftOrderBindBo
.
setSeriesCode
(
seriesNftInfoBo
.
getSeriesCode
());
nftOrderBindBo
.
setNftIdIndex
(
Integer
.
valueOf
(
nftIndex
));
nftOrderBindBo
.
setRouterType
(
reqDto
.
getRouterType
());
String
nowTimeStr
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
LocalDateTime
.
now
());
nftOrderBindBo
.
setCreatedAt
(
nowTimeStr
);
dataUtils
.
setGalaxyNftOrderBindBo
(
reqDto
.
getRouterType
(),
reqDto
.
getNftOrderPayId
(),
nftOrderBindBo
);
//执行nft购买订单切换
log
.
info
(
"开始执行nft购买订单切换===>>>>> reqParam:{}"
,
JsonUtils
.
toJson
(
reqDto
));
ResponseDto
<
GalaxyNftPublishAndBuyRespDto
>
responseDto
=
zxinTradeCommonBiz
.
nftPublishAndBuy
(
reqDto
);
log
.
info
(
"执行nft购买订单切换结果===>>>>> response:{}"
,
JsonUtils
.
toJson
(
responseDto
));
}
}
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-common/src/main/java/com/liquidnet/service/galaxy/router/zxin/biz/ZxinTradeCommonBiz.java
View file @
4db77df5
...
@@ -9,6 +9,7 @@ import com.liquidnet.commons.lang.util.*;
...
@@ -9,6 +9,7 @@ import com.liquidnet.commons.lang.util.*;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.galaxy.biz.GalaxyBeanTransferBiz
;
import
com.liquidnet.service.galaxy.biz.GalaxyBeanTransferBiz
;
import
com.liquidnet.service.galaxy.biz.GalaxyEnumBiz
;
import
com.liquidnet.service.galaxy.biz.GalaxyEnumBiz
;
import
com.liquidnet.service.galaxy.biz.GalaxyTradeBiz
;
import
com.liquidnet.service.galaxy.constant.GalaxyEnum
;
import
com.liquidnet.service.galaxy.constant.GalaxyEnum
;
import
com.liquidnet.service.galaxy.constant.GalaxyErrorEnum
;
import
com.liquidnet.service.galaxy.constant.GalaxyErrorEnum
;
import
com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBindBo
;
import
com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBindBo
;
...
@@ -29,6 +30,8 @@ import org.springframework.stereotype.Component;
...
@@ -29,6 +30,8 @@ import org.springframework.stereotype.Component;
import
java.io.UnsupportedEncodingException
;
import
java.io.UnsupportedEncodingException
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
/**
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @author AnJiabin <anjiabin@zhengzai.tv>
...
@@ -57,6 +60,11 @@ public class ZxinTradeCommonBiz {
...
@@ -57,6 +60,11 @@ public class ZxinTradeCommonBiz {
@Autowired
@Autowired
private
GalaxyBeanTransferBiz
galaxyBeanTransferBiz
;
private
GalaxyBeanTransferBiz
galaxyBeanTransferBiz
;
@Autowired
private
GalaxyTradeBiz
galaxyTradeBiz
;
private
ExecutorService
executorService
=
Executors
.
newFixedThreadPool
(
10
);
public
ResponseDto
<
GalaxyNftPublishAndBuyRespDto
>
nftPublishAndBuy
(
GalaxyNftPublishAndBuyReqDto
reqDto
)
{
public
ResponseDto
<
GalaxyNftPublishAndBuyRespDto
>
nftPublishAndBuy
(
GalaxyNftPublishAndBuyReqDto
reqDto
)
{
log
.
info
(
"开始执行nftPublishAndBuy 请求参数:{}"
,
reqDto
.
toString
());
log
.
info
(
"开始执行nftPublishAndBuy 请求参数:{}"
,
reqDto
.
toString
());
//获取用户信息
//获取用户信息
...
@@ -141,6 +149,17 @@ public class ZxinTradeCommonBiz {
...
@@ -141,6 +149,17 @@ public class ZxinTradeCommonBiz {
//发行失败
//发行失败
throw
new
GalaxyNftPublishException
(
GalaxyErrorEnum
.
NFT_PUBLISH_ERROR
.
getCode
(),
"该sku:"
+
reqDto
.
getSkuId
()+
" 总共"
+
seriesNftInfoBo
.
getNftTotalCount
()+
"个NFT已经发行完毕,没有剩余库存!"
);
throw
new
GalaxyNftPublishException
(
GalaxyErrorEnum
.
NFT_PUBLISH_ERROR
.
getCode
(),
"该sku:"
+
reqDto
.
getSkuId
()+
" 总共"
+
seriesNftInfoBo
.
getNftTotalCount
()+
"个NFT已经发行完毕,没有剩余库存!"
);
}
}
//判断是否切换订单
while
(
galaxyTradeBiz
.
isNeedSwitch
(
reqDto
.
getSkuId
(),
String
.
valueOf
(
nftIdNo
))){
long
finalNftIdNo
=
nftIdNo
;
//开启新线程去执行购买
executorService
.
submit
(()
->
{
galaxyTradeBiz
.
switchBuyRouterBySkuId
(
reqDto
.
getSkuId
(),
String
.
valueOf
(
finalNftIdNo
),
seriesNftInfoBo
);
});
nftIdNo
=
dataUtils
.
incrNftIdNo
(
reqDto
.
getRouterType
(),
reqDto
.
getSkuId
());
}
nftOrderBindBo
=
GalaxyNftOrderBindBo
.
getNew
();
nftOrderBindBo
=
GalaxyNftOrderBindBo
.
getNew
();
nftOrderBindBo
.
setNftOrderPayId
(
reqDto
.
getNftOrderPayId
());
nftOrderBindBo
.
setNftOrderPayId
(
reqDto
.
getNftOrderPayId
());
nftOrderBindBo
.
setSeriesId
(
seriesNftInfoBo
.
getSeriesId
());
nftOrderBindBo
.
setSeriesId
(
seriesNftInfoBo
.
getSeriesId
());
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-common/src/main/java/com/liquidnet/service/galaxy/utils/AbstractDataUtils.java
View file @
4db77df5
package
com
.
liquidnet
.
service
.
galaxy
.
utils
;
package
com
.
liquidnet
.
service
.
galaxy
.
utils
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.base.constant.MQConst
;
...
@@ -8,13 +9,16 @@ import com.liquidnet.service.galaxy.biz.GalaxyBeanTransferBiz;
...
@@ -8,13 +9,16 @@ import com.liquidnet.service.galaxy.biz.GalaxyBeanTransferBiz;
import
com.liquidnet.service.galaxy.constant.GalaxyConstant
;
import
com.liquidnet.service.galaxy.constant.GalaxyConstant
;
import
com.liquidnet.service.galaxy.constant.GalaxyEnum
;
import
com.liquidnet.service.galaxy.constant.GalaxyEnum
;
import
com.liquidnet.service.galaxy.dto.bo.*
;
import
com.liquidnet.service.galaxy.dto.bo.*
;
import
com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishAndBuyReqDto
;
import
com.liquidnet.service.galaxy.dto.vo.mongo.GalaxyNftOrderFailLogVo
;
import
com.liquidnet.service.galaxy.dto.vo.mongo.GalaxyNftOrderFailLogVo
;
import
com.liquidnet.service.galaxy.dto.vo.mongo.GalaxyNftTradeVo
;
import
com.liquidnet.service.galaxy.dto.vo.mongo.GalaxyNftTradeVo
;
import
com.liquidnet.service.goblin.constant.GoblinRedisConst
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
/**
/**
* 该类为redis+mysql
* 该类为redis+mysql
...
@@ -478,4 +482,26 @@ public abstract class AbstractDataUtils {
...
@@ -478,4 +482,26 @@ public abstract class AbstractDataUtils {
return
null
;
return
null
;
}
}
}
}
//获取sku对应预留号码list
public
List
<
String
>
getGoblinNumList
(
String
skuId
){
String
redisKey
=
GoblinRedisConst
.
GOBLIN_NUM_LIST
.
concat
(
skuId
);
Object
obj
=
this
.
getRedisUtil
().
get
(
redisKey
);
if
(
obj
==
null
)
{
return
CollectionUtil
.
arrayListString
();
}
else
{
return
(
List
<
String
>)
obj
;
}
}
//$key+$num+$skuId 根据num+skuId获取DTO
public
GalaxyNftPublishAndBuyReqDto
getGoblinNumDetails
(
String
skuId
,
String
nftIndex
){
String
redisKey
=
GoblinRedisConst
.
GOBLIN_NUM_DETAILS
.
concat
(
nftIndex
).
concat
(
skuId
);
Object
obj
=
this
.
getRedisUtil
().
get
(
redisKey
);
if
(
obj
!=
null
){
return
(
GalaxyNftPublishAndBuyReqDto
)
obj
;
}
return
null
;
}
}
}
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/test/java/com/liquidnet/service/goblin/test/TestRedisUtil.java
0 → 100644
View file @
4db77df5
package
com
.
liquidnet
.
service
.
goblin
.
test
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishAndBuyReqDto
;
import
com.liquidnet.service.galaxy.utils.GalaxyDataUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
java.util.List
;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestRedisUtil
* @Package com.liquidnet.service.goblin.test
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/7/12 12:02
*/
@Slf4j
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
@SpringBootTest
public
class
TestRedisUtil
{
@Autowired
private
GalaxyDataUtils
dataUtils
;
@Test
public
void
test
()
{
String
skuId
=
"2212517482527828303"
;
List
rsList
=
dataUtils
.
getGoblinNumList
(
skuId
);
log
.
info
(
"rs:{}"
,
JsonUtils
.
toJson
(
rsList
));
GalaxyNftPublishAndBuyReqDto
reqDto
=
dataUtils
.
getGoblinNumDetails
(
skuId
,
String
.
valueOf
(
4
));
log
.
info
(
"reqDto:{}"
,
JsonUtils
.
toJson
(
reqDto
));
}
}
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/controller/GoblinNftOrderController.java
View file @
4db77df5
...
@@ -82,7 +82,12 @@ public class GoblinNftOrderController {
...
@@ -82,7 +82,12 @@ public class GoblinNftOrderController {
@RequestParam
(
"code"
)
@NotBlank
(
message
=
"兑换码不能为空"
)
String
code
,
@RequestParam
(
"code"
)
@NotBlank
(
message
=
"兑换码不能为空"
)
String
code
,
@RequestParam
(
"deviceFrom"
)
@NotBlank
(
message
=
"支付终端不能为空"
)
@Pattern
(
regexp
=
LnsRegex
.
Valid
.
TRIPLE_PF_FOR_PAY_TERMINAL
,
message
=
"支付终端类型无效"
)
String
deviceFrom
@RequestParam
(
"deviceFrom"
)
@NotBlank
(
message
=
"支付终端不能为空"
)
@Pattern
(
regexp
=
LnsRegex
.
Valid
.
TRIPLE_PF_FOR_PAY_TERMINAL
,
message
=
"支付终端类型无效"
)
String
deviceFrom
)
{
)
{
return
iGoblinNftOrderService
.
exchange
(
code
,
null
,
deviceFrom
,
2
);
ResponseDto
<
String
>
dto
=
iGoblinNftOrderService
.
exchange
(
code
,
null
,
deviceFrom
,
2
);
if
(
dto
.
isSuccess
())
{
return
ResponseDto
.
success
();
}
else
{
return
ResponseDto
.
failure
(
dto
.
getMessage
());
}
}
}
}
}
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/controller/inner/GoblinInnerNftController.java
View file @
4db77df5
...
@@ -35,7 +35,25 @@ public class GoblinInnerNftController {
...
@@ -35,7 +35,25 @@ public class GoblinInnerNftController {
@RequestParam
(
"userId"
)
@NotBlank
(
message
=
"用户ID不能为空"
)
String
userId
@RequestParam
(
"userId"
)
@NotBlank
(
message
=
"用户ID不能为空"
)
String
userId
)
{
)
{
return
iGoblinNftOrderService
.
exchange
(
code
,
userId
,
"systemAdmin"
,
4
);
ResponseDto
<
String
>
dto
=
iGoblinNftOrderService
.
exchange
(
code
,
userId
,
"systemAdmin"
,
4
);
if
(
dto
.
isSuccess
())
{
return
ResponseDto
.
success
();
}
else
{
return
ResponseDto
.
failure
(
dto
.
getMessage
());
}
}
}
@PostMapping
(
"airdropInner"
)
@ApiOperation
(
"空投内"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"from"
,
required
=
true
,
dataType
=
"String"
,
name
=
"skuId"
,
value
=
"skuId"
,
example
=
"0"
),
@ApiImplicitParam
(
type
=
"from"
,
required
=
true
,
dataType
=
"String"
,
name
=
"userId"
,
value
=
"用户ID"
,
example
=
"1"
),
})
public
ResponseDto
<
String
>
exchangeInner
(
@RequestParam
(
"skuId"
)
@NotBlank
(
message
=
"skuId不能为空"
)
String
skuId
,
@RequestParam
(
"userId"
)
@NotBlank
(
message
=
"用户ID不能为空"
)
String
userId
)
{
return
iGoblinNftOrderService
.
exchange
(
skuId
,
userId
,
"systemAdmin"
,
5
);
}
}
}
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/GoblinNftOrderServiceImpl.java
View file @
4db77df5
...
@@ -12,6 +12,7 @@ import com.liquidnet.service.goblin.constant.GoblinStatusConst;
...
@@ -12,6 +12,7 @@ import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import
com.liquidnet.service.goblin.constant.NftAccStatusEnum
;
import
com.liquidnet.service.goblin.constant.NftAccStatusEnum
;
import
com.liquidnet.service.goblin.dto.GoblinUserNftAccInfoVo
;
import
com.liquidnet.service.goblin.dto.GoblinUserNftAccInfoVo
;
import
com.liquidnet.service.goblin.dto.vo.*
;
import
com.liquidnet.service.goblin.dto.vo.*
;
import
com.liquidnet.service.goblin.entity.GoblinGoodsSku
;
import
com.liquidnet.service.goblin.entity.GoblinNftOrder
;
import
com.liquidnet.service.goblin.entity.GoblinNftOrder
;
import
com.liquidnet.service.goblin.param.GoblinNftOrderPayAgainParam
;
import
com.liquidnet.service.goblin.param.GoblinNftOrderPayAgainParam
;
import
com.liquidnet.service.goblin.param.GoblinNftOrderPayCallbackParam
;
import
com.liquidnet.service.goblin.param.GoblinNftOrderPayCallbackParam
;
...
@@ -504,7 +505,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
...
@@ -504,7 +505,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
orderVo
.
setCreatedAt
(
nftOrder
.
getCreatedAt
());
orderVo
.
setCreatedAt
(
nftOrder
.
getCreatedAt
());
// 待支付发送队列
// 待支付发送队列
queueUtils
.
sendMsgByRedisGoblinStock
(
orderVo
.
getOrderId
(),
nftOrder
.
getCreatedAt
(),
"NFT"
,
5
);
queueUtils
.
sendMsgByRedisGoblinStock
(
orderVo
.
getOrderId
(),
nftOrder
.
getCreatedAt
(),
"NFT"
,
5
);
// redis 订单详情
// redis 订单详情
nftOrderUtils
.
setNftOrder
(
orderVo
);
nftOrderUtils
.
setNftOrder
(
orderVo
);
...
@@ -813,8 +814,10 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
...
@@ -813,8 +814,10 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
return
"success"
;
return
"success"
;
}
}
@Override
@Override
public
ResponseDto
<
Boolean
>
exchange
(
String
code
,
String
uid
,
String
deviceFrom
,
int
orderType
)
{
public
ResponseDto
<
String
>
exchange
(
String
code
,
String
uid
,
String
deviceFrom
,
int
orderType
)
{
if
(
null
==
uid
)
{
if
(
null
==
uid
)
{
uid
=
CurrentUtil
.
getCurrentUid
();
uid
=
CurrentUtil
.
getCurrentUid
();
}
}
...
@@ -828,12 +831,28 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
...
@@ -828,12 +831,28 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
return
ResponseDto
.
failure
(
"处理未完成,请稍等~"
);
return
ResponseDto
.
failure
(
"处理未完成,请稍等~"
);
}
else
{
}
else
{
try
{
try
{
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
GoblinNftExCodeVo
goblinNftExCodeVo
=
GoblinNftExCodeVo
.
getNew
();
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
sqls
.
add
(
SqlMapping
.
get
(
"goblin_nft_ex_code.update"
));
LinkedList
<
Object
[]>
sqlDataCode
=
CollectionUtil
.
linkedListObjectArr
();
if
(
5
==
orderType
)
{
orderType
=
4
;
GoblinGoodsSkuInfoVo
skuInfoVo
=
goblinRedisUtils
.
getGoodsSkuInfoVo
(
code
);
goblinNftExCodeVo
.
setState
(
2
);
goblinNftExCodeVo
.
setRedeemUid
(
uid
);
goblinNftExCodeVo
.
setRedeemAt
(
nowTime
);
goblinNftExCodeVo
.
setUpdatedAt
(
nowTime
);
goblinNftExCodeVo
.
setSkuId
(
code
);
goblinNftExCodeVo
.
setBoxSkuId
(
""
);
goblinNftExCodeVo
.
setSpuId
(
skuInfoVo
.
getSpuId
());
goblinNftExCodeVo
.
setStoreId
(
skuInfoVo
.
getStoreId
());
}
else
{
// 验证 1code是否存在 2是否未兑换的状态 3是否在生效日期内 4兑换限购
// 验证 1code是否存在 2是否未兑换的状态 3是否在生效日期内 4兑换限购
GoblinNftExCodeVo
goblinNftExCodeVo
=
nftOrderUtils
.
getGoblinNftExCodeVo
(
code
);
goblinNftExCodeVo
=
nftOrderUtils
.
getGoblinNftExCodeVo
(
code
);
if
(
null
==
goblinNftExCodeVo
||
goblinNftExCodeVo
.
getState
()
!=
1
)
{
if
(
null
==
goblinNftExCodeVo
||
goblinNftExCodeVo
.
getState
()
!=
1
)
{
return
ResponseDto
.
failure
(
"兑换码不正确或已失效"
);
return
ResponseDto
.
failure
(
"兑换码不正确或已失效"
);
}
}
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
if
(
nowTime
.
isBefore
(
goblinNftExCodeVo
.
getExStartTime
())
||
nowTime
.
isAfter
(
goblinNftExCodeVo
.
getExStopTime
()))
{
if
(
nowTime
.
isBefore
(
goblinNftExCodeVo
.
getExStartTime
())
||
nowTime
.
isAfter
(
goblinNftExCodeVo
.
getExStopTime
()))
{
return
ResponseDto
.
failure
(
"不在允许兑换时间内"
);
return
ResponseDto
.
failure
(
"不在允许兑换时间内"
);
}
}
...
@@ -850,12 +869,10 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
...
@@ -850,12 +869,10 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
goblinNftExCodeVo
.
setRedeemAt
(
nowTime
);
goblinNftExCodeVo
.
setRedeemAt
(
nowTime
);
goblinNftExCodeVo
.
setUpdatedAt
(
nowTime
);
goblinNftExCodeVo
.
setUpdatedAt
(
nowTime
);
nftOrderUtils
.
setGoblinNftExCodeVo
(
goblinNftExCodeVo
);
nftOrderUtils
.
setGoblinNftExCodeVo
(
goblinNftExCodeVo
);
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
sqls
.
add
(
SqlMapping
.
get
(
"goblin_nft_ex_code.update"
));
LinkedList
<
Object
[]>
sqlDataCode
=
CollectionUtil
.
linkedListObjectArr
();
sqlDataCode
.
add
(
new
Object
[]{
sqlDataCode
.
add
(
new
Object
[]{
2
,
uid
,
nowTime
,
nowTime
,
goblinNftExCodeVo
.
getCodeId
()
2
,
uid
,
nowTime
,
nowTime
,
goblinNftExCodeVo
.
getCodeId
()
});
});
}
// 下单
// 下单
GoblinNftOrderPayParam
payParam
=
GoblinNftOrderPayParam
.
getNew
();
GoblinNftOrderPayParam
payParam
=
GoblinNftOrderPayParam
.
getNew
();
payParam
.
setPayType
(
""
);
payParam
.
setPayType
(
""
);
...
@@ -898,14 +915,18 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
...
@@ -898,14 +915,18 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
// 加积分
// 加积分
goblinOrderUtils
.
integral
(
uid
,
orderVo
.
getPriceActual
(),
"购买数字藏品"
,
1
);
goblinOrderUtils
.
integral
(
uid
,
orderVo
.
getPriceActual
(),
"购买数字藏品"
,
1
);
// 生产藏品列表
// 生产藏品列表
if
(
code
.
equals
(
orderVo
.
getSkuId
()))
{
this
.
generateUserArtwork
(
orderVo
,
5
);
}
else
{
this
.
generateUserArtwork
(
orderVo
,
orderType
==
4
?
31
:
2
);
this
.
generateUserArtwork
(
orderVo
,
orderType
==
4
?
31
:
2
);
}
// 增加销量
// 增加销量
goblinRedisUtils
.
incrSkuSaleCount
(
orderVo
.
getSpuId
(),
orderVo
.
getSkuId
(),
orderVo
.
getNum
());
goblinRedisUtils
.
incrSkuSaleCount
(
orderVo
.
getSpuId
(),
orderVo
.
getSkuId
(),
orderVo
.
getNum
());
// 写入用户订单列表 因取消的订单不展示 所以放在这里
// 写入用户订单列表 因取消的订单不展示 所以放在这里
nftOrderUtils
.
addNftOrderList
(
uid
,
orderVo
.
getOrderId
());
nftOrderUtils
.
addNftOrderList
(
uid
,
orderVo
.
getOrderId
());
// TODO: jxl 2022/4/24 判断技术部NFT记录Redis setBuyNftTec
// TODO: jxl 2022/4/24 判断技术部NFT记录Redis setBuyNftTec
return
ResponseDto
.
success
();
return
ResponseDto
.
success
(
orderVo
.
getOrderId
()
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"NFT兑换异常"
,
e
);
log
.
error
(
"NFT兑换异常"
,
e
);
return
ResponseDto
.
failure
(
"兑换失败,请稍后重试!"
);
return
ResponseDto
.
failure
(
"兑换失败,请稍后重试!"
);
...
@@ -940,7 +961,11 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
...
@@ -940,7 +961,11 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
digitalArtworkVo
.
setUid
(
uid
);
digitalArtworkVo
.
setUid
(
uid
);
digitalArtworkVo
.
setOrderId
(
orderId
);
digitalArtworkVo
.
setOrderId
(
orderId
);
digitalArtworkVo
.
setSource
(
source
);
digitalArtworkVo
.
setSource
(
source
);
if
(
source
==
5
)
{
digitalArtworkVo
.
setState
(
0
);
}
else
{
digitalArtworkVo
.
setState
(
source
==
31
?
5
:
0
);
digitalArtworkVo
.
setState
(
source
==
31
?
5
:
0
);
}
digitalArtworkVo
.
setDelFlg
(
"0"
);
digitalArtworkVo
.
setDelFlg
(
"0"
);
digitalArtworkVo
.
setCreatedAt
(
now
);
digitalArtworkVo
.
setCreatedAt
(
now
);
digitalArtworkVo
.
setAuthor
(
goodsInfoVo
.
getAuthor
());
digitalArtworkVo
.
setAuthor
(
goodsInfoVo
.
getAuthor
());
...
@@ -963,9 +988,11 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
...
@@ -963,9 +988,11 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
if
(
"0"
.
equals
(
goodsSkuInfoVo
.
getUnbox
()))
{
// 非盲盒,NFT发行购买
if
(
"0"
.
equals
(
goodsSkuInfoVo
.
getUnbox
()))
{
// 非盲盒,NFT发行购买
ObjectNode
bizNftBuyNode
=
JsonUtils
.
OM
().
createObjectNode
().
put
(
"nftOrderPayId"
,
orderId
).
put
(
"routerType"
,
goodsSkuInfoVo
.
getRouteType
())
ObjectNode
bizNftBuyNode
=
JsonUtils
.
OM
().
createObjectNode
().
put
(
"nftOrderPayId"
,
orderId
).
put
(
"routerType"
,
goodsSkuInfoVo
.
getRouteType
())
.
put
(
"skuId"
,
skuId
).
put
(
"userId"
,
uid
).
put
(
"buyTimestamp"
,
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
now
));
.
put
(
"skuId"
,
skuId
).
put
(
"userId"
,
uid
).
put
(
"buyTimestamp"
,
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
now
));
if
(
source
!=
5
)
{
queueUtils
.
sendMsgByRedis
(
MQConst
.
GalaxyQueue
.
JSON_NFT_PUBLISH_AND_BUY
.
getKey
(),
bizNftBuyNode
.
toString
());
queueUtils
.
sendMsgByRedis
(
MQConst
.
GalaxyQueue
.
JSON_NFT_PUBLISH_AND_BUY
.
getKey
(),
bizNftBuyNode
.
toString
());
}
}
}
}
}
// Mysql持久化
// Mysql持久化
LinkedList
<
String
>
toMqSqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
String
>
toMqSqls
=
CollectionUtil
.
linkedListString
();
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/MixOrderServiceImpl.java
View file @
4db77df5
...
@@ -447,6 +447,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
...
@@ -447,6 +447,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
for
(
GoblinNftOrder
nftItem
:
nftOrder
)
{
for
(
GoblinNftOrder
nftItem
:
nftOrder
)
{
orderMixStr
=
orderMixStr
.
concat
(
nftItem
.
getOrderId
()).
concat
(
","
);
orderMixStr
=
orderMixStr
.
concat
(
nftItem
.
getOrderId
()).
concat
(
","
);
nftItem
.
setPayCode
(
payCode
);
nftItem
.
setPayCode
(
payCode
);
nftItem
.
setPayType
(
payType
);
sqlDataOrder
.
add
(
new
Object
[]{
sqlDataOrder
.
add
(
new
Object
[]{
nftItem
.
getOrderId
(),
nftItem
.
getSpuId
(),
nftItem
.
getSkuId
(),
nftItem
.
getBoxSkuId
(),
nftItem
.
getOrderId
(),
nftItem
.
getSpuId
(),
nftItem
.
getSkuId
(),
nftItem
.
getBoxSkuId
(),
nftItem
.
getNum
(),
nftItem
.
getStoreId
(),
nftItem
.
getStoreName
(),
nftItem
.
getOrderCode
(),
nftItem
.
getUserId
(),
nftItem
.
getUserName
(),
nftItem
.
getUserMobile
(),
nftItem
.
getPriceTotal
(),
nftItem
.
getPriceCoupon
(),
nftItem
.
getNum
(),
nftItem
.
getStoreId
(),
nftItem
.
getStoreName
(),
nftItem
.
getOrderCode
(),
nftItem
.
getUserId
(),
nftItem
.
getUserName
(),
nftItem
.
getUserMobile
(),
nftItem
.
getPriceTotal
(),
nftItem
.
getPriceCoupon
(),
...
@@ -481,6 +482,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
...
@@ -481,6 +482,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
}
}
GoblinStoreOrder
storeOrder
=
preParam
.
getStoreOrder
();
GoblinStoreOrder
storeOrder
=
preParam
.
getStoreOrder
();
storeOrder
.
setPayCode
(
payCode
);
storeOrder
.
setPayCode
(
payCode
);
storeOrder
.
setPayType
(
payType
);
sqlDataGoblin
.
add
(
new
Object
[]{
sqlDataGoblin
.
add
(
new
Object
[]{
storeOrder
.
getMasterOrderCode
(),
storeOrder
.
getOrderId
(),
storeOrder
.
getStoreId
(),
storeOrder
.
getStoreName
(),
storeOrder
.
getOrderCode
(),
storeOrder
.
getUserId
(),
storeOrder
.
getUserName
(),
storeOrder
.
getUserMobile
(),
storeOrder
.
getPriceTotal
(),
storeOrder
.
getPayCode
(),
storeOrder
.
getMasterOrderCode
(),
storeOrder
.
getOrderId
(),
storeOrder
.
getStoreId
(),
storeOrder
.
getStoreName
(),
storeOrder
.
getOrderCode
(),
storeOrder
.
getUserId
(),
storeOrder
.
getUserName
(),
storeOrder
.
getUserMobile
(),
storeOrder
.
getPriceTotal
(),
storeOrder
.
getPayCode
(),
storeOrder
.
getPriceActual
(),
storeOrder
.
getPriceRefund
(),
storeOrder
.
getPriceExpress
(),
storeOrder
.
getPriceCoupon
(),
storeOrder
.
getStorePriceCoupon
(),
storeOrder
.
getPriceVoucher
(),
storeOrder
.
getStatus
(),
storeOrder
.
getUcouponId
(),
storeOrder
.
getStoreCouponId
(),
storeOrder
.
getPayType
(),
storeOrder
.
getDeviceFrom
(),
storeOrder
.
getPriceActual
(),
storeOrder
.
getPriceRefund
(),
storeOrder
.
getPriceExpress
(),
storeOrder
.
getPriceCoupon
(),
storeOrder
.
getStorePriceCoupon
(),
storeOrder
.
getPriceVoucher
(),
storeOrder
.
getStatus
(),
storeOrder
.
getUcouponId
(),
storeOrder
.
getStoreCouponId
(),
storeOrder
.
getPayType
(),
storeOrder
.
getDeviceFrom
(),
...
...
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