Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
a62b4b53
authored
Oct 22, 2025
by
Jony.L
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
算力资源订单 支付成功更新销量和库存、 管理端算力资源订单页面展示手机号
parent
71743653
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
80 additions
and
1 deletions
+80
-1
computility-module-compute/computility-module-compute-api/src/main/java/com/luhu/computility/module/compute/enums/ErrorCodeConstants.java
+2
-0
computility-module-compute/computility-module-compute-biz/src/main/java/com/luhu/computility/module/compute/controller/admin/resourceorder/vo/ResourceOrderRespVO.java
+4
-0
computility-module-compute/computility-module-compute-biz/src/main/java/com/luhu/computility/module/compute/service/resourceorder/ResourceOrderServiceImpl.java
+37
-1
computility-module-compute/computility-module-compute-biz/src/main/java/com/luhu/computility/module/compute/service/resourcespu/ResourceSpuService.java
+8
-0
computility-module-compute/computility-module-compute-biz/src/main/java/com/luhu/computility/module/compute/service/resourcespu/ResourceSpuServiceImpl.java
+29
-0
No files found.
computility-module-compute/computility-module-compute-api/src/main/java/com/luhu/computility/module/compute/enums/ErrorCodeConstants.java
View file @
a62b4b53
...
@@ -18,5 +18,6 @@ public interface ErrorCodeConstants {
...
@@ -18,5 +18,6 @@ public interface ErrorCodeConstants {
ErrorCode
RESOURCE_ORDER_STATUS_NOT_UNPAID
=
new
ErrorCode
(
1_030_006_000
,
"算力资源订单状态不是待支付"
);
ErrorCode
RESOURCE_ORDER_STATUS_NOT_UNPAID
=
new
ErrorCode
(
1_030_006_000
,
"算力资源订单状态不是待支付"
);
ErrorCode
RESOURCE_ORDER_PAY_ORDER_ID_MISMATCH
=
new
ErrorCode
(
1_030_007_000
,
"支付订单ID不匹配"
);
ErrorCode
RESOURCE_ORDER_PAY_ORDER_ID_MISMATCH
=
new
ErrorCode
(
1_030_007_000
,
"支付订单ID不匹配"
);
ErrorCode
RESOURCE_ORDER_NOT_BELONGS_TO_USER
=
new
ErrorCode
(
1_030_008_000
,
"算力资源订单不属于当前用户"
);
ErrorCode
RESOURCE_ORDER_NOT_BELONGS_TO_USER
=
new
ErrorCode
(
1_030_008_000
,
"算力资源订单不属于当前用户"
);
ErrorCode
RESOURCE_SPU_STOCK_INSUFFICIENT
=
new
ErrorCode
(
1_030_009_000
,
"算力资源SPU库存不足"
);
}
}
\ No newline at end of file
computility-module-compute/computility-module-compute-biz/src/main/java/com/luhu/computility/module/compute/controller/admin/resourceorder/vo/ResourceOrderRespVO.java
View file @
a62b4b53
...
@@ -24,6 +24,10 @@ public class ResourceOrderRespVO {
...
@@ -24,6 +24,10 @@ public class ResourceOrderRespVO {
@ExcelProperty
(
"用户昵称"
)
@ExcelProperty
(
"用户昵称"
)
private
String
nickname
;
private
String
nickname
;
@Schema
(
description
=
"用户手机号"
,
example
=
"13800138000"
)
@ExcelProperty
(
"用户手机号"
)
private
String
mobile
;
@Schema
(
description
=
"算力资源SKU ID"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"31061"
)
@Schema
(
description
=
"算力资源SKU ID"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"31061"
)
@ExcelProperty
(
"算力资源SKU ID"
)
@ExcelProperty
(
"算力资源SKU ID"
)
private
Long
skuId
;
private
Long
skuId
;
...
...
computility-module-compute/computility-module-compute-biz/src/main/java/com/luhu/computility/module/compute/service/resourceorder/ResourceOrderServiceImpl.java
View file @
a62b4b53
...
@@ -31,6 +31,7 @@ import com.luhu.computility.module.compute.dal.dataobject.resourcespu.ResourceSp
...
@@ -31,6 +31,7 @@ import com.luhu.computility.module.compute.dal.dataobject.resourcespu.ResourceSp
import
com.luhu.computility.module.compute.service.resourcesku.ResourceSkuService
;
import
com.luhu.computility.module.compute.service.resourcesku.ResourceSkuService
;
import
com.luhu.computility.module.compute.service.resourcespu.ResourceSpuService
;
import
com.luhu.computility.module.compute.service.resourcespu.ResourceSpuService
;
import
com.luhu.computility.module.compute.service.resourcecategory.ResourceCategoryService
;
import
com.luhu.computility.module.compute.service.resourcecategory.ResourceCategoryService
;
import
com.luhu.computility.module.system.service.member.MemberService
;
import
com.luhu.computility.module.compute.enums.ResourceOrderStatus
;
import
com.luhu.computility.module.compute.enums.ResourceOrderStatus
;
import
com.luhu.computility.module.compute.enums.ResourceOrderRefundStatus
;
import
com.luhu.computility.module.compute.enums.ResourceOrderRefundStatus
;
import
com.luhu.computility.module.compute.enums.ResourceOrderInvoiceStatus
;
import
com.luhu.computility.module.compute.enums.ResourceOrderInvoiceStatus
;
...
@@ -81,6 +82,9 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
...
@@ -81,6 +82,9 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
@Resource
@Resource
private
ResourceOrderNoRedisDAO
resourceOrderNoRedisDAO
;
private
ResourceOrderNoRedisDAO
resourceOrderNoRedisDAO
;
@Resource
private
MemberService
memberService
;
@Override
@Override
public
Long
createResourceOrder
(
ResourceOrderSaveReqVO
createReqVO
)
{
public
Long
createResourceOrder
(
ResourceOrderSaveReqVO
createReqVO
)
{
// 插入
// 插入
...
@@ -131,7 +135,19 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
...
@@ -131,7 +135,19 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
@Override
@Override
public
PageResult
<
ResourceOrderRespVO
>
getResourceOrderPage
(
ResourceOrderPageReqVO
pageReqVO
)
{
public
PageResult
<
ResourceOrderRespVO
>
getResourceOrderPage
(
ResourceOrderPageReqVO
pageReqVO
)
{
return
resourceOrderMapper
.
selectPage
(
pageReqVO
);
PageResult
<
ResourceOrderRespVO
>
pageResult
=
resourceOrderMapper
.
selectPage
(
pageReqVO
);
// 为每个订单添加用户手机号
if
(
CollUtil
.
isNotEmpty
(
pageResult
.
getList
()))
{
pageResult
.
getList
().
forEach
(
order
->
{
if
(
order
.
getUserId
()
!=
null
)
{
String
mobile
=
memberService
.
getMemberUserMobile
(
order
.
getUserId
());
order
.
setMobile
(
mobile
);
}
});
}
return
pageResult
;
}
}
@Override
@Override
...
@@ -242,6 +258,20 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
...
@@ -242,6 +258,20 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
updateOrder
.
setPayTime
(
LocalDateTime
.
now
());
updateOrder
.
setPayTime
(
LocalDateTime
.
now
());
resourceOrderMapper
.
updateById
(
updateOrder
);
resourceOrderMapper
.
updateById
(
updateOrder
);
// 4. 更新SPU销量和库存
try
{
// 获取SKU信息,找到对应的SPU
ResourceSkuDO
sku
=
resourceSkuService
.
getResourceSku
(
order
.
getSkuId
());
if
(
sku
!=
null
&&
sku
.
getSpuId
()
!=
null
)
{
// 更新SPU销量和库存
resourceSpuService
.
updateSalesAndStock
(
sku
.
getSpuId
());
log
.
info
(
"[updateOrderPaid][order({}) 支付成功,已更新SPU({})的销量和库存]"
,
orderId
,
sku
.
getSpuId
());
}
}
catch
(
Exception
e
)
{
// 更新销量和库存失败不应该影响支付流程,只记录日志
log
.
error
(
"[updateOrderPaid][order({}) 更新SPU销量和库存失败]"
,
orderId
,
e
);
}
}
}
@Override
@Override
...
@@ -327,6 +357,12 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
...
@@ -327,6 +357,12 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
List
<
AppResourceOrderRespVO
>
respList
=
convertList
(
pageResult
.
getList
(),
order
->
{
List
<
AppResourceOrderRespVO
>
respList
=
convertList
(
pageResult
.
getList
(),
order
->
{
AppResourceOrderRespVO
respVO
=
BeanUtils
.
toBean
(
order
,
AppResourceOrderRespVO
.
class
);
AppResourceOrderRespVO
respVO
=
BeanUtils
.
toBean
(
order
,
AppResourceOrderRespVO
.
class
);
// 获取用户手机号
if
(
order
.
getUserId
()
!=
null
)
{
String
mobile
=
memberService
.
getMemberUserMobile
(
order
.
getUserId
());
respVO
.
setMobile
(
mobile
);
}
// 获取SKU和SPU信息
// 获取SKU和SPU信息
ResourceSkuDO
sku
=
resourceSkuService
.
getResourceSku
(
order
.
getSkuId
());
ResourceSkuDO
sku
=
resourceSkuService
.
getResourceSku
(
order
.
getSkuId
());
...
...
computility-module-compute/computility-module-compute-biz/src/main/java/com/luhu/computility/module/compute/service/resourcespu/ResourceSpuService.java
View file @
a62b4b53
...
@@ -85,4 +85,11 @@ public interface ResourceSpuService {
...
@@ -85,4 +85,11 @@ public interface ResourceSpuService {
*/
*/
List
<
ResourceSpuDO
>
getOnlineResourceSpuList
();
List
<
ResourceSpuDO
>
getOnlineResourceSpuList
();
/**
* 更新SPU销量和库存(支付成功后调用)
*
* @param spuId SPU编号
*/
void
updateSalesAndStock
(
Long
spuId
);
}
}
\ No newline at end of file
computility-module-compute/computility-module-compute-biz/src/main/java/com/luhu/computility/module/compute/service/resourcespu/ResourceSpuServiceImpl.java
View file @
a62b4b53
...
@@ -2,6 +2,7 @@ package com.luhu.computility.module.compute.service.resourcespu;
...
@@ -2,6 +2,7 @@ package com.luhu.computility.module.compute.service.resourcespu;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
...
@@ -120,4 +121,31 @@ public class ResourceSpuServiceImpl implements ResourceSpuService {
...
@@ -120,4 +121,31 @@ public class ResourceSpuServiceImpl implements ResourceSpuService {
return
resourceSpuMapper
.
selectList
(
wrapper
);
return
resourceSpuMapper
.
selectList
(
wrapper
);
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateSalesAndStock
(
Long
spuId
)
{
// 校验SPU存在
ResourceSpuDO
spu
=
resourceSpuMapper
.
selectById
(
spuId
);
if
(
spu
==
null
)
{
throw
exception
(
RESOURCE_SPU_NOT_EXISTS
);
}
// 检查库存是否充足
if
(
spu
.
getStock
()
<=
0
)
{
throw
exception
(
RESOURCE_SPU_STOCK_INSUFFICIENT
);
}
// 使用LambdaUpdateWrapper实现原子性的销量+1和库存-1
LambdaUpdateWrapper
<
ResourceSpuDO
>
updateWrapper
=
new
LambdaUpdateWrapper
<>();
updateWrapper
.
eq
(
ResourceSpuDO:
:
getId
,
spuId
)
.
gt
(
ResourceSpuDO:
:
getStock
,
0
)
// 确保库存大于0
.
setSql
(
"sales = sales + 1"
)
.
setSql
(
"stock = stock - 1"
);
int
updateCount
=
resourceSpuMapper
.
update
(
null
,
updateWrapper
);
if
(
updateCount
==
0
)
{
throw
exception
(
RESOURCE_SPU_STOCK_INSUFFICIENT
);
}
}
}
}
\ No newline at end of file
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