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