123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- package gm_services
- import (
- "encoding/json"
- "errors"
- "fmt"
- "gadmin/config"
- "gadmin/internal/admin/forms"
- "gadmin/internal/admin/gm_rpc/rpc_share"
- sqlModel "gadmin/internal/gorm/model"
- "gadmin/package/gmdata"
- "gadmin/utility"
- "gadmin/utility/character"
- "gadmin/utility/player"
- "gadmin/utility/token"
- "github.com/gin-gonic/gin"
- "leafstalk/covenant/msg"
- "strings"
- "time"
- )
- var (
- errNoUser = errors.New("playerId不能为空")
- )
- // 给用户加装备
- func AddEquipment(ctx *gin.Context, params forms.AddMaterialReq) (err error) {
- if params.UserId == 0 {
- return errNoUser
- }
- playerAttr, err := player.GetAttrByUserId(params.UserId)
- if err != nil {
- return
- }
- DB, err := player.GetDBByPlayerAttr(playerAttr)
- if err != nil {
- return
- }
- //获取userAccount
- var userAccountModel sqlModel.UserAccount
- err = config.LDB.WithContext(ctx).Scopes(sqlModel.UserAccountTable(&userAccountModel, playerAttr.AccID)).Where("accId = ?", playerAttr.AccID).First(&userAccountModel).Error
- if err != nil {
- return
- }
- openIdArr := strings.Split(userAccountModel.Openid, "@")
- msgs := msg.GmAddMaterial{
- MsgId: character.GenerateMsgId(),
- PlayerID: params.UserId,
- Equipments: NewEquipments(params),
- OperatorId: token.GetUID(ctx),
- ClientPlat: openIdArr[1],
- }
- for _, EID := range msgs.Equipments {
- if EID != gmdata.GetEquipmentStartID(EID) {
- return errors.New("目前只能添加1级装备")
- }
- }
- //err = gate.SendToWorld(0, &msgs)
- //if err == nil {
- //
- //}
- if params.SuitName != "" {
- rpc_share.MsgMap[msgs.MsgId] = fmt.Sprintf("%s,GM为玩家[%d]添加装备套装[%s],数量共计[%d]件", utility.FormatSecond(time.Now()), params.UserId, params.SuitName, len(params.Equipments))
- } else {
- rpc_share.MsgMap[msgs.MsgId] = fmt.Sprintf("%s,GM为玩家[%d]添加装备[%d],数量[%d]", utility.FormatSecond(time.Now()), params.UserId, params.Id, params.Count)
- }
- var resp *msg.ResponseGmAddMaterial
- res, err := config.GmNats.GmRequest(DB, "GmAddMaterial", msgs)
- if err != nil {
- return
- }
- if err = json.Unmarshal(res, &resp); err != nil {
- return
- }
- rpc_share.LogChan <- rpc_share.LogMsg{
- MsgID: msgs.MsgId,
- Data: resp,
- }
- return
- }
- // 给用户加材料
- func AddMaterial(ctx *gin.Context, params forms.AddMaterialReq) (err error) {
- if params.UserId == 0 {
- return errNoUser
- }
- playerAttr, err := player.GetAttrByUserId(params.UserId)
- if err != nil {
- return
- }
- DB, err := player.GetDBByPlayerAttr(playerAttr)
- if err != nil {
- return
- }
- //获取userAccount
- var userAccountModel sqlModel.UserAccount
- err = config.LDB.WithContext(ctx).Scopes(sqlModel.UserAccountTable(&userAccountModel, playerAttr.AccID)).Where("accId = ?", playerAttr.AccID).First(&userAccountModel).Error
- if err != nil {
- return
- }
- openIdArr := strings.Split(userAccountModel.Openid, "@")
- msgs := msg.GmAddMaterial{
- MsgId: character.GenerateMsgId(),
- PlayerID: params.UserId,
- Materials: map[int64]int64{params.Id: params.Count},
- OperatorId: token.GetUID(ctx),
- ClientPlat: openIdArr[1],
- }
- //err = gate.SendToWorld(0, &msgs)
- //if err == nil {
- //}
- rpc_share.MsgMap[msgs.MsgId] = fmt.Sprintf("%s,GM为玩家[%d]添加材料[%d],数量[%d]", utility.FormatSecond(time.Now()), params.UserId, params.Id, params.Count)
- var resp *msg.ResponseGmAddMaterial
- res, err := config.GmNats.GmRequest(DB, "GmAddMaterial", msgs)
- if err != nil {
- return
- }
- if err = json.Unmarshal(res, &resp); err != nil {
- return
- }
- rpc_share.LogChan <- rpc_share.LogMsg{
- MsgID: msgs.MsgId,
- Data: resp,
- }
- return
- }
- // 给用户加符文
- func AddRune(ctx *gin.Context, params forms.AddMaterialReq) (err error) {
- if params.UserId == 0 {
- return errNoUser
- }
- playerAttr, err := player.GetAttrByUserId(params.UserId)
- if err != nil {
- return
- }
- DB, err := player.GetDBByPlayerAttr(playerAttr)
- if err != nil {
- return
- }
- //获取userAccount
- var userAccountModel sqlModel.UserAccount
- err = config.LDB.WithContext(ctx).Scopes(sqlModel.UserAccountTable(&userAccountModel, playerAttr.AccID)).Where("accId = ?", playerAttr.AccID).First(&userAccountModel).Error
- if err != nil {
- return
- }
- openIdArr := strings.Split(userAccountModel.Openid, "@")
- msgs := msg.GmAddMaterial{
- MsgId: character.GenerateMsgId(),
- PlayerID: params.UserId,
- Runes: map[int64]int64{params.Id: params.Count},
- OperatorId: token.GetUID(ctx),
- ClientPlat: openIdArr[1],
- }
- rpc_share.MsgMap[msgs.MsgId] = fmt.Sprintf("%s,GM为玩家[%d]添加符文[%d],数量[%d]", utility.FormatSecond(time.Now()), params.UserId, params.Id, params.Count)
- var resp *msg.ResponseGmAddMaterial
- res, err := config.GmNats.GmRequest(DB, "GmAddMaterial", msgs)
- if err != nil {
- return
- }
- if err = json.Unmarshal(res, &resp); err != nil {
- return
- }
- rpc_share.LogChan <- rpc_share.LogMsg{
- MsgID: msgs.MsgId,
- Data: resp,
- }
- return
- }
- // 给用户加铭文
- func AddLegend(ctx *gin.Context, params forms.AddMaterialReq) (err error) {
- if params.UserId == 0 {
- return errNoUser
- }
- playerAttr, err := player.GetAttrByUserId(params.UserId)
- if err != nil {
- return
- }
- DB, err := player.GetDBByPlayerAttr(playerAttr)
- if err != nil {
- return
- }
- //获取userAccount
- var userAccountModel sqlModel.UserAccount
- err = config.LDB.WithContext(ctx).Scopes(sqlModel.UserAccountTable(&userAccountModel, playerAttr.AccID)).Where("accId = ?", playerAttr.AccID).First(&userAccountModel).Error
- if err != nil {
- return
- }
- openIdArr := strings.Split(userAccountModel.Openid, "@")
- msgs := msg.GmAddMaterial{
- MsgId: character.GenerateMsgId(),
- PlayerID: params.UserId,
- Legends: map[int64]int64{params.Id: params.Count},
- OperatorId: token.GetUID(ctx),
- ClientPlat: openIdArr[1],
- }
- rpc_share.MsgMap[msgs.MsgId] = fmt.Sprintf("%s,GM为玩家[%d]添加符文[%d],数量[%d]", utility.FormatSecond(time.Now()), params.UserId, params.Id, params.Count)
- var resp *msg.ResponseGmAddMaterial
- res, err := config.GmNats.GmRequest(DB, "GmAddMaterial", msgs)
- if err != nil {
- return
- }
- if err = json.Unmarshal(res, &resp); err != nil {
- return
- }
- rpc_share.LogChan <- rpc_share.LogMsg{
- MsgID: msgs.MsgId,
- Data: resp,
- }
- return
- }
- /*
- func NewMaterials(params forms.AddMaterialReq) []*model.DropMaterial {
- return []*model.DropMaterial{
- {
- ID: params.Id,
- Count: int(params.Count),
- },
- }
- }
- */
- func NewEquipments(params forms.AddMaterialReq) []int64 {
- var resp []int64
- if len(params.Equipments) > 0 {
- return params.Equipments
- }
- for i := 0; i < int(params.Count); i++ {
- resp = append(resp, params.Id)
- }
- return resp
- }
- func AddGift(ctx *gin.Context, params forms.AddGiftReq) (err error) {
- if params.PlayerId == 0 {
- return errNoUser
- }
- playerAttr, err := player.GetAttrByUserId(params.PlayerId)
- if err != nil {
- return
- }
- DB, err := player.GetDBByPlayerAttr(playerAttr)
- if err != nil {
- return
- }
- msgs := forms.GmSendGift{
- MsgId: character.GenerateMsgId(),
- PlayerID: params.PlayerId,
- Gift: params.GiftId,
- }
- var resp forms.ResponseGmSendGift
- res, err := config.GmNats.GmRequest(DB, "GmSendGift", msgs)
- if err != nil {
- return
- }
- if err = json.Unmarshal(res, &resp); err != nil {
- return
- }
- rpc_share.LogChan <- rpc_share.LogMsg{
- MsgID: msgs.MsgId,
- Data: resp,
- }
- return
- }
|