gms_equipment.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. package gm_services
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "fmt"
  6. "gadmin/config"
  7. "gadmin/internal/admin/forms"
  8. "gadmin/internal/admin/gm_rpc/rpc_share"
  9. sqlModel "gadmin/internal/gorm/model"
  10. "gadmin/package/gmdata"
  11. "gadmin/utility"
  12. "gadmin/utility/character"
  13. "gadmin/utility/player"
  14. "gadmin/utility/token"
  15. "github.com/gin-gonic/gin"
  16. "leafstalk/covenant/msg"
  17. "strings"
  18. "time"
  19. )
  20. var (
  21. errNoUser = errors.New("playerId不能为空")
  22. )
  23. // 给用户加装备
  24. func AddEquipment(ctx *gin.Context, params forms.AddMaterialReq) (err error) {
  25. if params.UserId == 0 {
  26. return errNoUser
  27. }
  28. playerAttr, err := player.GetAttrByUserId(params.UserId)
  29. if err != nil {
  30. return
  31. }
  32. DB, err := player.GetDBByPlayerAttr(playerAttr)
  33. if err != nil {
  34. return
  35. }
  36. //获取userAccount
  37. var userAccountModel sqlModel.UserAccount
  38. err = config.LDB.WithContext(ctx).Scopes(sqlModel.UserAccountTable(&userAccountModel, playerAttr.AccID)).Where("accId = ?", playerAttr.AccID).First(&userAccountModel).Error
  39. if err != nil {
  40. return
  41. }
  42. openIdArr := strings.Split(userAccountModel.Openid, "@")
  43. msgs := msg.GmAddMaterial{
  44. MsgId: character.GenerateMsgId(),
  45. PlayerID: params.UserId,
  46. Equipments: NewEquipments(params),
  47. OperatorId: token.GetUID(ctx),
  48. ClientPlat: openIdArr[1],
  49. }
  50. for _, EID := range msgs.Equipments {
  51. if EID != gmdata.GetEquipmentStartID(EID) {
  52. return errors.New("目前只能添加1级装备")
  53. }
  54. }
  55. //err = gate.SendToWorld(0, &msgs)
  56. //if err == nil {
  57. //
  58. //}
  59. if params.SuitName != "" {
  60. rpc_share.MsgMap[msgs.MsgId] = fmt.Sprintf("%s,GM为玩家[%d]添加装备套装[%s],数量共计[%d]件", utility.FormatSecond(time.Now()), params.UserId, params.SuitName, len(params.Equipments))
  61. } else {
  62. rpc_share.MsgMap[msgs.MsgId] = fmt.Sprintf("%s,GM为玩家[%d]添加装备[%d],数量[%d]", utility.FormatSecond(time.Now()), params.UserId, params.Id, params.Count)
  63. }
  64. var resp *msg.ResponseGmAddMaterial
  65. res, err := config.GmNats.GmRequest(DB, "GmAddMaterial", msgs)
  66. if err != nil {
  67. return
  68. }
  69. if err = json.Unmarshal(res, &resp); err != nil {
  70. return
  71. }
  72. rpc_share.LogChan <- rpc_share.LogMsg{
  73. MsgID: msgs.MsgId,
  74. Data: resp,
  75. }
  76. return
  77. }
  78. // 给用户加材料
  79. func AddMaterial(ctx *gin.Context, params forms.AddMaterialReq) (err error) {
  80. if params.UserId == 0 {
  81. return errNoUser
  82. }
  83. playerAttr, err := player.GetAttrByUserId(params.UserId)
  84. if err != nil {
  85. return
  86. }
  87. DB, err := player.GetDBByPlayerAttr(playerAttr)
  88. if err != nil {
  89. return
  90. }
  91. //获取userAccount
  92. var userAccountModel sqlModel.UserAccount
  93. err = config.LDB.WithContext(ctx).Scopes(sqlModel.UserAccountTable(&userAccountModel, playerAttr.AccID)).Where("accId = ?", playerAttr.AccID).First(&userAccountModel).Error
  94. if err != nil {
  95. return
  96. }
  97. openIdArr := strings.Split(userAccountModel.Openid, "@")
  98. msgs := msg.GmAddMaterial{
  99. MsgId: character.GenerateMsgId(),
  100. PlayerID: params.UserId,
  101. Materials: map[int64]int64{params.Id: params.Count},
  102. OperatorId: token.GetUID(ctx),
  103. ClientPlat: openIdArr[1],
  104. }
  105. //err = gate.SendToWorld(0, &msgs)
  106. //if err == nil {
  107. //}
  108. rpc_share.MsgMap[msgs.MsgId] = fmt.Sprintf("%s,GM为玩家[%d]添加材料[%d],数量[%d]", utility.FormatSecond(time.Now()), params.UserId, params.Id, params.Count)
  109. var resp *msg.ResponseGmAddMaterial
  110. res, err := config.GmNats.GmRequest(DB, "GmAddMaterial", msgs)
  111. if err != nil {
  112. return
  113. }
  114. if err = json.Unmarshal(res, &resp); err != nil {
  115. return
  116. }
  117. rpc_share.LogChan <- rpc_share.LogMsg{
  118. MsgID: msgs.MsgId,
  119. Data: resp,
  120. }
  121. return
  122. }
  123. /*
  124. func NewMaterials(params forms.AddMaterialReq) []*model.DropMaterial {
  125. return []*model.DropMaterial{
  126. {
  127. ID: params.Id,
  128. Count: int(params.Count),
  129. },
  130. }
  131. }
  132. */
  133. func NewEquipments(params forms.AddMaterialReq) []int64 {
  134. var resp []int64
  135. if len(params.Equipments) > 0 {
  136. return params.Equipments
  137. }
  138. for i := 0; i < int(params.Count); i++ {
  139. resp = append(resp, params.Id)
  140. }
  141. return resp
  142. }
  143. func AddGift(ctx *gin.Context, params forms.AddGiftReq) (err error) {
  144. if params.PlayerId == 0 {
  145. return errNoUser
  146. }
  147. playerAttr, err := player.GetAttrByUserId(params.PlayerId)
  148. if err != nil {
  149. return
  150. }
  151. DB, err := player.GetDBByPlayerAttr(playerAttr)
  152. if err != nil {
  153. return
  154. }
  155. msgs := forms.GmSendGift{
  156. MsgId: character.GenerateMsgId(),
  157. PlayerID: params.PlayerId,
  158. Gift: params.GiftId,
  159. }
  160. var resp forms.ResponseGmSendGift
  161. res, err := config.GmNats.GmRequest(DB, "GmSendGift", msgs)
  162. if err != nil {
  163. return
  164. }
  165. if err = json.Unmarshal(res, &resp); err != nil {
  166. return
  167. }
  168. rpc_share.LogChan <- rpc_share.LogMsg{
  169. MsgID: msgs.MsgId,
  170. Data: resp,
  171. }
  172. return
  173. }