sync: soul-api 接口逻辑 | 原因: 后端接口逻辑修改

This commit is contained in:
卡若
2026-03-08 17:08:56 +08:00
parent 3ca0d58fe0
commit ba7945dd29

View File

@@ -25,27 +25,125 @@ const ckbAPIURL = "https://ckbapi.quwanzhi.com/v1/api/scenarios"
var ckbSourceMap = map[string]string{"team": "团队招募", "investor": "资源对接", "mentor": "导师顾问", "partner": "创业合伙"}
var ckbTagsMap = map[string]string{"team": "切片团队,团队招募", "investor": "资源对接,资源群", "mentor": "导师顾问,咨询服务", "partner": "创业合伙,创业伙伴"}
func getCKBRuntimeConfig() (apiKey string, apiURL string, docNotes string) {
apiKey = ckbAPIKey
apiURL = ckbAPIURL
type CKBRouteConfig struct {
APIURL string `json:"apiUrl"`
APIKey string `json:"apiKey"`
Source string `json:"source"`
Tags string `json:"tags"`
SiteTags string `json:"siteTags"`
Notes string `json:"notes"`
}
type CKBConfigPayload struct {
Routes map[string]CKBRouteConfig `json:"routes"`
DocNotes string `json:"docNotes"`
DocContent string `json:"docContent"`
APIURL string `json:"apiUrl,omitempty"`
APIKey string `json:"apiKey,omitempty"`
}
func defaultCKBRouteConfig(routeKey string) CKBRouteConfig {
cfg := CKBRouteConfig{
APIURL: ckbAPIURL,
APIKey: ckbAPIKey,
SiteTags: "创业实验APP",
}
switch routeKey {
case "join_partner":
cfg.Source = "创业实验-创业合伙"
cfg.Tags = "创业合伙,创业伙伴"
case "join_investor":
cfg.Source = "创业实验-资源对接"
cfg.Tags = "资源对接,资源群"
case "join_mentor":
cfg.Source = "创业实验-导师顾问"
cfg.Tags = "导师顾问,咨询服务"
case "join_team":
cfg.Source = "创业实验-团队招募"
cfg.Tags = "切片团队,团队招募"
case "match":
cfg.Source = "创业实验-找伙伴匹配"
cfg.Tags = "找伙伴"
cfg.SiteTags = "创业实验APP,匹配用户"
case "lead":
cfg.Source = "小程序-链接卡若"
cfg.Tags = "链接卡若,创业实验"
cfg.SiteTags = "创业实验APP,链接卡若"
}
return cfg
}
func getCKBConfigPayload() CKBConfigPayload {
payload := CKBConfigPayload{
Routes: map[string]CKBRouteConfig{},
}
var cfg model.SystemConfig
if err := database.DB().Where("config_key = ?", "ckb_config").First(&cfg).Error; err != nil {
return
return payload
}
var m map[string]interface{}
if err := json.Unmarshal(cfg.ConfigValue, &m); err != nil {
return
}
if v, ok := m["apiKey"].(string); ok && strings.TrimSpace(v) != "" {
apiKey = strings.TrimSpace(v)
}
if v, ok := m["apiUrl"].(string); ok && strings.TrimSpace(v) != "" {
apiURL = strings.TrimSpace(v)
return payload
}
if v, ok := m["docNotes"].(string); ok {
docNotes = v
payload.DocNotes = v
}
return
if v, ok := m["docContent"].(string); ok {
payload.DocContent = v
}
if v, ok := m["apiKey"].(string); ok {
payload.APIKey = v
}
if v, ok := m["apiUrl"].(string); ok {
payload.APIURL = v
}
if routes, ok := m["routes"].(map[string]interface{}); ok {
for key, raw := range routes {
itemMap, ok := raw.(map[string]interface{})
if !ok {
continue
}
item := defaultCKBRouteConfig(key)
if v, ok := itemMap["apiUrl"].(string); ok && strings.TrimSpace(v) != "" {
item.APIURL = strings.TrimSpace(v)
}
if v, ok := itemMap["apiKey"].(string); ok && strings.TrimSpace(v) != "" {
item.APIKey = strings.TrimSpace(v)
}
if v, ok := itemMap["source"].(string); ok && strings.TrimSpace(v) != "" {
item.Source = strings.TrimSpace(v)
}
if v, ok := itemMap["tags"].(string); ok && strings.TrimSpace(v) != "" {
item.Tags = strings.TrimSpace(v)
}
if v, ok := itemMap["siteTags"].(string); ok && strings.TrimSpace(v) != "" {
item.SiteTags = strings.TrimSpace(v)
}
if v, ok := itemMap["notes"].(string); ok {
item.Notes = v
}
payload.Routes[key] = item
}
}
return payload
}
func getCKBRouteConfig(routeKey string) (cfg CKBRouteConfig, docNotes string, docContent string) {
cfg = defaultCKBRouteConfig(routeKey)
payload := getCKBConfigPayload()
docNotes = payload.DocNotes
docContent = payload.DocContent
if item, ok := payload.Routes[routeKey]; ok {
cfg = item
} else {
if strings.TrimSpace(payload.APIURL) != "" {
cfg.APIURL = strings.TrimSpace(payload.APIURL)
}
if strings.TrimSpace(payload.APIKey) != "" {
cfg.APIKey = strings.TrimSpace(payload.APIKey)
}
}
return cfg, docNotes, docContent
}
// ckbSign 与 next-project app/api/ckb/join 一致:排除 sign/apiKey/portrait空值跳过按键升序拼接值MD5(拼接串) 再 MD5(结果+apiKey)