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
8e58abbb
Commit
8e58abbb
authored
Feb 02, 2024
by
shiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
扣减库存
parent
7b0a912f
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
195 additions
and
44 deletions
+195
-44
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/SupplierItemDao.java
...java/com/wwdz/ch/db/dao/distribution/SupplierItemDao.java
+11
-0
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/SupplierItemDaoImpl.java
...com/wwdz/ch/db/impl/distribution/SupplierItemDaoImpl.java
+23
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/api/WxPayCallbackController.java
...main/java/com/wwdz/ch/wx/api/WxPayCallbackController.java
+78
-11
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/vo/distribution/SelfPageInfoVo.java
...com/wwdz/ch/wx/entity/vo/distribution/SelfPageInfoVo.java
+5
-3
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/UserServiceImpl.java
...pi/src/main/java/com/wwdz/ch/wx/impl/UserServiceImpl.java
+2
-2
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/DistributionOrderServiceImpl.java
...ch/wx/impl/distribution/DistributionOrderServiceImpl.java
+7
-28
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/SelfPageServiceImpl.java
...com/wwdz/ch/wx/impl/distribution/SelfPageServiceImpl.java
+14
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/SupplierItemServiceImpl.java
...wwdz/ch/wx/impl/distribution/SupplierItemServiceImpl.java
+32
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/SelfPageService.java
.../com/wwdz/ch/wx/service/distribution/SelfPageService.java
+2
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/SupplierItemService.java
.../wwdz/ch/wx/service/distribution/SupplierItemService.java
+7
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/web/distribution/DistributionOrderController.java
...z/ch/wx/web/distribution/DistributionOrderController.java
+14
-0
No files found.
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/SupplierItemDao.java
View file @
8e58abbb
...
...
@@ -24,4 +24,15 @@ public interface SupplierItemDao {
* @return
*/
SupplierItem
findById
(
long
itemId
);
int
update
(
SupplierItem
supplierItem
);
/**
* 更新库存
* @param itemId
* @param stock
* @return
*/
int
updateStock
(
long
itemId
,
int
stock
);
}
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/SupplierItemDaoImpl.java
View file @
8e58abbb
...
...
@@ -10,7 +10,10 @@ import com.xxdxxs.db.component.JdbcHelper;
import
com.xxdxxs.utils.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.concurrent.TimeUnit
;
@Repository
public
class
SupplierItemDaoImpl
implements
SupplierItemDao
{
...
...
@@ -39,4 +42,24 @@ public class SupplierItemDaoImpl implements SupplierItemDao {
criteria
.
andIdEqualTo
(
itemId
);
return
supplierItemMapper
.
selectOneByExampleWithBLOBs
(
supplierItemExample
);
}
@Override
public
int
update
(
SupplierItem
supplierItem
)
{
supplierItem
.
setUpdateTime
(
new
Date
());
SupplierItemExample
supplierItemExample
=
new
SupplierItemExample
();
SupplierItemExample
.
Criteria
criteria
=
supplierItemExample
.
createCriteria
();
criteria
.
andIdEqualTo
(
supplierItem
.
getId
());
return
supplierItemMapper
.
updateByExampleSelective
(
supplierItem
,
supplierItemExample
);
}
@Override
public
int
updateStock
(
long
itemId
,
int
stock
)
{
SupplierItem
supplierItem
=
new
SupplierItem
();
supplierItem
.
setUpdateTime
(
new
Date
());
supplierItem
.
setStock
(
stock
);
SupplierItemExample
supplierItemExample
=
new
SupplierItemExample
();
SupplierItemExample
.
Criteria
criteria
=
supplierItemExample
.
createCriteria
();
criteria
.
andIdEqualTo
(
supplierItem
.
getId
());
return
supplierItemMapper
.
updateByExampleSelective
(
supplierItem
,
supplierItemExample
);
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/api/WxPayCallbackController.java
View file @
8e58abbb
...
...
@@ -10,12 +10,19 @@ import com.wwdz.ch.core.type.Result;
import
com.wwdz.ch.core.util.RedisUtils
;
import
com.wwdz.ch.core.util.TimeUtil
;
import
com.wwdz.ch.db.dao.distribution.DistributionOrderDao
;
import
com.wwdz.ch.db.dao.distribution.DistributorProfitDao
;
import
com.wwdz.ch.db.dao.distribution.SupplierItemDao
;
import
com.wwdz.ch.db.domain.distribution.DistributionOrder
;
import
com.wwdz.ch.db.domain.distribution.DistributorProfit
;
import
com.wwdz.ch.db.domain.distribution.SupplierItem
;
import
com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto
;
import
com.wwdz.ch.wx.service.distribution.SupplierItemService
;
import
com.xxdxxs.utils.JsonUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -24,6 +31,7 @@ import javax.servlet.http.HttpServletRequest;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -48,6 +56,15 @@ public class WxPayCallbackController {
@Autowired
WxPayServiceApi
wxPayServiceApi
;
@Autowired
DistributorProfitDao
distributorProfitDao
;
@Autowired
SupplierItemDao
supplierItemDao
;
@Autowired
SupplierItemService
supplierItemService
;
@RequestMapping
(
value
=
"/getPayNotify"
)
public
synchronized
String
payNotify
(
HttpServletRequest
request
)
throws
IOException
{
logger
.
info
(
"------------------ 收到微信支付回调通知 ------------------"
);
...
...
@@ -107,17 +124,10 @@ public class WxPayCallbackController {
//查询系统中订单现在的状态,避免重复更新
DistributionOrder
distributionOrder
=
distributionOrderDao
.
findById
(
distributionOrderId
);
if
(
distributionOrder
.
getState
()
==
DistributionEnum
.
DistributionOrderStateEnum
.
PRE_PAY
.
getCode
())
{
//微信支付交易id
String
transactionId
=
transaction
.
getTransactionId
();
//支付成功时间
String
payTime
=
transaction
.
getSuccessTime
();
//支付成功,更新订单状态为待发货
DistributionOrder
distributionOrderDto
=
new
DistributionOrder
();
distributionOrderDto
.
setDistributionOrderId
(
distributionOrderId
);
distributionOrderDto
.
setTransactionId
(
transactionId
);
distributionOrderDto
.
setPayTime
(
TimeUtil
.
wxTimeConvertToDate
(
payTime
));
distributionOrderDto
.
setState
(
DistributionEnum
.
DistributionOrderStateEnum
.
PRE_SEND
.
getCode
());
distributionOrderDao
.
update
(
distributionOrder
);
Result
updateResult
=
updateOrderStateAndInsertProfit
(
transaction
);
if
(!
updateResult
.
getSuccess
())
{
return
JsonUtils
.
from
(
returnMap
);
}
}
}
returnMap
.
put
(
"code"
,
"SUCCESS"
);
...
...
@@ -131,6 +141,63 @@ public class WxPayCallbackController {
return
JsonUtils
.
from
(
returnMap
);
}
/**
* 更新订单状态,计算分销商利润
* @return
*/
@Transactional
public
Result
updateOrderStateAndInsertProfit
(
Transaction
transaction
)
{
try
{
//商户订单号,分销订单号
String
distributionOrderId
=
transaction
.
getOutTradeNo
();
//微信支付交易id
String
transactionId
=
transaction
.
getTransactionId
();
//支付成功时间
String
payTime
=
transaction
.
getSuccessTime
();
//支付成功,更新订单状态为待发货
DistributionOrder
distributionOrderDto
=
new
DistributionOrder
();
distributionOrderDto
.
setDistributionOrderId
(
distributionOrderId
);
distributionOrderDto
.
setTransactionId
(
transactionId
);
distributionOrderDto
.
setPayTime
(
TimeUtil
.
wxTimeConvertToDate
(
payTime
));
distributionOrderDto
.
setState
(
DistributionEnum
.
DistributionOrderStateEnum
.
PRE_SEND
.
getCode
());
distributionOrderDao
.
update
(
distributionOrderDto
);
//计算分销商的利润
//用户确认签收,新增分销商利润
DistributorProfit
distributorProfit
=
new
DistributorProfit
();
DistributionOrder
distributionOrder
=
distributionOrderDao
.
findById
(
distributionOrderId
);
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
distributionOrder
.
getItemId
());
//供货成本价
Long
distributionTotalPrice
=
supplierItem
.
getDistributionPrice
()
*
distributionOrder
.
getItemNum
();
//通道费
double
channelCost
=
distributionOrder
.
getAmount
().
doubleValue
()
*
0.006
;
if
(
channelCost
<
1
)
{
channelCost
=
0
;
}
//利润
Double
profit
=
distributionOrder
.
getAmount
().
doubleValue
()
-
distributionTotalPrice
.
doubleValue
()
-
channelCost
;
distributorProfit
.
setDistributionOrderId
(
distributionOrderId
);
distributorProfit
.
setDistributorId
(
distributionOrder
.
getSellerId
());
distributorProfit
.
setItemId
(
distributionOrder
.
getItemId
());
distributorProfit
.
setItemNum
(
distributionOrder
.
getItemNum
());
distributorProfit
.
setAmount
(
distributionOrder
.
getAmount
());
distributorProfit
.
setItemCost
(
distributionTotalPrice
);
distributorProfit
.
setChannelCost
((
long
)
Math
.
ceil
(
channelCost
));
distributorProfit
.
setProfit
((
long
)
Math
.
floor
(
profit
));
distributorProfit
.
setCreateTime
(
new
Date
());
distributorProfit
.
setIsValid
(
true
);
distributorProfitDao
.
insert
(
distributorProfit
);
//更新库存
supplierItemService
.
reduceStock
(
distributionOrder
.
getItemId
(),
distributionOrder
.
getItemNum
());
return
Result
.
success
();
}
catch
(
Exception
e
)
{
logger
.
info
(
"微信支付回调更新订单状态,计算盈利失败 error :{}"
,
e
);
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
}
return
Result
.
failed
();
}
/**
* 获取请求体
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/vo/distribution/SelfPageInfoVo.java
View file @
8e58abbb
package
com.wwdz.ch.wx.entity.vo.distribution
;
import
com.wwdz.ch.core.consts.DistributionEnum
;
import
com.wwdz.ch.db.bean.DistributionOrderNum
;
import
com.xxdxxs.entity.Entity
;
import
lombok.Data
;
import
java.util.List
;
import
java.util.Map
;
/**
* 个人主页信息
...
...
@@ -33,6 +30,11 @@ public class SelfPageInfoVo implements Entity {
private
String
userName
;
/**
* 头像
*/
private
String
avatarUrl
;
/**
* 各状态订单数量
*/
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/UserServiceImpl.java
View file @
8e58abbb
...
...
@@ -188,9 +188,9 @@ public class UserServiceImpl implements UserService {
userDao
.
insertByMapper
(
user
);
result
.
put
(
"phone"
,
phone
);
//判断登录用户是否是分销商
if
(
dto
.
getUserId
()
==
42192256L
||
dto
.
getUserId
()
==
60684039L
||
dto
.
getUserId
()
==
61074146L
)
{
if
(
dto
.
getUserId
()
==
42192256L
||
dto
.
getUserId
()
==
60684039L
||
dto
.
getUserId
()
==
61074146L
||
dto
.
getUserId
()
==
3387401L
)
{
result
.
put
(
"isShop"
,
true
);
result
.
put
(
"shopId"
,
3387401
L
);
result
.
put
(
"shopId"
,
61319910
L
);
}
else
{
try
{
CloudServerResponse
<
ShopDTO
>
cloudServerResponse
=
shopReadService
.
getShopByUserId
(
dto
.
getUserId
(),
new
ShopQueryOption
());
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/DistributionOrderServiceImpl.java
View file @
8e58abbb
...
...
@@ -68,13 +68,18 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
String
shareRecordId
=
dto
.
getShareRecordId
();
//查询分享记录详细信息
DistributorShareRecord
distributorShareRecord
=
distributorShareRecordDao
.
findById
(
shareRecordId
);
//查询商品信息,检查商品库存
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
distributorShareRecord
.
getItemId
());
int
stock
=
supplierItem
.
getStock
();
if
(
stock
<=
0
)
{
return
Result
.
failed
(
"商品库存不足"
);
}
String
distributionOrderId
=
IdUtils
.
getOrderNumber
(
DISTRIBUTION_ORDER_PREFIX
);
DistributionOrderRequestDto
prePayDto
=
new
DistributionOrderRequestDto
();
prePayDto
.
setDistributionOrderId
(
distributionOrderId
);
prePayDto
.
setAmount
(
String
.
valueOf
(
distributorShareRecord
.
getPrice
()
*
dto
.
getItemNum
()));
prePayDto
.
setBuyerOpenid
(
dto
.
getBuyerOpenid
());
//查询商品信息
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
distributorShareRecord
.
getItemId
());
prePayDto
.
setItemName
(
supplierItem
.
getName
());
Result
prePayResult
=
wxPayServiceApi
.
createPrepareOrder
(
prePayDto
);
if
(!
prePayResult
.
getSuccess
())
{
...
...
@@ -145,38 +150,12 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
}
@Override
@Transactional
public
Result
confirmSigned
(
DistributionOrderRequestDto
dto
)
{
try
{
distributionOrderDao
.
updateState
(
dto
.
getDistributionOrderId
(),
DistributionEnum
.
DistributionOrderStateEnum
.
FINISH
.
getCode
());
//用户确认签收,新增分销商利润
DistributorProfit
distributorProfit
=
new
DistributorProfit
();
DistributionOrder
distributionOrder
=
distributionOrderDao
.
findById
(
dto
.
getDistributionOrderId
());
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
distributionOrder
.
getItemId
());
//供货成本价
Long
distributionTotalPrice
=
supplierItem
.
getDistributionPrice
()
*
distributionOrder
.
getItemNum
();
//通道费
double
channelCost
=
distributionOrder
.
getAmount
().
doubleValue
()
*
0.006
;
if
(
channelCost
<
1
)
{
channelCost
=
0
;
}
//利润
Double
profit
=
distributionOrder
.
getAmount
().
doubleValue
()
-
distributionTotalPrice
.
doubleValue
()
-
channelCost
;
distributorProfit
.
setDistributionOrderId
(
dto
.
getDistributionOrderId
());
distributorProfit
.
setDistributorId
(
distributionOrder
.
getSellerId
());
distributorProfit
.
setItemId
(
distributionOrder
.
getItemId
());
distributorProfit
.
setItemNum
(
distributionOrder
.
getItemNum
());
distributorProfit
.
setAmount
(
distributionOrder
.
getAmount
());
distributorProfit
.
setItemCost
(
distributionTotalPrice
);
distributorProfit
.
setChannelCost
((
long
)
Math
.
ceil
(
channelCost
));
distributorProfit
.
setProfit
((
long
)
Math
.
floor
(
profit
));
distributorProfit
.
setCreateTime
(
new
Date
());
distributorProfit
.
setIsValid
(
true
);
distributorProfitDao
.
insert
(
distributorProfit
);
return
Result
.
success
();
}
catch
(
Exception
e
)
{
logger
.
info
(
"用户确认收货失败 error: {}"
,
e
);
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
}
return
Result
.
failed
();
}
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/SelfPageServiceImpl.java
View file @
8e58abbb
...
...
@@ -4,20 +4,28 @@ import com.wwdz.ch.core.consts.DistributionEnum;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.CacheUtil
;
import
com.wwdz.ch.core.util.PriceUtil
;
import
com.wwdz.ch.core.util.RedisUtils
;
import
com.wwdz.ch.db.bean.DistributionOrderNum
;
import
com.wwdz.ch.db.dao.distribution.DistributionOrderDao
;
import
com.wwdz.ch.db.dao.distribution.DistributorProfitDao
;
import
com.wwdz.ch.db.dao.distribution.SupplierItemDao
;
import
com.wwdz.ch.wx.entity.request.SelfPageRequestDto
;
import
com.wwdz.ch.wx.entity.vo.distribution.SelfPageInfoVo
;
import
com.wwdz.ch.wx.service.distribution.SelfPageService
;
import
com.wwdz.ch.wx.util.RedisUtil
;
import
com.wwdz.user.api.service.user.UserReadService
;
import
org.apache.dubbo.config.annotation.Reference
;
import
org.redisson.Redisson
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.util.List
;
import
java.util.concurrent.TimeUnit
;
@Service
...
...
@@ -35,6 +43,7 @@ public class SelfPageServiceImpl implements SelfPageService {
CacheUtil
cacheUtil
;
@Override
public
Result
getDistributorPageInfo
(
SelfPageRequestDto
dto
)
{
try
{
...
...
@@ -44,6 +53,7 @@ public class SelfPageServiceImpl implements SelfPageService {
SelfPageInfoVo
selfPageInfoVo
=
new
SelfPageInfoVo
();
selfPageInfoVo
.
setUserId
(
dto
.
getUserId
());
selfPageInfoVo
.
setUserName
(
cacheUtil
.
getAppletUserNameById
(
dto
.
getUserId
()));
selfPageInfoVo
.
setAvatarUrl
(
cacheUtil
.
getAppletUsers
(
dto
.
getUserId
()).
getAvatar
());
selfPageInfoVo
.
setTotalSellItemNum
((
int
)
sellItemNum
);
selfPageInfoVo
.
setTotalSellAmount
(
PriceUtil
.
convertPriceFenToYuan
(
sellAmount
));
selfPageInfoVo
.
setTotalProfit
(
PriceUtil
.
convertPriceFenToYuan
(
totalProfit
));
...
...
@@ -65,6 +75,7 @@ public class SelfPageServiceImpl implements SelfPageService {
SelfPageInfoVo
selfPageInfoVo
=
new
SelfPageInfoVo
();
selfPageInfoVo
.
setUserId
(
dto
.
getUserId
());
selfPageInfoVo
.
setUserName
(
cacheUtil
.
getAppletUserNameById
(
dto
.
getUserId
()));
selfPageInfoVo
.
setAvatarUrl
(
cacheUtil
.
getAppletUsers
(
dto
.
getUserId
()).
getAvatar
());
List
<
DistributionOrderNum
>
distributionOrderNumList
=
distributionOrderDao
.
countGroupByStateForUser
(
dto
.
getUserId
());
distributionOrderNumList
.
forEach
(
distributionOrderNum
->
{
distributionOrderNum
.
setStateName
(
DistributionEnum
.
DistributionOrderStateEnum
.
getNameByCode
(
distributionOrderNum
.
getState
()));
...
...
@@ -76,4 +87,7 @@ public class SelfPageServiceImpl implements SelfPageService {
}
return
Result
.
failed
();
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/SupplierItemServiceImpl.java
View file @
8e58abbb
...
...
@@ -12,6 +12,8 @@ import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import
com.wwdz.ch.wx.entity.vo.distribution.SupplierItemVo
;
import
com.wwdz.ch.wx.service.distribution.SupplierItemService
;
import
com.xxdxxs.utils.EntityMapper
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -21,6 +23,7 @@ import java.util.ArrayList;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
@Service
public
class
SupplierItemServiceImpl
implements
SupplierItemService
{
...
...
@@ -33,6 +36,8 @@ public class SupplierItemServiceImpl implements SupplierItemService {
@Autowired
DistributorShareRecordDao
distributorShareRecordDao
;
@Autowired
RedissonClient
redissonClient
;
@Override
public
Result
findList
(
SupplierItemRequestDto
dto
)
{
...
...
@@ -71,4 +76,31 @@ public class SupplierItemServiceImpl implements SupplierItemService {
}
@Override
public
Result
reduceStock
(
long
itemId
,
int
stock
)
{
String
itemIdKey
=
String
.
valueOf
(
itemId
);
RLock
lock
=
redissonClient
.
getLock
(
itemIdKey
);
try
{
if
(
lock
.
tryLock
(
5
,
5
,
TimeUnit
.
SECONDS
))
{
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
itemId
);
//当前库存
int
currentStock
=
supplierItem
.
getStock
();
/*if (currentStock < stock) {
return Result.failed("库存不足");
}*/
int
updateStock
=
currentStock
-
stock
;
supplierItemDao
.
updateStock
(
itemId
,
updateStock
);
return
Result
.
success
();
}
else
{
return
Result
.
failed
(
"扣减库存失败"
);
}
}
catch
(
Exception
e
)
{
logger
.
error
(
"扣减库存失败 error : {}"
,
e
);
}
finally
{
if
(
lock
!=
null
&&
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
}
}
return
Result
.
failed
(
"扣减库存失败"
);
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/SelfPageService.java
View file @
8e58abbb
...
...
@@ -20,4 +20,6 @@ public interface SelfPageService {
* @return
*/
Result
getUserPageInfo
(
SelfPageRequestDto
dto
);
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/SupplierItemService.java
View file @
8e58abbb
...
...
@@ -21,5 +21,12 @@ public interface SupplierItemService {
Result
findDetail
(
SupplierItemRequestDto
dto
);
/**
* 扣减商品库存
* @param itemId
* @param stock
* @return
*/
Result
reduceStock
(
long
itemId
,
int
stock
);
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/web/distribution/DistributionOrderController.java
View file @
8e58abbb
...
...
@@ -89,6 +89,20 @@ public class DistributionOrderController {
}
@ApiOperation
(
value
=
"用户确认收货"
)
@PostMapping
(
"/confirmSigned"
)
public
Result
confirmSigned
(
@RequestBody
DistributionOrderRequestDto
dto
)
{
logger
.
info
(
"用户确认收货,请求参数:{}"
,
JSON
.
toJSONString
(
dto
));
Validator
validator
=
new
Validator
(
FormHandler
.
ofEntity
(
dto
));
validator
.
set
(
"distributionOrderId"
,
"分销订单号"
).
must
().
string
()
.
end
();
if
(!
validator
.
isValid
())
{
return
Result
.
failed
(
validator
.
getErrorInfo
());
}
return
distributionOrderService
.
confirmSigned
(
dto
);
}
@ApiOperation
(
value
=
"查询分销商订单列表"
)
@PostMapping
(
"/findOrderOfDistributor"
)
...
...
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