gms_equipment.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  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 AddRune(ctx *gin.Context, params forms.AddMaterialReq) (err error) {
  125. if params.UserId == 0 {
  126. return errNoUser
  127. }
  128. playerAttr, err := player.GetAttrByUserId(params.UserId)
  129. if err != nil {
  130. return
  131. }
  132. DB, err := player.GetDBByPlayerAttr(playerAttr)
  133. if err != nil {
  134. return
  135. }
  136. //获取userAccount
  137. var userAccountModel sqlModel.UserAccount
  138. err = config.LDB.WithContext(ctx).Scopes(sqlModel.UserAccountTable(&userAccountModel, playerAttr.AccID)).Where("accId = ?", playerAttr.AccID).First(&userAccountModel).Error
  139. if err != nil {
  140. return
  141. }
  142. openIdArr := strings.Split(userAccountModel.Openid, "@")
  143. msgs := msg.GmAddMaterial{
  144. MsgId: character.GenerateMsgId(),
  145. PlayerID: params.UserId,
  146. Runes: map[int64]int64{params.Id: params.Count},
  147. OperatorId: token.GetUID(ctx),
  148. ClientPlat: openIdArr[1],
  149. }
  150. rpc_share.MsgMap[msgs.MsgId] = fmt.Sprintf("%s,GM为玩家[%d]添加符文[%d],数量[%d]", utility.FormatSecond(time.Now()), params.UserId, params.Id, params.Count)
  151. var resp *msg.ResponseGmAddMaterial
  152. res, err := config.GmNats.GmRequest(DB, "GmAddMaterial", msgs)
  153. if err != nil {
  154. return
  155. }
  156. if err = json.Unmarshal(res, &resp); err != nil {
  157. return
  158. }
  159. rpc_share.LogChan <- rpc_share.LogMsg{
  160. MsgID: msgs.MsgId,
  161. Data: resp,
  162. }
  163. return
  164. }
  165. /*
  166. func NewMaterials(params forms.AddMaterialReq) []*model.DropMaterial {
  167. return []*model.DropMaterial{
  168. {
  169. ID: params.Id,
  170. Count: int(params.Count),
  171. },
  172. }
  173. }
  174. */
  175. func NewEquipments(params forms.AddMaterialReq) []int64 {
  176. var resp []int64
  177. if len(params.Equipments) > 0 {
  178. return params.Equipments
  179. }
  180. for i := 0; i < int(params.Count); i++ {
  181. resp = append(resp, params.Id)
  182. }
  183. return resp
  184. }
  185. func AddGift(ctx *gin.Context, params forms.AddGiftReq) (err error) {
  186. if params.PlayerId == 0 {
  187. return errNoUser
  188. }
  189. playerAttr, err := player.GetAttrByUserId(params.PlayerId)
  190. if err != nil {
  191. return
  192. }
  193. DB, err := player.GetDBByPlayerAttr(playerAttr)
  194. if err != nil {
  195. return
  196. }
  197. msgs := forms.GmSendGift{
  198. MsgId: character.GenerateMsgId(),
  199. PlayerID: params.PlayerId,
  200. Gift: params.GiftId,
  201. }
  202. var resp forms.ResponseGmSendGift
  203. res, err := config.GmNats.GmRequest(DB, "GmSendGift", msgs)
  204. if err != nil {
  205. return
  206. }
  207. if err = json.Unmarshal(res, &resp); err != nil {
  208. return
  209. }
  210. rpc_share.LogChan <- rpc_share.LogMsg{
  211. MsgID: msgs.MsgId,
  212. Data: resp,
  213. }
  214. return
  215. }