gms_equipment.go 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  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 AddLegend(ctx *gin.Context, params forms.AddMaterialReq) (err error) {
  167. if params.UserId == 0 {
  168. return errNoUser
  169. }
  170. playerAttr, err := player.GetAttrByUserId(params.UserId)
  171. if err != nil {
  172. return
  173. }
  174. DB, err := player.GetDBByPlayerAttr(playerAttr)
  175. if err != nil {
  176. return
  177. }
  178. //获取userAccount
  179. var userAccountModel sqlModel.UserAccount
  180. err = config.LDB.WithContext(ctx).Scopes(sqlModel.UserAccountTable(&userAccountModel, playerAttr.AccID)).Where("accId = ?", playerAttr.AccID).First(&userAccountModel).Error
  181. if err != nil {
  182. return
  183. }
  184. openIdArr := strings.Split(userAccountModel.Openid, "@")
  185. msgs := msg.GmAddMaterial{
  186. MsgId: character.GenerateMsgId(),
  187. PlayerID: params.UserId,
  188. Legends: map[int64]int64{params.Id: params.Count},
  189. OperatorId: token.GetUID(ctx),
  190. ClientPlat: openIdArr[1],
  191. }
  192. rpc_share.MsgMap[msgs.MsgId] = fmt.Sprintf("%s,GM为玩家[%d]添加符文[%d],数量[%d]", utility.FormatSecond(time.Now()), params.UserId, params.Id, params.Count)
  193. var resp *msg.ResponseGmAddMaterial
  194. res, err := config.GmNats.GmRequest(DB, "GmAddMaterial", msgs)
  195. if err != nil {
  196. return
  197. }
  198. if err = json.Unmarshal(res, &resp); err != nil {
  199. return
  200. }
  201. rpc_share.LogChan <- rpc_share.LogMsg{
  202. MsgID: msgs.MsgId,
  203. Data: resp,
  204. }
  205. return
  206. }
  207. /*
  208. func NewMaterials(params forms.AddMaterialReq) []*model.DropMaterial {
  209. return []*model.DropMaterial{
  210. {
  211. ID: params.Id,
  212. Count: int(params.Count),
  213. },
  214. }
  215. }
  216. */
  217. func NewEquipments(params forms.AddMaterialReq) []int64 {
  218. var resp []int64
  219. if len(params.Equipments) > 0 {
  220. return params.Equipments
  221. }
  222. for i := 0; i < int(params.Count); i++ {
  223. resp = append(resp, params.Id)
  224. }
  225. return resp
  226. }
  227. func AddGift(ctx *gin.Context, params forms.AddGiftReq) (err error) {
  228. if params.PlayerId == 0 {
  229. return errNoUser
  230. }
  231. playerAttr, err := player.GetAttrByUserId(params.PlayerId)
  232. if err != nil {
  233. return
  234. }
  235. DB, err := player.GetDBByPlayerAttr(playerAttr)
  236. if err != nil {
  237. return
  238. }
  239. msgs := forms.GmSendGift{
  240. MsgId: character.GenerateMsgId(),
  241. PlayerID: params.PlayerId,
  242. Gift: params.GiftId,
  243. }
  244. var resp forms.ResponseGmSendGift
  245. res, err := config.GmNats.GmRequest(DB, "GmSendGift", msgs)
  246. if err != nil {
  247. return
  248. }
  249. if err = json.Unmarshal(res, &resp); err != nil {
  250. return
  251. }
  252. rpc_share.LogChan <- rpc_share.LogMsg{
  253. MsgID: msgs.MsgId,
  254. Data: resp,
  255. }
  256. return
  257. }