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
fd2d3871
authored
Sep 15, 2025
by
lijinqi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.冲突解决
2.循环依赖问题解决 3.api扣除次数bug修复
parent
5c84d461
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
182 additions
and
55 deletions
+182
-55
computility-framework/computility-spring-boot-starter-protection/pom.xml
+5
-0
computility-framework/computility-spring-boot-starter-protection/src/main/java/com/luhu/computility/framework/signature/core/aop/ApiSignatureAspect.java
+0
-0
computility-framework/computility-spring-boot-starter-protection/src/main/java/com/luhu/computility/framework/signature/core/redis/ApiSignatureRedisDAO.java
+54
-0
computility-module-apihub/computility-module-apihub-api/src/main/java/com/luhu/computility/module/apihub/api/apiorder/ApiOrderApi.java
+2
-1
computility-module-apihub/computility-module-apihub-api/src/main/java/com/luhu/computility/module/apihub/api/appcredential/AppCredentialApi.java
+10
-0
computility-module-apihub/computility-module-apihub-api/src/main/java/com/luhu/computility/module/apihub/api/appcredential/dto/AppCredentialSaveReqDTO.java
+29
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/api/ApiOrderApiServiceImpl.java
+4
-2
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/api/AppCredentialApiServiceImpl.java
+15
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/api/UserApiUsageApiServiceImpl.java
+2
-1
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/apiorder/ApiOrderController.java
+1
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/appcredential/AppCredentialController.java
+4
-4
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/appcredential/vo/AppCredentialPageReqVO.java
+3
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/appcredential/vo/AppCredentialRespVO.java
+4
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/userapiusage/vo/UserApiUsageSaveReqVO.java
+0
-1
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/app/apiorder/AppApiOrderController.java
+1
-0
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/dal/mysql/apiorder/ApiOrderMapper.java
+5
-15
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/dal/mysql/appcredential/AppCredentialMapper.java
+9
-9
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/service/appcredential/AppCredentialService.java
+1
-1
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/service/appcredential/AppCredentialServiceImpl.java
+1
-1
computility-module-biz/computility-module-biz-biz/src/main/java/com/luhu/computility/module/biz/service/home/HomeIndexServiceImpl.java
+2
-2
computility-module-external/src/main/java/com/luhu/computility/module/external/controller/openapi/AigcNewApiController.java
+2
-3
computility-module-external/src/main/java/com/luhu/computility/module/external/controller/openapi/AigcOldApiController.java
+2
-3
computility-module-external/src/main/java/com/luhu/computility/module/external/controller/openapi/OpenApiController.java
+9
-10
computility-module-member/pom.xml
+5
-0
computility-module-member/src/main/java/com/luhu/computility/module/member/mq/producer/user/MemberUserProducer.java
+10
-0
computility-module-member/src/main/java/com/luhu/computility/module/member/utils/AppKeyGenerator.java
+1
-1
computility-module-member/src/main/java/com/luhu/computility/module/member/utils/AppSecretEncrypt.java
+1
-1
No files found.
computility-framework/computility-spring-boot-starter-protection/pom.xml
View file @
fd2d3871
...
...
@@ -42,6 +42,11 @@
<artifactId>
computility-spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
com.luhu
</groupId>
<artifactId>
computility-module-apihub-api
</artifactId>
<version>
${revision}
</version>
</dependency>
</dependencies>
...
...
computility-framework/computility-spring-boot-starter-protection/src/main/java/com/luhu/computility/framework/signature/core/aop/ApiSignatureAspect.java
View file @
fd2d3871
This diff is collapsed.
Click to expand it.
computility-framework/computility-spring-boot-starter-protection/src/main/java/com/luhu/computility/framework/signature/core/redis/ApiSignatureRedisDAO.java
View file @
fd2d3871
...
...
@@ -25,6 +25,11 @@ public class ApiSignatureRedisDAO {
private
static
final
String
SIGNATURE_NONCE
=
"api_signature_nonce:%s:%s"
;
/**
* 用户套餐使用次数 Key 前缀
*/
public
static
final
String
USAGE_KEY
=
"api_usage:"
;
/**
* 签名密钥
* <p>
* HASH 结构
...
...
@@ -54,4 +59,53 @@ public class ApiSignatureRedisDAO {
return
(
String
)
stringRedisTemplate
.
opsForHash
().
get
(
SIGNATURE_APPID
,
appId
);
}
// ========== 用户套餐使用次数 ==========
/**
* 原子自增用户套餐使用次数
*
* @param key Redis key(USAGE_KEY + apiEndpointId + userId)
* @return 当前使用次数
*/
public
Long
incrementUsage
(
String
key
)
{
return
stringRedisTemplate
.
opsForValue
().
increment
(
key
,
1
);
}
/**
* 获取用户套餐已使用次数
*
* @param key Redis key
* @return 使用次数
*/
public
Long
getUsage
(
String
key
)
{
String
value
=
stringRedisTemplate
.
opsForValue
().
get
(
key
);
if
(
value
==
null
)
{
return
0L
;
}
try
{
return
Long
.
parseLong
(
value
);
}
catch
(
NumberFormatException
e
)
{
return
0L
;
}
}
/**
* 重置用户套餐使用次数(可选,用于测试或套餐刷新)
*/
public
void
resetUsage
(
String
key
)
{
stringRedisTemplate
.
opsForValue
().
set
(
key
,
"0"
);
}
/**
* 增加用户套餐使用次数,并设置过期时间
*
* @param key Redis key
* @return 当前使用次数
*/
public
Integer
incrementUsageWithExpire
(
String
key
,
Long
consumptionPoints
)
{
Integer
used
=
stringRedisTemplate
.
opsForValue
().
increment
(
key
,
consumptionPoints
).
intValue
();
return
used
;
}
}
computility-module-apihub/computility-module-apihub-api/src/main/java/com/luhu/computility/module/apihub/api/apiorder/ApiOrderApi.java
View file @
fd2d3871
...
...
@@ -3,6 +3,7 @@ package com.luhu.computility.module.apihub.api.apiorder;
import
com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderPageReqDTO
;
import
com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderRespDTO
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
...
...
@@ -13,6 +14,6 @@ import java.util.List;
*/
public
interface
ApiOrderApi
{
List
<
ApiOrderRespDTO
>
get
OrderList
(
ApiOrderPageReqDTO
apiOrderPageReqDTO
);
List
<
ApiOrderRespDTO
>
get
PaidOrderList
(
LocalDateTime
[]
timePeriod
);
}
computility-module-apihub/computility-module-apihub-api/src/main/java/com/luhu/computility/module/apihub/api/appcredential/AppCredentialApi.java
View file @
fd2d3871
...
...
@@ -3,7 +3,9 @@ package com.luhu.computility.module.apihub.api.appcredential;
import
com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderPageReqDTO
;
import
com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderRespDTO
;
import
com.luhu.computility.module.apihub.api.appcredential.dto.AppCredentialRespDTO
;
import
com.luhu.computility.module.apihub.api.appcredential.dto.AppCredentialSaveReqDTO
;
import
javax.validation.Valid
;
import
java.util.List
;
/**
...
...
@@ -22,4 +24,12 @@ public interface AppCredentialApi {
*/
AppCredentialRespDTO
getAppSecretByAppid
(
String
appId
);
/**
* 创建用户密钥信息
*
* @param createReqVO 创建信息
* @return 编号
*/
Long
createAppCredential
(
@Valid
AppCredentialSaveReqDTO
createReqVO
);
}
computility-module-apihub/computility-module-apihub-api/src/main/java/com/luhu/computility/module/apihub/api/appcredential/dto/AppCredentialSaveReqDTO.java
0 → 100644
View file @
fd2d3871
package
com
.
luhu
.
computility
.
module
.
apihub
.
api
.
appcredential
.
dto
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
@Schema
(
description
=
"管理后台 - 用户密钥信息新增/修改 Request VO"
)
@Data
public
class
AppCredentialSaveReqDTO
{
@Schema
(
description
=
"主键ID"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"8721"
)
private
Long
id
;
@Schema
(
description
=
"应用ID,唯一"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"23068"
)
@NotEmpty
(
message
=
"应用ID,唯一不能为空"
)
private
String
appId
;
@Schema
(
description
=
"AES加密后的应用密钥"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
@NotEmpty
(
message
=
"AES加密后的应用密钥不能为空"
)
private
String
appSecret
;
@Schema
(
description
=
"所属用户ID"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"11786"
)
@NotNull
(
message
=
"所属用户ID不能为空"
)
private
Long
userId
;
}
\ No newline at end of file
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/api/ApiOrderApiServiceImpl.java
View file @
fd2d3871
...
...
@@ -8,6 +8,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.validation.annotation.Validated
;
import
javax.annotation.Resource
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
...
...
@@ -24,7 +25,7 @@ public class ApiOrderApiServiceImpl implements ApiOrderApi {
@Override
public
List
<
ApiOrderRespDTO
>
get
OrderList
(
ApiOrderPageReqDTO
apiOrderPageReqDTO
)
{
return
apiOrderMapper
.
select
List
(
apiOrderPageReqDTO
);
public
List
<
ApiOrderRespDTO
>
get
PaidOrderList
(
LocalDateTime
[]
timePeriod
)
{
return
apiOrderMapper
.
select
AllPaidList
(
timePeriod
);
}
}
\ No newline at end of file
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/api/AppCredentialApiServiceImpl.java
View file @
fd2d3871
package
com
.
luhu
.
computility
.
module
.
apihub
.
api
;
import
com.luhu.computility.framework.common.util.object.BeanUtils
;
import
com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogPageReqDTO
;
import
com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogRespDTO
;
import
com.luhu.computility.module.apihub.api.apiendpoint.ApiEndpointApi
;
import
com.luhu.computility.module.apihub.api.appcredential.AppCredentialApi
;
import
com.luhu.computility.module.apihub.api.appcredential.dto.AppCredentialRespDTO
;
import
com.luhu.computility.module.apihub.api.appcredential.dto.AppCredentialSaveReqDTO
;
import
com.luhu.computility.module.apihub.controller.admin.appcredential.vo.AppCredentialSaveReqVO
;
import
com.luhu.computility.module.apihub.dal.dataobject.appcredential.AppCredentialDO
;
import
com.luhu.computility.module.apihub.dal.mysql.apicalllog.ApiCallLogMapper
;
import
com.luhu.computility.module.apihub.dal.mysql.appcredential.AppCredentialMapper
;
...
...
@@ -31,4 +34,15 @@ public class AppCredentialApiServiceImpl implements AppCredentialApi {
return
appCredentialMapper
.
selectOpenByAppId
(
appId
);
}
@Override
public
Long
createAppCredential
(
AppCredentialSaveReqDTO
createReqVO
)
{
// 插入
AppCredentialDO
appCredential
=
BeanUtils
.
toBean
(
createReqVO
,
AppCredentialDO
.
class
);
appCredentialMapper
.
insert
(
appCredential
);
// 返回
return
appCredential
.
getId
();
}
}
\ No newline at end of file
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/api/UserApiUsageApiServiceImpl.java
View file @
fd2d3871
...
...
@@ -46,7 +46,7 @@ public class UserApiUsageApiServiceImpl implements UserApiUsageApi {
throw
exception
(
USER_API_USAGE_NOT_EXISTS
);
}
UserApiUsageDO
userApiUsage
=
userApiUsageService
.
getUserApiUsage
(
id
);
userApiUsage
.
setUsedTimes
(
use
rApiUsage
.
getUsedTimes
()
-
use
d
);
userApiUsage
.
setUsedTimes
(
used
);
userApiUsageMapper
.
updateById
(
userApiUsage
);
}
}
\ No newline at end of file
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/apiorder/ApiOrderController.java
View file @
fd2d3871
...
...
@@ -138,6 +138,7 @@ public class ApiOrderController {
.
setPackageId
(
apiOrder
.
getPackageId
())
.
setPackageName
(
apiOrder
.
getPackageName
())
.
setPackageTimes
(
apiOrder
.
getPackageTimes
())
.
setUsedTimes
(
0
)
.
setPackageValidDays
(
apiOrder
.
getPackageValidDays
())
.
setUserId
(
apiOrder
.
getUserId
())
.
setExpireTime
(
DateUtil
.
offsetDay
(
new
Date
(),
apiOrder
.
getPackageTimes
()).
toLocalDateTime
()
)
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/appcredential/AppCredentialController.java
View file @
fd2d3871
...
...
@@ -84,8 +84,7 @@ public class AppCredentialController {
@Operation
(
summary
=
"获得用户密钥信息分页"
)
@PreAuthorize
(
"@ss.hasPermission('apihub:app-credential:query')"
)
public
CommonResult
<
PageResult
<
AppCredentialRespVO
>>
getAppCredentialPage
(
@Valid
AppCredentialPageReqVO
pageReqVO
)
{
PageResult
<
AppCredentialDO
>
pageResult
=
appCredentialService
.
getAppCredentialPage
(
pageReqVO
);
return
success
(
BeanUtils
.
toBean
(
pageResult
,
AppCredentialRespVO
.
class
));
return
success
(
appCredentialService
.
getAppCredentialPage
(
pageReqVO
));
}
@GetMapping
(
"/export-excel"
)
...
...
@@ -95,10 +94,10 @@ public class AppCredentialController {
public
void
exportAppCredentialExcel
(
@Valid
AppCredentialPageReqVO
pageReqVO
,
HttpServletResponse
response
)
throws
IOException
{
pageReqVO
.
setPageSize
(
PageParam
.
PAGE_SIZE_NONE
);
List
<
AppCredential
D
O
>
list
=
appCredentialService
.
getAppCredentialPage
(
pageReqVO
).
getList
();
List
<
AppCredential
RespV
O
>
list
=
appCredentialService
.
getAppCredentialPage
(
pageReqVO
).
getList
();
// 导出 Excel
ExcelUtils
.
write
(
response
,
"用户密钥信息.xls"
,
"数据"
,
AppCredentialRespVO
.
class
,
BeanUtils
.
toBean
(
list
,
AppCredentialRespVO
.
class
)
);
list
);
}
}
\ No newline at end of file
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/appcredential/vo/AppCredentialPageReqVO.java
View file @
fd2d3871
...
...
@@ -22,6 +22,9 @@ public class AppCredentialPageReqVO extends PageParam {
@Schema
(
description
=
"所属用户ID"
,
example
=
"11786"
)
private
Long
userId
;
@Schema
(
description
=
"所属用户手机"
,
example
=
"11786"
)
private
String
userMobile
;
@Schema
(
description
=
"创建时间"
)
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
private
LocalDateTime
[]
createTime
;
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/appcredential/vo/AppCredentialRespVO.java
View file @
fd2d3871
...
...
@@ -28,6 +28,10 @@ public class AppCredentialRespVO {
@ExcelProperty
(
"所属用户ID"
)
private
Long
userId
;
@Schema
(
description
=
"用户手机号"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"11786"
)
@ExcelProperty
(
"用户手机号"
)
private
String
userMobile
;
@Schema
(
description
=
"创建时间"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
@ExcelProperty
(
"创建时间"
)
private
LocalDateTime
createTime
;
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/admin/userapiusage/vo/UserApiUsageSaveReqVO.java
View file @
fd2d3871
...
...
@@ -44,7 +44,6 @@ public class UserApiUsageSaveReqVO {
@Schema
(
description
=
"已使用次数"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
@NotNull
(
message
=
"已使用次数不能为空"
)
private
Integer
usedTimes
;
@Schema
(
description
=
"过期时间"
)
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/controller/app/apiorder/AppApiOrderController.java
View file @
fd2d3871
...
...
@@ -52,6 +52,7 @@ public class AppApiOrderController {
@GetMapping
(
"/page"
)
@Operation
(
summary
=
"获得api订单分页"
)
public
CommonResult
<
PageResult
<
AppApiOrderRespVO
>>
getApiOrderPage
(
@Valid
AppApiOrderPageReqVO
pageReqVO
)
{
pageReqVO
.
setUserId
(
SecurityFrameworkUtils
.
getLoginUser
().
getId
());
PageResult
<
ApiOrderDO
>
pageResult
=
apiOrderService
.
getAppApiOrderPage
(
pageReqVO
);
PageResult
<
AppApiOrderRespVO
>
appApiOrderRespVOPageResult
=
BeanUtils
.
toBean
(
pageResult
,
AppApiOrderRespVO
.
class
);
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/dal/mysql/apiorder/ApiOrderMapper.java
View file @
fd2d3871
package
com
.
luhu
.
computility
.
module
.
apihub
.
dal
.
mysql
.
apiorder
;
import
java.time.LocalDateTime
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
com.luhu.computility.framework.common.pojo.PageResult
;
...
...
@@ -41,23 +43,11 @@ public interface ApiOrderMapper extends BaseMapperX<ApiOrderDO> {
.
orderByDesc
(
ApiOrderDO:
:
getId
));
}
default
List
<
ApiOrderRespDTO
>
select
List
(
ApiOrderPageReqDTO
reqVO
)
{
default
List
<
ApiOrderRespDTO
>
select
AllPaidList
(
LocalDateTime
[]
timePeriod
)
{
List
<
ApiOrderDO
>
list
=
selectList
(
new
LambdaQueryWrapperX
<
ApiOrderDO
>()
.
eqIfPresent
(
ApiOrderDO:
:
getUserId
,
reqVO
.
getUserId
())
.
eqIfPresent
(
ApiOrderDO:
:
getApiId
,
reqVO
.
getApiId
())
.
eqIfPresent
(
ApiOrderDO:
:
getPackageId
,
reqVO
.
getPackageId
())
.
eqIfPresent
(
ApiOrderDO:
:
getOrderNo
,
reqVO
.
getOrderNo
())
.
eq
(
ApiOrderDO:
:
getStatus
,
ApiOrderStatus
.
PAID
.
getValue
())
.
eqIfPresent
(
ApiOrderDO:
:
getPayOrderId
,
reqVO
.
getPayOrderId
())
.
betweenIfPresent
(
ApiOrderDO:
:
getPayTime
,
reqVO
.
getPayTime
())
.
eqIfPresent
(
ApiOrderDO:
:
getPayChannelCode
,
reqVO
.
getPayChannelCode
())
.
betweenIfPresent
(
ApiOrderDO:
:
getCreateTime
,
reqVO
.
getCreateTime
())
.
orderByDesc
(
ApiOrderDO:
:
getId
));
return
list
.
stream
().
map
(
doObj
->
{
ApiOrderRespDTO
dto
=
new
ApiOrderRespDTO
();
BeanUtils
.
copyProperties
(
doObj
,
dto
);
return
dto
;
}).
collect
(
Collectors
.
toList
());
.
betweenIfPresent
(
ApiOrderDO:
:
getCreateTime
,
timePeriod
));
return
BeanUtil
.
copyToList
(
list
,
ApiOrderRespDTO
.
class
);
}
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/dal/mysql/appcredential/AppCredentialMapper.java
View file @
fd2d3871
...
...
@@ -6,8 +6,10 @@ import com.luhu.computility.framework.common.pojo.PageResult;
import
com.luhu.computility.framework.common.util.object.BeanUtils
;
import
com.luhu.computility.framework.mybatis.core.query.LambdaQueryWrapperX
;
import
com.luhu.computility.framework.mybatis.core.mapper.BaseMapperX
;
import
com.luhu.computility.framework.mybatis.core.query.MPJLambdaWrapperX
;
import
com.luhu.computility.module.apihub.api.appcredential.dto.AppCredentialRespDTO
;
import
com.luhu.computility.module.apihub.dal.dataobject.appcredential.AppCredentialDO
;
import
com.luhu.computility.module.member.dal.dataobject.user.MemberUserDO
;
import
org.apache.ibatis.annotations.Mapper
;
import
com.luhu.computility.module.apihub.controller.admin.appcredential.vo.*
;
...
...
@@ -19,13 +21,13 @@ import com.luhu.computility.module.apihub.controller.admin.appcredential.vo.*;
@Mapper
public
interface
AppCredentialMapper
extends
BaseMapperX
<
AppCredentialDO
>
{
default
PageResult
<
AppCredential
D
O
>
selectPage
(
AppCredentialPageReqVO
reqVO
)
{
return
select
Page
(
reqVO
,
new
LambdaQuery
WrapperX
<
AppCredentialDO
>()
.
eqIfPresent
(
AppCredentialDO:
:
getAppId
,
reqVO
.
getAppId
()
)
.
eqIfPresent
(
AppCredentialDO:
:
getAppSecret
,
reqVO
.
getAppSecret
()
)
.
eqIfPresent
(
AppCredentialDO:
:
getUserId
,
reqVO
.
getUserId
()
)
.
betweenIfPresent
(
AppCredentialDO:
:
getCreateTime
,
reqVO
.
getCreateTim
e
())
.
orderByDesc
(
AppCredentialDO:
:
get
Id
));
default
PageResult
<
AppCredential
RespV
O
>
selectPage
(
AppCredentialPageReqVO
reqVO
)
{
return
select
JoinPage
(
reqVO
,
AppCredentialRespVO
.
class
,
new
MPJLambda
WrapperX
<
AppCredentialDO
>()
.
selectAll
(
AppCredentialDO
.
class
)
.
selectAs
(
MemberUserDO:
:
getMobile
,
AppCredentialRespVO:
:
getUserMobile
)
.
leftJoin
(
MemberUserDO
.
class
,
MemberUserDO:
:
getId
,
AppCredentialDO:
:
getUserId
)
.
eqIfPresent
(
MemberUserDO:
:
getMobile
,
reqVO
.
getUserMobil
e
())
.
orderByDesc
(
AppCredentialDO:
:
get
CreateTime
));
}
default
AppCredentialDO
selectOneByAppId
(
String
appId
)
{
...
...
@@ -38,7 +40,6 @@ public interface AppCredentialMapper extends BaseMapperX<AppCredentialDO> {
AppCredentialDO
appCredentialDO
=
selectOne
(
new
LambdaQueryWrapperX
<
AppCredentialDO
>()
.
eqIfPresent
(
AppCredentialDO:
:
getAppId
,
appId
));
return
BeanUtils
.
toBean
(
appCredentialDO
,
AppCredentialRespDTO
.
class
);
}
}
\ No newline at end of file
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/service/appcredential/AppCredentialService.java
View file @
fd2d3871
...
...
@@ -57,7 +57,7 @@ public interface AppCredentialService {
* @param pageReqVO 分页查询
* @return 用户密钥信息分页
*/
PageResult
<
AppCredential
D
O
>
getAppCredentialPage
(
AppCredentialPageReqVO
pageReqVO
);
PageResult
<
AppCredential
RespV
O
>
getAppCredentialPage
(
AppCredentialPageReqVO
pageReqVO
);
/**
...
...
computility-module-apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub/service/appcredential/AppCredentialServiceImpl.java
View file @
fd2d3871
...
...
@@ -74,7 +74,7 @@ public class AppCredentialServiceImpl implements AppCredentialService {
}
@Override
public
PageResult
<
AppCredential
D
O
>
getAppCredentialPage
(
AppCredentialPageReqVO
pageReqVO
)
{
public
PageResult
<
AppCredential
RespV
O
>
getAppCredentialPage
(
AppCredentialPageReqVO
pageReqVO
)
{
return
appCredentialMapper
.
selectPage
(
pageReqVO
);
}
...
...
computility-module-biz/computility-module-biz-biz/src/main/java/com/luhu/computility/module/biz/service/home/HomeIndexServiceImpl.java
View file @
fd2d3871
...
...
@@ -259,7 +259,7 @@ public class HomeIndexServiceImpl implements HomeIndexService {
ApiOrderPageReqDTO
apiOrderPageReqDTO
=
new
ApiOrderPageReqDTO
();
apiOrderPageReqDTO
.
setCreateTime
(
todayLocalDateTime
);
List
<
ApiOrderRespDTO
>
apiOrderList
=
apiOrderApi
.
get
OrderList
(
apiOrderPageReqDTO
);
List
<
ApiOrderRespDTO
>
apiOrderList
=
apiOrderApi
.
get
PaidOrderList
(
todayLocalDateTime
);
HomeIndexTopBarRespVO
homeIndexTopBarRespVO
=
new
HomeIndexTopBarRespVO
();
...
...
@@ -326,7 +326,7 @@ public class HomeIndexServiceImpl implements HomeIndexService {
// API订单:已支付状态
ApiOrderPageReqDTO
apiOrderPageReqDTO
=
new
ApiOrderPageReqDTO
();
apiOrderPageReqDTO
.
setCreateTime
(
allTimePeriod
);
List
<
ApiOrderRespDTO
>
apiOrderList
=
apiOrderApi
.
get
OrderList
(
apiOrderPageReqDTO
);
List
<
ApiOrderRespDTO
>
apiOrderList
=
apiOrderApi
.
get
PaidOrderList
(
allTimePeriod
);
// 3. 按节点分组统计:数量 + 金额
Map
<
LocalDate
,
Long
>
computeCountMap
=
groupOrderByNode
(
computeOrderList
,
timeNodes
,
dateType
);
...
...
computility-module-external/src/main/java/com/luhu/computility/module/external/controller/openapi/AigcNewApiController.java
View file @
fd2d3871
...
...
@@ -8,7 +8,6 @@ import com.luhu.computility.framework.common.exception.enums.GlobalResponseCodeC
import
com.luhu.computility.framework.common.pojo.CommonResult
;
import
com.luhu.computility.framework.common.util.http.HttpUtils
;
import
com.luhu.computility.framework.signature.core.annotation.ApiSignature
;
import
com.luhu.computility.module.apihub.signature.core.annotation.ApiHubApiSignature
;
import
com.luhu.computility.module.external.controller.openapi.dto.ImageRespDTO
;
import
com.luhu.computility.module.external.controller.openapi.dto.PoetryImageReqDTO
;
import
com.luhu.computility.module.external.controller.openapi.dto.TextToImageReqDTO
;
...
...
@@ -49,7 +48,7 @@ public class AigcNewApiController {
@ApiAccessLog
@PostMapping
(
value
=
"/text-to-image/season"
)
@Operation
(
summary
=
"四季和景点id生成图"
,
description
=
"接收简单生图参数,将生成图片保存在本地服务器,并返回生成图片的url"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
ImageRespDTO
>
textToImageV2
(
@RequestBody
TextToImageReqDTO
textToImageReqDTO
){
try
{
String
requestBody
=
JSONUtil
.
toJsonStr
(
textToImageReqDTO
);
...
...
@@ -73,7 +72,7 @@ public class AigcNewApiController {
@ApiAccessLog
@PostMapping
(
"/text-to-image/poetry"
)
@Operation
(
summary
=
"获取藏头诗图片"
,
description
=
"接收关键词、景点id、省份id这些参数,返回藏头诗图片url"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
ImageRespDTO
>
textToImageByPoetry
(
@RequestBody
PoetryImageReqDTO
poetryImageReqDTO
){
try
{
String
requestBody
=
JSONUtil
.
toJsonStr
(
poetryImageReqDTO
);
...
...
computility-module-external/src/main/java/com/luhu/computility/module/external/controller/openapi/AigcOldApiController.java
View file @
fd2d3871
...
...
@@ -8,7 +8,6 @@ import com.luhu.computility.framework.common.exception.enums.GlobalResponseCodeC
import
com.luhu.computility.framework.common.pojo.CommonResult
;
import
com.luhu.computility.framework.common.util.http.HttpUtils
;
import
com.luhu.computility.framework.signature.core.annotation.ApiSignature
;
import
com.luhu.computility.module.apihub.signature.core.annotation.ApiHubApiSignature
;
import
com.luhu.computility.module.external.controller.openapi.dto.ImageRespDTO
;
import
com.luhu.computility.module.external.controller.openapi.dto.PoetryImageReqDTO
;
import
com.luhu.computility.module.external.controller.openapi.dto.TextToImageReqDTO
;
...
...
@@ -50,7 +49,7 @@ public class AigcOldApiController {
@ApiAccessLog
@PostMapping
(
value
=
"/text-to-image/season"
)
@Operation
(
summary
=
"四季和景点id生成图"
,
description
=
"接收简单生图参数,将生成图片保存在本地服务器,并返回生成图片的url"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
ImageRespDTO
>
textToImageBySeason
(
@RequestBody
TextToImageReqDTO
textToImageReqDTO
){
try
{
String
requestBody
=
JSONUtil
.
toJsonStr
(
textToImageReqDTO
);
...
...
@@ -74,7 +73,7 @@ public class AigcOldApiController {
@ApiAccessLog
@PostMapping
(
"/text-to-image/poetry"
)
@Operation
(
summary
=
"获取藏头诗图片"
,
description
=
"接收关键词、景点id、省份id这些参数,返回藏头诗图片url"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
ImageRespDTO
>
textToImageByPoetry
(
@RequestBody
PoetryImageReqDTO
poetryImageReqDTO
){
try
{
String
requestBody
=
JSONUtil
.
toJsonStr
(
poetryImageReqDTO
);
...
...
computility-module-external/src/main/java/com/luhu/computility/module/external/controller/openapi/OpenApiController.java
View file @
fd2d3871
...
...
@@ -3,7 +3,6 @@ package com.luhu.computility.module.external.controller.openapi;
import
com.luhu.computility.framework.apilog.core.annotation.ApiAccessLog
;
import
com.luhu.computility.framework.common.pojo.CommonResult
;
import
com.luhu.computility.framework.signature.core.annotation.ApiSignature
;
import
com.luhu.computility.module.apihub.signature.core.annotation.ApiHubApiSignature
;
import
com.luhu.computility.module.external.controller.openapi.dto.AIQAReqDTO
;
import
com.luhu.computility.module.external.controller.openapi.dto.AIQARespDTO
;
import
com.luhu.computility.module.external.controller.openapi.dto.CeateVideoStreamReqDTO
;
...
...
@@ -52,7 +51,7 @@ public class OpenApiController {
@ApiAccessLog
@PostMapping
(
value
=
"/digital-human-conversation"
)
@Operation
(
summary
=
"数字人对话"
,
description
=
"和数字人朱熹进行一问一答的对话"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
ConversationRespDTO
>
digitalHumanConversation
(
@RequestBody
ConversationReqDTO
conversationReqDTO
){
return
openApiService
.
digitalHumanConversation
(
conversationReqDTO
);
}
...
...
@@ -65,7 +64,7 @@ public class OpenApiController {
@Parameter
(
name
=
"url"
,
description
=
"图片链接"
)
})
@Operation
(
summary
=
"ai换脸-上传图片"
,
description
=
"用户上传头像将视频中人物头像替换"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
UploadImageRespDTO
>
uploadFaceSwapImage
(
@RequestPart
(
value
=
"image"
,
required
=
false
)
MultipartFile
image
,
@RequestParam
(
value
=
"url"
,
required
=
false
)
String
url
)
{
return
openApiService
.
uploadFaceSwapImage
(
image
,
url
);
...
...
@@ -75,7 +74,7 @@ public class OpenApiController {
@ApiAccessLog
@GetMapping
(
"/create-video-stream"
)
@Operation
(
summary
=
"ai换脸-生成换脸工作流"
,
description
=
"只有先上传图片才能开始换脸工作流,用户根据promptId取最后生成的视频"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
CeateVideoStreamRespDTO
>
ceateVideoStream
(
@RequestBody
CeateVideoStreamReqDTO
ceateVideoStreamReqDTO
){
return
openApiService
.
ceateVideoStream
(
ceateVideoStreamReqDTO
);
}
...
...
@@ -84,7 +83,7 @@ public class OpenApiController {
@ApiAccessLog
@PostMapping
(
value
=
"/generate-face-swap-image"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
@Operation
(
summary
=
"ai换脸-图片换脸:上传图+图片生成"
,
description
=
"ai换脸-图片换脸:上传图片+图片生成"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
GenerateFaceSwapRespDTO
>
faceImageGenerate
(
@RequestPart
(
value
=
"sourceImage"
,
required
=
false
)
MultipartFile
sourceImage
,
@RequestParam
(
value
=
"sourceImageUrl"
,
required
=
false
)
String
sourceImageUrl
,
@RequestPart
(
value
=
"targetImage"
,
required
=
false
)
MultipartFile
targetImage
,
...
...
@@ -96,7 +95,7 @@ public class OpenApiController {
@ApiAccessLog
@GetMapping
(
"/view-image"
)
@Operation
(
summary
=
"根据promptId取换脸后的图"
,
description
=
"根据promptId取换脸后的图"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
ViewSourceRespDTO
>
viewImage
(
@RequestBody
ViewImageReqDTO
viewImageReqDTO
){
return
openApiService
.
viewImage
(
viewImageReqDTO
);
}
...
...
@@ -109,7 +108,7 @@ public class OpenApiController {
@Parameter
(
name
=
"url"
,
description
=
"图片链接"
)
})
@Operation
(
summary
=
"ai换脸-视频换脸;ai换脸-上传图片+视频流生成"
,
description
=
"ai换脸-上传图片+视频流生成"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
GenerateFaceSwapRespDTO
>
faceVideoGenerate
(
@RequestPart
(
value
=
"image"
,
required
=
false
)
MultipartFile
image
,
@RequestParam
(
value
=
"url"
,
required
=
false
)
String
url
)
{
return
openApiService
.
faceVideoGenerate
(
image
,
url
);
...
...
@@ -119,7 +118,7 @@ public class OpenApiController {
@ApiAccessLog
@GetMapping
(
"/view-video"
)
@Operation
(
summary
=
"根据promptId取最后生成的视频"
,
description
=
"根据promptId取最后生成的视频"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
ViewSourceRespDTO
>
viewVideo
(
@RequestBody
ViewVideoReqDTO
viewVideoReqDTO
){
return
openApiService
.
viewVideo
(
viewVideoReqDTO
);
}
...
...
@@ -134,7 +133,7 @@ public class OpenApiController {
@Parameter
(
name
=
"touristAreaId"
,
description
=
"景点编码"
)
})
@Operation
(
summary
=
"图片拍照-相似图查找"
,
description
=
"图片拍照-相似图查找"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
List
<
MatchImageRespDTO
>>
matchImage
(
@RequestPart
(
value
=
"image"
,
required
=
false
)
MultipartFile
image
,
@RequestParam
(
value
=
"url"
,
required
=
false
)
String
url
,
@RequestParam
(
value
=
"limit"
,
required
=
false
)
Integer
limit
...
...
@@ -148,7 +147,7 @@ public class OpenApiController {
@ApiAccessLog
@PostMapping
(
"/AIQA-chat"
)
@Operation
(
summary
=
"AI问答"
,
description
=
"AI助手,关于行程和景区的疑问"
)
@Api
HubApi
Signature
@ApiSignature
public
CommonResult
<
AIQARespDTO
>
AIQAChat
(
@RequestBody
AIQAReqDTO
aiqaReqDTO
){
return
openApiService
.
AIQAChat
(
aiqaReqDTO
);
}
...
...
computility-module-member/pom.xml
View file @
fd2d3871
...
...
@@ -20,6 +20,11 @@
<dependencies>
<dependency>
<groupId>
com.luhu
</groupId>
<artifactId>
computility-module-apihub-api
</artifactId>
<version>
${revision}
</version>
</dependency>
<dependency>
<groupId>
com.luhu
</groupId>
<artifactId>
computility-module-system
</artifactId>
<version>
${revision}
</version>
</dependency>
...
...
computility-module-member/src/main/java/com/luhu/computility/module/member/mq/producer/user/MemberUserProducer.java
View file @
fd2d3871
package
com
.
luhu
.
computility
.
module
.
member
.
mq
.
producer
.
user
;
import
com.luhu.computility.module.apihub.api.appcredential.AppCredentialApi
;
import
com.luhu.computility.module.apihub.api.appcredential.dto.AppCredentialSaveReqDTO
;
import
com.luhu.computility.module.member.api.message.user.MemberUserCreateMessage
;
import
com.luhu.computility.module.member.utils.AppKeyGenerator
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.stereotype.Component
;
...
...
@@ -19,6 +22,9 @@ public class MemberUserProducer {
@Resource
private
ApplicationContext
applicationContext
;
@Resource
private
AppCredentialApi
appCredentialApi
;
/**
* 发送 {@link MemberUserCreateMessage} 消息
*
...
...
@@ -26,6 +32,10 @@ public class MemberUserProducer {
*/
public
void
sendUserCreateMessage
(
Long
userId
)
{
applicationContext
.
publishEvent
(
new
MemberUserCreateMessage
().
setUserId
(
userId
));
appCredentialApi
.
createAppCredential
(
new
AppCredentialSaveReqDTO
()
.
setAppId
(
AppKeyGenerator
.
generateAppId
())
.
setUserId
(
userId
)
.
setAppSecret
(
AppKeyGenerator
.
generateAppSecret
()));
}
}
computility-module-
apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub
/utils/AppKeyGenerator.java
→
computility-module-
member/src/main/java/com/luhu/computility/module/member
/utils/AppKeyGenerator.java
View file @
fd2d3871
package
com
.
luhu
.
computility
.
module
.
apihub
.
utils
;
package
com
.
luhu
.
computility
.
module
.
member
.
utils
;
import
cn.hutool.crypto.digest.DigestUtil
;
...
...
computility-module-
apihub/computility-module-apihub-biz/src/main/java/com/luhu/computility/module/apihub
/utils/AppSecretEncrypt.java
→
computility-module-
member/src/main/java/com/luhu/computility/module/member
/utils/AppSecretEncrypt.java
View file @
fd2d3871
package
com
.
luhu
.
computility
.
module
.
apihub
.
utils
;
package
com
.
luhu
.
computility
.
module
.
member
.
utils
;
import
cn.hutool.crypto.Mode
;
import
cn.hutool.crypto.Padding
;
...
...
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