diff --git a/goctl_template/api/etc.tpl b/goctl_template/api/etc.tpl index c9ae2595..d2c383f3 100644 --- a/goctl_template/api/etc.tpl +++ b/goctl_template/api/etc.tpl @@ -1,7 +1,7 @@ Name: {{.serviceName}} Host: {{.host}} Port: {{.port}} -DataSource: "" +SourceMysql: "" Auth: AccessSecret: fusen2023 AccessExpire: 604800 diff --git a/server/home-user-auth/internal/logic/userbasicinfologic.go b/server/home-user-auth/internal/logic/userbasicinfologic.go index 1bb556ac..db9c3de7 100644 --- a/server/home-user-auth/internal/logic/userbasicinfologic.go +++ b/server/home-user-auth/internal/logic/userbasicinfologic.go @@ -42,12 +42,12 @@ func (l *UserBasicInfoLogic) UserBasicInfo(req *types.Request, userinfo *auth.Us return resp.SetStatus(basic.CodeOK, types.DataUserBasicInfo{ Type: *user.Type, - IsOrderStatusEmail: *user.IsOrderStatusEmail > 0, - IsEmailAdvertisement: *user.IsEmailAdvertisement > 0, - IsOrderStatusPhone: *user.IsOrderStatusPhone > 0, - IsPhoneAdvertisement: *user.IsPhoneAdvertisement > 0, - IsOpenRender: *user.IsOpenRender > 0, - IsLowRendering: *user.IsLowRendering > 0, - IsRemoveBg: *user.IsRemoveBg > 0, + IsOrderStatusEmail: *user.IsOrderStatusEmail, + IsEmailAdvertisement: *user.IsEmailAdvertisement, + IsOrderStatusPhone: *user.IsOrderStatusPhone, + IsPhoneAdvertisement: *user.IsPhoneAdvertisement, + IsOpenRender: *user.IsOpenRender, + IsLowRendering: *user.IsLowRendering, + IsRemoveBg: *user.IsRemoveBg, }) } diff --git a/server/home-user-auth/internal/logic/userfontslogic.go b/server/home-user-auth/internal/logic/userfontslogic.go index 95bd243f..268d0e7d 100644 --- a/server/home-user-auth/internal/logic/userfontslogic.go +++ b/server/home-user-auth/internal/logic/userfontslogic.go @@ -31,7 +31,7 @@ func (l *UserFontsLogic) UserFonts(req *types.Request, userinfo *auth.UserInfo) data, err := gmodel.NewFsFontModel(l.svcCtx.MysqlConn).FindAllOrderSortByDesc(l.ctx) if err != gorm.ErrRecordNotFound && err != nil { logx.Error(err) - return resp.SetStatus(basic.CodeOK, data) + return resp.SetStatus(basic.CodeOK) } - return resp.SetStatus(basic.CodeOK) + return resp.SetStatus(basic.CodeOK, data) } diff --git a/server/home-user-auth/internal/types/types.go b/server/home-user-auth/internal/types/types.go index fab02937..d4a494ee 100644 --- a/server/home-user-auth/internal/types/types.go +++ b/server/home-user-auth/internal/types/types.go @@ -9,19 +9,19 @@ type Request struct { } type RequestBasicInfoForm struct { - FirstName string `form:"first_name,optional" db:"first_name"` // FirstName - LastName string `form:"last_name,optional" db:"last_name"` // LastName - Company string `form:"company,optional" db:"company"` // 公司名称 - Mobile string `form:"mobile,optional" db:"mobile"` // 手机号码 - Email string `form:"email" db:"email"` // 邮箱 - Type int64 `form:"type,optional" db:"type"` // 1正常 0不正常 - IsOrderStatusEmail int64 `form:"is_order_status_email,optional" db:"is_order_status_email"` // 订单状态改变时是否接收邮件 - IsEmailAdvertisement int64 `form:"is_email_advertisement,optional" db:"is_email_advertisement"` // 是否接收邮件广告 - IsOrderStatusPhone int64 `form:"is_order_status_phone,optional" db:"is_order_status_phone"` // 订单状态改变是是否接收电话 - IsPhoneAdvertisement int64 `form:"is_phone_advertisement,optional" db:"is_phone_advertisement"` // 是否接收短信广告 - IsOpenRender int64 `form:"is_open_render,optional" db:"is_open_render"` // 是否打开个性化渲染(1:开启,0:关闭) - IsLowRendering int64 `form:"is_low_rendering,optional" db:"is_low_rendering"` // 是否开启低渲染模型渲染 - IsRemoveBg int64 `form:"is_remove_bg,optional" db:"is_remove_bg"` // 用户上传logo是否去除背景 + FirstName string `json:"first_name"` // FirstName + LastName string `json:"last_name"` // LastName + Company string `json:"company"` // 公司名称 + Mobile string `json:"mobile"` // 手机号码 + Email string `json:"email"` // 邮箱 + Type int64 `json:"type"` // 1正常 0不正常 + IsOrderStatusEmail int64 `json:"is_order_status_email"` // 订单状态改变时是否接收邮件 + IsEmailAdvertisement int64 `json:"is_email_advertisement"` // 是否接收邮件广告 + IsOrderStatusPhone int64 `json:"is_order_status_phone"` // 订单状态改变是是否接收电话 + IsPhoneAdvertisement int64 `json:"is_phone_advertisement"` // 是否接收短信广告 + IsOpenRender int64 `json:"is_open_render"` // 是否打开个性化渲染(1:开启,0:关闭) + IsLowRendering int64 `json:"is_low_rendering"` // 是否开启低渲染模型渲染 + IsRemoveBg int64 `json:"is_remove_bg"` // 用户上传logo是否去除背景 } type RequestUserLogin struct { @@ -39,19 +39,19 @@ type DataGuest struct { type DataUserBasicInfo struct { Type int64 `json:"type"` // 1普通餐厅 2连锁餐厅 - IsOrderStatusEmail bool `json:"is_order_status_email"` // 订单状态改变时是否接收邮件 - IsEmailAdvertisement bool `json:"is_email_advertisement"` // 是否接收邮件广告 - IsOrderStatusPhone bool `json:"is_order_status_phone"` // 订单状态改变是是否接收电话 - IsPhoneAdvertisement bool `json:"is_phone_advertisement"` // 是否接收短信广告 - IsOpenRender bool `json:"is_open_render"` // 是否打开个性化渲染(1:开启,0:关闭) - IsThousandFace bool `json:"is_thousand_face"` // 是否已经存在千人千面(1:存在,0:不存在) - IsLowRendering bool `json:"is_low_rendering"` // 是否开启低渲染模型渲染 - IsRemoveBg bool `json:"is_remove_bg"` // 用户上传logo是否去除背景 + IsOrderStatusEmail int64 `json:"is_order_status_email"` // 订单状态改变时是否接收邮件 + IsEmailAdvertisement int64 `json:"is_email_advertisement"` // 是否接收邮件广告 + IsOrderStatusPhone int64 `json:"is_order_status_phone"` // 订单状态改变是是否接收电话 + IsPhoneAdvertisement int64 `json:"is_phone_advertisement"` // 是否接收短信广告 + IsOpenRender int64 `json:"is_open_render"` // 是否打开个性化渲染(1:开启,0:关闭) + IsThousandFace int64 `json:"is_thousand_face"` // 是否已经存在千人千面(1:存在,0:不存在) + IsLowRendering int64 `json:"is_low_rendering"` // 是否开启低渲染模型渲染 + IsRemoveBg int64 `json:"is_remove_bg"` // 用户上传logo是否去除背景 } type DataGetType struct { - Id int64 `db:"id" json:"key"` // ID - Name string `db:"name" json:"name"` // 餐厅名字 + Id int64 `json:"key"` // ID + Name string `json:"name"` // 餐厅名字 } type KeyName struct { @@ -77,18 +77,18 @@ type DataStatusConfig struct { } type DataAddressList struct { - Id int64 `db:"id"` - UserId int64 `db:"user_id"` // 用户ID - Name string `db:"name"` // 地址名称 - FirstName string `db:"first_name"` // FirstName - LastName string `db:"last_name"` // LastName - Mobile string `db:"mobile"` // 手机号码 - Street string `db:"street"` // 街道 - Suite string `db:"suite"` // 房号 - City string `db:"city"` // 城市 - State string `db:"state"` // 州名 - ZipCode string `db:"zip_code"` // 邮编 - IsDefault int64 `db:"is_default"` // 1默认地址,0非默认地址 + Id int64 `json:"id"` + UserId int64 `json:"user_id"` // 用户ID + Name string `json:"name"` // 地址名称 + FirstName string `json:"first_name"` // FirstName + LastName string `json:"last_name"` // LastName + Mobile string `json:"mobile"` // 手机号码 + Street string `json:"street"` // 街道 + Suite string `json:"suite"` // 房号 + City string `json:"city"` // 城市 + State string `json:"state"` // 州名 + ZipCode string `json:"zip_code"` // 邮编 + IsDefault int64 `json:"is_default"` // 1默认地址,0非默认地址 } type Response struct { diff --git a/server/home-user-auth/test/userfontslogic_test.go b/server/home-user-auth/test/userfontslogic_test.go index f1853533..cc60261f 100644 --- a/server/home-user-auth/test/userfontslogic_test.go +++ b/server/home-user-auth/test/userfontslogic_test.go @@ -9,6 +9,7 @@ import ( ) func TestCaseUserFontsLogic(t *testing.T) { + var err error var resp *requests.Response var result gjson.Result @@ -44,16 +45,23 @@ func TestCaseUserFontsLogic(t *testing.T) { } // 遍历每个元素,检查其 key 和 name 字段是否存在,并且值是否符合预期 - for i, item := range dataArray { - key := item.Get("key").Int() - name := item.Get("name").String() + for _, item := range dataArray { + // log.Println(item) - if key != int64(i+1) { - t.Errorf("Unexpected key value at index %d: %d", i, key) + if !item.Get("id").Exists() { + t.Error("id is not exists") } - - if len(name) == 0 { - t.Errorf("Missing name value at index %d", i) + if !item.Get("title").Exists() { + t.Error("title is not exists") + } + if !item.Get("linux_fontname").Exists() { + t.Error("linux_fontname is not exists") + } + if !item.Get("file_path").Exists() { + t.Error("file_path is not exists") + } + if !item.Get("sort").Exists() { + t.Error("sort is not exists") } } } diff --git a/server/home-user-auth/test/usersavebasicinfologic_test.go b/server/home-user-auth/test/usersavebasicinfologic_test.go new file mode 100644 index 00000000..030442f5 --- /dev/null +++ b/server/home-user-auth/test/usersavebasicinfologic_test.go @@ -0,0 +1,103 @@ +package logic + +import ( + "encoding/json" + "fmt" + "fusenapi/server/home-user-auth/internal/types" + "testing" + + "github.com/474420502/requests" + "github.com/tidwall/gjson" +) + +func TestCaseUserSaveBasicinfoLogic(t *testing.T) { + var err error + var resp *requests.Response + var result gjson.Result + + // 获取 session,并携带 JWT token + ses := GetSesssionWithUserToken(t, gserver) + var tp *requests.Temporary + + tp = ses.Get(fmt.Sprintf("http://%s:%d/user/basic-info", cnf.Host, cnf.Port)) + resp, err = tp.TestInServer(gserver) + if err != nil { + t.Error(err) + return + } + + req := types.RequestBasicInfoForm{} + + // log.Println(resp.Json().Get("data")) + + err = json.Unmarshal([]byte(resp.Json().Get("data").String()), &req) + if err != nil { + t.Error(err) + return + } + + IsOrderStatusEmail := req.IsOrderStatusEmail + IsEmailAdvertisement := req.IsEmailAdvertisement + IsOrderStatusPhone := req.IsOrderStatusPhone + IsOpenRender := req.IsOpenRender + IsLowRendering := req.IsLowRendering + IsRemoveBg := req.IsRemoveBg + + req.IsOrderStatusEmail = ^req.IsOrderStatusEmail + 2 + req.IsEmailAdvertisement = ^req.IsEmailAdvertisement + 2 + req.IsOrderStatusPhone = ^req.IsOrderStatusPhone + 2 + req.IsOpenRender = ^req.IsOpenRender + 2 + req.IsLowRendering = ^req.IsLowRendering + 2 + req.IsRemoveBg = ^req.IsRemoveBg + 2 + + // 向服务器发送 GET 请求,获取用户类型信息 + tp = ses.Post(fmt.Sprintf("http://%s:%d/user/basic-info", cnf.Host, cnf.Port)).SetBodyJson(req) + resp, err = tp.TestInServer(gserver) + if err != nil { + t.Error(err) + return + } + + // 使用 gjson 解析返回的 json 数据 + result = gjson.Parse(resp.ContentString()) + // log.Println(resp.ContentString()) + // 检查返回值中的 code 字段是否存在,并且值是否为 200 + code := result.Get("code").Int() + if code != 200 { + t.Errorf("Invalid code value: %d", code) + return + } + + tp = ses.Get(fmt.Sprintf("http://%s:%d/user/basic-info", cnf.Host, cnf.Port)) + resp, err = tp.TestInServer(gserver) + if err != nil { + t.Error(err) + return + } + + // log.Println(resp.ContentString()) + err = json.Unmarshal([]byte(resp.Json().Get("data").String()), &req) + if err != nil { + t.Error(err) + return + } + + if req.IsOrderStatusEmail != ^IsOrderStatusEmail+2 { + t.Error("IsOrderStatusEmail is error, check this code") + } + if req.IsEmailAdvertisement != ^IsEmailAdvertisement+2 { + t.Error("IsEmailAdvertisement is error, check this code") + } + if req.IsOrderStatusPhone != ^IsOrderStatusPhone+2 { + t.Error("IsOrderStatusPhone is error, check this code") + } + if req.IsOpenRender != ^IsOpenRender+2 { + t.Error("IsOpenRender is error, check this code") + } + if req.IsLowRendering != ^IsLowRendering+2 { + t.Error("IsLowRendering is error, check this code") + } + if req.IsRemoveBg != ^IsRemoveBg+2 { + t.Error("IsRemoveBg is error, check this code") + } +} diff --git a/server/home-user-auth/test/userstatusconfiglogic_test.go b/server/home-user-auth/test/userstatusconfiglogic_test.go new file mode 100644 index 00000000..08014101 --- /dev/null +++ b/server/home-user-auth/test/userstatusconfiglogic_test.go @@ -0,0 +1,55 @@ +package logic + +import ( + "fmt" + "testing" + + "github.com/474420502/requests" + "github.com/tidwall/gjson" +) + +func TestCaseUserStatusConfigLogic(t *testing.T) { + var err error + var resp *requests.Response + var result gjson.Result + + // 获取 session,并携带 JWT token + ses := GetSesssionWithUserToken(t, gserver) + + // 向服务器发送 GET 请求,获取用户类型信息 + resp, err = ses.Post(fmt.Sprintf("http://%s:%d/user/status-config", cnf.Host, cnf.Port)).TestInServer(gserver) + if err != nil { + t.Error(err) + } + + // 使用 gjson 解析返回的 json 数据 + result = gjson.Parse(resp.ContentString()) + + // 检查返回值中的 code 字段是否存在,并且值是否为 200 + // 检查返回值中的 msg 字段是否存在,并且值是否为 "success" + msg := result.Get("msg").String() + if msg != "success" { + t.Errorf(`Invalid msg value: "%s"`, msg) + } + + // 检查返回值中的 data 字段是否存在,并且值是否为数组类型 + dataArray := result.Get("data.search_list").Array() + if len(dataArray) == 0 { + t.Error("Empty data field") + } + + // 遍历每个元素,检查其 key 和 name 字段是否存在,并且值是否符合预期 + for _, item := range dataArray { + + key := item.Get("key") + name := item.Get("name") + + if !key.Exists() { + t.Errorf("key is not exists") + } + + if !name.Exists() { + t.Errorf("name is not exists") + } + } +} diff --git a/server/product/internal/config/config.go b/server/product/internal/config/config.go index 926fad3e..77259953 100644 --- a/server/product/internal/config/config.go +++ b/server/product/internal/config/config.go @@ -2,11 +2,12 @@ package config import ( "fusenapi/server/product/internal/types" + "github.com/zeromicro/go-zero/rest" ) type Config struct { rest.RestConf - DataSource string - Auth types.Auth + SourceMysql string + Auth types.Auth } diff --git a/server_api/home-user-auth.api b/server_api/home-user-auth.api index adede496..576410c9 100644 --- a/server_api/home-user-auth.api +++ b/server_api/home-user-auth.api @@ -41,19 +41,19 @@ service home-user-auth { } type RequestBasicInfoForm { - FirstName string `form:"first_name,optional" db:"first_name"` // FirstName - LastName string `form:"last_name,optional" db:"last_name"` // LastName - Company string `form:"company,optional" db:"company"` // 公司名称 - Mobile string `form:"mobile,optional" db:"mobile"` // 手机号码 - Email string `form:"email" db:"email"` // 邮箱 - Type int64 `form:"type,optional" db:"type"` // 1正常 0不正常 - IsOrderStatusEmail int64 `form:"is_order_status_email,optional" db:"is_order_status_email"` // 订单状态改变时是否接收邮件 - IsEmailAdvertisement int64 `form:"is_email_advertisement,optional" db:"is_email_advertisement"` // 是否接收邮件广告 - IsOrderStatusPhone int64 `form:"is_order_status_phone,optional" db:"is_order_status_phone"` // 订单状态改变是是否接收电话 - IsPhoneAdvertisement int64 `form:"is_phone_advertisement,optional" db:"is_phone_advertisement"` // 是否接收短信广告 - IsOpenRender int64 `form:"is_open_render,optional" db:"is_open_render"` // 是否打开个性化渲染(1:开启,0:关闭) - IsLowRendering int64 `form:"is_low_rendering,optional" db:"is_low_rendering"` // 是否开启低渲染模型渲染 - IsRemoveBg int64 `form:"is_remove_bg,optional" db:"is_remove_bg"` // 用户上传logo是否去除背景 + FirstName string `json:"first_name"` // FirstName + LastName string `json:"last_name"` // LastName + Company string `json:"company"` // 公司名称 + Mobile string `json:"mobile"` // 手机号码 + Email string `json:"email"` // 邮箱 + Type int64 `json:"type"` // 1正常 0不正常 + IsOrderStatusEmail int64 `json:"is_order_status_email"` // 订单状态改变时是否接收邮件 + IsEmailAdvertisement int64 `json:"is_email_advertisement"` // 是否接收邮件广告 + IsOrderStatusPhone int64 `json:"is_order_status_phone"` // 订单状态改变是是否接收电话 + IsPhoneAdvertisement int64 `json:"is_phone_advertisement"` // 是否接收短信广告 + IsOpenRender int64 `json:"is_open_render"` // 是否打开个性化渲染(1:开启,0:关闭) + IsLowRendering int64 `json:"is_low_rendering"` // 是否开启低渲染模型渲染 + IsRemoveBg int64 `json:"is_remove_bg"` // 用户上传logo是否去除背景 // NewPassword string `form:"new_password,optional" db:"new_password"` // new_password 如果存在新密码 } @@ -77,20 +77,20 @@ type DataGuest { // UserBasicInfoHandler 返回data结构 type DataUserBasicInfo { Type int64 `json:"type"` // 1普通餐厅 2连锁餐厅 - IsOrderStatusEmail bool `json:"is_order_status_email"` // 订单状态改变时是否接收邮件 - IsEmailAdvertisement bool `json:"is_email_advertisement"` // 是否接收邮件广告 - IsOrderStatusPhone bool `json:"is_order_status_phone"` // 订单状态改变是是否接收电话 - IsPhoneAdvertisement bool `json:"is_phone_advertisement"` // 是否接收短信广告 - IsOpenRender bool `json:"is_open_render"` // 是否打开个性化渲染(1:开启,0:关闭) - IsThousandFace bool `json:"is_thousand_face"` // 是否已经存在千人千面(1:存在,0:不存在) - IsLowRendering bool `json:"is_low_rendering"` // 是否开启低渲染模型渲染 - IsRemoveBg bool `json:"is_remove_bg"` // 用户上传logo是否去除背景 + IsOrderStatusEmail int64 `json:"is_order_status_email"` // 订单状态改变时是否接收邮件 + IsEmailAdvertisement int64 `json:"is_email_advertisement"` // 是否接收邮件广告 + IsOrderStatusPhone int64 `json:"is_order_status_phone"` // 订单状态改变是是否接收电话 + IsPhoneAdvertisement int64 `json:"is_phone_advertisement"` // 是否接收短信广告 + IsOpenRender int64 `json:"is_open_render"` // 是否打开个性化渲染(1:开启,0:关闭) + IsThousandFace int64 `json:"is_thousand_face"` // 是否已经存在千人千面(1:存在,0:不存在) + IsLowRendering int64 `json:"is_low_rendering"` // 是否开启低渲染模型渲染 + IsRemoveBg int64 `json:"is_remove_bg"` // 用户上传logo是否去除背景 } // /user/get-type reponse.data 结构 type DataGetType { - Id int64 `db:"id" json:"key"` // ID - Name string `db:"name" json:"name"` // 餐厅名字 + Id int64 `json:"key"` // ID + Name string `json:"name"` // 餐厅名字 } // KeyName 普通的key name 对象结构. eg: /user/status-config 用在返回值 @@ -120,18 +120,18 @@ type DataStatusConfig { // DataAddressList /user/address-list 返回值 type DataAddressList { - Id int64 `db:"id"` - UserId int64 `db:"user_id"` // 用户ID - Name string `db:"name"` // 地址名称 - FirstName string `db:"first_name"` // FirstName - LastName string `db:"last_name"` // LastName - Mobile string `db:"mobile"` // 手机号码 - Street string `db:"street"` // 街道 - Suite string `db:"suite"` // 房号 - City string `db:"city"` // 城市 - State string `db:"state"` // 州名 - // Country string `db:"country"` // 国家 - ZipCode string `db:"zip_code"` // 邮编 - // Status int64 `db:"status"` // 1正常 0异常 - IsDefault int64 `db:"is_default"` // 1默认地址,0非默认地址 + Id int64 `json:"id"` + UserId int64 `json:"user_id"` // 用户ID + Name string `json:"name"` // 地址名称 + FirstName string `json:"first_name"` // FirstName + LastName string `json:"last_name"` // LastName + Mobile string `json:"mobile"` // 手机号码 + Street string `json:"street"` // 街道 + Suite string `json:"suite"` // 房号 + City string `json:"city"` // 城市 + State string `json:"state"` // 州名 + // Country string `json:"country"` // 国家 + ZipCode string `json:"zip_code"` // 邮编 + // Status int64 `json:"status"` // 1正常 0异常 + IsDefault int64 `json:"is_default"` // 1默认地址,0非默认地址 } \ No newline at end of file