8 Commits
0.0.1 ... main

Author SHA1 Message Date
7a7706d0fb update 2025-11-28 16:42:18 +08:00
ef99f24495 feat: 添加云信群组api 2025-11-28 14:12:33 +08:00
e0fbc8567b feat: 添加云信群组api 2025-11-28 13:59:36 +08:00
465eeb5699 feat: 添加云信群组api 2025-11-28 13:28:00 +08:00
a131bf5cce feat: 添加云信群组api 2025-11-28 13:24:11 +08:00
1c8b60f4d2 feat(app): update 2025-11-19 14:27:07 +08:00
0c34585649 feat(app): update 2025-11-19 14:24:13 +08:00
1eac66d7fd feat(app): update 2025-11-19 11:30:26 +08:00
331 changed files with 11175 additions and 283 deletions

29
main.go Normal file
View File

@ -0,0 +1,29 @@
package main
import (
_ "gitea.ddegame.cn/open/servicebase/pkg/authmeta"
_ "gitea.ddegame.cn/open/servicebase/pkg/cache"
_ "gitea.ddegame.cn/open/servicebase/pkg/cerrors"
_ "gitea.ddegame.cn/open/servicebase/pkg/client"
_ "gitea.ddegame.cn/open/servicebase/pkg/common"
_ "gitea.ddegame.cn/open/servicebase/pkg/constant"
_ "gitea.ddegame.cn/open/servicebase/pkg/datasource"
_ "gitea.ddegame.cn/open/servicebase/pkg/dto"
_ "gitea.ddegame.cn/open/servicebase/pkg/helper"
_ "gitea.ddegame.cn/open/servicebase/pkg/htools"
_ "gitea.ddegame.cn/open/servicebase/pkg/log"
_ "gitea.ddegame.cn/open/servicebase/pkg/middleware"
_ "gitea.ddegame.cn/open/servicebase/pkg/model"
_ "gitea.ddegame.cn/open/servicebase/pkg/partner/mq"
_ "gitea.ddegame.cn/open/servicebase/pkg/repo"
_ "gitea.ddegame.cn/open/servicebase/pkg/req"
_ "gitea.ddegame.cn/open/servicebase/pkg/res"
_ "gitea.ddegame.cn/open/servicebase/pkg/secure"
_ "gitea.ddegame.cn/open/servicebase/pkg/starter"
_ "gitea.ddegame.cn/open/servicebase/pkg/tools"
_ "gitea.ddegame.cn/open/servicebase/pkg/utils"
)
func main() {
println("pkg main")
}

View File

@ -51,7 +51,7 @@ func Get(url string, headers map[string]string, params map[string]string) (res [
return
}
func Post(url string, headers map[string]string, body map[string]interface{}) (res []byte, e error) {
func Post(url string, headers map[string]string, body map[string]any) (res []byte, e error) {
var (
client = NewClient()
resp *http.Response

View File

@ -47,35 +47,35 @@ func CheckTable(c context.Context, table string) error {
return nil
}
func InsertOne(c context.Context, table string, record interface{}) (*mongo.InsertOneResult, error) {
func InsertOne(c context.Context, table string, record any) (*mongo.InsertOneResult, error) {
if e := CheckTable(c, table); e != nil {
return nil, e
}
return DB.Collection(table).InsertOne(c, record)
}
func SaveOne(c context.Context, table string, filter, record interface{}) (*mongo.UpdateResult, error) {
func SaveOne(c context.Context, table string, filter, record any) (*mongo.UpdateResult, error) {
if e := CheckTable(c, table); e != nil {
return nil, e
}
return DB.Collection(table).ReplaceOne(c, filter, record, options.Replace().SetUpsert(true))
}
func DeleteOne(c context.Context, table string, record interface{}) (*mongo.DeleteResult, error) {
func DeleteOne(c context.Context, table string, record any) (*mongo.DeleteResult, error) {
if e := CheckTable(c, table); e != nil {
return nil, e
}
return DB.Collection(table).DeleteOne(c, record)
}
func UpdateByID(c context.Context, table string, id interface{}, record interface{}) (*mongo.UpdateResult, error) {
func UpdateByID(c context.Context, table string, id any, record any) (*mongo.UpdateResult, error) {
if e := CheckTable(c, table); e != nil {
return nil, e
}
return DB.Collection(table).UpdateByID(c, id, bson.D{{Key: "$set", Value: record}})
}
func Page(c context.Context, table string, page req.Page, filter bson.D, results interface{}) (int64, error) {
func Page(c context.Context, table string, page req.Page, filter bson.D, results any) (int64, error) {
if e := CheckTable(c, table); e != nil {
return 0, e
}

View File

@ -26,15 +26,15 @@ type ImService struct {
// ImMsgBodyAttach IM消息 body对象
type ImMsgBodyAttach struct {
TypeCode string `json:"TypeCode"`
BizData interface{} `json:"BizData"`
Msg string `json:"msg,omitempty"`
TypeCode string `json:"TypeCode"`
BizData any `json:"BizData"`
Msg string `json:"msg,omitempty"`
}
// ChatRoomMsgAttach 聊天室自定义消息
type ChatRoomMsgAttach struct {
TypeCode string `json:"TypeCode"`
BizData interface{} `json:"BizData"`
TypeCode string `json:"TypeCode"`
BizData any `json:"BizData"`
}
// SendCustomMsgToChatroomByChatroomManager 向聊天室发消息

View File

@ -58,7 +58,7 @@ type H5ReCheckLivePersonTokenRsp struct {
IsPayed int64 `json:"isPayed"`
SimilarityScore float64 `json:"similarityScore"`
FaceMatched int64 `json:"faceMatched"`
FaceAttributeInfo interface{} `json:"faceAttributeInfo"`
FaceAttributeInfo any `json:"faceAttributeInfo"`
ExtInfo ExtInfoEntity `json:"extInfo"`
}

View File

@ -13,7 +13,7 @@ import (
sms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms/v20210111" // 引入sms
)
func _SmsFullContent(template string, param []interface{}) string {
func _SmsFullContent(template string, param []any) string {
var smsTemplateContentMap = map[string]string{
viper.GetString("tencent.smsTemplateCode"): "验证码为:{1},您正在登录,若非本人操作,请勿泄露。",
}

View File

@ -37,7 +37,7 @@ func WeSendMessage(openID, templateID string, message WeSendMessageReq, token st
return
}
}
gotRes, err := Post(strings.ReplaceAll(SendMessageURL, "ACCESS_TOKEN", token), nil, map[string]interface{}{
gotRes, err := Post(strings.ReplaceAll(SendMessageURL, "ACCESS_TOKEN", token), nil, map[string]any{
"template_id": templateID,
"touser": openID,
"data": message,

View File

@ -1,5 +0,0 @@
package comm
const (
ApiDomain = "https://www.jx3api.com"
)

View File

@ -135,7 +135,7 @@ const (
RISK_TYPE_TEXT_COMMENT = "comment_detection" //评论检测
)
func LogJson(v interface{}) {
func LogJson(v any) {
b, _ := json.Marshal(v)
logs.Info(string(b))
}

View File

@ -14,7 +14,7 @@ func NewStringBuilder() *StringBuilder {
return &StringBuilder{buf: bytes.Buffer{}}
}
func (this *StringBuilder) Append(obj interface{}) *StringBuilder {
func (this *StringBuilder) Append(obj any) *StringBuilder {
this.buf.WriteString(fmt.Sprintf("%v", obj))
return this
}
@ -24,7 +24,7 @@ func (this *StringBuilder) ToString() string {
}
// 字符串转int32
func JsonStr(v interface{}) string {
func JsonStr(v any) string {
bys, _ := json.Marshal(v)
return string(bys)
}

View File

@ -38,7 +38,9 @@ const (
DateDefaultFormat = "Y-m-d"
//post请求
HTTP_METHOD_POST = "POST"
HTTP_METHOD_POST = "POST"
HTTP_METHOD_PATCH = "PATCH"
HTTP_METHOD_DELETE = "DELETE"
// 消费单位名称
CONSUME_UNIT_NAME = "钻石"

View File

@ -37,15 +37,15 @@ type User struct {
WellNoIcon string
}
//字符串: text keyword
//整数 : byte, short, integer, long
//浮点数: float, double
//布尔型: boolean
//日期: date
var UserIndex = map[string]interface{}{
"settings": map[string]interface{}{"number_of_shards": 5, "number_of_replicas": 1},
"mappings": map[string]interface{}{
"properties": map[string]interface{}{
// 字符串: text keyword
// 整数 : byte, short, integer, long
// 浮点数: float, double
// 布尔型: boolean
// 日期: date
var UserIndex = map[string]any{
"settings": map[string]any{"number_of_shards": 5, "number_of_replicas": 1},
"mappings": map[string]any{
"properties": map[string]any{
"ActiveTime": map[string]string{"type": "date", "format": "yyyy-MM-dd HH:mm:ssZ||yyyy-MM-dd HH:mm:ss.SSSZ||yyyy-MM-ddZ||epoch_millis||epoch_second"},
"AlipayAccount": map[string]string{"type": "keyword"},
"AuthFailReason": map[string]string{"type": "text", "analyzer": "ik_max_word"},
@ -83,10 +83,10 @@ var UserIndex = map[string]interface{}{
},
}
var MessageIndex = map[string]interface{}{
"settings": map[string]interface{}{"number_of_shards": 5, "number_of_replicas": 1},
"mappings": map[string]interface{}{
"properties": map[string]interface{}{
var MessageIndex = map[string]any{
"settings": map[string]any{"number_of_shards": 5, "number_of_replicas": 1},
"mappings": map[string]any{
"properties": map[string]any{
"id": map[string]string{"type": "keyword"},
"curTime": map[string]string{"type": "date", "format": "yyyy-MM-dd HH:mm:ssZ||yyyy-MM-dd HH:mm:ss.SSSZ||yyyy-MM-ddZ||epoch_millis||epoch_second"},
},

View File

@ -70,7 +70,7 @@ func _connect() (c *elastic.Client) {
}
// 创建记录
func (*EsClient) Create(index, id string, model interface{}) (body string, success bool, msg string) {
func (*EsClient) Create(index, id string, model any) (body string, success bool, msg string) {
client := _connect()
_, e := client.Index().Index(index).Id(id).BodyJson(model).Do(context.Background())
if e != nil {
@ -99,7 +99,7 @@ func (*EsClient) Exists(index, id string) (exists, success bool, msg string, e e
}
// 更新记录
func (*EsClient) Update(index, id string, model interface{}) (body string, success bool, msg string) {
func (*EsClient) Update(index, id string, model any) (body string, success bool, msg string) {
client := _connect()
_, e := client.Update().Index(index).Id(id).Doc(model).Do(context.Background())
if e != nil {
@ -112,7 +112,7 @@ func (*EsClient) Update(index, id string, model interface{}) (body string, succe
}
// 搜索
func (*EsClient) Search(index string, key string, fields ...string) (body []interface{}, success bool, msg string) {
func (*EsClient) Search(index string, key string, fields ...string) (body []any, success bool, msg string) {
client := _connect()
logs.Info("ES Search index =", index, " key =", key, " fields =", fields)
var list []*elastic.WildcardQuery
@ -165,7 +165,7 @@ type ESSort struct {
}
// 搜索消息
func (*EsClient) SearchMulti(index string, filter ESFilter, page, size int) (result interface{}, success bool, msg string) {
func (*EsClient) SearchMulti(index string, filter ESFilter, page, size int) (result any, success bool, msg string) {
client := _connect()
var list []elastic.Query
for _, item := range filter.Queries {
@ -217,14 +217,14 @@ func (*EsClient) SearchMulti(index string, filter ESFilter, page, size int) (res
if e != nil {
return
}
var body []interface{}
var body []any
for _, item := range res.Hits.Hits {
b, _ := item.Source.MarshalJSON()
m := make(map[string]interface{})
m := make(map[string]any)
_ = json.Unmarshal(b, &m)
body = append(body, m)
}
result = map[string]interface{}{
result = map[string]any{
"Status": res.Status,
"Total": res.Hits.TotalHits,
"List": body,

View File

@ -45,7 +45,7 @@ func _testConnect() (c *elastic.Client) {
func TestClientNew(t *testing.T) {
var client EsClient
client.Create("es_index_message", "003", map[string]interface{}{
client.Create("es_index_message", "003", map[string]any{
"id": "003",
"curTime": 1440570500855,
"f1": 1234,

View File

@ -4,7 +4,7 @@ import "gitea.ddegame.cn/open/servicebase/pkg/common/http/dto"
type CommonResponse struct {
Code string
Result interface{}
Result any
Msg string
}
@ -22,15 +22,15 @@ type UserInviteSummaryResponse struct {
Msg string
}
func Success(data interface{}) (res CommonResponse) {
func Success(data any) (res CommonResponse) {
res.Code = "6000"
res.Result = data
return
}
func Page(data interface{}, count int64) (res CommonResponse) {
func Page(data any, count int64) (res CommonResponse) {
res.Code = "6000"
res.Result = map[string]interface{}{
res.Result = map[string]any{
"list": data,
"count": count,
}
@ -43,7 +43,7 @@ func Failed(msg string) (res CommonResponse) {
return
}
func Gen(code, msg string, result interface{}) (res CommonResponse) {
func Gen(code, msg string, result any) (res CommonResponse) {
res.Code = code
res.Msg = msg
res.Result = result

View File

@ -9,10 +9,10 @@ import (
// 事件
type Event struct {
MessageId string
Tag EventTag // 消息标签EventTagUser=用户
Flag EventFlag // 消息标签EventFlagCreate=创建 EventFlagUpdate=更新
EventId string // 事件ID
EventContent interface{} // 事件内容
Tag EventTag // 消息标签EventTagUser=用户
Flag EventFlag // 消息标签EventFlagCreate=创建 EventFlagUpdate=更新
EventId string // 事件ID
EventContent any // 事件内容
}
type EventTag string

View File

@ -11,6 +11,7 @@ import (
yunxin "gitea.ddegame.cn/open/servicebase/pkg/common/netease/dto"
"gitea.ddegame.cn/open/servicebase/pkg/htools"
"gitea.ddegame.cn/open/servicebase/pkg/log"
"gitea.ddegame.cn/open/servicebase/pkg/tools"
"github.com/pkg/errors"
"github.com/spf13/cast"
@ -108,7 +109,7 @@ func (client *ImClient) CreateImUser(userId, nickName, avatar string) error {
logs.Info("YunXin_SignUp_Success_AccID_%s:"+res, userId)
}
}
var body map[string]interface{}
var body map[string]any
if errJson := json.Unmarshal([]byte(res), &body); errJson != nil {
return errJson
}
@ -129,7 +130,7 @@ func (client *ImClient) GetImUserInfo(userId string) error {
sb.Append("accids=" + string(byteData))
res, err := HyTools.HttpDo(httpMethod, url, header, sb.ToString())
logs.Info("#" + "查询云信用户信息结果:" + res + "#")
var body map[string]interface{}
var body map[string]any
if errJson := json.Unmarshal([]byte(res), &body); errJson != nil {
return errJson
}
@ -423,7 +424,7 @@ func (client *ImClient) UpdateRoomInfo(request yunxin.UpdateRoomInfoRequest) (er
return
}
resMap := make(map[string]interface{})
resMap := make(map[string]any)
jsonErr := json.Unmarshal([]byte(res), &resMap)
if jsonErr != nil {
@ -689,7 +690,6 @@ func (client *ImClient) SendAttachMsg(parameters map[string]string) error {
// CreateChatGroup 创建群组
func (client *ImClient) CreateChatGroup(ctx context.Context, ownerUserId string, groupName string, inviteMem []string) (string, error) {
url := "https://open.yunxinapi.com/im/v2.1/teams"
httpMethod := common.HTTP_METHOD_POST
header := client.generateJsonHeader()
@ -736,6 +736,373 @@ func (client *ImClient) CreateChatGroup(ctx context.Context, ownerUserId string,
return cast.ToString(body.Data.TeamInfo.TeamID), nil
}
// GroupMsgSend 发送群消息
func (client *ImClient) GroupMsgSend(from, tid, _type, content, msg string) error {
url := "https://api.netease.im/nimserver/msg/sendMsg.action"
httpMethod := common.HTTP_METHOD_POST
header := client.generateHeader()
sb := HyTools.NewStringBuilder()
sb.Append("from=" + from)
sb.Append("&")
sb.Append("ope=" + "1")
sb.Append("&")
sb.Append("to=" + tid)
sb.Append("&")
sb.Append("type=" + _type) // 0文本消息1图片消息2语音消息3视频消息4地理位置消息6文件消息10提示消息100自定义消息
sb.Append("&")
sb.Append("body=" + content)
sb.Append("&")
sb.Append("antispam=true")
res, err := HyTools.HttpDo(httpMethod, url, header, sb.ToString())
// code Integer 状态码
// tid Long 网易云信服务器产生,群唯一标识
// faccid String 入群失败的账号accid列表格式为 JSONArray如果创建时邀请的成员中存在加群数量超过限制的情况会返回入群失败的 accid 以及附言msg
if err != nil {
// {"desc":"already register","code":414}
log.Info("GroupMsgSend %s:" + err.Error())
return err
} else {
var resDTO CreateImRes
json.Unmarshal([]byte(res), &resDTO)
if resDTO.Code != 200 {
log.Info("GroupMsgSend %s:" + resDTO.Desc)
} else {
log.Info("GroupMsgSend %s:" + res)
}
}
var body map[string]any
if errJson := json.Unmarshal([]byte(res), &body); errJson != nil {
return errJson
}
if int(body["code"].(float64)) != 200 {
return errors.New(body["desc"].(string))
}
return nil
}
// 创建云信账户
// 创建高级群,创建时即可通过设置群成员列表邀请用户入群。
// 建群成功会返回 tid网易云信服务器产生群唯一标识该字段需要保存以便于加人与踢人等后续操作。
// 如果创建时邀请的成员中存在加群数量超过限制的情况,会返回 faccid加群失败成员的 IM 账号)。
// 每个用户可创建的群数量有限制,限制值由 IM 套餐的群组配置决定,具体可前往 网易云信控制台 查看。
func (client *ImClient) CreateProGroup(tname, owner, announcement, avatar, msg string) (string, error) {
url := "https://api.netease.im/nimserver/team/create.action"
httpMethod := common.HTTP_METHOD_POST
header := client.generateHeader()
sb := HyTools.NewStringBuilder()
sb.Append("tname=" + tname)
sb.Append("&")
sb.Append("owner=" + owner)
sb.Append("&")
sb.Append("announcement=" + announcement)
sb.Append("&")
sb.Append("msg=" + msg)
sb.Append("&")
sb.Append("icon=" + avatar)
sb.Append("&")
sb.Append("members=[]")
sb.Append("&")
sb.Append("joinmode=" + "0")
sb.Append("&")
sb.Append("beinvitemode=" + "1")
sb.Append("&")
sb.Append("invitemode=" + "1") // 邀请权限即谁可以邀请他人入群0群主和管理员默认。1所有人
sb.Append("&")
sb.Append("teamMemberLimit=" + "3000") // 最大群成员数(包含群主),[2200(默认)]
sb.Append("&")
sb.Append("isNotifyCloseOnline=" + "0") // 是否关闭群通知消息在线发送0否。1
sb.Append("&")
sb.Append("isNotifyClosePersistent=" + "0") // 是否关闭存储离线/漫游/历史的群通知消息0否。1
res, err := HyTools.HttpDo(httpMethod, url, header, sb.ToString())
// code Integer 状态码
// tid Long 网易云信服务器产生,群唯一标识
// faccid String 入群失败的账号accid列表格式为 JSONArray如果创建时邀请的成员中存在加群数量超过限制的情况会返回入群失败的 accid 以及附言msg
if err != nil {
// {"desc":"already register","code":414}
log.Info("CreateProGroup %s:" + err.Error())
return "", err
} else {
var resDTO CreateImRes
json.Unmarshal([]byte(res), &resDTO)
if resDTO.Code != 200 {
log.Info("CreateProGroup_%s:" + resDTO.Desc)
} else {
log.Info("CreateProGroup_%s:" + res)
}
}
var body map[string]any
if errJson := json.Unmarshal([]byte(res), &body); errJson != nil {
return "", errJson
}
if int(body["code"].(float64)) != 200 {
return "", errors.New(body["desc"].(string))
}
return body["tid"].(string), nil
}
// GroupUpdate 更新群组
func (client *ImClient) GroupUpdate(ctx context.Context, id, operator_id, name, announcement, icon string) error {
url := "https://open.yunxinapi.com/im/v2.1/teams/" + id
httpMethod := common.HTTP_METHOD_PATCH
header := client.generateJsonHeader()
reqBody := map[string]any{
"operator_id": operator_id,
"team_type": 1,
"name": name,
"announcement": announcement,
// "intro": intro,
// "members_limit": members_limit,
// "join_mode": join_mode, 通过 SDK 侧操作申请入群的验证方式。 0默认无需验证直接入群。 1需要群主或管理员验证通过才能入群。 2不允许任何人申请入群。
// "agree_mode": agree_mode, 邀请入群时是否需要被邀请人的同意。0默认需要被邀请人同意才能入群。1不需要被邀请人同意直接入群。
// "invite_mode": invite_mode, 邀请权限即谁可以邀请他人入群。0默认群主和管理员。1所有人。
}
bodyBytes, err := json.Marshal(reqBody)
if err != nil {
return errors.WithStack(err)
}
res, err := HyTools.HttpDo(httpMethod, url, header, string(bodyBytes))
if err != nil {
log.InfoF("GroupUpdate %s:"+err.Error(), operator_id)
return errors.WithStack(err)
}
log.InfoF("update group chat resp: %s", res)
var body BaseRes[CreateChatGroupRsp]
err = json.Unmarshal([]byte(res), &body)
if err != nil {
return errors.WithStack(err)
}
if body.Code != 200 {
return errors.Errorf("GroupUpdate code(%d) not 200,msg: %s", body.Code, body.Msg)
}
return nil
}
// GroupTransfer 转让群组
func (client *ImClient) GroupTransfer(ctx context.Context, id, new_owner, extension string) error {
url := "https://open.yunxinapi.com/im/v2.1/teams/" + id + "/actions/transfer_owner"
httpMethod := common.HTTP_METHOD_PATCH
header := client.generateJsonHeader()
reqBody := map[string]any{
"team_type": 1,
"new_owner_account_id": new_owner,
"leave": 2,
"extension": extension,
}
bodyBytes, err := json.Marshal(reqBody)
if err != nil {
return errors.WithStack(err)
}
res, err := HyTools.HttpDo(httpMethod, url, header, string(bodyBytes))
if err != nil {
log.InfoF("GroupTransfer %s:"+err.Error(), id)
return errors.WithStack(err)
}
log.InfoF("GroupTransfer group chat resp: %s", res)
var body BaseRes[CreateChatGroupRsp]
err = json.Unmarshal([]byte(res), &body)
if err != nil {
return errors.WithStack(err)
}
if body.Code != 200 {
return errors.Errorf("GroupTransfer code(%d) not 200,msg: %s", body.Code, body.Msg)
}
return nil
}
// GroupManagerAdd
func (client *ImClient) GroupManagerAdd(ctx context.Context, id, operator_id, extension string, managers []string) error {
url := "https://open.yunxinapi.com/im/v2.1/teams/" + id + "/actions/add_manager"
httpMethod := common.HTTP_METHOD_POST
header := client.generateJsonHeader()
reqBody := map[string]any{
"team_type": 1,
"managers": managers,
"operator_id": operator_id,
"extension": extension,
}
bodyBytes, err := json.Marshal(reqBody)
if err != nil {
return errors.WithStack(err)
}
res, err := HyTools.HttpDo(httpMethod, url, header, string(bodyBytes))
if err != nil {
log.InfoF("GroupManagerAdd %s:"+err.Error(), operator_id)
return errors.WithStack(err)
}
log.InfoF("GroupManagerAdd group chat resp: %s", res)
var body BaseRes[CreateChatGroupRsp]
err = json.Unmarshal([]byte(res), &body)
if err != nil {
return errors.WithStack(err)
}
if body.Code != 200 {
return errors.Errorf("GroupManagerAdd code(%d) not 200,msg: %s", body.Code, body.Msg)
}
return nil
}
// GroupManagerRemove
func (client *ImClient) GroupManagerRemove(ctx context.Context, id, operator_id, extension string, managers []string) error {
url := "https://open.yunxinapi.com/im/v2.1/teams/" + id + "/actions/remove_manager"
httpMethod := common.HTTP_METHOD_DELETE
header := client.generateJsonHeader()
reqBody := map[string]any{
"team_type": 1,
"managers": managers,
"operator_id": operator_id,
"extension": extension,
}
bodyBytes, err := json.Marshal(reqBody)
if err != nil {
return errors.WithStack(err)
}
res, err := HyTools.HttpDo(httpMethod, url, header, string(bodyBytes))
if err != nil {
log.InfoF("GroupManagerRemove %s:"+err.Error(), operator_id)
return errors.WithStack(err)
}
log.InfoF("GroupManagerRemove group chat resp: %s", res)
var body BaseRes[CreateChatGroupRsp]
err = json.Unmarshal([]byte(res), &body)
if err != nil {
return errors.WithStack(err)
}
if body.Code != 200 {
return errors.Errorf("GroupManagerRemove code(%d) not 200,msg: %s", body.Code, body.Msg)
}
return nil
}
// GroupRemove
func (client *ImClient) GroupRemove(ctx context.Context, id, operator_id, extension string) error {
url := "https://open.yunxinapi.com/im/v2.1/teams/" + id
httpMethod := common.HTTP_METHOD_DELETE
header := client.generateJsonHeader()
reqBody := map[string]any{
"team_type": 1,
"operator_id": operator_id,
"extension": extension,
}
bodyBytes, err := json.Marshal(reqBody)
if err != nil {
return errors.WithStack(err)
}
res, err := HyTools.HttpDo(httpMethod, url, header, string(bodyBytes))
if err != nil {
log.InfoF("GroupRemove %s:"+err.Error(), operator_id)
return errors.WithStack(err)
}
log.InfoF("GroupRemove group chat resp: %s", res)
var body BaseRes[CreateChatGroupRsp]
err = json.Unmarshal([]byte(res), &body)
if err != nil {
return errors.WithStack(err)
}
if body.Code != 200 {
return errors.Errorf("GroupRemove code(%d) not 200,msg: %s", body.Code, body.Msg)
}
return nil
}
// GroupMemberKick
func (client *ImClient) GroupMemberKick(ctx context.Context, tid, operator_id, extension string, members []string) error {
url := "https://open.yunxinapi.com/im/v2/team_members/actions/kick_member"
httpMethod := common.HTTP_METHOD_DELETE
header := client.generateJsonHeader()
reqBody := map[string]any{
"team_type": 1,
"operator_id": operator_id,
"team_id": tools.StrToInt(tid),
"kick_account_ids": members,
"extension": extension,
}
bodyBytes, err := json.Marshal(reqBody)
if err != nil {
return errors.WithStack(err)
}
res, err := HyTools.HttpDo(httpMethod, url, header, string(bodyBytes))
if err != nil {
log.InfoF("GroupMemberKick %s:"+err.Error(), operator_id)
return errors.WithStack(err)
}
log.InfoF("GroupMemberKick group chat resp: %s", res)
var body BaseRes[CreateChatGroupRsp]
err = json.Unmarshal([]byte(res), &body)
if err != nil {
return errors.WithStack(err)
}
if body.Code != 200 {
return errors.Errorf("GroupMemberKick code(%d) not 200,msg: %s", body.Code, body.Msg)
}
return nil
}
// GroupMemberLeave
func (client *ImClient) GroupMemberLeave(ctx context.Context, tid, account_id, extension string) error {
url := "https://open.yunxinapi.com/im/v2/team_members/actions/leave"
httpMethod := common.HTTP_METHOD_DELETE
header := client.generateJsonHeader()
reqBody := map[string]any{
"team_type": 1,
"account_id": account_id,
"team_id": tools.StrToInt(tid),
"extension": extension,
}
bodyBytes, err := json.Marshal(reqBody)
if err != nil {
return errors.WithStack(err)
}
res, err := HyTools.HttpDo(httpMethod, url, header, string(bodyBytes))
if err != nil {
log.InfoF("GroupMemberLeave %s:"+err.Error(), tid)
return errors.WithStack(err)
}
log.InfoF("GroupMemberLeave group chat resp: %s", res)
var body BaseRes[CreateChatGroupRsp]
err = json.Unmarshal([]byte(res), &body)
if err != nil {
return errors.WithStack(err)
}
if body.Code != 200 {
return errors.Errorf("GroupMemberLeave code(%d) not 200,msg: %s", body.Code, body.Msg)
}
return nil
}
// GroupMemberJoin
func (client *ImClient) GroupMemberJoin(ctx context.Context, tid, operator_id, msg, extension string, invite_account_ids []string) error {
url := "https://open.yunxinapi.com/im/v2/team_members"
httpMethod := common.HTTP_METHOD_POST
header := client.generateJsonHeader()
reqBody := map[string]any{
"team_type": 1,
"operator_id": operator_id,
"team_id": tools.StrToInt(tid),
"msg": msg,
"invite_account_ids": invite_account_ids,
"extension": extension,
}
bodyBytes, err := json.Marshal(reqBody)
if err != nil {
return errors.WithStack(err)
}
res, err := HyTools.HttpDo(httpMethod, url, header, string(bodyBytes))
if err != nil {
log.InfoF("GroupMemberJoin %s:"+err.Error(), tid)
return errors.WithStack(err)
}
log.InfoF("GroupMemberJoin group chat resp: %s", res)
var body BaseRes[CreateChatGroupRsp]
err = json.Unmarshal([]byte(res), &body)
if err != nil {
return errors.WithStack(err)
}
if body.Code != 200 {
return errors.Errorf("GroupMemberJoin code(%d) not 200,msg: %s", body.Code, body.Msg)
}
return nil
}
// ================ 私有方法 ========================
func generateBodyData(parameters map[string]string) string {
sb := htools.NewStringBuilder()

View File

@ -1,8 +1,8 @@
package Netease
type ImResponse struct {
Code int `json:"code"`
Desc interface{} `json:"desc"`
Code int `json:"code"`
Desc any `json:"desc"`
}
// 获取聊天室在线列表返回对象

View File

@ -13,7 +13,7 @@ const (
type Response struct {
Code string
Result interface{}
Result any
Msg string
}
@ -31,13 +31,13 @@ func Invalid() string {
return string(str)
}
func Success(data interface{}) Response {
func Success(data any) Response {
response := Response{Code: SuccessCode, Result: data}
return response
}
func Page(data interface{}, count int64) Response {
response := Response{Code: SuccessCode, Result: map[string]interface{}{
func Page(data any, count int64) Response {
response := Response{Code: SuccessCode, Result: map[string]any{
"List": data,
"Count": count,
}}

View File

@ -20,7 +20,7 @@ var (
)
var (
pinyinTemp map[vowel]interface{}
pinyinTemp map[vowel]any
toneTemp map[vowel]vowel
)
@ -38,7 +38,7 @@ func LoadingPYFile(filename string) {
if err != nil {
panic(err)
}
pinyinTemp = make(map[vowel]interface{}, 0)
pinyinTemp = make(map[vowel]any, 0)
toneTemp = make(map[vowel]vowel)
for i, t := range ys {
toneTemp[t] = ws[i]

View File

@ -73,12 +73,12 @@ func ListToSet(list []string) (set []string) {
return
}
func ToJson(source interface{}) []byte {
func ToJson(source any) []byte {
b, _ := json.Marshal(source)
return b
}
func ToJsonString(source interface{}) string {
func ToJsonString(source any) string {
return string(ToJson(source))
}

View File

@ -122,7 +122,7 @@ func (p Point) Value() (driver.Value, error) {
return fmt.Sprintf("POINT(%f %f)", p.Lng, p.Lat), nil
}
func (p *Point) Scan(src interface{}) error {
func (p *Point) Scan(src any) error {
switch src.(type) {
case []byte:
var b = src.([]byte)
@ -156,7 +156,7 @@ func (loc Point) GormDataType() string {
func (loc Point) GormValue(ctx context.Context, db *gorm.DB) clause.Expr {
return clause.Expr{
SQL: "ST_PointFromText(?)",
Vars: []interface{}{fmt.Sprintf("POINT(%f %f)", loc.Lng, loc.Lat)},
Vars: []any{fmt.Sprintf("POINT(%f %f)", loc.Lng, loc.Lat)},
}
}

View File

@ -0,0 +1,6 @@
package dto
type AccessTokenDTO struct {
AccessToken string
ExpireTime string
}

View File

@ -0,0 +1,10 @@
package dto
type ActivityAttackBossRankDTO struct {
BossId string
MonsterId string
MonsterName string
MonsterIcon string
BossDieAt string
Rank string
}

123
pkg/dto/AppHomePageDTO.go Normal file
View File

@ -0,0 +1,123 @@
package dto
// 首页数据配置列表
type HomePageDataConfig struct {
DataType HomePageDataTypeEnum // 数据类型
DataSubjectId string // BANNER_LIST、SKILL_LIST为空SKILL_SKU_LIST时SKILLID,ROOM_LIST时TABID
LayoutType HomePageDataLayoutTypeEnum
MaxCount string // 最大多少个数量
Title string
GroupIcon string // 分组的ICON
}
// 首页列表数据类型枚举
type HomePageDataTypeEnum string
const (
BroadCastList HomePageDataTypeEnum = "BROADCAST_LIST" // 广播列表
BannerList HomePageDataTypeEnum = "BANNER_LIST" //BANNER列表
SkillList HomePageDataTypeEnum = "SKILL_LIST" // 技能分类列表
SkillSkuList HomePageDataTypeEnum = "SKILL_SKU_LIST" // 大神的资质列表
RoomList HomePageDataTypeEnum = "ROOM_LIST" // 房间列表
RoomCategory HomePageDataTypeEnum = "ROOM_CATEGORY" // 房间分类
FastEnterRoom HomePageDataTypeEnum = "FAST_ENTER_ROOM" // 快速进房
AnchorList HomePageDataTypeEnum = "ANCHOR_LIST" // 主播列表
FunctionList HomePageDataTypeEnum = "FUNCTION_LIST" // 功能列表
)
// 首页列表数据布局枚举 数据类型为SKILL_SKU_LIST时, slide=幻灯片滑动 grid=四方格
type HomePageDataLayoutTypeEnum string
const (
Slide HomePageDataLayoutTypeEnum = "slide"
Grid HomePageDataLayoutTypeEnum = "grid"
)
// 首页分组数据对象
type HomeListDataDTO struct {
GroupName string // 标题
DataType HomePageDataTypeEnum // 数据类型
LayoutType HomePageDataLayoutTypeEnum // 布局方式
MoreText string // 更多的文本 为空不显示
MoreScheme string // 更多链接
DataList interface{}
GroupIcon string // 分组的ICON
Ext interface{} `json:"Ext,omitempty"` // 扩展信息
}
// 技能SKU对象
type SkillSkuDTO struct {
UserId string
NickName string
Gender string
Birthday string
SkillId string
UserSkillId string
SkillName string
SkillMode string
SkillLevel string
SkillCompanionType string
SkillAuth string // 技术认证信息
BriefDesc string // 描述
LocationDesc string // 位置描述
LevelBgColor string
SkillLevelIcon string // 技能等级ICON
Avatar string
TotalOrderCount string
Price string `json:"Price,omitempty"`
UnitName string
AvgRateScore string
AudioTime string `json:"AudioTime,omitempty"`
SkillAudioUrl string `json:"SkillAudioUrl,omitempty"`
OnlineTime string // 在线时间
SchemeLink string `json:"SchemeLink,omitempty"` // 跳转链接
HornTagIcon string `json:"HornTagIcon,omitempty"` // 列表左上角ICON
GoodRate string // 好评率
CreateTime string
PlayTimeUnit string
OrderStatus string `json:"OrderStatus,omitempty"`
Playing bool
PlayTimeRange []SkillSkuPlayRange
SmallIcon string
ColorFrom string
ColorTo string
SkuMedalList []VipIconDTO
NameTextColor string
LevelTextColor string
PropTimbre []PropDTO // 音色信息
Props []PropDTO // 音色信息 - 为了兼容
OrderRank *SkillSkuOrderRank `json:"OrderRank,omitempty"` // 订单排行 城市排行
Distance string
LocationCountry string
LocationProvince string
LocationCity string
GuildBase
}
type SkillSkuPlayRange struct {
Start string
End string
}
type SkillSkuOrderRank struct {
Type string // country province city
Icon string // 图标
Rank int64 // 排名
SkillColor string // 技能颜色
SkillDesc string // 技能描述
RankColor string // 排名颜色
RankDesc string // 排名描述
BgColor string // 背景色
}
type HomeUserTimbreRes struct {
UserId string
NickName string
Avatar string
IsFollowTa string `json:"IsFollowTa,omitempty"` // 是否关注他
TimbreValue string
TimbreUrl string
}

22
pkg/dto/BannerDTO.go Normal file
View File

@ -0,0 +1,22 @@
package dto
type BannerDTO struct {
BannerId string
Title string
ImageUrl string
LinkUrl string
BackgroundUrl string
ShareIconUrl string
ShareLinkUrl string
ShareTitle string
ShareDescription string
Scheme string
MinApiNum string
BeginViewAt string
EndViewAt string
}
type FunctionDTO struct {
ImageUrl string
Scheme string
}

9
pkg/dto/BroadCastDTO.go Normal file
View File

@ -0,0 +1,9 @@
package dto
type BroadCastDTO struct {
BroadcastId string
Title string
Content string
SchemeLink string
TextColor string
}

View File

@ -0,0 +1,12 @@
package dto
// 魅力流水明细
type CharmJournalDTO struct {
JournalId string
CharmNum string // 魅力值数量
CreateTime string // 交易时间
InOrOut string // 进出
SectionTitle string // 时间年月
Description string // 交易说明
Balance string
}

View File

@ -0,0 +1,13 @@
package dto
type ChatroomActivityDTO struct {
ActivityId string
ActivityName string
ActivityImageUrl string
ActivityScheme string
AmountType string
OpenType string
ActionType string // 操作类型 1=打开scheme链接 2=购买赠送
ActPrice string // 显示的价格
ActTagIcon string
}

View File

@ -0,0 +1,39 @@
package dto
// 聊天室命令执行返回结果
type ChatroomCmdResult struct {
Version string // 命令版本号
ChatroomId string // 聊天室Id
CmdCode string // 命令代码
RoomName string // 聊天室名称
TemplateId string // 聊天室模板ID
SeatIndex string // 位置索引
UserId string // 用户ID
UserNo string // 用户No
Avatar string // 用户头像
Birthday string // 用户生日
Gender string // 用户性别
NickName string // 用户昵称
VipLevel string // 用户vip等级
IsAdmin string // 是否管理员
Charm string // 用户魅力值
SelectIndex string `json:"SelectIndex,omitempty"` // 交友模板用 选择的座位号
SelectUserId string `json:"SelectUserId,omitempty"` // 交友模板用 选择的用户ID
SelectAvatar string `json:"SelectAvatar,omitempty"` // 交友模板用 选择的用户头像
SelectNickName string `json:"SelectNickName,omitempty"` // 交友模板用 选择的用户头像
InLove string `json:"InLove,omitempty"` // 交友模板用 互相选择
SeatType string `json:"SeatType,omitempty"` // 座位类型
AvatarDecoration string `json:"AvatarDecoration,omitempty"` // 头饰 上麦命令传用户头饰
DecorationFormat string `json:"DecorationFormat,omitempty"` // 头饰格式
CountDown string `json:"CountDown,omitempty"` //SeatIndex的座位倒计时
NameColor string `json:"NameColor,omitempty"` // 用户昵称的颜色
NobilitySeatNameColor []string `json:"NobilitySeatNameColor,omitempty"` // 贵族麦上昵称颜色
VipConfig UserVipConfigDTO // 用户VIP CONFIG
InLoveScene FriendShipRoomSceneDTO // 交友模板用 牵手场景
AllowQueue string // 禁麦= 不允许排队 开麦=允许排队
DownUserId string // 下麦人 105
DownSeatIndex string // 下麦位置 105
UpUserId string // 上麦位置 105
UpSeatIndex string // 上麦人 105
UpSeatMute string // 105 上麦后是否禁麦 1=禁麦 0=开麦
}

69
pkg/dto/ChatroomDTO.go Normal file
View File

@ -0,0 +1,69 @@
package dto
type ChatroomDTO struct {
ChatroomId string // 房间ID
RoomNo string // 房间NO
TotalIncome string // 总收入
WeeklyTotalIncome string // 周榜收入
RoomName string // 房间名称
MessageRoomId string // 云信消息聊天室ID
OnlineUserCount string // 在线人数
TemplateId string // 模板ID
RoomPwd string // 房间密码
IsLocked string // 是否有锁
RoomOwner ListUserDTO // 房主信息
AdminList []string // 管理员ID列表
IsCollect string // 是否收藏该房间
UserSeat string // 用户座位框
IsSuperAdmin string // 是否超管
RoomOnlineHidden string // 房间在线列表隐身
MaxMemberCount string // 房间最大人数
BackgroundImg string // 背景图
SeatFrameUrl string // 座位框
IsRoomTopUser string // 是否榜一
RoomTag string // 标签
RobotCount string // 机器人数
TabId string // 分类id
GuardSeatValue string `json:"GuardSeatValue,omitempty"` // 守护位的值,电台模板的用户进入
GuardSeatType string `json:"GuardSeatType,omitempty"` // 守护位的值,电台模板的用户进入
GuardIcon string `json:"GuardIcon,omitempty"` // 守护位的值,电台模板的用户进入
ToPrevRoomWeeklyRevenue string // 距离周房间榜前一名的收入差异
GuestCanUseEmoji string // 不在麦上是否可以发表情1=能 0=不能
SendMessageTimeGap string // 发消息时间间隔 -1 不允许发言 0=不受限制 10=10s发一次言
UpSeatType string // 上麦方式1=排麦 2=自由上麦
//1.游戏场景; 普通音质 + audioshowroom
//2. 娱乐场景; 高音质 + audioshowroom
//3.K歌场景; 高音质 + gamestreamging
AudioQualityLevel string // 音质等级
SkewerBtnIcon string
HiteggBtnIcon string
IsRecordCharm string // 是否记录魅力
AudioChannelType string // 音频服务商
RoomAvatar string // 房间头像
WellNoIcon string `json:"WellNoIcon,omitempty"` // 房间靓号ICON
Hot string
Announcement string
WelcomeMessage string
DispatchOrder ChatroomDispatchOrderDTO `json:"DispatchOrder,omitempty"` // 派单对象
UserVipConfig UserVipConfigDTO `json:"UserVipConfig,omitempty"` // 用户VIP配置对象
RoomConsumeRankBackImg string `json:"RoomConsumeRankBackImg,omitempty"` // 贡献榜背景图
RoomRevenueRankBackImg string `json:"RoomRevenueRankBackImg,omitempty"` // 收益榜背景图
// 交友厅中心背景图
FriendShipRoomCenterImg string `json:"FriendShipRoomCenterImg,omitempty"`
// 声网加入token
RtnToken string `json:"RtnToken,omitempty"`
// 频道麦序倒计时
SeatCountDown string
// 父频道ID
ParentId string
RootId string
AllowQueue string
TalkRoomList []ListChatroomDTO
SelfOperated string // 是否自营 1=是 0=否
GuildBase
}

View File

@ -0,0 +1,12 @@
package dto
// 聊天室派单订单对象
type ChatroomDispatchOrderDTO struct {
OrderCount string // 订单数
SuccessRate string // 接单成功率
AvgRateScore string // 评分
FailRate string // 接单失败率
DispatchOrderDuration string // 派单时长
CurrentOrderId string // 当前派单中的订单ID 没有派单中的为空
PassedSeconds string // 已派单的秒数
}

View File

@ -0,0 +1,14 @@
package dto
type ChatroomEmojiDTO struct {
EmojiId string
EmojiName string
DynimacImgUrl string
StaticImgUrl string
EmojiType string
NeedPaid string
EmojiPrice string
TimeSpan string
SortNo string
LimitChatroomIds string
}

View File

@ -0,0 +1,27 @@
package dto
// 聊天室榜单用户对象
type ChatroomListUserDTO struct {
ListUserDTO
Consume string
Charm string
}
// 榜单用户信息
type RankUserInfoDTO struct {
RankNo string
UserId string
NickName string
Avatar string
Gender string
Birthday string
Sign string
ViewFlag string
UserNo string
WellNoIcon string `json:"WellNoIcon,omitempty"` // 靓号ICON
VipConfig UserVipConfigDTO `json:"VipConfig,omitempty"` //vip配置
Consume string // 贡献值
Charm string // 魅力值
IsHidden string // 隐身
}

View File

@ -0,0 +1,7 @@
package dto
type ChatroomTemplateDTO struct {
TemplateId string
TemplateName string
BackgroundImg string
}

View File

@ -0,0 +1,22 @@
package dto
// DiamondJournalDTO 钻石流水明细
type DiamondJournalDTO struct {
JournalId string
DiamondNum string // 钻石数量
CreateTime string // 交易时间
InOrOut string // 进出
SectionTitle string // 时间年月
Description string // 交易说明
Balance string
}
// NCoinJournalDTO N币流水明细
type NCoinJournalDTO struct {
JournalId string
NCoinNum string // 钻石数量
CreateTime string // 交易时间
InOrOut string // 进出
SectionTitle string // 时间年月
Description string // 交易说明
}

View File

@ -0,0 +1,56 @@
package dto
// 派单中心数据对象
type DispatchOrderCenterDataDTO struct {
DispatchOrderId string
HostUserId string
HostUserAvatar string
HostUserNickname string
HostUserNo string
BuyerId string
BuyerUserAvatar string
BuyerUserNickname string
BuyerUserNo string
SkillIcon string
SkillName string
CustomerRequirement string
Scheme string
CreateTime string
Status string //1派单中 2=完成 3=弃单
Title string // 消息中心使用
SkillMode string
SkillLevel string
SkillService string
Gender string
OrderCnt int32
OrderPrice int32
OrderAmount int32
ChatroomId string
UnitName string
TakeStatus string // 接单状态
TakeStatusDesc string // 接单状态文案描述
StatusDesc string // 派单状态文案描述
Lock string
GuildBase
}
type DispatchOrderCombineDTO struct {
// model_master.TDispatchOrder
TakeStatus string `gorm:"column:take_status;" json:"take_status"` // 接单状态
}
var TakeStatusDesc = map[string]string{
"success": "抢单成功",
"failed": "抢单失败",
"notTake": "未抢单",
"init": "抢单中",
"cancel": "取消抢单",
"dispatch_cancel": "取消派单",
}
var StatusDesc = map[string]string{
"1": "派单中",
"2": "派单成功",
"3": "派单结束",
}

View File

@ -0,0 +1,39 @@
package dto
// 派单订单详情对象
type DispatchOrderDetailDTO struct {
DispatchOrderId string
ChatroomId string
BuyerId string
BuyerAvatar string
BuyerNickname string
BuyerUserNo string
HostUserId string
HostUserAvatar string
HostUserNickname string
HostUserNo string
SkillId string
SkillIcon string
SkillName string
SkillMode string
SkillLevel string
SkillService string
PriceRange string // 0-10,0-20,0-30,0-40
PassedSeconds string // 过去的秒数
DispatchUserCount string // 已推送人数
OrderUnitName string // 计价单位
OrderUnitValue string // 计价值
NeedsAudition string // 是否试音 T=是 F=否
Gender string
CustomerRequirement string
OrderCnt int32
OrderPrice int32
OrderAmount int32
CreateTime string
Status string //1派单中 2=完成 3=弃单
Locked string // T F
TakedUserIds []string // 已接单用户列表
TakedUserList []SellerSimpleDTO // 已接单用户列表
GuildBase
}

View File

@ -0,0 +1,9 @@
package dto
// 派单技能对象
type DispatchOrderSkillDTO struct {
SkillId string
SkillName string
PriceRange string // 0-10,0-20,0-30,0-40
UnitName string
}

View File

@ -0,0 +1,8 @@
package dto
type EnterChatroomDTO struct {
RoomId string
EnterRoomSchema string
Avatar string
NickName string
}

View File

@ -0,0 +1,25 @@
package dto
// 进入房间特效
type EnterRoomSceneDTO struct {
SceneId string
BgImgUrl string // 背景图地址
EnterText string // 进入文字 第一行跟在用户昵称后面
EnterTextColor string
BriefText string // 场景主题描述 第二行
BriefTextColor string
SceneNameColor string // 入场场景上的名字颜色
AnimationFormat string
}
// 房间背景
type RoomBackgroundImgDTO struct {
BackgroundId string
BackgroundName string // 背景名称
BackgroundThumb string // 背景缩略图
BackgroundImgUrl string // 背景URL
GetTypeName string // 获取方式 DEFAULT=默认 ACTIVITY=活动获得 MALL=商城获得
IsGot string // 是否拥有
TagIcon string // 标签
IsUsing string // 是否使用中
}

53
pkg/dto/ExamDTO.go Normal file
View File

@ -0,0 +1,53 @@
package dto
type GetExaminerDTO struct {
NickName string
UserNo string
UserId string
Avatar string
}
type GetExamDTO struct {
Price string // 砖石价格
ExamID string // 考试ID
Gender string // 参加考试的人的性别 男生-G 女生-M 不限-N
FirstFree string // y n
}
type RateDTO struct {
Content string
}
type ExamNoticeDTO struct {
Content string
CreateAt string
ImgUrl string
}
type ExamOrderLstDTO struct {
OrderLst []*ExamOrderDTO
HasMore bool
}
type ExamOrderDTO struct {
OrderNo string
NickName string
UserNo string
Avatar string
CreatTime string
SkillName string
MapName string
Level string
Requirement string
Price string
OrderStatus string
OrderActionLst []string
Remark string
UserId string
FirstFree string
ReviewStatus int // 2-通过 1-未通过 0-未审核
ReviewReason string
RateContent string
SupportReply string
SupportReason string
}

View File

@ -0,0 +1,43 @@
package dto
// 规则对象
type FriendShipRoomRuleDTO struct {
MaleHatList []FriendShipRoomHatDTO // 男生帽子
FemaleHatList []FriendShipRoomHatDTO // 女生帽子
SceneList []FriendShipRoomSceneDTO // 场景列表
}
// 帽子对象
type FriendShipRoomHatDTO struct {
LevelName string // 等级 Lv1
Charm string // 魅力值
HatSample string // 帽子示例
}
// 场景对象
type FriendShipRoomSceneDTO struct {
// 场景参数
SceneName string `json:"SceneName,omitempty"` // 场景名称
Charm string `json:"Charm,omitempty"` // 需要魅力值
SceneIcon string `json:"SceneIcon,omitempty"` //Icon
SceneThumb string `json:"SceneThumb,omitempty"` // 缩略图
SceneAnimationFormat string `json:"SceneAnimationFormat,omitempty"` // 场景动效格式 SVGA/APNG
SceneAnimationUrl string `json:"SceneAnimationUrl,omitempty"` // 场景地址
SceneFillMode string `json:"SceneFillMode,omitempty"` // 填充模式 1=左右 2=上下
// 牵手动画参数
InLoveBackground string `json:"InLoveBackground,omitempty"` // 牵手背景 APNG动画
InLoveAnimationFormat string `json:"InLoveAnimationFormat,omitempty"` // 牵手背景格式 SVGA/APNG
InLoveAnimationFillMode string `json:"InLoveAnimationFillMode,omitempty"` // 填充模式 1=左右 2=上下
InLoveBackgroundWidth string `json:"InLoveBackgroundWidth,omitempty"` // 牵手背景 宽度
InLoveBackgroundHeight string `json:"InLoveBackgroundHeight,omitempty"` // 牵手背景 高度
AvatarSize string `json:"AvatarSize,omitempty"` // 头像大小
NameColor string `json:"NameColor,omitempty"` // 名字颜色
LeftAvatarMarginLeft string `json:"LeftAvatarMarginLeft,omitempty"` // 左侧头像距离左侧
LeftAvatarMarginTop string `json:"LeftAvatarMarginTop,omitempty"` // 左侧头像距离顶部
RightAvatarMarginRight string `json:"RightAvatarMarginRight,omitempty"` // 右侧头像距离右侧
RightAvatarMarginTop string `json:"RightAvatarMarginTop,omitempty"` // 右侧头像距离顶部
ViewBgAfterSceneBegin string `json:"ViewBgAfterSceneBegin,omitempty"` // 场景开始后几秒开始出现牵手动画
ViewAvatarAfterBackground string `json:"ViewAvatarAfterBackground,omitempty"` // 背景开始后几秒开始出现用户头像昵称
}

13
pkg/dto/GiftTagDTO.go Normal file
View File

@ -0,0 +1,13 @@
package dto
import "time"
type GiftTagDTO struct {
GiftId string
GiftTagId string
GiftTagName string
GiftTagIcon string
Priority int32
StartTime time.Time
EndTime time.Time
}

10
pkg/dto/GiftWallDTO.go Normal file
View File

@ -0,0 +1,10 @@
package dto
type GiftWallDTO struct {
GiftId string
GiftName string
GiftImgUrl string
ReceivedCount string
GiftPrice string
IsExpire string // 礼物是否过期 1=过期
}

View File

@ -0,0 +1,14 @@
package dto
// 兑换配置
type GoodsExchangeConfigDTO struct {
ConfigId string
GoodsId string
GoodsName string
GoodsIcon string
TargetType string
TargetId string
TargetName string
TargetIcon string
NeedCount string
}

13
pkg/dto/GoodsTagDTO.go Normal file
View File

@ -0,0 +1,13 @@
package dto
import "time"
type GoodsTagDTO struct {
GoodsId string
GoodsTagId string
GoodsTagName string
GoodsTagIcon string
Priority int32
StartTime time.Time
EndTime time.Time
}

25
pkg/dto/GuildDTO.go Normal file
View File

@ -0,0 +1,25 @@
package dto
type GuildBase struct {
GuildId string
GuildInfo GuildInfo
}
type GuildInfo struct {
No string
Name string
Logo string
BriefDesc string
ChairmanUserID string
MemberCnt int32
OrderInstrScheme string // 点单须知地址
ChatGroupId string
ChatGroupName string
}
type GuildDTO struct {
GuildBase
GuildName string
GuildScheme string
GuildLogo string
}

79
pkg/dto/HitEggResult.go Normal file
View File

@ -0,0 +1,79 @@
package dto
type HitEggResultItem struct {
GiftId string
GiftName string
GiftImage string
GiftCount string
GiftPrice string
TotalDiamond string
}
// 砸蛋结果
type HitEggResult struct {
WinLevel string
RandNum string
SolutionId string
WinDiamond string
DiamondBalance string
GiftItemList []HitEggResultItem
}
// 开箱结果对象
type OpenBoxResult struct {
WinLevel string
RandNum string
WinDiamond string
DiamondBalance string
ItemList []OpenBoxResultItem
}
// 开箱结果明细对象
type OpenBoxResultItem struct {
PrizeType string // 奖品类型 1=礼物 2=道具
PrizeId string // 类型=1时是礼物ID 类型=2时是道具ID
PrizeName string // 奖品类型
PrizeImage string
PrizeCount string
PrizePrice int
TotalDiamond string
}
// 盲盒类活动奖品结果
type ActivityPrizeResult struct {
UserId string
Item ActivityPrizeResultItem
}
// 盲盒类活动奖品结果明细对象
type ActivityPrizeResultItem struct {
ActivityPrizeSequenceId string // 抽中的序列ID
PrizeType string // 奖品类型 GIFT=礼物 PROP=道具
PrizeId string // 类型=1时是礼物ID 类型=2时是道具ID
PrizeName string // 奖品类型
PrizeImage string
PrizeReSourceUrl string // 如果是道具返回道具的Resource字段
PrizeCount string
PrizePrice int
TotalDiamond string
}
// 打怪类结果
type AttackBossResult struct {
HitCount string
WinTotalDiamond string
DiamondBalance string
ItemList []AttackBossResultItem
}
// 打怪结果明细对象
type AttackBossResultItem struct {
PrizeType string // 奖品类型 GIFT=礼物 PROP=道具
PrizeId string // 类型=GIFT时是礼物ID 类型=PROP时是道具ID
PrizeName string // 奖品名称
PrizeImage string
PrizeReSourceUrl string // 如果是道具返回道具的Resource字段
PrizeCount int
PrizePrice int
TotalDiamond int64
}

32
pkg/dto/HobbiesDTO.go Normal file
View File

@ -0,0 +1,32 @@
package dto
type HobbiesDTO struct {
Type string // hobby=兴趣爱好 tag=用户标签
HobbyId string
HobbyName string
}
type PropDTO struct {
Key string // timbre=音色 auth_identity=平台认证
Value string
ValueExt string // 比如音色会带音频链接
Duration string // 时长
}
type SkuPrice struct {
ID string `gorm:"column:id;type:char(32);primaryKey;comment:主键 卖家技能列表" json:"PriceId"` // 主键 卖家技能列表
SellerID string `gorm:"column:seller_id;type:char(32);not null;comment:卖家ID" json:"SellerId"` // 卖家ID
UserID string `gorm:"column:user_id;type:char(32);not null;uniqueIndex:uk_user_skill,priority:1;comment:用户ID" json:"UserId"` // 用户ID
SkillID string `gorm:"column:skill_id;type:char(32);not null;uniqueIndex:uk_user_skill,priority:2;index:skill_id_index,priority:1;comment:技能ID" json:"SkillId"` // 技能ID
SkillCertImg string `gorm:"column:skill_cert_img;type:varchar(100);not null;comment:技能资质图" json:"SkillCertImg"` // 技能资质图
SkillAudioURL string `gorm:"column:skill_audio_url;type:varchar(100);not null;comment:技能语音" json:"SkillAudioUrl"` // 技能语音
AudioTime int32 `gorm:"column:audio_time;type:int;not null;comment:语音长度 单位秒" json:"AudioTime"` // 语音长度 单位秒
SkillVideoURL string `gorm:"column:skill_video_url;type:varchar(100);not null;comment:技能视频" json:"SkillVideoUrl"` // 技能视频
SkillMode string `gorm:"column:skill_mode;type:varchar(64);not null;uniqueIndex:uk_user_skill,priority:3;comment:技能模式(如三角洲的不同地图)" json:"SkillMode"` // 技能模式(如三角洲的不同地图)
SkillLevel string `gorm:"column:skill_level;type:varchar(30);not null;comment:技能等级" json:"SkillLevel"` // 技能等级
SkillService string `gorm:"column:skill_service;type:varchar(30);not null;uniqueIndex:uk_user_skill,priority:4;comment:不同服务类型价格不同(如物资单、体验单)" json:"SkillService"` // 不同服务类型价格不同(如物资单、体验单)
SkillConfigID string `gorm:"column:skill_config_id;type:char(32);not null;comment:技能配置ID" json:"SkillConfigId"` // 技能配置ID
GameRole string `gorm:"column:game_role;type:varchar(30);not null;comment:游戏位置" json:"GameRole"` // 游戏位置
Price int32 `gorm:"column:price;type:int;not null;comment:价格 单位钻" json:"Price"` // 价格 单位钻
BriefDesc *string `gorm:"column:brief_desc;type:varchar(150);comment:技能简要介绍" json:"BriefDesc"` // 技能简要介绍
}

12
pkg/dto/HomeTabDTO.go Normal file
View File

@ -0,0 +1,12 @@
package dto
type HomeTabDTO struct {
TabId string
TabName string
Schema string
ChatRoomTemplateId string
ViewInHome string
TabType string // 房间类型 1=运营厅 2=个人厅
TabIcon string // 图标
TabIconUnselect string // 图标-未选中
}

118
pkg/dto/ListChatroomDTO.go Normal file
View File

@ -0,0 +1,118 @@
package dto
type PinDaoChatroomGroupDTO struct {
GroupId string
GroupName string
ParentRoomID string
Comment string
SortNo int32
CntChild int32
RoomList []*ListChatroomSimpleDTO `json:"RoomList,omitempty"`
}
// func (d *PinDaoChatroomGroupDTO) FromModel(m *model_master.TChatroomGroup) {
// if m == nil {
// return
// }
// d.GroupId = m.ID
// d.GroupName = m.Name
// d.ParentRoomID = m.RoomID
// d.Comment = m.Comment
// d.SortNo = m.SortNo
// d.CntChild = m.CntChild
// }
type ListChatroomDTO struct {
ChatroomId string `json:"ChatroomId,omitempty"` // 房间ID
MessageRoomId string `json:"MessageRoomId,omitempty"` // 消息房间ID
RoomNo string `json:"RoomNo,omitempty"` // 房间NO
RoomName string `json:"RoomName,omitempty"`
OnlineUserCount string `json:"OnlineUserCount,omitempty"` // 在线人数
TemplateId string `json:"TemplateId,omitempty"` // 模板ID
RoomPwd string `json:"RoomPwd,omitempty"` // 房间密码
IsLocked string `json:"IsLocked,omitempty"` // 是否有锁
OwnerUserId string `json:"OwnerUserId,omitempty"` // 房主用户ID
OwnerAvatar string `json:"OwnerAvatar,omitempty"` // 房主头像
HostNickName string `json:"HostNickName,omitempty"` // 主持人昵称
HostUserId string `json:"HostUserId,omitempty"` // 主持人用户Id
HostAvatar string `json:"HostAvatar,omitempty"` // 主持人用户Id
HostIsAdmin string `json:"HostIsAdmin,omitempty"` // 主持是否是管理员
MaxMemberCount string `json:"MaxMemberCount,omitempty"` // 房间最大人数
Status string `json:"Status,omitempty"` // 房间状态 0=冻结 1=开启 2=关闭
RobotCount string // 机器人数
OwnerNickName string `json:"OwnerNickName,omitempty"` // 房主昵称
TabId string // 分类ID
AudioChannelType string // 音频服务商类型
ViewSkewer string
Hot string
CurrentRevenue int64 `json:"CurrentRevenue"` // 实时分钟流水
RoomTagIcon string `json:"RoomTagIcon"` // 房间的运营标签(金牌 推荐 火热)热门首页展示
TabTagName string `json:"TabTagName"` // 分类的标签名称 (情感 电台 音乐) 热门首页展示
TabTagIcon string `json:"TabTagIcon"` // 分类的标签icon (情感 电台 音乐) 热门首页展示
HomeTabTagIcon string `json:"HomeTabTagIcon"` // 首页分类的标签icon (情感 电台 音乐) 热门首页展示
SchemeLink string `json:"SchemeLink,omitempty"` // 房间的Scheme
RoomAvatar string `json:"RoomAvatar,omitempty"`
WellNoIcon string `json:"WellNoIcon,omitempty"`
ParentId string `json:"ParentId"`
RootId string `json:"RootId"`
AllowQueue string `json:"AllowQueue"`
Announcement string `json:"Announcement"`
GroupId string
IsCollected string
GroupList []*PinDaoChatroomGroupDTO `json:"GroupList,omitempty"` // 房间下的分组列表
SelfOperated string // 是否自营 1=是 0=否
GuildBase
}
type ListChatroomDTOS []ListChatroomDTO
// 获取此 slice 的长度
func (p ListChatroomDTOS) Len() int {
return len(p)
}
// 根据实时分钟流水降序排序 (此处按照自己的业务逻辑写)
func (p ListChatroomDTOS) Less(i, j int) bool {
return p[i].CurrentRevenue > p[j].CurrentRevenue
}
// 交换数据
func (p ListChatroomDTOS) Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
// 按人数排序的数组
type ChatroomDTOListSortByOnlineNum []ListChatroomDTO
// 获取此 slice 的长度
func (p ChatroomDTOListSortByOnlineNum) Len() int {
return len(p)
}
// 根据实时分钟流水降序排序 (此处按照自己的业务逻辑写)
func (p ChatroomDTOListSortByOnlineNum) Less(i, j int) bool {
return p[i].OnlineUserCount > p[j].OnlineUserCount
}
// 交换数据
func (p ChatroomDTOListSortByOnlineNum) Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
type ListChatroomSimpleDTO struct {
ChatroomId string `json:"ChatroomId,omitempty"` // 房间ID
MessageRoomId string `json:"MessageRoomId,omitempty"` // 消息房间ID
RoomNo string `json:"RoomNo,omitempty"` // 房间NO
RoomName string `json:"RoomName,omitempty"`
OnlineUserCount string `json:"OnlineUserCount,omitempty"` // 在线人数
TemplateId string `json:"TemplateId,omitempty"` // 模板ID
IsLocked string `json:"IsLocked,omitempty"` // 是否有锁
OwnerUserId string `json:"OwnerUserId,omitempty"` // 房主用户ID
TabId string // 分类ID
SchemeLink string `json:"SchemeLink,omitempty"` // 房间的Scheme
ParentId string `json:"ParentId"`
RootId string `json:"RootId"`
GroupId string
GroupList []*PinDaoChatroomGroupDTO `json:"GroupList,omitempty"` // 房间下的分组列表
}

47
pkg/dto/ListOrderDTO.go Normal file
View File

@ -0,0 +1,47 @@
package dto
// 列表订单对象
type ListOrderDTO struct {
OrderId string
OrderNo string
ChatroomId string
ChatroomScheme string
HostUserId string
HostUserAvatar string
HostUserNickname string
HostUserNo string
SellerUserId string
SellerNickName string
SellerAvatar string
BuyerUserId string
BuyerAvatar string
BuyerNickName string
UserSkillId string
SkillId string
SkillName string
PriceId string
OrderPrice string
OrderCount string
OrderCountComplete string
OrderAmount string
OrderAmountPaid string
OrderAmountType string
BuyerMemo string
BeginTime string
EndTime string
PayStatus string
OrderClientStatus string
IsRate string
UnitName string
RateScore string
SkillIcon string
SkillMode string
SkillLevel string
SkillService string
SysMemo string
BuyerActionList []string
SellerActionList []string
GuildBase
}

49
pkg/dto/ListUserDTO.go Normal file
View File

@ -0,0 +1,49 @@
package dto
// 列表用户对象
type ListUserDTO struct {
UserId string
NickName string
Avatar string
Gender string
Birthday string
Sign string
ViewFlag string
UserNo string
VipLevel string
IsFollowTa string `json:"IsFollowTa,omitempty"` // 是否关注他
ActiveTimeHint string `json:"ActiveTimeHint,omitempty"` // 活跃时间
TaFollowMe string `json:"TaFollowMe,omitempty"`
WellNoIcon string `json:"WellNoIcon,omitempty"` // 靓号ICON
VipConfig UserVipConfigDTO `json:"VipConfig,omitempty"` //vip配置
IsHidden string `json:"IsHidden,omitempty"` // 隐身
InRoomSchema string `json:"InRoomSchema,omitempty"` // 在房间的schema
}
// 列表主播对象
type ListAnchorDTO struct {
UserId string
NickName string
Avatar string
Birthday string
Gender string
ChatroomId string
ChatroomName string
RoomNo string
RoomHot string
IconList []VipIconDTO
SchemaUrl string
RoomStatus string
}
func (userDTo ListUserDTO) ToListAnchorDTO() (result ListAnchorDTO) {
result.UserId = userDTo.UserId
result.NickName = userDTo.NickName
result.Avatar = userDTo.Avatar
result.Birthday = userDTo.Birthday
result.Gender = userDTo.Gender
return
}

11
pkg/dto/MainTabBarDTO.go Normal file
View File

@ -0,0 +1,11 @@
package dto
type MainTabBarDTO struct {
TabBarName string
IconAnimationUrl string
PlayCount string // 播放次数 0=无限播放
SelectedTextColor string // 选中状态文字颜色
NormalTextColor string
MinApiNum string // 最小版本号
MaxApiNum string // 最大的版本
}

View File

@ -0,0 +1,34 @@
package dto
// 消息订单对象
type MessageOrderDTO struct {
OrderId string
OrderNo string
UserAvatar string
UserType string // 1=买家 2=卖家
SkillName string
OrderCount string
UnitName string
BeginTime string
OrderClientStatus string
Title string
MsgCreateTime string
SkillMode string
SkillLevel string
SkillService string
}
// 互动消息对象
type MessageTimelineHuDongDTO struct {
TimelineId string
UserId string
UserAvatar string
UserNickName string
NameColor string
ContentText string
CreateTimeStr string
TimelineCoverImg string
TimelineType string // 1=图片 2=视频
Title string
}

View File

@ -0,0 +1,8 @@
package dto
type MinePageMenuDTO struct {
MenuIcon string
MenuName string
MenuScheme string
Notification int
}

15
pkg/dto/MusicDTO.go Normal file
View File

@ -0,0 +1,15 @@
package dto
type MusicDTO struct {
MusicId string
MusicName string
MusicUrl string
TypeName string
Singer string
UploadUserId string
UploadUserName string
CreateTime string
Size string
Long string
Status string `json:"Status,omitempty"`
}

32
pkg/dto/OrderRateDTO.go Normal file
View File

@ -0,0 +1,32 @@
package dto
// 订单评论对象
type OrderRateDTO struct {
RateId string
OrderId string
UserSkillId string
BuyerUserId string
BuyerAvatarDecoration string // 用户头像框
BuyerDecorationFormat string
BuyerNickName string
BuyerAvatar string
RateScore string
CreateTime string
ImageUrl []string
RateContent string
IsHidden string
ReplyLst []*RateReply
}
type RateReply struct {
ReplyId string
ReplyRole string
Content string
CreateTime string
ImageUrl []string
NickName string
Avatar string
AvatarDecoration string // 用户头像框
DecorationFormat string
UserId string
}

View File

@ -0,0 +1,7 @@
package dto
// 打赏事务返回打赏ID和用户Id
type PresentIdAndUserId struct {
PresentId string
UserId string
}

7
pkg/dto/QeekStarDto.go Normal file
View File

@ -0,0 +1,7 @@
package dto
type GiftPrizeImage struct {
Rank int `json:"rank"`
ImageUrl string `json:"imageUrl"`
ImagePcUrl string `json:"imagePcUrl"`
}

49
pkg/dto/RankDTO.go Normal file
View File

@ -0,0 +1,49 @@
package dto
import "github.com/shopspring/decimal"
type RichStatDTO struct {
UserNo string `json:"UserNo"`
NickName string `json:"NickName"`
Avatar string `json:"Avatar"`
UserID string `json:"-"`
HomeSchema string `json:"HomeSchema"`
Cnt decimal.Decimal `json:"Cnt"`
Amount decimal.Decimal `json:"Amount"`
}
type PopularityStatDTO struct {
UserNo string `json:"UserNo"`
NickName string `json:"NickName"`
Avatar string `json:"Avatar"`
UserID string `json:"-"`
HomeSchema string `json:"HomeSchema"`
Cnt decimal.Decimal `json:"Cnt"`
Amount decimal.Decimal `json:"Amount"`
}
type GeneralStatDTO struct {
UserNo string `json:"UserNo"`
NickName string `json:"NickName"`
Avatar string `json:"Avatar"`
UserID string `json:"-"`
HomeSchema string `json:"HomeSchema"`
Amount decimal.Decimal `json:"Amount"`
RankNo int64 `json:"RankNo"`
}
type MySelfRank struct {
Day *GeneralStatDTO
Week *GeneralStatDTO
Month *GeneralStatDTO
Year *GeneralStatDTO
}
type CombineStatDTO struct {
Day []*GeneralStatDTO
Week []*GeneralStatDTO
Month []*GeneralStatDTO
Year []*GeneralStatDTO
MySelfRank *MySelfRank
RankCode string
}

6
pkg/dto/RegionCodeDTO.go Normal file
View File

@ -0,0 +1,6 @@
package dto
type RegionCodeDTO struct {
RegionCode string
RegionName string
}

View File

@ -0,0 +1,6 @@
package dto
type RevenueExchangeConfigDTO struct {
FromAmount string
ToAmount string
}

View File

@ -0,0 +1,8 @@
package dto
// 摇签结果对象 检查状态和摇签返回
type RockSkewerResultDTO struct {
IsRocked string
DefaultSkewerIcon string
SkewerResult []string
}

16
pkg/dto/ShareDTO.go Normal file
View File

@ -0,0 +1,16 @@
package dto
// 分享对象
type ShareDTO struct {
ShareLink string
ShareTitle string //
ShareDescription string
ShareIconUrl string // 分享的icon
LinkUrl string // 打开的链接
}
type VisitCountDTO struct {
VisitCount string // 访问数
VisitedCount string // 被访问数
NewVisitedCount string // 新被访问数
}

View File

@ -0,0 +1,51 @@
package dto
import "github.com/shopspring/decimal"
// 技能等级价格列表对象
type SkillLevelPriceDTO struct {
LevelName string
PriceList []PriceDTO
}
// 价格DTO
type PriceDTO struct {
Price string
LimitOrderCount string
}
// 用户技能价格对象
type UserSkillPriceDTO struct {
Price string
CanSet string // 是否可设置改价格
}
type SkillConfigDTO struct {
ID string `gorm:"column:id;type:char(32);primaryKey;comment:主键" json:"ConfigId"` // 主键
SkillID string `gorm:"column:skill_id;type:char(32);not null;comment:技能ID" json:"SkillId"` // 技能ID
DataType string `gorm:"column:data_type;type:varchar(64);not null;comment:类型 mode=游戏玩法 level=等级 service=服务类型(如三角洲体验单、物资单等) gender=性别 price=价格" json:"DataType"` // 类型 mode=游戏玩法 level=等级 service=服务类型(如三角洲体验单、物资单等) gender=性别 price=价格
ChildType string `gorm:"column:child_type;type:varchar(64);not null;comment:子分类:类型 mode=游戏玩法 level=等级 service=服务类型(如三角洲体验单、物资单等) gender=性别 price=价格 为空时表示为叶子节点" json:"ChildType"` // 子分类:类型 mode=游戏玩法 level=等级 service=服务类型(如三角洲体验单、物资单等) gender=性别 price=价格 为空时表示为叶子节点
ParentID string `gorm:"column:parent_id;type:char(32);not null;comment:父节点 modeskillId levelmodeId genderlevelId pricegenderId" json:"ParentID"` // 父节点 modeskillId levelmodeId genderlevelId pricegenderId
Value string `gorm:"column:value;type:varchar(64);not null;comment:名称 mode玩法名称 level等级名称 gender性别名称 price价格内容" json:"Value"` // 名称 mode玩法名称 level等级名称 gender性别名称 price价格内容
Comment string `gorm:"column:comment;type:varchar(255);not null;comment:描述" json:"Comment"` // 描述
RankPriority int32 `gorm:"column:rank_priority;type:int;not null;comment:节点排名权重,高权重可以兼容低权重" json:"RankPriority"` // 节点排名权重,高权重可以兼容低权重
SortNo int32 `gorm:"column:sort_no;type:int;not null;default:1000;comment:排序从小到大" json:"SortNo"` // 排序从小到大
PriceMale int32 `gorm:"column:price_male;type:int;not null;comment:男陪价格" json:"PriceMale"` // 男陪价格
PriceFemale int32 `gorm:"column:price_female;type:int;not null;comment:女陪价格" json:"PriceFemale"`
UnitName string
UnitValue string
DifficultyValues string // mode的难度选项 机密,绝密
DifficultyDefaultValue string // mode的难度默认值 机密
LevelRemark string // 等级的备注,下单时选了等级,有备注显示下备注
Children []*SkillConfigDTO `json:"Children" gorm:"-"`
}
type OrderStatisticDTO struct {
UserNo string `json:"UserNo"`
NickName string `json:"NickName"`
Avatar string `json:"Avatar"`
UserID string `json:"-"`
HomeSchema string `json:"HomeSchema"`
Cnt decimal.Decimal `json:"Cnt"`
Amount decimal.Decimal `json:"Amount"`
}

109
pkg/dto/SkillListDTO.go Normal file
View File

@ -0,0 +1,109 @@
package dto
// 技能列表对象
type SkillListDTO struct {
CategoryId string
CategoryName string
SkillList []SkillDTO
}
// 技能DTO
type SkillDTO struct {
SkillId string
SkillName string
SkillIcon string
UnitName string
SkillBriefDesc string `json:"SkillBriefDesc,omitempty"`
LevelList []string `json:"LevelList,omitempty"`
IsNeedAudio string `json:"IsNeedAudio,omitempty"`
GameRoleList []string `json:"GameRoleList,omitempty"`
IsNeedGameRole string `json:"IsNeedGameRole,omitempty"`
CertSampleImg string `json:"CertSampleImg,omitempty"`
UserSampleAvatar string `json:"UserSampleAvatar,omitempty"`
SchemeLink string `json:"SchemeLink,omitempty"`
IsNeedCertImg string `json:"IsNeedCertImg,omitempty"`
ViewForAa string `json:"ViewForAa,omitempty"`
SpecialRequirements string `json:"SpecialRequirements,omitempty"`
}
// 用户可申请技能对象
type UserApplySkillDTO struct {
SkillDTO
UserSkillStatus string `json:"UserSkillStatus,omitempty"` // 用户技能状态 1=正常 2=待审核 3=冻结 4=拒绝 0=未申请过
OfficialBriefDesc string `json:"OfficialBriefDesc,omitempty"` // 冻结 拒绝原因等
}
// 按分类返回可申请的技能
type CategoryApplySkillDTO struct {
CategoryId string
CategoryName string
ApplySkillDTOList []UserApplySkillDTO
}
type SKU interface {
SetLocationDesc()
SetOrderRank()
}
// 用户技能DTO
type UserSkillDTO struct {
UserSkillId string
UserId string `json:"UserId,omitempty"`
SkillId string `json:"SkillId,omitempty"`
SkillName string
SkillIcon string
SmallIcon string
SkillBriefDesc string `json:"SkillBriefDesc,omitempty"` // 技能说明
SkillCertImg string `json:"SkillCertImg,omitempty"`
IsNeedAudio string `json:"IsNeedAudio,omitempty"`
SkillAudioUrl string `json:"SkillAudioUrl,omitempty"`
AudioTime string `json:"AudioTime,omitempty"`
Price string `json:"Price,omitempty"`
PriceMin string `json:"PriceMin,omitempty"`
PriceMax string `json:"PriceMax,omitempty"`
SkillVideoUrl string `json:"SkillVideoUrl,omitempty"`
SkillLevel string `json:"SkillLevel,omitempty"`
SkillMode string `json:"SkillMode,omitempty"`
SkillAuth string // 技术认证信息
SkillCompanionType string
LocationDesc string // 位置描述
GameRole string `json:"GameRole,omitempty"`
TotalOrderCount string `json:"TotalOrderCount,omitempty"`
RateCount string `json:"RateCount,omitempty"`
RateScore string `json:"RateScore,omitempty"`
AvgRateScore string `json:"AvgRateScore,omitempty"` // 平均分
BriefDesc string `json:"BriefDesc,omitempty"` // 个人说明
SkillStatus string `json:"SkillStatus,omitempty"` // 状态 1=正常 2=待审核 3=冻结 4=拒绝
ServiceStatus string `json:"ServiceStatus,omitempty"` // 服务状态
OfficialBriefDesc string `json:"OfficialBriefDesc,omitempty"` // 官方说明 拒绝原因 冻结原因 通过介绍
UnitName string `json:"UnitName,omitempty"` // 单位名称
LevelBgColor string `json:"LevelBgColor,omitempty"` // 等级的背景颜色
SkillLevelIcon string `json:"SkillLevelIcon,omitempty"` // 等级的icon
OrderRank SkillSkuOrderRank // 订单排行 城市排行
// 样例图
CertSampleImg string `json:"CertSampleImg,omitempty"`
UserSampleAvatar string `json:"UserSampleAvatar,omitempty"`
// 对应的价格列表 我的技能列表返回
LevelPriceList []UserSkillPriceDTO `json:"PriceList,omitempty"`
// 技能列表
LevelList []string `json:"LevelList,omitempty"` // 擅长位置列表
IsNeedGameRole string `json:"IsNeedGameRole,omitempty"`
GameRoleList []string `json:"GameRoleList,omitempty"`
// 是否需要技能认证图
IsNeedCertImg string `json:"IsNeedCertImg,omitempty"`
GoodRate string `json:"GoodRate,omitempty"`
// 苹果审核可见
ViewForAa string `json:"ViewForAa,omitempty"`
// 获取创建订单页面返回
SkuPriceList []SkuPrice `json:"SkuPriceList,omitempty"` // 单子类型价格列表
ColorFrom string
ColorTo string
NameTextColor string
LevelTextColor string
AllowEditPrice string //0=不允许 1=允许
SellerStar string //0=不允许 1=允许
GuildBase
}

View File

@ -0,0 +1,36 @@
package dto
// 订单详情对象
type SkillOrderDetailDTO struct {
GuildBase
OrderId string
OrderNo string
UserSkillId string
SkillId string
SkillName string
SkillMode string
SkillLevel string
SkillService string
OrderPrice string
OrderCount string
OrderCountComplete string
OrderAmount string
OrderAmountPaid string
OrderExt string
BuyerMemo string
BeginTime string
PayStatus string
OrderClientStatus string //1=已下单待支付 2=已支付待接单 3=已接单 4=已完成 5=已取消 6=申诉中 7=申诉完成 8=待服务 9=进行中
IsRate string
UnitName string
BuyerUserDTO ListUserDTO // 买家用户信息
SellerUserDTO ListUserDTO // 卖家用户信息
SysMemo string // 系统备注
// PayOrder = 支付订单 CancelOrder = 取消订单 AgreeOrder= 同意接单 RefuseOrder=拒绝接单 FinishOrder = 确认完成 RequestRefund=请求退款 AgreeRefund=同意退款 RefuseRefund=拒绝退款
// 买家操作列表
BuyerActionList []string
SellerActionList []string
// 评论对象
OrderRate OrderRateDTO
}

7
pkg/dto/TaxDTO.go Normal file
View File

@ -0,0 +1,7 @@
package dto
type TaxDTO struct {
WithdrawCash string // 提现金额
Tax string // 扣除手续费之后的个税
HandleFee string // 手续费费
}

View File

@ -0,0 +1,7 @@
package dto
// 动态分类的DTO
type TimelineCategoryDTO struct {
CategoryId string
CategoryName string
}

63
pkg/dto/TimelineDTO.go Normal file
View File

@ -0,0 +1,63 @@
package dto
type TimelineDTO struct {
TimelineId string
ContentType string //1=动态 2=视频
UserId string
AvatarDecoration string // 用户头像框
DecorationFormat string
TextContent string
ImgUrls string
ImgSizes string
Status string
CreateTime string
ViewCount string
LoveCount string
ReplyCount string
ImgDTOList []TimelineImgDTO `json:"ImgDTOList,omitempty"`
VideoDTO TimelineVideoDTO `json:"VideoDTO,omitempty"`
CityName string
AddressName string
BriefDesc string // 简要说明
DashangCount string
DashangDiamond string
//User信息
NickName string
Avatar string
Gender string
Birthday string
VipConfig UserVipConfigDTO
UserLastActiveTime string // 用户在线时间
IsRecommend string
IsPraised string // 是否点赞过 1=是 2=否
Dist string // 距离
IsSeller string
OrderStatus string `json:"OrderStatus,omitempty"` // 订单状态 idle=空闲 accepting=接单中
CreateTimeStr string
ShareData ShareDTO
IsFollowed string // 是否关注过
UserSkillId string `json:"UserSkillId,omitempty"`
SkillName string `json:"SkillName,omitempty"`
PriceStr string `json:"PriceStr,omitempty"`
}
// 动态的图片对象
type TimelineImgDTO struct {
ImgPhotoKey string `json:"ImgPhotoKey,omitempty"`
ImgUrl string
Width string
Height string
}
// 动态的视频对象
type TimelineVideoDTO struct {
VideoKey string `json:"VideoKey,omitempty"`
Width string
Height string
Duration string
VideoUrl string
VideoGifUrl string
VideoWaterUrl string
VideoCoverImgUrl string
}

View File

@ -0,0 +1,46 @@
package dto
// 评论对象
type TimelineReplyDTO struct {
ReplyId string // 评论ID
TimelineId string // 动态ID
ReplierId string // 评论人ID
ReplierName string // 评论人昵称
ReplierAvatar string // 评论人头像
ReplierAvatarDecoration string // 用户头像框
ReplierDecorationFormat string
ReplyContent string // 评论内容
ToReplyId string // 被评论的帖子ID
ToReplierId string // 被评论的用户Id
ToReplierName string // 被评论的用户昵称
SubReplyCount string // 子评论数
ToSubReplyId string // 实际评论得子评论ID
IsPraised string // 是否赞过
PraisedCount string // 赞的次数
CreateTime string
SubReplyList []TimelineReplyDTO `json:"SubReplyList,omitempty"` // 子评论列表
CreateTimeStr string
}
// 动态打赏对象
type TimelinePresentDTO struct {
Id string // 打赏ID
TimelineId string // 动态ID
FromUserId string // 打赏人ID
FromUserName string // 打赏人姓名
FromUserAvatar string // 打赏人头像
FromUserAvatarDecoration string // 用户头像框
FromUserDecorationFormat string
GiftId string // 礼物ID
GiftCount string
GiftName string // 礼物名称
GiftImage string // 礼物图标
AnimationFormat string // 动效格式
AnimationApngUrl string // 礼物动效地址
FillMode string // 填充格式
AnimationGifUrl string // gif
Diamond string // 钻石数
CreateTime string
CreateTimeStr string
}

9
pkg/dto/TopUsersDTO.go Normal file
View File

@ -0,0 +1,9 @@
package dto
// 首页榜单对象
// TopType consume=贡献榜 charm=魅力榜
type TopUsersDTO struct {
TopType string
TopUserList []ChatroomListUserDTO
IconUrl string
}

View File

@ -0,0 +1,6 @@
package dto
type UserAliasNameDTO struct {
UserId string
AliasName string
}

30
pkg/dto/UserGiftBoxDTO.go Normal file
View File

@ -0,0 +1,30 @@
package dto
// 礼物盒
type UserGiftBoxDTO struct {
BoxId string
GiftId string
GiftName string
GiftImage string
GiftDiamond string
GiftAmountType string // 价格类型DIAMOND=钻石 GOLD=N币
AnimationGifUrl string
AnimationApngUrl string
LimitTabId string
IsOrderGift string
StockQty string
TagIconExp string
TagIconFullServer string
ClickInterval int32 // 连击间隔的描述0为不限制
}
type GiftSimpleDTO struct {
GiftId string `json:"GiftId,omitempty"` // 好评率
GiftName string `json:"GiftName,omitempty"` //
GiftCount string `json:"GiftCount,omitempty"` //
GiftStaticUrl string `json:"GiftStaticUrl,omitempty"` //
AnimationApngUrl string `json:"AnimationApngUrl,omitempty"` //
AnimationPcUrl string `json:"AnimationPcUrl,omitempty"` //
AnimationFormat string `json:"AnimationFormat,omitempty"` //
FillMode string `json:"FillMode,omitempty"` //
}

145
pkg/dto/UserInfoDTO.go Normal file
View File

@ -0,0 +1,145 @@
package dto
import (
"gitea.ddegame.cn/open/servicebase/pkg/datasource/fields"
"github.com/shopspring/decimal"
)
type UserInfoDTO struct {
UserId string
RegionCode string
Mobile string `json:"Mobile"`
NickName string
Status string
Avatar string
Gender string
Birthday string
IdNo string `json:"IdNo,omitempty"`
IsAuth string
TrueName string `json:"TrueName,omitempty"`
Sign string `json:"Sign,omitempty"`
ViewFlag string
VideoUrl string `json:"VideoUrl,omitempty"`
IsSetPassword string `json:"IsSetPassword,omitempty"` // 是否设置了密码
School string `json:"School,omitempty"`
UserNo string
VipLevel string //vip等级
VipExp string `json:"VipExp,omitempty"` //vip经验
CanCreateChatroom string `json:"CanCreateChatroom,omitempty"` // 能否创建聊天室
Hobbies []HobbiesDTO `json:"Hobbies,omitempty"` // 兴趣爱好
TagsDTO []HobbiesDTO `json:"Tags,omitempty"` // 个人标签
PropDTO []PropDTO `json:"Props,omitempty"` // 个人属性
ActiveTimeHint string `json:"ActiveTimeHint,omitempty"` // 活跃时间
FansCount string // 粉丝数
FollowCount string // 关注数
FriendCount string // 朋友数(相互关注)
ShareData ShareDTO `json:"ShareData,omitempty"` // 分享对象
WxUnionId string `json:"WxUnionId,omitempty"`
QqOpenId string `json:"QqOpenId,omitempty"`
AuthFailReason string `json:"AuthFailReason,omitempty"`
AvatarDecoration string `json:"AvatarDecoration,omitempty"` // 用户头像框
DecorationFormat string `json:"DecorationFormat,omitempty"`
AlipayAccount string `json:"AlipayAccount,omitempty"` // 支付宝帐号
IsSeller string //0=未申请过技能 1=是大神 2=已申请待审核 3=已冻结大神资格
OrderStatus string `json:"OrderStatus,omitempty"` // 订单状态 idle=空闲 accepting=接单中
VipIcon string //VIP等级ICON
TimeLineCount string // 动态数
WellNoIcon string `json:"WellNoIcon,omitempty"` // 靓号icon
VipConfig UserVipConfigDTO `json:"VipConfig,omitempty"` //VipConfig
IsOpenedChildMode string // 是否开启了青少年模式 1=开启 0=未开启
Diamond int64 // 钻石余额
LocationCity string `json:"LocationCity"` // 用户所在的城市(市)
VisitCountModel *VisitCountDTO `json:"VisitCountDTO,omitempty"` // 访问人数对象
UserRankInfoList []UserRankItem `json:"UserRankInfoList",omitempty`
// 用户的技能列表
UserSkillList []UserSkillDTO `json:"UserSkillList,omitempty"` // 用户的技能列表
PhotoList []UserPhoto `json:"PhotoList,omitempty"` // 照片墙
CommonHobbies []CommonHobby
UserRoles []string `json:"UserRoles,omitempty"` // 用户角色
IsSuperAdmin string `json:"IsSuperAdmin,omitempty"` // 是否超管
DiancangCard string `json:"DiancangCard,omitempty"` //典藏卡
SellerAuth string `json:"SellerAuth,omitempty"` //陪玩身份认证
SellerAuthStatus string `json:"SellerAuthStatus,omitempty"` //陪玩身份认证状态
SellerFaceAuth string `json:"SellerFaceAuth,omitempty"` //陪玩人脸认证
SellerVedioAuth string `json:"SellerVedioAuth,omitempty"` //陪玩视频认证
SellerAuthFailedReason string `json:"SellerAuthFailedReason,omitempty"` //陪玩认证失败原因
IsChairman string `json:"IsChairman,omitempty"` //陪玩认证失败原因
}
type UserPhoto struct {
Id string
UserId string
PhotoKey string
PhotoIndex string
}
type UserSimpleDTO struct {
UserId string `json:"UserId,omitempty"`
UserNo string `json:"UserNo,omitempty"`
Gender string `json:"Gender,omitempty"`
NickName string `json:"NickName,omitempty"`
Avatar string `json:"Avatar,omitempty"`
Birthday string `json:"Birthday,omitempty"`
}
type SellerSimpleDTO struct {
UserSimpleDTO
GoodRate string `json:"GoodRate,omitempty"` // 好评率
TotalOrderCount string `json:"TotalOrderCount,omitempty"` // 接单次数
OrderUnitName string `json:"UnitName,omitempty"` // 单位
BriefDesc string `json:"BriefDesc,omitempty"` // 备注
}
type CommonHobby struct {
Name string
}
type UserRankItem struct {
Icon string //
RankText string // 排名
RankDesc string // 描述
BackgroundImage string // 背景图
BackgroundColor string
}
// 典藏卡
type DiancangCardDTO struct {
CardCode string
CardName string
MinRechargeDiamond int
MoreRate float64
CardIcon string
}
type UserTicketDTO struct {
ID string `gorm:"column:id;type:char(32);not null;uniqueIndex:id,priority:1;comment:业务ID" json:"id"` // 业务ID
No string `gorm:"column:no;type:varchar(64);not null;uniqueIndex:no,priority:1;comment:业务编号" json:"no"` // 业务编号
UserID string `gorm:"column:user_id;type:char(32);not null;comment:用户ID" json:"user_id"` // 用户ID
TicketType string `gorm:"column:ticket_type;type:varchar(64);not null;comment:工单类型" json:"ticket_type"` // 工单类型
ComplaintType string `gorm:"column:complaint_type;type:varchar(64);not null;comment:投诉类型" json:"complaint_type"` // 投诉类型
Title string `gorm:"column:title;type:varchar(64);not null;comment:工单标题" json:"title"` // 工单标题
Reason string `gorm:"column:reason;type:varchar(255);not null;comment:售后原因" json:"reason"` // 售后原因
Content string `gorm:"column:content;type:varchar(2048);not null;comment:工单内容" json:"content"` // 工单内容
InvolvedUserIds string `gorm:"column:involved_user_ids;type:varchar(255);not null;comment:相关涉事人" json:"involved_user_ids"` // 相关涉事人
TicketImages string `gorm:"column:ticket_images;type:varchar(255);not null;comment:相关图片" json:"ticket_images"` // 相关图片
Status string `gorm:"column:status;type:varchar(32);not null;comment:状态 processing=进行中 complete=完成" json:"status"` // 状态 processing=进行中 complete=完成
ResultContent string `gorm:"column:result_content;type:varchar(255);not null;comment:处理结果" json:"result_content"` // 处理结果
ReturnAmount decimal.Decimal `gorm:"column:return_amount;type:decimal(10,2);not null;default:0.00;comment:退回金额" json:"return_amount"` // 退回金额
ReturnType string `gorm:"column:return_type;type:varchar(64);not null;comment:退回方式" json:"return_type"` // 退回方式
DealEndAt fields.Time `gorm:"column:deal_end_at;type:datetime;not null;comment:初始完成时间" json:"deal_end_at"` // 初始完成时间
CreateAt fields.Time `gorm:"column:create_at;type:datetime;not null;comment:创建时间" json:"create_at"` // 创建时间
UpdateAt fields.Time `gorm:"column:update_at;type:datetime;not null;comment:更新时间" json:"update_at"` // 更新时间
}
type UserTicketFlowDTO struct {
ID string `gorm:"column:id;type:char(32);not null;uniqueIndex:id,priority:1;comment:业务ID" json:"id"` // 业务ID
TicketID string `gorm:"column:ticket_id;type:char(32);not null;index:tid,priority:1;comment:业务ID" json:"ticket_id"` // 业务ID
UserID string `gorm:"column:user_id;type:char(32);not null;comment:用户ID" json:"user_id"` // 用户ID
FlowType string `gorm:"column:flow_type;type:varchar(64);not null;comment:commit=用户提交 reply=回复" json:"flow_type"` // commit=用户提交 reply=回复
Content string `gorm:"column:content;type:varchar(2048);not null;comment:工单内容" json:"content"` // 工单内容
TicketImages string `gorm:"column:ticket_images;type:varchar(255);not null;comment:相关图片" json:"ticket_images"` // 相关图片
CreateAt fields.Time `gorm:"column:create_at;type:datetime;not null;comment:创建时间" json:"create_at"` // 创建时间
UpdateAt fields.Time `gorm:"column:update_at;type:datetime;not null;comment:更新时间" json:"update_at"` // 更新时间
}

View File

@ -0,0 +1,33 @@
package dto
// 用户的物品
type UserStoreGoodsDTO struct {
StoreId int
GoodsId string
GoodsName string
GoodsType string
GoodsGroup string
GoodsCount string
GoodsIconUrl string
GoodsResourceUrl string
ExpireTime string
StockQty string
HourBalance string
Measurement string
CanSend bool
CanUse bool
Memo string
}
// 商品对象
type GoodsDTO struct {
Id string
GoodsName string
GoodsType string
GoodsIconUrl string
GoodsResourceUrl string
MinUseLevel string
SalePrice string
Memo string
TimeSpan string
}

View File

@ -0,0 +1,28 @@
package dto
// 用户抢到的单
type UserTakedDispathOrderDTO struct {
ID string
OrderID string
ChatroomID string
BuyerID string
HostUserID string
Status string
CreateAt string
SkillId string
SkillIcon string
SkillName string
SkillMode string
SkillLevel string
SkillService string
OrderPrice string
OrderCount string
OrderAmount string
Gender string
BuyerMemo string
UnitName string
StatusName string
CustomerRequirement string
GuildBase
}

26
pkg/dto/UserVipIconDTO.go Normal file
View File

@ -0,0 +1,26 @@
package dto
// 用户Vip配置
type UserVipConfigDTO struct {
UserId string
NameColor string `json:"NameColor,omitempty"` // 昵称颜色
NoColor string `json:"NoColor,omitempty"` //ID颜色
TextColor string `json:"TextColor,omitempty"` // 聊天文本颜色
VipIconList []VipIconDTO `json:"VipIconList,omitempty"` //Vip IconList
VipLevel string `json:"VipLevel,omitempty"` //VIP等级
VipExp string `json:"VipExp,omitempty"` //Vip经验值
RoomMsgBgForIOS string `json:"RoomMsgBgForIOS,omitempty"` // 房间里的消息背景
RoomMsgBgForAndroid string `json:"RoomMsgBgForAndroid,omitempty"` // 房间里的消息背景
NobilityLevel string `json:"NobilityLevel,omitempty"` // 贵族等级
NobilitySeatNameColor []string `json:"NobilitySeatNameColor,omitempty"` // 贵族麦上昵称颜色
RoomMsgBgForPc string `json:"RoomMsgBgForPc"` // 房间里的消息背景 PC
}
// VipIcon对象
type VipIconDTO struct {
IconUrl string
Text string
Width int
Height int
IconType string //vip=vip图标 nobility=爵位 medal=铭牌
}

13
pkg/dto/VisitUserDTO.go Normal file
View File

@ -0,0 +1,13 @@
package dto
type VisitUserDTO struct {
UserId string
NickName string
Avatar string
Gender string
BirthDay string
Brief string
VipConfig UserVipConfigDTO
IsNew string `json:"IsNew,omitempty"`
VisitCount string `json:"VisitCount,omitempty"`
}

View File

@ -0,0 +1,16 @@
package activity_dto
type BossBasicDTO struct {
Balance int64
BossId int64
MonsterId string
MonsterName string
MonsterAvatar string
MonsterNormalApng string
MonsterAttackApng string
BossHp string
BossHpPass string
AppearAt string
DisappearAt string
State string
}

View File

@ -0,0 +1,23 @@
package activity_dto
type BossHpAndAttackRankDTO struct {
Hp string
HpPass string
State string
AppearAt string
DisappearAt string
Balance int64
AttackBossRankList []AttackBossRankDTO // 输出排行榜
NewWinPrizeMsgList []string // 最新中奖信息
// NewDeathPrize model_activity.ActivityDeathBossPrizeModel
}
// 用户输出排行榜对象
type AttackBossRankDTO struct {
Rank string
UserId string
UserNo string
NickName string
Avatar string
AttackScore string
}

View File

@ -0,0 +1,19 @@
package activity_dto
type ChatRoomLuckPrize struct {
Name string
Icon string
Price int64
PriceType string
MaxValue int64
PrizeList []ChatRoomLuckPrizeItem
}
type ChatRoomLuckPrizeItem struct {
Name string
Icon string
Value int64
PriceType string
Probability string
Type string
}

View File

@ -0,0 +1,18 @@
package activity_dto
type GeneralRankRewardDTO struct {
Item []*GeneralRankRewardItem // 下对应top-1
RankCode string // 排行榜code 唯一
}
type GeneralRankRewardItem struct {
Top int // rank top 1 2 3
GiftIdLst []*GiftReward // 礼物
}
type GiftReward struct {
GiftId string // 礼物ID
Count int // 数量
Name string
Img string
}

View File

@ -0,0 +1,29 @@
package activity_dto
type StarGiftDTO struct {
Name string `json:"name"`
Price string `json:"price"`
Img string `json:"img"`
}
type RankDTO struct {
SortNo int `json:"sortNo"`
YearWeek int `json:"yearWeek"`
WeekStart string `json:"weekStart"`
WeekEnd string `json:"weekEnd"`
UserId string `json:"userId"`
UserNo string `json:"userNo"`
GiftCount int `json:"giftCount"`
GiftAmount int `json:"giftAmount"`
NickName string `json:"nickName"`
Avatar string `json:"avatar"`
NamingGiftId int32 `json:"namingGiftId"`
NamingGiftDescription string `json:"namingGiftDescription"`
JumpUrl string `json:"jumpUrl"`
}
type RankResponse struct {
YearWeek int `json:"yearWeek"`
WeekStart string `json:"weekStart"`
WeekEnd string `json:"weekEnd"`
RankDTOList []*RankDTO `json:"rankDTOList"`
}

View File

@ -0,0 +1,11 @@
package activity_dto
type WeekStarGrantGiftDTO struct {
GrantType string
GrantList map[int][]WeekStarGrantGiftRankGiftDto
}
type WeekStarGrantGiftRankGiftDto struct {
GiftID string
Count int
}

8
pkg/dto/admin/diamond.go Normal file
View File

@ -0,0 +1,8 @@
package dto_admin
type OperationReduceDiamondRequest struct {
Diamond string
UserNo string
Memo string
Pwd string
}

378
pkg/dto/admin/skill.go Normal file
View File

@ -0,0 +1,378 @@
package dto_admin
import (
"errors"
"github.com/shopspring/decimal"
)
type TSkillConfig struct {
// model_master.TSkillConfig
Children []*TSkillConfig `json:"children" gorm:"-"`
}
// UpdateOrderRequest 修改订单请求参数 /*
type UpdateOrderRequest struct {
OrderId string `json:"orderId"`
UpdateType string `json:"updateType"`
ChangeOrderCount float32 `json:"changeOrderCount"`
Reason string `json:"reason"`
}
// ReplenishOrderRequest 补单请求参数 /*
type ReplenishOrderRequest struct {
GuildId string `json:"guildId"`
BuyerUserId string `json:"buyerUserId"`
SellerUserId string `json:"sellerUserId"`
SellerSkillId string `json:"sellerSkillId"`
SkillConfigId string `json:"skillConfigId"`
OrderCount float64 `json:"orderCount"`
}
type FreeOfChargeOrder struct {
OrderId string `json:"orderId"`
Reason string `json:"reason"`
ChangeCount decimal.Decimal `json:"changeCount"`
}
type OrderRateResponse struct {
// model_master.TSkillOrderRate
OrderNo string `json:"order_no"`
UserNO string `json:"user_no"`
NickName string `json:"nick_name"`
SellerNickName string `json:"seller_nick_name"`
SellerUserNo string `json:"seller_user_no"`
}
type EarlyFinishOrderRequest struct {
OrderId string `json:"orderId"`
CompleteCount decimal.Decimal `json:"completeCount"`
}
type FinishOrderRequest struct {
OrderId string `json:"orderId"`
}
type DispatchOrderResponse struct {
// model_master.TDispatchOrder
ChatroomNo string `json:"chatroom_no"`
ChatroomName string `json:"chatroom_name"`
BuyerNo string `json:"buyer_no"`
BuyerNickName string `json:"buyer_nick_name"`
HostUserNo string `json:"host_user_no"`
HostUserNickName string `json:"host_user_nick_name"`
SkillName string `json:"skill_name"`
}
type SellerSkillUpdateResponse struct {
Id string
SkillStatus string
ServiceStatus string
AllowEditPrice string
SellerStar string
}
func (request *SellerSkillUpdateResponse) Check() (err error) {
if len(request.Id) == 0 {
err = errors.New("技能ID不能为空")
return
}
if request.SkillStatus != "1" && request.SkillStatus != "3" {
err = errors.New("技能状态不正确")
return
}
if request.ServiceStatus != "1" && request.ServiceStatus != "0" {
err = errors.New("技能服务状态不正确")
return
}
if len(request.AllowEditPrice) == 0 {
err = errors.New("价格修改状态不能为空")
return
}
if len(request.SellerStar) == 0 {
err = errors.New("明星状态不能为空")
return
}
return
}
type UpdateSkillLevelResponse struct {
Id string
ConfigId string
UserId string
}
func (request *UpdateSkillLevelResponse) Check() (err error) {
if len(request.Id) == 0 {
err = errors.New("陪玩技能ID不能为空")
return
}
if len(request.ConfigId) == 0 {
err = errors.New("技能等级不能为空")
return
}
if len(request.UserId) == 0 {
err = errors.New("用户id不能为空")
return
}
return
}
type UpdateSkillLevelInnerResponse struct {
ID string
ConfigId string
OperatorID string
}
func (request *UpdateSkillLevelInnerResponse) Check() (err error) {
if len(request.ID) == 0 {
err = errors.New("陪玩技能ID不能为空")
return
}
if len(request.ConfigId) == 0 {
err = errors.New("技能等级不能为空")
return
}
return
}
type SellerFaceVerifyResponse struct {
// model_master.TSellerFaceVerify
UserNo string `json:"user_no"`
NickName string `json:"nick_name"`
Avatar string `json:"avatar"`
SkillName string `json:"skill_name"`
}
type FreeOfChargeOrderForInner struct {
OrderId string
Reason string
ChangeCount decimal.Decimal
OperatorID string
}
type SellerSkillUpdateInnerResponse struct {
ID string
SkillStatus string
ServiceStatus string
AllowEditPrice string
SellerStar string
OperatorID string
}
func (request *SellerSkillUpdateInnerResponse) Check() (err error) {
if len(request.ID) == 0 {
err = errors.New("技能ID不能为空")
return
}
if request.SkillStatus != "1" && request.SkillStatus != "3" {
err = errors.New("技能状态不正确")
return
}
if request.ServiceStatus != "1" && request.ServiceStatus != "0" {
err = errors.New("技能服务状态不正确")
return
}
if len(request.AllowEditPrice) == 0 {
err = errors.New("价格修改状态不能为空")
return
}
if len(request.SellerStar) == 0 {
err = errors.New("明星状态不能为空")
return
}
if len(request.OperatorID) == 0 {
err = errors.New("操作人不能为空")
return
}
return
}
type AddSellerSkillInnerResponse struct {
GuildMemberID int32
SkillConfigID string
}
func (request *AddSellerSkillInnerResponse) Check() (err error) {
if request.GuildMemberID == 0 {
err = errors.New("用户ID不能为空")
return
}
if len(request.SkillConfigID) == 0 {
err = errors.New("技能配置ID不能为空")
return
}
return
}
type AddSkillInnerResponse struct {
SkillID string
}
func (request *AddSkillInnerResponse) Check() (err error) {
if len(request.SkillID) == 0 {
err = errors.New("技能ID不能为空")
return
}
return
}
type SkillConfigUpdateResponse struct {
ID string // 主键
SkillID string // 技能ID
DataType string // 类型 mode=游戏玩法 level=等级 service=服务类型(如三角洲体验单、物资单等) gender=性别 price=价格
ChildType string // 子分类:类型 mode=游戏玩法 level=等级 service=服务类型(如三角洲体验单、物资单等) gender=性别 price=价格 为空时表示为叶子节点
ParentID string // 父节点 modeskillId levelmodeId genderlevelId pricegenderId
Value string // 名称 mode玩法名称 level等级名称 gender性别名称 price价格内容
Comment string // 描述
RankPriority int32 // 节点排名权重,高权重可以兼容低权重
SortNo int32 // 排序从小到大
PriceMale int32 // 男陪价格
PriceFemale int32 // 女陪价格
UnitName string // 指定价格时的结算单位 如:小时、局等
UnitValue string // 指定价格时的阶段单位对应的值如小时对应60分钟
LevelRemark string // 等级的备注,下单时选择了等级可以显示备注
DifficultyValues string // 游戏难度:机密 绝密 长夜等 mode专用
DifficultyDefaultValue string // 游戏难度默认值
}
func (request *SkillConfigUpdateResponse) Check() (err error) {
if len(request.ID) == 0 {
err = errors.New("技能配置ID不能为空")
return
}
if len(request.SkillID) == 0 {
err = errors.New("技能ID不能为空")
return
}
if len(request.DataType) == 0 {
err = errors.New("数据类型不能为空")
return
}
if request.DataType == "mode" {
request.ChildType = "level"
request.RankPriority = 0
request.PriceMale = 0
request.PriceFemale = 0
request.UnitName = ""
request.UnitValue = ""
request.LevelRemark = ""
request.DifficultyDefaultValue = ""
request.DifficultyValues = ""
} else if request.DataType == "level" {
request.ChildType = "service"
request.PriceMale = 0
request.PriceFemale = 0
request.UnitName = ""
request.UnitValue = ""
request.LevelRemark = ""
request.DifficultyDefaultValue = ""
request.DifficultyValues = ""
} else if request.DataType == "service" {
request.ChildType = ""
request.RankPriority = 0
request.LevelRemark = ""
} else {
err = errors.New("数据类型不正确")
return
}
if len(request.ParentID) == 0 {
err = errors.New("父节点id不能为空")
return
}
if len(request.Value) == 0 {
err = errors.New("配置名称不能为空")
return
}
return
}
type SkillConfigAddRequest struct {
SkillID string // 技能ID
CategoryID int
DataType string // 类型 mode=游戏玩法 level=等级 service=服务类型(如三角洲体验单、物资单等) gender=性别 price=价格
ChildType string // 子节点类型
ParentID string // 父节点 modeskillId levelmodeId genderlevelId pricegenderId
Value string // 名称 mode玩法名称 level等级名称 gender性别名称 price价格内容
Comment string // 描述
RankPriority int32 // 节点排名权重,高权重可以兼容低权重
SortNo int32 // 排序从小到大
PriceMale int32 // 男陪价格
PriceFemale int32 // 女陪价格
UnitName string // 指定价格时的结算单位 如:小时、局等
UnitValue string // 指定价格时的阶段单位对应的值如小时对应60分钟
LevelRemark string // 等级的备注,下单时选择了等级可以显示备注
DifficultyValues string // 游戏难度:机密 绝密 长夜等 mode专用
DifficultyDefaultValue string // 游戏难度默认值
}
func (request *SkillConfigAddRequest) Check() (err error) {
if len(request.SkillID) == 0 {
err = errors.New("技能ID不能为空")
return
}
if request.CategoryID == 0 {
err = errors.New("技能类型不能为空")
return
}
if len(request.DataType) == 0 {
err = errors.New("数据类型不能为空")
return
}
if request.DataType == "mode" {
request.ChildType = "level"
request.RankPriority = 0
request.PriceMale = 0
request.PriceFemale = 0
request.UnitName = ""
request.UnitValue = ""
request.LevelRemark = ""
request.DifficultyDefaultValue = ""
request.DifficultyValues = ""
} else if request.DataType == "level" {
request.ChildType = "service"
request.PriceMale = 0
request.PriceFemale = 0
request.UnitName = ""
request.UnitValue = ""
request.LevelRemark = ""
request.DifficultyDefaultValue = ""
request.DifficultyValues = ""
} else if request.DataType == "service" {
request.ChildType = ""
request.RankPriority = 0
request.LevelRemark = ""
} else {
err = errors.New("数据类型不正确")
return
}
if len(request.ParentID) == 0 {
err = errors.New("父节点id不能为空")
return
}
if len(request.Value) == 0 {
err = errors.New("配置名称不能为空")
return
}
return
}
type TSkillResponse struct {
// model_master.TSkill
CategoryName string
}
type CheckSellerSkillInnerRequest struct {
SkillApplyID string
OperatorID string
}
func (request *CheckSellerSkillInnerRequest) Check() (err error) {
if len(request.SkillApplyID) == 0 {
err = errors.New("申请id不能为空")
return
}
if len(request.OperatorID) == 0 {
err = errors.New("操作人不能为空")
return
}
return
}

44
pkg/dto/admin/user.go Normal file
View File

@ -0,0 +1,44 @@
package dto_admin
import "errors"
type AdjustmentNobilityRequest struct {
UserId string
ExpValue int32
OutId string
BizType string
}
func (param AdjustmentNobilityRequest) Check() (err error) {
if len(param.UserId) == 0 {
err = errors.New("UserId不能为空")
return
}
if param.ExpValue == 0 {
err = errors.New("ExpValue不能为空")
return
}
if len(param.OutId) == 0 {
err = errors.New("OutId不能为空")
return
}
if len(param.BizType) == 0 {
err = errors.New("BizType不能为空")
return
}
return
}
type AddInnerUserRequest struct {
UserId string
}
func (param AddInnerUserRequest) Check() (err error) {
if len(param.UserId) == 0 {
err = errors.New("UserId不能为空")
return
}
return err
}

View File

@ -0,0 +1,51 @@
package applepay
// IAP 请求
type IapRequest struct {
ReceiptData string `json:"receipt-data"` //base64票据
Password string `json:"password,omitempty"`
}
// iap 支付返回结果
type IapResponse struct {
Status int `json:"status"` // 支付状态 0=支付成功
Environment string `json:"environment"` // 环境
Receipt ReceiptDTO `json:"receipt"`
}
// 票据
type ReceiptDTO struct {
ReceiptType string `json:"receipt_type"`
AdamId int `json:"adam_id"`
AppItemId int `json:"app_item_id"`
BundleId string `json:"bundle_id"`
ApplicationVersion string `json:"application_version"`
DownloadId int `json:"download_id"`
VersionExternalIdentifier int `json:"version_external_identifier"`
ReceiptCreationDate string `json:"receipt_creation_date"`
ReceiptCreationDateMs string `json:"receipt_creation_date_ms"`
ReceiptCreationDatePst string `json:"receipt_creation_date_pst"`
RequestDate string `json:"request_date"`
RequestDateMs string `json:"request_date_ms"`
RequestDatePst string `json:"request_date_pst"`
OriginalPurchaseDate string `json:"original_purchase_date"`
OriginalPurchaseDateMs string `json:"original_purchase_date_ms"`
OriginalPurchaseDatePst string `json:"original_purchase_date_pst"`
OriginalApplicationVersion string `json:"original_application_version"`
InApp []IapTransaction `json:"in_app"`
}
// 苹果的支付交易对象
type IapTransaction struct {
Quantity string `json:"quantity"`
ProductId string `json:"product_id"`
TransactionId string `json:"transaction_id"`
OriginalTransactionId string `json:"original_transaction_id"`
PurchaseDate string `json:"purchase_date"`
PurchaseDateMs string `json:"purchase_date_ms"`
PurchaseDatePst string `json:"purchase_date_pst"`
OriginalPurchaseDate string `json:"original_purchase_date"`
OriginalPurchaseDateMs string `json:"original_purchase_date_ms"`
OriginalPurchaseDatePst string `json:"original_purchase_date_pst"`
IsTrialPeriod string `json:"is_trial_period"`
}

14
pkg/dto/dataDTO.go Normal file
View File

@ -0,0 +1,14 @@
package dto
type MatchUserDTO struct {
UserId string
NickName string
Avatar string
Gender string
BirthDay string
SkillName string
SkillMode string
SkillLevel string
BriefDesc string
VipConfig UserVipConfigDTO `gorm:"-"`
}

View File

@ -0,0 +1,17 @@
package inner
import "errors"
type AppealOrderRequest struct {
OrderId string
}
// 参数合法性检验
func (request *AppealOrderRequest) CheckParameter() (err error) {
if len(request.OrderId) == 0 {
err = errors.New("Mobile不能为空")
return
}
return
}

View File

@ -0,0 +1,39 @@
package inner
import (
"errors"
"gitea.ddegame.cn/open/servicebase/pkg/common/HyTools"
)
type AttackBossRequest struct {
AccessToken string
RoomId string
BossId string
AttackCount string
}
// 参数合法性检验
func (request *AttackBossRequest) CheckParameter() (err error) {
if len(request.AccessToken) == 0 {
err = errors.New("UserId不能为空")
return
}
if len(request.BossId) == 0 {
err = errors.New("BossId不能为空")
return
}
if len(request.AttackCount) == 0 {
err = errors.New("AttackCount不能为空")
return
}
if HyTools.StringToInt(request.AttackCount) < 1 || HyTools.StringToInt(request.AttackCount) > 100000 {
err = errors.New("AttackCount不合法")
return
}
return
}

View File

@ -0,0 +1,34 @@
package inner
import (
"errors"
"gitea.ddegame.cn/open/servicebase/pkg/common/HyTools"
)
type BuyLuckBoxKeysRequest struct {
AccessToken string
BuyCount string
}
// 参数合法性检验
func (request *BuyLuckBoxKeysRequest) CheckParameter() (err error) {
if len(request.AccessToken) == 0 {
err = errors.New("AccessToken不能为空")
return
}
if len(request.BuyCount) == 0 {
err = errors.New("BuyCount不能为空")
return
}
intCount := HyTools.StringToInt64(request.BuyCount)
if intCount < 1 || intCount > 10000 {
err = errors.New("购买数量不合法最大10000个")
return
}
return
}

View File

@ -0,0 +1,26 @@
package inner
import (
"errors"
)
type GetActivityBossRequest struct {
AccessToken string
ActivityId string
RoomId string
}
// 参数合法性检验
func (request *GetActivityBossRequest) CheckParameter() (err error) {
if len(request.AccessToken) == 0 {
err = errors.New("AccessToken不能为空")
return
}
if len(request.ActivityId) == 0 {
err = errors.New("ActivityId不能为空")
return
}
return
}

View File

@ -0,0 +1,25 @@
package inner
import (
"errors"
)
type GetOpenBoxRankRequest struct {
AccessToken string
RankType string //TODAY=今日榜 YESTODAY = 昨天
}
// 参数合法性检验
func (request *GetOpenBoxRankRequest) CheckParameter() (err error) {
if len(request.AccessToken) == 0 {
err = errors.New("AccessToken不能为空")
return
}
if len(request.RankType) == 0 {
err = errors.New("RankType不能为空")
return
}
return
}

View File

@ -0,0 +1,18 @@
package inner
import "errors"
type GetRoomWeeklyTopListRequest struct {
Week string
}
// 参数合法性检验
func (request *GetRoomWeeklyTopListRequest) CheckParameter() (err error) {
if len(request.Week) == 0 {
err = errors.New("Week不能为空")
return
}
return
}

View File

@ -0,0 +1,25 @@
package inner
import "errors"
// 领取击杀奖品
type GetSkillPrizeRequest struct {
AccessToken string
BossId string
}
// 参数合法性检验
func (request *GetSkillPrizeRequest) CheckParameter() (err error) {
if len(request.AccessToken) == 0 {
err = errors.New("AccessToken不能为空")
return
}
if len(request.BossId) == 0 {
err = errors.New("BossId不能为空")
return
}
return
}

View File

@ -0,0 +1,81 @@
package inner
import "errors"
// 获取用户的活动打怪排行
type GetUserActivityAttackRankRequest struct {
AccessToken string
ActivityIdList string
}
// 参数合法性检验
func (request *GetUserActivityAttackRankRequest) CheckParameter() (err error) {
if len(request.AccessToken) == 0 {
err = errors.New("AccessToken不能为空")
return
}
return
}
// 获取BOSS信息
type GetBossInfoRequest struct {
AccessToken string
BossId string
PageNo string
PageSize string
}
// 参数合法性检验
func (request *GetBossInfoRequest) CheckParameter() (err error) {
if len(request.AccessToken) == 0 {
err = errors.New("用户Id不能为空")
return
}
if len(request.BossId) == 0 {
err = errors.New("BossId不能为空")
return
}
return
}
// 获取领奖中心列表
type GetDeathPrizeListRequest struct {
AccessToken string
Page int
Size int
}
// 参数合法性检验
func (request *GetDeathPrizeListRequest) CheckParameter() (err error) {
if len(request.AccessToken) == 0 {
err = errors.New("用户Id不能为空")
return
}
if request.Page < 0 {
request.Page = 0
}
if request.Size < 1 {
request.Size = 10
}
return
}
// 获取领奖中心列表
type GetDeathPrizeRequest struct {
AccessToken string
BossId string
RoomId string
}
// 参数合法性检验
func (request *GetDeathPrizeRequest) CheckParameter() (err error) {
if len(request.AccessToken) == 0 {
err = errors.New("用户Id不能为空")
return
}
if len(request.BossId) == 0 {
err = errors.New("BossId不能为空")
return
}
return
}

Some files were not shown because too many files have changed in this diff Show More