Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Q
qk_backend
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
quanku
qk_backend
Commits
e6769b6e
Commit
e6769b6e
authored
Oct 28, 2024
by
shiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
交换订单限制只换一单
parent
a0601766
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
134 additions
and
47 deletions
+134
-47
ch-core/src/main/java/com/wwdz/ch/core/util/AESCrypt.java
ch-core/src/main/java/com/wwdz/ch/core/util/AESCrypt.java
+57
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/request/ItemTagOperateRequestDto.java
...m/wwdz/ch/wx/entity/request/ItemTagOperateRequestDto.java
+10
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/ItemTagOperateServiceImpl.java
...n/java/com/wwdz/ch/wx/impl/ItemTagOperateServiceImpl.java
+46
-34
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/ExchangeApplyOrderServiceImpl.java
...h/wx/impl/distribution/ExchangeApplyOrderServiceImpl.java
+2
-2
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/ExchangeServiceImpl.java
...com/wwdz/ch/wx/impl/distribution/ExchangeServiceImpl.java
+11
-11
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/ItemTagOperateService.java
...in/java/com/wwdz/ch/wx/service/ItemTagOperateService.java
+8
-0
No files found.
ch-core/src/main/java/com/wwdz/ch/core/util/AESCrypt.java
0 → 100644
View file @
e6769b6e
package
com.wwdz.ch.core.util
;
import
javax.crypto.Cipher
;
import
javax.crypto.spec.SecretKeySpec
;
import
java.util.Base64
;
public
class
AESCrypt
{
private
static
final
String
ALGORITHM
=
"AES"
;
/**
* 密钥
*/
private
static
final
String
SECRET_KEY
=
"f03db8ed815b46cdbed45dcf40e44239"
;
// 加密
public
static
String
encrypt
(
String
data
)
throws
Exception
{
SecretKeySpec
key
=
new
SecretKeySpec
(
SECRET_KEY
.
getBytes
(),
ALGORITHM
);
Cipher
cipher
=
Cipher
.
getInstance
(
ALGORITHM
);
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
key
);
byte
[]
encryptedBytes
=
cipher
.
doFinal
(
data
.
getBytes
());
// 将字节数组转换为Base64字符串,并替换斜杠
String
base64Encoded
=
Base64
.
getEncoder
().
encodeToString
(
encryptedBytes
);
return
base64Encoded
.
replace
(
"/"
,
"_"
);
// 替换斜杠
}
// 解密
public
static
String
decrypt
(
String
encryptedData
)
throws
Exception
{
SecretKeySpec
key
=
new
SecretKeySpec
(
SECRET_KEY
.
getBytes
(),
ALGORITHM
);
Cipher
cipher
=
Cipher
.
getInstance
(
ALGORITHM
);
// 将替换后的字符串恢复为原始Base64字符串
String
base64Encoded
=
encryptedData
.
replace
(
"_"
,
"/"
);
// 恢复斜杠
byte
[]
encryptedBytes
=
Base64
.
getDecoder
().
decode
(
base64Encoded
);
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
key
);
byte
[]
decryptedBytes
=
cipher
.
doFinal
(
encryptedBytes
);
return
new
String
(
decryptedBytes
);
}
public
static
void
main
(
String
[]
args
)
{
try
{
String
originalId
=
"323232921"
;
// 需要加密的ID
// 加密
String
encryptedId
=
encrypt
(
originalId
);
System
.
out
.
println
(
"Encrypted ID: "
+
encryptedId
);
System
.
out
.
println
(
"Encrypted ID length: "
+
encryptedId
.
length
());
// 解密
String
decryptedId
=
decrypt
(
encryptedId
);
System
.
out
.
println
(
"Decrypted ID: "
+
decryptedId
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/request/ItemTagOperateRequestDto.java
View file @
e6769b6e
...
@@ -33,4 +33,14 @@ public class ItemTagOperateRequestDto implements Entity {
...
@@ -33,4 +33,14 @@ public class ItemTagOperateRequestDto implements Entity {
* 图片
* 图片
*/
*/
private
List
<
String
>
images
;
private
List
<
String
>
images
;
/**
* 生成的数量
*/
private
Integer
createNum
;
/**
* 商品id加密后的字符串
*/
private
String
secretCode
;
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/ItemTagOperateServiceImpl.java
View file @
e6769b6e
...
@@ -7,6 +7,7 @@ import com.wwdz.ch.core.consts.DistributionEnum;
...
@@ -7,6 +7,7 @@ import com.wwdz.ch.core.consts.DistributionEnum;
import
com.wwdz.ch.core.consts.SupplierItemEnum
;
import
com.wwdz.ch.core.consts.SupplierItemEnum
;
import
com.wwdz.ch.core.type.PageSearchResult
;
import
com.wwdz.ch.core.type.PageSearchResult
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.AESCrypt
;
import
com.wwdz.ch.core.util.PriceUtil
;
import
com.wwdz.ch.core.util.PriceUtil
;
import
com.wwdz.ch.core.util.QRCodeUtil
;
import
com.wwdz.ch.core.util.QRCodeUtil
;
import
com.wwdz.ch.db.dao.CategoryDao
;
import
com.wwdz.ch.db.dao.CategoryDao
;
...
@@ -20,8 +21,6 @@ import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto;
...
@@ -20,8 +21,6 @@ import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto;
import
com.wwdz.ch.wx.entity.vo.ItemTagPrintInfo
;
import
com.wwdz.ch.wx.entity.vo.ItemTagPrintInfo
;
import
com.wwdz.ch.wx.service.ItemTagOperateService
;
import
com.wwdz.ch.wx.service.ItemTagOperateService
;
import
com.xxdxxs.utils.EntityMapper
;
import
com.xxdxxs.utils.EntityMapper
;
import
com.xxdxxs.utils.StringUtils
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.redisson.api.RedissonClient
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
...
@@ -31,7 +30,7 @@ import org.springframework.util.CollectionUtils;
...
@@ -31,7 +30,7 @@ import org.springframework.util.CollectionUtils;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.
concurrent.TimeUnit
;
import
java.util.
stream.IntStream
;
@Service
@Service
public
class
ItemTagOperateServiceImpl
implements
ItemTagOperateService
{
public
class
ItemTagOperateServiceImpl
implements
ItemTagOperateService
{
...
@@ -54,11 +53,49 @@ public class ItemTagOperateServiceImpl implements ItemTagOperateService {
...
@@ -54,11 +53,49 @@ public class ItemTagOperateServiceImpl implements ItemTagOperateService {
WxAppletApi
wxAppletApi
;
WxAppletApi
wxAppletApi
;
@Override
public
Result
createQrCode
(
ItemTagOperateRequestDto
dto
)
{
try
{
int
createNum
=
dto
.
getCreateNum
();
IntStream
.
rangeClosed
(
0
,
createNum
).
parallel
().
forEach
(
i
->{
SupplierItem
supplierItem
=
new
SupplierItem
();
supplierItem
.
setDistributionPrice
(
0L
);
supplierItem
.
setSupplyPrice
(
0L
);
supplierItem
.
setRebate
(
new
BigDecimal
(
"0"
));
supplierItem
.
setSort
(
1
);
supplierItem
.
setBuyLimitNum
(-
1
);
supplierItem
.
setIsAbleSale
(
false
);
supplierItem
.
setIsOnSale
(
false
);
supplierItem
.
setStock
(
1
);
supplierItem
.
setIsOnSale
(
false
);
Date
now
=
new
Date
();
supplierItem
.
setCreateTime
(
now
);
supplierItem
.
setUpdateTime
(
now
);
supplierItem
.
setIsDeleted
(
true
);
supplierItem
.
setDistributionPrice
(
0L
);
supplierItem
.
setType
(
DistributionEnum
.
DistributionTypeEnum
.
BLACK
.
getCode
());
supplierItem
.
setStatus
(
SupplierItemEnum
.
StatusEnum
.
COMMON
.
getCode
());
supplierItem
.
setCreatorId
(
CommConsts
.
PRINT_ITEM_TAG_CREATOR_ID
);
long
itemId
=
supplierItemDao
.
insert
(
supplierItem
);
//获取页面短链
String
url
=
wxAppletApi
.
getUrlLink
(
"/pages/detail/index"
,
"itemId="
+
itemId
);
String
qrCode
=
QRCodeUtil
.
createCodeToBase64
(
url
);
});
}
catch
(
Exception
e
)
{
logger
.
error
(
"打印标签失败"
,
e
);
}
return
Result
.
failed
(
"打印标签失败"
);
}
@Override
@Override
public
Result
printItemTag
(
ItemTagOperateRequestDto
dto
)
{
public
Result
printItemTag
(
ItemTagOperateRequestDto
dto
)
{
try
{
try
{
//先上传商品
String
secretCode
=
dto
.
getSecretCode
();
long
itemId
=
Long
.
valueOf
(
AESCrypt
.
decrypt
(
secretCode
));
SupplierItem
supplierItem
=
new
SupplierItem
();
SupplierItem
supplierItem
=
new
SupplierItem
();
supplierItem
.
setId
(
itemId
);
//查询类目信息
//查询类目信息
Category
category
=
categoryDao
.
findById
(
dto
.
getCategoryId
());
Category
category
=
categoryDao
.
findById
(
dto
.
getCategoryId
());
EntityMapper
.
copyAttribute
(
dto
,
supplierItem
);
EntityMapper
.
copyAttribute
(
dto
,
supplierItem
);
...
@@ -67,27 +104,10 @@ public class ItemTagOperateServiceImpl implements ItemTagOperateService {
...
@@ -67,27 +104,10 @@ public class ItemTagOperateServiceImpl implements ItemTagOperateService {
Category
parentCategory
=
categoryDao
.
findById
(
category
.
getPid
());
Category
parentCategory
=
categoryDao
.
findById
(
category
.
getPid
());
supplierItem
.
setName
(
parentCategory
.
getName
()
+
"-"
+
category
.
getName
());
supplierItem
.
setName
(
parentCategory
.
getName
()
+
"-"
+
category
.
getName
());
supplierItem
.
setDescription
(
category
.
getIntroduction
());
supplierItem
.
setDescription
(
category
.
getIntroduction
());
supplierItem
.
setDistributionPrice
(
0L
);
supplierItem
.
setSupplyPrice
(
0L
);
supplierItem
.
setRebate
(
new
BigDecimal
(
"0"
));
if
(!
CollectionUtils
.
isEmpty
(
dto
.
getImages
()))
{
if
(!
CollectionUtils
.
isEmpty
(
dto
.
getImages
()))
{
supplierItem
.
setImages
(
String
.
join
(
";"
,
dto
.
getImages
()));
supplierItem
.
setImages
(
String
.
join
(
";"
,
dto
.
getImages
()));
}
}
supplierItem
.
setSort
(
1
);
supplierItemDao
.
update
(
supplierItem
);
supplierItem
.
setBuyLimitNum
(-
1
);
supplierItem
.
setIsAbleSale
(
false
);
supplierItem
.
setIsOnSale
(
false
);
supplierItem
.
setStock
(
1
);
supplierItem
.
setIsOnSale
(
false
);
Date
now
=
new
Date
();
supplierItem
.
setCreateTime
(
now
);
supplierItem
.
setUpdateTime
(
now
);
supplierItem
.
setIsDeleted
(
true
);
supplierItem
.
setDistributionPrice
(
0L
);
supplierItem
.
setType
(
DistributionEnum
.
DistributionTypeEnum
.
BLACK
.
getCode
());
supplierItem
.
setStatus
(
SupplierItemEnum
.
StatusEnum
.
COMMON
.
getCode
());
supplierItem
.
setCreatorId
(
CommConsts
.
PRINT_ITEM_TAG_CREATOR_ID
);
long
itemId
=
supplierItemDao
.
insert
(
supplierItem
);
//记录制作标签的记录
//记录制作标签的记录
ItemTagOperateRecord
itemTagOperateRecord
=
new
ItemTagOperateRecord
();
ItemTagOperateRecord
itemTagOperateRecord
=
new
ItemTagOperateRecord
();
itemTagOperateRecord
.
setItemId
(
itemId
);
itemTagOperateRecord
.
setItemId
(
itemId
);
...
@@ -95,22 +115,14 @@ public class ItemTagOperateServiceImpl implements ItemTagOperateService {
...
@@ -95,22 +115,14 @@ public class ItemTagOperateServiceImpl implements ItemTagOperateService {
itemTagOperateRecord
.
setCategoryId
(
dto
.
getCategoryId
());
itemTagOperateRecord
.
setCategoryId
(
dto
.
getCategoryId
());
itemTagOperateRecord
.
setCategoryName
(
category
.
getName
());
itemTagOperateRecord
.
setCategoryName
(
category
.
getName
());
itemTagOperateRecord
.
setOperatorId
(
dto
.
getOperatorId
());
itemTagOperateRecord
.
setOperatorId
(
dto
.
getOperatorId
());
itemTagOperateRecord
.
setCreateTime
(
n
ow
);
itemTagOperateRecord
.
setCreateTime
(
n
ew
Date
()
);
itemTagOperateRecordDao
.
insert
(
itemTagOperateRecord
);
itemTagOperateRecordDao
.
insert
(
itemTagOperateRecord
);
//打印标签的信息
return
Result
.
success
();
ItemTagPrintInfo
itemTagPrintInfo
=
new
ItemTagPrintInfo
();
itemTagPrintInfo
.
setItemName
(
supplierItem
.
getName
());
//获取页面短链
String
url
=
wxAppletApi
.
getUrlLink
(
"/pages/detail/index"
,
"itemId="
+
itemId
);
itemTagPrintInfo
.
setUrl
(
url
);
String
qrCode
=
QRCodeUtil
.
createCodeToBase64
(
url
);
itemTagPrintInfo
.
setQrCode
(
qrCode
);
return
Result
.
success
(
itemTagPrintInfo
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"
打印标签
失败"
,
e
);
logger
.
error
(
"
绑定二维码
失败"
,
e
);
}
}
return
Result
.
failed
(
"
打印标签
失败"
);
return
Result
.
failed
(
"
绑定二维码
失败"
);
}
}
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/ExchangeApplyOrderServiceImpl.java
View file @
e6769b6e
...
@@ -172,7 +172,7 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
...
@@ -172,7 +172,7 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
Result
commitExchangeOrderResult
=
exchangeService
.
exchange
(
commitExchangeDto
);
Result
commitExchangeOrderResult
=
exchangeService
.
exchange
(
commitExchangeDto
);
if
(!
commitExchangeOrderResult
.
getSuccess
())
{
if
(!
commitExchangeOrderResult
.
getSuccess
())
{
logger
.
error
(
">>>>>>> 创建申请方交换订单失败:{} <<<<<<<"
,
commitExchangeOrderResult
.
getErrmsg
());
logger
.
error
(
">>>>>>> 创建申请方交换订单失败:{} <<<<<<<"
,
commitExchangeOrderResult
.
getErrmsg
());
throw
new
Exception
(
commitExchangeOrderResult
.
getErrmsg
());
return
Result
.
failed
(
commitExchangeOrderResult
.
getErrmsg
());
}
}
//为受理方创建订单
//为受理方创建订单
ExchangeRequestDto
receiveExchangeDto
=
new
ExchangeRequestDto
();
ExchangeRequestDto
receiveExchangeDto
=
new
ExchangeRequestDto
();
...
@@ -204,7 +204,7 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
...
@@ -204,7 +204,7 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
Result
receiveExchangeOrderResult
=
exchangeService
.
exchange
(
receiveExchangeDto
);
Result
receiveExchangeOrderResult
=
exchangeService
.
exchange
(
receiveExchangeDto
);
if
(!
receiveExchangeOrderResult
.
getSuccess
())
{
if
(!
receiveExchangeOrderResult
.
getSuccess
())
{
logger
.
error
(
">>>>>>>> 创建接收方方交换订单失败:{} <<<<<<<<"
,
receiveExchangeOrderResult
.
getErrmsg
());
logger
.
error
(
">>>>>>>> 创建接收方方交换订单失败:{} <<<<<<<<"
,
receiveExchangeOrderResult
.
getErrmsg
());
throw
new
Exception
(
receive
ExchangeOrderResult
.
getErrmsg
());
return
Result
.
failed
(
commit
ExchangeOrderResult
.
getErrmsg
());
}
}
ExchangeApplyOrder
updateExchangeApplyOrder
=
new
ExchangeApplyOrder
();
ExchangeApplyOrder
updateExchangeApplyOrder
=
new
ExchangeApplyOrder
();
updateExchangeApplyOrder
.
setExchangeApplyOrderId
(
orderId
);
updateExchangeApplyOrder
.
setExchangeApplyOrderId
(
orderId
);
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/ExchangeServiceImpl.java
View file @
e6769b6e
...
@@ -243,22 +243,11 @@ public class ExchangeServiceImpl implements ExchangeService {
...
@@ -243,22 +243,11 @@ public class ExchangeServiceImpl implements ExchangeService {
if
(
BLACK_USER_LIST
.
contains
(
dto
.
getUserId
()))
{
if
(
BLACK_USER_LIST
.
contains
(
dto
.
getUserId
()))
{
return
Result
.
failed
(
"可直接换的商品每人限换一单"
);
return
Result
.
failed
(
"可直接换的商品每人限换一单"
);
}
}
//判断是否有和平台交换的订单
long
orderNum
=
distributionOrderDao
.
countExchangeOrderNum
(
dto
.
getUserId
(),
CommConsts
.
SELF_SUPPORT_ACCOUNT
);
if
(
orderNum
>
0
)
{
return
Result
.
failed
(
"可直接换的商品每人限换一单"
);
}
//限换一件
if
(
dto
.
getExchangeItemNum
()
!=
null
&&
dto
.
getExchangeItemNum
()
>
1
)
{
return
Result
.
failed
(
"可直接换的商品每人只能换一件"
);
}
if
(
dto
.
getIsMultiple
())
{
if
(
dto
.
getIsMultiple
())
{
//多商品场景在受理方订单中出现,别人用多件商品换受理方的一件商品,对于受理方而言等于是一个订单买了多件商品,
//多商品场景在受理方订单中出现,别人用多件商品换受理方的一件商品,对于受理方而言等于是一个订单买了多件商品,
// 由于在创建申请方订单时已经扣除过库存,所以这里无需扣减库存,也不校验库存
// 由于在创建申请方订单时已经扣除过库存,所以这里无需扣减库存,也不校验库存
List
<
ItemSimpleDto
>
exchangeItemList
=
dto
.
getExchangeItemList
();
List
<
ItemSimpleDto
>
exchangeItemList
=
dto
.
getExchangeItemList
();
for
(
ItemSimpleDto
itemSimpleDto
:
exchangeItemList
)
{
for
(
ItemSimpleDto
itemSimpleDto
:
exchangeItemList
)
{
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
itemSimpleDto
.
getItemId
());
exchangeItemId
=
itemSimpleDto
.
getItemId
();
exchangeItemId
=
itemSimpleDto
.
getItemId
();
}
}
}
else
{
}
else
{
...
@@ -269,6 +258,17 @@ public class ExchangeServiceImpl implements ExchangeService {
...
@@ -269,6 +258,17 @@ public class ExchangeServiceImpl implements ExchangeService {
logger
.
info
(
"商品id:{}, 库存不足"
,
exchangeItemId
);
logger
.
info
(
"商品id:{}, 库存不足"
,
exchangeItemId
);
return
Result
.
failed
(
"库存不足"
);
return
Result
.
failed
(
"库存不足"
);
}
}
if
(
supplierItem
.
getCreatorId
().
longValue
()
==
CommConsts
.
SELF_SUPPORT_ACCOUNT
&&
supplierItem
.
getType
().
equals
(
DistributionEnum
.
DistributionTypeEnum
.
EXCHANGE
.
getCode
()))
{
//判断是否有和平台交换的订单
long
orderNum
=
distributionOrderDao
.
countExchangeOrderNum
(
dto
.
getUserId
(),
CommConsts
.
SELF_SUPPORT_ACCOUNT
);
if
(
orderNum
>
0
)
{
return
Result
.
failed
(
"可直接换的商品每人限换一单"
);
}
//限换一件
if
(
dto
.
getExchangeItemNum
()
!=
null
&&
dto
.
getExchangeItemNum
()
>
1
)
{
return
Result
.
failed
(
"可直接换的商品每人只能换一件"
);
}
}
}
}
List
<
ItemSimpleDto
>
itemSimpleDtoList
=
dto
.
getItemList
();
List
<
ItemSimpleDto
>
itemSimpleDtoList
=
dto
.
getItemList
();
//查询用户藏品的价值
//查询用户藏品的价值
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/ItemTagOperateService.java
View file @
e6769b6e
...
@@ -6,6 +6,14 @@ import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto;
...
@@ -6,6 +6,14 @@ import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto;
public
interface
ItemTagOperateService
{
public
interface
ItemTagOperateService
{
/**
* 创建无图商品,生成页面二维码
* @return
*/
Result
createQrCode
(
ItemTagOperateRequestDto
dto
);
/**
/**
* 打印标签
* 打印标签
* @param dto
* @param dto
...
...
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