Merge branch 'develop' of gitee.com:fusenpack/fusenapi into develop
This commit is contained in:
commit
85f7dcdffb
|
@ -23,8 +23,8 @@ func (pt *FsProductTemplateTagsModel) FindOne(ctx context.Context, id int64, fie
|
||||||
err = db.Take(&resp).Error
|
err = db.Take(&resp).Error
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
func (pt *FsProductTemplateTagsModel) GetList(ctx context.Context, page, limit int, isHide, status int64, orderBy string) (resp []FsProductTemplateTags, err error) {
|
func (pt *FsProductTemplateTagsModel) GetList(ctx context.Context, page, limit int, status int64, orderBy string) (resp []FsProductTemplateTags, err error) {
|
||||||
db := pt.db.WithContext(ctx).Model(&FsProductTemplateTags{}).Where("`is_hide` = ? and `status` = ?", isHide, status)
|
db := pt.db.WithContext(ctx).Model(&FsProductTemplateTags{}).Where(" `status` = ?", status)
|
||||||
if orderBy != "" {
|
if orderBy != "" {
|
||||||
db = db.Order(orderBy)
|
db = db.Order(orderBy)
|
||||||
}
|
}
|
||||||
|
@ -32,11 +32,11 @@ func (pt *FsProductTemplateTagsModel) GetList(ctx context.Context, page, limit i
|
||||||
err = db.Offset(offset).Limit(limit).Find(&resp).Error
|
err = db.Offset(offset).Limit(limit).Find(&resp).Error
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
func (pt *FsProductTemplateTagsModel) GetListByTagNames(ctx context.Context, tagNames []string, limit int, isHide, status int64, orderBy string) (resp []FsProductTemplateTags, err error) {
|
func (pt *FsProductTemplateTagsModel) GetListByTagNames(ctx context.Context, tagNames []string, limit int, status int64, orderBy string) (resp []FsProductTemplateTags, err error) {
|
||||||
if len(tagNames) == 0 {
|
if len(tagNames) == 0 {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
db := pt.db.WithContext(ctx).Model(&FsProductTemplateTags{}).Where("`template_tag` in (?) and `is_hide` = ? and `status` = ?", tagNames, isHide, status)
|
db := pt.db.WithContext(ctx).Model(&FsProductTemplateTags{}).Where("`template_tag` in (?) and `status` = ?", tagNames, status)
|
||||||
if orderBy != "" {
|
if orderBy != "" {
|
||||||
db = db.Order(orderBy)
|
db = db.Order(orderBy)
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,8 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"fusenapi/server/fssql"
|
|
||||||
"fusenapi/utils/auth"
|
"fusenapi/utils/auth"
|
||||||
|
"fusenapi/utils/fssql"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
@ -204,7 +204,7 @@ func (u *FsUserModel) RegisterByFusen(ctx context.Context, token *auth.RegisterT
|
||||||
|
|
||||||
// txUserInfo.Where("user_id = ?", user.Id).Row().Err()
|
// txUserInfo.Where("user_id = ?", user.Id).Row().Err()
|
||||||
|
|
||||||
now := time.Now()
|
now := time.Now().UTC()
|
||||||
uinfo := &FsUserInfo{
|
uinfo := &FsUserInfo{
|
||||||
Module: FsString("profile"),
|
Module: FsString("profile"),
|
||||||
UserId: &user.Id,
|
UserId: &user.Id,
|
||||||
|
@ -218,21 +218,17 @@ func (u *FsUserModel) RegisterByFusen(ctx context.Context, token *auth.RegisterT
|
||||||
// txUserInfo.Statement.Table
|
// txUserInfo.Statement.Table
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
||||||
if err == gorm.ErrRecordNotFound {
|
if err == gorm.ErrRecordNotFound {
|
||||||
err = txUserInfo.Create(uinfo).Error
|
err = txUserInfo.Create(uinfo).Error
|
||||||
if err == gorm.ErrRecordNotFound {
|
if err == gorm.ErrRecordNotFound {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
err = fssql.MetadataModulePATCH(txUserInfo, "profile", FsUserInfo{}, metadata, "user_id = ?", *uinfo.UserId)
|
||||||
err = fssql.MetadataPATCH(txUserInfo, "profile", FsUser{}, metadata, "user_id = ?", *uinfo.UserId)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
|
|
@ -89,10 +89,11 @@ func (l *UserGoogleLoginLogic) UserGoogleLogin(req *types.RequestGoogleLogin, us
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
return resp.SetStatus(basic.CodeOK)
|
return resp.SetStatus(basic.CodeOK)
|
||||||
}
|
}
|
||||||
|
gemail := gresult.Get("email").String()
|
||||||
l.registerInfo = &auth.RegisterToken{
|
l.registerInfo = &auth.RegisterToken{
|
||||||
Password: base64.RawURLEncoding.EncodeToString(nonce),
|
Password: base64.RawURLEncoding.EncodeToString(nonce),
|
||||||
Platform: string(auth.PLATFORM_GOOGLE),
|
Platform: string(auth.PLATFORM_GOOGLE),
|
||||||
|
Email: gemail,
|
||||||
OperateType: auth.OpTypeRegister,
|
OperateType: auth.OpTypeRegister,
|
||||||
TraceId: uuid.NewString(),
|
TraceId: uuid.NewString(),
|
||||||
CreateAt: time.Now().UTC(),
|
CreateAt: time.Now().UTC(),
|
||||||
|
@ -110,8 +111,7 @@ func (l *UserGoogleLoginLogic) UserGoogleLogin(req *types.RequestGoogleLogin, us
|
||||||
return resp.SetStatus(basic.CodeOAuthRegisterTokenErr)
|
return resp.SetStatus(basic.CodeOAuthRegisterTokenErr)
|
||||||
}
|
}
|
||||||
l.registerToken = token
|
l.registerToken = token
|
||||||
l.defaultEmail = gresult.Get("email").String()
|
l.defaultEmail = gemail
|
||||||
|
|
||||||
return resp.SetStatus(basic.CodeOK)
|
return resp.SetStatus(basic.CodeOK)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ func (l *UserGoogleLoginLogic) AfterLogic(w http.ResponseWriter, r *http.Request
|
||||||
l.token,
|
l.token,
|
||||||
l.isRegistered,
|
l.isRegistered,
|
||||||
l.registerToken,
|
l.registerToken,
|
||||||
l.registerInfo.Email,
|
l.defaultEmail,
|
||||||
)
|
)
|
||||||
|
|
||||||
html := fmt.Sprintf(`
|
html := fmt.Sprintf(`
|
||||||
|
|
|
@ -50,7 +50,7 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu
|
||||||
//白板用户
|
//白板用户
|
||||||
if !userinfo.IsUser() && !userinfo.IsGuest() {
|
if !userinfo.IsUser() && !userinfo.IsGuest() {
|
||||||
// 返回固定模板标签列表
|
// 返回固定模板标签列表
|
||||||
productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetList(l.ctx, 1, req.Limit, 0, 1, "`id` DESC")
|
productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetListByTagNames(l.ctx, []string{"A1a"}, req.Limit, 1, "`id` DESC")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get template tags")
|
return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get template tags")
|
||||||
|
@ -63,8 +63,8 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get ai recommend product template tag list")
|
return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get ai recommend product template tag list")
|
||||||
}
|
}
|
||||||
// 返回固定模板标签列表
|
// 返回固定模板A1a
|
||||||
productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetList(l.ctx, 1, req.Limit, 0, 1, "`id` DESC")
|
productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetListByTagNames(l.ctx, []string{"A1a"}, req.Limit, 1, "`id` DESC")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get template tags")
|
return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get template tags")
|
||||||
|
@ -72,8 +72,8 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu
|
||||||
} else {
|
} else {
|
||||||
//元数据是空的
|
//元数据是空的
|
||||||
if userMaterial.Metadata == nil {
|
if userMaterial.Metadata == nil {
|
||||||
// 返回固定模板标签列表
|
// 返回固定模板A1a
|
||||||
productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetList(l.ctx, 1, req.Limit, 0, 1, "`id` DESC")
|
productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetListByTagNames(l.ctx, []string{"A1a"}, req.Limit, 1, "`id` DESC")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get template tags")
|
return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get template tags")
|
||||||
|
@ -81,7 +81,7 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu
|
||||||
} else {
|
} else {
|
||||||
//解析元数据
|
//解析元数据
|
||||||
var metaData map[string]interface{}
|
var metaData map[string]interface{}
|
||||||
if err = json.Unmarshal([]byte(*userMaterial.Metadata), &metaData); err != nil {
|
if err = json.Unmarshal(*userMaterial.Metadata, &metaData); err != nil {
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
return resp.SetStatusWithMessage(basic.CodeJsonErr, "failed to parse user metadata")
|
return resp.SetStatusWithMessage(basic.CodeJsonErr, "failed to parse user metadata")
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ func (l *GetProductTemplateTagsLogic) GetProductTemplateTags(req *types.GetProdu
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
return resp.SetStatusWithMessage(basic.CodeJsonErr, "invalid format of metadata`s template_tagid")
|
return resp.SetStatusWithMessage(basic.CodeJsonErr, "invalid format of metadata`s template_tagid")
|
||||||
}
|
}
|
||||||
productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetListByTagNames(l.ctx, templateTagNameList, req.Limit, 0, 1, "id DESC")
|
productTemplateTags, err = l.svcCtx.AllModels.FsProductTemplateTags.GetListByTagNames(l.ctx, templateTagNameList, req.Limit, 1, "id DESC")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get template tags")
|
return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "failed to get template tags")
|
||||||
|
|
|
@ -105,14 +105,13 @@ func (l *GetTemplateByPidLogic) GetTemplateByPid(req *types.GetTemplateByPidReq,
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
return resp.SetStatusWithMessage(basic.CodeJsonErr, fmt.Sprintf("failed to parse json product template info(may be old data):%d", templateInfo.Id))
|
return resp.SetStatusWithMessage(basic.CodeJsonErr, fmt.Sprintf("failed to parse json product template info(may be old data):%d", templateInfo.Id))
|
||||||
}
|
}
|
||||||
//后台隐藏/显示信息(现在下面是写死了)
|
|
||||||
/*var switchInfo interface{}
|
|
||||||
if templateInfo.SwitchInfo != nil && *templateInfo.SwitchInfo != "" {
|
|
||||||
_ = json.Unmarshal([]byte(*templateInfo.SwitchInfo), &switchInfo)
|
|
||||||
}*/
|
|
||||||
modelInfo := modelList[modelIndex]
|
modelInfo := modelList[modelIndex]
|
||||||
mapKey := fmt.Sprintf("_%d", *modelInfo.SizeId)
|
mapKey := fmt.Sprintf("_%d", *modelInfo.SizeId)
|
||||||
rsp[mapKey] = template_switch_info.GetTemplateSwitchInfo(templateInfo.Id, *templateInfo.MaterialImg)
|
switchInfo, err := template_switch_info.GetTemplateSwitchInfo(templateInfo.Id, templateInfo.TemplateInfo, *templateInfo.MaterialImg)
|
||||||
|
if err != nil {
|
||||||
|
return resp.SetStatusWithMessage(basic.CodeServiceErr, err.Error())
|
||||||
|
}
|
||||||
|
rsp[mapKey] = switchInfo
|
||||||
}
|
}
|
||||||
return resp.SetStatusWithMessage(basic.CodeOK, "success", rsp)
|
return resp.SetStatusWithMessage(basic.CodeOK, "success", rsp)
|
||||||
}
|
}
|
||||||
|
|
|
@ -152,19 +152,26 @@ func (w *wsConnectItem) renderImage(data []byte) {
|
||||||
logx.Error("failed to get element ,", err)
|
logx.Error("failed to get element ,", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//获取模板开关信息并且对于没有默认值的给赋值默认值
|
//获取模板开关信息并且对于没有默认值的给赋值默认值(但凡DIY有一个是空的就要请求默认数据)
|
||||||
templateSwitchInfo := template_switch_info.GetTemplateSwitchInfo(productTemplate.Id, *productTemplate.MaterialImg)
|
if renderImageData.RenderData.Website == "" || renderImageData.RenderData.Phone == "" || renderImageData.RenderData.Address == "" || renderImageData.RenderData.Qrcode == "" {
|
||||||
if renderImageData.RenderData.Website == "" {
|
templateSwitchInfo, err := template_switch_info.GetTemplateSwitchInfo(productTemplate.Id, productTemplate.TemplateInfo, *productTemplate.MaterialImg)
|
||||||
renderImageData.RenderData.Website = templateSwitchInfo.MaterialData.Website.DefaultValue
|
if err != nil {
|
||||||
}
|
logx.Error(err)
|
||||||
if renderImageData.RenderData.Phone == "" {
|
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", err.Error(), renderImageData.RenderData.ProductId, w.userId, w.guestId, productTemplate.Id, model3dInfo.Id, productSize.Id, *productTemplate.ElementModelId)
|
||||||
renderImageData.RenderData.Phone = templateSwitchInfo.MaterialData.Phone.DefaultValue
|
return
|
||||||
}
|
}
|
||||||
if renderImageData.RenderData.Address == "" {
|
if renderImageData.RenderData.Website == "" {
|
||||||
renderImageData.RenderData.Address = templateSwitchInfo.MaterialData.Address.DefaultValue
|
renderImageData.RenderData.Website = templateSwitchInfo.MaterialData.Website.DefaultValue
|
||||||
}
|
}
|
||||||
if renderImageData.RenderData.Qrcode == "" {
|
if renderImageData.RenderData.Phone == "" {
|
||||||
renderImageData.RenderData.Qrcode = templateSwitchInfo.MaterialData.QRcode.DefaultValue
|
renderImageData.RenderData.Phone = templateSwitchInfo.MaterialData.Phone.DefaultValue
|
||||||
|
}
|
||||||
|
if renderImageData.RenderData.Address == "" {
|
||||||
|
renderImageData.RenderData.Address = templateSwitchInfo.MaterialData.Address.DefaultValue
|
||||||
|
}
|
||||||
|
if renderImageData.RenderData.Qrcode == "" {
|
||||||
|
renderImageData.RenderData.Qrcode = templateSwitchInfo.MaterialData.QRcode.DefaultValue
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//获取刀版图
|
//获取刀版图
|
||||||
combineReq := repositories.LogoCombineReq{
|
combineReq := repositories.LogoCombineReq{
|
||||||
|
@ -278,11 +285,11 @@ func (w *wsConnectItem) getProductRelateionInfo(renderImageData websocket_data.R
|
||||||
productTemplate, err = w.logic.svcCtx.AllModels.FsProductTemplateV2.FindOneCloudRenderByProductIdModelIdTemplateTag(w.logic.ctx, renderImageData.RenderData.ProductId, model3d.Id, renderImageData.RenderData.TemplateTag)
|
productTemplate, err = w.logic.svcCtx.AllModels.FsProductTemplateV2.FindOneCloudRenderByProductIdModelIdTemplateTag(w.logic.ctx, renderImageData.RenderData.ProductId, model3d.Id, renderImageData.RenderData.TemplateTag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "找不到对应开启云渲染的模板", renderImageData.RenderData.ProductId, w.userId, w.guestId, 0, model3d.Id, productSize.Id, 0)
|
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "找不到对应的模板", renderImageData.RenderData.ProductId, w.userId, w.guestId, 0, model3d.Id, productSize.Id, 0)
|
||||||
logx.Error("template info is not found")
|
logx.Error("template info is not found")
|
||||||
return nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
}
|
}
|
||||||
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "获取对应开启云渲染模板失败", renderImageData.RenderData.ProductId, w.userId, w.guestId, 0, model3d.Id, productSize.Id, 0)
|
w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "获取对应模板失败", renderImageData.RenderData.ProductId, w.userId, w.guestId, 0, model3d.Id, productSize.Id, 0)
|
||||||
logx.Error("failed to get template info:", err)
|
logx.Error("failed to get template info:", err)
|
||||||
return nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ import (
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// tableStructPointer 表结构 updateMetadata 可以是json的[]byte也可以结构体
|
// tableStructPointer 表结构 updateMetadata 可以是json的[]byte也可以结构体
|
||||||
func MetadataPATCH(tx *gorm.DB, module string, tableStructPointer any, updateMetadata any, WhereKeysCond string, value ...any) error {
|
func MetadataModulePATCH(tx *gorm.DB, module string, tableStructPointer any, updateMetadata any, WhereKeysCond string, values ...any) error {
|
||||||
stype := reflect.TypeOf(tableStructPointer)
|
stype := reflect.TypeOf(tableStructPointer)
|
||||||
if stype.Kind() == reflect.Pointer {
|
if stype.Kind() == reflect.Pointer {
|
||||||
stype = stype.Elem()
|
stype = stype.Elem()
|
||||||
|
@ -75,14 +75,73 @@ func MetadataPATCH(tx *gorm.DB, module string, tableStructPointer any, updateMet
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var values []any
|
var args []any
|
||||||
|
|
||||||
values = append(values, metadata, metadata)
|
args = append(args, metadata, metadata)
|
||||||
values = append(values, value...)
|
args = append(args, values...)
|
||||||
|
|
||||||
updatesql = fmt.Sprintf(updatesql, tx.NamingStrategy.TableName(stype.Name()), module, WhereKeysCond)
|
updatesql = fmt.Sprintf(updatesql, tx.NamingStrategy.TableName(stype.Name()), module, WhereKeysCond)
|
||||||
// logx.Error(updatesql)
|
// logx.Error(updatesql)
|
||||||
err = tx.Exec(updatesql, values).Error
|
err = tx.Exec(updatesql, args...).Error
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func MetadataResourcePATCH(tx *gorm.DB, rid string, updateMetadata any, values ...any) error {
|
||||||
|
// stype := reflect.TypeOf(tableStructPointer)
|
||||||
|
// if stype.Kind() == reflect.Pointer {
|
||||||
|
// stype = stype.Elem()
|
||||||
|
// }
|
||||||
|
|
||||||
|
var updatesql string
|
||||||
|
|
||||||
|
if len(values) == 0 {
|
||||||
|
updatesql = `UPDATE fs_resource
|
||||||
|
SET metadata = CASE
|
||||||
|
WHEN metadata IS NULL THEN ?
|
||||||
|
ELSE JSON_MERGE_PATCH(metadata, ?)
|
||||||
|
END
|
||||||
|
WHERE resource_id = '%s';`
|
||||||
|
} else {
|
||||||
|
cond, ok := values[0].(string)
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("values[0] must be wherecond")
|
||||||
|
}
|
||||||
|
updatesql = `UPDATE fs_resource
|
||||||
|
SET metadata = CASE
|
||||||
|
WHEN metadata IS NULL THEN ?
|
||||||
|
ELSE JSON_MERGE_PATCH(metadata, ?)
|
||||||
|
END
|
||||||
|
cond, ok := values[0].(string)
|
||||||
|
WHERE resource_id = '%s'` + " and " + cond + `;`
|
||||||
|
}
|
||||||
|
|
||||||
|
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 args []any
|
||||||
|
|
||||||
|
args = append(args, metadata, metadata)
|
||||||
|
args = append(args, values...)
|
||||||
|
|
||||||
|
updatesql = fmt.Sprintf(updatesql, rid)
|
||||||
|
// logx.Error(updatesql)
|
||||||
|
err = tx.Exec(updatesql, args...).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
28
utils/fssql/metadata_test.go
Normal file
28
utils/fssql/metadata_test.go
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
package fssql_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fusenapi/initalize"
|
||||||
|
"fusenapi/model/gmodel"
|
||||||
|
"fusenapi/utils/fssql"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCase1(t *testing.T) {
|
||||||
|
u := gmodel.UserProfile{
|
||||||
|
FirstName: "h",
|
||||||
|
LastName: "sm",
|
||||||
|
}
|
||||||
|
|
||||||
|
conn := initalize.InitMysql("fsreaderwriter:XErSYmLELKMnf3Dh@tcp(fusen.cdmigcvz3rle.us-east-2.rds.amazonaws.com:3306)/fusen")
|
||||||
|
err := fssql.MetadataModulePATCH(conn, "logo", gmodel.FsChangeCode{}, u, "id = ?", 6)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = fssql.MetadataResourcePATCH(conn,
|
||||||
|
"f8932c0379fa5aa3397dc0a963696ca90536cc273ea10119b0137fd15ecfe673", u)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,11 @@
|
||||||
package template_switch_info
|
package template_switch_info
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
)
|
||||||
|
|
||||||
type GetTemplateSwitchInfoRsp struct {
|
type GetTemplateSwitchInfoRsp struct {
|
||||||
Id int64 `json:"id"`
|
Id int64 `json:"id"`
|
||||||
Material string `json:"material"`
|
Material string `json:"material"`
|
||||||
|
@ -36,36 +42,72 @@ type Logo struct {
|
||||||
Material string `json:"material"`
|
Material string `json:"material"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 模板开关信息简单结构
|
||||||
|
type TemplateSimpleParseInfo struct {
|
||||||
|
MaterialList []MaterialItem `json:"materialList"`
|
||||||
|
}
|
||||||
|
type MaterialItem struct {
|
||||||
|
Type string `json:"type"`
|
||||||
|
Tag string `json:"tag"`
|
||||||
|
Visible bool `json:"visible"`
|
||||||
|
Text string `json:"text"`
|
||||||
|
}
|
||||||
|
|
||||||
// 获取模板开关信息(目前写死,以后后台做好了功能再更新变动)
|
// 获取模板开关信息(目前写死,以后后台做好了功能再更新变动)
|
||||||
func GetTemplateSwitchInfo(templateId int64, templateMaterialImg string) GetTemplateSwitchInfoRsp {
|
func GetTemplateSwitchInfo(templateId int64, templateJsonStr *string, templateMaterialImg string) (resp GetTemplateSwitchInfoRsp, err error) {
|
||||||
return GetTemplateSwitchInfoRsp{
|
if templateJsonStr == nil || *templateJsonStr == "" {
|
||||||
|
return GetTemplateSwitchInfoRsp{}, nil
|
||||||
|
}
|
||||||
|
var templateJsonInfo TemplateSimpleParseInfo
|
||||||
|
if err = json.Unmarshal([]byte(*templateJsonStr), &templateJsonInfo); err != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
return GetTemplateSwitchInfoRsp{}, errors.New("解析模板json获取DIY开关设置失败")
|
||||||
|
}
|
||||||
|
mapSwitchInfo := GetTemplateSwitchInfoRsp{
|
||||||
Id: templateId,
|
Id: templateId,
|
||||||
Material: templateMaterialImg,
|
Material: templateMaterialImg,
|
||||||
MaterialData: MaterialData{
|
MaterialData: MaterialData{
|
||||||
QRcode: QRcode{
|
|
||||||
IfShow: true,
|
|
||||||
Text: "qrcode",
|
|
||||||
DefaultValue: "default qrcode",
|
|
||||||
},
|
|
||||||
Website: Website{
|
|
||||||
IfShow: true,
|
|
||||||
Text: "website",
|
|
||||||
DefaultValue: "default website",
|
|
||||||
},
|
|
||||||
Address: Address{
|
|
||||||
IfShow: true,
|
|
||||||
Text: "address",
|
|
||||||
DefaultValue: "default address",
|
|
||||||
},
|
|
||||||
Phone: Phone{
|
|
||||||
IfShow: true,
|
|
||||||
Text: "phone",
|
|
||||||
DefaultValue: "17557283679",
|
|
||||||
},
|
|
||||||
Logo: Logo{
|
Logo: Logo{
|
||||||
Material: "/image/logo/aHnT1_rzubdwax_scale.png",
|
Material: "/image/logo/aHnT1_rzubdwax_scale.png",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
for _, v := range templateJsonInfo.MaterialList {
|
||||||
|
if v.Type == "combine" && !v.Visible {
|
||||||
|
return GetTemplateSwitchInfoRsp{
|
||||||
|
MaterialData: MaterialData{
|
||||||
|
Logo: Logo{
|
||||||
|
Material: "/image/logo/aHnT1_rzubdwax_scale.png",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
switch v.Tag {
|
||||||
|
case "Phone": //电话
|
||||||
|
mapSwitchInfo.MaterialData.Phone = Phone{
|
||||||
|
IfShow: v.Visible,
|
||||||
|
Text: v.Text,
|
||||||
|
DefaultValue: "xxx xxx xxx xxxx",
|
||||||
|
}
|
||||||
|
case "Address": //地址
|
||||||
|
mapSwitchInfo.MaterialData.Address = Address{
|
||||||
|
IfShow: v.Visible,
|
||||||
|
Text: v.Text,
|
||||||
|
DefaultValue: "USA",
|
||||||
|
}
|
||||||
|
case "Website":
|
||||||
|
mapSwitchInfo.MaterialData.Website = Website{
|
||||||
|
IfShow: v.Visible,
|
||||||
|
Text: v.Text,
|
||||||
|
DefaultValue: "https://www.xxxxxx.com",
|
||||||
|
}
|
||||||
|
case "QRcode":
|
||||||
|
mapSwitchInfo.MaterialData.QRcode = QRcode{
|
||||||
|
IfShow: v.Visible,
|
||||||
|
Text: v.Text,
|
||||||
|
DefaultValue: "xxxxxxx",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return mapSwitchInfo, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user