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