前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >游戏思维开发社区问答系统的感受

游戏思维开发社区问答系统的感受

作者头像
李海彬
发布2018-07-26 10:18:11
5630
发布2018-07-26 10:18:11
举报
文章被收录于专栏:Golang语言社区Golang语言社区

社区订阅号:Golang语言社区 社区服务号:Golang技术社区 如有问题或建议,请公众号留言;社区Leaf实战服务器开发火热报名中

大家好,最近在开发社区的问答系统,公众账号文章由于志愿者相继有事情,近期就更新的比较少,请大家见谅。本篇给大家讲讲社区系统的部分功能说明,后面必然开源,。

问答系统 开发选型

作为一个项目或者一个产品,开始项目之前,我们都会做下来讨论下技术选型的事情,由于社区彬哥我主导社区的发展,而且社区系统开发人员就2人,所以技术上走简单的路线 选择前后端分离 如下:

前端:原生(js/html);由于功能不难,没有必要用框架; 后端:golang; 通信方式:长连接模拟短链接(由于考虑到社区系统一对一的实时在线交流而设计) 通信协议:自定义协议(传输方式json) 如下:

代码语言:javascript
复制
// --------------------------------------------------------------------------------
// 【发表评论】 C2S_WinXinPlayer_Comment_WT_Proto
// 用户提问
// 数据需要保存用户的绑定信息
type C2S_WinXinPlayer_Comment_WT struct {
    Protocol  uint32 // 主协议
    Protocol2 uint32 // 子协议
    WenTiID   string // 问答的ID
    OpenID    string // 提问者的openid
    PLOpenID  string // PLOpenID,评论问题的人的openid
    Data      string // 组合数据发过来--服务器只负责保存---评论的内容
    Type      string // 评论的类型--提问者选择的最佳的评论
}
// S2C_WinXinPlayer_Comment_WT_Proto
type S2C_WinXinPlayer_Comment_WT struct {
    Protocol  uint32 // 主协议
    Protocol2 uint32 // 子协议
    IS_Succ   bool   // 是否成功
}
// 数据更新操作的说明
// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
// 问答结构
type WenDaJG struct {
    Id      string
    OpenID  string
    Name    string
    Headurl string
    Data    string
    PicData string
    Coin    string
    State   string
    Time    string
}
// 【获取问答列表】 C2S_WinXinPlayer_GetList_WT_Proto
type C2S_WinXinPlayer_GetList_WT struct {
    Protocol  uint32 // 主协议
    Protocol2 uint32 // 子协议
    OpenID    string // 用户的唯一凭证
    PageNum   string // 第一次获取PageNum == ”0“  ; 后面的页面 PageNum == 每页的最小ID
}
// 服务器返回
// S2C_WinXinPlayer_GetList_WT_Proto
type S2C_WinXinPlayer_GetList_WT struct {
    Protocol  uint32              // 主协议
    Protocol2 uint32              // 子协议
    Data      map[string]*WenDaJG // 5个数据
}
// --------------------------------------------------------------------------------
// 【提问功能】 C2S_WinXinPlayer_TiWen_Proto
// 用户提问
// 数据需要保存用户的绑定信息
type C2S_WinXinPlayer_TiWen struct {
    Protocol  uint32 // 主协议
    Protocol2 uint32 // 子协议
    OpenID    string // 用户的唯一凭证
    Data      string // 组合数据发过来--服务器只负责保存
    PicData   string // 图片数据  base64数据;服务器存储
    Coin      string // 悬赏金币---由提问者自己选择多少,且大于1至少,最高100
}
// S2C_WinXinPlayer_TiWen_Proto
type S2C_WinXinPlayer_TiWen struct {
    Protocol  uint32 // 主协议
    Protocol2 uint32 // 子协议
    IS_Succ   bool   // 是否成功
}
// 数据更新操作的说明
// --------------------------------------------------------------------------------
// 【用户讲师申请】 C2S_WinXinPlayer_Apply_Teacher_Proto
// 用户讲师申请--普通用户申请为老师
// 需要提供社区资格(申请码)--微店购买价值1000元,目活动5折
type C2S_WinXinPlayer_Apply_Teacher struct {
    Protocol   uint32 // 主协议
    Protocol2  uint32 // 子协议
    OpenID     string // 申请人的微信的OpenID 数据--服务器判断用户的唯一
    Apply_Code string // 申请码  GM 系统生成
}
// S2C_WinXinPlayer_Apply_Teacher_Proto
type S2C_WinXinPlayer_Apply_Teacher struct {
    Protocol  uint32 // 主协议
    Protocol2 uint32 // 子协议
    Code      string // 1:表示邀请码已经使用,2:邀请码不存在,3:申请成功,4:已经申请中
}
//--------------------------------------------------------------------------------
// 【临时房间交流】 Room_AC_Broadcast_Proto
// 广播协议(针对房间内人员有效)--临时房间交流
type Room_AC_Broadcast struct {
    Protocol  uint32 // 主协议
    Protocol2 uint32 // 子协议
    RoomUID   string // 消息接收的房间UID
    Data      string // 组合数据--手机+服务器按照一定规则定制;同时包括解答问题结束
}
//--------------------------------------------------------------------------------
// 【广播协议】
// 更新所有客户端的老师的状态信息
type Teacher_State_Broadcast struct {
    Protocol  uint32 // 主协议
    Protocol2 uint32 // 子协议
    T_UID     string // 老师UID信息--服务器唯一ID
    T_State   string // t_1:表示空闲,t_2:忙碌,t_3:不在线,t_4:未知状态
}
//--------------------------------------------------------------------------------
// 【答题者选择---老师】 C2S_WinXinPlayer_Choose_T_Proto
//  手机请求
type C2S_WinXinPlayer_Choose_T struct {
    Protocol     uint32 // 主协议
    Protocol2    uint32 // 子协议
    T_PlayerUID  string // 提问者的UID
    T_TeacherUID string // 选择的讲师的UID信息
    T_Coin       string // 选择悬赏的金币的钱数 -----> 社区币;用户兑换活动费用等 1元=10个,用户答题使用;充值到数据
    T_Problem    string // 问题(问题描述)--->  暂时不支持  代码块提交;迭代版本中再优化
    T_IsPic      bool   // 是否有图片数据;  false:表示无; true :存在
    T_PicBase64  string // 图片base64数据;注:图片限制再90K传输;且只可以是1张
    T_IsZJ       bool   // 如果老师角色此题难度 超过提问者悬赏,当提问者设置可以追加后,老师可以点击付费增加
}
// 【答题者选择---老师】 S2C_WinXinPlayer_Choose_T_Proto
// 服务器返回
// 此协议同样需要广播给对应老师及提问者
type S2C_WinXinPlayer_Choose_T struct {
    Protocol     uint32                  // 主协议
    Protocol2    uint32                  // 子协议
    T_State      string                  // t_1:表示空闲,t_2:忙碌,t_3:不在线,t_4:未知状态  可以去除,但是为了校验可以保留(如果因为网络广播协议没有收到,以此标志位为准)
    TMP_RoomData map[string]*TEMP_RoomST // 服务器建立临时交流房间结构
}
//--------------------------------------------------------------------------------
// 用户在社区系统的结构数据
type WX_Player_Data struct {
    UID       string
    Name      string
    GroupType string // 用户组的权限,1:为问答者;2:为老师;3:为官方监督员(禁言用户权限,封号处理等)
    Lev       string // 用户的级别;包括老师星级
    Coin      string // 社区币;用户兑换活动费用等 1元=10个,用户答题使用;充值到数据
    Time      string // 注册时间
}
type WX_Player_DataDB struct {
    ID      string
    OpenID  string
    Name    string
    HeadUrl string
    XingJi  string
    Coin    string
    Type    string
    Time    string
}
// 【微信用户报名的协议】 S2C_Net_WinXin_OpenID_BaoMing_Proto
type S2C_Net_WinXin_OpenID_BaoMing struct {
    Protocol  uint32                       // 主协议
    Protocol2 uint32                       // 子协议
    Data      map[string]*WX_Player_DataDB // 微信用户绑定的系统的存储数据
}
// 【微信用户报名的协议】 C2S_Net_WinXin_OpenID_BaoMing_Proto
type C2S_Net_WinXin_OpenID_BaoMing struct {
    Protocol  uint32 // 主协议
    Protocol2 uint32 // 子协议
    Code      string // 微信授权的Code
}
//--------------------------------------------------------------------------------

部分研发截图:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问答系统 开发选型
  • 部分研发截图:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档