ad.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package servers
  2. import (
  3. . "app.yhyue.com/moapp/jybase/api"
  4. util "app.yhyue.com/moapp/jybase/common"
  5. "app.yhyue.com/moapp/jybase/go-xweb/xweb"
  6. "app.yhyue.com/moapp/jybase/redis"
  7. "fmt"
  8. "jy-docs/public"
  9. "log"
  10. )
  11. type Ad struct {
  12. *xweb.Action
  13. ad xweb.Mapper `xweb:"/getAdvertisement"` //广告位图片
  14. }
  15. func (ad *Ad) Ad() {
  16. rData, errMsg := func() (interface{}, error) {
  17. var i_num int = -1
  18. s_code := ad.GetString("code") //广告位代码
  19. if i_num_req, err := ad.GetInteger("num"); err == nil { //数量 -1取一个
  20. i_num = i_num_req
  21. }
  22. obj := redis.Get("other", "ad_"+s_code)
  23. if obj != nil {
  24. return util.ObjArrToMapArr(obj.([]interface{})), nil
  25. } else {
  26. f := ""
  27. if i_num > -1 {
  28. f = `{"a_son":{"$slice":[0,` + fmt.Sprintf("%d", i_num) + `]}}`
  29. } else {
  30. f = `{"a_son":1}`
  31. }
  32. res, ok := public.MQFW.FindOneByField("ad", `{"s_code":"`+s_code+`"}`, f)
  33. if ok && res != nil && (*res)["a_son"] != nil {
  34. son := (*res)["a_son"].([]interface{})
  35. resmap := util.ObjArrToMapArr(son)
  36. redis.PutCKV("other", "ad_"+s_code, resmap)
  37. return resmap, nil
  38. }
  39. }
  40. return nil, nil
  41. }()
  42. if errMsg != nil {
  43. log.Printf("Ad err:%s\n", errMsg.Error())
  44. }
  45. ad.ServeJson(NewResult(rData, errMsg))
  46. }