记得上下班打卡 | 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
c032b792
Commit
c032b792
authored
Jul 15, 2022
by
张禹
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'pre' into 'master'
Pre See merge request
!272
parents
422271e1
bfea80d5
Changes
45
Hide whitespace changes
Inline
Side-by-side
Showing
45 changed files
with
1919 additions
and
46 deletions
+1919
-46
GoblinRedisConst.java
...m/liquidnet/service/goblin/constant/GoblinRedisConst.java
+3
-0
IGoblinNftOrderService.java
...uidnet/service/goblin/service/IGoblinNftOrderService.java
+2
-1
KylinRedisConst.java
...com/liquidnet/service/kylin/constant/KylinRedisConst.java
+4
-0
KylinAcitveParam.java
...m/liquidnet/service/kylin/dto/param/KylinAcitveParam.java
+73
-0
IKylinArActiveService.java
...iquidnet/service/kylin/service/IKylinArActiveService.java
+16
-0
IKylinAcitveService.java
...dnet/service/kylin/service/admin/IKylinAcitveService.java
+23
-0
IKylinTicketActiveService.java
...ervice/kylin/service/admin/IKylinTicketActiveService.java
+20
-0
BusinessType.java
...com/liquidnet/client/admin/common/enums/BusinessType.java
+5
-0
LocalAdminController.java
...t/admin/web/controller/zhengzai/LocalAdminController.java
+16
-0
GoblinGagoController.java
.../web/controller/zhengzai/goblin/GoblinGagoController.java
+124
-0
KylinAcitveController.java
.../web/controller/zhengzai/kylin/KylinAcitveController.java
+75
-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
activityList.html
...ates/zhengzai/sweet/performanceActivity/activityList.html
+114
-0
createActivity.html
...es/zhengzai/sweet/performanceActivity/createActivity.html
+110
-0
ticketList.html
...plates/zhengzai/sweet/performanceActivity/ticketList.html
+91
-0
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
+105
-2
ActiveTicketExportVo.java
...client/admin/zhengzai/kylin/dto/ActiveTicketExportVo.java
+39
-0
KylinAcitveServiceImpl.java
...n/zhengzai/kylin/service/impl/KylinAcitveServiceImpl.java
+87
-0
KylinTicketActiveServiceImpl.java
...gzai/kylin/service/impl/KylinTicketActiveServiceImpl.java
+58
-0
IDGenerator.java
...ain/java/com/liquidnet/commons/lang/util/IDGenerator.java
+26
-0
liquidnet-service-order.yml
...t-bus-config/liquidnet-config/liquidnet-service-order.yml
+1
-0
KylinAcitve.java
...ain/java/com/liquidnet/service/kylin/dao/KylinAcitve.java
+66
-0
KylinTicketActive.java
...va/com/liquidnet/service/kylin/dao/KylinTicketActive.java
+73
-0
KylinAcitveMapper.java
...com/liquidnet/service/kylin/mapper/KylinAcitveMapper.java
+16
-0
KylinTicketActiveMapper.java
...quidnet/service/kylin/mapper/KylinTicketActiveMapper.java
+16
-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
GoblinCouponController.java
...net/service/goblin/controller/GoblinCouponController.java
+17
-2
GoblinFrontServiceImpl.java
...t/service/goblin/service/impl/GoblinFrontServiceImpl.java
+17
-2
TestRedisUtil.java
...java/com/liquidnet/service/goblin/test/TestRedisUtil.java
+39
-0
db_kylin_structure.sql
.../liquidnet-service-kylin-impl/docu/db_kylin_structure.sql
+45
-0
KylinArActiveController.java
...net/service/kylin/controller/KylinArActiveController.java
+53
-0
KylinArActiveServiceImpl.java
.../service/kylin/service/impl/KylinArActiveServiceImpl.java
+60
-0
DataUtils.java
...ain/java/com/liquidnet/service/kylin/utils/DataUtils.java
+19
-0
sqlmap.properties
...t-service-kylin-impl/src/main/resources/sqlmap.properties
+3
-1
TestDataUtil.java
...c/test/java/com/liquidnet/service/kylin/TestDataUtil.java
+4
-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 @
c032b792
...
...
@@ -342,4 +342,7 @@ public class GoblinRedisConst {
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 @
c032b792
...
...
@@ -26,5 +26,6 @@ public interface IGoblinNftOrderService {
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-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/constant/KylinRedisConst.java
View file @
c032b792
...
...
@@ -91,4 +91,8 @@ public class KylinRedisConst {
public
static
final
String
REDIS_WQ_ORDER_FIX
=
"kylin:wq:order:"
;
//纪录万青 订单填写快递地址
public
static
final
String
REDIS_WQ_ORDER_EXPRESS
=
"kylin:wq:pxress:order:"
;
//万青补偿快递vo 订单填写快递地址
public
static
final
String
ACTIVE_TICKET_AR_TICKET
=
"kylin:active:ar:ticket:"
;
//互动券
public
static
final
String
ACTIVE_TICKET_AR_USER
=
"kylin:active:ar:user:"
;
//互动券 绑定的用户
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/param/KylinAcitveParam.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
param
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
/**
* <p>
*
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
KylinAcitveParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
Long
mid
;
/**
* 活动名称
*/
@ApiModelProperty
(
value
=
"活动名称"
)
private
String
activeName
;
/**
* 券的数量
*/
@ApiModelProperty
(
value
=
"券的数量"
)
private
Integer
number
;
/**
* activeId
*/
@ApiModelProperty
(
value
=
"activeId"
)
private
String
activeId
;
/**
* 创建时间
*/
@ApiModelProperty
(
value
=
"创建时间"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
DateUtil
.
DATE_FULL_STR
)
private
LocalDateTime
createdAt
;
/**
* 修改时间
*/
@ApiModelProperty
(
value
=
"修改时间"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
DateUtil
.
DATE_FULL_STR
)
private
LocalDateTime
updatedAt
;
/**
* 0未删除1已删除
*/
@ApiModelProperty
(
value
=
"0未删除1已删除"
)
private
Integer
delTag
;
/**
* 演出id
*/
@ApiModelProperty
(
value
=
"演出id"
)
private
String
performanceId
;
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/service/IKylinArActiveService.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
service
.
kylin
.
service
;
import
com.liquidnet.service.base.ResponseDto
;
/**
* ar前端接口
*/
public
interface
IKylinArActiveService
{
/**
* 兑换
* @param code
* @param uid
* @return
*/
ResponseDto
exchange
(
String
code
,
String
uid
);
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/service/admin/IKylinAcitveService.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
service
.
kylin
.
service
.
admin
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.kylin.dao.KylinAcitve
;
import
java.util.List
;
/**
* <p>
* 服务类
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
public
interface
IKylinAcitveService
extends
IService
<
KylinAcitve
>
{
boolean
addKylinAcitve
(
KylinAcitve
kylinAcitve
);
List
<
KylinAcitve
>
pageKylinAcitve
(
int
pageSize
,
int
pageNumber
);
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/service/admin/IKylinTicketActiveService.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
service
.
kylin
.
service
.
admin
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.liquidnet.service.kylin.dao.KylinTicketActive
;
import
java.util.List
;
/**
* <p>
* 跟活动绑定的券 服务类
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
public
interface
IKylinTicketActiveService
extends
IService
<
KylinTicketActive
>
{
List
<
KylinTicketActive
>
pageKylinAcitve
(
int
pageSize
,
int
pageNumber
,
String
activeId
);
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-common/src/main/java/com/liquidnet/client/admin/common/enums/BusinessType.java
View file @
c032b792
...
...
@@ -139,4 +139,9 @@ public enum BusinessType
* 修改
*/
PERFORMANCE_SAVE
,
/**
* 内部操作
*/
INNER_OPERATION
,
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/LocalAdminController.java
View file @
c032b792
...
...
@@ -19,6 +19,7 @@ public class LocalAdminController extends BaseController
private
final
String
stonePrefix
=
"zhengzai/stone"
;
private
final
String
storePrefix
=
"zhengzai/store"
;
private
final
String
smilePrefix
=
"zhengzai/smile"
;
private
final
String
activityPrefix
=
"zhengzai/sweet"
;
@Value
(
"${liquidnet.client.admin.platformUrl}"
)
private
String
platformUrl
;
...
...
@@ -184,5 +185,20 @@ public class LocalAdminController extends BaseController
{
return
storePrefix
+
"/homeSet/newRecommended"
;
}
@GetMapping
(
"/performanceActivity"
)
// 活动关联券部分
public
String
performanceActivity
()
{
return
activityPrefix
+
"/performanceActivity/activityList"
;
}
@GetMapping
(
"/createActivityModal"
)
// 创建活动
public
String
createActivityModal
()
{
return
activityPrefix
+
"/performanceActivity/createActivity"
;
}
@GetMapping
(
"/activityTicketList"
)
// 活动关联券部分
public
String
activityTicketList
()
{
return
activityPrefix
+
"/performanceActivity/ticketList"
;
}
}
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 @
c032b792
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
(
"该序号已被占用"
);
}
//
int
count
=
goblinRedisUtils
.
decrSkuStock
(
null
,
skuId
,
1
);
if
(
count
<
0
){
goblinRedisUtils
.
incrSkuStock
(
null
,
skuId
,
1
);
goblinRedisUtils
.
removeNftList
(
skuId
,
nftNum
+
""
);
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/java/com/liquidnet/client/admin/web/controller/zhengzai/kylin/KylinAcitveController.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
client
.
admin
.
web
.
controller
.
zhengzai
.
kylin
;
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
;
import
com.liquidnet.client.admin.zhengzai.kylin.dto.ActiveTicketExportVo
;
import
com.liquidnet.client.admin.zhengzai.kylin.service.impl.KylinAcitveServiceImpl
;
import
com.liquidnet.client.admin.zhengzai.kylin.service.impl.KylinTicketActiveServiceImpl
;
import
com.liquidnet.service.kylin.dao.KylinAcitve
;
import
com.liquidnet.service.kylin.dto.param.KylinAcitveParam
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* <p>
* 前端控制器 活动有关的
* </p>
* @author zhangfuxin
* @since 2022-07-12
*/
@Api
(
tags
=
"活动和券的接口"
)
@RestController
@RequestMapping
(
"/kylin-acitve"
)
public
class
KylinAcitveController
extends
BaseController
{
@Autowired
private
KylinAcitveServiceImpl
kylinAcitveService
;
@Autowired
private
KylinTicketActiveServiceImpl
kylinTicketActiveService
;
@PostMapping
(
"add"
)
@ApiOperation
(
value
=
"增加活动"
)
@ResponseBody
public
AjaxResult
add
(
@RequestBody
KylinAcitveParam
kylinAcitveParam
)
{
KylinAcitve
kylinAcitve
=
new
KylinAcitve
();
BeanUtils
.
copyProperties
(
kylinAcitveParam
,
kylinAcitve
);
kylinAcitveService
.
addKylinAcitve
(
kylinAcitve
);
return
AjaxResult
.
success
(
"操作成功"
,
""
);
}
@PostMapping
(
"pageActive"
)
@ApiOperation
(
value
=
"分页活动"
)
@ResponseBody
public
TableDataInfo
pageActive
(
@RequestParam
(
name
=
"pageSize"
,
required
=
true
)
int
pageSize
,
@RequestParam
(
name
=
"pageNum"
,
required
=
true
)
int
pageNum
)
{
//return AjaxResult.success(kylinAcitveService.pageKylinAcitve(pageSize,pageNum));
return
getDataTable
(
kylinAcitveService
.
pageKylinAcitve
(
pageSize
,
pageNum
));
}
@PostMapping
(
"pageActiveTicket"
)
@ApiOperation
(
value
=
"分页券"
)
@ResponseBody
public
TableDataInfo
pageActiveTicket
(
@RequestParam
(
name
=
"pageSize"
,
required
=
true
)
int
pageSize
,
@RequestParam
(
name
=
"pageNum"
,
required
=
true
)
int
pageNum
,
@RequestParam
(
name
=
"activeId"
,
required
=
true
)
String
activeId
)
{
//return AjaxResult.success(kylinTicketActiveService.pageKylinAcitve(pageSize,pageNum,activeId));
return
getDataTable
(
kylinTicketActiveService
.
pageKylinAcitve
(
pageSize
,
pageNum
,
activeId
));
}
@PostMapping
(
"exportTicket"
)
@ApiOperation
(
value
=
"导出券"
)
@ResponseBody
public
AjaxResult
exportTicket
(
@RequestParam
(
name
=
"activeId"
,
required
=
true
)
String
activeId
,
@RequestParam
(
name
=
"activeName"
,
required
=
true
)
String
activeName
)
{
List
<
ActiveTicketExportVo
>
list
=
kylinTicketActiveService
.
exportTicket
(
activeId
);
if
(
list
.
size
()>
0
){
ExcelUtil
<
ActiveTicketExportVo
>
util
=
new
ExcelUtil
(
ActiveTicketExportVo
.
class
);
return
util
.
exportExcel
(
list
,
activeName
+
""
);
}
return
error
(
"查无信息!"
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/static/js/remote-search-nft.js
0 → 100644
View file @
c032b792
;(
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 @
c032b792
<!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 @
c032b792
...
...
@@ -101,14 +101,14 @@
<table
id=
"team-table_user"
class=
"table table-condensed table-sm"
th:border=
"1"
>
<tr>
<td>
名称
</td>
<td>
介绍
</td
>
<!-- <td>介绍</td>--
>
<tr/>
<div
th:each=
"item : ${smileVolunteersDetailsVo.teamArray}"
>
<tr
class=
"content-tr"
>
<td
th:value=
"${item.name}"
th:text=
"${item.name}"
>
</td>
<td
th:text=
"${item.introduce}"
>
</td
>
<!-- <td th:text="${item.introduce}">--
>
<!-- </td>--
>
</tr>
</div>
</table>
...
...
@@ -118,15 +118,15 @@
<table
id=
"team-table"
class=
"table table-condensed table-sm"
th:border=
"1"
>
<tr>
<td>
名称
</td>
<td>
介绍
</td
>
<!-- <td>介绍</td>--
>
<td>
选中
</td>
<tr/>
<div
th:each=
"item : ${listData}"
>
<tr
class=
"content-tr"
>
<td
th:value=
"${item.name}"
th:text=
"${item.name}"
>
</td>
<td
th:text=
"${item.introduce}"
>
</td
>
<!-- <td th:text="${item.introduce}">--
>
<!-- </td>--
>
<td>
<input
name=
"teamCheck"
type=
"radio"
th:value=
"${item.teamId}"
>
选中
</label>
</td>
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/sweet/performanceActivity/activityList.html
0 → 100644
View file @
c032b792
<!DOCTYPE html>
<html
lang=
"zh"
xmlns:th=
"http://www.thymeleaf.org"
xmlns:shiro=
"http://www.pollix.at/thymeleaf/shiro"
>
<head>
<th:block
th:include=
"include :: header('积分明细')"
/>
<style>
body
.layui-layer-btn
{
display
:
none
!important
;
}
</style>
</head>
<body
class=
"gray-bg"
>
<div
class=
"container-div"
>
<div
class=
"row"
>
<!-- <div class="col-sm-12 search-collapse">
<form id="coupon-form">
<div class="select-list">
<ul>
<input type="hidden" name="couType" th:value="${couType}"/>
<li>
<input type="text" name="mobile" placeholder="请输入手机号码"/>
</li>
<li>
状态:
<select name="status" id="">
<option value="0">全部</option>
<option value="1">正常</option>
<option value="2">冻结</option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i> 重置</a>
</li>
</ul>
</div>
</form>
</div> -->
<div
class=
"btn-group-sm"
id=
"toolbar"
role=
"group"
>
<a
class=
"btn btn-primary"
onclick=
"exportSelected()"
shiro:hasPermission=
"monitor:job:export"
>
创建活动
</a>
</div>
<div
class=
"col-sm-12 select-table table-striped"
>
<table
id=
"bootstrap-table"
></table>
</div>
</div>
</div>
<th:block
th:include=
"include :: footer"
/>
<script
th:inline=
"javascript"
>
var
prefix
=
ctx
+
"stone/logs"
;
var
prefix2
=
ctx
+
"local"
;
var
couType
=
[[
$
{
couType
}]];
$
(
function
()
{
var
options
=
{
url
:
'/kylin-acitve/pageActive'
,
pagination
:
true
,
modalName
:
"积分"
,
columns
:
[
{
field
:
'activeName'
,
title
:
'活动名称'
},
{
field
:
'number'
,
title
:
'券数量'
},
{
title
:
'操作'
,
// align: 'center',
formatter
:
function
(
value
,
row
,
index
)
{
let
dataArr
=
[];
dataArr
.
push
(
`<span class="btn btn-warning btn-xs" href="javascript:void(0)" onclick="opendTicketList('
${
row
.
activeId
}
')"><i class="fa fa-search"></i>查看券列表</span>`
)
return
dataArr
.
join
(
' '
)
}
}]
};
$
.
table
.
init
(
options
);
});
function
opendTicketList
(
id
)
{
console
.
log
(
id
,
'121212121212activityTicketList'
)
var
url
=
prefix2
+
'/activityTicketList?id='
+
id
;
$
.
modal
.
openTab
(
"活动券列表"
,
url
);
}
function
openModal
(
uid
,
status
,
title
)
{
$
.
modal
.
confirm
(
title
,
function
()
{
let
data
=
{
status
,
uid
}
$
.
ajax
({
type
:
'put'
,
url
:
prefix
+
'/change/status'
,
data
,
success
:
function
(
e
)
{
$
(
"button[name=refresh]"
).
click
();
}
})
});
}
// 导出数据
function
exportSelected
()
{
// console.log(userIds.toString(), 'dataParam')
$
.
modal
.
open
(
'创建活动'
,
prefix2
+
"/createActivityModal"
,
500
,
260
,
cancel
)
}
function
cancel
()
{
console
.
log
(
'确定按钮?'
)
}
</script>
</body>
</html>
\ No newline at end of file
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/sweet/performanceActivity/createActivity.html
0 → 100644
View file @
c032b792
<!DOCTYPE html>
<html
lang=
"zh"
xmlns:th=
"http://www.thymeleaf.org"
xmlns:shiro=
"http://www.pollix.at/thymeleaf/shiro"
>
<head>
<th:block
th:include=
"include :: header('创建活动')"
/>
<th:block
th:include=
"include :: bootstrap-fileinput-css"
/>
<style>
.create_activity_box
{
padding
:
20px
;
}
.items
{
/* border: 1px dashed #ccc; */
border-radius
:
10px
;
padding
:
12px
;
margin-bottom
:
10px
;
}
label
{
width
:
80px
;
text-align
:
right
;
}
input
{
width
:
200px
;
height
:
30px
;
}
.footer_btn
{
margin-top
:
20px
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
select
{
height
:
30px
;
width
:
200px
;
}
</style>
</head>
<body>
<div
class=
"create_activity_box"
>
<div
class=
"items"
>
<label><span
style=
"color: red;"
>
*
</span>
活动名称:
</label>
<input
type=
"text"
id=
"activityName"
/>
</div>
<!-- <div class="items">
关联演出:
<select name="tagType">
<option value="">全部</option>
<option>1</option>
<option>1</option>
<option>1</option>
<option>1</option>
</select>
</div> -->
<div
class=
"items"
>
<label><span
style=
"color: red;"
>
*
</span>
券数量:
</label>
<input
type=
"text"
id=
"ticketNum"
/>
</div>
<div
class=
"footer_btn"
>
<button
type=
"button"
class=
"btn btn-success"
onclick=
"save()"
>
保存
</button>
</div>
</div>
<th:block
th:include=
"include :: footer"
/>
<th:block
th:include=
"include :: bootstrap-fileinput-js"
/>
<th:block
th:include=
"include :: bootstrap-suggest-js"
/>
<script
th:inline=
"javascript"
>
var
prefix2
=
ctx
+
"local"
;
var
platformUrl
=
[[
$
{
platformUrl
}]];
let
count
=
0
;
let
compilationsId
=
''
;
let
createTime
=
''
;
let
cubeId
=
''
;
let
mid
=
''
;
let
updateTime
=
''
;
function
save
()
{
let
activityName
=
$
(
"#activityName"
).
val
();
let
ticketNum
=
$
(
"#ticketNum"
).
val
();
if
(
!
activityName
||
!
ticketNum
)
{
layer
.
msg
(
'请将表单填写完整!'
)
}
let
data
=
{
"activeId"
:
""
,
"activeName"
:
activityName
,
"delTag"
:
0
,
"mid"
:
0
,
"number"
:
ticketNum
,
"performanceId"
:
""
}
promiseMethods
(
'/kylin-acitve/add'
,
'post'
,
JSON
.
stringify
(
data
),
'application/json'
).
then
((
res
)
=>
{
layer
.
msg
(
"保存成功!"
)
$
(
"#activityName"
).
val
(
''
)
$
(
"#ticketNum"
).
val
(
''
)
$
.
operate
.
successCallback
(
res
);
})
}
function
promiseMethods
(
url
,
type
,
data
,
contentType
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
$
.
ajax
({
url
,
type
,
data
,
contentType
,
success
:
function
(
res
)
{
resolve
(
res
);
}
})
})
}
</script>
</body>
</html>
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/sweet/performanceActivity/ticketList.html
0 → 100644
View file @
c032b792
<!DOCTYPE html>
<html
lang=
"zh"
xmlns:th=
"http://www.thymeleaf.org"
xmlns:shiro=
"http://www.pollix.at/thymeleaf/shiro"
>
<head>
<th:block
th:include=
"include :: header('积分明细')"
/>
<style>
body
.layui-layer-btn
{
display
:
none
!important
;
}
</style>
</head>
<body
class=
"gray-bg"
>
<div
class=
"container-div"
>
<div
class=
"row"
>
<div
class=
"btn-group-sm"
id=
"toolbar"
role=
"group"
>
<a
class=
"btn btn-warning"
onclick=
"exportSelected()"
>
<i
class=
"fa fa-download"
></i>
导出
</a>
</div>
<div
class=
"col-sm-12 select-table table-striped"
>
<table
id=
"bootstrap-table"
></table>
</div>
</div>
</div>
<th:block
th:include=
"include :: footer"
/>
<script
th:inline=
"javascript"
>
var
prefix
=
ctx
+
"stone/logs"
;
var
prefix2
=
ctx
+
"local"
;
var
couType
=
[[
$
{
couType
}]];
let
id
=
''
$
(
function
()
{
var
options
=
{
url
:
'/kylin-acitve/pageActiveTicket'
,
pagination
:
true
,
modalName
:
"积分"
,
queryParams
:
queryParams
,
columns
:
[
{
field
:
'code'
,
title
:
'券码'
},
{
field
:
'state'
,
title
:
'券状态'
,
formatter
:
function
(
value
,
row
)
{
if
(
value
==
1
)
{
return
'未兑换'
}
else
if
(
value
==
2
)
{
return
'已兑换'
}
else
{
return
'已失效'
}
}
},
{
field
:
'redeemAt'
,
title
:
'使用时间'
}]
};
$
.
table
.
init
(
options
);
});
function
queryParams
(
params
)
{
let
name
=
'id'
;
var
reg
=
new
RegExp
(
"(^|&)"
+
name
+
"=([^&]*)(&|$)"
);
var
r
=
window
.
location
.
search
.
substr
(
1
).
match
(
reg
);
id
=
unescape
(
r
[
2
]);
var
search
=
$
.
table
.
queryParams
(
params
);
search
.
activeId
=
id
;
return
search
;
}
function
opendTicketList
(
id
)
{
var
url
=
prefix2
+
'activityTicketList?id='
+
id
;
$
.
modal
.
openTab
(
"活动券列表"
,
url
);
}
// 导出数据
function
exportSelected
()
{
$
.
ajax
({
type
:
'post'
,
url
:
'/kylin-acitve/exportTicket'
,
data
:
{
activeId
:
id
,
activeName
:
'dasdas'
},
success
:
function
(
res
)
{
console
.
log
(
res
,
'????'
)
window
.
location
.
href
=
ctx
+
"common/download?fileName="
+
encodeURI
(
res
.
msg
)
+
"&delete="
+
true
;
}
})
}
</script>
</body>
</html>
\ No newline at end of file
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/pom.xml
View file @
c032b792
...
...
@@ -151,6 +151,11 @@
<artifactId>
liquidnet-service-goblin-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.liquidnet
</groupId>
<artifactId>
liquidnet-service-galaxy-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.liquidnet
</groupId>
<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 @
c032b792
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 @
c032b792
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
goblin
.
utils
;
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.dto.vo.GoblinMarketingZhengzaiRelationVo
;
import
com.liquidnet.service.goblin.dto.vo.GoblinSelfMarketingVo
;
import
com.liquidnet.service.goblin.constant.GoblinStatusConst
;
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.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
@Component
...
...
@@ -131,4 +139,99 @@ public class GoblinRedisUtils {
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
;
}
//删除 nft序号站位list
public
boolean
removeNftList
(
String
skuId
,
String
num
)
{
String
redisKey
=
GoblinRedisConst
.
GOBLIN_NUM_LIST
.
concat
(
skuId
);
List
<
String
>
voList
=
getNftList
(
skuId
);
voList
.
remove
(
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
);
}
//减少库存
public
int
decrSkuStock
(
String
marketPre
,
String
skuId
,
Integer
stock
)
{
String
rk
=
GoblinRedisConst
.
REAL_STOCK_SKU
;
if
(
marketPre
!=
null
&&
!
marketPre
.
equals
(
"null"
))
{
rk
=
rk
.
concat
(
marketPre
+
":"
);
}
rk
=
rk
.
concat
(
skuId
);
return
(
int
)
redisDataSourceUtil
.
getRedisGoblinUtil
().
decr
(
rk
,
stock
);
}
//增加库存
public
int
incrSkuStock
(
String
marketPre
,
String
skuId
,
Integer
stock
)
{
String
rk
=
GoblinRedisConst
.
REAL_STOCK_SKU
;
if
(
marketPre
!=
null
&&
!
marketPre
.
equals
(
"null"
))
{
rk
=
rk
.
concat
(
marketPre
+
":"
);
}
rk
=
rk
.
concat
(
skuId
);
return
(
int
)
redisDataSourceUtil
.
getRedisGoblinUtil
().
incr
(
rk
,
stock
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/dto/ActiveTicketExportVo.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
dto
;
import
com.liquidnet.client.admin.common.annotation.Excel
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
ActiveTicketExportVo
implements
Serializable
,
Cloneable
{
@Excel
(
name
=
"券码"
,
cellType
=
Excel
.
ColumnType
.
STRING
)
private
String
code
;
/**
* 兑换码状态 1未兑换 2已兑换 3已失效
*/
@Excel
(
name
=
"兑换码状态"
,
cellType
=
Excel
.
ColumnType
.
STRING
)
private
String
state
;
/**
* 兑换用户id
*/
@Excel
(
name
=
"兑换用户id"
,
cellType
=
Excel
.
ColumnType
.
STRING
)
private
String
redeemUid
;
private
static
final
ActiveTicketExportVo
obj
=
new
ActiveTicketExportVo
();
public
static
ActiveTicketExportVo
getNew
()
{
try
{
return
(
ActiveTicketExportVo
)
obj
.
clone
();
}
catch
(
CloneNotSupportedException
e
)
{
e
.
printStackTrace
();
}
return
new
ActiveTicketExportVo
();
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/service/impl/KylinAcitveServiceImpl.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.github.pagehelper.PageHelper
;
import
com.liquidnet.common.cache.redis.util.RedisDataSourceUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.service.kylin.constant.KylinRedisConst
;
import
com.liquidnet.service.kylin.dao.KylinAcitve
;
import
com.liquidnet.service.kylin.dao.KylinTicketActive
;
import
com.liquidnet.service.kylin.mapper.KylinAcitveMapper
;
import
com.liquidnet.service.kylin.mapper.KylinTicketActiveMapper
;
import
com.liquidnet.service.kylin.service.admin.IKylinTicketActiveService
;
import
com.liquidnet.service.kylin.service.admin.IKylinAcitveService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* <p>
* 服务实现类
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
@Service
public
class
KylinAcitveServiceImpl
extends
ServiceImpl
<
KylinAcitveMapper
,
KylinAcitve
>
implements
IKylinAcitveService
{
@Autowired
private
KylinAcitveMapper
kylinAcitveMapper
;
@Autowired
private
KylinTicketActiveMapper
kylinTicketActiveMapper
;
@Autowired
private
IKylinTicketActiveService
iKylinTicketActiveService
;
@Autowired
RedisDataSourceUtil
redisDataSourceUtil
;
@Override
@Transactional
public
boolean
addKylinAcitve
(
KylinAcitve
kylinAcitve
)
{
kylinAcitve
.
setActiveId
(
IDGenerator
.
nextSnowId
());
kylinAcitve
.
setCreatedAt
(
LocalDateTime
.
now
());
kylinAcitve
.
setUpdatedAt
(
LocalDateTime
.
now
());
kylinAcitve
.
setDelTag
(
0
);
//保存活动
kylinAcitveMapper
.
insert
(
kylinAcitve
);
//创建券
iKylinTicketActiveService
.
saveBatch
(
getKylinTicketActive
(
kylinAcitve
.
getNumber
(),
kylinAcitve
.
getActiveId
()));
return
true
;
}
@Override
public
List
<
KylinAcitve
>
pageKylinAcitve
(
int
pageSize
,
int
pageNumber
)
{
PageHelper
.
startPage
(
pageNumber
,
pageSize
);
LambdaQueryWrapper
<
KylinAcitve
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
KylinAcitve
.
class
);
List
<
KylinAcitve
>
list
=
kylinAcitveMapper
.
selectList
(
queryWrapper
);
return
list
;
}
public
List
<
KylinTicketActive
>
getKylinTicketActive
(
int
number
,
String
activeId
){
List
<
KylinTicketActive
>
list
=
new
ArrayList
<>();
if
(
number
>
0
){
for
(
int
i
=
0
;
i
<
number
;
i
++){
KylinTicketActive
kylinTicketActive
=
new
KylinTicketActive
();
kylinTicketActive
.
setTicketId
(
IDGenerator
.
nextSnowId
());
kylinTicketActive
.
setActivityId
(
activeId
);
kylinTicketActive
.
setCode
(
IDGenerator
.
createCodeAz
(
3
,
4
,
true
));
kylinTicketActive
.
setState
(
1
);
kylinTicketActive
.
setCreatedAt
(
LocalDateTime
.
now
());
kylinTicketActive
.
setUpdatedAt
(
LocalDateTime
.
now
());
kylinTicketActive
.
setDelTag
(
0
);
list
.
add
(
kylinTicketActive
);
//redis 存
redisDataSourceUtil
.
getRedisKylinUtil
().
set
(
KylinRedisConst
.
ACTIVE_TICKET_AR_TICKET
+
kylinTicketActive
.
getCode
(),
kylinTicketActive
);
}
return
list
;
}
return
null
;
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/service/impl/KylinTicketActiveServiceImpl.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.github.pagehelper.PageHelper
;
import
com.liquidnet.client.admin.zhengzai.kylin.dto.ActiveTicketExportVo
;
import
com.liquidnet.service.kylin.dao.KylinTicketActive
;
import
com.liquidnet.service.kylin.mapper.KylinTicketActiveMapper
;
import
com.liquidnet.service.kylin.service.admin.IKylinTicketActiveService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* <p>
* 跟活动绑定的券 服务实现类
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
@Service
public
class
KylinTicketActiveServiceImpl
extends
ServiceImpl
<
KylinTicketActiveMapper
,
KylinTicketActive
>
implements
IKylinTicketActiveService
{
@Autowired
private
KylinTicketActiveMapper
kylinTicketActiveMapper
;
@Override
public
List
<
KylinTicketActive
>
pageKylinAcitve
(
int
pageSize
,
int
pageNumber
,
String
activeId
)
{
PageHelper
.
startPage
(
pageNumber
,
pageSize
);
LambdaQueryWrapper
<
KylinTicketActive
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
KylinTicketActive
.
class
);
queryWrapper
.
eq
(
KylinTicketActive:
:
getActivityId
,
activeId
);
List
<
KylinTicketActive
>
list
=
kylinTicketActiveMapper
.
selectList
(
queryWrapper
);
return
list
;
}
public
List
<
ActiveTicketExportVo
>
exportTicket
(
String
activeId
)
{
LambdaQueryWrapper
<
KylinTicketActive
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
KylinTicketActive
.
class
);
queryWrapper
.
eq
(
KylinTicketActive:
:
getActivityId
,
activeId
);
List
<
KylinTicketActive
>
list
=
kylinTicketActiveMapper
.
selectList
(
queryWrapper
);
List
<
ActiveTicketExportVo
>
voList
=
new
ArrayList
();
for
(
KylinTicketActive
item
:
list
)
{
ActiveTicketExportVo
activeTicketExportVo
=
ActiveTicketExportVo
.
getNew
();
activeTicketExportVo
.
setCode
(
item
.
getCode
());
activeTicketExportVo
.
setRedeemUid
(
item
.
getRedeemUid
()==
null
?
""
:
item
.
getRedeemUid
());
if
(
item
.
getState
()==
1
){
activeTicketExportVo
.
setState
(
"未兑换"
);
}
else
if
(
item
.
getState
()==
2
){
activeTicketExportVo
.
setState
(
"已兑换"
);
}
else
{
activeTicketExportVo
.
setState
(
"已失效"
);
}
voList
.
add
(
activeTicketExportVo
);
}
return
voList
;
}
}
liquidnet-bus-common/liquidnet-common-base/src/main/java/com/liquidnet/commons/lang/util/IDGenerator.java
View file @
c032b792
...
...
@@ -180,4 +180,30 @@ public class IDGenerator {
return
str
.
toString
()+
"CH"
;
}
/**
*创建互动兑换券的code
*/
public
static
String
createCodeAz
(
int
num
,
int
sec
,
boolean
bol
)
{
StringBuffer
str
=
new
StringBuffer
();
for
(
int
k
=
0
;
k
<
num
;
k
++)
{
for
(
int
i
=
0
;
i
<
sec
;
i
++){
int
intVal
=(
int
)(
Math
.
random
()*
58
+
65
);
if
(
intVal
>=
91
&&
intVal
<=
122
){
i
--;
}
if
(
intVal
<
91
||
intVal
>
122
){
if
(
intVal
%
2
==
0
){
str
.
append
((
char
)
intVal
);
}
else
{
str
.
append
((
int
)(
Math
.
random
()*
10
));
}
}
}
if
(
bol
){
str
.
append
(
"-"
);
}
}
return
str
.
toString
()+
"AZ"
;
}
}
liquidnet-bus-config/liquidnet-config/liquidnet-service-order.yml
View file @
c032b792
...
...
@@ -108,6 +108,7 @@ global-auth:
-
${liquidnet.info.context}/goblin/nft/refundSyncOrder
-
${liquidnet.info.context}/goblin/nft/airdrop
-
${liquidnet.info.context}/mix/syncOrder
-
${liquidnet.info.context}/goblin/nft/airdropInner
# -----------------------------------------------------------
# -----------------------------------------------------------
...
...
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/dao/KylinAcitve.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
service
.
kylin
.
dao
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
/**
* <p>
*
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
KylinAcitve
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@TableId
(
value
=
"mid"
,
type
=
IdType
.
AUTO
)
private
Long
mid
;
/**
* 活动名称
*/
@TableField
(
"activeName"
)
private
String
activeName
;
/**
* 券的数量
*/
private
Integer
number
;
/**
* activeId
*/
private
String
activeId
;
/**
* 创建时间
*/
private
LocalDateTime
createdAt
;
/**
* 修改时间
*/
private
LocalDateTime
updatedAt
;
/**
* 0未删除1已删除
*/
private
Integer
delTag
;
/**
* 演出id
*/
private
String
performanceId
;
}
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/dao/KylinTicketActive.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
service
.
kylin
.
dao
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
java.time.LocalDateTime
;
import
java.io.Serializable
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* <p>
* 跟活动绑定的券
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
KylinTicketActive
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@TableId
(
value
=
"mid"
,
type
=
IdType
.
AUTO
)
private
Long
mid
;
/**
* 票id
*/
private
String
ticketId
;
/**
* 兑换码
*/
private
String
code
;
/**
* 兑换码状态 1未兑换 2已兑换 3已失效
*/
private
Integer
state
;
/**
* 兑换用户id
*/
private
String
redeemUid
;
/**
* 兑换时间
*/
private
LocalDateTime
redeemAt
;
/**
* 活动id
*/
private
String
activityId
;
/**
* 创建时间
*/
private
LocalDateTime
createdAt
;
/**
* 更新时间
*/
private
LocalDateTime
updatedAt
;
/**
* 0未删除1已删除
*/
private
Integer
delTag
;
}
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/mapper/KylinAcitveMapper.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
service
.
kylin
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.liquidnet.service.kylin.dao.KylinAcitve
;
/**
* <p>
* Mapper 接口
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
public
interface
KylinAcitveMapper
extends
BaseMapper
<
KylinAcitve
>
{
}
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/mapper/KylinTicketActiveMapper.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
service
.
kylin
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.liquidnet.service.kylin.dao.KylinTicketActive
;
/**
* <p>
* 跟活动绑定的券 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
public
interface
KylinTicketActiveMapper
extends
BaseMapper
<
KylinTicketActive
>
{
}
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-common/src/main/java/com/liquidnet/service/galaxy/biz/GalaxyTradeBiz.java
0 → 100644
View file @
c032b792
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 @
c032b792
...
...
@@ -9,6 +9,7 @@ import com.liquidnet.commons.lang.util.*;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.galaxy.biz.GalaxyBeanTransferBiz
;
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.GalaxyErrorEnum
;
import
com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBindBo
;
...
...
@@ -29,6 +30,8 @@ import org.springframework.stereotype.Component;
import
java.io.UnsupportedEncodingException
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
...
...
@@ -57,6 +60,11 @@ public class ZxinTradeCommonBiz {
@Autowired
private
GalaxyBeanTransferBiz
galaxyBeanTransferBiz
;
@Autowired
private
GalaxyTradeBiz
galaxyTradeBiz
;
private
ExecutorService
executorService
=
Executors
.
newFixedThreadPool
(
10
);
public
ResponseDto
<
GalaxyNftPublishAndBuyRespDto
>
nftPublishAndBuy
(
GalaxyNftPublishAndBuyReqDto
reqDto
)
{
log
.
info
(
"开始执行nftPublishAndBuy 请求参数:{}"
,
reqDto
.
toString
());
//获取用户信息
...
...
@@ -141,6 +149,17 @@ public class ZxinTradeCommonBiz {
//发行失败
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
.
setNftOrderPayId
(
reqDto
.
getNftOrderPayId
());
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 @
c032b792
package
com
.
liquidnet
.
service
.
galaxy
.
utils
;
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.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
...
...
@@ -8,13 +9,16 @@ import com.liquidnet.service.galaxy.biz.GalaxyBeanTransferBiz;
import
com.liquidnet.service.galaxy.constant.GalaxyConstant
;
import
com.liquidnet.service.galaxy.constant.GalaxyEnum
;
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.GalaxyNftTradeVo
;
import
com.liquidnet.service.goblin.constant.GoblinRedisConst
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
java.util.List
;
/**
* 该类为redis+mysql
...
...
@@ -478,4 +482,26 @@ public abstract class AbstractDataUtils {
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/main/java/com/liquidnet/service/goblin/controller/GoblinCouponController.java
View file @
c032b792
...
...
@@ -140,15 +140,30 @@ public class GoblinCouponController {
if
(!
CollectionUtils
.
isEmpty
(
userCouponVos
))
{
List
<
GoblinUserCouponVo
>
userCouponVoList
=
userCouponVos
.
stream
().
filter
(
vo
->
vo
.
getStoreCouponId
().
equals
(
storeCouponId
)).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
userCouponVoList
)
&&
userCouponVoList
.
size
()
>=
storeCouponVo
.
getReceiveLimit
())
{
// 用户已领取该券且领取数量已达上限时,根据已领取券的状态判断返回(如果已使用提示用,未使用则正常返回)
Optional
<
GoblinUserCouponVo
>
userCouponVoOptional
=
userCouponVoList
.
stream
().
filter
(
vo
->
vo
.
getState
().
equals
(
1
)).
findAny
();
return
userCouponVoOptional
.
map
(
ResponseDto:
:
success
).
orElseGet
(()
->
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"140054"
)));
// return userCouponVoOptional.map(ResponseDto::success).orElseGet(() -> ResponseDto.failure(ErrorMapping.get("140054")));
if
(
userCouponVoOptional
.
isPresent
())
{
GoblinUserCouponVo
userCouponVo
=
userCouponVoOptional
.
get
();
if
(
StringUtils
.
equals
(
"1"
,
userCouponVo
.
getUseScope
()))
{
userCouponVo
.
setSpuIds
(
goblinRedisUtils
.
getStoreCouponSpuIds
(
storeCouponId
));
}
return
ResponseDto
.
success
(
userCouponVo
);
}
else
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"140054"
));
}
}
}
if
(
storeCouponVo
.
getStock
().
equals
(
0
)
||
goblinRedisUtils
.
getStoreCouponStock
(
storeCouponId
)
>
0
)
{
if
(
goblinCouponService
.
receiveCoupon
(
uid
,
userCouponVos
,
storeCouponVo
))
{
List
<
GoblinUserCouponVo
>
userCouponVoList
=
userCouponVos
.
stream
()
.
filter
(
vo
->
vo
.
getStoreCouponId
().
equals
(
storeCouponId
)
&&
vo
.
getState
().
equals
(
1
)).
collect
(
Collectors
.
toList
());
return
ResponseDto
.
success
(
userCouponVoList
.
get
(
0
));
// return ResponseDto.success(userCouponVoList.get(0));
GoblinUserCouponVo
userCouponVo
=
userCouponVoList
.
get
(
0
);
if
(
StringUtils
.
equals
(
"1"
,
userCouponVo
.
getUseScope
()))
{
userCouponVo
.
setSpuIds
(
goblinRedisUtils
.
getStoreCouponSpuIds
(
storeCouponId
));
}
return
ResponseDto
.
success
(
userCouponVo
);
}
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"140053"
));
}
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/service/impl/GoblinFrontServiceImpl.java
View file @
c032b792
...
...
@@ -469,7 +469,7 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
List
<
String
>
listStore
=
mongoUtils
.
getStoreInfoVoRegexName
(
name
);
Pattern
pattern
=
Pattern
.
compile
(
"^.*"
+
name
+
".*$"
,
Pattern
.
CASE_INSENSITIVE
);
Query
query
=
new
Query
();
query
.
addCriteria
(
Criteria
.
where
(
"spuAppear"
).
is
(
"0"
).
and
(
"delFlg"
).
is
(
"0"
).
and
(
"shelvesStatus"
).
is
(
"3"
).
and
(
"marketId"
).
is
(
null
).
andOperator
(
query
.
addCriteria
(
Criteria
.
where
(
"spuAppear"
).
is
(
"0"
).
and
(
"delFlg"
).
is
(
"0"
).
and
(
"shelvesStatus"
).
is
(
"3"
).
and
(
"marketId"
).
is
(
null
).
and
(
"cateFid"
).
nin
(
"22196120924543"
,
"22196122839313"
).
and
Operator
(
new
Criteria
().
orOperator
(
Criteria
.
where
(
"name"
).
regex
(
pattern
),
Criteria
.
where
(
"storeId"
).
in
(
listStore
),
...
...
@@ -530,7 +530,7 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
}
//
Query
query
=
new
Query
();
query
.
addCriteria
(
Criteria
.
where
(
"storeId"
).
is
(
storeId
).
and
(
"spuAppear"
).
is
(
"0"
).
and
(
"delFlg"
).
is
(
"0"
).
and
(
"shelvesStatus"
).
is
(
"3"
).
and
(
"marketId"
).
is
(
null
));
query
.
addCriteria
(
Criteria
.
where
(
"storeId"
).
is
(
storeId
).
and
(
"spuAppear"
).
is
(
"0"
).
and
(
"delFlg"
).
is
(
"0"
).
and
(
"shelvesStatus"
).
is
(
"3"
).
and
(
"marketId"
).
is
(
null
)
.
and
(
"cateFid"
).
nin
(
"22196120924543"
,
"22196122839313"
)
);
if
(
StringUtil
.
isNotBlank
(
categoryId
))
{
query
.
addCriteria
(
new
Criteria
().
orOperator
(
Criteria
.
where
(
"storeCateFid"
).
is
(
categoryId
),
...
...
@@ -857,6 +857,9 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
for
(
String
id
:
spuids
)
{
GoblinGoodsInfoVo
goblinGoodsInfoVo
=
goblinRedisUtils
.
getGoodsInfoVo
(
id
);
if
(
null
!=
goblinGoodsInfoVo
)
{
if
(
isHidden
(
goblinGoodsInfoVo
.
getCateFid
())){
continue
;
}
goblinGoodsInfoVoArrayList
.
add
(
goblinGoodsInfoVo
);
}
}
...
...
@@ -909,6 +912,9 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
for
(
int
i
=
0
;
i
<
end
;
i
++)
{
if
(
i
>=
start
)
{
GoblinGoodsInfoVo
goblinGoodsInfoVo
=
goblinRedisUtils
.
getGoodsInfoVo
(
spuidss
[
i
]);
if
(
isHidden
(
goblinGoodsInfoVo
.
getCateFid
())){
continue
;
}
goblinGoodsInfoVoArrayList
.
add
(
goblinGoodsInfoVo
);
}
}
...
...
@@ -1418,4 +1424,13 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
}
private
boolean
isHidden
(
String
fcateId
){
ArrayList
<
String
>
hiddenIds
=
CollectionUtil
.
arrayListString
();
hiddenIds
.
add
(
"22196120924543"
);
hiddenIds
.
add
(
"22196122839313"
);
if
(
hiddenIds
.
contains
(
fcateId
)){
return
true
;
}
return
false
;
}
}
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/test/java/com/liquidnet/service/goblin/test/TestRedisUtil.java
0 → 100644
View file @
c032b792
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-kylin/liquidnet-service-kylin-impl/docu/db_kylin_structure.sql
View file @
c032b792
...
...
@@ -1000,3 +1000,48 @@ CREATE TABLE `admin_upush`
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
utf8mb4
COLLATE
utf8mb4_unicode_ci
COMMENT
'友盟消息推送'
;
DROP
TABLE
IF
EXISTS
`kylin_acitve`
;
CREATE
TABLE
`kylin_acitve`
(
`mid`
bigint
NOT
NULL
AUTO_INCREMENT
,
`activeName`
varchar
(
255
)
COLLATE
utf8mb4_unicode_ci
DEFAULT
NULL
COMMENT
'活动名称'
,
`number`
int
DEFAULT
NULL
COMMENT
'券的数量'
,
`active_id`
varchar
(
64
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
DEFAULT
NULL
COMMENT
'活动id'
,
`created_at`
datetime
DEFAULT
NULL
COMMENT
'创建时间'
,
`updated_at`
datetime
DEFAULT
NULL
COMMENT
'修改时间'
,
`del_tag`
int
DEFAULT
NULL
COMMENT
'0未删除1已删除'
,
`performance_id`
varchar
(
255
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
DEFAULT
NULL
COMMENT
'演出id'
,
PRIMARY
KEY
(
`mid`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
12
DEFAULT
CHARSET
=
utf8mb4
COLLATE
=
utf8mb4_unicode_ci
COMMENT
=
'活动表'
;
SET
FOREIGN_KEY_CHECKS
=
1
;
DROP
TABLE
IF
EXISTS
`kylin_ticket_active`
;
CREATE
TABLE
`kylin_ticket_active`
(
`mid`
bigint
NOT
NULL
AUTO_INCREMENT
,
`ticket_id`
varchar
(
255
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
DEFAULT
NULL
COMMENT
'票id'
,
`code`
varchar
(
64
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
DEFAULT
NULL
COMMENT
'兑换码'
,
`state`
tinyint
DEFAULT
NULL
COMMENT
'兑换码状态 1未兑换 2已兑换 3已失效'
,
`redeem_uid`
varchar
(
64
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
DEFAULT
NULL
COMMENT
'兑换用户id'
,
`redeem_at`
datetime
DEFAULT
NULL
COMMENT
'兑换时间'
,
`activity_id`
varchar
(
64
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
DEFAULT
NULL
COMMENT
'活动id'
,
`created_at`
datetime
DEFAULT
NULL
COMMENT
'创建时间'
,
`updated_at`
datetime
DEFAULT
NULL
COMMENT
'更新时间'
,
`del_tag`
int
DEFAULT
NULL
COMMENT
'0未删除1已删除'
,
PRIMARY
KEY
(
`mid`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
1104
DEFAULT
CHARSET
=
utf8mb4
COLLATE
=
utf8mb4_unicode_ci
COMMENT
=
'跟活动绑定的券'
;
SET
FOREIGN_KEY_CHECKS
=
1
;
DROP
TABLE
IF
EXISTS
`kylin_acitve`
;
CREATE
TABLE
`kylin_acitve`
(
`mid`
bigint
NOT
NULL
AUTO_INCREMENT
,
`activeName`
varchar
(
255
)
COLLATE
utf8mb4_unicode_ci
DEFAULT
NULL
COMMENT
'活动名称'
,
`number`
int
DEFAULT
NULL
COMMENT
'券的数量'
,
`active_id`
varchar
(
64
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
DEFAULT
NULL
COMMENT
'活动id'
,
`created_at`
datetime
DEFAULT
NULL
COMMENT
'创建时间'
,
`updated_at`
datetime
DEFAULT
NULL
COMMENT
'修改时间'
,
`del_tag`
int
DEFAULT
NULL
COMMENT
'0未删除1已删除'
,
`performance_id`
varchar
(
255
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
DEFAULT
NULL
COMMENT
'演出id'
,
PRIMARY
KEY
(
`mid`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
12
DEFAULT
CHARSET
=
utf8mb4
COLLATE
=
utf8mb4_unicode_ci
COMMENT
=
'活动表'
;
SET
FOREIGN_KEY_CHECKS
=
1
;
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/controller/KylinArActiveController.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
service
.
kylin
.
controller
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.kylin.service.impl.KylinArActiveServiceImpl
;
import
com.liquidnet.service.kylin.utils.DataUtils
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* ar活动
* </p>
*
*/
@Api
(
tags
=
"ar活动有关接口"
)
@RestController
@RequestMapping
(
"arActive"
)
@Slf4j
public
class
KylinArActiveController
{
@Autowired
private
KylinArActiveServiceImpl
kylinArActiveService
;
@Autowired
private
DataUtils
dataUtils
;
@PostMapping
(
"getUserStatus"
)
@ApiOperation
(
"查看用户是否绑定(0没有绑定、1绑定了、2失效[目前失效没有用]"
)
public
ResponseDto
<
String
>
getUserStatus
()
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
if
(
null
==
dataUtils
.
getUserStatus
(
uid
)){
return
ResponseDto
.
success
(
"0"
);
}
else
{
return
ResponseDto
.
success
(
dataUtils
.
getUserStatus
(
uid
));
}
}
@PostMapping
(
"exchangeCode"
)
@ApiOperation
(
"兑换码兑换"
)
public
ResponseDto
<
String
>
exchangeCode
(
@RequestParam
(
value
=
"code"
)
String
code
)
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
return
kylinArActiveService
.
exchange
(
code
.
trim
(),
uid
);
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinArActiveServiceImpl.java
0 → 100644
View file @
c032b792
package
com
.
liquidnet
.
service
.
kylin
.
service
.
impl
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.kylin.dao.KylinTicketActive
;
import
com.liquidnet.service.kylin.service.IKylinArActiveService
;
import
com.liquidnet.service.kylin.utils.DataUtils
;
import
com.liquidnet.service.kylin.utils.QueueUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.time.LocalDateTime
;
/**
* <p>
* 人流量检测记录表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
@Service
public
class
KylinArActiveServiceImpl
implements
IKylinArActiveService
{
@Autowired
private
DataUtils
dataUtils
;
@Autowired
private
QueueUtils
queueUtils
;
@Override
public
ResponseDto
exchange
(
String
code
,
String
uid
)
{
//1 查看是否有兑换码
KylinTicketActive
kylinTicketActive
=
dataUtils
.
getArTicket
(
code
);
if
(
null
==
kylinTicketActive
){
return
ResponseDto
.
failure
(
"请输入正确的激活码"
);
}
//2、查看该用户是否绑定
if
(
null
!=
dataUtils
.
getUserStatus
(
uid
)){
return
ResponseDto
.
failure
(
"该用户已激活"
);
}
//判断是否用过卷了
if
(
kylinTicketActive
.
getState
()==
2
){
return
ResponseDto
.
failure
(
"该激活码已经兑换"
);
}
//开始绑定
//修改redis缓存
dataUtils
.
setUser
(
uid
,
"1"
);
kylinTicketActive
.
setState
(
2
);
dataUtils
.
setArTicket
(
kylinTicketActive
);
//队列 修改券的状态。
queueUtils
.
sendMsgByRedis
(
MQConst
.
KylinQueue
.
SQL_PERFORMANCE_LACK
.
getKey
(),
SqlMapping
.
get
(
"kylin_ar_ticket.update"
,
new
Object
[]{
2
,
uid
,
LocalDateTime
.
now
(),
code
}
));
return
ResponseDto
.
success
();
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/DataUtils.java
View file @
c032b792
...
...
@@ -5,6 +5,7 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.service.kylin.constant.KylinRedisConst
;
import
com.liquidnet.service.kylin.constant.KylinTableStatusConst
;
import
com.liquidnet.service.kylin.dao.KylinTicketActive
;
import
com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo
;
import
com.liquidnet.service.kylin.dto.vo.WqTempVo
;
import
com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress
;
...
...
@@ -946,4 +947,22 @@ public class DataUtils {
}
}
// 获取用户状态
public
String
getUserStatus
(
String
userId
)
{
return
(
String
)
redisUtil
.
get
(
KylinRedisConst
.
ACTIVE_TICKET_AR_USER
+
userId
);
}
//获得 ar券
public
KylinTicketActive
getArTicket
(
String
code
){
return
(
KylinTicketActive
)
redisUtil
.
get
(
KylinRedisConst
.
ACTIVE_TICKET_AR_TICKET
+
code
);
}
//设置 tikcet
public
void
setArTicket
(
KylinTicketActive
kylinTicketActive
){
redisUtil
.
set
(
KylinRedisConst
.
ACTIVE_TICKET_AR_TICKET
+
kylinTicketActive
.
getCode
(),
kylinTicketActive
);
}
//设置用户状态。
public
void
setUser
(
String
userId
,
String
value
){
redisUtil
.
set
(
KylinRedisConst
.
ACTIVE_TICKET_AR_USER
+
userId
,
value
);
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/resources/sqlmap.properties
View file @
c032b792
...
...
@@ -35,4 +35,6 @@ kylin_order_refund_entities.supplementEnter=UPDATE kylin_order_ticket_entities S
kylin_perform_sub.insert
=
INSERT INTO kylin_perform_sub (perform_sub_id,performance_id,user_id,user_name,user_mobile,source_type) VALUES (?,?,?,?,?,?)
# ------------------------ 万青弥补订单 ----------------------------
kylin_order_express_ex.insert
=
INSERT INTO kylin_order_express_ex (`order_id`,`express_contacts`,`express_address`,`province`,`city`,`county`,`express_phone`,`created_at`) VALUES (?,?,?,?,?,?,?,?)
kylin_order_express_ex.sendMail
=
UPDATE kylin_order_express_ex SET mail_no = ? , updated_at = ? where order_id = ?
\ No newline at end of file
kylin_order_express_ex.sendMail
=
UPDATE kylin_order_express_ex SET mail_no = ? , updated_at = ? where order_id = ?
# ------------------------ ar演出队列 ----------------------------
kylin_ar_ticket.update
=
update kylin_ticket_active set state=?,redeem_uid= ?,redeem_at= ? where `code`= ?
\ No newline at end of file
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/test/java/com/liquidnet/service/kylin/TestDataUtil.java
View file @
c032b792
...
...
@@ -28,7 +28,11 @@ import java.util.List;
public
class
TestDataUtil
{
@Autowired
private
DataUtils
dataUtils
;
@Test
public
void
test
(){
System
.
out
.
println
(
dataUtils
.
getUserStatus
(
"312"
));
}
@Test
public
void
myPerformancesList
(){
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/controller/GoblinNftOrderController.java
View file @
c032b792
...
...
@@ -82,7 +82,12 @@ public class GoblinNftOrderController {
@RequestParam
(
"code"
)
@NotBlank
(
message
=
"兑换码不能为空"
)
String
code
,
@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 @
c032b792
...
...
@@ -35,7 +35,25 @@ public class GoblinInnerNftController {
@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 @
c032b792
...
...
@@ -12,6 +12,7 @@ import com.liquidnet.service.goblin.constant.GoblinStatusConst;
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
com.liquidnet.service.goblin.entity.GoblinNftOrder
;
import
com.liquidnet.service.goblin.param.GoblinNftOrderPayAgainParam
;
import
com.liquidnet.service.goblin.param.GoblinNftOrderPayCallbackParam
;
...
...
@@ -504,7 +505,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
orderVo
.
setCreatedAt
(
nftOrder
.
getCreatedAt
());
// 待支付发送队列
queueUtils
.
sendMsgByRedisGoblinStock
(
orderVo
.
getOrderId
(),
nftOrder
.
getCreatedAt
(),
"NFT"
,
5
);
queueUtils
.
sendMsgByRedisGoblinStock
(
orderVo
.
getOrderId
(),
nftOrder
.
getCreatedAt
(),
"NFT"
,
5
);
// redis 订单详情
nftOrderUtils
.
setNftOrder
(
orderVo
);
...
...
@@ -813,8 +814,10 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
return
"success"
;
}
@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
)
{
uid
=
CurrentUtil
.
getCurrentUid
();
}
...
...
@@ -828,34 +831,48 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
return
ResponseDto
.
failure
(
"处理未完成,请稍等~"
);
}
else
{
try
{
// 验证 1code是否存在 2是否未兑换的状态 3是否在生效日期内 4兑换限购
GoblinNftExCodeVo
goblinNftExCodeVo
=
nftOrderUtils
.
getGoblinNftExCodeVo
(
code
);
if
(
null
==
goblinNftExCodeVo
||
goblinNftExCodeVo
.
getState
()
!=
1
)
{
return
ResponseDto
.
failure
(
"兑换码不正确或已失效"
);
}
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
if
(
nowTime
.
isBefore
(
goblinNftExCodeVo
.
getExStartTime
())
||
nowTime
.
isAfter
(
goblinNftExCodeVo
.
getExStopTime
()))
{
return
ResponseDto
.
failure
(
"不在允许兑换时间内"
);
}
int
buyCount
=
nftOrderUtils
.
incrExCountByUid
(
uid
,
goblinNftExCodeVo
.
getSkuId
(),
goblinNftExCodeVo
.
getActivityId
(),
1
);
if
(
null
!=
goblinNftExCodeVo
.
getExLimit
()
&&
goblinNftExCodeVo
.
getExLimit
()
>
0
)
{
if
(
buyCount
>
goblinNftExCodeVo
.
getExLimit
())
{
nftOrderUtils
.
decrExCountByUid
(
uid
,
goblinNftExCodeVo
.
getSkuId
(),
goblinNftExCodeVo
.
getActivityId
(),
1
);
return
ResponseDto
.
failure
(
"您已超出兑换限制数量~"
);
}
}
// 使用
goblinNftExCodeVo
.
setState
(
2
);
goblinNftExCodeVo
.
setRedeemUid
(
uid
);
goblinNftExCodeVo
.
setRedeemAt
(
nowTime
);
goblinNftExCodeVo
.
setUpdatedAt
(
nowTime
);
nftOrderUtils
.
setGoblinNftExCodeVo
(
goblinNftExCodeVo
);
GoblinNftExCodeVo
goblinNftExCodeVo
=
GoblinNftExCodeVo
.
getNew
();
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
sqls
.
add
(
SqlMapping
.
get
(
"goblin_nft_ex_code.update"
));
LinkedList
<
Object
[]>
sqlDataCode
=
CollectionUtil
.
linkedListObjectArr
();
sqlDataCode
.
add
(
new
Object
[]{
2
,
uid
,
nowTime
,
nowTime
,
goblinNftExCodeVo
.
getCodeId
()
});
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兑换限购
goblinNftExCodeVo
=
nftOrderUtils
.
getGoblinNftExCodeVo
(
code
);
if
(
null
==
goblinNftExCodeVo
||
goblinNftExCodeVo
.
getState
()
!=
1
)
{
return
ResponseDto
.
failure
(
"兑换码不正确或已失效"
);
}
if
(
nowTime
.
isBefore
(
goblinNftExCodeVo
.
getExStartTime
())
||
nowTime
.
isAfter
(
goblinNftExCodeVo
.
getExStopTime
()))
{
return
ResponseDto
.
failure
(
"不在允许兑换时间内"
);
}
int
buyCount
=
nftOrderUtils
.
incrExCountByUid
(
uid
,
goblinNftExCodeVo
.
getSkuId
(),
goblinNftExCodeVo
.
getActivityId
(),
1
);
if
(
null
!=
goblinNftExCodeVo
.
getExLimit
()
&&
goblinNftExCodeVo
.
getExLimit
()
>
0
)
{
if
(
buyCount
>
goblinNftExCodeVo
.
getExLimit
())
{
nftOrderUtils
.
decrExCountByUid
(
uid
,
goblinNftExCodeVo
.
getSkuId
(),
goblinNftExCodeVo
.
getActivityId
(),
1
);
return
ResponseDto
.
failure
(
"您已超出兑换限制数量~"
);
}
}
// 使用
goblinNftExCodeVo
.
setState
(
2
);
goblinNftExCodeVo
.
setRedeemUid
(
uid
);
goblinNftExCodeVo
.
setRedeemAt
(
nowTime
);
goblinNftExCodeVo
.
setUpdatedAt
(
nowTime
);
nftOrderUtils
.
setGoblinNftExCodeVo
(
goblinNftExCodeVo
);
sqlDataCode
.
add
(
new
Object
[]{
2
,
uid
,
nowTime
,
nowTime
,
goblinNftExCodeVo
.
getCodeId
()
});
}
// 下单
GoblinNftOrderPayParam
payParam
=
GoblinNftOrderPayParam
.
getNew
();
payParam
.
setPayType
(
""
);
...
...
@@ -898,14 +915,18 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
// 加积分
goblinOrderUtils
.
integral
(
uid
,
orderVo
.
getPriceActual
(),
"购买数字藏品"
,
1
);
// 生产藏品列表
this
.
generateUserArtwork
(
orderVo
,
orderType
==
4
?
31
:
2
);
if
(
code
.
equals
(
orderVo
.
getSkuId
()))
{
this
.
generateUserArtwork
(
orderVo
,
5
);
}
else
{
this
.
generateUserArtwork
(
orderVo
,
orderType
==
4
?
31
:
2
);
}
// 增加销量
goblinRedisUtils
.
incrSkuSaleCount
(
orderVo
.
getSpuId
(),
orderVo
.
getSkuId
(),
orderVo
.
getNum
());
// 写入用户订单列表 因取消的订单不展示 所以放在这里
nftOrderUtils
.
addNftOrderList
(
uid
,
orderVo
.
getOrderId
());
// TODO: jxl 2022/4/24 判断技术部NFT记录Redis setBuyNftTec
return
ResponseDto
.
success
();
return
ResponseDto
.
success
(
orderVo
.
getOrderId
()
);
}
catch
(
Exception
e
)
{
log
.
error
(
"NFT兑换异常"
,
e
);
return
ResponseDto
.
failure
(
"兑换失败,请稍后重试!"
);
...
...
@@ -940,7 +961,11 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
digitalArtworkVo
.
setUid
(
uid
);
digitalArtworkVo
.
setOrderId
(
orderId
);
digitalArtworkVo
.
setSource
(
source
);
digitalArtworkVo
.
setState
(
source
==
31
?
5
:
0
);
if
(
source
==
5
)
{
digitalArtworkVo
.
setState
(
0
);
}
else
{
digitalArtworkVo
.
setState
(
source
==
31
?
5
:
0
);
}
digitalArtworkVo
.
setDelFlg
(
"0"
);
digitalArtworkVo
.
setCreatedAt
(
now
);
digitalArtworkVo
.
setAuthor
(
goodsInfoVo
.
getAuthor
());
...
...
@@ -963,7 +988,9 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
if
(
"0"
.
equals
(
goodsSkuInfoVo
.
getUnbox
()))
{
// 非盲盒,NFT发行购买
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
));
queueUtils
.
sendMsgByRedis
(
MQConst
.
GalaxyQueue
.
JSON_NFT_PUBLISH_AND_BUY
.
getKey
(),
bizNftBuyNode
.
toString
());
if
(
source
!=
5
)
{
queueUtils
.
sendMsgByRedis
(
MQConst
.
GalaxyQueue
.
JSON_NFT_PUBLISH_AND_BUY
.
getKey
(),
bizNftBuyNode
.
toString
());
}
}
}
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/MixOrderServiceImpl.java
View file @
c032b792
...
...
@@ -447,6 +447,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
for
(
GoblinNftOrder
nftItem
:
nftOrder
)
{
orderMixStr
=
orderMixStr
.
concat
(
nftItem
.
getOrderId
()).
concat
(
","
);
nftItem
.
setPayCode
(
payCode
);
nftItem
.
setPayType
(
payType
);
sqlDataOrder
.
add
(
new
Object
[]{
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
(),
...
...
@@ -481,6 +482,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
}
GoblinStoreOrder
storeOrder
=
preParam
.
getStoreOrder
();
storeOrder
.
setPayCode
(
payCode
);
storeOrder
.
setPayType
(
payType
);
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
.
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