[模板开发]用户中心模板开发

用户中心模板不是单页,它是一整套后台壳子。你改的时候要按整套页面一起看,不要只改一个文件就收工。

模板目录固定放在:

view/index/user/模板名/

1. 页面清单

页面作用
index.html用户中心总壳子
home.html首页仪表盘
profile.html个人资料
member.html会员中心
balance_recharge.html余额充值
points_recharge.html点数充值
balance_detail.html余额明细
recharge_record.html充值记录
points_log.html点数明细
temp_access.html临时访问管理
temp_access_error.html临时访问错误页
douyin/cklogin.html抖音账号管理
douyin/replylist.html回复列表
douyin/strategy.html回复策略
douyin/message_list.html私信列表
proxy/proxy.html天启配置
proxy/proxy_list.html代理列表
douyin/oauth_result.html授权结果页

2. 页面变量总表

页面主要变量
index.htmlusersitetemp_accesstemp_access_jsonmessage_accounts
home.htmlusersitetemp_access
profile.htmluseravataruser_captcha_enabledsecurity_providersecurity_captcha_type
member.htmlsiteusercurrent_memberlevelslevels_jsonenterprise_login_enablepay_config
balance_recharge.htmlsiteuserpay_configpricingactivities
points_recharge.htmlsiteuserpay_configpricing
balance_detail.htmlsiteuser
recharge_record.htmlsiteuser
points_log.htmlsite
temp_access.htmlpermission_groupspermission_groups_json
temp_access_error.htmlmsg
douyin/cklogin.htmlenterprise_login_enablesitepay_configpricingpay_config_jsonck_price_rules_json
douyin/replylist.htmlenterprise_login_enable
proxy/proxy.htmluseris_vip
proxy/proxy_list.htmluser
douyin/oauth_result.htmlsuccessmsg

pay_config_jsonck_price_rules_jsontemp_access_jsonpermission_groups_json 这些字段本身已经是 JSON 字符串,前端直接拿去做 JS 初始化就行。

3. 关键字段说明

user

最常用的字段如下:

字段说明
id用户 ID
username用户名
status账户状态
points点数
balance余额
member_level_id当前会员等级 ID
member_expire_time会员到期时间
member_personal_ck_quota会员赠送的个人 CK 免费额度
member_enterprise_ck_quota会员赠送的企业 CK 免费额度
avatar_url头像地址
email邮箱
vip_expire_timeVIP 到期时间
create_time注册时间
vip_statusVIP 状态

重点提醒一下:member_personal_ck_quota 和 member_enterprise_ck_quota 是会员自带的免费额度,不是“最大限制”。免费额度用完以后,再新增 CK 才会按定价继续扣费。

current_member

字段说明
level_name当前会员名称
expire_time到期时间
remaining_days剩余天数
expire_warning是否临期
personal_ck_quota个人 CK 免费额度
enterprise_ck_quota企业 CK 免费额度

levels

每个会员套餐常见字段:

字段说明
id套餐 ID
name套餐名称
buy_price当前购买价格
buy_plan_label当前购买周期文字
buy_unit_label周期单位文字
buy_type购买类型
buy_text按钮文案
description套餐说明
stock_text库存说明
personal_ck_count个人 CK 免费额度
enterprise_ck_count企业 CK 免费额度
send_rate_count发送频率限制次数
send_rate_seconds发送频率限制秒数
send_card_limit卡片发送上限
send_text_limit文本发送上限
is_current当前是否已购买
can_buy是否可购买
plans可购买方案列表

temp_access

字段说明
enabled是否启用临时访问
permissions当前可选权限列表

permission_groups

这个变量是临时访问页面的复选框数据,里面分 pages 和 operations 两层。页面用来选大类,操作用来选细项。

message_accounts

这是私信页左侧菜单里显示的个人 CK 账号列表,常用字段是:

字段说明
id账号 ID
menu_label菜单里短显示名
menu_title菜单里完整显示名

pay_config 和 pricing

  • pay_config:支付通道配置,前端主要拿来判断能显示哪些支付方式
  • pricing:价格策略配置,余额充值、点数充值、会员购买、CK 超额收费都会用到

4. 页面怎么写

  • 左侧菜单继续用 lay-href
  • 顶部跳转继续用 ew-href
  • window.tempAccessConfig 不要删,权限判断会用到
  • 表单按钮、提交地址、返回码尽量保持原样,不要随便改名字
  • pay_config_jsonck_price_rules_json 这些给 JS 直接读,不要再手动拼字符串

5. 接口返回示例

5.1 账号和资料

接口返回示例
GET /user/checkLogin{"code":200,"msg":"已登录","user":{...}}
GET /user/checkLogin 未登录{"code":201,"msg":"未登录"}
POST /user/logout{"code":200,"msg":"退出成功"}
POST /user/updateProfile{"code":200,"msg":"资料更新成功","user":{...},"logout":0}
POST /user/updateProfile 改密码{"code":200,"msg":"密码修改成功,请重新登录","logout":1,"redirect":"/user/login"}
POST /user/bindEmail{"code":200,"msg":"邮箱绑定成功","user":{...}}
POST /user/unbindEmail{"code":200,"msg":"邮箱已解除绑定","user":{...}}
POST /user/uploadAvatar{"code":200,"msg":"头像上传成功","data":{"src":"/assets/Userimg/xxx.jpg"},"user":{...}}
POST /user/sendEmailCode{"code":200,"msg":"验证码已发送","data":{"interval":180}}
GET /user/captcha{"code":200,"msg":"ok","data":{...}}
GET /user/captchaImage图片流,Content-Type: image/png 或 image/jpeg

5.2 充值和会员

接口返回示例
POST /user/createRechargeOrder{"code":200,"msg":"订单创建成功","data":{"trade_no":"202605220001","qrcode":"...","payurl":"...","timeout":300}}
POST /user/createPointsOrder{"code":200,"msg":"订单创建成功","data":{"trade_no":"202605220002","qrcode":"...","payurl":"...","timeout":300}}
POST /user/buyPointsByBalance{"code":200,"msg":"购买成功","data":{"points":100,"balance":"88.00"}}
POST /user/buyMember{"code":200,"msg":"购买成功","data":{...}}
POST /user/createMemberOrder{"code":200,"msg":"订单创建成功","data":{"trade_no":"202605220003","qrcode":"...","payurl":"..."}}
POST /user/redeemBalanceCard{"code":200,"msg":"兑换成功","data":{...}}
GET /user/rechargeOrderStatus{"code":200,"msg":"ok","data":{"trade_no":"202605220001","status":1,"status_text":"已支付","money":"100.00","balance":"188.00","points":300}}
GET /user/getBalanceDetail{"code":0,"data":[{...}],"count":20}
GET /user/getRechargeRecord{"code":0,"data":[{...}],"count":10}
POST /user/deleteRechargeRecord{"code":200,"msg":"删除成功"}
GET /user/getPointsLog{"code":0,"data":[{...}],"count":12}

5.3 临时访问

接口返回示例
GET /user/getTempAccessList{"code":0,"data":[{...}],"count":5}
POST /user/createTempAccess{"code":200,"msg":"临时访问链接创建成功","data":{"id":1,"key":"...","token":"...","url":"...","expires_at":"2026-05-23 10:00:00"}}
POST /user/deleteTempAccess{"code":200,"msg":"删除成功"}

5.4 抖音账号

接口返回示例
GET /douyin/getAccountStats{"code":200,"msg":"获取成功","data":{"days":30,"sent":123,"recv":456}}
GET /douyin/getTrend{"code":200,"msg":"获取成功","data":{"days":30,"sent":123,"recv":456}}
GET /douyin/getCkAccountList{"code":0,"msg":"获取成功","data":[{...}],"count":3}
GET /douyin/getCkAccountById{"code":0,"data":{...}}
POST /douyin/addCkAccount{"code":200,"msg":"企业配置添加成功","data":{"id":1,"points_deducted":0,"remaining_points":5,"expire_time":"2026-06-21 00:00:00"}}
POST /douyin/editCkAccount{"code":200,"msg":"修改成功"}
POST /douyin/removeCkAccount{"code":200,"msg":"删除成功"}
POST /douyin/renewCkAccount{"code":200,"msg":"续费成功","data":{"new_expire_time":"2026-06-21 00:00:00","remaining_points":4}}
POST /douyin/testCkAccount{"code":200,"msg":"配置有效","data":{"valid":true,"message":"配置有效"}}
POST /douyin/getCkAccountOptions{"code":200,"msg":"获取成功","data":[{...}]}
POST /douyin/getEnterpriseConfigOptions{"code":200,"msg":"获取成功","data":[{...}]}
GET /douyin/getPersonalCkList{"code":0,"msg":"获取成功","data":[{...}],"count":8}
GET /douyin/getPersonalCkById{"code":0,"data":{...}}
POST /douyin/addPersonalCk{"code":200,"msg":"添加成功","data":{"status":"success","id":1,"expire_time":"2026-06-21 00:00:00","remaining_points":5,"balance":"88.00"}}
POST /douyin/editPersonalCk{"code":200,"msg":"修改成功"}
POST /douyin/removePersonalCk{"code":200,"msg":"删除成功"}
POST /douyin/renewPersonalCk{"code":200,"msg":"续费成功","data":{"new_expire_time":"2026-06-21 00:00:00","remaining_points":4}}
POST /douyin/testPersonalCk{"code":200,"msg":"获取成功","data":{...}}
POST /douyin/verifyCookieOnly{"code":200,"msg":"验证成功","data":{...}}
POST /douyin/getPersonalCkOptions{"code":200,"msg":"获取成功","data":[{...}]}
GET /douyin/getPersonalCkStats{"code":200,"msg":"获取成功","data":{"days":30,"sent":123,"recv":456}}
GET /douyin/getPersonalCkLog{"code":0,"msg":"获取成功","data":[{...}],"count":20}
POST /douyin/getOAuthUrl{"code":200,"msg":"ok","data":{"url":"https://open.douyin.com/...","state":"..."}}
douyin/oauth_result.html页面接收 success 和 msg,成功时显示授权成功,失败时直接显示错误信息

5.5 回复和策略

接口返回示例
GET /douyin/getReplyList{"code":0,"msg":"获取成功","data":[{...}],"count":15}
POST /douyin/getReplyById{"code":200,"msg":"获取成功","data":{...}}
POST /douyin/addReply{"code":200,"msg":"新增成功","data":{...}}
POST /douyin/editReply{"code":200,"msg":"修改成功"}
POST /douyin/removeReply{"code":200,"msg":"删除成功"}
POST /douyin/batchRemoveReply{"code":200,"msg":"批量删除成功"}
POST /douyin/statusReply{"code":200,"msg":"状态已更新"}
GET /douyin/getStrategyList{"code":0,"msg":"获取成功","data":[{...}],"count":6}
POST /douyin/getStrategyById{"code":200,"msg":"获取成功","data":{...}}
POST /douyin/getStrategyReplyOptions{"code":200,"msg":"获取成功","data":[{...}]}
POST /douyin/getStrategyDmUsers{"code":200,"msg":"获取成功","data":[{...}]}
POST /douyin/saveStrategy{"code":200,"msg":"保存成功"}
POST /douyin/removeStrategy{"code":200,"msg":"删除成功"}

5.6 私信

接口返回示例
GET /douyin/getMessageAccountOptions{"code":200,"msg":"获取成功","data":[{...}]}
POST /douyin/getMessageConversationList{"code":200,"msg":"获取成功","data":[{...}]}
POST /douyin/getMessageConversationMessages{"code":200,"msg":"获取成功","data":[{...}]}
POST /douyin/pollMessageLocal{"code":200,"msg":"获取成功","data":[{...}]}
POST /douyin/sendMessageText{"code":200,"msg":"发送成功","data":{...}}
POST /douyin/sendMessageCard{"code":200,"msg":"发送成功","data":{"msg_id":"..."}}
POST /douyin/recallMessage{"code":200,"msg":"撤回成功","data":{...}}

5.7 代理和天启

接口返回示例
POST /douyin/getTianqiConfig{"code":200,"msg":"ok","data":{"secret":"...","sign":"...","enabled":1}}
POST /douyin/saveTianqiConfig{"code":200,"msg":"保存成功"}
POST /douyin/testTianqiProxy{"code":200,"msg":"测试成功","data":{"ip":"1.2.3.4","port":"8080"}}
GET /douyin/getCustomProxyList{"code":0,"msg":"ok","count":2,"data":[{...}]}
POST /douyin/getCustomProxyOptions{"code":0,"msg":"ok","data":[{...}]}
POST /douyin/saveCustomProxy{"code":200,"msg":"保存成功","data":{"id":1}}
POST /douyin/removeCustomProxy{"code":200,"msg":"删除成功"}
POST /douyin/testCustomProxy{"code":200,"msg":"测试成功,HTTP 200"}

5.8 黑名单和素材

接口返回示例
POST /douyin/getBlacklist{"code":0,"msg":"获取成功","data":[{...}],"count":10}
POST /douyin/addBlacklist{"code":200,"msg":"已加入黑名单"}
POST /douyin/removeBlacklist{"code":200,"msg":"已移除黑名单"}
POST /douyin/removeBlacklistByUid{"code":200,"msg":"已移除"}
POST /douyin/uploadMaterial{"code":200,"msg":"上传成功","data":{"filename":"xxx.png"}}
POST /douyin/getMaterialList{"code":200,"msg":"获取成功","data":[{...}]}
POST /douyin/deleteMaterial{"code":200,"msg":"删除成功"}

6. 实际写页面时记住这几条

  • 会员里的个人 CK 数量和企业 CK 数量是免费额度,不是硬限制
  • 列表接口统一读 count 和 data
  • 详情接口统一读 data
  • 操作接口统一看 code 和 msg
© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容