Compare commits
6 Commits
c2807b54df
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 7cf72e7897 | |||
| fde4720fcc | |||
| 6ae504818d | |||
| f73783b742 | |||
| 77cc02fc95 | |||
| 1a42e055ae |
22
app/app.go
22
app/app.go
@@ -2,11 +2,11 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.hlsq.asia/mmorpg/service-common/discover/common"
|
"git.hlsq.asia/alex/service-common/discover/common"
|
||||||
"git.hlsq.asia/mmorpg/service-common/log"
|
"git.hlsq.asia/alex/service-common/log"
|
||||||
"git.hlsq.asia/mmorpg/service-common/module"
|
"git.hlsq.asia/alex/service-common/module"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/config"
|
"git.hlsq.asia/alex/service-qgdzs/config"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/grpc_server"
|
"git.hlsq.asia/alex/service-qgdzs/internal/grpcserver"
|
||||||
"github.com/judwhite/go-svc"
|
"github.com/judwhite/go-svc"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
@@ -16,15 +16,13 @@ type Program struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *Program) Init(_ svc.Environment) error {
|
func (p *Program) Init(_ svc.Environment) error {
|
||||||
if err := config.LoadConfig(); err != nil {
|
p.moduleList = append(p.moduleList, &module.Log{Cfg: config.Get().Log})
|
||||||
return err
|
|
||||||
}
|
|
||||||
p.moduleList = append(p.moduleList, &module.Base{Log: config.Get().Log})
|
|
||||||
p.moduleList = append(p.moduleList, &module.DB{Cfg: config.Get().DB, AppName: config.Get().App.Name})
|
p.moduleList = append(p.moduleList, &module.DB{Cfg: config.Get().DB, AppName: config.Get().App.Name})
|
||||||
p.moduleList = append(p.moduleList, &module.Grpc{Server: grpc_server.NewServer(config.Get().Serve.Grpc)})
|
p.moduleList = append(p.moduleList, &module.Snowflake{})
|
||||||
|
p.moduleList = append(p.moduleList, &module.Grpc{Server: grpcserver.NewServer(config.Get().Serve.Grpc)})
|
||||||
p.moduleList = append(p.moduleList, &ModuleTimer{})
|
p.moduleList = append(p.moduleList, &ModuleTimer{})
|
||||||
p.moduleList = append(p.moduleList, &module.Prometheus{MetricCfg: config.Get().Metric})
|
p.moduleList = append(p.moduleList, &module.Prometheus{Cfg: config.Get().Metric})
|
||||||
p.moduleList = append(p.moduleList, &module.Tracer{MetricCfg: config.Get().Metric, ServiceName: common.KeyDiscoverServiceNameQgdzs})
|
p.moduleList = append(p.moduleList, &module.Tracer{Cfg: config.Get().Metric, ServiceName: common.KeyDiscoverServiceNameQgdzs})
|
||||||
p.moduleList = append(p.moduleList, &module.Discover{})
|
p.moduleList = append(p.moduleList, &module.Discover{})
|
||||||
|
|
||||||
for _, m := range p.moduleList {
|
for _, m := range p.moduleList {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"git.hlsq.asia/mmorpg/service-common/module"
|
"git.hlsq.asia/alex/service-common/module"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/timer"
|
"git.hlsq.asia/alex/service-qgdzs/internal/timer"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
import "git.hlsq.asia/mmorpg/service-common/config"
|
import "git.hlsq.asia/alex/service-common/config"
|
||||||
|
|
||||||
const path = "./config"
|
const path = "./config"
|
||||||
|
|
||||||
|
|||||||
2
deploy/Jenkinsfile
vendored
2
deploy/Jenkinsfile
vendored
@@ -3,7 +3,7 @@ pipeline {
|
|||||||
|
|
||||||
environment {
|
environment {
|
||||||
// 仓库
|
// 仓库
|
||||||
REPO_URL = 'https://git.hlsq.asia/mmorpg/service-qgdzs.git'
|
REPO_URL = 'https://git.hlsq.asia/alex/service-qgdzs.git'
|
||||||
REPO_CREDENTIALS_ID = '80805ba2-f4ac-4d84-aee6-d4cce5fc0a96'
|
REPO_CREDENTIALS_ID = '80805ba2-f4ac-4d84-aee6-d4cce5fc0a96'
|
||||||
|
|
||||||
// Registry
|
// Registry
|
||||||
|
|||||||
4
go.mod
4
go.mod
@@ -1,9 +1,9 @@
|
|||||||
module git.hlsq.asia/mmorpg/service-qgdzs
|
module git.hlsq.asia/alex/service-qgdzs
|
||||||
|
|
||||||
go 1.24.0
|
go 1.24.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
git.hlsq.asia/mmorpg/service-common v0.0.0-20260206145147-5a0f4b71d430
|
git.hlsq.asia/alex/service-common master
|
||||||
github.com/judwhite/go-svc v1.2.1
|
github.com/judwhite/go-svc v1.2.1
|
||||||
github.com/robfig/cron/v3 v3.0.1
|
github.com/robfig/cron/v3 v3.0.1
|
||||||
google.golang.org/grpc v1.77.0
|
google.golang.org/grpc v1.77.0
|
||||||
|
|||||||
4
go.sum
4
go.sum
@@ -1,7 +1,7 @@
|
|||||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||||
git.hlsq.asia/mmorpg/service-common v0.0.0-20260206145147-5a0f4b71d430 h1:8aNIgKpU6HBg7h4ENjuGWshap+VxeKUmLE0IvFoWbug=
|
git.hlsq.asia/alex/service-common v0.0.0-20260211064821-558677bc3a2e h1:MNVS1NXNVn4DeTZPcvvA8YFM8afCzZedLPUYMffNgZs=
|
||||||
git.hlsq.asia/mmorpg/service-common v0.0.0-20260206145147-5a0f4b71d430/go.mod h1:mMhZcumphj6gaVTppVYsMTkd+5HupmQgAc53Pd4MH9I=
|
git.hlsq.asia/alex/service-common v0.0.0-20260211064821-558677bc3a2e/go.mod h1:mMhZcumphj6gaVTppVYsMTkd+5HupmQgAc53Pd4MH9I=
|
||||||
github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=
|
github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=
|
||||||
github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
github.com/IBM/sarama v1.46.3 h1:njRsX6jNlnR+ClJ8XmkO+CM4unbrNr/2vB5KK6UA+IE=
|
github.com/IBM/sarama v1.46.3 h1:njRsX6jNlnR+ClJ8XmkO+CM4unbrNr/2vB5KK6UA+IE=
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package ai
|
package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"git.hlsq.asia/mmorpg/service-common/log"
|
"git.hlsq.asia/alex/service-common/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Client struct {
|
type Client struct {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package model
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package model
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package model
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package model
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package model
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
|
|
||||||
"gorm.io/plugin/dbresolver"
|
"gorm.io/plugin/dbresolver"
|
||||||
|
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/model"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newCategory(db *gorm.DB, opts ...gen.DOOption) category {
|
func newCategory(db *gorm.DB, opts ...gen.DOOption) category {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
|
|
||||||
"gorm.io/plugin/dbresolver"
|
"gorm.io/plugin/dbresolver"
|
||||||
|
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/model"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newPointCard(db *gorm.DB, opts ...gen.DOOption) pointCard {
|
func newPointCard(db *gorm.DB, opts ...gen.DOOption) pointCard {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
|
|
||||||
"gorm.io/plugin/dbresolver"
|
"gorm.io/plugin/dbresolver"
|
||||||
|
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/model"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newPointRecord(db *gorm.DB, opts ...gen.DOOption) pointRecord {
|
func newPointRecord(db *gorm.DB, opts ...gen.DOOption) pointRecord {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
|
|
||||||
"gorm.io/plugin/dbresolver"
|
"gorm.io/plugin/dbresolver"
|
||||||
|
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/model"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newQuestion(db *gorm.DB, opts ...gen.DOOption) question {
|
func newQuestion(db *gorm.DB, opts ...gen.DOOption) question {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
|
|
||||||
"gorm.io/plugin/dbresolver"
|
"gorm.io/plugin/dbresolver"
|
||||||
|
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/model"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newRecord(db *gorm.DB, opts ...gen.DOOption) record {
|
func newRecord(db *gorm.DB, opts ...gen.DOOption) record {
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ package repository
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"git.hlsq.asia/mmorpg/service-common/db/redis"
|
"git.hlsq.asia/alex/service-common/db/redis"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/model"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/model"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/query"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/query"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CategoryDao struct {
|
type CategoryDao struct {
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package repository
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.hlsq.asia/mmorpg/service-common/db/mysql"
|
"git.hlsq.asia/alex/service-common/db/mysql"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/query"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/query"
|
||||||
)
|
)
|
||||||
|
|
||||||
var dbName mysql.DBName = "qgdzs_db"
|
var dbName mysql.DBName = "qgdzs_db"
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ package repository
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"git.hlsq.asia/mmorpg/service-common/db/redis"
|
"git.hlsq.asia/alex/service-common/db/redis"
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/model"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/model"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/query"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/query"
|
||||||
)
|
)
|
||||||
|
|
||||||
type PointCardDao struct {
|
type PointCardDao struct {
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ package repository
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"git.hlsq.asia/mmorpg/service-common/db/redis"
|
"git.hlsq.asia/alex/service-common/db/redis"
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/model"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/model"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/query"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/query"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ package repository
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"git.hlsq.asia/mmorpg/service-common/db/redis"
|
"git.hlsq.asia/alex/service-common/db/redis"
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/model"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/model"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/query"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/query"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ package repository
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"git.hlsq.asia/mmorpg/service-common/db/redis"
|
"git.hlsq.asia/alex/service-common/db/redis"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/model"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/model"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/query"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/query"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,37 +1,36 @@
|
|||||||
package grpc_server
|
package grpcserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"git.hlsq.asia/mmorpg/service-common/db/kafka"
|
"git.hlsq.asia/alex/service-common/db/kafka"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"
|
"git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/repository"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/repository"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/timer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 玩法 - 类目答题
|
// 玩法 - 类目答题
|
||||||
|
|
||||||
// GetAllCategory 获取所有类目
|
// GetAllCategory 获取所有类目
|
||||||
func (s *Server) GetAllCategory(ctx context.Context, req *grpc_pb.GetAllCategoryReq) (*grpc_pb.GetAllCategoryResp, error) {
|
func (s *Server) GetAllCategory(ctx context.Context, req *rspb.GetAllCategoryReq) (*rspb.GetAllCategoryResp, error) {
|
||||||
categoryList, err := repository.NewCategoryDao(ctx, s.query).FindAll()
|
categoryList, err := repository.NewCategoryDao(ctx, s.query).FindAll()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, utils.ErrorsWrap(err)
|
return nil, utils.ErrorsWrap(err)
|
||||||
}
|
}
|
||||||
categories := make([]*grpc_pb.GetAllCategoryItem, 0)
|
categories := make([]*rspb.GetAllCategoryItem, 0)
|
||||||
for _, category := range categoryList {
|
for _, category := range categoryList {
|
||||||
categories = append(categories, &grpc_pb.GetAllCategoryItem{
|
categories = append(categories, &rspb.GetAllCategoryItem{
|
||||||
Sn: category.Sn,
|
Sn: category.Sn,
|
||||||
Category: category.Category,
|
Category: category.Category,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return &grpc_pb.GetAllCategoryResp{
|
return &rspb.GetAllCategoryResp{
|
||||||
Categories: categories,
|
Categories: categories,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CategoryGetQuestion 获取题目
|
// CategoryGetQuestion 获取题目
|
||||||
func (s *Server) CategoryGetQuestion(ctx context.Context, req *grpc_pb.CategoryGetQuestionReq) (*grpc_pb.CategoryGetQuestionResp, error) {
|
func (s *Server) CategoryGetQuestion(ctx context.Context, req *rspb.CategoryGetQuestionReq) (*rspb.CategoryGetQuestionResp, error) {
|
||||||
question, err := repository.NewQuestionDao(ctx, s.query).FindByRandom(req.CategorySn)
|
question, err := repository.NewQuestionDao(ctx, s.query).FindByRandom(req.CategorySn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, utils.ErrorsWrap(err)
|
return nil, utils.ErrorsWrap(err)
|
||||||
@@ -41,7 +40,7 @@ func (s *Server) CategoryGetQuestion(ctx context.Context, req *grpc_pb.CategoryG
|
|||||||
return nil, utils.ErrorsWrapF(err, "data: %v", question.Options)
|
return nil, utils.ErrorsWrapF(err, "data: %v", question.Options)
|
||||||
}
|
}
|
||||||
category, _ := repository.NewCategoryDao(ctx, s.query).FindNameBySn(question.CategorySn)
|
category, _ := repository.NewCategoryDao(ctx, s.query).FindNameBySn(question.CategorySn)
|
||||||
return &grpc_pb.CategoryGetQuestionResp{
|
return &rspb.CategoryGetQuestionResp{
|
||||||
Sn: question.Sn,
|
Sn: question.Sn,
|
||||||
Question: question.Question,
|
Question: question.Question,
|
||||||
Options: options,
|
Options: options,
|
||||||
@@ -51,7 +50,7 @@ func (s *Server) CategoryGetQuestion(ctx context.Context, req *grpc_pb.CategoryG
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CategoryAnswerQuestion 回答题目
|
// CategoryAnswerQuestion 回答题目
|
||||||
func (s *Server) CategoryAnswerQuestion(ctx context.Context, req *grpc_pb.CategoryAnswerQuestionReq) (*grpc_pb.CategoryAnswerQuestionResp, error) {
|
func (s *Server) CategoryAnswerQuestion(ctx context.Context, req *rspb.CategoryAnswerQuestionReq) (*rspb.CategoryAnswerQuestionResp, error) {
|
||||||
utils.ShouldBindUsn(ctx, &req.USN)
|
utils.ShouldBindUsn(ctx, &req.USN)
|
||||||
|
|
||||||
question, err := repository.NewQuestionDao(ctx, s.query).FindBySn(req.Sn)
|
question, err := repository.NewQuestionDao(ctx, s.query).FindBySn(req.Sn)
|
||||||
@@ -64,7 +63,7 @@ func (s *Server) CategoryAnswerQuestion(ctx context.Context, req *grpc_pb.Catego
|
|||||||
}
|
}
|
||||||
// 保存答题记录
|
// 保存答题记录
|
||||||
if req.USN != 0 {
|
if req.USN != 0 {
|
||||||
kafka.NewProducer().Produce(ctx, &timer.TopicQuestionAnswer{
|
kafka.NewProducer().Produce(ctx, &kafka.TopicQuestionAnswer{
|
||||||
MessageSn: utils.SnowflakeInstance().Generate().Int64(),
|
MessageSn: utils.SnowflakeInstance().Generate().Int64(),
|
||||||
USN: req.USN,
|
USN: req.USN,
|
||||||
QuestionSn: question.Sn,
|
QuestionSn: question.Sn,
|
||||||
@@ -74,15 +73,15 @@ func (s *Server) CategoryAnswerQuestion(ctx context.Context, req *grpc_pb.Catego
|
|||||||
|
|
||||||
// 类目答题正确给5分,错误不得分
|
// 类目答题正确给5分,错误不得分
|
||||||
if req.Answer == question.Answer {
|
if req.Answer == question.Answer {
|
||||||
kafka.NewProducer().Produce(ctx, &timer.TopicAddPoint{
|
kafka.NewProducer().Produce(ctx, &kafka.TopicAddPoint{
|
||||||
MessageSn: utils.SnowflakeInstance().Generate().Int64(),
|
MessageSn: utils.SnowflakeInstance().Generate().Int64(),
|
||||||
Source: timer.AddPointSourceCategory,
|
Source: kafka.AddPointSourceCategory,
|
||||||
USN: req.USN,
|
USN: req.USN,
|
||||||
Point: 5,
|
Point: 5,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &grpc_pb.CategoryAnswerQuestionResp{
|
return &rspb.CategoryAnswerQuestionResp{
|
||||||
Answer: question.Answer,
|
Answer: question.Answer,
|
||||||
Explanation: question.Explanation,
|
Explanation: question.Explanation,
|
||||||
}, nil
|
}, nil
|
||||||
30
internal/grpcserver/server_custom.go
Normal file
30
internal/grpcserver/server_custom.go
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package grpcserver
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
|
"git.hlsq.asia/alex/service-qgdzs/internal/ai"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (s *Server) CustomAnswerQuestion(ctx context.Context, req *rspb.CustomAnswerQuestionReq) (*rspb.CustomAnswerQuestionResp, error) {
|
||||||
|
answer := ""
|
||||||
|
err := ai.NewAIClient(false, "", 0.9).
|
||||||
|
RequestAI(
|
||||||
|
[]string{
|
||||||
|
fmt.Sprintf(req.Question),
|
||||||
|
},
|
||||||
|
func(content string, i int) error {
|
||||||
|
if i == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
answer = content
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, utils.ErrorsWrap(err)
|
||||||
|
}
|
||||||
|
return &rspb.CustomAnswerQuestionResp{Answer: answer}, nil
|
||||||
|
}
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
package grpc_server
|
package grpcserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"git.hlsq.asia/mmorpg/service-common/config"
|
"git.hlsq.asia/alex/service-common/config"
|
||||||
"git.hlsq.asia/mmorpg/service-common/discover/common"
|
"git.hlsq.asia/alex/service-common/discover/common"
|
||||||
"git.hlsq.asia/mmorpg/service-common/net/grpc/service"
|
"git.hlsq.asia/alex/service-common/net/grpc/service"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"
|
"git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/query"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/query"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/repository"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/repository"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Server struct {
|
type Server struct {
|
||||||
grpc_pb.UnimplementedQgdzsServer
|
rspb.UnimplementedQgdzsServer
|
||||||
service.Base
|
service.Base
|
||||||
query *query.Query
|
query *query.Query
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@ func (s *Server) OnCustomGrpcServerOption() []grpc.ServerOption {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) OnInit(serve *grpc.Server) {
|
func (s *Server) OnInit(serve *grpc.Server) {
|
||||||
grpc_pb.RegisterQgdzsServer(serve, s)
|
rspb.RegisterQgdzsServer(serve, s)
|
||||||
s.query = repository.Query()
|
s.query = repository.Query()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package grpc_server
|
package grpcserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"git.hlsq.asia/mmorpg/service-common/db/redis"
|
"git.hlsq.asia/alex/service-common/db/redis"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 答题总数排行榜
|
// 答题总数排行榜
|
||||||
@@ -1,48 +1,48 @@
|
|||||||
package grpc_server
|
package grpcserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"git.hlsq.asia/mmorpg/service-common/net/http/http_resp"
|
"git.hlsq.asia/alex/service-common/net/http/httpresp"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"
|
"git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/repository"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/repository"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 模块 - 学识分
|
// 模块 - 学识分
|
||||||
|
|
||||||
// GetPointRecord 获取学识分获取记录
|
// GetPointRecord 获取学识分获取记录
|
||||||
func (s *Server) GetPointRecord(ctx context.Context, req *grpc_pb.GetPointRecordReq) (*grpc_pb.GetPointRecordResp, error) {
|
func (s *Server) GetPointRecord(ctx context.Context, req *rspb.GetPointRecordReq) (*rspb.GetPointRecordResp, error) {
|
||||||
if !utils.ShouldBindUsn(ctx, &req.USN) {
|
if !utils.ShouldBindUsn(ctx, &req.USN) {
|
||||||
return nil, http_resp.ParamError
|
return nil, httpresp.ParamError
|
||||||
}
|
}
|
||||||
records, count, err := repository.NewPointRecordsDao(ctx, s.query).FindByUSN(req.USN, int(req.Page), int(req.PageSize))
|
records, count, err := repository.NewPointRecordsDao(ctx, s.query).FindByUSN(req.USN, int(req.Page), int(req.PageSize))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, utils.ErrorsWrap(err)
|
return nil, utils.ErrorsWrap(err)
|
||||||
}
|
}
|
||||||
resp := make([]*grpc_pb.GetPointRecordItem, 0)
|
resp := make([]*rspb.GetPointRecordItem, 0)
|
||||||
for _, record := range records {
|
for _, record := range records {
|
||||||
resp = append(resp, &grpc_pb.GetPointRecordItem{
|
resp = append(resp, &rspb.GetPointRecordItem{
|
||||||
Source: record.Source,
|
Source: record.Source,
|
||||||
Point: record.Point,
|
Point: record.Point,
|
||||||
CreateTime: record.CreatedAt.Unix(),
|
CreateTime: record.CreatedAt.Unix(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return &grpc_pb.GetPointRecordResp{
|
return &rspb.GetPointRecordResp{
|
||||||
Count: int32(count),
|
Count: int32(count),
|
||||||
Records: resp,
|
Records: resp,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPoint 获取学识分
|
// GetPoint 获取学识分
|
||||||
func (s *Server) GetPoint(ctx context.Context, req *grpc_pb.GetPointReq) (*grpc_pb.GetPointResp, error) {
|
func (s *Server) GetPoint(ctx context.Context, req *rspb.GetPointReq) (*rspb.GetPointResp, error) {
|
||||||
if !utils.ShouldBindUsn(ctx, &req.USN) {
|
if !utils.ShouldBindUsn(ctx, &req.USN) {
|
||||||
return nil, http_resp.ParamError
|
return nil, httpresp.ParamError
|
||||||
}
|
}
|
||||||
pointCard, err := repository.NewPointCardDao(ctx, s.query).FindPointByUserSn(req.USN)
|
pointCard, err := repository.NewPointCardDao(ctx, s.query).FindPointByUserSn(req.USN)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, utils.ErrorsWrap(err)
|
return nil, utils.ErrorsWrap(err)
|
||||||
}
|
}
|
||||||
return &grpc_pb.GetPointResp{
|
return &rspb.GetPointResp{
|
||||||
Point: pointCard.Point,
|
Point: pointCard.Point,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
package grpc_server
|
package grpcserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.hlsq.asia/mmorpg/service-common/db/redis"
|
"git.hlsq.asia/alex/service-common/db/redis"
|
||||||
"git.hlsq.asia/mmorpg/service-common/log"
|
"git.hlsq.asia/alex/service-common/log"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"
|
"git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/ai"
|
"git.hlsq.asia/alex/service-qgdzs/internal/ai"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/model"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/model"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/repository"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/repository"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@@ -53,7 +53,7 @@ type Question struct {
|
|||||||
Difficulty int32 `json:"difficulty"` // 难度分
|
Difficulty int32 `json:"difficulty"` // 难度分
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) GenerateQuestion(ctx context.Context, req *grpc_pb.GenerateQuestionReq) (*grpc_pb.GenerateQuestionResp, error) {
|
func (s *Server) GenerateQuestion(ctx context.Context, req *rspb.GenerateQuestionReq) (*rspb.GenerateQuestionResp, error) {
|
||||||
categoryDao := repository.NewCategoryDao(ctx, s.query, redis.GetCacheClient())
|
categoryDao := repository.NewCategoryDao(ctx, s.query, redis.GetCacheClient())
|
||||||
category, err := categoryDao.FindAll()
|
category, err := categoryDao.FindAll()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1,19 +1,18 @@
|
|||||||
package grpc_server
|
package grpcserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"git.hlsq.asia/mmorpg/service-common/db/kafka"
|
"git.hlsq.asia/alex/service-common/db/kafka"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"
|
"git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/repository"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/repository"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/timer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 玩法 - 随机答题
|
// 玩法 - 随机答题
|
||||||
|
|
||||||
// QuicklyGetQuestion 获取题目
|
// QuicklyGetQuestion 获取题目
|
||||||
func (s *Server) QuicklyGetQuestion(ctx context.Context, req *grpc_pb.QuicklyGetQuestionReq) (*grpc_pb.QuicklyGetQuestionResp, error) {
|
func (s *Server) QuicklyGetQuestion(ctx context.Context, req *rspb.QuicklyGetQuestionReq) (*rspb.QuicklyGetQuestionResp, error) {
|
||||||
question, err := repository.NewQuestionDao(ctx, s.query).FindByRandom(0)
|
question, err := repository.NewQuestionDao(ctx, s.query).FindByRandom(0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, utils.ErrorsWrap(err)
|
return nil, utils.ErrorsWrap(err)
|
||||||
@@ -23,7 +22,7 @@ func (s *Server) QuicklyGetQuestion(ctx context.Context, req *grpc_pb.QuicklyGet
|
|||||||
return nil, utils.ErrorsWrapF(err, "data: %v", question.Options)
|
return nil, utils.ErrorsWrapF(err, "data: %v", question.Options)
|
||||||
}
|
}
|
||||||
category, _ := repository.NewCategoryDao(ctx, s.query).FindNameBySn(question.CategorySn)
|
category, _ := repository.NewCategoryDao(ctx, s.query).FindNameBySn(question.CategorySn)
|
||||||
return &grpc_pb.QuicklyGetQuestionResp{
|
return &rspb.QuicklyGetQuestionResp{
|
||||||
Sn: question.Sn,
|
Sn: question.Sn,
|
||||||
Question: question.Question,
|
Question: question.Question,
|
||||||
Options: options,
|
Options: options,
|
||||||
@@ -33,7 +32,7 @@ func (s *Server) QuicklyGetQuestion(ctx context.Context, req *grpc_pb.QuicklyGet
|
|||||||
}
|
}
|
||||||
|
|
||||||
// QuicklyAnswerQuestion 回答题目
|
// QuicklyAnswerQuestion 回答题目
|
||||||
func (s *Server) QuicklyAnswerQuestion(ctx context.Context, req *grpc_pb.QuicklyAnswerQuestionReq) (*grpc_pb.QuicklyAnswerQuestionResp, error) {
|
func (s *Server) QuicklyAnswerQuestion(ctx context.Context, req *rspb.QuicklyAnswerQuestionReq) (*rspb.QuicklyAnswerQuestionResp, error) {
|
||||||
utils.ShouldBindUsn(ctx, &req.USN)
|
utils.ShouldBindUsn(ctx, &req.USN)
|
||||||
|
|
||||||
question, err := repository.NewQuestionDao(ctx, s.query).FindBySn(req.Sn)
|
question, err := repository.NewQuestionDao(ctx, s.query).FindBySn(req.Sn)
|
||||||
@@ -46,7 +45,7 @@ func (s *Server) QuicklyAnswerQuestion(ctx context.Context, req *grpc_pb.Quickly
|
|||||||
}
|
}
|
||||||
// 保存答题记录
|
// 保存答题记录
|
||||||
if req.USN != 0 {
|
if req.USN != 0 {
|
||||||
kafka.NewProducer().Produce(ctx, &timer.TopicQuestionAnswer{
|
kafka.NewProducer().Produce(ctx, &kafka.TopicQuestionAnswer{
|
||||||
MessageSn: utils.SnowflakeInstance().Generate().Int64(),
|
MessageSn: utils.SnowflakeInstance().Generate().Int64(),
|
||||||
USN: req.USN,
|
USN: req.USN,
|
||||||
QuestionSn: question.Sn,
|
QuestionSn: question.Sn,
|
||||||
@@ -54,7 +53,7 @@ func (s *Server) QuicklyAnswerQuestion(ctx context.Context, req *grpc_pb.Quickly
|
|||||||
Answer: req.Answer,
|
Answer: req.Answer,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return &grpc_pb.QuicklyAnswerQuestionResp{
|
return &rspb.QuicklyAnswerQuestionResp{
|
||||||
Answer: question.Answer,
|
Answer: question.Answer,
|
||||||
Explanation: question.Explanation,
|
Explanation: question.Explanation,
|
||||||
}, nil
|
}, nil
|
||||||
@@ -1,19 +1,18 @@
|
|||||||
package grpc_server
|
package grpcserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"git.hlsq.asia/mmorpg/service-common/db/kafka"
|
"git.hlsq.asia/alex/service-common/db/kafka"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"
|
"git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/repository"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/repository"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/timer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 玩法 - 随机答题
|
// 玩法 - 随机答题
|
||||||
|
|
||||||
// RandomGetQuestion 获取题目
|
// RandomGetQuestion 获取题目
|
||||||
func (s *Server) RandomGetQuestion(ctx context.Context, req *grpc_pb.RandomGetQuestionReq) (*grpc_pb.RandomGetQuestionResp, error) {
|
func (s *Server) RandomGetQuestion(ctx context.Context, req *rspb.RandomGetQuestionReq) (*rspb.RandomGetQuestionResp, error) {
|
||||||
question, err := repository.NewQuestionDao(ctx, s.query).FindByRandom(0)
|
question, err := repository.NewQuestionDao(ctx, s.query).FindByRandom(0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, utils.ErrorsWrap(err)
|
return nil, utils.ErrorsWrap(err)
|
||||||
@@ -23,7 +22,7 @@ func (s *Server) RandomGetQuestion(ctx context.Context, req *grpc_pb.RandomGetQu
|
|||||||
return nil, utils.ErrorsWrapF(err, "data: %v", question.Options)
|
return nil, utils.ErrorsWrapF(err, "data: %v", question.Options)
|
||||||
}
|
}
|
||||||
category, _ := repository.NewCategoryDao(ctx, s.query).FindNameBySn(question.CategorySn)
|
category, _ := repository.NewCategoryDao(ctx, s.query).FindNameBySn(question.CategorySn)
|
||||||
return &grpc_pb.RandomGetQuestionResp{
|
return &rspb.RandomGetQuestionResp{
|
||||||
Sn: question.Sn,
|
Sn: question.Sn,
|
||||||
Question: question.Question,
|
Question: question.Question,
|
||||||
Options: options,
|
Options: options,
|
||||||
@@ -33,7 +32,7 @@ func (s *Server) RandomGetQuestion(ctx context.Context, req *grpc_pb.RandomGetQu
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RandomAnswerQuestion 回答题目
|
// RandomAnswerQuestion 回答题目
|
||||||
func (s *Server) RandomAnswerQuestion(ctx context.Context, req *grpc_pb.RandomAnswerQuestionReq) (*grpc_pb.RandomAnswerQuestionResp, error) {
|
func (s *Server) RandomAnswerQuestion(ctx context.Context, req *rspb.RandomAnswerQuestionReq) (*rspb.RandomAnswerQuestionResp, error) {
|
||||||
utils.ShouldBindUsn(ctx, &req.USN)
|
utils.ShouldBindUsn(ctx, &req.USN)
|
||||||
|
|
||||||
question, err := repository.NewQuestionDao(ctx, s.query).FindBySn(req.Sn)
|
question, err := repository.NewQuestionDao(ctx, s.query).FindBySn(req.Sn)
|
||||||
@@ -46,7 +45,7 @@ func (s *Server) RandomAnswerQuestion(ctx context.Context, req *grpc_pb.RandomAn
|
|||||||
}
|
}
|
||||||
// 保存答题记录
|
// 保存答题记录
|
||||||
if req.USN != 0 {
|
if req.USN != 0 {
|
||||||
kafka.NewProducer().Produce(ctx, &timer.TopicQuestionAnswer{
|
kafka.NewProducer().Produce(ctx, &kafka.TopicQuestionAnswer{
|
||||||
MessageSn: utils.SnowflakeInstance().Generate().Int64(),
|
MessageSn: utils.SnowflakeInstance().Generate().Int64(),
|
||||||
USN: req.USN,
|
USN: req.USN,
|
||||||
QuestionSn: question.Sn,
|
QuestionSn: question.Sn,
|
||||||
@@ -56,15 +55,15 @@ func (s *Server) RandomAnswerQuestion(ctx context.Context, req *grpc_pb.RandomAn
|
|||||||
|
|
||||||
// 随机答题正确给10分,错误不得分
|
// 随机答题正确给10分,错误不得分
|
||||||
if req.Answer == question.Answer {
|
if req.Answer == question.Answer {
|
||||||
kafka.NewProducer().Produce(ctx, &timer.TopicAddPoint{
|
kafka.NewProducer().Produce(ctx, &kafka.TopicAddPoint{
|
||||||
MessageSn: utils.SnowflakeInstance().Generate().Int64(),
|
MessageSn: utils.SnowflakeInstance().Generate().Int64(),
|
||||||
Source: timer.AddPointSourceRandom,
|
Source: kafka.AddPointSourceRandom,
|
||||||
USN: req.USN,
|
USN: req.USN,
|
||||||
Point: 10,
|
Point: 10,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &grpc_pb.RandomAnswerQuestionResp{
|
return &rspb.RandomAnswerQuestionResp{
|
||||||
Answer: question.Answer,
|
Answer: question.Answer,
|
||||||
Explanation: question.Explanation,
|
Explanation: question.Explanation,
|
||||||
}, nil
|
}, nil
|
||||||
@@ -1,28 +1,28 @@
|
|||||||
package grpc_server
|
package grpcserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"git.hlsq.asia/mmorpg/service-common/net/http/http_resp"
|
"git.hlsq.asia/alex/service-common/net/http/httpresp"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"
|
"git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/repository"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/repository"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 模块 - 答题记录
|
// 模块 - 答题记录
|
||||||
|
|
||||||
// GetRecord 获取答题记录
|
// GetRecord 获取答题记录
|
||||||
func (s *Server) GetRecord(ctx context.Context, req *grpc_pb.GetRecordReq) (*grpc_pb.GetRecordResp, error) {
|
func (s *Server) GetRecord(ctx context.Context, req *rspb.GetRecordReq) (*rspb.GetRecordResp, error) {
|
||||||
if !utils.ShouldBindUsn(ctx, &req.USN) {
|
if !utils.ShouldBindUsn(ctx, &req.USN) {
|
||||||
return nil, http_resp.ParamError
|
return nil, httpresp.ParamError
|
||||||
}
|
}
|
||||||
records, count, err := repository.NewRecordDao(ctx, s.query).FindByUSN(req.USN, int(req.Page), int(req.PageSize))
|
records, count, err := repository.NewRecordDao(ctx, s.query).FindByUSN(req.USN, int(req.Page), int(req.PageSize))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, utils.ErrorsWrap(err)
|
return nil, utils.ErrorsWrap(err)
|
||||||
}
|
}
|
||||||
resp := make([]*grpc_pb.GetRecordItem, 0)
|
resp := make([]*rspb.GetRecordItem, 0)
|
||||||
for _, record := range records {
|
for _, record := range records {
|
||||||
resp = append(resp, &grpc_pb.GetRecordItem{
|
resp = append(resp, &rspb.GetRecordItem{
|
||||||
QuestionSn: record.QuestionSn,
|
QuestionSn: record.QuestionSn,
|
||||||
Question: record.Question,
|
Question: record.Question,
|
||||||
Difficulty: record.Difficulty,
|
Difficulty: record.Difficulty,
|
||||||
@@ -32,14 +32,14 @@ func (s *Server) GetRecord(ctx context.Context, req *grpc_pb.GetRecordReq) (*grp
|
|||||||
CreateTime: record.CreatedAt.Unix(),
|
CreateTime: record.CreatedAt.Unix(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return &grpc_pb.GetRecordResp{
|
return &rspb.GetRecordResp{
|
||||||
Count: int32(count),
|
Count: int32(count),
|
||||||
Records: resp,
|
Records: resp,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetQuestionInfo 获取具体的题目
|
// GetQuestionInfo 获取具体的题目
|
||||||
func (s *Server) GetQuestionInfo(ctx context.Context, req *grpc_pb.GetQuestionInfoReq) (*grpc_pb.GetQuestionInfoResp, error) {
|
func (s *Server) GetQuestionInfo(ctx context.Context, req *rspb.GetQuestionInfoReq) (*rspb.GetQuestionInfoResp, error) {
|
||||||
question, err := repository.NewQuestionDao(ctx, s.query).FindBySn(req.QuestionSn)
|
question, err := repository.NewQuestionDao(ctx, s.query).FindBySn(req.QuestionSn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, utils.ErrorsWrap(err)
|
return nil, utils.ErrorsWrap(err)
|
||||||
@@ -49,7 +49,7 @@ func (s *Server) GetQuestionInfo(ctx context.Context, req *grpc_pb.GetQuestionIn
|
|||||||
return nil, utils.ErrorsWrapF(err, "data: %v", question.Options)
|
return nil, utils.ErrorsWrapF(err, "data: %v", question.Options)
|
||||||
}
|
}
|
||||||
category, _ := repository.NewCategoryDao(ctx, s.query).FindNameBySn(question.CategorySn)
|
category, _ := repository.NewCategoryDao(ctx, s.query).FindNameBySn(question.CategorySn)
|
||||||
return &grpc_pb.GetQuestionInfoResp{
|
return &rspb.GetQuestionInfoResp{
|
||||||
Question: question.Question,
|
Question: question.Question,
|
||||||
Options: options,
|
Options: options,
|
||||||
Category: category,
|
Category: category,
|
||||||
@@ -3,11 +3,11 @@ package timer
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"git.hlsq.asia/mmorpg/service-common/db/kafka"
|
"git.hlsq.asia/alex/service-common/db/kafka"
|
||||||
"git.hlsq.asia/mmorpg/service-common/log"
|
"git.hlsq.asia/alex/service-common/log"
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/model"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/model"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/internal/dao/repository"
|
"git.hlsq.asia/alex/service-qgdzs/internal/dao/repository"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -20,15 +20,7 @@ func startConsumer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TopicQuestionAnswer struct {
|
type TopicQuestionAnswer struct {
|
||||||
MessageSn int64 `json:"messageSn"`
|
kafka.TopicQuestionAnswer
|
||||||
USN int64 `json:"usn"`
|
|
||||||
QuestionSn int64 `json:"questionSn"`
|
|
||||||
QuestionAnswer string `json:"questionAnswer"`
|
|
||||||
Answer string `json:"answer"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *TopicQuestionAnswer) Name() string {
|
|
||||||
return "qgdzs.question.answer"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TopicQuestionAnswer) OnMessage(ctx context.Context) error {
|
func (t *TopicQuestionAnswer) OnMessage(ctx context.Context) error {
|
||||||
@@ -60,23 +52,7 @@ func (t *TopicQuestionAnswer) OnMessage(ctx context.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TopicAddPoint struct {
|
type TopicAddPoint struct {
|
||||||
MessageSn int64 `json:"messageSn"`
|
kafka.TopicAddPoint
|
||||||
Source AddPointSource `json:"source"`
|
|
||||||
USN int64 `json:"usn"`
|
|
||||||
Point int64 `json:"point"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type AddPointSource int32
|
|
||||||
|
|
||||||
const (
|
|
||||||
AddPointSourceUnKnown = 0
|
|
||||||
AddPointSourceRandom = 1
|
|
||||||
AddPointSourceCategory = 2
|
|
||||||
AddPointSourceQuickly = 3
|
|
||||||
)
|
|
||||||
|
|
||||||
func (t *TopicAddPoint) Name() string {
|
|
||||||
return "qgdzs.user.point"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TopicAddPoint) OnMessage(ctx context.Context) error {
|
func (t *TopicAddPoint) OnMessage(ctx context.Context) error {
|
||||||
|
|||||||
6
main.go
6
main.go
@@ -2,12 +2,16 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.hlsq.asia/mmorpg/service-qgdzs/app"
|
"git.hlsq.asia/alex/service-qgdzs/app"
|
||||||
|
"git.hlsq.asia/alex/service-qgdzs/config"
|
||||||
"github.com/judwhite/go-svc"
|
"github.com/judwhite/go-svc"
|
||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
if err := config.LoadConfig(); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
if err := svc.Run(&app.Program{}, syscall.SIGINT, syscall.SIGTERM, syscall.SIGKILL); err != nil {
|
if err := svc.Run(&app.Program{}, syscall.SIGINT, syscall.SIGTERM, syscall.SIGKILL); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user