From 0494779a1de00553ee8a47ca712ffdcafaea9381 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期一, 17 八月 2020 16:09:59 +0800
Subject: [PATCH] save push log and add spaceInfo,pushLog

---
 service/msgPush.go    |   23 +++--
 routers/router.go     |    3 
 models/log.go         |   35 ++++++++
 models/db.go          |    2 
 service/carService.go |   26 ++++++
 controllers/car.go    |   96 ++++++++++++++++++++++-
 6 files changed, 167 insertions(+), 18 deletions(-)

diff --git a/controllers/car.go b/controllers/car.go
index 732fcff..f576697 100644
--- a/controllers/car.go
+++ b/controllers/car.go
@@ -6,8 +6,10 @@
 	"car-service/service"
 	"fmt"
 	"github.com/astaxie/beego"
+	"github.com/satori/go.uuid"
 	"net/http"
 	"sort"
+	"strings"
 	"sync"
 	"time"
 )
@@ -41,9 +43,22 @@
 
 					if left <=lowerLimit && left != prePushLeft {
 						go func() {
-							message := fmt.Sprintf("%s 鍓╀綑杞︿綅锛�%d涓�", time.Now().Format("2006-01-02 15:04:05"), left)
-							b, e := service.PushByAlias("鑲茶嫳涓鍋滆溅", message)
-
+							t := time.Now().Format("2006-01-02 15:04:05")
+							message := fmt.Sprintf("%s 鍓╀綑杞︿綅锛�%d涓�", t, left)
+							b, e, aliasArr := service.PushByAlias("鑲茶嫳涓鍋滆溅", message)
+							//璁板綍鎺ㄩ�佹棩蹇�
+							logE := models.Log{
+								Id: uuid.NewV4().String(),
+								CreateTime: t,
+								Result: b,
+								Phones: strings.Join(aliasArr, ","),
+							}
+							if e != nil {
+								logE.Content = e.Error()
+							} else {
+								logE.Content = message
+							}
+							logE.Insert()
 							prePushLeft = left
 
 							fmt.Println("b:", b,"e:",e, "message:", message)
@@ -88,8 +103,20 @@
 func nightPush(){
 
 	message := fmt.Sprintf("%s 璇峰敖蹇┒鍑哄仠杞﹀満", time.Now().Format("2006-01-02 15:04:05"))
-	b, e := service.NightPush("鑲茶嫳涓鍋滆溅", message)
-
+	b, e, aliasArr := service.NightPush("鑲茶嫳涓鍋滆溅", message)
+	//璁板綍鎺ㄩ�佹棩蹇�
+	logE := models.Log{
+		Id: uuid.NewV4().String(),
+		CreateTime: time.Now().Format("2006-01-02 15:04:05"),
+		Result: b,
+		Phones: strings.Join(aliasArr, ","),
+	}
+	if e != nil {
+		logE.Content = e.Error()
+	} else {
+		logE.Content = message
+	}
+	logE.Insert()
 	fmt.Println("b:", b,"e:",e, "message:", message)
 
 }
@@ -164,7 +191,20 @@
 func (c *CarController) TestPush() {
 	left := getSpaceLeft()
 	message := fmt.Sprintf("%s 鍓╀綑杞︿綅锛�%d涓�", time.Now().Format("2006-01-02 15:04:05"), left)
-	b, e := service.PushByAlias("鑲茶嫳涓鍋滆溅", message)
+	b, e, aliasArr := service.PushByAlias("鑲茶嫳涓鍋滆溅", message)
+	//璁板綍鎺ㄩ�佹棩蹇�
+	logE := models.Log{
+		Id: uuid.NewV4().String(),
+		CreateTime: time.Now().Format("2006-01-02 15:04:05"),
+		Result: b,
+		Phones: strings.Join(aliasArr, ","),
+	}
+	if e != nil {
+		logE.Content = e.Error()
+	} else {
+		logE.Content = message
+	}
+	logE.Insert()
 
 	fmt.Println("b:", b,"e:",e, "message:", message)
 	resp := code.Code{}
@@ -181,6 +221,50 @@
 	c.ServeJSON()
 }
 
+// @router /spaceInfo [get]
+func (c *CarController) SpaceInfo() {
+	sv := service.NewCarService()
+	spaceInfo := sv.FindHikSpaceInfo()
+	c.Data["json"] = code.Code{
+		Success: true,
+		Status: http.StatusOK,
+		Data: spaceInfo,
+	}
+	c.ServeJSON()
+}
+
+// @router /pushLog [get]
+func (c *CarController) PushLog() {
+	st := c.GetString("startTime")
+	et := c.GetString("endTime")
+	if st == "" {
+		st = time.Now().Format("2006-01-02")
+	}
+	if et == "" {
+		et = time.Now().AddDate(0,0,1).Format("2006-01-02")
+	}
+	curPage, err := c.GetInt("curPage")
+	if err != nil {
+		curPage = 1
+	}
+	pageSize, err := c.GetInt("pageSize")
+	if err != nil {
+		pageSize = 20
+	}
+	var l models.Log
+	total, logs := l.Find(curPage, pageSize, st, et)
+	resp := code.Code{
+		Success: true,
+		Status:  http.StatusOK,
+		Data:    map[string]interface{}{
+			"total": total,
+			"list": logs,
+		},
+	}
+	c.Data["json"] = resp
+	c.ServeJSON()
+}
+
 // @router /crossRecord [get]
 func (c *CarController) CrossRecord() {
 	sv := service.NewCarService()
diff --git a/models/db.go b/models/db.go
index 8821eeb..f8a70bf 100644
--- a/models/db.go
+++ b/models/db.go
@@ -13,6 +13,6 @@
 	dbPath := rootPath +"/"+ dbUrl
 	orm.RegisterDriver("sqlite", orm.DRSqlite)
 	_ = orm.RegisterDataBase("default", "sqlite3", dbPath)
-	orm.RegisterModel(new(User), new(UserCar), new(SysUpgrade), new(UserClient), new(Restriction))
+	orm.RegisterModel(new(User), new(UserCar), new(SysUpgrade), new(UserClient), new(Restriction), new(Log))
 	_ = orm.RunSyncdb("default", false, true)
 }
diff --git a/models/log.go b/models/log.go
index 2640e7f..da46e80 100644
--- a/models/log.go
+++ b/models/log.go
@@ -1 +1,36 @@
 package models
+
+import (
+	"github.com/astaxie/beego/orm"
+	"strconv"
+)
+
+//cid鍜屽埆鍚嶇粦瀹氳褰�
+type Log struct {
+	Id       		string 		`orm:"pk;size(50);column(id)" json:"id"`
+	CreateTime 		string 		`orm:"column(createTime)" json:"createTime"` //鍒涘缓鏃堕棿
+	Result 			bool 		`orm:"column(result)" json:"result"` //鎺ㄩ�佺粨鏋�
+	Phones 			string 		`orm:"size(8000);column(phones)" json:"phones"` //鎺ㄩ�佺洰鏍囨墜鏈哄彿
+	Content 		string 		`orm:"column(content)" json:"content"` //鍓╀綑杞︿綅
+}
+
+func (l *Log) TableName() string {
+	return "log"
+}
+
+func (l *Log) Insert() (int64,error) {
+	o := orm.NewOrm()
+	return o.Insert(l)
+}
+
+func (l *Log) Find(curPage int, pageSize int, startTime string, endTime string) (int,[]Log) {
+	var list []Log
+	o := orm.NewOrm()
+	var total int
+	sql := "select count(*) from "+l.TableName()+" where createTime >='"+startTime+"' and createTime <= '"+endTime+"'"
+	o.Raw(sql).QueryRow(&total)
+	sn := (curPage-1)*pageSize
+	sql += " order by createTime desc limit "+strconv.Itoa(sn)+","+strconv.Itoa(pageSize)+""
+	o.Raw(sql).QueryRows(&list)
+	return total, list
+}
diff --git a/routers/router.go b/routers/router.go
index fa29e7c..51a01a7 100644
--- a/routers/router.go
+++ b/routers/router.go
@@ -60,4 +60,7 @@
 
 	beego.Router(preApi+"/car/crossRecord", &controllers.CarController{}, "*:CrossRecord")
 	beego.Router(preApi+"/car/testPush", &controllers.CarController{}, "*:TestPush")
+
+	beego.Router(preApi+"/car/pushLog", &controllers.CarController{}, "*:PushLog")
+	beego.Router(preApi+"/car/spaceInfo", &controllers.CarController{}, "*:SpaceInfo")
 }
diff --git a/service/carService.go b/service/carService.go
index 3fdff76..ac8259c 100644
--- a/service/carService.go
+++ b/service/carService.go
@@ -142,6 +142,32 @@
 	SpaceType 				string 		`json:"spaceType"`
 }
 
+func (sv *CarService) FindHikSpaceInfo() []SpaceNo {
+	url := "/artemis/api/pms/v1/parkingSpace/spaceNo"
+
+	reqBody := map[string]interface{} {
+		"pageNo": 1,
+		"pageSize": 1000,
+	}
+	pageResult := sv.getHikPageResult(url, reqBody)
+	if pageResult != nil {
+		rb, err := json.Marshal(pageResult.List)
+		if err != nil {
+			fmt.Println("marshal pageResult.List err:", err)
+			return nil
+		}
+		var spaceList []SpaceNo
+		err = json.Unmarshal(rb, &spaceList)
+		if err != nil {
+			fmt.Println("unmarshal spaceNos err:", err)
+			return nil
+		} else {
+			return spaceList
+		}
+	}
+	return nil
+}
+
 func (sv *CarService) FindSpaceNo(userId string) models.PosResult {
 	resultList := make(models.PosResult,0)
 	var myPlateNosMap = make(map[string]string)
diff --git a/service/msgPush.go b/service/msgPush.go
index 252b74e..27d1201 100644
--- a/service/msgPush.go
+++ b/service/msgPush.go
@@ -246,7 +246,7 @@
 }
 
 //瀵瑰凡娉ㄥ唽鐨勭敤鎴疯繘琛屾秷鎭帹閫併�傝皟鐢ㄦ鎺ュ彛鍓嶉渶璋冪敤鍒涘缓娑堟伅鎺ュ彛璁剧疆娑堟伅鍐呭
-func PushByAlias(title string, msg string) (bool, error) {
+func PushByAlias(title string, msg string) (bool, error, []string) {
 	var aliasArr []string
 
 	pushUserM := make(map[string]string)
@@ -258,7 +258,7 @@
 		}
 	}
 	if len(pushUserM) == 0 {
-		return true,errors.New("len(pushUserM) == 0")
+		return false,errors.New("len(pushUserM) == 0"),aliasArr
 	}
 	carPersonM := make(map[string]string) //浠ヨ溅鐗屽彿涓簁ey锛寁alue鏄痟ik鐨刾ersonId
 	csv := NewCarService()
@@ -290,13 +290,13 @@
 	}
 	lenAS := len(aliasArr)
 	if  lenAS == 0 {
-		return true, errors.New("aliasArr is empty")
+		return false, errors.New("aliasArr is empty"),aliasArr
 	}
 
 	cResult, taskId, ce := createPushMsg(title, msg)
 	fmt.Println("createPushMsg taskId:", taskId, "cResult:",cResult, "err:", ce)
 	if !cResult {
-		return false, errors.New("鍒涘缓鎺ㄩ�佸墠缃秷鎭け璐�")
+		return false, errors.New("鍒涘缓鎺ㄩ�佸墠缃秷鎭け璐�"),aliasArr
 	}
 
 	//alias 鍗曟鎺ㄩ�侀暱搴︿笂闄愭槸200
@@ -330,10 +330,10 @@
 		}
 	}
 	if isSuccess {
-		return true, nil
+		return true, nil,aliasArr
 	}
 
-	return false, errors.New("鎺ㄩ�佸け璐�")
+	return false, errors.New("鎺ㄩ�佸け璐�"),aliasArr
 }
 
 func doPush(taskId string, aliasArr []string) (bool,error) {
@@ -384,7 +384,7 @@
 	return false, errors.New("鎺ㄩ�佸け璐�")
 }
 
-func NightPush(title string, msg string) (bool, error) {
+func NightPush(title string, msg string) (bool, error, []string) {
 	var aliasArr []string
 
 	pushUserM := make(map[string]string)
@@ -396,7 +396,7 @@
 		}
 	}
 	if len(pushUserM) == 0 {
-		return true,nil
+		return true,nil, aliasArr
 	}
 	carPersonM := make(map[string]string)
 	csv := NewCarService()
@@ -422,16 +422,17 @@
 
 	if len(aliasArr) == 0 {
 		fmt.Println("娌℃湁鎺ㄩ�佺洰鏍�,aliasArr is empty")
-		return true, nil
+		return true, nil, aliasArr
 	}
 
 	cResult, taskId, ce := createPushMsg(title, msg)
 	if !cResult {
 		fmt.Println("createPushMsg taskId:", taskId, "err:", ce)
-		return false, errors.New("鍒涘缓鎺ㄩ�佸墠缃秷鎭け璐�")
+		return false, errors.New("鍒涘缓鎺ㄩ�佸墠缃秷鎭け璐�"), aliasArr
 	}
 
-	return doPush(taskId, aliasArr)
+	b,e := doPush(taskId, aliasArr)
+	return b,e, aliasArr
 }
 
 func PushAll(title string, msg string) (bool,error) {

--
Gitblit v1.8.0