feat(1.0):调试模版消息

This commit is contained in:
summer 2025-10-29 17:32:22 +08:00
parent b4d30ddbce
commit ce83dc1b02
9 changed files with 58 additions and 3 deletions

View File

@ -1695,6 +1695,10 @@ const docTemplate = `{
"name": { "name": {
"description": "名称", "description": "名称",
"type": "string" "type": "string"
},
"template_id": {
"description": "模版ID",
"type": "string"
} }
} }
}, },
@ -1854,6 +1858,10 @@ const docTemplate = `{
"description": "小程序名称", "description": "小程序名称",
"type": "string" "type": "string"
}, },
"template_id": {
"description": "模版ID",
"type": "string"
},
"updated_at": { "updated_at": {
"description": "更新时间", "description": "更新时间",
"type": "string" "type": "string"
@ -1867,6 +1875,10 @@ const docTemplate = `{
"description": "消息内容", "description": "消息内容",
"type": "string" "type": "string"
}, },
"id": {
"description": "消息ID",
"type": "string"
},
"msg_type": { "msg_type": {
"description": "消息类型(1:文本 2:图片)", "description": "消息类型(1:文本 2:图片)",
"type": "integer" "type": "integer"
@ -1939,6 +1951,10 @@ const docTemplate = `{
"name": { "name": {
"description": "名称", "description": "名称",
"type": "string" "type": "string"
},
"template_id": {
"description": "模版ID",
"type": "string"
} }
} }
}, },

View File

@ -1687,6 +1687,10 @@
"name": { "name": {
"description": "名称", "description": "名称",
"type": "string" "type": "string"
},
"template_id": {
"description": "模版ID",
"type": "string"
} }
} }
}, },
@ -1846,6 +1850,10 @@
"description": "小程序名称", "description": "小程序名称",
"type": "string" "type": "string"
}, },
"template_id": {
"description": "模版ID",
"type": "string"
},
"updated_at": { "updated_at": {
"description": "更新时间", "description": "更新时间",
"type": "string" "type": "string"
@ -1859,6 +1867,10 @@
"description": "消息内容", "description": "消息内容",
"type": "string" "type": "string"
}, },
"id": {
"description": "消息ID",
"type": "string"
},
"msg_type": { "msg_type": {
"description": "消息类型(1:文本 2:图片)", "description": "消息类型(1:文本 2:图片)",
"type": "integer" "type": "integer"
@ -1931,6 +1943,10 @@
"name": { "name": {
"description": "名称", "description": "名称",
"type": "string" "type": "string"
},
"template_id": {
"description": "模版ID",
"type": "string"
} }
} }
}, },

View File

@ -204,6 +204,9 @@ definitions:
name: name:
description: 名称 description: 名称
type: string type: string
template_id:
description: 模版ID
type: string
required: required:
- app_id - app_id
- app_secret - app_secret
@ -320,6 +323,9 @@ definitions:
name: name:
description: 小程序名称 description: 小程序名称
type: string type: string
template_id:
description: 模版ID
type: string
updated_at: updated_at:
description: 更新时间 description: 更新时间
type: string type: string
@ -329,6 +335,9 @@ definitions:
content: content:
description: 消息内容 description: 消息内容
type: string type: string
id:
description: 消息ID
type: string
msg_type: msg_type:
description: 消息类型(1:文本 2:图片) description: 消息类型(1:文本 2:图片)
type: integer type: integer
@ -378,6 +387,9 @@ definitions:
name: name:
description: 名称 description: 名称
type: string type: string
template_id:
description: 模版ID
type: string
required: required:
- app_id - app_id
- app_secret - app_secret

View File

@ -19,6 +19,7 @@ type createAppRequest struct {
Name string `json:"name" binding:"required"` // 名称 Name string `json:"name" binding:"required"` // 名称
Description string `json:"description"` // 描述 Description string `json:"description"` // 描述
Avatar string `json:"avatar"` // 头像 Avatar string `json:"avatar"` // 头像
TemplateID string `json:"template_id"` // 模版ID
} }
type createAppResponse struct { type createAppResponse struct {
@ -85,6 +86,7 @@ func (h *handler) CreateApp() core.HandlerFunc {
App.Name = req.Name App.Name = req.Name
App.Description = req.Description App.Description = req.Description
App.Avatar = req.Avatar App.Avatar = req.Avatar
App.TemplateID = req.TemplateID
App.CreatedUser = ctx.SessionUserInfo().UserName App.CreatedUser = ctx.SessionUserInfo().UserName
App.CreatedAt = time.Now() App.CreatedAt = time.Now()
if err := h.writeDB.MiniProgram.WithContext(ctx.RequestContext()).Create(App); err != nil { if err := h.writeDB.MiniProgram.WithContext(ctx.RequestContext()).Create(App); err != nil {

View File

@ -27,6 +27,7 @@ type listData struct {
Name string `json:"name"` // 小程序名称 Name string `json:"name"` // 小程序名称
Description string `json:"description"` // 小程序描述 Description string `json:"description"` // 小程序描述
Avatar string `json:"avatar"` // 小程序头像 Avatar string `json:"avatar"` // 小程序头像
TemplateID string `json:"template_id"` // 模版ID
CreatedAt string `json:"created_at"` // 创建时间 CreatedAt string `json:"created_at"` // 创建时间
UpdatedAt string `json:"updated_at"` // 更新时间 UpdatedAt string `json:"updated_at"` // 更新时间
} }
@ -141,6 +142,7 @@ func (h *handler) PageList() core.HandlerFunc {
Name: v.Name, Name: v.Name,
Description: v.Description, Description: v.Description,
Avatar: v.Avatar, Avatar: v.Avatar,
TemplateID: v.TemplateID,
CreatedAt: timeutil.FriendlyTime(v.CreatedAt), CreatedAt: timeutil.FriendlyTime(v.CreatedAt),
UpdatedAt: timeutil.FriendlyTime(v.UpdatedAt), UpdatedAt: timeutil.FriendlyTime(v.UpdatedAt),
} }

View File

@ -19,6 +19,7 @@ type modifyAppRequest struct {
Name string `json:"name" binding:"required"` // 名称 Name string `json:"name" binding:"required"` // 名称
Description string `json:"description"` // 描述 Description string `json:"description"` // 描述
Avatar string `json:"avatar"` // 头像 Avatar string `json:"avatar"` // 头像
TemplateID string `json:"template_id"` // 模版ID
} }
type modifyAppResponse struct { type modifyAppResponse struct {
@ -126,6 +127,7 @@ func (h *handler) ModifyApp() core.HandlerFunc {
checkIdInfo.Name = req.Name checkIdInfo.Name = req.Name
checkIdInfo.Description = req.Description checkIdInfo.Description = req.Description
checkIdInfo.Avatar = req.Avatar checkIdInfo.Avatar = req.Avatar
checkIdInfo.TemplateID = req.TemplateID
checkIdInfo.UpdatedUser = ctx.SessionUserInfo().UserName checkIdInfo.UpdatedUser = ctx.SessionUserInfo().UserName
checkIdInfo.UpdatedAt = time.Now() checkIdInfo.UpdatedAt = time.Now()
if err := h.writeDB.MiniProgram.WithContext(ctx.RequestContext()).Save(checkIdInfo); err != nil { if err := h.writeDB.MiniProgram.WithContext(ctx.RequestContext()).Save(checkIdInfo); err != nil {

View File

@ -5,13 +5,13 @@ import (
"encoding/hex" "encoding/hex"
"encoding/json" "encoding/json"
"fmt" "fmt"
"mini-chat/internal/pkg/miniprogram"
"net/http" "net/http"
"time" "time"
"mini-chat/internal/code" "mini-chat/internal/code"
"mini-chat/internal/pkg/core" "mini-chat/internal/pkg/core"
"mini-chat/internal/pkg/httpclient" "mini-chat/internal/pkg/httpclient"
"mini-chat/internal/pkg/miniprogram"
"mini-chat/internal/pkg/validation" "mini-chat/internal/pkg/validation"
"mini-chat/internal/repository/mysql/model" "mini-chat/internal/repository/mysql/model"
@ -125,7 +125,7 @@ func (h *handler) MiniprogramLogin() core.HandlerFunc {
} else { } else {
sendSubscribeMessageRequest := new(miniprogram.SendSubscribeMessageRequest) sendSubscribeMessageRequest := new(miniprogram.SendSubscribeMessageRequest)
sendSubscribeMessageRequest.Touser = openID sendSubscribeMessageRequest.Touser = openID
sendSubscribeMessageRequest.TemplateID = "9dCV3z7vRPBGm8iMtSXsD7ZVyUjld46w7HTH9zLnzWw" sendSubscribeMessageRequest.TemplateID = miniProgram.TemplateID
sendSubscribeMessageRequest.Page = "pages/contact/index" sendSubscribeMessageRequest.Page = "pages/contact/index"
sendSubscribeMessageRequest.MiniprogramState = "trial" sendSubscribeMessageRequest.MiniprogramState = "trial"
sendSubscribeMessageRequest.Lang = "zh_CN" sendSubscribeMessageRequest.Lang = "zh_CN"

View File

@ -31,6 +31,7 @@ func newMiniProgram(db *gorm.DB, opts ...gen.DOOption) miniProgram {
_miniProgram.AppID = field.NewString(tableName, "app_id") _miniProgram.AppID = field.NewString(tableName, "app_id")
_miniProgram.AppSecret = field.NewString(tableName, "app_secret") _miniProgram.AppSecret = field.NewString(tableName, "app_secret")
_miniProgram.AdminID = field.NewInt32(tableName, "admin_id") _miniProgram.AdminID = field.NewInt32(tableName, "admin_id")
_miniProgram.TemplateID = field.NewString(tableName, "template_id")
_miniProgram.Name = field.NewString(tableName, "name") _miniProgram.Name = field.NewString(tableName, "name")
_miniProgram.Description = field.NewString(tableName, "description") _miniProgram.Description = field.NewString(tableName, "description")
_miniProgram.Avatar = field.NewString(tableName, "avatar") _miniProgram.Avatar = field.NewString(tableName, "avatar")
@ -53,6 +54,7 @@ type miniProgram struct {
AppID field.String // 小程序ID AppID field.String // 小程序ID
AppSecret field.String // 小程序密钥 AppSecret field.String // 小程序密钥
AdminID field.Int32 // 管理员ID AdminID field.Int32 // 管理员ID
TemplateID field.String // 模版ID
Name field.String // 名称 Name field.String // 名称
Description field.String // 描述 Description field.String // 描述
Avatar field.String // 头像 Avatar field.String // 头像
@ -80,6 +82,7 @@ func (m *miniProgram) updateTableName(table string) *miniProgram {
m.AppID = field.NewString(table, "app_id") m.AppID = field.NewString(table, "app_id")
m.AppSecret = field.NewString(table, "app_secret") m.AppSecret = field.NewString(table, "app_secret")
m.AdminID = field.NewInt32(table, "admin_id") m.AdminID = field.NewInt32(table, "admin_id")
m.TemplateID = field.NewString(table, "template_id")
m.Name = field.NewString(table, "name") m.Name = field.NewString(table, "name")
m.Description = field.NewString(table, "description") m.Description = field.NewString(table, "description")
m.Avatar = field.NewString(table, "avatar") m.Avatar = field.NewString(table, "avatar")
@ -103,11 +106,12 @@ func (m *miniProgram) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
} }
func (m *miniProgram) fillFieldMap() { func (m *miniProgram) fillFieldMap() {
m.fieldMap = make(map[string]field.Expr, 11) m.fieldMap = make(map[string]field.Expr, 12)
m.fieldMap["id"] = m.ID m.fieldMap["id"] = m.ID
m.fieldMap["app_id"] = m.AppID m.fieldMap["app_id"] = m.AppID
m.fieldMap["app_secret"] = m.AppSecret m.fieldMap["app_secret"] = m.AppSecret
m.fieldMap["admin_id"] = m.AdminID m.fieldMap["admin_id"] = m.AdminID
m.fieldMap["template_id"] = m.TemplateID
m.fieldMap["name"] = m.Name m.fieldMap["name"] = m.Name
m.fieldMap["description"] = m.Description m.fieldMap["description"] = m.Description
m.fieldMap["avatar"] = m.Avatar m.fieldMap["avatar"] = m.Avatar

View File

@ -16,6 +16,7 @@ type MiniProgram struct {
AppID string `gorm:"column:app_id;not null;comment:小程序ID" json:"app_id"` // 小程序ID AppID string `gorm:"column:app_id;not null;comment:小程序ID" json:"app_id"` // 小程序ID
AppSecret string `gorm:"column:app_secret;not null;comment:小程序密钥" json:"app_secret"` // 小程序密钥 AppSecret string `gorm:"column:app_secret;not null;comment:小程序密钥" json:"app_secret"` // 小程序密钥
AdminID int32 `gorm:"column:admin_id;not null;comment:管理员ID" json:"admin_id"` // 管理员ID AdminID int32 `gorm:"column:admin_id;not null;comment:管理员ID" json:"admin_id"` // 管理员ID
TemplateID string `gorm:"column:template_id;not null;comment:模版ID" json:"template_id"` // 模版ID
Name string `gorm:"column:name;not null;comment:名称" json:"name"` // 名称 Name string `gorm:"column:name;not null;comment:名称" json:"name"` // 名称
Description string `gorm:"column:description;not null;comment:描述" json:"description"` // 描述 Description string `gorm:"column:description;not null;comment:描述" json:"description"` // 描述
Avatar string `gorm:"column:avatar;not null;comment:头像" json:"avatar"` // 头像 Avatar string `gorm:"column:avatar;not null;comment:头像" json:"avatar"` // 头像