
- 新增我的课程列表API接口 - 支持按学习状态筛选(全部/学习中/已完结) - 支持分页查询 - 包含课程基本信息、学习进度等数据 - 添加Apifox接口文档配置指南 文件变更: - server/api/admin/mycourse/mycourse.go - API接口定义 - server/internal/controller/admin/mycourse/mycourse.go - 控制器层 - server/internal/service/mycourse.go - 服务层(模拟数据) - server/internal/router/admin.go - 路由配置 - docs/apifox_config.md - 接口文档
80 lines
1.9 KiB
Go
80 lines
1.9 KiB
Go
// Package tcp
|
|
// @Link https://github.com/bufanyun/hotgo
|
|
// @Copyright Copyright (c) 2023 HotGo CLI
|
|
// @Author Ms <133814250@qq.com>
|
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
package tcp
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"github.com/gogf/gf/v2/os/gctx"
|
|
"github.com/gogf/gf/v2/os/gtime"
|
|
"hotgo/utility/encrypt"
|
|
)
|
|
|
|
// serverLogin 心跳
|
|
func (client *Client) serverHeartbeat() {
|
|
if !client.isLogin.Val() {
|
|
return
|
|
}
|
|
|
|
ctx := gctx.New()
|
|
if err := client.conn.Send(ctx, &ServerHeartbeatReq{}); err != nil {
|
|
client.logger.Warningf(ctx, "client ServerHeartbeat Send err:%+v", err)
|
|
return
|
|
}
|
|
}
|
|
|
|
// serverLogin 服务登陆
|
|
func (client *Client) serverLogin() {
|
|
auth := client.config.Auth
|
|
|
|
// 无需登录
|
|
if auth == nil {
|
|
return
|
|
}
|
|
|
|
data := &ServerLoginReq{
|
|
Name: auth.Name,
|
|
Extra: auth.Extra,
|
|
Group: auth.Group,
|
|
AppId: auth.AppId,
|
|
Timestamp: gtime.Timestamp(),
|
|
}
|
|
|
|
// 签名
|
|
data.Sign = encrypt.Md5ToString(fmt.Sprintf("%v%v%v", data.AppId, data.Timestamp, auth.SecretKey))
|
|
|
|
ctx := gctx.New()
|
|
if err := client.conn.Send(ctx, data); err != nil {
|
|
client.logger.Warningf(ctx, "client ServerLogin Send err:%+v", err)
|
|
return
|
|
}
|
|
}
|
|
|
|
// onResponseServerLogin 接收服务登陆响应结果
|
|
func (client *Client) onResponseServerLogin(ctx context.Context, req *ServerLoginRes) {
|
|
if err := req.GetError(); err != nil {
|
|
client.isLogin.Set(false)
|
|
client.logger.Warningf(ctx, "onResponseServerLogin destroy, err:%v", err)
|
|
client.Destroy()
|
|
return
|
|
}
|
|
|
|
client.isLogin.Set(true)
|
|
|
|
if client.config.LoginEvent != nil {
|
|
client.config.LoginEvent()
|
|
}
|
|
}
|
|
|
|
// onResponseServerHeartbeat 接收心跳响应结果
|
|
func (client *Client) onResponseServerHeartbeat(ctx context.Context, req *ServerHeartbeatRes) {
|
|
if err := req.GetError(); err != nil {
|
|
client.logger.Warningf(ctx, "onResponseServerHeartbeat err:%v", err)
|
|
return
|
|
}
|
|
client.conn.Heartbeat = gtime.Timestamp()
|
|
}
|