player_material.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package service
  2. import (
  3. "encoding/json"
  4. "gadmin/config"
  5. "gadmin/internal/admin/consts"
  6. "gadmin/internal/admin/forms"
  7. "gadmin/internal/gorm/query"
  8. "gadmin/utility/player"
  9. "gadmin/utility/serializer"
  10. "github.com/gin-gonic/gin"
  11. "sort"
  12. )
  13. var PlayerMaterial = new(sPlayerMaterial)
  14. type sPlayerMaterial struct{}
  15. func (s *sPlayerMaterial) Equipments(ctx *gin.Context, req forms.PlayerEquipmentsReq) serializer.Response {
  16. DB, err := player.GetDBByUserId(req.PlayerId)
  17. if err != nil {
  18. return serializer.Err(consts.CodeParamErr, "GetDBByUserId err", err)
  19. }
  20. var (
  21. q = query.Use(config.GDBGroup[DB]).PlayerMaterial
  22. m = q.WithContext(ctx).Select(q.Equipments).Where(q.Playerid.Eq(req.PlayerId))
  23. equipments string
  24. dropEquipmentMap map[string]*forms.DropEquipment
  25. dropEquipmentList forms.DropEquipmentList
  26. models forms.PlayerEquipmentsRes
  27. )
  28. if err = m.Scan(&equipments); err != nil {
  29. return serializer.Err(
  30. consts.CodeParamErr,
  31. "查询出错 lists",
  32. err,
  33. )
  34. }
  35. if equipments == "" {
  36. models.List = nil
  37. return serializer.Suc(models)
  38. }
  39. err = json.Unmarshal([]byte(equipments), &dropEquipmentMap)
  40. if err != nil {
  41. return serializer.Err(
  42. consts.CodeParamErr,
  43. "转换出错",
  44. err,
  45. )
  46. }
  47. for _, v := range dropEquipmentMap {
  48. dropEquipmentList = append(dropEquipmentList, *v)
  49. }
  50. sort.Sort(dropEquipmentList)
  51. models.List = dropEquipmentList
  52. return serializer.Suc(models)
  53. }