goods.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*
  2. * @Descripttion:
  3. * @version:
  4. * @Author: Neo,Huang
  5. * @Date: 2023-11-18 22:52:59
  6. * @LastEditors: Neo,Huang
  7. * @LastEditTime: 2023-11-19 16:04:30
  8. */
  9. package models
  10. import (
  11. "encoding/json"
  12. "github.com/astaxie/beego"
  13. "box-gm/utils"
  14. )
  15. type GoodsConfig struct {
  16. Id int `json:"id"` // 商品ID
  17. Name string `json:"name"` // 商品名称
  18. Price int `json:"rmb"` // 商品价格
  19. }
  20. type GoodsConfigs []*GoodsConfig
  21. type RES_CONF_GOODS struct {
  22. Code int `json:"code"` // 错误码
  23. GoodsList GoodsConfigs `json:"goodsList"` // 商品配置列表
  24. }
  25. var goodsConfigMap map[int]*GoodsConfig
  26. var goodsConfigs GoodsConfigs
  27. func init() {
  28. goodsConfigMap = make(map[int]*GoodsConfig)
  29. }
  30. func UpdateGoodsConfig() (int, int) {
  31. params := make(map[string]interface{})
  32. params["name"] = "gm_get_conf_goods"
  33. body, _ := json.Marshal(params)
  34. host := utils.GetKeyConf("gameservers", "web")
  35. sign := utils.Strtomd5(string(body) + utils.GetKeyConf("app", "gameKey"))
  36. url := "http://" + host + "/json?sign=" + sign
  37. buff, err := utils.SendAndRecvHTTP("POST", url, string(body))
  38. if err != nil {
  39. return 0, 0
  40. }
  41. var res RES_CONF_GOODS
  42. err = json.Unmarshal(buff, &res)
  43. if err != nil {
  44. return 0, 0
  45. }
  46. if res.Code != 200 {
  47. return 0, 0
  48. }
  49. oldCount := len(goodsConfigs)
  50. goodsConfigMap = make(map[int]*GoodsConfig)
  51. goodsConfigs = GoodsConfigs{}
  52. for _, v := range res.GoodsList {
  53. goodsConfigMap[v.Id] = v
  54. goodsConfigs = append(goodsConfigs, v)
  55. }
  56. beego.Info("load goods config, oldCount: ", oldCount, "newCount", len(goodsConfigs))
  57. return oldCount, len(goodsConfigs)
  58. }
  59. func GetGoodsName(id int) string {
  60. item, ok := goodsConfigMap[id]
  61. if !ok {
  62. return ""
  63. }
  64. return item.Name
  65. }
  66. func GetGoodsPrice(id int) int {
  67. item, ok := goodsConfigMap[id]
  68. if !ok {
  69. return 0
  70. }
  71. return item.Price
  72. }
  73. // 获取物品列表
  74. func GetGoodsInfoList() GoodsConfigs {
  75. // InitItemConfig()
  76. return goodsConfigs
  77. }