浏览代码

fix:通用广告位提价

wangkaiyue 3 年之前
父节点
当前提交
ec70695b96

+ 57 - 0
src/jfw/modules/publicapply/src/ad/entity/struct.go

@@ -0,0 +1,57 @@
+package entity
+
+import (
+	"encoding/json"
+	"strings"
+	"time"
+)
+
+//AdInfo 广告信息
+type AdInfo struct {
+	S_link   string `json:"s_link"`   //广告位跳转链接
+	S_pic    string `json:"s_pic"`    //广告位弹窗
+	S_remark string `json:"s_remark"` //备注
+	O_extend struct {
+		Linktype  string `json:"linktype"`  //是否外部链接
+		Height    string `json:"height"`    //高度
+		Width     string `json:"width"`     //宽度
+		StartTime string `json:"startTime"` //开始时间
+		EndTime   string `json:"endTime"`   //结束时间
+	} `json:"o_extend"` //拓展属性
+}
+
+//Handle 广告位信息处理
+func Handle(data []interface{}) []AdInfo {
+	var res = []AdInfo{}
+	if len(data) > 0 {
+		AdInfo_Arr := []AdInfo{}
+		bytes, err := json.Marshal(data)
+		if err != nil {
+			return res
+		}
+		json.Unmarshal(bytes, &AdInfo_Arr)
+		if len(AdInfo_Arr) > 0 {
+			now := time.Now()
+			for _, v := range AdInfo_Arr {
+				if v.O_extend.StartTime != "" && len(strings.Split(v.O_extend.StartTime, "-")) == 6 {
+					if thisTime, err := time.ParseInLocation("2006-01-02-15-04-05", v.O_extend.StartTime, time.Local); err == nil {
+						//广告还未开始
+						if thisTime.Unix() > now.Unix() {
+							continue
+						}
+					}
+				}
+				if v.O_extend.EndTime != "" && len(strings.Split(v.O_extend.EndTime, "-")) == 6 {
+					if thisTime, err := time.ParseInLocation("2006-01-02-15-04-05", v.O_extend.EndTime, time.Local); err == nil {
+						//广告已经结束
+						if thisTime.Unix() < now.Unix() {
+							continue
+						}
+					}
+				}
+				res = append(res, v)
+			}
+		}
+	}
+	return res
+}

+ 11 - 0
src/jfw/modules/publicapply/src/ad/init.go

@@ -0,0 +1,11 @@
+package ad
+
+import (
+	"ad/service"
+	"github.com/go-xweb/xweb"
+)
+
+func init() {
+	xweb.AddAction(&service.JyAdvertisement{})
+	//xweb.AddRouter("/free", &service.JyAdvertisement{})
+}

+ 50 - 0
src/jfw/modules/publicapply/src/ad/service/actions.go

@@ -0,0 +1,50 @@
+package service
+
+import (
+	"ad/entity"
+	. "api"
+	"db"
+	"encoding/json"
+	"github.com/go-xweb/xweb"
+	"log"
+	"qfw/util/redis"
+)
+
+//JyAdvertisement 剑鱼广告位
+type JyAdvertisement struct {
+	*xweb.Action
+	getJyAdList xweb.Mapper `xweb:"/free/getJyAdList"` //获取剑鱼广告位
+}
+
+type AdRequestMsg struct {
+	AdCode []string `json:"codes"` //广告位code
+}
+
+func (a *JyAdvertisement) GetJyAdList() {
+	rData, errMsg := func() (interface{}, error) {
+		adReqMsg := new(AdRequestMsg)
+		returnData := map[string]interface{}{}
+		if json.Unmarshal(a.Body(), &adReqMsg) == nil && len(adReqMsg.AdCode) > 0 {
+			for _, sCode := range adReqMsg.AdCode {
+				var adInfo []entity.AdInfo
+				obj := redis.Get("other", "ad_"+sCode)
+				if obj != nil {
+					adInfo = entity.Handle(obj.([]interface{}))
+				} else {
+					res, ok := db.Mgo.FindOneByField("ad", `{"s_code":"`+sCode+`"}`, `{"a_son":1}`)
+					if ok && res != nil && (*res)["a_son"] != nil {
+						son := (*res)["a_son"].([]interface{})
+						adInfo = entity.Handle(son)
+						redis.PutCKV("other", "ad_"+sCode, adInfo)
+					}
+				}
+				returnData[sCode] = adInfo
+			}
+		}
+		return returnData, nil
+	}()
+	if errMsg != nil {
+		log.Printf("Ad  err:%s\n", errMsg.Error())
+	}
+	a.ServeJson(NewResult(rData, errMsg))
+}