初始化
This commit is contained in:
9
internal/controller/admin/admin.go
Normal file
9
internal/controller/admin/admin.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package admin
|
||||
|
||||
// ControllerV1 是后台管理控制器。
|
||||
type ControllerV1 struct{}
|
||||
|
||||
// NewV1 创建后台管理控制器实例。
|
||||
func NewV1() *ControllerV1 {
|
||||
return &ControllerV1{}
|
||||
}
|
||||
111
internal/controller/admin/admin_v1.go
Normal file
111
internal/controller/admin/admin_v1.go
Normal file
@@ -0,0 +1,111 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"xk-of-api/api/admin/v1"
|
||||
"xk-of-api/internal/model"
|
||||
"xk-of-api/internal/response"
|
||||
"xk-of-api/internal/service"
|
||||
)
|
||||
|
||||
// Login 处理后台登录请求。
|
||||
func (c *ControllerV1) Login(ctx context.Context, req *v1.LoginReq) (res *v1.LoginRes, err error) {
|
||||
response.Success(ctx, service.Admin.Login(req.Account))
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// MenuTree 返回后台多级菜单树。
|
||||
func (c *ControllerV1) MenuTree(ctx context.Context, req *v1.MenuTreeReq) (res *v1.MenuTreeRes, err error) {
|
||||
response.Success(ctx, service.Admin.Menus())
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// MenuLayout 返回当前管理员菜单布局。
|
||||
func (c *ControllerV1) MenuLayout(ctx context.Context, req *v1.MenuLayoutReq) (res *v1.MenuLayoutRes, err error) {
|
||||
response.Success(ctx, service.Admin.MenuLayout())
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// UpdateMenuLayout 更新当前管理员菜单布局偏好。
|
||||
func (c *ControllerV1) UpdateMenuLayout(ctx context.Context, req *v1.UpdateMenuLayoutReq) (res *v1.UpdateMenuLayoutRes, err error) {
|
||||
response.Success(ctx, service.Admin.UpdateMenuLayout(req.MenuLayout))
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// Roles 返回角色列表。
|
||||
func (c *ControllerV1) Roles(ctx context.Context, req *v1.RolesReq) (res *v1.RolesRes, err error) {
|
||||
response.Success(ctx, service.Admin.Roles())
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// SaveRoleMenus 保存角色菜单授权。
|
||||
func (c *ControllerV1) SaveRoleMenus(ctx context.Context, req *v1.SaveRoleMenusReq) (res *v1.SaveRoleMenusRes, err error) {
|
||||
response.Success(ctx, service.Admin.SaveRoleMenus(req.RoleId, req.MenuIds))
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// SitePages 获取页面 SEO/GSO 配置。
|
||||
func (c *ControllerV1) SitePages(ctx context.Context, req *v1.SitePagesReq) (res *v1.SitePagesRes, err error) {
|
||||
response.Success(ctx, service.Admin.SitePages())
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// SaveSitePage 保存页面 SEO/GSO 配置。
|
||||
func (c *ControllerV1) SaveSitePage(ctx context.Context, req *v1.SaveSitePageReq) (res *v1.SaveSitePageRes, err error) {
|
||||
page := model.SitePage{Id: req.Id, Code: req.Code, Title: req.Title, SeoTitle: req.SeoTitle, SeoKeywords: req.SeoKeywords, SeoDescription: req.SeoDescription, GsoContent: req.GsoContent, Status: req.Status, Sort: req.Sort}
|
||||
response.Success(ctx, service.Admin.SaveSitePage(page))
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// SiteSections 获取官网页面模块。
|
||||
func (c *ControllerV1) SiteSections(ctx context.Context, req *v1.SiteSectionsReq) (res *v1.SiteSectionsRes, err error) {
|
||||
response.Success(ctx, service.Admin.SiteSections(req.PageCode))
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// SaveSiteSection 保存官网页面模块。
|
||||
func (c *ControllerV1) SaveSiteSection(ctx context.Context, req *v1.SaveSiteSectionReq) (res *v1.SaveSiteSectionRes, err error) {
|
||||
section := model.SiteSection{Id: req.Id, PageCode: req.PageCode, SectionKey: req.SectionKey, Title: req.Title, Subtitle: req.Subtitle, Content: req.Content, Status: req.Status, Sort: req.Sort}
|
||||
response.Success(ctx, service.Admin.SaveSiteSection(section))
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// SiteMedia 获取官网素材列表。
|
||||
func (c *ControllerV1) SiteMedia(ctx context.Context, req *v1.SiteMediaReq) (res *v1.SiteMediaRes, err error) {
|
||||
response.Success(ctx, service.Admin.SiteMedia(req.MediaType))
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// SaveSiteMedia 保存官网素材。
|
||||
func (c *ControllerV1) SaveSiteMedia(ctx context.Context, req *v1.SaveSiteMediaReq) (res *v1.SaveSiteMediaRes, err error) {
|
||||
media := model.SiteMedia{Id: req.Id, MediaType: req.MediaType, GroupCode: req.GroupCode, Title: req.Title, Url: req.Url, Alt: req.Alt, Status: req.Status, Sort: req.Sort}
|
||||
response.Success(ctx, service.Admin.SaveSiteMedia(media))
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// RecruitJobs 获取后台招聘职位列表。
|
||||
func (c *ControllerV1) RecruitJobs(ctx context.Context, req *v1.RecruitJobsReq) (res *v1.RecruitJobsRes, err error) {
|
||||
response.Success(ctx, service.Admin.RecruitJobs())
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// SaveRecruitJob 保存招聘职位。
|
||||
func (c *ControllerV1) SaveRecruitJob(ctx context.Context, req *v1.SaveRecruitJobReq) (res *v1.SaveRecruitJobRes, err error) {
|
||||
job := model.RecruitJob{Id: req.Id, Title: req.Title, Department: req.Department, JobType: req.JobType, City: req.City, Salary: req.Salary, Experience: req.Experience, Description: req.Description, Requirements: req.Requirements, Manager: req.Manager, ManagerTitle: req.ManagerTitle, Email: req.Email, Phone: req.Phone, Featured: req.Featured, Status: req.Status, Sort: req.Sort}
|
||||
response.Success(ctx, service.Admin.SaveRecruitJob(job))
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// SiteSettings 获取站点全局配置。
|
||||
func (c *ControllerV1) SiteSettings(ctx context.Context, req *v1.SiteSettingsReq) (res *v1.SiteSettingsRes, err error) {
|
||||
response.Success(ctx, service.Admin.SiteSettings())
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// SaveSiteSettings 保存站点全局配置。
|
||||
func (c *ControllerV1) SaveSiteSettings(ctx context.Context, req *v1.SaveSiteSettingsReq) (res *v1.SaveSiteSettingsRes, err error) {
|
||||
settings := model.SiteSettings{SiteTitle: req.SiteTitle, SiteLogo: req.SiteLogo, SiteLogoDark: req.SiteLogoDark, SiteFavicon: req.SiteFavicon, IcpText: req.IcpText, Copyright: req.Copyright, ContactPhone: req.ContactPhone, ContactEmail: req.ContactEmail, ContactAddress: req.ContactAddress, DefaultSeo: req.DefaultSeo, DefaultGso: req.DefaultGso, AmapKey: req.AmapKey, AmapSecurityCode: req.AmapSecurityCode}
|
||||
response.Success(ctx, service.Admin.SaveSiteSettings(settings))
|
||||
return nil, nil
|
||||
}
|
||||
5
internal/controller/hello/hello.go
Normal file
5
internal/controller/hello/hello.go
Normal file
@@ -0,0 +1,5 @@
|
||||
// =================================================================================
|
||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
||||
// =================================================================================
|
||||
|
||||
package hello
|
||||
15
internal/controller/hello/hello_new.go
Normal file
15
internal/controller/hello/hello_new.go
Normal file
@@ -0,0 +1,15 @@
|
||||
// =================================================================================
|
||||
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
|
||||
// =================================================================================
|
||||
|
||||
package hello
|
||||
|
||||
import (
|
||||
"xk-of-api/api/hello"
|
||||
)
|
||||
|
||||
type ControllerV1 struct{}
|
||||
|
||||
func NewV1() hello.IHelloV1 {
|
||||
return &ControllerV1{}
|
||||
}
|
||||
13
internal/controller/hello/hello_v1_hello.go
Normal file
13
internal/controller/hello/hello_v1_hello.go
Normal file
@@ -0,0 +1,13 @@
|
||||
package hello
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
|
||||
"xk-of-api/api/hello/v1"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) Hello(ctx context.Context, req *v1.HelloReq) (res *v1.HelloRes, err error) {
|
||||
g.RequestFromCtx(ctx).Response.Writeln("Hello World!")
|
||||
return
|
||||
}
|
||||
9
internal/controller/lead/lead.go
Normal file
9
internal/controller/lead/lead.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package lead
|
||||
|
||||
// ControllerV1 是官网线索控制器。
|
||||
type ControllerV1 struct{}
|
||||
|
||||
// NewV1 创建官网线索控制器实例。
|
||||
func NewV1() *ControllerV1 {
|
||||
return &ControllerV1{}
|
||||
}
|
||||
27
internal/controller/lead/lead_v1.go
Normal file
27
internal/controller/lead/lead_v1.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package lead
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"xk-of-api/api/lead/v1"
|
||||
"xk-of-api/internal/model"
|
||||
"xk-of-api/internal/response"
|
||||
"xk-of-api/internal/service"
|
||||
)
|
||||
|
||||
// Create 创建官网咨询或预约演示线索。
|
||||
func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) {
|
||||
result, err := service.Lead.Create(model.Lead{Name: req.Name, Phone: req.Phone, ClinicName: req.ClinicName, City: req.City, PlanCode: req.PlanCode, SourcePage: req.SourcePage, Remark: req.Remark})
|
||||
if err != nil {
|
||||
response.Error(ctx, 400, err.Error())
|
||||
return nil, nil
|
||||
}
|
||||
response.Success(ctx, result)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// AdminList 获取后台线索列表。
|
||||
func (c *ControllerV1) AdminList(ctx context.Context, req *v1.AdminListReq) (res *v1.AdminListRes, err error) {
|
||||
response.Success(ctx, service.Lead.List())
|
||||
return nil, nil
|
||||
}
|
||||
9
internal/controller/order/order.go
Normal file
9
internal/controller/order/order.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package order
|
||||
|
||||
// ControllerV1 是订购订单控制器。
|
||||
type ControllerV1 struct{}
|
||||
|
||||
// NewV1 创建订购订单控制器实例。
|
||||
func NewV1() *ControllerV1 {
|
||||
return &ControllerV1{}
|
||||
}
|
||||
37
internal/controller/order/order_v1.go
Normal file
37
internal/controller/order/order_v1.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package order
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"xk-of-api/api/order/v1"
|
||||
"xk-of-api/internal/model"
|
||||
"xk-of-api/internal/response"
|
||||
"xk-of-api/internal/service"
|
||||
)
|
||||
|
||||
// Create 创建套餐订购订单。
|
||||
func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) {
|
||||
result, err := service.Order.Create(model.Order{TenantName: req.TenantName, ContactName: req.ContactName, Phone: req.Phone, PlanCode: req.PlanCode, BillingCycle: req.BillingCycle})
|
||||
if err != nil {
|
||||
response.Error(ctx, 400, err.Error())
|
||||
return nil, nil
|
||||
}
|
||||
response.Success(ctx, result)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// Detail 获取订单详情。
|
||||
func (c *ControllerV1) Detail(ctx context.Context, req *v1.DetailReq) (res *v1.DetailRes, err error) {
|
||||
if req.OrderNo == "" {
|
||||
response.Error(ctx, 400, "订单号不能为空")
|
||||
return nil, nil
|
||||
}
|
||||
response.Success(ctx, service.Order.Detail(req.OrderNo))
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// AdminList 获取后台订单列表。
|
||||
func (c *ControllerV1) AdminList(ctx context.Context, req *v1.AdminListReq) (res *v1.AdminListRes, err error) {
|
||||
response.Success(ctx, service.Order.List())
|
||||
return nil, nil
|
||||
}
|
||||
9
internal/controller/payment/payment.go
Normal file
9
internal/controller/payment/payment.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package payment
|
||||
|
||||
// ControllerV1 是支付回调控制器。
|
||||
type ControllerV1 struct{}
|
||||
|
||||
// NewV1 创建支付回调控制器实例。
|
||||
func NewV1() *ControllerV1 {
|
||||
return &ControllerV1{}
|
||||
}
|
||||
21
internal/controller/payment/payment_v1.go
Normal file
21
internal/controller/payment/payment_v1.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package payment
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
|
||||
"xk-of-api/api/payment/v1"
|
||||
"xk-of-api/internal/response"
|
||||
"xk-of-api/internal/service"
|
||||
)
|
||||
|
||||
// Notify 接收支付渠道回调,后续在 service 中扩展验签和状态流转。
|
||||
func (c *ControllerV1) Notify(ctx context.Context, req *v1.NotifyReq) (res *v1.NotifyRes, err error) {
|
||||
if req.Channel == "" {
|
||||
response.Error(ctx, 400, "支付渠道不能为空")
|
||||
return nil, nil
|
||||
}
|
||||
response.Success(ctx, service.Order.Notify(req.Channel, g.RequestFromCtx(ctx).GetMap()))
|
||||
return nil, nil
|
||||
}
|
||||
9
internal/controller/pricing/pricing.go
Normal file
9
internal/controller/pricing/pricing.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package pricing
|
||||
|
||||
// ControllerV1 是套餐定价控制器。
|
||||
type ControllerV1 struct{}
|
||||
|
||||
// NewV1 创建套餐定价控制器实例。
|
||||
func NewV1() *ControllerV1 {
|
||||
return &ControllerV1{}
|
||||
}
|
||||
21
internal/controller/pricing/pricing_v1.go
Normal file
21
internal/controller/pricing/pricing_v1.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package pricing
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"xk-of-api/api/pricing/v1"
|
||||
"xk-of-api/internal/response"
|
||||
"xk-of-api/internal/service"
|
||||
)
|
||||
|
||||
// Plans 获取官网可展示套餐。
|
||||
func (c *ControllerV1) Plans(ctx context.Context, req *v1.PlansReq) (res *v1.PlansRes, err error) {
|
||||
response.Success(ctx, service.Pricing.Plans())
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// AdminPlans 获取后台套餐列表。
|
||||
func (c *ControllerV1) AdminPlans(ctx context.Context, req *v1.AdminPlansReq) (res *v1.AdminPlansRes, err error) {
|
||||
response.Success(ctx, service.Pricing.Plans())
|
||||
return nil, nil
|
||||
}
|
||||
9
internal/controller/site/site.go
Normal file
9
internal/controller/site/site.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package site
|
||||
|
||||
// ControllerV1 是官网内容控制器。
|
||||
type ControllerV1 struct{}
|
||||
|
||||
// NewV1 创建官网内容控制器实例。
|
||||
func NewV1() *ControllerV1 {
|
||||
return &ControllerV1{}
|
||||
}
|
||||
27
internal/controller/site/site_v1_home.go
Normal file
27
internal/controller/site/site_v1_home.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package site
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"xk-of-api/api/site/v1"
|
||||
"xk-of-api/internal/response"
|
||||
"xk-of-api/internal/service"
|
||||
)
|
||||
|
||||
// Home 获取官网首页聚合内容。
|
||||
func (c *ControllerV1) Home(ctx context.Context, req *v1.HomeReq) (res *v1.HomeRes, err error) {
|
||||
response.Success(ctx, service.Site.Home())
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// Settings 获取前台站点公开配置。
|
||||
func (c *ControllerV1) Settings(ctx context.Context, req *v1.SettingsReq) (res *v1.SettingsRes, err error) {
|
||||
response.Success(ctx, service.Site.Settings())
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// RecruitJobs 获取前台招聘职位。
|
||||
func (c *ControllerV1) RecruitJobs(ctx context.Context, req *v1.RecruitJobsReq) (res *v1.RecruitJobsRes, err error) {
|
||||
response.Success(ctx, service.Site.RecruitJobs())
|
||||
return nil, nil
|
||||
}
|
||||
Reference in New Issue
Block a user