Merge branch 'develop' of gitee.com:fusenpack/fusenapi into develop
This commit is contained in:
commit
48a6ae9888
|
@ -5,6 +5,7 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"fusenapi/server/fssql"
|
||||||
"fusenapi/utils/auth"
|
"fusenapi/utils/auth"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -213,7 +214,7 @@ func (u *FsUserModel) RegisterByFusen(ctx context.Context, token *auth.RegisterT
|
||||||
Utime: &now,
|
Utime: &now,
|
||||||
}
|
}
|
||||||
|
|
||||||
err = txUserInfo.Where("user_id = ?", uinfo.UserId).Take(nil).Error
|
err = txUserInfo.Where("module = 'profile' and user_id = ?", uinfo.UserId).Take(nil).Error
|
||||||
// txUserInfo.Statement.Table
|
// txUserInfo.Statement.Table
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -224,19 +225,14 @@ func (u *FsUserModel) RegisterByFusen(ctx context.Context, token *auth.RegisterT
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
updatesql := `UPDATE %s
|
|
||||||
SET metadata = CASE
|
err = fssql.MetadataPATCH(txUserInfo, "profile", FsUser{}, metadata, "user_id = ?", *uinfo.UserId)
|
||||||
WHEN metadata IS NULL THEN ?
|
|
||||||
ELSE JSON_MERGE_PATCH(metadata, ?)
|
|
||||||
END
|
|
||||||
WHERE id = ?;`
|
|
||||||
updatesql = fmt.Sprintf(updatesql, txUserInfo.Statement.Table)
|
|
||||||
logx.Error(updatesql)
|
|
||||||
err = txUserInfo.Raw(updatesql, metadata, metadata, uinfo.UserId).Error
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
|
|
@ -111,7 +111,7 @@ func (l *UserEmailConfirmationLogic) UserEmailConfirmation(req *types.RequestEma
|
||||||
return resp.SetStatusWithMessage(basic.CodeOAuthConfirmationTimeoutErr, "Verification links expire after 30 minute.")
|
return resp.SetStatusWithMessage(basic.CodeOAuthConfirmationTimeoutErr, "Verification links expire after 30 minute.")
|
||||||
}
|
}
|
||||||
|
|
||||||
logx.Error(token.Platform)
|
// logx.Error(token.Platform)
|
||||||
switch token.Platform {
|
switch token.Platform {
|
||||||
case string(auth.PLATFORM_GOOGLE):
|
case string(auth.PLATFORM_GOOGLE):
|
||||||
// 谷歌平台的注册流程
|
// 谷歌平台的注册流程
|
||||||
|
|
|
@ -2,12 +2,16 @@ package logic
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"fusenapi/initalize"
|
||||||
|
"fusenapi/model/gmodel"
|
||||||
"fusenapi/utils/wevent"
|
"fusenapi/utils/wevent"
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/smtp"
|
"net/smtp"
|
||||||
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/474420502/requests"
|
"github.com/474420502/requests"
|
||||||
|
@ -130,3 +134,41 @@ func TestSender(t *testing.T) {
|
||||||
log.Println(result)
|
log.Println(result)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSql(t *testing.T) {
|
||||||
|
|
||||||
|
type MetaData struct {
|
||||||
|
Key string `gorm:"key" json:"key"`
|
||||||
|
Test string `gorm:"test" json:"test"`
|
||||||
|
}
|
||||||
|
|
||||||
|
conn := initalize.InitMysql("fsreaderwriter:XErSYmLELKMnf3Dh@tcp(fusen.cdmigcvz3rle.us-east-2.rds.amazonaws.com:3306)/fusen")
|
||||||
|
log.Println(conn.Model(&gmodel.FsUser{}))
|
||||||
|
|
||||||
|
log.Println(conn.NamingStrategy.TableName(reflect.TypeOf(gmodel.FsUser{}).Name()))
|
||||||
|
updatesql := `UPDATE %s
|
||||||
|
SET metadata = CASE
|
||||||
|
WHEN metadata IS NULL THEN ?
|
||||||
|
ELSE JSON_MERGE_PATCH(metadata, ?)
|
||||||
|
END
|
||||||
|
WHERE id = ?;`
|
||||||
|
|
||||||
|
metadata := &MetaData{
|
||||||
|
Key: "mkey",
|
||||||
|
Test: "testv",
|
||||||
|
}
|
||||||
|
data, err := json.Marshal(metadata)
|
||||||
|
if err != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
updatesql = fmt.Sprintf(updatesql, "fusen.fs_change_code")
|
||||||
|
log.Println(updatesql)
|
||||||
|
err = conn.Exec(updatesql, data, data, 6).Error
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
91
server/fssql/metadata.go
Normal file
91
server/fssql/metadata.go
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
package fssql
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
// func MetadataPATCH(tx *gorm.DB, module string, tableStructPointer any, updateMetadata any, rawID int64) error {
|
||||||
|
// stype := reflect.TypeOf(tableStructPointer)
|
||||||
|
// if stype.Kind() == reflect.Pointer {
|
||||||
|
// stype = stype.Elem()
|
||||||
|
// }
|
||||||
|
|
||||||
|
// updatesql := `UPDATE %s
|
||||||
|
// SET metadata = CASE
|
||||||
|
// WHEN metadata IS NULL THEN ?
|
||||||
|
// ELSE JSON_MERGE_PATCH(metadata, ?)
|
||||||
|
// END
|
||||||
|
// WHERE module = '%s' and id = ?;`
|
||||||
|
|
||||||
|
// var err error
|
||||||
|
// var metadata []byte
|
||||||
|
|
||||||
|
// switch mdata := updateMetadata.(type) {
|
||||||
|
// case []byte:
|
||||||
|
// metadata = mdata
|
||||||
|
// case string:
|
||||||
|
// metadata = []byte(mdata)
|
||||||
|
// default:
|
||||||
|
// metadata, err = json.Marshal(updateMetadata)
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// updatesql = fmt.Sprintf(updatesql, tx.NamingStrategy.TableName(stype.Name()), module)
|
||||||
|
// logx.Error(updatesql)
|
||||||
|
// err = tx.Exec(updatesql, metadata, metadata, rawID).Error
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return nil
|
||||||
|
// }
|
||||||
|
|
||||||
|
// tableStructPointer 表结构 updateMetadata 可以是json的[]byte也可以结构体
|
||||||
|
func MetadataPATCH(tx *gorm.DB, module string, tableStructPointer any, updateMetadata any, WhereKeysCond string, value ...any) error {
|
||||||
|
stype := reflect.TypeOf(tableStructPointer)
|
||||||
|
if stype.Kind() == reflect.Pointer {
|
||||||
|
stype = stype.Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
updatesql := `UPDATE %s
|
||||||
|
SET metadata = CASE
|
||||||
|
WHEN metadata IS NULL THEN ?
|
||||||
|
ELSE JSON_MERGE_PATCH(metadata, ?)
|
||||||
|
END
|
||||||
|
WHERE module = '%s' and %s;`
|
||||||
|
|
||||||
|
var err error
|
||||||
|
var metadata []byte
|
||||||
|
|
||||||
|
switch mdata := updateMetadata.(type) {
|
||||||
|
case []byte:
|
||||||
|
metadata = mdata
|
||||||
|
case string:
|
||||||
|
metadata = []byte(mdata)
|
||||||
|
default:
|
||||||
|
metadata, err = json.Marshal(updateMetadata)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var values []any
|
||||||
|
|
||||||
|
values = append(values, metadata, metadata)
|
||||||
|
values = append(values, value...)
|
||||||
|
|
||||||
|
updatesql = fmt.Sprintf(updatesql, tx.NamingStrategy.TableName(stype.Name()), module, WhereKeysCond)
|
||||||
|
// logx.Error(updatesql)
|
||||||
|
err = tx.Exec(updatesql, values).Error
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user