60 lines
3.3 KiB
Go
60 lines
3.3 KiB
Go
package service
|
||
|
||
import "xk-of-api/internal/model"
|
||
|
||
// SiteService 负责官网公开内容聚合,后续可替换为数据库读取 nl_site_page/nl_site_section。
|
||
type SiteService struct{}
|
||
|
||
// Site 暴露官网服务单例,控制器只调用服务层。
|
||
var Site = SiteService{}
|
||
|
||
// Home 返回萧康云医官网首页聚合数据。
|
||
func (s SiteService) Home() model.SiteHome {
|
||
return model.SiteHome{
|
||
Hero: model.HeroBlock{
|
||
Title: "萧康云医,让诊所经营更清楚、更稳定、更可增长",
|
||
Subtitle: "连接患者、医生、门店老板、推广员和 PC 管理后台,用一套 SaaS 平台完成获客、预约、接诊、复诊、经营分析和团队协同。",
|
||
PrimaryCTA: "预约演示",
|
||
SecondaryCTA: "查看定价",
|
||
Stats: []model.StatBlock{
|
||
{Value: "4端", Label: "小程序角色覆盖"},
|
||
{Value: "1套", Label: "PC 经营后台"},
|
||
{Value: "7x24", Label: "线上服务触达"},
|
||
},
|
||
},
|
||
Products: []model.ProductBlock{
|
||
{Name: "患者端", Role: "患者", Description: "预约、复诊、健康档案和服务提醒统一承载。", Features: []string{"在线预约", "复诊提醒", "服务记录"}},
|
||
{Name: "医生端", Role: "医生", Description: "帮助医生管理接诊流程、患者跟进和医嘱记录。", Features: []string{"患者管理", "接诊记录", "随访任务"}},
|
||
{Name: "门店老板端", Role: "经营者", Description: "实时查看门店经营、转化、复购和团队执行情况。", Features: []string{"经营看板", "员工绩效", "收入分析"}},
|
||
{Name: "推广员端", Role: "推广员", Description: "追踪推广码、线索归属和成交转化,降低获客管理成本。", Features: []string{"推广码", "线索归属", "佣金统计"}},
|
||
{Name: "PC 后台", Role: "管理员", Description: "完成权限、菜单、套餐、订单、线索和基础配置管理。", Features: []string{"权限菜单", "套餐管理", "订单管理"}},
|
||
},
|
||
Highlights: []model.ValueBlock{
|
||
{Title: "诊所全链路赋能", Description: "从获客、预约、接诊到复诊运营,减少系统割裂。", Icon: "fa-solid fa-route"},
|
||
{Title: "多角色协同", Description: "不同角色使用独立端口,数据统一汇总到经营后台。", Icon: "fa-solid fa-users-gear"},
|
||
{Title: "经营数据沉淀", Description: "沉淀线索、订单、患者服务和团队执行数据。", Icon: "fa-solid fa-chart-line"},
|
||
},
|
||
Faqs: []model.FaqBlock{
|
||
{Question: "适合哪些诊所?", Answer: "适合希望提升线上获客、复诊运营和经营管理效率的综合诊所、专科诊所和连锁门店。"},
|
||
{Question: "是否支持多门店?", Answer: "一期先保留租户主体,后续可扩展门店、员工和分账等完整经营表。"},
|
||
{Question: "可以先预约演示吗?", Answer: "可以,官网线索会进入后台,运营人员可跟进套餐和部署方案。"},
|
||
},
|
||
}
|
||
}
|
||
|
||
// Settings 返回前台可公开使用的站点配置,包含标题、LOGO、SEO/GSO 和地图配置。
|
||
func (s SiteService) Settings() model.SiteSettings {
|
||
return Admin.SiteSettings()
|
||
}
|
||
|
||
// RecruitJobs 返回前台启用状态的招聘职位。
|
||
func (s SiteService) RecruitJobs() []model.RecruitJob {
|
||
jobs := make([]model.RecruitJob, 0)
|
||
for _, job := range Admin.RecruitJobs() {
|
||
if job.Status == 1 {
|
||
jobs = append(jobs, job)
|
||
}
|
||
}
|
||
return jobs
|
||
}
|