This commit is contained in:
2026-02-01 19:15:52 +08:00
parent e30e69f8b8
commit 5942de22ad
4 changed files with 30 additions and 16 deletions

View File

@@ -37,8 +37,8 @@ func (l *CreateWhitelistOrderLogic) CreateWhitelistOrder(req *types.CreateWhitel
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "获取用户信息失败, %v", err)
}
// 1. 获取代理信息并验证是否为钻石代理
agent, err := l.svcCtx.AgentModel.FindOneByUserId(l.ctx, userID)
// 1. 获取代理信息并验证(任意等级代理均可操作白名单)
_, err = l.svcCtx.AgentModel.FindOneByUserId(l.ctx, userID)
if err != nil {
if errors.Is(err, model.ErrNotFound) {
return nil, errors.Wrapf(xerr.NewErrMsg("您不是代理"), "")
@@ -46,11 +46,6 @@ func (l *CreateWhitelistOrderLogic) CreateWhitelistOrder(req *types.CreateWhitel
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "查询代理信息失败, %v", err)
}
// 只有钻石代理可以操作
if agent.Level != 3 {
return nil, errors.Wrapf(xerr.NewErrMsg("只有钻石代理可以操作白名单"), "")
}
// 2. 验证参数
if req.IdCard == "" {
return nil, errors.Wrapf(xerr.NewErrMsg("身份证号不能为空"), "")

View File

@@ -38,8 +38,8 @@ func (l *OfflineFeatureLogic) OfflineFeature(req *types.OfflineFeatureReq) (resp
return nil, err
}
// 2. 获取用户ID并验证代理权限
userID, err := l.verifyDiamondAgent()
// 2. 获取用户ID并验证代理权限(任意等级代理均可下架)
userID, err := l.verifyAgent()
if err != nil {
return nil, err
}
@@ -90,14 +90,14 @@ func (l *OfflineFeatureLogic) validateRequest(req *types.OfflineFeatureReq) erro
return nil
}
// verifyDiamondAgent 验证是否为钻石代理并返回用户ID
func (l *OfflineFeatureLogic) verifyDiamondAgent() (string, error) {
// verifyAgent 验证是否为代理并返回用户ID(任意等级代理均可下架)
func (l *OfflineFeatureLogic) verifyAgent() (string, error) {
userID, err := ctxdata.GetUidFromCtx(l.ctx)
if err != nil {
return "", errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "获取用户信息失败, %v", err)
}
agent, err := l.svcCtx.AgentModel.FindOneByUserId(l.ctx, userID)
_, err = l.svcCtx.AgentModel.FindOneByUserId(l.ctx, userID)
if err != nil {
if errors.Is(err, model.ErrNotFound) {
return "", errors.Wrapf(xerr.NewErrMsg("您不是代理"), "")
@@ -105,10 +105,6 @@ func (l *OfflineFeatureLogic) verifyDiamondAgent() (string, error) {
return "", errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "查询代理信息失败, %v", err)
}
if agent.Level != 3 {
return "", errors.Wrapf(xerr.NewErrMsg("只有钻石代理可以操作白名单下架"), "")
}
return userID, nil
}

View File

@@ -53,6 +53,25 @@ func ProcessQueryParams(QueryParams string, target *map[string]interface{}, key
return nil
}
// ensureQueryParamsIDCard 确保 target 中 id_card 非空,缺则用 fallbackId 填充(同一次报告多次进入分数一致)
func ensureQueryParamsIDCard(target *map[string]interface{}, fallbackId string) {
if target == nil {
return
}
if *target == nil {
*target = make(map[string]interface{})
}
v, ok := (*target)["id_card"]
if !ok {
(*target)["id_card"] = fallbackId
return
}
s, _ := v.(string)
if s == "" {
(*target)["id_card"] = fallbackId
}
}
func UpdateFeatureAndProductFeature(ctx context.Context, svcCtx *svc.ServiceContext, productID string, target *[]types.QueryItem) error {
for i := len(*target) - 1; i >= 0; i-- {
queryItem := &(*target)[i]
@@ -103,6 +122,8 @@ func BuildEncryptedQuery(ctx context.Context, svcCtx *svc.ServiceContext, queryM
if processParamsErr != nil {
return "", errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "报告查询, 报告参数处理失败: %v", processParamsErr)
}
// 保证 query_params 中始终有 id_card供前端评分 ±10 等逻辑使用(代理/自己查看报告等模式)
ensureQueryParamsIDCard(&query.QueryParams, "fallback_"+queryModel.Id)
processErr := ProcessQueryData(queryModel.QueryData, &query.QueryData, key)
if processErr != nil {
return "", errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "报告查询, 报告结果处理失败: %v", processErr)

View File

@@ -95,6 +95,8 @@ func (l *QueryShareDetailLogic) QueryShareDetail(req *types.QueryShareDetailReq)
if processParamsErr != nil {
return "", errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "报告查询, 报告参数处理失败: %v", processParamsErr)
}
// 保证分享报告也有 id_card供前端评分 ±10 使用
ensureQueryParamsIDCard(&query.QueryParams, "fallback_"+queryModel.Id)
processErr := ProcessQueryData(queryModel.QueryData, &query.QueryData, key)
if processErr != nil {
return "", errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "报告查询, 报告结果处理失败: %v", processErr)