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
9ebbf5dc
authored
Sep 18, 2025
by
Jony.L
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
发票功能2.0 添加Api订单上传 查看 发票
parent
0c57ff2f
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
96 additions
and
3 deletions
+96
-3
computility-module-apihub/computility-module-apihub-biz/pom.xml
+5
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/apiorder/ApiOrderController.java
+14
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/apiorder/vo/ApiOrderRespVO.java
+6
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/apiorder/vo/ApiOrderSaveReqVO.java
+6
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/app/apiorder/AppApiOrderController.java
+2
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/app/apiorder/vo/AppApiOrderRespVO.java
+10
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/dal/dataobject/apiorder/ApiOrderDO.java
+11
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/service/apiorder/ApiOrderService.java
+3
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/service/apiorder/ApiOrderServiceImpl.java
+20
-2
computility-module-mall/computility-module-trade-api/src/main/java/com/luhu/computility/module/trade/enums/order/TradeOrderInvoiceStatusEnum.java
+9
-0
computility-module-mall/computility-module-trade/src/main/java/com/luhu/computility/module/trade/controller/app/order/AppTradeOrderController.java
+4
-1
computility-module-mall/computility-module-trade/src/main/java/com/luhu/computility/module/trade/controller/app/order/vo/AppTradeOrderPageRespVO.java
+3
-0
computility-module-mall/computility-module-trade/src/main/java/com/luhu/computility/module/trade/service/order/TradeOrderUpdateServiceImpl.java
+3
-0
No files found.
computility-module-apihub/computility-module-apihub-biz/pom.xml
View file @
9ebbf5dc
...
...
@@ -19,6 +19,11 @@
<dependencies>
<dependency>
<groupId>
com.luhu
</groupId>
<artifactId>
computility-module-trade-api
</artifactId>
<version>
${revision}
</version>
</dependency>
<dependency>
<groupId>
com.luhu
</groupId>
<artifactId>
computility-module-apihub-api
</artifactId>
<version>
${revision}
</version>
</dependency>
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/apiorder/ApiOrderController.java
View file @
9ebbf5dc
...
...
@@ -2,6 +2,7 @@ package com.luhu.computility.module.apihub.controller.admin.apiorder;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.luhu.computility.framework.common.exception.ServiceException
;
import
com.luhu.computility.module.apihub.controller.admin.userapiusage.vo.UserApiUsageSaveReqVO
;
import
com.luhu.computility.module.apihub.enums.ApiOrderPayStatus
;
import
com.luhu.computility.module.apihub.enums.ApiOrderStatus
;
...
...
@@ -32,6 +33,7 @@ import com.luhu.computility.framework.excel.core.util.ExcelUtils;
import
com.luhu.computility.framework.apilog.core.annotation.ApiAccessLog
;
import
static
com
.
luhu
.
computility
.
framework
.
apilog
.
core
.
enums
.
OperateTypeEnum
.*;
import
static
com
.
luhu
.
computility
.
module
.
trade
.
enums
.
order
.
TradeOrderInvoiceStatusEnum
.
INVOICED
;
import
com.luhu.computility.module.apihub.controller.admin.apiorder.vo.*
;
import
com.luhu.computility.module.apihub.dal.dataobject.apiorder.ApiOrderDO
;
...
...
@@ -51,6 +53,18 @@ public class ApiOrderController {
@Resource
private
UserApiUsageService
userApiUsageService
;
@PutMapping
(
"/issue-invoice"
)
@Operation
(
summary
=
"开具发票"
)
public
CommonResult
<
Boolean
>
issueInvoice
(
@RequestBody
ApiOrderSaveReqVO
saveVO
){
if
(
ObjectUtil
.
isEmpty
(
saveVO
.
getInvoiceUrl
())){
throw
new
ServiceException
(
"没有接收到发票图片!"
);
}
if
(
saveVO
.
getInvoiceStatus
().
equals
(
INVOICED
.
getStatus
())){
throw
new
ServiceException
(
"该订单已经开具发票"
);
}
return
success
(
apiOrderService
.
updateInvoice
(
saveVO
));
}
@PostMapping
(
"/create"
)
@Operation
(
summary
=
"创建api订单"
)
@PreAuthorize
(
"@ss.hasPermission('apihub:api-order:create')"
)
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/apiorder/vo/ApiOrderRespVO.java
View file @
9ebbf5dc
...
...
@@ -56,6 +56,12 @@ public class ApiOrderRespVO {
@ExcelProperty
(
"订单实际支付金额(分)"
)
private
Integer
costPrice
;
@Schema
(
description
=
"发票链接"
,
example
=
"www.xxx.com/a1234567.jpg"
)
private
String
invoiceUrl
;
@Schema
(
description
=
"开票状态"
,
example
=
"1"
)
private
Integer
invoiceStatus
;
@Schema
(
description
=
"订单状态:0=待支付,1=已支付,2=已取消"
,
example
=
"2"
)
@ExcelProperty
(
"订单状态:0=待支付,1=已支付,2=已取消"
)
private
Integer
status
;
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/apiorder/vo/ApiOrderSaveReqVO.java
View file @
9ebbf5dc
...
...
@@ -56,6 +56,12 @@ public class ApiOrderSaveReqVO {
@Schema
(
description
=
"支付状态"
,
example
=
"2"
)
private
Integer
payStatus
;
@Schema
(
description
=
"发票链接"
,
example
=
"www.xxx.com/a1234567.jpg"
)
private
String
invoiceUrl
;
@Schema
(
description
=
"开票状态"
,
example
=
"1"
)
private
Integer
invoiceStatus
;
@Schema
(
description
=
"备注"
,
example
=
"你说的对"
)
private
String
remark
;
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/app/apiorder/AppApiOrderController.java
View file @
9ebbf5dc
...
...
@@ -12,6 +12,7 @@ import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrder
import
com.luhu.computility.module.apihub.dal.dataobject.apiorder.ApiOrderDO
;
import
com.luhu.computility.module.apihub.enums.ApiOrderStatus
;
import
com.luhu.computility.module.apihub.service.apiorder.ApiOrderService
;
import
com.luhu.computility.module.trade.enums.order.TradeOrderInvoiceStatusEnum
;
import
io.swagger.v3.oas.annotations.Operation
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
org.springframework.validation.annotation.Validated
;
...
...
@@ -61,6 +62,7 @@ public class AppApiOrderController {
if
(!
CollectionUtil
.
isEmpty
(
list
))
{
for
(
AppApiOrderRespVO
vo
:
list
)
{
vo
.
setStatusName
(
ApiOrderStatus
.
getRemarkByValue
(
vo
.
getStatus
()));
vo
.
setInvoiceStatusName
(
TradeOrderInvoiceStatusEnum
.
getDescriptionByStatus
(
vo
.
getInvoiceStatus
()));
}
}
appApiOrderRespVOPageResult
.
setList
(
list
);
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/app/apiorder/vo/AppApiOrderRespVO.java
View file @
9ebbf5dc
...
...
@@ -67,6 +67,16 @@ public class AppApiOrderRespVO {
@ExcelProperty
(
"支付成功的支付渠道"
)
private
String
payChannelCode
;
@Schema
(
description
=
"开票状态"
)
private
Integer
invoiceStatus
;
@Schema
(
description
=
"开票状态名称"
)
@ExcelProperty
(
"开票状态名称"
)
private
String
invoiceStatusName
;
@Schema
(
description
=
"发票链接"
)
private
String
invoiceUrl
;
@Schema
(
description
=
"订单完成时间"
)
@ExcelProperty
(
"订单完成时间"
)
private
LocalDateTime
finishTime
;
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/dal/dataobject/apiorder/ApiOrderDO.java
View file @
9ebbf5dc
...
...
@@ -118,5 +118,15 @@ public class ApiOrderDO extends BaseDO {
*/
private
Integer
refundPrice
;
/**
* 发票链接
*/
private
String
invoiceUrl
;
/**
* 开票状态
*/
private
Integer
invoiceStatus
;
}
\ No newline at end of file
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/service/apiorder/ApiOrderService.java
View file @
9ebbf5dc
...
...
@@ -91,4 +91,6 @@ public interface ApiOrderService {
*/
void
updateApiOrderPaid
(
Long
merchantOrderId
,
Long
payOrderId
);
boolean
updateInvoice
(
ApiOrderSaveReqVO
saveReqVO
);
}
\ No newline at end of file
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/service/apiorder/ApiOrderServiceImpl.java
View file @
9ebbf5dc
package
com
.
luhu
.
computility
.
module
.
apihub
.
service
.
apiorder
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.luhu.computility.framework.common.exception.ServiceException
;
import
com.luhu.computility.framework.common.util.json.JsonUtils
;
import
com.luhu.computility.framework.common.util.string.StrUtils
;
import
com.luhu.computility.module.apihub.config.ApiOrderProperties
;
...
...
@@ -18,6 +19,7 @@ import com.luhu.computility.module.pay.api.order.PayOrderApi;
import
com.luhu.computility.module.pay.api.order.dto.PayOrderCreateReqDTO
;
import
com.luhu.computility.module.pay.api.order.dto.PayOrderRespDTO
;
import
com.luhu.computility.module.pay.enums.order.PayOrderStatusEnum
;
import
com.luhu.computility.module.trade.enums.order.TradeOrderStatusEnum
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
...
...
@@ -40,7 +42,10 @@ import static com.luhu.computility.framework.common.util.collection.CollectionUt
import
static
com
.
luhu
.
computility
.
framework
.
common
.
util
.
collection
.
CollectionUtils
.
getSumValue
;
import
static
com
.
luhu
.
computility
.
framework
.
common
.
util
.
date
.
LocalDateTimeUtils
.
addTime
;
import
static
com
.
luhu
.
computility
.
framework
.
common
.
util
.
servlet
.
ServletUtils
.
getClientIP
;
import
static
com
.
luhu
.
computility
.
module
.
apihub
.
enums
.
ApiOrderStatus
.
PAID
;
import
static
com
.
luhu
.
computility
.
module
.
apihub
.
enums
.
ErrorCodeConstants
.*;
import
static
com
.
luhu
.
computility
.
module
.
trade
.
enums
.
order
.
TradeOrderInvoiceStatusEnum
.
INVOICED
;
import
static
org
.
apache
.
commons
.
lang3
.
ObjectUtils
.
notEqual
;
/**
* api订单 Service 实现类
...
...
@@ -207,7 +212,7 @@ public class ApiOrderServiceImpl implements ApiOrderService {
// 1.1 校验API订单是否存在
ApiOrderDO
order
=
validateApiOrderExists
(
id
);
// 1.2 校验API订单已支付
if
(
ApiOrderStatus
.
PAID
.
getValue
()
==
order
.
getStatus
())
{
if
(
PAID
.
getValue
()
==
order
.
getStatus
())
{
// 特殊:支付单号相同,直接返回,说明重复回调
if
(
ObjectUtil
.
equals
(
order
.
getPayOrderId
(),
payOrderId
))
{
log
.
warn
(
"[updateApiOrderPaid][order({}) 已支付,且支付单号相同({}),直接返回]"
,
order
,
payOrderId
);
...
...
@@ -222,7 +227,7 @@ public class ApiOrderServiceImpl implements ApiOrderService {
// 3. 更新 apiOrderDO 状态为已支付
apiOrderMapper
.
updateByIdAndStatus
(
id
,
order
.
getStatus
(),
new
ApiOrderDO
().
setStatus
(
ApiOrderStatus
.
PAID
.
getValue
())
new
ApiOrderDO
().
setStatus
(
PAID
.
getValue
())
.
setPayStatus
(
ApiOrderPayStatus
.
SUCCESS
.
getValue
())
.
setPayTime
(
LocalDateTime
.
now
()).
setPayChannelCode
(
payOrder
.
getChannelCode
()));
...
...
@@ -231,6 +236,19 @@ public class ApiOrderServiceImpl implements ApiOrderService {
//TradeOrderLogUtils.setUserInfo(order.getUserId(), UserTypeEnum.MEMBER.getValue());
}
@Override
public
boolean
updateInvoice
(
ApiOrderSaveReqVO
saveVO
)
{
ApiOrderDO
order
=
apiOrderMapper
.
selectById
(
saveVO
.
getId
());
if
(
notEqual
(
order
.
getStatus
(),
PAID
.
getValue
())){
throw
new
ServiceException
(
"只有"
+
PAID
.
getRemark
()+
"订单可以开票!"
);
}
order
.
setInvoiceStatus
(
INVOICED
.
getStatus
());
order
.
setInvoiceUrl
(
saveVO
.
getInvoiceUrl
());
apiOrderMapper
.
updateById
(
order
);
return
true
;
}
/**
* 校验支付订单的合法性
*
...
...
computility-module-mall/computility-module-trade-api/src/main/java/com/luhu/computility/module/trade/enums/order/TradeOrderInvoiceStatusEnum.java
View file @
9ebbf5dc
...
...
@@ -27,6 +27,15 @@ public enum TradeOrderInvoiceStatusEnum implements ArrayValuable<Integer> {
this
.
description
=
description
;
}
public
static
String
getDescriptionByStatus
(
Integer
Val
){
for
(
TradeOrderInvoiceStatusEnum
status
:
values
()){
if
(
status
.
getStatus
().
equals
(
Val
)){
return
status
.
getDescription
();
}
}
return
null
;
}
private
final
Integer
status
;
private
final
String
description
;
...
...
computility-module-mall/computility-module-trade/src/main/java/com/luhu/computility/module/trade/controller/app/order/AppTradeOrderController.java
View file @
9ebbf5dc
...
...
@@ -15,6 +15,7 @@ import com.luhu.computility.module.trade.convert.order.TradeOrderConvert;
import
com.luhu.computility.module.trade.dal.dataobject.delivery.DeliveryExpressDO
;
import
com.luhu.computility.module.trade.dal.dataobject.order.TradeOrderDO
;
import
com.luhu.computility.module.trade.dal.dataobject.order.TradeOrderItemDO
;
import
com.luhu.computility.module.trade.enums.order.TradeOrderInvoiceStatusEnum
;
import
com.luhu.computility.module.trade.enums.order.TradeOrderStatusEnum
;
import
com.luhu.computility.module.trade.enums.order.TradeOrderTypeEnum
;
import
com.luhu.computility.module.trade.framework.order.config.TradeOrderProperties
;
...
...
@@ -198,7 +199,9 @@ public class AppTradeOrderController {
appTradeOrder
.
setStatusName
(
TradeOrderStatusEnum
.
getNameByStatus
(
item
.
getStatus
()));
appTradeOrder
.
setProperties
(
item
.
getItems
().
get
(
0
).
getProperties
());
appTradeOrder
.
setInvoiceUrl
(
invoiceCollet
.
get
(
item
.
getId
()).
getInvoiceUrl
());
appTradeOrder
.
setInvoiceStatus
(
invoiceCollet
.
get
(
item
.
getId
()).
getInvoiceStatus
());
Integer
invoiceStatus
=
invoiceCollet
.
get
(
item
.
getId
()).
getInvoiceStatus
();
appTradeOrder
.
setInvoiceStatus
(
invoiceStatus
);
appTradeOrder
.
setInvoiceStatusName
(
TradeOrderInvoiceStatusEnum
.
getDescriptionByStatus
(
invoiceStatus
));
appTradeOrders
.
add
(
appTradeOrder
);
}
}
...
...
computility-module-mall/computility-module-trade/src/main/java/com/luhu/computility/module/trade/controller/app/order/vo/AppTradeOrderPageRespVO.java
View file @
9ebbf5dc
...
...
@@ -42,6 +42,9 @@ public class AppTradeOrderPageRespVO {
@Schema
(
description
=
"开票状态"
,
example
=
"0"
)
private
Integer
invoiceStatus
;
@Schema
(
description
=
"开票状态名称"
,
example
=
"已开票"
)
private
String
invoiceStatusName
;
private
List
<
AppProductPropertyValueDetailRespVO
>
properties
;
@Schema
(
description
=
"应付金额,单位:分"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"1000"
)
...
...
computility-module-mall/computility-module-trade/src/main/java/com/luhu/computility/module/trade/service/order/TradeOrderUpdateServiceImpl.java
View file @
9ebbf5dc
...
...
@@ -790,6 +790,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
@Override
public
boolean
updateInvoice
(
TradeOrderInvoiceSaveVO
saveVO
)
{
TradeOrderDO
order
=
tradeOrderMapper
.
selectById
(
saveVO
.
getId
());
if
(
ObjectUtil
.
notEqual
(
order
.
getStatus
(),
TradeOrderStatusEnum
.
COMPLETED
)){
throw
new
ServiceException
(
"只有完成的订单可以开票!"
);
}
order
.
setInvoiceStatus
(
INVOICED
.
getStatus
());
order
.
setInvoiceUrl
(
saveVO
.
getInvoiceUrl
());
tradeOrderMapper
.
updateById
(
order
);
...
...
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