重构匹配页面,通过新增登录和手机号绑定模态窗口来提升用户体验。在添加好友前,增加了通过微信和手机号绑定登录的功能。更新了API配置,并调整了用户联系信息的本地存储处理方式。改进了模态窗口的用户界面元素,并确保用户交互的数据流正确。
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"crypto/md5"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"sort"
|
||||
@@ -20,6 +21,7 @@ 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": "创业合伙,创业伙伴"}
|
||||
|
||||
// ckbSign 与 next-project app/api/ckb/join 一致:排除 sign/apiKey/portrait,空值跳过,按键升序拼接值,MD5(拼接串) 再 MD5(结果+apiKey)
|
||||
func ckbSign(params map[string]interface{}, apiKey string) string {
|
||||
keys := make([]string, 0, len(params))
|
||||
for k := range params {
|
||||
@@ -35,13 +37,16 @@ func ckbSign(params map[string]interface{}, apiKey string) string {
|
||||
sort.Strings(keys)
|
||||
var concat string
|
||||
for _, k := range keys {
|
||||
switch v := params[k].(type) {
|
||||
v := params[k]
|
||||
switch val := v.(type) {
|
||||
case string:
|
||||
concat += v
|
||||
concat += val
|
||||
case float64:
|
||||
concat += strconv.FormatFloat(v, 'f', -1, 64)
|
||||
concat += strconv.FormatFloat(val, 'f', -1, 64)
|
||||
case int:
|
||||
concat += strconv.Itoa(v)
|
||||
concat += strconv.Itoa(val)
|
||||
case int64:
|
||||
concat += strconv.FormatInt(val, 10)
|
||||
default:
|
||||
concat += ""
|
||||
}
|
||||
@@ -55,12 +60,14 @@ func ckbSign(params map[string]interface{}, apiKey string) string {
|
||||
// CKBJoin POST /api/ckb/join
|
||||
func CKBJoin(c *gin.Context) {
|
||||
var body struct {
|
||||
Type string `json:"type" binding:"required"`
|
||||
Phone string `json:"phone"`
|
||||
Wechat string `json:"wechat"`
|
||||
Name string `json:"name"`
|
||||
UserID string `json:"userId"`
|
||||
Remark string `json:"remark"`
|
||||
Type string `json:"type" binding:"required"`
|
||||
Phone string `json:"phone"`
|
||||
Wechat string `json:"wechat"`
|
||||
Name string `json:"name"`
|
||||
UserID string `json:"userId"`
|
||||
Remark string `json:"remark"`
|
||||
CanHelp string `json:"canHelp"` // 资源对接:我能帮到你什么
|
||||
NeedHelp string `json:"needHelp"` // 资源对接:我需要什么帮助
|
||||
}
|
||||
if err := c.ShouldBindJSON(&body); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"success": false, "message": "请提供手机号或微信号"})
|
||||
@@ -83,7 +90,11 @@ func CKBJoin(c *gin.Context) {
|
||||
"remark": body.Remark,
|
||||
}
|
||||
if body.Remark == "" {
|
||||
params["remark"] = "用户通过创业实验APP申请" + ckbSourceMap[body.Type]
|
||||
remark := "用户通过创业实验APP申请" + ckbSourceMap[body.Type]
|
||||
if body.Type == "investor" && (body.CanHelp != "" || body.NeedHelp != "") {
|
||||
remark = fmt.Sprintf("能帮:%s 需要:%s", body.CanHelp, body.NeedHelp)
|
||||
}
|
||||
params["remark"] = remark
|
||||
}
|
||||
if body.Phone != "" {
|
||||
params["phone"] = body.Phone
|
||||
@@ -96,14 +107,23 @@ func CKBJoin(c *gin.Context) {
|
||||
}
|
||||
params["apiKey"] = ckbAPIKey
|
||||
params["sign"] = ckbSign(params, ckbAPIKey)
|
||||
sourceData := map[string]interface{}{
|
||||
"joinType": body.Type, "joinLabel": ckbSourceMap[body.Type], "userId": body.UserID,
|
||||
"device": "webapp", "timestamp": time.Now().Format(time.RFC3339),
|
||||
}
|
||||
if body.Type == "investor" {
|
||||
if body.CanHelp != "" {
|
||||
sourceData["canHelp"] = body.CanHelp
|
||||
}
|
||||
if body.NeedHelp != "" {
|
||||
sourceData["needHelp"] = body.NeedHelp
|
||||
}
|
||||
}
|
||||
params["portrait"] = map[string]interface{}{
|
||||
"type": 4, "source": 0,
|
||||
"sourceData": map[string]interface{}{
|
||||
"joinType": body.Type, "joinLabel": ckbSourceMap[body.Type], "userId": body.UserID,
|
||||
"device": "webapp", "timestamp": time.Now().Format(time.RFC3339),
|
||||
},
|
||||
"remark": ckbSourceMap[body.Type] + "申请",
|
||||
"uniqueId": "soul_" + body.Phone + body.Wechat + strconv.FormatInt(ts, 10),
|
||||
"sourceData": sourceData,
|
||||
"remark": ckbSourceMap[body.Type] + "申请",
|
||||
"uniqueId": "soul_" + body.Phone + body.Wechat + strconv.FormatInt(ts, 10),
|
||||
}
|
||||
raw, _ := json.Marshal(params)
|
||||
resp, err := http.Post(ckbAPIURL, "application/json", bytes.NewReader(raw))
|
||||
@@ -127,7 +147,14 @@ func CKBJoin(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"success": true, "message": msg, "data": result.Data})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{"success": false, "message": result.Message})
|
||||
errMsg := result.Message
|
||||
if errMsg == "" {
|
||||
errMsg = "加入失败,请稍后重试"
|
||||
}
|
||||
// 打印 CKB 原始响应便于排查
|
||||
fmt.Printf("[CKBJoin] 失败 type=%s wechat=%s code=%d message=%s raw=%s\n",
|
||||
body.Type, body.Wechat, result.Code, result.Message, string(b))
|
||||
c.JSON(http.StatusOK, gin.H{"success": false, "message": errMsg})
|
||||
}
|
||||
|
||||
// CKBMatch POST /api/ckb/match
|
||||
|
||||
Reference in New Issue
Block a user