package servers import ( . "app.yhyue.com/moapp/jybase/api" util "app.yhyue.com/moapp/jybase/common" "app.yhyue.com/moapp/jybase/go-xweb/xweb" "app.yhyue.com/moapp/jybase/redis" "fmt" "jy-docs/public" "log" ) type Ad struct { *xweb.Action ad xweb.Mapper `xweb:"/getAdvertisement"` //广告位图片 } func (ad *Ad) Ad() { rData, errMsg := func() (interface{}, error) { var i_num int = -1 s_code := ad.GetString("code") //广告位代码 if i_num_req, err := ad.GetInteger("num"); err == nil { //数量 -1取一个 i_num = i_num_req } obj := redis.Get("other", "ad_"+s_code) if obj != nil { return util.ObjArrToMapArr(obj.([]interface{})), nil } else { f := "" if i_num > -1 { f = `{"a_son":{"$slice":[0,` + fmt.Sprintf("%d", i_num) + `]}}` } else { f = `{"a_son":1}` } res, ok := public.MQFW.FindOneByField("ad", `{"s_code":"`+s_code+`"}`, f) if ok && res != nil && (*res)["a_son"] != nil { son := (*res)["a_son"].([]interface{}) resmap := util.ObjArrToMapArr(son) redis.PutCKV("other", "ad_"+s_code, resmap) return resmap, nil } } return nil, nil }() if errMsg != nil { log.Printf("Ad err:%s\n", errMsg.Error()) } ad.ServeJson(NewResult(rData, errMsg)) }