Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mall-server
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
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
yimu
mall-server
Commits
8e8ae265
Commit
8e8ae265
authored
Mar 01, 2022
by
wp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
盲盒商品
parent
85856bd9
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
152 additions
and
259 deletions
+152
-259
NftEvm.java
...ava/com/fzm/mall/server/admin/block_chain/nft/NftEvm.java
+11
-5
SpuController.java
...l/server/admin/goods_center/controller/SpuController.java
+0
-1
GoodsSkuDTO.java
...all/server/admin/goods_center/entity/dto/GoodsSkuDTO.java
+0
-10
GoodsSpuDTO.java
...all/server/admin/goods_center/entity/dto/GoodsSpuDTO.java
+3
-0
GoodsSpuDraftDTO.java
...erver/admin/goods_center/entity/dto/GoodsSpuDraftDTO.java
+4
-9
SkuPropertyDTO.java
.../server/admin/goods_center/entity/dto/SkuPropertyDTO.java
+0
-2
GoodsSpuDetailVO.java
...server/admin/goods_center/entity/vo/GoodsSpuDetailVO.java
+5
-0
GoodsSpuVO.java
.../mall/server/admin/goods_center/entity/vo/GoodsSpuVO.java
+3
-2
Spu.java
...ava/com/fzm/mall/server/admin/goods_center/model/Spu.java
+3
-3
ISkuService.java
...m/mall/server/admin/goods_center/service/ISkuService.java
+1
-1
CategorySpuServiceImpl.java
...min/goods_center/service/impl/CategorySpuServiceImpl.java
+2
-1
GoodsNftServiceImpl.java
.../admin/goods_center/service/impl/GoodsNftServiceImpl.java
+2
-0
SkuServiceImpl.java
...erver/admin/goods_center/service/impl/SkuServiceImpl.java
+54
-144
SpuServiceImpl.java
...erver/admin/goods_center/service/impl/SpuServiceImpl.java
+30
-75
CoinsConsumer.java
.../server/admin/mq/consumer/goods_center/CoinsConsumer.java
+22
-4
SpuMapper.xml
...dmin/src/main/resources/mapper/goods_center/SpuMapper.xml
+1
-0
mall_create.sql
mall-sql/mall_create.sql
+11
-2
No files found.
mall-server-admin/src/main/java/com/fzm/mall/server/admin/block_chain/nft/NftEvm.java
View file @
8e8ae265
...
@@ -54,14 +54,15 @@ public class NftEvm {
...
@@ -54,14 +54,15 @@ public class NftEvm {
String cName = "user.evm.0xf4403b125a0d51cecf955aa7bd67ad17f153efdfff188cd2d31e2d44f6094996"; 71
String cName = "user.evm.0xf4403b125a0d51cecf955aa7bd67ad17f153efdfff188cd2d31e2d44f6094996"; 71
String cAddr = "17S4bk6RvqNUmwfzkhJVAzjKBGtGYqtKas"; 71*/
String cAddr = "17S4bk6RvqNUmwfzkhJVAzjKBGtGYqtKas"; 71*/
/*private static String rpcUrl = "http://146.56.197.42:12021";
// private static String rpcUrl = "http://146.56.197.42:12021";
private
static
String
rpcUrl
=
"http://139.9.231.117:12021"
;
private
static
String
withhold
=
"1417K9fd5vt4zYW86xinWiCbAkNP794aNy"
;
private
static
String
withhold
=
"1417K9fd5vt4zYW86xinWiCbAkNP794aNy"
;
private
static
String
withholdKey
=
"0x19d78691584930407e63cd35ac6e67fae6113894b41812e65847d4a365a802a0"
;
private
static
String
withholdKey
=
"0x19d78691584930407e63cd35ac6e67fae6113894b41812e65847d4a365a802a0"
;
private
static
String
tokenManager
=
"1KEBcdmMPfUV2suAqgkyDpdm4brZbYmdfF"
;
private
static
String
tokenManager
=
"1KEBcdmMPfUV2suAqgkyDpdm4brZbYmdfF"
;
private
static
String
tokenManagerKey
=
"0x5d872407fb2769854dcca6203d70696feced7099c588a6d9146a122025585e41"
;
private
static
String
tokenManagerKey
=
"0x5d872407fb2769854dcca6203d70696feced7099c588a6d9146a122025585e41"
;
private
static
String
title
=
"user.p.mall."
;
private
static
String
title
=
"user.p.mall."
;
private
static
String
cName
=
"user.evm.0xb3ae98ac253679602d54d1513aa9cad7d1b10d5f5117d5ce999c1bf67906ba99"
;
private
static
String
cName
=
"user.evm.0xb3ae98ac253679602d54d1513aa9cad7d1b10d5f5117d5ce999c1bf67906ba99"
;
private static String cAddr = "15DtbSyS4eVFxdF87jmrcAdXMSAwXEHVLW";
*/
private
static
String
cAddr
=
"15DtbSyS4eVFxdF87jmrcAdXMSAwXEHVLW"
;
// 0.001
// 0.001
...
@@ -85,14 +86,14 @@ public class NftEvm {
...
@@ -85,14 +86,14 @@ public class NftEvm {
// private static String cAddr = "1MHibNozeurswCpinxR9md147dYUUG3vRN";
// private static String cAddr = "1MHibNozeurswCpinxR9md147dYUUG3vRN";
private static String cAddr = "1Nhju8CgSUmkQQwc7ECk4bFxnv48iRLNRX";*/
private static String cAddr = "1Nhju8CgSUmkQQwc7ECk4bFxnv48iRLNRX";*/
private
static
String
rpcUrl
=
"http://121.37.141.165:8901"
;
/*
private static String rpcUrl = "http://121.37.141.165:8901";
private static String withhold = "1417K9fd5vt4zYW86xinWiCbAkNP794aNy";
private static String withhold = "1417K9fd5vt4zYW86xinWiCbAkNP794aNy";
private static String withholdKey = "0x19d78691584930407e63cd35ac6e67fae6113894b41812e65847d4a365a802a0";
private static String withholdKey = "0x19d78691584930407e63cd35ac6e67fae6113894b41812e65847d4a365a802a0";
private static String tokenManager = "1N2ABERwHgxGhebVw6fVSwaQ5uLAysmGEu";
private static String tokenManager = "1N2ABERwHgxGhebVw6fVSwaQ5uLAysmGEu";
private static String tokenManagerKey = "0x4e92bda2477ded0e7c07a9e3acd2370de8d7401c68cc83ee8376806db3121e77";
private static String tokenManagerKey = "0x4e92bda2477ded0e7c07a9e3acd2370de8d7401c68cc83ee8376806db3121e77";
private static String title = "user.p.testproofv2.";
private static String title = "user.p.testproofv2.";
private static String cName = "user.p.FILMCHAIN.user.evm.0xdc173544bb1876b9811d679f0dd33acc03772c6694f34a9f51b79cbae8af10f4";
private static String cName = "user.p.FILMCHAIN.user.evm.0xdc173544bb1876b9811d679f0dd33acc03772c6694f34a9f51b79cbae8af10f4";
private
static
String
cAddr
=
"144YmkA72Cd5hR9iUkv6QWNx7PVM1TrqfV"
;
private static String cAddr = "144YmkA72Cd5hR9iUkv6QWNx7PVM1TrqfV";
*/
/*private static String rpcUrl = "http://123.60.25.57:18901";
/*private static String rpcUrl = "http://123.60.25.57:18901";
private static String withhold = "1417K9fd5vt4zYW86xinWiCbAkNP794aNy";
private static String withhold = "1417K9fd5vt4zYW86xinWiCbAkNP794aNy";
...
@@ -119,6 +120,11 @@ public class NftEvm {
...
@@ -119,6 +120,11 @@ public class NftEvm {
public
static
void
main
(
String
[]
args
)
throws
Exception
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
// System.err.println(ra.tokenBalance("1KEBcdmMPfUV2suAqgkyDpdm4brZbYmdfF", "BASE"));
// System.err.println(ra.walletCreateAccount("xkaddr3"));
// System.err.println(ra.walletLocked());
// System.err.println(ra.walletUnlock("fzm12345"));
/*//String rpcUrl = "http://146.56.218.121:12091";
/*//String rpcUrl = "http://146.56.218.121:12091";
String rpcUrl = "http://172.22.20.71:8801";
String rpcUrl = "http://172.22.20.71:8801";
//String rpcUrl = "http://116.63.172.191:8801";
//String rpcUrl = "http://116.63.172.191:8801";
...
@@ -206,7 +212,7 @@ public class NftEvm {
...
@@ -206,7 +212,7 @@ public class NftEvm {
//// String hash = ra.evmPublishToken(ymabi, cAddr, EvmTokenEnum.ERC1155, 0L, addr, addr, null, tokenId, amount, "publish", true);
//// String hash = ra.evmPublishToken(ymabi, cAddr, EvmTokenEnum.ERC1155, 0L, addr, addr, null, tokenId, amount, "publish", true);
// String hash = ra.evmTransfer(ymabi, cAddr, EvmTokenEnum.ERC1155, 0L, "1Pm586wYpAyuGhBRTzeWSR2TNW6AjukZiS", 164129641600000002L, 1L, "transfer", "1HXLVUjfchSLwtAnLqStxYqXdhfAk6b1Vg", null, true);
// String hash = ra.evmTransfer(ymabi, cAddr, EvmTokenEnum.ERC1155, 0L, "1Pm586wYpAyuGhBRTzeWSR2TNW6AjukZiS", 164129641600000002L, 1L, "transfer", "1HXLVUjfchSLwtAnLqStxYqXdhfAk6b1Vg", null, true);
// System.err.println(hash);
// System.err.println(hash);
// System.err.println(ra.cycleConfirmTxWithHash(hash
, true, 1000).getStatus());
System
.
err
.
println
(
ra
.
cycleConfirmTxWithHash
(
"0x27ca69fd572dfdda7a459344f484774fdcd630677caaa5970dc230560122df08"
,
true
,
1000
).
getStatus
());
// System.err.println(ra.evmBalance(ymabi, cAddr, EvmTokenEnum.ERC1155, "1Pm586wYpAyuGhBRTzeWSR2TNW6AjukZiS", 164129641600000002L));
// System.err.println(ra.evmBalance(ymabi, cAddr, EvmTokenEnum.ERC1155, "1Pm586wYpAyuGhBRTzeWSR2TNW6AjukZiS", 164129641600000002L));
// long l = ra.evmBalance(ymabi, cAddr, EvmTokenEnum.ERC1155, "182mR7y2EEnHG9cDpc6ik8xRtkamzeHMHr", 1641296392);
// long l = ra.evmBalance(ymabi, cAddr, EvmTokenEnum.ERC1155, "182mR7y2EEnHG9cDpc6ik8xRtkamzeHMHr", 1641296392);
// System.err.println(l);
// System.err.println(l);
...
...
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/controller/SpuController.java
View file @
8e8ae265
...
@@ -92,7 +92,6 @@ public class SpuController {
...
@@ -92,7 +92,6 @@ public class SpuController {
@PostMapping
(
"/releaseGoods/draft"
)
@PostMapping
(
"/releaseGoods/draft"
)
public
ResponseVO
draft
(
@RequestBody
@Valid
GoodsSpuDraftDTO
pDTO
,
@ApiParam
(
name
=
"adminId"
,
value
=
"管理员id"
)
public
ResponseVO
draft
(
@RequestBody
@Valid
GoodsSpuDraftDTO
pDTO
,
@ApiParam
(
name
=
"adminId"
,
value
=
"管理员id"
)
@RequestHeader
String
adminId
)
{
@RequestHeader
String
adminId
)
{
System
.
err
.
println
(
"pDTO:"
+
pDTO
);
String
merchantId
=
adminService
.
getByAdminId
(
adminId
).
getMerchantId
();
String
merchantId
=
adminService
.
getByAdminId
(
adminId
).
getMerchantId
();
spuService
.
draft
(
pDTO
,
merchantId
);
spuService
.
draft
(
pDTO
,
merchantId
);
return
resFac
.
getSimpleSuccessResponse
();
return
resFac
.
getSimpleSuccessResponse
();
...
...
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/entity/dto/GoodsSkuDTO.java
View file @
8e8ae265
package
com
.
fzm
.
mall
.
server
.
admin
.
goods_center
.
entity
.
dto
;
package
com
.
fzm
.
mall
.
server
.
admin
.
goods_center
.
entity
.
dto
;
import
com.fzm.mall.server.admin.constant.MallResponseError
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
javax.validation.constraints.*
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.List
;
...
@@ -23,18 +21,12 @@ public class GoodsSkuDTO {
...
@@ -23,18 +21,12 @@ public class GoodsSkuDTO {
private
String
skuId
;
private
String
skuId
;
@ApiModelProperty
(
"原价"
)
@ApiModelProperty
(
"原价"
)
@DecimalMin
(
value
=
"0"
,
message
=
MallResponseError
.
VALUE_LT_0_ERROR
)
@NotNull
(
message
=
MallResponseError
.
NULL_PARAM_ERROR
)
private
BigDecimal
originalPrice
;
private
BigDecimal
originalPrice
;
@ApiModelProperty
(
"重量"
)
@ApiModelProperty
(
"重量"
)
// @DecimalMin(value = "0", message = MallResponseError.VALUE_LT_0_ERROR)
// @NotNull(message = MallResponseError.NULL_PARAM_ERROR)
private
BigDecimal
weight
;
private
BigDecimal
weight
;
@ApiModelProperty
(
"库存"
)
@ApiModelProperty
(
"库存"
)
@Min
(
value
=
0
,
message
=
MallResponseError
.
VALUE_LT_0_ERROR
)
@NotNull
(
message
=
MallResponseError
.
NULL_PARAM_ERROR
)
private
Long
stock
;
private
Long
stock
;
@ApiModelProperty
(
"外部token编号"
)
@ApiModelProperty
(
"外部token编号"
)
...
@@ -44,11 +36,9 @@ public class GoodsSkuDTO {
...
@@ -44,11 +36,9 @@ public class GoodsSkuDTO {
private
String
coinName
;
private
String
coinName
;
@ApiModelProperty
(
"规格缩略图"
)
@ApiModelProperty
(
"规格缩略图"
)
// @NotBlank(message = MallResponseError.NULL_PARAM_ERROR)
private
String
image
;
private
String
image
;
@ApiModelProperty
(
"规格属性列表"
)
@ApiModelProperty
(
"规格属性列表"
)
@NotEmpty
(
message
=
MallResponseError
.
NULL_PARAM_ERROR
)
private
List
<
SkuPropertyDTO
>
propertyList
;
private
List
<
SkuPropertyDTO
>
propertyList
;
@ApiModelProperty
(
"是否重发"
)
@ApiModelProperty
(
"是否重发"
)
...
...
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/entity/dto/GoodsSpuDTO.java
View file @
8e8ae265
...
@@ -102,5 +102,8 @@ public class GoodsSpuDTO {
...
@@ -102,5 +102,8 @@ public class GoodsSpuDTO {
@ApiModelProperty
(
"盲盒价格"
)
@ApiModelProperty
(
"盲盒价格"
)
private
BigDecimal
blindBoxPrice
;
private
BigDecimal
blindBoxPrice
;
@ApiModelProperty
(
"盲盒规则"
)
private
String
blindBoxRule
;
}
}
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/entity/dto/GoodsSpuDraftDTO.java
View file @
8e8ae265
...
@@ -30,27 +30,21 @@ public class GoodsSpuDraftDTO {
...
@@ -30,27 +30,21 @@ public class GoodsSpuDraftDTO {
private
String
name
;
private
String
name
;
@ApiModelProperty
(
"商品类型"
)
@ApiModelProperty
(
"商品类型"
)
@CustomType
(
pType
=
MALLGlobalConfig
.
GOODS_TYPE
,
message
=
MallResponseError
.
PARAM_ERROR
)
@NotNull
(
message
=
MallResponseError
.
NULL_PARAM_ERROR
)
private
Integer
type
;
private
Integer
type
;
@ApiModelProperty
(
"商品描述"
)
@ApiModelProperty
(
"商品描述"
)
@NotBlank
(
message
=
MallResponseError
.
NULL_PARAM_ERROR
)
private
String
description
;
private
String
description
;
@ApiModelProperty
(
"商品属性"
)
@ApiModelProperty
(
"商品属性"
)
private
String
prop
;
private
String
prop
;
@ApiModelProperty
(
"商品类目"
)
@ApiModelProperty
(
"商品类目"
)
@NotBlank
(
message
=
MallResponseError
.
NULL_PARAM_ERROR
)
private
String
categoryId
;
private
String
categoryId
;
@ApiModelProperty
(
"商品缩略图"
)
@ApiModelProperty
(
"商品缩略图"
)
@NotBlank
(
message
=
MallResponseError
.
NULL_PARAM_ERROR
)
private
String
thumb
;
private
String
thumb
;
@ApiModelProperty
(
"商品展示图"
)
@ApiModelProperty
(
"商品展示图"
)
@NotBlank
(
message
=
MallResponseError
.
NULL_PARAM_ERROR
)
private
String
imgList
;
private
String
imgList
;
@ApiModelProperty
(
"商品视频"
)
@ApiModelProperty
(
"商品视频"
)
...
@@ -60,7 +54,6 @@ public class GoodsSpuDraftDTO {
...
@@ -60,7 +54,6 @@ public class GoodsSpuDraftDTO {
private
String
videoPoster
;
private
String
videoPoster
;
@ApiModelProperty
(
"商品介绍"
)
@ApiModelProperty
(
"商品介绍"
)
@NotBlank
(
message
=
MallResponseError
.
NULL_PARAM_ERROR
)
private
String
detail
;
private
String
detail
;
@ApiModelProperty
(
"商品通证(0.否 1.是,自动生成Token 2.是,使用外部既有Token 3.外部token使用权)"
)
@ApiModelProperty
(
"商品通证(0.否 1.是,自动生成Token 2.是,使用外部既有Token 3.外部token使用权)"
)
...
@@ -70,8 +63,6 @@ public class GoodsSpuDraftDTO {
...
@@ -70,8 +63,6 @@ public class GoodsSpuDraftDTO {
private
Integer
delayDelivery
;
private
Integer
delayDelivery
;
@ApiModelProperty
(
"退货类型"
)
@ApiModelProperty
(
"退货类型"
)
@CustomType
(
pType
=
MALLGlobalConfig
.
RETURN_TYPE
,
message
=
MallResponseError
.
PARAM_ERROR
)
@NotNull
(
message
=
MallResponseError
.
NULL_PARAM_ERROR
)
private
Integer
returnType
;
private
Integer
returnType
;
@ApiModelProperty
(
"退货原因"
)
@ApiModelProperty
(
"退货原因"
)
...
@@ -100,5 +91,9 @@ public class GoodsSpuDraftDTO {
...
@@ -100,5 +91,9 @@ public class GoodsSpuDraftDTO {
@ApiModelProperty
(
"盲盒价格"
)
@ApiModelProperty
(
"盲盒价格"
)
private
BigDecimal
blindBoxPrice
;
private
BigDecimal
blindBoxPrice
;
@ApiModelProperty
(
"盲盒规则"
)
private
String
blindBoxRule
;
}
}
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/entity/dto/SkuPropertyDTO.java
View file @
8e8ae265
...
@@ -18,11 +18,9 @@ import javax.validation.constraints.NotBlank;
...
@@ -18,11 +18,9 @@ import javax.validation.constraints.NotBlank;
public
class
SkuPropertyDTO
{
public
class
SkuPropertyDTO
{
@ApiModelProperty
(
"属性名称"
)
@ApiModelProperty
(
"属性名称"
)
@NotBlank
(
message
=
MallResponseError
.
NULL_PARAM_ERROR
)
private
String
propKey
;
private
String
propKey
;
@ApiModelProperty
(
"属性值"
)
@ApiModelProperty
(
"属性值"
)
@NotBlank
(
message
=
MallResponseError
.
NULL_PARAM_ERROR
)
private
String
propVal
;
private
String
propVal
;
}
}
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/entity/vo/GoodsSpuDetailVO.java
View file @
8e8ae265
...
@@ -3,6 +3,7 @@ package com.fzm.mall.server.admin.goods_center.entity.vo;
...
@@ -3,6 +3,7 @@ package com.fzm.mall.server.admin.goods_center.entity.vo;
import
com.fzm.mall.server.admin.goods_center.model.GoodsNft
;
import
com.fzm.mall.server.admin.goods_center.model.GoodsNft
;
import
lombok.Data
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -40,5 +41,9 @@ public class GoodsSpuDetailVO {
...
@@ -40,5 +41,9 @@ public class GoodsSpuDetailVO {
private
GoodsPackageVO
goodsPackageVO
;
private
GoodsPackageVO
goodsPackageVO
;
private
GoodsNftVO
goodsNftVO
;
private
GoodsNftVO
goodsNftVO
;
private
PointsExchangeVO
pointsExchangeVO
;
private
PointsExchangeVO
pointsExchangeVO
;
private
Integer
difficulty
;
private
BigDecimal
blindBoxPrice
;
private
Integer
salesType
;
private
String
blindBoxRule
;
}
}
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/entity/vo/GoodsSpuVO.java
View file @
8e8ae265
...
@@ -27,14 +27,15 @@ public class GoodsSpuVO {
...
@@ -27,14 +27,15 @@ public class GoodsSpuVO {
private
Integer
status
;
private
Integer
status
;
private
BigDecimal
maxPrice
;
private
BigDecimal
maxPrice
;
private
BigDecimal
defaultPrice
;
private
BigDecimal
defaultPrice
;
private
Long
stock
;
private
Long
stock
=
0L
;
private
Long
sales
;
private
Long
sales
=
0L
;
private
String
enterpriseName
;
private
String
enterpriseName
;
private
String
linkName
;
private
String
linkName
;
private
String
linkPhone
;
private
String
linkPhone
;
private
String
checkFailReason
;
private
String
checkFailReason
;
private
Integer
type
;
private
Integer
type
;
private
Long
createTime
;
private
Long
createTime
;
private
Integer
salesType
;
@ApiModelProperty
(
value
=
"1.是,自动生成Token 2.是,使用外部既有Token"
)
@ApiModelProperty
(
value
=
"1.是,自动生成Token 2.是,使用外部既有Token"
)
@TableField
(
exist
=
false
)
@TableField
(
exist
=
false
)
...
...
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/model/Spu.java
View file @
8e8ae265
...
@@ -173,12 +173,12 @@ public class Spu implements Serializable {
...
@@ -173,12 +173,12 @@ public class Spu implements Serializable {
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Long
updateTime
;
private
Long
updateTime
;
@ApiModelProperty
(
value
=
"(销售方式)1.普通 2.盲盒"
)
private
Integer
salesType
;
@ApiModelProperty
(
value
=
"盲盒商品难度(1-10)"
)
@ApiModelProperty
(
value
=
"盲盒商品难度(1-10)"
)
private
Integer
difficulty
;
private
Integer
difficulty
;
@ApiModelProperty
(
value
=
"盲盒价格"
)
@ApiModelProperty
(
value
=
"盲盒价格"
)
private
BigDecimal
blindBoxPrice
;
private
BigDecimal
blindBoxPrice
;
@ApiModelProperty
(
value
=
"盲盒规则"
)
private
String
blindBoxRule
;
}
}
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/service/ISkuService.java
View file @
8e8ae265
...
@@ -27,7 +27,7 @@ public interface ISkuService extends IService<Sku> {
...
@@ -27,7 +27,7 @@ public interface ISkuService extends IService<Sku> {
* @param merchantId 商户id
* @param merchantId 商户id
* @param commodityPass 商品通证
* @param commodityPass 商品通证
*/
*/
void
add
(
List
<
GoodsSkuDTO
>
kDTOs
,
String
goodsId
,
String
goodsName
,
String
merchantId
,
String
addr
,
Integer
commodityPass
,
String
thumb
,
Integer
pDTO
Type
);
void
add
(
List
<
GoodsSkuDTO
>
kDTOs
,
String
goodsId
,
String
goodsName
,
String
merchantId
,
String
addr
,
Integer
commodityPass
,
String
thumb
,
Integer
pDTOType
,
Integer
sales
Type
);
/**
/**
* 新增商品规格
* 新增商品规格
...
...
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/service/impl/CategorySpuServiceImpl.java
View file @
8e8ae265
...
@@ -12,6 +12,7 @@ import com.fzm.mall.server.admin.goods_center.service.ICategoryService;
...
@@ -12,6 +12,7 @@ import com.fzm.mall.server.admin.goods_center.service.ICategoryService;
import
com.fzm.mall.server.admin.goods_center.service.ICategorySpuService
;
import
com.fzm.mall.server.admin.goods_center.service.ICategorySpuService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
...
@@ -74,7 +75,7 @@ public class CategorySpuServiceImpl extends ServiceImpl<CategorySpuMapper, Categ
...
@@ -74,7 +75,7 @@ public class CategorySpuServiceImpl extends ServiceImpl<CategorySpuMapper, Categ
.
append
(
categoryService
.
getById
(
v
.
getCategoryId
()).
getName
())
.
append
(
categoryService
.
getById
(
v
.
getCategoryId
()).
getName
())
.
append
(
">"
));
.
append
(
">"
));
return
categoryString
.
substring
(
0
,
categoryString
.
lastIndexOf
(
">"
));
return
StringUtils
.
isBlank
(
categoryString
)
?
""
:
categoryString
.
substring
(
0
,
categoryString
.
lastIndexOf
(
">"
));
}
}
@Override
@Override
...
...
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/service/impl/GoodsNftServiceImpl.java
View file @
8e8ae265
...
@@ -105,6 +105,8 @@ public class GoodsNftServiceImpl extends ServiceImpl<GoodsNftMapper, GoodsNft> i
...
@@ -105,6 +105,8 @@ public class GoodsNftServiceImpl extends ServiceImpl<GoodsNftMapper, GoodsNft> i
public
GoodsNftVO
getByGoodsId
(
String
goodsId
)
{
public
GoodsNftVO
getByGoodsId
(
String
goodsId
)
{
LambdaQueryWrapper
<
GoodsNft
>
qw
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
GoodsNft
>
qw
=
new
LambdaQueryWrapper
<>();
qw
.
eq
(
GoodsNft:
:
getGoodsId
,
goodsId
);
qw
.
eq
(
GoodsNft:
:
getGoodsId
,
goodsId
);
if
(
getOne
(
qw
)
==
null
)
return
null
;
return
beanMapper
.
map
(
getOne
(
qw
),
GoodsNftVO
.
class
);
return
beanMapper
.
map
(
getOne
(
qw
),
GoodsNftVO
.
class
);
}
}
...
...
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/service/impl/SkuServiceImpl.java
View file @
8e8ae265
...
@@ -17,6 +17,7 @@ import com.fzm.mall.server.admin.goods_center.entity.vo.GoodsSkuVO;
...
@@ -17,6 +17,7 @@ import com.fzm.mall.server.admin.goods_center.entity.vo.GoodsSkuVO;
import
com.fzm.mall.server.admin.goods_center.entity.vo.SkuPropertyVO
;
import
com.fzm.mall.server.admin.goods_center.entity.vo.SkuPropertyVO
;
import
com.fzm.mall.server.admin.goods_center.enums.type.CommodityPassTypeEnum
;
import
com.fzm.mall.server.admin.goods_center.enums.type.CommodityPassTypeEnum
;
import
com.fzm.mall.server.admin.goods_center.enums.type.NFTSalesTypeEnum
;
import
com.fzm.mall.server.admin.goods_center.enums.type.NFTSalesTypeEnum
;
import
com.fzm.mall.server.admin.goods_center.enums.type.SalesTypeEnum
;
import
com.fzm.mall.server.admin.goods_center.model.ExternalToken
;
import
com.fzm.mall.server.admin.goods_center.model.ExternalToken
;
import
com.fzm.mall.server.admin.goods_center.service.IExternalTokenService
;
import
com.fzm.mall.server.admin.goods_center.service.IExternalTokenService
;
import
com.fzm.mall.server.admin.mq.enums.QueueTTLTypeEnum
;
import
com.fzm.mall.server.admin.mq.enums.QueueTTLTypeEnum
;
...
@@ -30,6 +31,7 @@ import com.fzm.mall.server.admin.home_page.model.Merchant;
...
@@ -30,6 +31,7 @@ import com.fzm.mall.server.admin.home_page.model.Merchant;
import
com.fzm.mall.server.admin.home_page.service.IMerchantService
;
import
com.fzm.mall.server.admin.home_page.service.IMerchantService
;
import
com.fzm.mall.server.admin.order.model.OrderDetail
;
import
com.fzm.mall.server.admin.order.model.OrderDetail
;
import
com.fzm.mall.server.admin.util.UUIDUtil
;
import
com.fzm.mall.server.admin.util.UUIDUtil
;
import
io.swagger.models.auth.In
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.ArrayUtils
;
import
org.apache.commons.lang3.ArrayUtils
;
...
@@ -69,7 +71,7 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
...
@@ -69,7 +71,7 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
private
ChainUtil
chainUtil
;
private
ChainUtil
chainUtil
;
@Override
@Override
public
void
add
(
List
<
GoodsSkuDTO
>
kDTOs
,
String
goodsId
,
String
goodsName
,
String
merchantId
,
String
addr
,
Integer
commodityPass
,
String
thumb
,
Integer
pDTOType
)
{
public
void
add
(
List
<
GoodsSkuDTO
>
kDTOs
,
String
goodsId
,
String
goodsName
,
String
merchantId
,
String
addr
,
Integer
commodityPass
,
String
thumb
,
Integer
pDTOType
,
Integer
salesType
)
{
List
<
Sku
>
skus
=
new
ArrayList
<>();
List
<
Sku
>
skus
=
new
ArrayList
<>();
int
total
=
kDTOs
.
size
();
int
total
=
kDTOs
.
size
();
int
subCount
=
0
;
int
subCount
=
0
;
...
@@ -84,43 +86,44 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
...
@@ -84,43 +86,44 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
}
}
sku
.
setSkuId
(
skuId
);
sku
.
setSkuId
(
skuId
);
sku
.
setGoodsId
(
goodsId
);
sku
.
setGoodsId
(
goodsId
);
sku
.
setCirculation
(
kDTO
.
getStock
());
//规格属性入库
//规格属性入库
skuPropService
.
add
(
kDTO
.
getPropertyList
(),
skuId
);
skuPropService
.
add
(
kDTO
.
getPropertyList
(),
skuId
);
if
(
commodityPass
.
equals
(
CommodityPassTypeEnum
.
INNER
.
getType
()))
{
if
(
salesType
.
equals
(
SalesTypeEnum
.
BLIND_BOX
.
getType
()))
{
long
tokenId
=
System
.
currentTimeMillis
();
if
(
commodityPass
.
equals
(
CommodityPassTypeEnum
.
INNER
.
getType
()))
{
sku
.
setCoinName
(
MALLGlobalConfig
.
NFT_PREFIX
+
tokenId
);
long
tokenId
=
System
.
currentTimeMillis
();
sku
.
setTokenId
(
tokenId
);
sku
.
setCoinName
(
MALLGlobalConfig
.
NFT_PREFIX
+
tokenId
);
//发行NFT
sku
.
setTokenId
(
tokenId
);
log
.
info
(
"【goods release】:"
+
addr
+
","
+
tokenId
+
","
+
kDTO
.
getStock
());
//发行NFT
String
hash
=
chainUtil
.
evmPublishTokenSplit
(
addr
,
tokenId
,
kDTO
.
getStock
());
log
.
info
(
"【goods release】:"
+
addr
+
","
+
tokenId
+
","
+
kDTO
.
getStock
());
log
.
info
(
"【goods release hash】:"
+
hash
);
String
hash
=
chainUtil
.
evmPublishTokenSplit
(
addr
,
tokenId
,
kDTO
.
getStock
());
log
.
info
(
"【goods release hash】:"
+
hash
);
//异步确认
//异步确认
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"hash"
,
hash
);
map
.
put
(
"hash"
,
hash
);
map
.
put
(
"stock"
,
kDTO
.
getStock
());
map
.
put
(
"stock"
,
kDTO
.
getStock
());
map
.
put
(
"goodsId"
,
goodsId
);
map
.
put
(
"goodsId"
,
goodsId
);
map
.
put
(
"skuId"
,
skuId
);
map
.
put
(
"skuId"
,
skuId
);
map
.
put
(
"subCount"
,
++
subCount
);
map
.
put
(
"subCount"
,
++
subCount
);
map
.
put
(
"total"
,
total
);
map
.
put
(
"total"
,
total
);
producer
.
sendTTL
(
map
,
QueueTTLTypeEnum
.
ISSUE_COINS_TTL
,
5
*
1000
);
producer
.
sendTTL
(
map
,
QueueTTLTypeEnum
.
ISSUE_COINS_TTL
,
5
*
1000
);
//外部绑定
//外部绑定
// ||||
// ||||
}
else
if
(
commodityPass
.
equals
(
CommodityPassTypeEnum
.
OUT
.
getType
())
||
commodityPass
.
equals
(
CommodityPassTypeEnum
.
COPY
.
getType
()))
{
}
else
if
(
commodityPass
.
equals
(
CommodityPassTypeEnum
.
OUT
.
getType
())
||
commodityPass
.
equals
(
CommodityPassTypeEnum
.
COPY
.
getType
()))
{
ExternalToken
externalToken
=
externalTokenService
.
queryByComId
(
kDTO
.
getCommodityPassId
());
ExternalToken
externalToken
=
externalTokenService
.
queryByComId
(
kDTO
.
getCommodityPassId
());
externalToken
.
setBindNumber
(
new
BigDecimal
(
kDTO
.
getStock
()));
externalToken
.
setBindNumber
(
new
BigDecimal
(
kDTO
.
getStock
()));
externalToken
.
setGoodsId
(
goodsId
);
externalToken
.
setGoodsId
(
goodsId
);
externalToken
.
setGoodsName
(
goodsName
);
externalToken
.
setGoodsName
(
goodsName
);
externalToken
.
setStatus
(
1
);
externalToken
.
setStatus
(
1
);
externalTokenService
.
updateById
(
externalToken
);
externalTokenService
.
updateById
(
externalToken
);
sku
.
setCoinName
(
externalToken
.
getLabelName
());
sku
.
setCoinName
(
externalToken
.
getLabelName
());
sku
.
setTokenId
(
externalToken
.
getTokenId
());
sku
.
setTokenId
(
externalToken
.
getTokenId
());
}
}
}
if
(
commodityPass
.
equals
(
3
))
{
if
(
commodityPass
.
equals
(
CommodityPassTypeEnum
.
COPY
.
getType
()
))
{
LambdaUpdateWrapper
<
ExternalToken
>
uw
=
new
LambdaUpdateWrapper
<>();
LambdaUpdateWrapper
<
ExternalToken
>
uw
=
new
LambdaUpdateWrapper
<>();
uw
.
set
(
ExternalToken:
:
getBindNumber
,
sku
.
getStock
());
uw
.
set
(
ExternalToken:
:
getBindNumber
,
sku
.
getStock
());
uw
.
set
(
ExternalToken:
:
getGoodsId
,
goodsId
);
uw
.
set
(
ExternalToken:
:
getGoodsId
,
goodsId
);
...
@@ -155,86 +158,6 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
...
@@ -155,86 +158,6 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
}
}
}
}
skus
.
add
(
sku
);
skus
.
add
(
sku
);
/*//内部发行 //todo 加个判断
if (commodityPass.equals(CommodityPassTypeEnum.INNER.getType())) {
long tokenId = System.currentTimeMillis();
sku.setCoinName(MALLGlobalConfig.NFT_PREFIX + tokenId);
sku.setTokenId(tokenId);
//发行NFT
log.info("【goods release】:" + tokenIssueAddr + "," + issueAddrKey + "," + tokenId + "," + kDTO.getStock());
String hash = chainUtil.evmPublishTokenSplit(tokenIssueAddr, issueAddrKey, tokenId, kDTO.getStock());
log.info("【goods release hash】:" + hash);
//异步确认
Map<String, Object> map = new HashMap<>();
map.put("hash", hash);
map.put("stock", kDTO.getStock());
map.put("goodsId", goodsId);
map.put("skuId", skuId);
map.put("subCount", ++subCount);
map.put("total", total);
producer.sendTTL(map, QueueTTLTypeEnum.ISSUE_COINS_TTL, 5 * 1000);
//外部绑定
// ||||
} else if (commodityPass.equals(CommodityPassTypeEnum.OUT.getType()) || commodityPass.equals(CommodityPassTypeEnum.COPY.getType())) {
ExternalToken externalToken = externalTokenService.queryByComId(kDTO.getCommodityPassId());
externalToken.setBindNumber(new BigDecimal(kDTO.getStock()));
externalToken.setGoodsId(goodsId);
externalToken.setGoodsName(goodsName);
externalToken.setStatus(1);
externalTokenService.updateById(externalToken);
sku.setCoinName(externalToken.getLabelName());
sku.setTokenId(externalToken.getTokenId());
}
if (kDTO.getNftSalesType() != null && kDTO.getNftSalesType().equals(NFTSalesTypeEnum.COPY.getType())) {
System.err.println("fefsfsfjioefiosefjiojjfi");
//发行拷贝NFT
ExternalToken externalToken = externalTokenService.queryByComId(kDTO.getCommodityPassId());
String tokenId = externalToken.getTokenId().toString();
long[] nos = new long[Math.toIntExact(kDTO.getStock())];
List<Long> tokenIds = new ArrayList<>();
for (int i = 0; i < kDTO.getStock(); i++) {
String suffix = i + 1 + "";
long suffixAll = Long.parseLong(tokenId + "00000000".substring(0, 8 - suffix.length()) + suffix);
nos[i] = suffixAll;
long balance = chainUtil.evmBalance(tokenIssueAddr, suffixAll);
if (balance == 0) tokenIds.add(suffixAll);
}
List<Long> amounts = new ArrayList<>();
tokenIds.forEach(v -> {
amounts.add(1L);
});
Long[] tokenIdArr = tokenIds.toArray(new Long[0]);
Long[] amountArr = amounts.toArray(new Long[0]);
log.info("发行拷贝NFT:" + Arrays.toString(tokenIdArr));
log.info("发行拷贝NFT:" + Arrays.toString(amountArr));
String tokenBatchSplit = chainUtil.evmPublishTokenBatchSplit(tokenIssueAddr, issueAddrKey, ArrayUtils.toPrimitive(tokenIdArr), ArrayUtils.toPrimitive(amountArr));
System.err.println("fefsfsfjioefiosefjiojjfiL:" + Arrays.toString(ArrayUtils.toPrimitive(tokenIdArr)));
System.err.println("fefsfsfjioefiosefjiojjfiL:" + Arrays.toString(ArrayUtils.toPrimitive(amountArr)));
Map<String, Object> map = new HashMap<>();
map.put("goodsId", goodsId);
map.put("hash", tokenBatchSplit);
map.put("prefix", tokenId);
map.put("merchantId", merchantId);
map.put("commodityPassId", externalToken.getCommodityPassId());
map.put("nos", JSONArray.toJSON(nos));
producer.sendTTL(map, QueueTTLTypeEnum.NFT_USU_TTL, 5 * 1000);
System.err.println("fefsfsfjioefiosefjiojjfiL````:" + tokenBatchSplit);
}
//规格入库
sku.setName(kDTO.getSku Name());
sku.setSkuId(skuId);
sku.setGoodsId(goodsId);
sku.setCertNo(RandomNumberGeneratorUtil.generateNumber2());
skus.add(sku);*/
}
}
saveBatch
(
skus
);
saveBatch
(
skus
);
...
@@ -249,7 +172,9 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
...
@@ -249,7 +172,9 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
String
skuId
=
UUIDUtil
.
getUUID
();
String
skuId
=
UUIDUtil
.
getUUID
();
//规格属性入库
//规格属性入库
skuPropService
.
add
(
kDTO
.
getPropertyList
(),
skuId
);
if
(
kDTO
.
getPropertyList
()
!=
null
)
{
skuPropService
.
add
(
kDTO
.
getPropertyList
(),
skuId
);
}
//规格入库
//规格入库
sku
.
setThumb
(
kDTO
.
getImage
());
sku
.
setThumb
(
kDTO
.
getImage
());
...
@@ -268,42 +193,27 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
...
@@ -268,42 +193,27 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
for
(
GoodsSkuDTO
kDTO
:
kDTOs
)
{
for
(
GoodsSkuDTO
kDTO
:
kDTOs
)
{
String
skuId
=
kDTO
.
getSkuId
();
String
skuId
=
kDTO
.
getSkuId
();
String
coinName
=
kDTO
.
getCoinName
().
toUpperCase
();
Sku
sku
=
getBySkuId
(
skuId
);
String
issueAddr
=
merchant
.
getTokenIssueAddr
();
Long
oldStock
=
sku
.
getStock
();
String
addrKey
=
merchant
.
getIssueAddrKey
();
Long
sales
=
sku
.
getSales
();
if
(
commodityPass
.
equals
(
CommodityPassTypeEnum
.
INNER
.
getType
()))
{
sku
.
setStock
(
kDTO
.
getStock
());
//TODO 数据库操作安全
if
(
kDTO
.
getStock
()
-
oldStock
<
0
)
{
Sku
one
=
getOne
(
new
QueryWrapper
<
Sku
>().
lambda
().
eq
(
Sku:
:
getSkuId
,
skuId
));
// throw new MyException(MallResponseError.STOCK_NOT_CORN);
Long
oldStock
=
one
.
getStock
();
}
one
.
setOriginalPrice
(
kDTO
.
getOriginalPrice
());
one
.
setStock
(
kDTO
.
getStock
());
//发行NFT
one
.
setCirculation
(
one
.
getCirculation
()
+
kDTO
.
getStock
()
-
oldStock
);
String
hash
=
chainUtil
.
evmPublishTokenSplit
(
merchant
.
getTokenIssueAddr
(),
sku
.
getTokenId
(),
kDTO
.
getStock
()
-
oldStock
);
one
.
setWeight
(
kDTO
.
getWeight
());
//异步确认
skus
.
add
(
one
);
if
(
commodityPass
.
equals
(
1
))
{
//增减货币
long
change
=
one
.
getStock
()
-
kDTO
.
getStock
();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"coinName"
,
coinName
);
map
.
put
(
"hash"
,
hash
);
map
.
put
(
"change"
,
change
);
map
.
put
(
"issueAddr"
,
issueAddr
);
map
.
put
(
"addrKey"
,
addrKey
);
map
.
put
(
"goodsId"
,
goodsId
);
map
.
put
(
"skuId"
,
skuId
);
map
.
put
(
"skuId"
,
skuId
);
producer
.
sendTTL
(
map
,
QueueTTLTypeEnum
.
CHANGE_COINS_TTL
,
5
*
1000
);
map
.
put
(
"cir"
,
sku
.
getCirculation
()
+
kDTO
.
getStock
()
-
oldStock
);
}
producer
.
sendTTL
(
map
,
QueueTTLTypeEnum
.
CHANGE_COINS_TTL
,
1000
);
if
(
commodityPass
.
equals
(
2
))
{
LambdaQueryWrapper
<
ExternalToken
>
qw
=
new
LambdaQueryWrapper
<>();
qw
.
eq
(
ExternalToken:
:
getCommodityPassId
,
kDTO
.
getCommodityPassId
());
ExternalToken
externalToken
=
externalTokenService
.
getOne
(
qw
);
externalToken
.
setBindNumber
(
externalToken
.
getBindNumber
().
add
(
new
BigDecimal
(
kDTO
.
getStock
()
-
oldStock
)));
externalTokenService
.
updateById
(
externalToken
);
}
}
}
updateById
(
sku
);
if
(!
updateBatchById
(
skus
))
{
throw
new
MyException
(
MallResponseError
.
UPDATE_ERROR
);
}
}
}
}
...
...
mall-server-admin/src/main/java/com/fzm/mall/server/admin/goods_center/service/impl/SpuServiceImpl.java
View file @
8e8ae265
...
@@ -97,7 +97,7 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
...
@@ -97,7 +97,7 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
//商品销量删除
//商品销量删除
if
(
spu
!=
null
)
{
if
(
spu
!=
null
)
{
//还原外部绑定nft-token //TODO 加个判断
//还原外部绑定nft-token //TODO 加个判断
if
(
spu
.
getCommodityPass
().
equals
(
CommodityPassTypeEnum
.
OUT
.
getType
())
||
spu
.
getCommodityPass
().
equals
(
CommodityPassTypeEnum
.
COPY
.
getType
())
)
{
if
(
spu
.
getCommodityPass
().
equals
(
CommodityPassTypeEnum
.
OUT
.
getType
()))
{
releaseExternalToken
(
goodsId
);
releaseExternalToken
(
goodsId
);
}
}
...
@@ -110,7 +110,7 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
...
@@ -110,7 +110,7 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
goodsId
=
UUIDUtil
.
getUUID
();
goodsId
=
UUIDUtil
.
getUUID
();
}
}
if
(
pDTO
.
get
CommodityPass
()
!=
3
)
{
if
(
pDTO
.
get
SalesType
().
equals
(
SalesTypeEnum
.
ORDINARY
.
getType
())
)
{
nftService
.
add
(
pDTO
.
getNftdto
(),
goodsId
,
pDTO
.
getName
(),
addr
,
merchantId
,
timestamp
);
nftService
.
add
(
pDTO
.
getNftdto
(),
goodsId
,
pDTO
.
getName
(),
addr
,
merchantId
,
timestamp
);
if
(
pDTO
.
getNftdto
().
getTzType
().
equals
(
1
))
{
if
(
pDTO
.
getNftdto
().
getTzType
().
equals
(
1
))
{
List
<
GoodsSkuDTO
>
objects
=
pDTO
.
getSkuList
().
stream
().
peek
(
v
->
v
.
setCoinName
(
MALLGlobalConfig
.
NFT_PREFIX
+
timestamp
)).
collect
(
Collectors
.
toList
());
List
<
GoodsSkuDTO
>
objects
=
pDTO
.
getSkuList
().
stream
().
peek
(
v
->
v
.
setCoinName
(
MALLGlobalConfig
.
NFT_PREFIX
+
timestamp
)).
collect
(
Collectors
.
toList
());
...
@@ -123,7 +123,7 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
...
@@ -123,7 +123,7 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
categorySpuService
.
add
(
ids
,
goodsId
,
merchantId
);
categorySpuService
.
add
(
ids
,
goodsId
,
merchantId
);
//商品规格入库
//商品规格入库
skuService
.
add
(
pDTO
.
getSkuList
(),
goodsId
,
pDTO
.
getName
(),
merchantId
,
addr
,
pDTO
.
getCommodityPass
(),
pDTO
.
getThumb
(),
pDTOType
);
skuService
.
add
(
pDTO
.
getSkuList
(),
goodsId
,
pDTO
.
getName
(),
merchantId
,
addr
,
pDTO
.
getCommodityPass
(),
pDTO
.
getThumb
(),
pDTOType
,
pDTO
.
getSalesType
()
);
//初始化商品信息
//初始化商品信息
spu
=
beanMapper
.
map
(
pDTO
,
Spu
.
class
);
spu
=
beanMapper
.
map
(
pDTO
,
Spu
.
class
);
...
@@ -163,10 +163,14 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
...
@@ -163,10 +163,14 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
goodsId
=
UUIDUtil
.
getUUID
();
goodsId
=
UUIDUtil
.
getUUID
();
//NFT商品入库
//NFT商品入库
if
(
pDTO
.
getSalesType
().
equals
(
SalesTypeEnum
.
BLIND_BOX
.
getType
()))
{
if
(
pDTO
.
getSalesType
().
equals
(
SalesTypeEnum
.
ORDINARY
.
getType
()))
{
nftService
.
draft
(
pDTO
.
getNftdto
(),
goodsId
);
nftService
.
draft
(
pDTO
.
getNftdto
(),
goodsId
);
}
}
//商品类目表入库
JSONArray
ids
=
JSON
.
parseArray
(
pDTO
.
getCategoryId
());
categorySpuService
.
add
(
ids
,
goodsId
,
merchantId
);
//商品规格入库
//商品规格入库
skuService
.
draft
(
pDTO
.
getSkuList
(),
goodsId
);
skuService
.
draft
(
pDTO
.
getSkuList
(),
goodsId
);
...
@@ -196,20 +200,27 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
...
@@ -196,20 +200,27 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
releaseExternalToken
(
goodsId
);
releaseExternalToken
(
goodsId
);
}
}
}
}
//商品类目表删除
categorySpuService
.
removeByGoodsId
(
goodsId
);
//商品销量删除
countService
.
removeByGoodsId
(
goodsId
);
//清除NFT信息
//清除NFT信息
nftService
.
removeByGoodsId
(
goodsId
);
nftService
.
removeByGoodsId
(
goodsId
);
//商品类目表删除
categorySpuService
.
removeByGoodsId
(
goodsId
);
//清除规格信息
//清除规格信息
skuService
.
removeByGoodsId
(
goodsId
);
skuService
.
removeByGoodsId
(
goodsId
);
//商品销量删除
countService
.
removeByGoodsId
(
goodsId
);
//NFT商品入库
//NFT商品入库
nftService
.
draft
(
pDTO
.
getNftdto
(),
goodsId
);
if
(
spu
.
getSalesType
().
equals
(
SalesTypeEnum
.
ORDINARY
.
getType
()))
{
nftService
.
draft
(
pDTO
.
getNftdto
(),
goodsId
);
}
//商品类目表入库
JSONArray
ids
=
JSON
.
parseArray
(
pDTO
.
getCategoryId
());
categorySpuService
.
add
(
ids
,
goodsId
,
merchantId
);
//商品规格入库
//商品规格入库
skuService
.
draft
(
pDTO
.
getSkuList
(),
goodsId
);
skuService
.
draft
(
pDTO
.
getSkuList
(),
goodsId
);
...
@@ -239,52 +250,13 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
...
@@ -239,52 +250,13 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
@Transactional
@Transactional
public
void
edit
(
GoodsEditDTO
pDTO
,
String
merchantId
)
{
public
void
edit
(
GoodsEditDTO
pDTO
,
String
merchantId
)
{
String
goodsId
=
pDTO
.
getGoodsId
();
String
goodsId
=
pDTO
.
getGoodsId
();
Spu
one
=
getByGoodsId
(
goodsId
);
QueryWrapper
<
Spu
>
qw
=
new
QueryWrapper
<>();
qw
.
lambda
().
eq
(
Spu:
:
getGoodsId
,
goodsId
);
Spu
one
=
getOne
(
qw
);
Integer
type
=
one
.
getType
();
//预售拍卖编辑
if
(
type
.
equals
(
PRE_SALE
.
getType
()))
{
preSaleService
.
edit
(
pDTO
.
getPreSaleDTO
(),
goodsId
);
}
else
if
(
type
.
equals
(
AUCTION
.
getType
()))
{
auctionService
.
edit
(
pDTO
.
getAuctionDTO
(),
goodsId
);
}
else
if
(
type
.
equals
(
PACK
.
getType
()))
{
goodsPackageService
.
edit
(
pDTO
.
getPackageDTO
(),
goodsId
);
}
else
if
(
type
.
equals
(
NFT
.
getType
())
&&
!
one
.
getCommodityPass
().
equals
(
CommodityPassTypeEnum
.
COPY
.
getType
()))
{
nftService
.
edit
(
pDTO
.
getNftdto
(),
goodsId
);
}
//更新规格
//更新规格
if
(!
type
.
equals
(
PACK
.
getType
()))
{
Integer
salesType
=
one
.
getSalesType
();
skuService
.
edit
(
pDTO
.
getSkuList
(),
goodsId
,
merchantId
,
one
.
getCommodityPass
());
Integer
commodityPass
=
one
.
getCommodityPass
();
}
if
(
salesType
.
equals
(
SalesTypeEnum
.
BLIND_BOX
.
getType
())
&&
commodityPass
.
equals
(
CommodityPassTypeEnum
.
INNER
.
getType
()))
{
skuService
.
edit
(
pDTO
.
getSkuList
(),
goodsId
,
merchantId
,
commodityPass
);
Spu
spu
=
beanMapper
.
map
(
pDTO
,
Spu
.
class
);
//设置商品最大最小值
if
(
type
.
equals
(
PACK
.
getType
()))
{
BigDecimal
price
=
pDTO
.
getPackageDTO
().
getPrice
();
spu
.
setMaxPrice
(
price
);
spu
.
setDefaultPrice
(
price
);
}
else
if
(
type
.
equals
(
NFT
.
getType
()))
{
BigDecimal
price
=
pDTO
.
getNftdto
().
getPrice
();
spu
.
setMaxPrice
(
price
);
spu
.
setDefaultPrice
(
price
);
if
(
one
.
getCommodityPass
()
==
3
)
{
spu
.
setMaxPrice
(
pDTO
.
getSkuList
().
get
(
0
).
getOriginalPrice
());
spu
.
setDefaultPrice
(
pDTO
.
getSkuList
().
get
(
0
).
getOriginalPrice
());
}
}
else
{
Map
<
String
,
Object
>
price
=
skuService
.
getMaxAndMinPrice
(
goodsId
);
spu
.
setMaxPrice
((
BigDecimal
)
(
price
.
get
(
"maxPrice"
)));
spu
.
setDefaultPrice
((
BigDecimal
)
(
price
.
get
(
"minPrice"
)));
}
UpdateWrapper
<
Spu
>
uw
=
new
UpdateWrapper
<>();
uw
.
lambda
().
eq
(
Spu:
:
getGoodsId
,
goodsId
);
if
(!
update
(
spu
,
uw
))
{
throw
new
MyException
(
MallResponseError
.
UPDATE_ERROR
);
}
}
}
}
...
@@ -382,16 +354,8 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
...
@@ -382,16 +354,8 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
spuVO
.
setCheckFailReason
(
null
);
spuVO
.
setCheckFailReason
(
null
);
}
}
if
(
spuVO
.
getType
().
equals
(
5
))
{
Map
<
String
,
Object
>
sum
=
skuService
.
getStockAndSalesSum
(
spuVO
.
getGoodsId
());
GoodsPackage
goodsIdInner
=
goodsPackageService
.
getByGoodsIdInner
(
spuVO
.
getGoodsId
());
if
(
sum
!=
null
)
{
spuVO
.
setStock
(
goodsIdInner
.
getStock
());
spuVO
.
setSales
(
goodsIdInner
.
getSales
());
}
else
if
(
spuVO
.
getType
().
equals
(
6
))
{
Map
<
String
,
Object
>
sum
=
skuService
.
getStockAndSalesSum
(
spuVO
.
getGoodsId
());
spuVO
.
setStock
(((
BigDecimal
)
sum
.
get
(
"stock"
)).
longValue
());
spuVO
.
setSales
(((
BigDecimal
)
sum
.
get
(
"sales"
)).
longValue
());
}
else
{
Map
<
String
,
Object
>
sum
=
skuService
.
getStockAndSalesSum
(
spuVO
.
getGoodsId
());
spuVO
.
setStock
(((
BigDecimal
)
sum
.
get
(
"stock"
)).
longValue
());
spuVO
.
setStock
(((
BigDecimal
)
sum
.
get
(
"stock"
)).
longValue
());
spuVO
.
setSales
(((
BigDecimal
)
sum
.
get
(
"sales"
)).
longValue
());
spuVO
.
setSales
(((
BigDecimal
)
sum
.
get
(
"sales"
)).
longValue
());
}
}
...
@@ -423,17 +387,8 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
...
@@ -423,17 +387,8 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
vo
.
setCategoryIds
(
categorySpuService
.
getByGoodsIdForId
(
goodsId
));
vo
.
setCategoryIds
(
categorySpuService
.
getByGoodsIdForId
(
goodsId
));
// vo.setTemplateName(templateService.getByTemplateId(vo.getTemplateId()).getTemplateName());
// vo.setTemplateName(templateService.getByTemplateId(vo.getTemplateId()).getTemplateName());
Integer
type
=
spu
.
getType
();
if
(
spu
.
getSalesType
().
equals
(
SalesTypeEnum
.
ORDINARY
.
getType
()))
{
if
(
type
.
equals
(
PRE_SALE
.
getType
()))
{
vo
.
setGoodsNftVO
(
nftService
.
getByGoodsId
(
goodsId
));
vo
.
setPreSaleVO
(
preSaleService
.
getByGoodsId
(
goodsId
));
}
else
if
(
type
.
equals
(
AUCTION
.
getType
()))
{
vo
.
setAuctionVO
(
auctionService
.
getByGoodsId
(
goodsId
));
}
else
if
(
type
.
equals
(
PACK
.
getType
()))
{
vo
.
setGoodsPackageVO
(
goodsPackageService
.
getByGoodsId
(
goodsId
));
}
else
if
(
type
.
equals
(
NFT
.
getType
()))
{
if
(
spu
.
getCommodityPass
()
!=
3
)
{
vo
.
setGoodsNftVO
(
nftService
.
getByGoodsId
(
goodsId
));
}
}
}
return
vo
;
return
vo
;
}
}
...
...
mall-server-admin/src/main/java/com/fzm/mall/server/admin/mq/consumer/goods_center/CoinsConsumer.java
View file @
8e8ae265
...
@@ -2,10 +2,12 @@ package com.fzm.mall.server.admin.mq.consumer.goods_center;
...
@@ -2,10 +2,12 @@ package com.fzm.mall.server.admin.mq.consumer.goods_center;
import
cn.fzm.chain.simplesdk.constant.TxStatusEnum
;
import
cn.fzm.chain.simplesdk.constant.TxStatusEnum
;
import
cn.fzm.chain.simplesdk.model.TxResult
;
import
cn.fzm.chain.simplesdk.model.TxResult
;
import
com.fzm.mall.server.admin.block_chain.enums.ChainStatusEnum
;
import
com.fzm.mall.server.admin.block_chain.util.ChainUtil
;
import
com.fzm.mall.server.admin.block_chain.util.ChainUtil
;
import
com.fzm.mall.server.admin.chain.FzmChain
;
import
com.fzm.mall.server.admin.chain.FzmChain
;
import
com.fzm.mall.server.admin.goods_center.enums.status.SkuStatusEnum
;
import
com.fzm.mall.server.admin.goods_center.enums.status.SkuStatusEnum
;
import
com.fzm.mall.server.admin.goods_center.enums.status.SpuStatusEnum
;
import
com.fzm.mall.server.admin.goods_center.enums.status.SpuStatusEnum
;
import
com.fzm.mall.server.admin.goods_center.model.Sku
;
import
com.fzm.mall.server.admin.goods_center.service.ISkuService
;
import
com.fzm.mall.server.admin.goods_center.service.ISkuService
;
import
com.fzm.mall.server.admin.goods_center.service.ISpuService
;
import
com.fzm.mall.server.admin.goods_center.service.ISpuService
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
...
@@ -37,13 +39,12 @@ public class CoinsConsumer {
...
@@ -37,13 +39,12 @@ public class CoinsConsumer {
public
void
issueCoinsPrice
(
Map
<
String
,
Object
>
obj
)
{
public
void
issueCoinsPrice
(
Map
<
String
,
Object
>
obj
)
{
try
{
try
{
String
hash
=
(
String
)
obj
.
get
(
"hash"
);
String
hash
=
(
String
)
obj
.
get
(
"hash"
);
int
stock
=
(
int
)
obj
.
get
(
"stock
"
);
int
stock
=
Integer
.
parseInt
(
obj
.
get
(
"stock"
)
+
"
"
);
String
goodsId
=
(
String
)
obj
.
get
(
"goodsId"
);
String
goodsId
=
(
String
)
obj
.
get
(
"goodsId"
);
String
skuId
=
(
String
)
obj
.
get
(
"skuId"
);
String
skuId
=
(
String
)
obj
.
get
(
"skuId"
);
int
subCount
=
(
int
)
obj
.
get
(
"subCount"
);
int
subCount
=
(
int
)
obj
.
get
(
"subCount"
);
int
total
=
(
int
)
obj
.
get
(
"total"
);
int
total
=
(
int
)
obj
.
get
(
"total"
);
//异步确认
//异步确认
TxResult
tr
=
chainUtil
.
cycleConfirmTxWithHash
(
hash
);
TxResult
tr
=
chainUtil
.
cycleConfirmTxWithHash
(
hash
);
log
.
info
(
"issue.coins.queue发行========================="
+
tr
.
getStatus
());
log
.
info
(
"issue.coins.queue发行========================="
+
tr
.
getStatus
());
...
@@ -57,7 +58,7 @@ public class CoinsConsumer {
...
@@ -57,7 +58,7 @@ public class CoinsConsumer {
if
(
subCount
==
total
&&
!
status
.
equals
(
SpuStatusEnum
.
DRAFT
.
getStatus
()))
{
if
(
subCount
==
total
&&
!
status
.
equals
(
SpuStatusEnum
.
DRAFT
.
getStatus
()))
{
spuService
.
updateStatus
(
goodsId
,
SpuStatusEnum
.
WAIT_CHECK
.
getStatus
(),
""
);
spuService
.
updateStatus
(
goodsId
,
SpuStatusEnum
.
WAIT_CHECK
.
getStatus
(),
""
);
}
}
skuService
.
updateCirculation
(
skuId
,
stock
);
skuService
.
updateCirculation
(
skuId
,
stock
);
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
info
(
"issue.coins.queue异常========================="
+
e
.
getMessage
());
log
.
info
(
"issue.coins.queue异常========================="
+
e
.
getMessage
());
...
@@ -101,6 +102,23 @@ public class CoinsConsumer {
...
@@ -101,6 +102,23 @@ public class CoinsConsumer {
@RabbitListener
(
queues
=
"ly.change.coins.queue"
)
@RabbitListener
(
queues
=
"ly.change.coins.queue"
)
public
void
changeCoinsPrice
(
Map
<
String
,
Object
>
obj
)
{
public
void
changeCoinsPrice
(
Map
<
String
,
Object
>
obj
)
{
try
{
try
{
String
hash
=
obj
.
get
(
"hash"
)
+
""
;
String
skuId
=
obj
.
get
(
"skuId"
)
+
""
;
int
cir
=
Integer
.
parseInt
(
obj
.
get
(
"cir"
)
+
""
);
//异步确认
TxResult
tr
=
chainUtil
.
cycleConfirmTxWithHash
(
hash
);
log
.
info
(
"change.coins.queue发行========================="
+
tr
.
getStatus
());
if
(
tr
.
getStatus
()
!=
TxStatusEnum
.
SUCCESS
)
{
log
.
error
(
"NFT增发失败,交易HASH:{},失败原因:{}"
,
hash
,
tr
.
getErrMsg
());
Sku
sku
=
skuService
.
getBySkuId
(
skuId
);
skuService
.
updateStatus
(
skuId
,
SkuStatusEnum
.
ISSUE_FAIL
.
getStatus
(),
tr
.
getErrMsg
().
getValue
());
}
else
{
skuService
.
updateCirculation
(
skuId
,
cir
);
}
}
catch
(
Exception
e
)
{
return
;
}
/*try {
String coinName = obj.get("coinName") + "";
String coinName = obj.get("coinName") + "";
int change = (int) obj.get("change");
int change = (int) obj.get("change");
String issueAddr = obj.get("issueAddr") + "";
String issueAddr = obj.get("issueAddr") + "";
...
@@ -127,6 +145,6 @@ public class CoinsConsumer {
...
@@ -127,6 +145,6 @@ public class CoinsConsumer {
}
}
} catch (Exception e) {
} catch (Exception e) {
return;
return;
}
}
*/
}
}
}
}
mall-server-admin/src/main/resources/mapper/goods_center/SpuMapper.xml
View file @
8e8ae265
...
@@ -32,6 +32,7 @@
...
@@ -32,6 +32,7 @@
<result
column=
"sales_type"
property=
"salesType"
/>
<result
column=
"sales_type"
property=
"salesType"
/>
<result
column=
"difficulty"
property=
"difficulty"
/>
<result
column=
"difficulty"
property=
"difficulty"
/>
<result
column=
"blind_box_price"
property=
"blindBoxPrice"
/>
<result
column=
"blind_box_price"
property=
"blindBoxPrice"
/>
<result
column=
"blind_box_rule"
property=
"blindBoxRule"
/>
</resultMap>
</resultMap>
<select
id=
"page"
resultType=
"com.fzm.mall.server.admin.goods_center.entity.vo.GoodsSpuVO"
>
<select
id=
"page"
resultType=
"com.fzm.mall.server.admin.goods_center.entity.vo.GoodsSpuVO"
>
...
...
mall-sql/mall_create.sql
View file @
8e8ae265
...
@@ -2529,7 +2529,7 @@ ALTER TABLE `goods_spu`
...
@@ -2529,7 +2529,7 @@ ALTER TABLE `goods_spu`
ADD
COLUMN
`sales_type`
tinyint
(
1
)
NOT
NULL
DEFAULT
'1'
COMMENT
'(销售方式)1.普通 2.盲盒'
;
ADD
COLUMN
`sales_type`
tinyint
(
1
)
NOT
NULL
DEFAULT
'1'
COMMENT
'(销售方式)1.普通 2.盲盒'
;
ALTER
TABLE
`goods_sku`
ALTER
TABLE
`goods_sku`
ADD
COLUMN
`is_hide`
tinyint
(
1
)
NOT
NULL
COMMENT
'是否隐藏款(0.否 1.是)'
;
ADD
COLUMN
`is_hide`
tinyint
(
1
)
NOT
NULL
DEFAULT
0
COMMENT
'是否隐藏款(0.否 1.是)'
;
ALTER
TABLE
`goods_spu`
ALTER
TABLE
`goods_spu`
ADD
COLUMN
`difficulty`
tinyint
(
2
)
unsigned
NOT
NULL
DEFAULT
'1'
COMMENT
'盲盒商品难度(1-10)'
;
ADD
COLUMN
`difficulty`
tinyint
(
2
)
unsigned
NOT
NULL
DEFAULT
'1'
COMMENT
'盲盒商品难度(1-10)'
;
...
@@ -2539,4 +2539,13 @@ ALTER TABLE `goods_spu`
...
@@ -2539,4 +2539,13 @@ ALTER TABLE `goods_spu`
ALTER
TABLE
`goods_sku`
ALTER
TABLE
`goods_sku`
ADD
COLUMN
`token_id`
bigint
(
32
)
DEFAULT
'0'
COMMENT
'token_id'
;
ADD
COLUMN
`token_id`
bigint
(
32
)
DEFAULT
'0'
COMMENT
'token_id'
;
,
ALTER
TABLE
`goods_spu`
ADD
COLUMN
`blind_box_rule`
text
COLLATE
utf8mb4_unicode_ci
NOT
NULL
COMMENT
'盲盒规则'
;
ALTER
TABLE
`goods_spu`
ADD
COLUMN
`preheat_start_time`
bigint
(
20
)
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'预热开始时间'
;
ALTER
TABLE
`goods_spu`
ADD
COLUMN
`preheat_end_time`
bigint
(
20
)
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'预热结束时间'
;
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