f
This commit is contained in:
@@ -339,19 +339,19 @@ func (s *UserApplicationServiceImpl) ListUsers(ctx context.Context, query *queri
|
|||||||
EnterpriseAddress: user.EnterpriseInfo.EnterpriseAddress,
|
EnterpriseAddress: user.EnterpriseInfo.EnterpriseAddress,
|
||||||
CreatedAt: user.EnterpriseInfo.CreatedAt,
|
CreatedAt: user.EnterpriseInfo.CreatedAt,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取企业合同信息
|
// 获取企业合同信息
|
||||||
contracts, err := s.contractService.FindByUserID(ctx, user.ID)
|
contracts, err := s.contractService.FindByUserID(ctx, user.ID)
|
||||||
if err == nil && len(contracts) > 0 {
|
if err == nil && len(contracts) > 0 {
|
||||||
contractItems := make([]*responses.ContractInfoItem, 0, len(contracts))
|
contractItems := make([]*responses.ContractInfoItem, 0, len(contracts))
|
||||||
for _, contract := range contracts {
|
for _, contract := range contracts {
|
||||||
contractItems = append(contractItems, &responses.ContractInfoItem{
|
contractItems = append(contractItems, &responses.ContractInfoItem{
|
||||||
ID: contract.ID,
|
ID: contract.ID,
|
||||||
ContractName: contract.ContractName,
|
ContractName: contract.ContractName,
|
||||||
ContractType: string(contract.ContractType),
|
ContractType: string(contract.ContractType),
|
||||||
ContractTypeName: contract.GetContractTypeName(),
|
ContractTypeName: contract.GetContractTypeName(),
|
||||||
ContractFileURL: contract.ContractFileURL,
|
ContractFileURL: contract.ContractFileURL,
|
||||||
CreatedAt: contract.CreatedAt,
|
CreatedAt: contract.CreatedAt,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
item.EnterpriseInfo.Contracts = contractItems
|
item.EnterpriseInfo.Contracts = contractItems
|
||||||
@@ -411,19 +411,19 @@ func (s *UserApplicationServiceImpl) GetUserDetail(ctx context.Context, userID s
|
|||||||
EnterpriseAddress: user.EnterpriseInfo.EnterpriseAddress,
|
EnterpriseAddress: user.EnterpriseInfo.EnterpriseAddress,
|
||||||
CreatedAt: user.EnterpriseInfo.CreatedAt,
|
CreatedAt: user.EnterpriseInfo.CreatedAt,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取企业合同信息
|
// 获取企业合同信息
|
||||||
contracts, err := s.contractService.FindByUserID(ctx, user.ID)
|
contracts, err := s.contractService.FindByUserID(ctx, user.ID)
|
||||||
if err == nil && len(contracts) > 0 {
|
if err == nil && len(contracts) > 0 {
|
||||||
contractItems := make([]*responses.ContractInfoItem, 0, len(contracts))
|
contractItems := make([]*responses.ContractInfoItem, 0, len(contracts))
|
||||||
for _, contract := range contracts {
|
for _, contract := range contracts {
|
||||||
contractItems = append(contractItems, &responses.ContractInfoItem{
|
contractItems = append(contractItems, &responses.ContractInfoItem{
|
||||||
ID: contract.ID,
|
ID: contract.ID,
|
||||||
ContractName: contract.ContractName,
|
ContractName: contract.ContractName,
|
||||||
ContractType: string(contract.ContractType),
|
ContractType: string(contract.ContractType),
|
||||||
ContractTypeName: contract.GetContractTypeName(),
|
ContractTypeName: contract.GetContractTypeName(),
|
||||||
ContractFileURL: contract.ContractFileURL,
|
ContractFileURL: contract.ContractFileURL,
|
||||||
CreatedAt: contract.CreatedAt,
|
CreatedAt: contract.CreatedAt,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
item.EnterpriseInfo.Contracts = contractItems
|
item.EnterpriseInfo.Contracts = contractItems
|
||||||
|
|||||||
@@ -584,6 +584,9 @@ type YYSY6F2BReq struct {
|
|||||||
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type IVYZOCR1Req struct {
|
||||||
|
PhotoData string `json:"photo_data" validate:"required,validBase64Image"`
|
||||||
|
}
|
||||||
type YYSY8B1CReq struct {
|
type YYSY8B1CReq struct {
|
||||||
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,6 +248,7 @@ func registerAllProcessors(combService *comb.CombService) {
|
|||||||
"IVYZN2P8": ivyz.ProcessIVYZN2P8Request, //身份证实名认证政务版
|
"IVYZN2P8": ivyz.ProcessIVYZN2P8Request, //身份证实名认证政务版
|
||||||
"IVYZX5QZ": ivyz.ProcessIVYZX5QZRequest, //活体检测
|
"IVYZX5QZ": ivyz.ProcessIVYZX5QZRequest, //活体检测
|
||||||
"IVYZX5Q2": ivyz.ProcessIVYZX5Q2Request, //活体识别步骤二
|
"IVYZX5Q2": ivyz.ProcessIVYZX5Q2Request, //活体识别步骤二
|
||||||
|
"IVYZOCR1": ivyz.ProcessIVYZOCR1Request, //身份证OCR
|
||||||
|
|
||||||
// COMB系列处理器 - 只注册有自定义逻辑的组合包
|
// COMB系列处理器 - 只注册有自定义逻辑的组合包
|
||||||
"COMB86PM": comb.ProcessCOMB86PMRequest, // 有自定义逻辑:重命名ApiCode
|
"COMB86PM": comb.ProcessCOMB86PMRequest, // 有自定义逻辑:重命名ApiCode
|
||||||
|
|||||||
@@ -255,6 +255,7 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string
|
|||||||
"YYSYK9R4": &dto.YYSYK9R4Req{}, //全网手机三要素验证1979周更新版
|
"YYSYK9R4": &dto.YYSYK9R4Req{}, //全网手机三要素验证1979周更新版
|
||||||
"QCXG3M7Z": &dto.QCXG3M7ZReq{}, //人车关系核验(ETC)10093 月更
|
"QCXG3M7Z": &dto.QCXG3M7ZReq{}, //人车关系核验(ETC)10093 月更
|
||||||
"JRZQ1P5G": &dto.JRZQ1P5GReq{}, //全国自然人借贷压力指数查询(2)
|
"JRZQ1P5G": &dto.JRZQ1P5GReq{}, //全国自然人借贷压力指数查询(2)
|
||||||
|
"IVYZOCR1": &dto.IVYZOCR1Req{}, //身份证OCR
|
||||||
}
|
}
|
||||||
|
|
||||||
// 优先返回已配置的DTO
|
// 优先返回已配置的DTO
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package ivyz
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"tyapi-server/internal/domains/api/dto"
|
||||||
|
"tyapi-server/internal/domains/api/services/processors"
|
||||||
|
"tyapi-server/internal/infrastructure/external/shujubao"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessIVYZOCR1Request IVYZOCR1 身份证OCR API 处理方法(使用数据宝服务示例)
|
||||||
|
func ProcessIVYZOCR1Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
var paramsDto dto.IVYZOCR1Req
|
||||||
|
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建数据宝入参:姓名、身份证、手机号、银行卡号(sign 外的业务参数可按需 AES 加密后作为 bodyData)
|
||||||
|
reqParams := map[string]interface{}{
|
||||||
|
"key": "8782f2a32463f75b53096323461df735",
|
||||||
|
"imageId": paramsDto.PhotoData,
|
||||||
|
}
|
||||||
|
|
||||||
|
// 最终请求 URL = https://api.chinadatapay.com/communication + 拼接接口地址值,如 personal/197
|
||||||
|
apiPath := "/trade/user/1985"
|
||||||
|
data, err := deps.ShujubaoService.CallAPI(ctx, apiPath, reqParams)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, shujubao.ErrDatasource) {
|
||||||
|
return nil, errors.Join(processors.ErrDatasource, err)
|
||||||
|
}
|
||||||
|
if errors.Is(err, shujubao.ErrQueryEmpty) {
|
||||||
|
return nil, errors.Join(processors.ErrNotFound, err)
|
||||||
|
}
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
respBytes, err := json.Marshal(data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
return respBytes, nil
|
||||||
|
}
|
||||||
@@ -20,7 +20,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
UsersTable = "users"
|
UsersTable = "users"
|
||||||
UserCacheTTL = 30 * 60 // 30分钟
|
UserCacheTTL = 30 * 60 // 30分钟
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -415,7 +415,7 @@ func (r *GormUserRepository) GetSystemUserStatsByDateRange(ctx context.Context,
|
|||||||
// GetSystemDailyUserStats 获取系统每日用户统计
|
// GetSystemDailyUserStats 获取系统每日用户统计
|
||||||
func (r *GormUserRepository) GetSystemDailyUserStats(ctx context.Context, startDate, endDate time.Time) ([]map[string]interface{}, error) {
|
func (r *GormUserRepository) GetSystemDailyUserStats(ctx context.Context, startDate, endDate time.Time) ([]map[string]interface{}, error) {
|
||||||
var results []map[string]interface{}
|
var results []map[string]interface{}
|
||||||
|
|
||||||
sql := `
|
sql := `
|
||||||
SELECT
|
SELECT
|
||||||
DATE(created_at) as date,
|
DATE(created_at) as date,
|
||||||
@@ -426,19 +426,19 @@ func (r *GormUserRepository) GetSystemDailyUserStats(ctx context.Context, startD
|
|||||||
GROUP BY DATE(created_at)
|
GROUP BY DATE(created_at)
|
||||||
ORDER BY date ASC
|
ORDER BY date ASC
|
||||||
`
|
`
|
||||||
|
|
||||||
err := r.GetDB(ctx).Raw(sql, startDate.Format("2006-01-02"), endDate.Format("2006-01-02")).Scan(&results).Error
|
err := r.GetDB(ctx).Raw(sql, startDate.Format("2006-01-02"), endDate.Format("2006-01-02")).Scan(&results).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return results, nil
|
return results, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSystemMonthlyUserStats 获取系统每月用户统计
|
// GetSystemMonthlyUserStats 获取系统每月用户统计
|
||||||
func (r *GormUserRepository) GetSystemMonthlyUserStats(ctx context.Context, startDate, endDate time.Time) ([]map[string]interface{}, error) {
|
func (r *GormUserRepository) GetSystemMonthlyUserStats(ctx context.Context, startDate, endDate time.Time) ([]map[string]interface{}, error) {
|
||||||
var results []map[string]interface{}
|
var results []map[string]interface{}
|
||||||
|
|
||||||
sql := `
|
sql := `
|
||||||
SELECT
|
SELECT
|
||||||
TO_CHAR(created_at, 'YYYY-MM') as month,
|
TO_CHAR(created_at, 'YYYY-MM') as month,
|
||||||
@@ -449,19 +449,19 @@ func (r *GormUserRepository) GetSystemMonthlyUserStats(ctx context.Context, star
|
|||||||
GROUP BY TO_CHAR(created_at, 'YYYY-MM')
|
GROUP BY TO_CHAR(created_at, 'YYYY-MM')
|
||||||
ORDER BY month ASC
|
ORDER BY month ASC
|
||||||
`
|
`
|
||||||
|
|
||||||
err := r.GetDB(ctx).Raw(sql, startDate, endDate).Scan(&results).Error
|
err := r.GetDB(ctx).Raw(sql, startDate, endDate).Scan(&results).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return results, nil
|
return results, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSystemDailyCertificationStats 获取系统每日认证用户统计(基于is_certified字段)
|
// GetSystemDailyCertificationStats 获取系统每日认证用户统计(基于is_certified字段)
|
||||||
func (r *GormUserRepository) GetSystemDailyCertificationStats(ctx context.Context, startDate, endDate time.Time) ([]map[string]interface{}, error) {
|
func (r *GormUserRepository) GetSystemDailyCertificationStats(ctx context.Context, startDate, endDate time.Time) ([]map[string]interface{}, error) {
|
||||||
var results []map[string]interface{}
|
var results []map[string]interface{}
|
||||||
|
|
||||||
sql := `
|
sql := `
|
||||||
SELECT
|
SELECT
|
||||||
DATE(updated_at) as date,
|
DATE(updated_at) as date,
|
||||||
@@ -473,19 +473,19 @@ func (r *GormUserRepository) GetSystemDailyCertificationStats(ctx context.Contex
|
|||||||
GROUP BY DATE(updated_at)
|
GROUP BY DATE(updated_at)
|
||||||
ORDER BY date ASC
|
ORDER BY date ASC
|
||||||
`
|
`
|
||||||
|
|
||||||
err := r.GetDB(ctx).Raw(sql, startDate.Format("2006-01-02"), endDate.Format("2006-01-02")).Scan(&results).Error
|
err := r.GetDB(ctx).Raw(sql, startDate.Format("2006-01-02"), endDate.Format("2006-01-02")).Scan(&results).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return results, nil
|
return results, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSystemMonthlyCertificationStats 获取系统每月认证用户统计(基于is_certified字段)
|
// GetSystemMonthlyCertificationStats 获取系统每月认证用户统计(基于is_certified字段)
|
||||||
func (r *GormUserRepository) GetSystemMonthlyCertificationStats(ctx context.Context, startDate, endDate time.Time) ([]map[string]interface{}, error) {
|
func (r *GormUserRepository) GetSystemMonthlyCertificationStats(ctx context.Context, startDate, endDate time.Time) ([]map[string]interface{}, error) {
|
||||||
var results []map[string]interface{}
|
var results []map[string]interface{}
|
||||||
|
|
||||||
sql := `
|
sql := `
|
||||||
SELECT
|
SELECT
|
||||||
TO_CHAR(updated_at, 'YYYY-MM') as month,
|
TO_CHAR(updated_at, 'YYYY-MM') as month,
|
||||||
@@ -497,12 +497,12 @@ func (r *GormUserRepository) GetSystemMonthlyCertificationStats(ctx context.Cont
|
|||||||
GROUP BY TO_CHAR(updated_at, 'YYYY-MM')
|
GROUP BY TO_CHAR(updated_at, 'YYYY-MM')
|
||||||
ORDER BY month ASC
|
ORDER BY month ASC
|
||||||
`
|
`
|
||||||
|
|
||||||
err := r.GetDB(ctx).Raw(sql, startDate, endDate).Scan(&results).Error
|
err := r.GetDB(ctx).Raw(sql, startDate, endDate).Scan(&results).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return results, nil
|
return results, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -510,7 +510,7 @@ func (r *GormUserRepository) GetSystemMonthlyCertificationStats(ctx context.Cont
|
|||||||
func (r *GormUserRepository) GetUserCallRankingByCalls(ctx context.Context, period string, limit int) ([]map[string]interface{}, error) {
|
func (r *GormUserRepository) GetUserCallRankingByCalls(ctx context.Context, period string, limit int) ([]map[string]interface{}, error) {
|
||||||
var sql string
|
var sql string
|
||||||
var args []interface{}
|
var args []interface{}
|
||||||
|
|
||||||
switch period {
|
switch period {
|
||||||
case "today":
|
case "today":
|
||||||
sql = `
|
sql = `
|
||||||
@@ -565,13 +565,13 @@ func (r *GormUserRepository) GetUserCallRankingByCalls(ctx context.Context, peri
|
|||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("不支持的时间周期: %s", period)
|
return nil, fmt.Errorf("不支持的时间周期: %s", period)
|
||||||
}
|
}
|
||||||
|
|
||||||
var results []map[string]interface{}
|
var results []map[string]interface{}
|
||||||
err := r.GetDB(ctx).Raw(sql, args...).Scan(&results).Error
|
err := r.GetDB(ctx).Raw(sql, args...).Scan(&results).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return results, nil
|
return results, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -579,7 +579,7 @@ func (r *GormUserRepository) GetUserCallRankingByCalls(ctx context.Context, peri
|
|||||||
func (r *GormUserRepository) GetUserCallRankingByConsumption(ctx context.Context, period string, limit int) ([]map[string]interface{}, error) {
|
func (r *GormUserRepository) GetUserCallRankingByConsumption(ctx context.Context, period string, limit int) ([]map[string]interface{}, error) {
|
||||||
var sql string
|
var sql string
|
||||||
var args []interface{}
|
var args []interface{}
|
||||||
|
|
||||||
switch period {
|
switch period {
|
||||||
case "today":
|
case "today":
|
||||||
sql = `
|
sql = `
|
||||||
@@ -634,13 +634,13 @@ func (r *GormUserRepository) GetUserCallRankingByConsumption(ctx context.Context
|
|||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("不支持的时间周期: %s", period)
|
return nil, fmt.Errorf("不支持的时间周期: %s", period)
|
||||||
}
|
}
|
||||||
|
|
||||||
var results []map[string]interface{}
|
var results []map[string]interface{}
|
||||||
err := r.GetDB(ctx).Raw(sql, args...).Scan(&results).Error
|
err := r.GetDB(ctx).Raw(sql, args...).Scan(&results).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return results, nil
|
return results, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -648,7 +648,7 @@ func (r *GormUserRepository) GetUserCallRankingByConsumption(ctx context.Context
|
|||||||
func (r *GormUserRepository) GetRechargeRanking(ctx context.Context, period string, limit int) ([]map[string]interface{}, error) {
|
func (r *GormUserRepository) GetRechargeRanking(ctx context.Context, period string, limit int) ([]map[string]interface{}, error) {
|
||||||
var sql string
|
var sql string
|
||||||
var args []interface{}
|
var args []interface{}
|
||||||
|
|
||||||
switch period {
|
switch period {
|
||||||
case "today":
|
case "today":
|
||||||
sql = `
|
sql = `
|
||||||
@@ -709,12 +709,12 @@ func (r *GormUserRepository) GetRechargeRanking(ctx context.Context, period stri
|
|||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("不支持的时间周期: %s", period)
|
return nil, fmt.Errorf("不支持的时间周期: %s", period)
|
||||||
}
|
}
|
||||||
|
|
||||||
var results []map[string]interface{}
|
var results []map[string]interface{}
|
||||||
err := r.GetDB(ctx).Raw(sql, args...).Scan(&results).Error
|
err := r.GetDB(ctx).Raw(sql, args...).Scan(&results).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return results, nil
|
return results, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user