rdluck 4 роки тому
батько
коміт
3525367d5a
4 змінених файлів з 119 додано та 10 видалено
  1. 48 1
      models/data_source_longzhong.go
  2. 1 0
      models/db.go
  3. 68 7
      services/data_source_longzhong.go
  4. 2 2
      services/task.go

+ 48 - 1
models/data_source_longzhong.go

@@ -214,6 +214,53 @@ func ModifyLongzhonginfoIsNormal(longzhonginfoId int) (err error) {
 	o := orm.NewOrm()
 	o.Using("edb")
 	sql := ` UPDATE longzhonginfo SET is_normal=0 WHERE longzhonginfo_id=? `
-	_, err = o.Raw(sql,longzhonginfoId).Exec()
+	_, err = o.Raw(sql, longzhonginfoId).Exec()
+	return
+}
+
+type LzPriceInfo struct {
+	Standard    string `json:"standard"`
+	ModelName   string `json:"modelName"`
+	Unit        string `json:"unit"`
+	AreaName    string `json:"areaName"`
+	PriceType   string `json:"priceType"`
+	Memo        string `json:"memo"`
+	Id          string `json:"id"`
+	ProductName string `json:"productName"`
+}
+
+type LzPriceInfoResp struct {
+	Msg  string         `json:"msg"`
+	Code int            `json:"code"`
+	Data []*LzPriceInfo `json:"data"`
+}
+
+type Longzhongpriceinfo struct {
+	LongzhongpriceinfoId int `orm:"column(longzhongpriceinfo_id);pk"`
+	Standard             string
+	ModelName            string
+	Unit                 string
+	AreaName             string
+	PriceType            string
+	Memo                 string
+	PriceId              string
+	ProductName          string
+	InfoType             string
+	InfoTypeRemark       string
+}
+
+func AddLongzhongpriceinfo(item *Longzhongpriceinfo) (newId int64, err error) {
+	o := orm.NewOrm()
+	o.Using("edb")
+	newId, err = o.Insert(item)
+	return
+}
+
+//判断指标数据是否已经录入
+func GetLongzhongpriceinfoCount(unitid string) (count int, err error) {
+	o := orm.NewOrm()
+	o.Using("edb")
+	sql := `SELECT COUNT(1) AS count FROM longzhongpriceinfo WHERE price_id=? `
+	err = o.Raw(sql, unitid).QueryRow(&count)
 	return
 }

+ 1 - 0
models/db.go

@@ -42,5 +42,6 @@ func init() {
 		new(Longzhonginfo),
 		new(Longzhongdata),
 		new(EdbdataClassify),
+		new(Longzhongpriceinfo),
 	)
 }

+ 68 - 7
services/data_source_longzhong.go

@@ -622,12 +622,73 @@ func LzExportExcel() {
 }
 
 func GetLzProductPriceProduct() (err error) {
-	getUrl := `https://openapi.oilchem.net/price/getProduct?password=HZMD2020&type=guoji&username=hzmd`
-	//username := "hzmd"
-	//password := "HZMD2020"
-	body, err := http.Get(getUrl)
-	fmt.Print("err:", err)
-	fmt.Print("body")
-	fmt.Print(string(body))
+	var msg string
+	defer func() {
+		if err != nil {
+			fmt.Println("Err:" + err.Error())
+			go utils.SendEmail("获取隆众价格指标失败"+time.Now().Format("2006-01-02 15:04:05"), ";Err:"+err.Error(), utils.EmailSendToUsers)
+		}
+		if msg != "" {
+			go utils.SendEmail("获取隆众价格指标失败"+time.Now().Format("2006-01-02 15:04:05"), ";msg:"+msg, utils.EmailSendToUsers)
+		}
+	}()
+
+	//chuchang, guonei, guoji, oil ,lingshou,guojioil,base,国内出厂,国内市场,国际市场,国内成品油批发价,国内成品油零售价,国际原油,基准价
+	typeMap := make(map[string]string)
+	typeMap["chuchang"] = "国内出厂"
+	typeMap["guonei"] = "国内市场"
+	typeMap["guoji"] = "国际市场"
+	typeMap["oil"] = "国内成品油批发价"
+	typeMap["lingshou"] = "国内成品油零售价"
+	typeMap["guojioil"] = "国际原油"
+	typeMap["base"] = "基准价"
+	username := "hzmd"
+	password := "HZMD2020"
+	for k, v := range typeMap {
+		getUrl := `https://openapi.oilchem.net/price/getProduct?password=` + password + `&type=` + k + `&username=` + username + ``
+		body, err := http.Get(getUrl)
+		if err != nil {
+			msg = "获取隆众价格指标失败:Err" + err.Error()
+			return
+		}
+		infoList := new(models.LzPriceInfoResp)
+		err = json.Unmarshal(body, &infoList)
+		if err != nil {
+			msg = "获取隆众价格指标失败:Unmarshal Err " + err.Error() + " ;body:" + string(body)
+			return
+		}
+		if infoList.Code != 1 {
+			msg = "获取隆众价格指标失败:body " + string(body)
+			return
+		}
+		for _, n := range infoList.Data {
+			count, err := models.GetLongzhongpriceinfoCount(n.Id)
+			if err != nil {
+				msg = "判断隆众价格指标是否存在失败:err " + err.Error()
+				return
+			}
+			if count > 0 {
+				fmt.Print("存在", n.ProductName, n.Id)
+			} else {
+				item := new(models.Longzhongpriceinfo)
+				item.Standard = n.Standard
+				item.ModelName = n.ModelName
+				item.Unit = n.Unit
+				item.AreaName = n.AreaName
+				item.PriceType = n.PriceType
+				item.Memo = n.Memo
+				item.PriceId = n.Id
+				item.ProductName = n.ProductName
+				item.InfoType = k
+				item.InfoTypeRemark = v
+				_, err = models.AddLongzhongpriceinfo(item)
+				if err != nil {
+					msg = "新增隆众价格指标失败:err " + err.Error()
+					return
+				}
+			}
+		}
+
+	}
 	return
 }

+ 2 - 2
services/task.go

@@ -5,7 +5,7 @@ import (
 	"github.com/astaxie/beego/toolbox"
 )
 
-func Task() {
+func Task123() {
 	fmt.Println("task start")
 	//发送邮件
 	sendEmail := toolbox.NewTask("sendEmail", "0 0 12 * * 0 ", SendEmail)
@@ -30,7 +30,7 @@ func Task() {
 	fmt.Println("task end")
 }
 
-func Task123() {
+func Task() {
 	fmt.Print("start")
 	GetLzProductPriceProduct()
 	fmt.Print("end")