Toggle navigation
Toggle navigation
This project
Loading...
Sign in
jiujian
/
client-customer-order-service
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
zhuyifan
2025-02-28 16:44:20 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
b1cbdf8252b9af230f47ffb3d6dab054287047a9
b1cbdf82
1 parent
877407e8
feat(ClientCustomerOrderService): 添加增加 SKU 销售数量的功能
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
63 additions
and
0 deletions
src/main/java/com/tianting/infoloop/service/grpc/OrderGrpcService.java
src/main/proto/ClientCustomerOrderService.proto
src/main/java/com/tianting/infoloop/service/grpc/OrderGrpcService.java
View file @
b1cbdf8
...
...
@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.infoloop.tianting.clientcustomerorderservice.AddSkusSellQuantitiesRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.AddSkusSellQuantitiesRpcResponse
;
import
com.infoloop.tianting.clientcustomerorderservice.BatchCreateClientCustomerOrderDetailsRpcRequest
;
import
com.infoloop.tianting.clientcustomerorderservice.BatchCreateClientCustomerOrderDetailsRpcResponse
;
import
com.infoloop.tianting.clientcustomerorderservice.BatchCreateClientCustomerOrdersRpcRequest
;
...
...
@@ -79,6 +81,7 @@ import org.springframework.stereotype.Service;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
static
com
.
tianting
.
infoloop
.
constants
.
ConfigConstants
.
DATA_SOURCE_MASTER
;
...
...
@@ -723,4 +726,48 @@ public class OrderGrpcService extends ClientCustomerOrderServiceRpcGrpc.ClientCu
responseStreamObserver
.
onCompleted
();
}
@Override
@DS
(
DATA_SOURCE_MASTER
)
public
void
addSkusSellQuantities
(
final
AddSkusSellQuantitiesRpcRequest
request
,
final
StreamObserver
<
AddSkusSellQuantitiesRpcResponse
>
responseStreamObserver
)
{
final
var
builder
=
AddSkusSellQuantitiesRpcResponse
.
newBuilder
();
try
{
LambdaQueryWrapper
<
SkuSellQuantity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
SkuSellQuantity:
:
getEnterpriseId
,
request
.
getEnterpriseId
());
queryWrapper
.
eq
(
SkuSellQuantity:
:
getStallId
,
request
.
getStallId
());
queryWrapper
.
in
(
SkuSellQuantity:
:
getSkuId
,
request
.
getSkuSellQuantitiesList
().
stream
()
.
map
(
com
.
infoloop
.
tianting
.
clientcustomerorderservice
.
SkuSellQuantity
::
getSkuId
)
.
collect
(
Collectors
.
toList
()));
final
var
list
=
skuSellQuantityService
.
list
(
queryWrapper
.
last
(
"FOR UPDATE"
));
final
var
skuSellQuantityMap
=
list
.
stream
().
collect
(
Collectors
.
toMap
(
SkuSellQuantity:
:
getSkuId
,
Function
.
identity
()));
final
var
updates
=
new
ArrayList
<
SkuSellQuantity
>();
for
(
var
sellQuantity
:
request
.
getSkuSellQuantitiesList
())
{
final
var
skuSellQuantity
=
skuSellQuantityMap
.
get
(
sellQuantity
.
getSkuId
());
if
(
skuSellQuantity
==
null
)
{
throw
new
IllegalArgumentException
(
"addSkusSellQuantities skuId not exists; "
+
sellQuantity
.
getSkuId
());
}
final
int
todaySellQuantity
=
skuSellQuantity
.
getTodaySellQuantity
()
+
sellQuantity
.
getQuantity
();
if
(
todaySellQuantity
>
skuSellQuantity
.
getMaxSellQuantity
())
{
log
.
error
(
"addSkusSellQuantities quantity exceeds maxSellQuantity; skuId={}, quantity={}, maxSellQuantity={}"
,
sellQuantity
.
getSkuId
(),
sellQuantity
.
getQuantity
(),
skuSellQuantity
.
getMaxSellQuantity
());
builder
.
setIsAdded
(
false
);
responseStreamObserver
.
onNext
(
builder
.
build
());
responseStreamObserver
.
onCompleted
();
return
;
}
updates
.
add
(
new
SkuSellQuantity
()
.
setId
(
skuSellQuantity
.
getId
())
.
setTodaySellQuantity
(
todaySellQuantity
));
}
if
(!
updates
.
isEmpty
())
{
builder
.
setIsAdded
(
skuSellQuantityService
.
updateBatchById
(
updates
));
}
}
catch
(
final
Exception
e
)
{
log
.
error
(
"addSkusSellQuantities error;"
,
e
);
responseStreamObserver
.
onError
(
Status
.
INTERNAL
.
withDescription
(
e
.
getMessage
()).
asException
());
return
;
}
responseStreamObserver
.
onNext
(
builder
.
build
());
responseStreamObserver
.
onCompleted
();
}
}
...
...
src/main/proto/ClientCustomerOrderService.proto
View file @
b1cbdf8
...
...
@@ -39,6 +39,7 @@ service ClientCustomerOrderServiceRpc {
rpc
QuerySkuSellQuantitiesByStall
(
QuerySkuSellQuantitiesByStallRpcRequest
)
returns
(
QuerySkuSellQuantitiesByStallRpcResponse
)
{}
rpc
QuerySkuSellQuantitiesByStallAndSkuIds
(
QuerySkuSellQuantitiesByStallAndSkuIdsRpcRequest
)
returns
(
QuerySkuSellQuantitiesByStallAndSkuIdsRpcResponse
)
{}
rpc
BatchSaveSkuSellQuantities
(
BatchSaveSkuSellQuantitiesRpcRequest
)
returns
(
BatchSaveSkuSellQuantitiesRpcResponse
)
{}
rpc
AddSkusSellQuantities
(
AddSkusSellQuantitiesRpcRequest
)
returns
(
AddSkusSellQuantitiesRpcResponse
)
{}
}
...
...
@@ -668,3 +669,18 @@ message SkuSellQuantityModification {
message
BatchSaveSkuSellQuantitiesRpcResponse
{
bool
isSaved
=
1
;
}
message
AddSkusSellQuantitiesRpcRequest
{
int32
enterpriseId
=
1
;
int32
stallId
=
2
;
repeated
SkuSellQuantity
skuSellQuantities
=
3
;
}
message
SkuSellQuantity
{
int32
skuId
=
1
;
int32
quantity
=
2
;
}
message
AddSkusSellQuantitiesRpcResponse
{
bool
isAdded
=
1
;
}
...
...
Please
register
or
login
to post a comment