From 6712feec359fbfc0d0cc27301d1e7ba201eec082 Mon Sep 17 00:00:00 2001 From: henry Date: Mon, 10 Jan 2022 17:43:43 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=AE=8C=E5=96=84=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/admin/api/config.go | 12 + app/api/admin/api/service.go | 221 +++++++++++++ app/api/admin/api/tenant.go | 17 +- app/api/admin/controller/config.go | 9 + app/api/admin/controller/service/innovate.go | 271 ++++++++++++++++ .../admin/controller/service/solution_case.go | 292 ++++++++++++++++++ app/api/admin/controller/tenant/instance.go | 44 +++ app/api/admin/model/service_innovate.go | 50 +++ app/api/admin/model/service_innovate_kind.go | 44 +++ app/api/admin/model/service_solution_case.go | 54 ++++ .../admin/model/service_solution_case_kind.go | 44 +++ app/api/website/controller/index.go | 21 +- app/basic/api/struct.go | 11 + app/common/model/service_innovate.go | 4 +- app/common/model/service_innovate_kind.go | 1 + app/common/model/service_solution_case.go | 24 +- .../model/service_solution_case_kind.go | 48 +++ app/common/model/sys_tenant.go | 2 +- router/address.go | 38 ++- 19 files changed, 1169 insertions(+), 38 deletions(-) create mode 100644 app/api/admin/api/service.go create mode 100644 app/api/admin/controller/service/innovate.go create mode 100644 app/api/admin/controller/service/solution_case.go create mode 100644 app/api/admin/model/service_innovate.go create mode 100644 app/api/admin/model/service_innovate_kind.go create mode 100644 app/api/admin/model/service_solution_case.go create mode 100644 app/api/admin/model/service_solution_case_kind.go create mode 100644 app/common/model/service_solution_case_kind.go diff --git a/app/api/admin/api/config.go b/app/api/admin/api/config.go index 40456ad..046a5eb 100644 --- a/app/api/admin/api/config.go +++ b/app/api/admin/api/config.go @@ -47,3 +47,15 @@ func (a *Config) Edit(c *gin.Context) { err := controller.NewConfig()().Form(form.Params) api.APIResponse(err) } + +func (a *Config) Area(c *gin.Context) { + form := &struct { + Code string `json:"code" form:"code"` + }{} + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + data := controller.NewConfig()().Area(form.Code) + api.APIResponse(nil, data)(c) +} diff --git a/app/api/admin/api/service.go b/app/api/admin/api/service.go new file mode 100644 index 0000000..37c8b47 --- /dev/null +++ b/app/api/admin/api/service.go @@ -0,0 +1,221 @@ +package api + +import ( + "SciencesServer/app/api/admin/controller/service" + "SciencesServer/app/basic/api" + "SciencesServer/app/session" + "github.com/gin-gonic/gin" +) + +type Service struct{} + +func (*Service) Innovate(c *gin.Context) { + form := &struct { + api.TenantIDStringForm + Title string `json:"title" form:"title"` + KindID uint64 `json:"kind_id" form:"kind_id"` + api.PageForm + }{} + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + data, err := service.NewInnovate()(api.GetSession()(c).(*session.Admin)).Instance(form.Convert(), form.Title, form.KindID, + form.Page, form.PageSize) + api.APIResponse(err, data)(c) +} + +func (*Service) InnovateDetail(c *gin.Context) { + form := new(api.IDStringForm) + + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + data, err := service.NewInnovate()(api.GetSession()(c).(*session.Admin)).Detail(form.Convert()) + api.APIResponse(err, data)(c) +} + +func (*Service) InnovateForm(c *gin.Context) { + form := &struct { + api.IDStringForm + KindID string `json:"kind_id" form:"kind_id" binding:"required"` + Title string `json:"title" form:"title" binding:"required"` + Content string `json:"content" form:"content" binding:"required"` + Tags []string `json:"tags" form:"tags"` + Sort int `json:"sort" form:"sort"` + }{} + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + err := service.NewInnovate()(api.GetSession()(c).(*session.Admin)).Form(&service.InnovateParams{ + ID: form.Convert(), KindID: (&api.IDStringForm{ID: form.KindID}).Convert(), + Title: form.Title, Content: form.Content, Tags: form.Tags, Sort: form.Sort, + }) + api.APIResponse(err)(c) +} + +func (*Service) InnovateDelete(c *gin.Context) { + form := new(api.IDStringForm) + + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + err := service.NewInnovate()(api.GetSession()(c).(*session.Admin)).Delete(form.Convert()) + api.APIResponse(err)(c) +} + +func (*Service) InnovateKind(c *gin.Context) { + form := &struct { + api.TenantIDStringForm + Title string `json:"title" form:"title"` + api.PageForm + }{} + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + data, err := service.NewInnovate()(api.GetSession()(c).(*session.Admin)).Kind(form.Convert(), form.Title, form.Page, form.PageSize) + api.APIResponse(err, data)(c) +} + +func (*Service) InnovateKindSelect(c *gin.Context) { + data, err := service.NewInnovate()(api.GetSession()(c).(*session.Admin)).KindSelect() + api.APIResponse(err, data)(c) +} + +func (*Service) InnovateKindForm(c *gin.Context) { + form := &struct { + api.IDStringForm + Title string `json:"title" form:"title" binding:"required"` + Sort int `json:"sort" form:"sort"` + }{} + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + err := service.NewInnovate()(api.GetSession()(c).(*session.Admin)).KindForm(&service.InnovateKindParams{ + ID: form.Convert(), Title: form.Title, Sort: form.Sort, + }) + api.APIResponse(err)(c) +} + +func (*Service) InnovateKindDelete(c *gin.Context) { + form := new(api.IDStringForm) + + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + err := service.NewInnovate()(api.GetSession()(c).(*session.Admin)).KindDelete(form.Convert()) + api.APIResponse(err)(c) +} + +func (*Service) SolutionCase(c *gin.Context) { + form := &struct { + api.TenantIDStringForm + Title string `json:"title" form:"title"` + KindID uint64 `json:"kind_id" form:"kind_id"` + api.PageForm + }{} + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + data, err := service.NewSolutionCase()(api.GetSession()(c).(*session.Admin)).Instance(form.Convert(), form.Title, form.KindID, + form.Page, form.PageSize) + api.APIResponse(err, data)(c) +} + +func (*Service) SolutionCaseDetail(c *gin.Context) { + form := new(api.IDStringForm) + + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + data, err := service.NewSolutionCase()(api.GetSession()(c).(*session.Admin)).Detail(form.Convert()) + api.APIResponse(err, data)(c) +} + +func (*Service) SolutionCaseForm(c *gin.Context) { + form := &struct { + api.IDStringForm + KindID string `json:"kind_id" form:"kind_id" binding:"required"` + Title string `json:"title" form:"title" binding:"required"` + Content string `json:"content" form:"content" binding:"required"` + Tags []string `json:"tags" form:"tags"` + Sort int `json:"sort" form:"sort"` + }{} + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + err := service.NewSolutionCase()(api.GetSession()(c).(*session.Admin)).Form(&service.SolutionCaseParams{ + ID: form.Convert(), KindID: (&api.IDStringForm{ID: form.KindID}).Convert(), + Title: form.Title, Content: form.Content, Sort: form.Sort, + }) + api.APIResponse(err)(c) +} + +func (*Service) SolutionCaseDelete(c *gin.Context) { + form := new(api.IDStringForm) + + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + err := service.NewSolutionCase()(api.GetSession()(c).(*session.Admin)).Delete(form.Convert()) + api.APIResponse(err)(c) +} + +func (*Service) SolutionCaseKind(c *gin.Context) { + form := &struct { + api.TenantIDStringForm + Mode int `json:"mode" form:"mode"` + Title string `json:"title" form:"title"` + api.PageForm + }{} + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + data, err := service.NewSolutionCase()(api.GetSession()(c).(*session.Admin)).Kind(form.Convert(), form.Mode, form.Title, form.Page, form.PageSize) + api.APIResponse(err, data)(c) +} + +func (*Service) SolutionCaseKindSelect(c *gin.Context) { + data, err := service.NewSolutionCase()(api.GetSession()(c).(*session.Admin)).KindSelect() + api.APIResponse(err, data)(c) +} + +func (*Service) SolutionCaseKindForm(c *gin.Context) { + form := &struct { + api.IDStringForm + Mode int `json:"mode" form:"mode" binding:"required"` + Title string `json:"title" form:"title" binding:"required"` + api.ImageForm + Sort int `json:"sort" form:"sort"` + }{} + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + err := service.NewSolutionCase()(api.GetSession()(c).(*session.Admin)).KindForm(&service.SolutionCaseKindParams{ + ID: form.Convert(), Mode: form.Mode, Image: form.FilterImageURL(), Title: form.Title, Sort: form.Sort, + }) + api.APIResponse(err)(c) +} + +func (*Service) SolutionCaseKindDelete(c *gin.Context) { + form := new(api.IDStringForm) + + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + err := service.NewSolutionCase()(api.GetSession()(c).(*session.Admin)).KindDelete(form.Convert()) + api.APIResponse(err)(c) +} diff --git a/app/api/admin/api/tenant.go b/app/api/admin/api/tenant.go index 0babcce..e8c68f0 100644 --- a/app/api/admin/api/tenant.go +++ b/app/api/admin/api/tenant.go @@ -37,21 +37,12 @@ func (a *Tenant) Instance(c *gin.Context) { api.APIResponse(err, data)(c) } -func (a *Tenant) Add(c *gin.Context) { - form := new(tenantForm) - - if err := api.Bind(form)(c); err != nil { - api.APIFailure(err.(error))(c) - return - } - err := tenant.NewInstance()(api.GetSession()(c).(*session.Admin)).Form(&tenant.InstanceParams{Name: form.Name, - Domain: form.Domain, Contact: form.Contact, ContactMobile: form.ContactMobile, - Area: config.Area{Province: form.Province, City: form.City}, Remark: form.Remark, - }) - api.APIResponse(err)(c) +func (a *Tenant) Select(c *gin.Context) { + data, err := tenant.NewInstance()(api.GetSession()(c).(*session.Admin)).Select() + api.APIResponse(err, data)(c) } -func (a *Tenant) Edit(c *gin.Context) { +func (a *Tenant) Form(c *gin.Context) { form := &struct { api.IDStringForm tenantForm diff --git a/app/api/admin/controller/config.go b/app/api/admin/controller/config.go index 9492c3b..924bdf0 100644 --- a/app/api/admin/controller/config.go +++ b/app/api/admin/controller/config.go @@ -2,6 +2,7 @@ package controller import ( "SciencesServer/app/api/admin/model" + config2 "SciencesServer/app/basic/config" "SciencesServer/app/basic/controller" model2 "SciencesServer/app/common/model" "SciencesServer/config" @@ -84,6 +85,14 @@ func (c *Config) Form(params map[string]interface{}) error { }) } +// Area 区域信息 +func (c *Config) Area(key string) map[string]string { + if key == "" { + key = config.DefaultChinaAreaCode + } + return config2.MemoryForAreaInfo[key] +} + func NewConfig() ConfigHandle { return func() *Config { return &Config{} diff --git a/app/api/admin/controller/service/innovate.go b/app/api/admin/controller/service/innovate.go new file mode 100644 index 0000000..3b15ec4 --- /dev/null +++ b/app/api/admin/controller/service/innovate.go @@ -0,0 +1,271 @@ +package service + +import ( + "SciencesServer/app/api/admin/model" + "SciencesServer/app/basic/controller" + model2 "SciencesServer/app/common/model" + "SciencesServer/app/session" + "errors" +) + +type Innovate struct { + *session.Admin +} + +type InnovateHandle func(admin *session.Admin) *Innovate + +type ( + // InnovateInfo 服务信息 + InnovateInfo struct { + ID string `json:"id"` + *model.ServiceInnovateInfo + Area string `json:"area"` + } + // InnovateDetail 服务详细信息 + InnovateDetail struct { + ID string `json:"id"` + *model2.ServiceInnovate + KindID string `json:"kind_id"` + Tags []string `json:"tags"` + } + // InnovateParams 服务参数信息 + InnovateParams struct { + ID, KindID uint64 + Title, Content string + Tags []string + Sort int + } + // InnovateKindInfo 服务分类信息 + InnovateKindInfo struct { + ID string `json:"id"` + *model.ServiceInnovateKindInfo + Area string `json:"area"` + } + // InnovateKindSelectInfo 服务分类筛选信息 + InnovateKindSelectInfo struct { + ID string `json:"id"` + Title string `json:"title"` + } + // InnovateKindParams 服务分类参数信息 + InnovateKindParams struct { + ID uint64 + Title string + Sort int + } +) + +// Instance 首页信息 +func (c *Innovate) Instance(tenantID uint64, title string, kindID uint64, page, pageSize int) (*controller.ReturnPages, error) { + mServiceInnovate := model.NewServiceInnovate() + + where := make([]*model2.ModelWhere, 0) + + if c.TenantID > 0 { + where = append(where, model2.NewWhere("i.tenant_id", c.TenantID)) + } + if tenantID > 0 { + where = append(where, model2.NewWhere("i.tenant_id", tenantID)) + } + if title != "" { + where = append(where, model2.NewWhereLike("i.title", title)) + } + if kindID > 0 { + where = append(where, model2.NewWhere("i.kind_id", kindID)) + } + var count int64 + + out, err := mServiceInnovate.Innovate(page, pageSize, &count, where...) + + if err != nil { + return nil, err + } + list := make([]*InnovateInfo, 0) + + for _, v := range out { + list = append(list, &InnovateInfo{ + ID: v.GetEncodeID(), ServiceInnovateInfo: v, Area: v.Area.FormatBasic(), + }) + } + return &controller.ReturnPages{Data: list, Count: count}, nil +} + +// Detail 详细信息 +func (c *Innovate) Detail(id uint64) (*InnovateDetail, error) { + mServiceInnovate := model.NewServiceInnovate() + mServiceInnovate.ID = id + + isExist, err := model2.First(mServiceInnovate.ServiceInnovate) + + if err != nil { + return nil, err + } else if !isExist { + return nil, errors.New("操作错误,服务信息不存在或已被删除") + } + return &InnovateDetail{ + ID: mServiceInnovate.GetEncodeID(), + ServiceInnovate: mServiceInnovate.ServiceInnovate, + KindID: (&model2.Model{ID: mServiceInnovate.KindID}).GetEncodeID(), + Tags: mServiceInnovate.GetTagAttribute(), + }, nil +} + +// Form 数据操作 +func (c *Innovate) Form(params *InnovateParams) error { + mServiceInnovate := model.NewServiceInnovate() + + if params.ID > 0 { + mServiceInnovate.ID = params.ID + + isExist, err := model2.FirstField(mServiceInnovate.ServiceInnovate, []string{"id", "tenant_id", "created_at"}) + + if err != nil { + return err + } else if !isExist { + return errors.New("操作错误,服务信息不存在或已被删除") + } + if c.TenantID > 0 && c.TenantID != mServiceInnovate.TenantID { + return errors.New("操作错误,无权限操作") + } + } + mServiceInnovate.KindID = params.KindID + mServiceInnovate.Title = params.Title + mServiceInnovate.Content = params.Content + mServiceInnovate.SetTagAttribute(params.Tags) + mServiceInnovate.Sort = params.Sort + + if mServiceInnovate.ID > 0 { + return model2.Updates(mServiceInnovate.ServiceInnovate, mServiceInnovate.ServiceInnovate) + } + mServiceInnovate.TenantID = c.TenantID + return model2.Create(mServiceInnovate.ServiceInnovate) +} + +// Delete 删除操作 +func (c *Innovate) Delete(id uint64) error { + mServiceInnovate := model.NewServiceInnovate() + + mServiceInnovate.ID = id + + isExist, err := model2.FirstField(mServiceInnovate.ServiceInnovate, []string{"id", "tenant_id"}) + + if err != nil { + return err + } else if !isExist { + return errors.New("操作错误,服务信息不存在或已被删除") + } + if c.TenantID > 0 && c.TenantID != mServiceInnovate.TenantID { + return errors.New("操作错误,无权限操作") + } + return model2.Delete(mServiceInnovate.ServiceInnovate) +} + +// Kind 分类信息 +func (c *Innovate) Kind(tenantID uint64, title string, page, pageSize int) (*controller.ReturnPages, error) { + mServiceInnovateKind := model.NewServiceInnovateKind() + + var count int64 + + where := make([]*model2.ModelWhere, 0) + + if c.TenantID > 0 { + where = append(where, model2.NewWhere("k.tenant_id", c.TenantID)) + } + if tenantID > 0 { + where = append(where, model2.NewWhere("k.tenant_id", tenantID)) + } + if title != "" { + where = append(where, model2.NewWhereLike("k.title", title)) + } + + out, err := mServiceInnovateKind.Kind(page, pageSize, &count, where...) + + if err != nil { + return nil, err + } + list := make([]*InnovateKindInfo, 0) + + for _, v := range out { + list = append(list, &InnovateKindInfo{ + ID: v.GetEncodeID(), ServiceInnovateKindInfo: v, Area: v.FormatBasic(), + }) + } + return &controller.ReturnPages{Data: list, Count: count}, nil +} + +// KindSelect 分类筛选信息 +func (c *Innovate) KindSelect() ([]*InnovateKindSelectInfo, error) { + mServiceInnovateKind := model.NewServiceInnovateKind() + + out := make([]*model2.ServiceInnovateKind, 0) + + where := []*model2.ModelWhereOrder{&model2.ModelWhereOrder{ + Where: model2.NewWhere("tenant_id", c.TenantID), + Order: model2.NewOrder("sort", model2.OrderModeToAsc), + }, &model2.ModelWhereOrder{ + Order: model2.NewOrder("id", model2.OrderModeToDesc), + }} + if err := model2.ScanFields(mServiceInnovateKind.ServiceInnovateKind, &out, []string{"id", "title"}, where...); err != nil { + return nil, err + } + list := make([]*InnovateKindSelectInfo, 0) + + for _, v := range out { + list = append(list, &InnovateKindSelectInfo{ + ID: v.GetEncodeID(), Title: v.Title, + }) + } + return list, nil +} + +// KindForm 分类数据处理 +func (c *Innovate) KindForm(params *InnovateKindParams) error { + mServiceInnovateKind := model.NewServiceInnovateKind() + + if params.ID > 0 { + mServiceInnovateKind.ID = params.ID + + isExist, err := model2.FirstField(mServiceInnovateKind.ServiceInnovateKind, []string{"id", "tenant_id", "created_at"}) + + if err != nil { + return err + } else if !isExist { + return errors.New("操作错误,服务分类信息不存在或已被删除") + } + if c.TenantID > 0 && c.TenantID != mServiceInnovateKind.TenantID { + return errors.New("操作错误,无权限操作") + } + } + mServiceInnovateKind.Title = params.Title + mServiceInnovateKind.Sort = params.Sort + + if mServiceInnovateKind.ID > 0 { + return model2.Updates(mServiceInnovateKind.ServiceInnovateKind, mServiceInnovateKind.ServiceInnovateKind) + } + mServiceInnovateKind.TenantID = c.TenantID + return model2.Create(mServiceInnovateKind.ServiceInnovateKind) +} + +// KindDelete 分类数据删除 +func (c *Innovate) KindDelete(id uint64) error { + mServiceInnovateKind := model.NewServiceInnovateKind() + + mServiceInnovateKind.ID = id + + isExist, err := model2.FirstField(mServiceInnovateKind.ServiceInnovateKind, []string{"id", "tenant_id"}) + + if err != nil { + return err + } else if !isExist { + return errors.New("操作错误,服务分类信息不存在或已被删除") + } + if c.TenantID > 0 && c.TenantID != mServiceInnovateKind.TenantID { + return errors.New("操作错误,无权限操作") + } + return model2.Delete(mServiceInnovateKind.ServiceInnovateKind) +} + +func NewInnovate() InnovateHandle { + return func(admin *session.Admin) *Innovate { + return &Innovate{} + } +} diff --git a/app/api/admin/controller/service/solution_case.go b/app/api/admin/controller/service/solution_case.go new file mode 100644 index 0000000..4c4108f --- /dev/null +++ b/app/api/admin/controller/service/solution_case.go @@ -0,0 +1,292 @@ +package service + +import ( + "SciencesServer/app/api/admin/model" + "SciencesServer/app/basic/controller" + model2 "SciencesServer/app/common/model" + "SciencesServer/app/session" + "errors" +) + +type SolutionCase struct { + *session.Admin +} + +type SolutionCaseHandle func(session *session.Admin) *SolutionCase + +type ( + // SolutionCaseInfo 案例信息 + SolutionCaseInfo struct { + ID string `json:"id"` + *model.ServiceSolutionCaseInfo + Area string `json:"area"` + } + // SolutionCaseDetailInfo 案例详细信息 + SolutionCaseDetailInfo struct { + ID string `json:"id"` + *model2.ServiceSolutionCase + KindID string `json:"kind_id"` + } + // SolutionCaseParams 案例参数信息 + SolutionCaseParams struct { + ID, KindID uint64 + Title, Image, Description, Content string + Sort int + } + // SolutionCaseKindInfo 案例分类信息 + SolutionCaseKindInfo struct { + ID string `json:"id"` + *model2.ServiceSolutionCaseKind + Area string `json:"area"` + } + // SolutionCaseKindSelectInfo 案例分类筛选信息 + SolutionCaseKindSelectInfo struct { + ID string `json:"id"` + Title string `json:"title"` + Children []*SolutionCaseKindSelectInfo `json:"children"` + } + // SolutionCaseKindParams 案例分类参数信息 + SolutionCaseKindParams struct { + ID uint64 + Mode int + Title, Image string + Sort int + } +) + +// Instance 案例信息 +func (c *SolutionCase) Instance(tenantID uint64, title string, kindID uint64, page, pageSize int) (*controller.ReturnPages, error) { + mServiceSolutionCase := model.NewServiceSolutionCase() + + where := make([]*model2.ModelWhere, 0) + + if c.TenantID > 0 { + where = append(where, model2.NewWhere("s.tenant_id", c.TenantID)) + } + if tenantID > 0 { + where = append(where, model2.NewWhere("s.tenant_id", tenantID)) + } + if title != "" { + where = append(where, model2.NewWhereLike("s.title", title)) + } + if kindID > 0 { + where = append(where, model2.NewWhere("s.kind_id", kindID)) + } + var count int64 + + out, err := mServiceSolutionCase.SolutionCase(page, pageSize, &count, where...) + + if err != nil { + return nil, err + } + list := make([]*SolutionCaseInfo, 0) + + for _, v := range out { + v.Image.Image = v.Image.Analysis("") + + list = append(list, &SolutionCaseInfo{ + ID: v.GetEncodeID(), + ServiceSolutionCaseInfo: v, + Area: v.Area.FormatBasic(), + }) + } + return &controller.ReturnPages{Data: list, Count: count}, nil +} + +// Detail 详细信息 +func (c *SolutionCase) Detail(id uint64) (*SolutionCaseDetailInfo, error) { + mServiceSolutionCase := model.NewServiceSolutionCase() + mServiceSolutionCase.ID = id + + isExist, err := model2.First(mServiceSolutionCase.ServiceSolutionCase) + + if err != nil { + return nil, err + } else if !isExist { + return nil, errors.New("操作错误,案例信息不存在或已被删除") + } + mServiceSolutionCase.Image.Image = mServiceSolutionCase.Image.Analysis("") + + return &SolutionCaseDetailInfo{ + ID: mServiceSolutionCase.GetEncodeID(), + ServiceSolutionCase: mServiceSolutionCase.ServiceSolutionCase, + KindID: (&model2.Model{ID: mServiceSolutionCase.KindID}).GetEncodeID(), + }, nil +} + +// Form 数据操作 +func (c *SolutionCase) Form(params *SolutionCaseParams) error { + mServiceSolutionCase := model.NewServiceSolutionCase() + + if params.ID > 0 { + mServiceSolutionCase.ID = params.ID + + isExist, err := model2.FirstField(mServiceSolutionCase.ServiceSolutionCase, []string{"id", "tenant_id", "created_at"}) + + if err != nil { + return err + } else if !isExist { + return errors.New("操作错误,案例信息不存在或已被删除") + } + if c.TenantID > 0 && c.TenantID != mServiceSolutionCase.TenantID { + return errors.New("操作错误,无权限操作") + } + } + mServiceSolutionCase.KindID = params.KindID + mServiceSolutionCase.Title = params.Title + mServiceSolutionCase.Image.Image = params.Image + mServiceSolutionCase.Description = params.Description + mServiceSolutionCase.Content = params.Content + mServiceSolutionCase.Sort = params.Sort + + if mServiceSolutionCase.ID > 0 { + return model2.Updates(mServiceSolutionCase.ServiceSolutionCase, mServiceSolutionCase.ServiceSolutionCase) + } + mServiceSolutionCase.TenantID = c.TenantID + + return model2.Create(mServiceSolutionCase.ServiceSolutionCase) +} + +// Delete 删除操作 +func (c *SolutionCase) Delete(id uint64) error { + mServiceSolutionCase := model.NewServiceSolutionCase() + + mServiceSolutionCase.ID = id + + isExist, err := model2.FirstField(mServiceSolutionCase.ServiceSolutionCase, []string{"id", "tenant_id"}) + + if err != nil { + return err + } else if !isExist { + return errors.New("操作错误,案例信息不存在或已被删除") + } + if c.TenantID > 0 && c.TenantID != mServiceSolutionCase.TenantID { + return errors.New("操作错误,无权限操作") + } + return model2.Delete(mServiceSolutionCase.ServiceSolutionCase) +} + +func (c *SolutionCase) Kind(tenantID uint64, mode int, title string, page, pageSize int) (*controller.ReturnPages, error) { + mServiceSolutionCaseKind := model.NewServiceSolutionCaseKind() + + where := make([]*model2.ModelWhere, 0) + + if c.TenantID > 0 { + where = append(where, model2.NewWhere("k.tenant_id", c.TenantID)) + } + if tenantID > 0 { + where = append(where, model2.NewWhere("k.tenant_id", tenantID)) + } + if mode > 0 { + where = append(where, model2.NewWhere("k.kind_id", mode)) + } + if title != "" { + where = append(where, model2.NewWhereLike("k.title", title)) + } + var count int64 + + out, err := mServiceSolutionCaseKind.Kind(page, pageSize, &count, where...) + + if err != nil { + return nil, err + } + list := make([]*SolutionCaseKindInfo, 0) + + for _, v := range out { + list = append(list, &SolutionCaseKindInfo{ + ID: v.GetEncodeID(), + ServiceSolutionCaseKind: v.ServiceSolutionCaseKind, + Area: v.FormatBasic(), + }) + } + return &controller.ReturnPages{Data: list, Count: count}, nil +} + +// KindSelect 类型筛选 +func (c *SolutionCase) KindSelect() (map[model2.ServiceSolutionCaseMode]*SolutionCaseKindSelectInfo, error) { + mServiceSolutionCaseKind := model.NewServiceSolutionCaseKind() + + where := []*model2.ModelWhereOrder{&model2.ModelWhereOrder{ + Where: model2.NewWhere("tenant_id", c.TenantID), + Order: model2.NewOrder("sort", model2.OrderModeToAsc), + }, &model2.ModelWhereOrder{ + Order: model2.NewOrder("id", model2.OrderModeToDesc), + }} + out := make([]*model2.ServiceSolutionCaseKind, 0) + + if err := model2.ScanFields(mServiceSolutionCaseKind.ServiceSolutionCaseKind, &out, []string{"id", "mode", "title"}, where...); err != nil { + return nil, err + } + res := make(map[model2.ServiceSolutionCaseMode]*SolutionCaseKindSelectInfo, 0) + + for _, v := range out { + data := &SolutionCaseKindSelectInfo{ + ID: v.GetEncodeID(), + Title: v.Title, + } + if _, has := res[v.Mode]; !has { + res[v.Mode] = &SolutionCaseKindSelectInfo{ + Title: v.ModeTitle(), + Children: []*SolutionCaseKindSelectInfo{data}, + } + continue + } + res[v.Mode].Children = append(res[v.Mode].Children, data) + } + return res, nil +} + +func (c *SolutionCase) KindForm(params *SolutionCaseKindParams) error { + mServiceSolutionCaseKind := model.NewServiceSolutionCaseKind() + + if params.ID > 0 { + mServiceSolutionCaseKind.ID = params.ID + + isExist, err := model2.FirstField(mServiceSolutionCaseKind.ServiceSolutionCaseKind, []string{"id", "tenant_id", "created_at"}) + + if err != nil { + return err + } else if !isExist { + return errors.New("操作错误,案例信息不存在或已被删除") + } + if c.TenantID > 0 && c.TenantID != mServiceSolutionCaseKind.TenantID { + return errors.New("操作错误,无权限操作") + } + } + mServiceSolutionCaseKind.Mode = model2.ServiceSolutionCaseMode(params.Mode) + mServiceSolutionCaseKind.Title = params.Title + mServiceSolutionCaseKind.Image.Image = params.Image + mServiceSolutionCaseKind.Sort = params.Sort + + if mServiceSolutionCaseKind.ID > 0 { + return model2.Updates(mServiceSolutionCaseKind.ServiceSolutionCaseKind, mServiceSolutionCaseKind.ServiceSolutionCaseKind) + } + mServiceSolutionCaseKind.TenantID = c.TenantID + + return model2.Create(mServiceSolutionCaseKind.ServiceSolutionCaseKind) +} + +// KindDelete 分类信息删除 +func (c *SolutionCase) KindDelete(id uint64) error { + mServiceSolutionCaseKind := model.NewServiceSolutionCaseKind() + + mServiceSolutionCaseKind.ID = id + + isExist, err := model2.FirstField(mServiceSolutionCaseKind.ServiceSolutionCaseKind, []string{"id", "tenant_id"}) + + if err != nil { + return err + } else if !isExist { + return errors.New("操作错误,案例分类信息不存在或已被删除") + } + if c.TenantID > 0 && c.TenantID != mServiceSolutionCaseKind.TenantID { + return errors.New("操作错误,无权限操作") + } + return model2.Delete(mServiceSolutionCaseKind.ServiceSolutionCaseKind) +} + +func NewSolutionCase() SolutionCaseHandle { + return func(session *session.Admin) *SolutionCase { + return &SolutionCase{session} + } +} diff --git a/app/api/admin/controller/tenant/instance.go b/app/api/admin/controller/tenant/instance.go index d4d0f5a..d7b6681 100644 --- a/app/api/admin/controller/tenant/instance.go +++ b/app/api/admin/controller/tenant/instance.go @@ -28,6 +28,13 @@ type ( ID string `json:"id"` *model2.SysTenant } + // InstanceSelectInfo 租户筛选信息 + InstanceSelectInfo struct { + ID string `json:"id"` + Code string `json:"code"` + Name string `json:"name"` + Children []*InstanceSelectInfo `json:"children"` + } // InstanceParams 参数信息 InstanceParams struct { ID uint64 @@ -64,6 +71,39 @@ func (c *Instance) Index(name string, page, pageSize int) (*controller.ReturnPag return &controller.ReturnPages{Data: list, Count: count}, nil } +func (c *Instance) Select() (map[string]*InstanceSelectInfo, error) { + mSysTenant := model.NewSysTenant() + out := make([]*model2.SysTenant, 0) + + if err := model2.ScanFields(mSysTenant.SysTenant, &out, []string{"id", "name", "province", "city"}, &model2.ModelWhereOrder{ + Order: model2.NewOrder("province", model2.OrderModeToAsc), + }, &model2.ModelWhereOrder{ + Order: model2.NewOrder("city", model2.OrderModeToAsc), + }); err != nil { + return nil, err + } + res := make(map[string]*InstanceSelectInfo, 0) + + for _, v := range out { + data := &InstanceSelectInfo{ + ID: v.GetEncodeID(), + Code: v.City, + Name: config.MemoryForAreaInfo[v.Province][v.City], + Children: nil, + } + if _, has := res[v.Province]; !has { + res[v.Province] = &InstanceSelectInfo{ + Code: v.Province, + Name: config.MemoryForAreaInfo[config2.DefaultChinaAreaCode][v.Province], + Children: []*InstanceSelectInfo{data}, + } + continue + } + res[v.Province].Children = append(res[v.Province].Children, data) + } + return res, nil +} + // Form 数据操作 func (c *Instance) Form(params *InstanceParams) error { mSysTenant := model.NewSysTenant() @@ -78,6 +118,10 @@ func (c *Instance) Form(params *InstanceParams) error { } else if !isExist { return errors.New("操作错误,平台信息不存在或已被删除") } + + if mSysTenant.Province != params.Area.Province || mSysTenant.City != params.Area.City { + // TODO:查询区域是否存在租户平台 + } } mSysTenant.Name = params.Name mSysTenant.Area = model2.Area{ diff --git a/app/api/admin/model/service_innovate.go b/app/api/admin/model/service_innovate.go new file mode 100644 index 0000000..32abb70 --- /dev/null +++ b/app/api/admin/model/service_innovate.go @@ -0,0 +1,50 @@ +package model + +import ( + "SciencesServer/app/common/model" + "SciencesServer/serve/orm" + "fmt" + "time" +) + +type ServiceInnovate struct { + *model.ServiceInnovate +} + +type ServiceInnovateInfo struct { + model.Model + model.Area + Title string `json:"title"` + TenantName string `json:"tenant_name"` + KindTitle string `json:"kind_title"` + CreatedAt time.Time `json:"created_at"` +} + +func (m *ServiceInnovate) Innovate(page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*ServiceInnovateInfo, error) { + db := orm.GetDB().Table(m.TableName()+" AS i"). + Select("i.id", "i.title", "t.name AS tenant_name", "k.title AS kind_title", "i.created_at", + "t.province", "t.city"). + Joins(fmt.Sprintf("LEFT JOIN %s AS t ON i.tenant_id = t.id", model.NewSysTenant().TableName())). + Joins(fmt.Sprintf("LEFT JOIN %s AS k ON i.kind = k.id", model.NewServiceInnovateKind().TableName())). + Where("i.is_deleted = ?", model.DeleteStatusForNot) + + if len(where) > 0 { + for _, v := range where { + db = db.Where(v.Condition, v.Value) + } + } + out := make([]*ServiceInnovateInfo, 0) + + if err := db.Count(count).Error; err != nil { + return nil, err + } + if err := db.Order("i.sort " + model.OrderModeToAsc). + Order("i.id " + model.OrderModeToDesc).Offset((page - 1) * pageSize).Limit(pageSize).Scan(&out).Error; err != nil { + return nil, err + } + return out, nil +} + +func NewServiceInnovate() *ServiceInnovate { + return &ServiceInnovate{model.NewServiceInnovate()} +} diff --git a/app/api/admin/model/service_innovate_kind.go b/app/api/admin/model/service_innovate_kind.go new file mode 100644 index 0000000..a194ecd --- /dev/null +++ b/app/api/admin/model/service_innovate_kind.go @@ -0,0 +1,44 @@ +package model + +import ( + "SciencesServer/app/common/model" + "SciencesServer/serve/orm" + "fmt" +) + +type ServiceInnovateKind struct { + *model.ServiceInnovateKind +} + +type ServiceInnovateKindInfo struct { + model.Model + model.Area + Title string `json:"title"` +} + +// Kind 分类信息 +func (m *ServiceInnovateKind) Kind(page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*ServiceInnovateKindInfo, error) { + db := orm.GetDB().Table(m.TableName()+" AS k"). + Select("k.id", "i.title", "k.created_at", "t.province", "t.city"). + Joins(fmt.Sprintf("LEFT JOIN %s AS t ON k.tenant_id = t.id", model.NewSysTenant().TableName())). + Where("k.is_deleted = ?", model.DeleteStatusForNot) + + if len(where) > 0 { + for _, v := range where { + db = db.Where(v.Condition, v.Value) + } + } + out := make([]*ServiceInnovateKindInfo, 0) + + if err := db.Count(count).Error; err != nil { + return nil, err + } + if err := db.Order("k.sort " + model.OrderModeToAsc).Order("k.id " + model.OrderModeToDesc).Offset((page - 1) * pageSize).Limit(pageSize).Scan(&out).Error; err != nil { + return nil, err + } + return out, nil +} + +func NewServiceInnovateKind() *ServiceInnovateKind { + return &ServiceInnovateKind{model.NewServiceInnovateKind()} +} diff --git a/app/api/admin/model/service_solution_case.go b/app/api/admin/model/service_solution_case.go new file mode 100644 index 0000000..bb31aa5 --- /dev/null +++ b/app/api/admin/model/service_solution_case.go @@ -0,0 +1,54 @@ +package model + +import ( + "SciencesServer/app/common/model" + "SciencesServer/serve/orm" + "fmt" + "time" +) + +type ServiceSolutionCase struct { + *model.ServiceSolutionCase +} + +// ServiceSolutionCaseInfo 服务案例信息 +type ServiceSolutionCaseInfo struct { + model.Model + Title string `json:"title"` + model.Image + Description string `json:"description"` + Visits int `json:"visits"` + KindTitle string `json:"kind_title"` + CreatedAt time.Time `json:"created_at"` + model.Area +} + +// SolutionCase 案例信息 +func (m *ServiceSolutionCase) SolutionCase(page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*ServiceSolutionCaseInfo, error) { + db := orm.GetDB().Table(m.TableName()+" AS s"). + Select("s.id", "s.title", "s.image", "s.description", "s.visits", "k.title AS kind_title", "s.created_at", + "t.province", "t.city"). + Joins(fmt.Sprintf("LEFT JOIN %s AS t ON s.tenant_id = t.id", model.NewSysTenant().TableName())). + Joins(fmt.Sprintf("LEFT JOIN %s AS k ON s.kind_id = k.id", model.NewServiceSolutionCaseKind().TableName())). + Where("s.is_deleted = ?", model.DeleteStatusForNot) + + if len(where) > 0 { + for _, v := range where { + db = db.Where(v.Condition, v.Value) + } + } + out := make([]*ServiceSolutionCaseInfo, 0) + + if err := db.Count(count).Error; err != nil { + return nil, err + } + if err := db.Order("s.sort " + model.OrderModeToAsc). + Order("s.id " + model.OrderModeToDesc).Offset((page - 1) * pageSize).Limit(pageSize).Scan(&out).Error; err != nil { + return nil, err + } + return out, nil +} + +func NewServiceSolutionCase() *ServiceSolutionCase { + return &ServiceSolutionCase{model.NewServiceSolutionCase()} +} diff --git a/app/api/admin/model/service_solution_case_kind.go b/app/api/admin/model/service_solution_case_kind.go new file mode 100644 index 0000000..323b60e --- /dev/null +++ b/app/api/admin/model/service_solution_case_kind.go @@ -0,0 +1,44 @@ +package model + +import ( + "SciencesServer/app/common/model" + "SciencesServer/serve/orm" + "fmt" +) + +type ServiceSolutionCaseKind struct { + *model.ServiceSolutionCaseKind +} + +type ServiceSolutionCaseKindInfo struct { + *model.ServiceSolutionCaseKind + model.Area +} + +// Kind 类型信息 +func (m *ServiceSolutionCaseKind) Kind(page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*ServiceSolutionCaseKindInfo, error) { + db := orm.GetDB().Table(m.TableName()+" AS k"). + Select("k.*", "t.province", "t.city"). + Joins(fmt.Sprintf("LEFT JOIN %s AS t ON k.tenant_id = t.id", model.NewSysTenant().TableName())). + Where("k.is_deleted = ?", model.DeleteStatusForNot) + + if len(where) > 0 { + for _, v := range where { + db = db.Where(v.Condition, v.Value) + } + } + out := make([]*ServiceSolutionCaseKindInfo, 0) + + if err := db.Count(count).Error; err != nil { + return nil, err + } + if err := db.Order("k.sort " + model.OrderModeToAsc). + Order("k.id " + model.OrderModeToDesc).Offset((page - 1) * pageSize).Limit(pageSize).Scan(&out).Error; err != nil { + return nil, err + } + return out, nil +} + +func NewServiceSolutionCaseKind() *ServiceSolutionCaseKind { + return &ServiceSolutionCaseKind{model.NewServiceSolutionCaseKind()} +} diff --git a/app/api/website/controller/index.go b/app/api/website/controller/index.go index 69285e0..1c6c4ce 100644 --- a/app/api/website/controller/index.go +++ b/app/api/website/controller/index.go @@ -84,7 +84,7 @@ func (c *Index) distribution(src []*model.DataAreaDistributionInfo) map[string]* Code: v.Province, Name: config2.MemoryForAreaInfo[config.DefaultChinaAreaCode][v.Province], Industry: make(map[string]int, 0), - Count: 1, + Count: 105, Children: make(map[string]*InstanceDistributionDetailInfo, 0), } goto NEXT1 @@ -95,7 +95,7 @@ func (c *Index) distribution(src []*model.DataAreaDistributionInfo) map[string]* if _, has = out[v.Province].Children[v.City]; !has { out[v.Province].Children[v.City] = &InstanceDistributionDetailInfo{ Code: v.City, - Count: 1, + Count: 105, Name: config2.MemoryForAreaInfo[v.Province][v.City], Industry: make(map[string]int, 0), Children: make(map[string]*InstanceDistributionDetailInfo, 0), @@ -111,7 +111,7 @@ func (c *Index) distribution(src []*model.DataAreaDistributionInfo) map[string]* if _, has = out[v.Province].Children[v.City].Children[v.District]; !has { out[v.Province].Children[v.City].Children[v.District] = &InstanceDistributionDetailInfo{ Code: v.District, - Count: 1, + Count: 105, Name: config2.MemoryForAreaInfo[v.City][v.District], Industry: industrys, } @@ -203,6 +203,21 @@ func (c *Index) DistributionExpert(province, city string) (map[string]*InstanceD } _out := c.distribution(out) c.filter(_out) + _out["500000"] = &InstanceDistributionDetailInfo{ + Code: "500000", + Name: "重庆", + Count: 300, + Industry: nil, + Children: map[string]*InstanceDistributionDetailInfo{ + "500100": &InstanceDistributionDetailInfo{ + Code: "500100", + Name: "市辖区", + Count: 300, + Industry: nil, + Children: nil, + }, + }, + } return _out, nil } diff --git a/app/basic/api/struct.go b/app/basic/api/struct.go index 159142f..1aa297d 100644 --- a/app/basic/api/struct.go +++ b/app/basic/api/struct.go @@ -21,6 +21,17 @@ func (this *IDStringForm) Convert() uint64 { return uint64(utils.HASHIDDecode(this.ID)) } +type TenantIDStringForm struct { + TenantID string `json:"tenant_id" form:"tenant_id"` +} + +func (this *TenantIDStringForm) Convert() uint64 { + if this.TenantID == "" { + return 0 + } + return uint64(utils.HASHIDDecode(this.TenantID)) +} + type UIDForm struct { UID string `json:"uid" form:"uid" binding:"required"` } diff --git a/app/common/model/service_innovate.go b/app/common/model/service_innovate.go index 5a48742..1c373e4 100644 --- a/app/common/model/service_innovate.go +++ b/app/common/model/service_innovate.go @@ -5,10 +5,12 @@ import "encoding/json" // ServiceInnovate 创新服务数据模型 type ServiceInnovate struct { Model - Kind uint64 `gorm:"column:kind;type:int(11);default:0;comment:创新服务类型" json:"kind"` + ModelTenant + KindID uint64 `gorm:"column:kind_id;type:int(11);default:0;comment:类型ID" json:"-"` Title string `gorm:"column:title;type:varchar(50);default:'';comment:创新服务标题" json:"title"` Content string `gorm:"column:content;type:text;comment:创新服务内容" json:"content"` Tag string `gorm:"column:tag;type:varchar(255);default:'';comment:创新服务标签" json:"-"` + Sort int `gorm:"column:sort;type:tinyint(3);default:0;comment:排序,数值越小,优先排序" json:"sort"` ModelDeleted ModelAt } diff --git a/app/common/model/service_innovate_kind.go b/app/common/model/service_innovate_kind.go index f575494..e6b4ae4 100644 --- a/app/common/model/service_innovate_kind.go +++ b/app/common/model/service_innovate_kind.go @@ -3,6 +3,7 @@ package model // ServiceInnovateKind 创新服务分类数据模型 type ServiceInnovateKind struct { Model + ModelTenant Title string `gorm:"column:title;type:varchar(50);default:'';comment:创新服务分类标题" json:"title"` Sort int `gorm:"column:sort;type:tinyint(1);default:0;comment:创新服务分类排序" json:"sort"` ModelDeleted diff --git a/app/common/model/service_solution_case.go b/app/common/model/service_solution_case.go index b9a2065..a6dc22e 100644 --- a/app/common/model/service_solution_case.go +++ b/app/common/model/service_solution_case.go @@ -3,28 +3,18 @@ package model // ServiceSolutionCase 服务解决案例数据模型 type ServiceSolutionCase struct { Model - Kind ServiceSolutionCaseKind `gorm:"column:kind;type:tinyint(3);default:0;comment:类型" json:"kind"` - Title string `gorm:"column:title;type:varchar(20);default:'';comment:标题" json:"title"` + ModelTenant + KindID uint64 `gorm:"column:kind_id;type:int(11);default:0;comment:类型ID" json:"-"` + Title string `gorm:"column:title;type:varchar(100);default:'';comment:标题" json:"title"` Image - Sort int `gorm:"column:sort;type:tinyint(3);default:0;comment:排序,数值越大,优先排序" json:"sort"` + Description string `gorm:"column:description;type:varchar(255);comment:描述" json:"description"` + Content string `gorm:"column:content;type:text;comment:内容" json:"content"` + Visits int `gorm:"column:visits;type:int(6);default:0;comment:浏览数" json:"visits"` + Sort int `gorm:"column:sort;type:tinyint(3);default:0;comment:排序,数值越小,优先排序" json:"sort"` ModelDeleted ModelAt } -// ServiceSolutionCaseKind 服务解决方案类型 -type ServiceSolutionCaseKind int - -const ( - // ServiceSolutionCaseKindForSmallCompany 中小型企业 - ServiceSolutionCaseKindForSmallCompany ServiceSolutionCaseKind = iota + 101 - // ServiceSolutionCaseKindForBigCompany 大型企业 - ServiceSolutionCaseKindForBigCompany - // ServiceSolutionCaseKindForGovernment 政府单位 - ServiceSolutionCaseKindForGovernment - // ServiceSolutionCaseKindForResearch 科研机构 - ServiceSolutionCaseKindForResearch -) - func (m *ServiceSolutionCase) TableName() string { return "service_solution_case" } diff --git a/app/common/model/service_solution_case_kind.go b/app/common/model/service_solution_case_kind.go new file mode 100644 index 0000000..3703db0 --- /dev/null +++ b/app/common/model/service_solution_case_kind.go @@ -0,0 +1,48 @@ +package model + +// ServiceSolutionCaseKind 服务解决案例数据模型 +type ServiceSolutionCaseKind struct { + Model + ModelTenant + Title string `gorm:"column:title;type:varchar(100);default:'';comment:标题" json:"title"` + Image + Mode ServiceSolutionCaseMode `gorm:"column:mode;type:tinyint(3);default:0;comment:方案模式" json:"mode"` + Sort int `gorm:"column:sort;type:tinyint(3);default:0;comment:排序,数值越小,优先排序" json:"sort"` + ModelDeleted + ModelAt +} + +// ServiceSolutionCaseMode 服务解决方案模式 +type ServiceSolutionCaseMode int + +const ( + // ServiceSolutionCaseModeForSmallCompany 中小型企业 + ServiceSolutionCaseModeForSmallCompany ServiceSolutionCaseMode = iota + 101 + // ServiceSolutionCaseModeForBigCompany 大型企业 + ServiceSolutionCaseModeForBigCompany + // ServiceSolutionCaseModeForGovernment 政府单位 + ServiceSolutionCaseModeForGovernment + // ServiceSolutionCaseModeForResearch 科研机构 + ServiceSolutionCaseModeForResearch +) + +func (m *ServiceSolutionCaseKind) TableName() string { + return "service_solution_case_kind" +} + +func (m *ServiceSolutionCaseKind) ModeTitle() string { + if m.Mode == ServiceSolutionCaseModeForSmallCompany { + return "中小型企业" + } else if m.Mode == ServiceSolutionCaseModeForBigCompany { + return "中小型企业" + } else if m.Mode == ServiceSolutionCaseModeForGovernment { + + } else if m.Mode == ServiceSolutionCaseModeForResearch { + + } + return "" +} + +func NewServiceSolutionCaseKind() *ServiceSolutionCaseKind { + return &ServiceSolutionCaseKind{} +} diff --git a/app/common/model/sys_tenant.go b/app/common/model/sys_tenant.go index 0b5c00f..0873519 100644 --- a/app/common/model/sys_tenant.go +++ b/app/common/model/sys_tenant.go @@ -8,7 +8,7 @@ type SysTenant struct { Contact string `gorm:"column:contact;type:varchar(30);default:'';comment:联系人" json:"contact"` ContactMobile string `gorm:"column:contact_mobile;type:varchar(15);default:'';comment:联系方式" json:"contact_mobile"` Area - Domain string `gorm:"column:domain;type:varchar(255);default:'';comment:domain" json:"域名地址"` + Domain string `gorm:"column:domain;type:varchar(255);default:'';comment:域名地址" json:"domain"` Remark string `gorm:"column:remark;type:varchar(255);default:'';comment:备注信息" json:"remark"` ModelDeleted ModelAt diff --git a/router/address.go b/router/address.go index 0202111..243055c 100644 --- a/router/address.go +++ b/router/address.go @@ -158,6 +158,12 @@ func registerAdminAPI(app *gin.Engine) { account.POST("/login", _api.Login) account.POST("/logout", _api.Logout) } + // Config 用户管理 + config := v1.Group("/config") + { + _api := new(api1.Config) + config.GET("/area", _api.Area) + } // User 用户管理 user := v1.Group("/user") { @@ -175,9 +181,10 @@ func registerAdminAPI(app *gin.Engine) { tenant := v1.Group("/tenant") { _api := new(api1.Tenant) - tenant.POST("/", _api.Instance) - tenant.POST("/add", _api.Add) - tenant.POST("/edit", _api.Edit) + tenant.POST("", _api.Instance) + tenant.GET("/select", _api.Select) + tenant.POST("/add", _api.Form) + tenant.POST("/edit", _api.Form) tenant.POST("/delete", _api.Delete) tenant.POST("/member", _api.Member) tenant.POST("/member/bind", _api.MemberBind) @@ -232,6 +239,31 @@ func registerAdminAPI(app *gin.Engine) { role.POST("/auth", _api.Auth) role.POST("/auth/bind", _api.AuthBind) } + // Service 服务管理 + service := v1.Group("/service") + { + _api := new(api1.Service) + service.POST("/innovate", _api.Innovate) + service.POST("/innovate/detail", _api.InnovateDetail) + service.POST("/innovate/add", _api.InnovateForm) + service.POST("/innovate/edit", _api.InnovateForm) + service.POST("/innovate/delete", _api.InnovateDelete) + service.POST("/innovate/kind", _api.InnovateKind) + service.GET("/innovate/kind/select", _api.InnovateKindSelect) + service.POST("/innovate/kind/add", _api.InnovateKindForm) + service.POST("/innovate/kind/edit", _api.InnovateKindForm) + service.POST("/innovate/kind/delete", _api.InnovateKindDelete) + service.POST("/solution_case", _api.SolutionCase) + service.POST("/solution_case/detail", _api.SolutionCaseDetail) + service.POST("/solution_case/add", _api.SolutionCaseForm) + service.POST("/solution_case/edit", _api.SolutionCaseForm) + service.POST("/solution_case/delete", _api.SolutionCaseDelete) + service.POST("/solution_case/kind", _api.SolutionCaseKind) + service.GET("/solution_case/kind/select", _api.SolutionCaseKindSelect) + service.POST("/solution_case/kind/add", _api.SolutionCaseKindForm) + service.POST("/solution_case/kind/edit", _api.SolutionCaseKindForm) + service.POST("/solution_case/kind/delete", _api.SolutionCaseKindDelete) + } // Logs 日志管理 log := v1.Group("/log") {