123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- package http
- import (
- "go-common/library/ecode"
- "go-common/library/log"
- bm "go-common/library/net/http/blademaster"
- "strconv"
- "strings"
- "time"
- )
- // 截图相关业务
- // getScreeShotByRoomID 得到一个房间某个时间段的截图
- func getSingleScreenShot(c *bm.Context) {
- params := c.Request.URL.Query()
- room := params.Get("room_id")
- // 2018-10-24 14:27:07
- start := params.Get("start_time")
- end := params.Get("end_time")
- channel := params.Get("channel")
- c.Set("input_params", params)
- if room == "" || start == "" || end == "" {
- c.Set("output_data", "some fields are empty")
- c.JSONMap(map[string]interface{}{"message": "some fields are empty"}, ecode.RequestErr)
- c.Abort()
- return
- }
- roomID, err := strconv.ParseInt(room, 10, 64)
- if err != nil || roomID <= 0 {
- c.Set("output_data", "room_id is not right")
- c.JSONMap(map[string]interface{}{"message": "room_id is not right"}, ecode.RequestErr)
- c.Abort()
- return
- }
- startTime, err := time.ParseInLocation("2006-01-02 15:04:05", start, time.Local)
- if err != nil {
- c.Set("output_data", "Start time format is incorrect")
- c.JSONMap(map[string]interface{}{"message": "Start time format is incorrect"}, ecode.RequestErr)
- c.Abort()
- return
- }
- endTime, err := time.ParseInLocation("2006-01-02 15:04:05", end, time.Local)
- if err != nil {
- c.Set("output_data", "End time format is incorrect")
- c.JSONMap(map[string]interface{}{"message": "End time format is incorrect"}, ecode.RequestErr)
- c.Abort()
- return
- }
- info, err := srv.GetSingleScreeShot(c, roomID, startTime.Unix(), endTime.Unix(), channel)
- if err != nil {
- c.Set("output_data", err.Error())
- c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr)
- c.Abort()
- return
- }
- c.Set("output_data", info)
- c.JSONMap(map[string]interface{}{"data": map[string][]string{"list": info}}, nil)
- }
- // getMultiScreenShot 得到多个房间一个时间点截图
- func getMultiScreenShot(c *bm.Context) {
- params := c.Request.URL.Query()
- rooms := params.Get("room_ids")
- ts := params.Get("ts")
- channel := params.Get("channel")
- c.Set("input_params", params)
- if rooms == "" || ts == "" {
- c.Set("output_data", "some fields are empty")
- c.JSONMap(map[string]interface{}{"message": "some fields are empty"}, ecode.RequestErr)
- c.Abort()
- return
- }
- // 切割room_id
- roomIDs := strings.Split(rooms, ",")
- if len(roomIDs) <= 0 {
- c.Set("output_data", "room_ids is not right")
- c.JSONMap(map[string]interface{}{"message": "room_ids is not right"}, ecode.RequestErr)
- c.Abort()
- return
- }
- tsInt, _ := strconv.ParseInt(ts, 10, 64)
- rids := []int64{}
- for _, v := range roomIDs {
- roomID, err := strconv.ParseInt(v, 10, 64)
- if err != nil {
- log.Warn("room id is not right")
- continue
- }
- rids = append(rids, roomID)
- }
- resp, err := srv.GetMultiScreenShot(c, rids, tsInt, channel)
- if err != nil {
- c.Set("output_data", err.Error())
- c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr)
- c.Abort()
- return
- }
- c.Set("output_data", resp)
- c.JSONMap(map[string]interface{}{"data": map[string]interface{}{"list": resp}}, nil)
- }
- // getOriginScreenShotPic 获取原始图片地址
- func getOriginScreenShotPic(c *bm.Context) {
- params := c.Request.URL.Query()
- rooms := params.Get("room_ids")
- ts := params.Get("ts")
- //tp := params.Get("type")
- c.Set("input_params", params)
- if rooms == "" {
- c.Set("output_data", "some fields are empty")
- c.JSONMap(map[string]interface{}{"message": "some fields are empty"}, ecode.RequestErr)
- c.Abort()
- return
- }
- // 切割room_id
- roomIDs := strings.Split(rooms, ",")
- if len(roomIDs) <= 0 {
- c.Set("output_data", "room_ids is not right")
- c.JSONMap(map[string]interface{}{"message": "room_ids is not right"}, ecode.RequestErr)
- c.Abort()
- return
- }
- tsInt, _ := strconv.ParseInt(ts, 10, 64)
- rids := []int64{}
- for _, v := range roomIDs {
- roomID, err := strconv.ParseInt(v, 10, 64)
- if err != nil {
- log.Warn("room id is not right")
- continue
- }
- rids = append(rids, roomID)
- }
- resp, err := srv.GetOriginScreenShotPic(c, rids, tsInt)
- if err != nil {
- c.Set("output_data", err.Error())
- c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr)
- c.Abort()
- return
- }
- c.Set("output_data", resp)
- c.JSONMap(map[string]interface{}{"data": map[string]interface{}{"list": resp}}, nil)
- }
- // getTimePeriodScreenShot 获取多个房间一个时间段内的截图
- func getTimePeriodScreenShot(c *bm.Context) {
- params := c.Request.URL.Query()
- room := params.Get("room_ids")
- // 2018-10-24 14:27:07
- start := params.Get("start_time")
- end := params.Get("end_time")
- channel := params.Get("channel")
- c.Set("input_params", params)
- if room == "" || start == "" || end == "" {
- c.Set("output_data", "some fields are empty")
- c.JSONMap(map[string]interface{}{"message": "some fields are empty"}, ecode.RequestErr)
- c.Abort()
- return
- }
- startTime, err := time.ParseInLocation("2006-01-02 15:04:05", start, time.Local)
- if err != nil {
- c.Set("output_data", "Start time format is incorrect")
- c.JSONMap(map[string]interface{}{"message": "Start time format is incorrect"}, ecode.RequestErr)
- c.Abort()
- return
- }
- endTime, err := time.ParseInLocation("2006-01-02 15:04:05", end, time.Local)
- if err != nil {
- c.Set("output_data", "End time format is incorrect")
- c.JSONMap(map[string]interface{}{"message": "End time format is incorrect"}, ecode.RequestErr)
- c.Abort()
- return
- }
- // 切割room_id
- roomIDs := strings.Split(room, ",")
- if len(roomIDs) <= 0 {
- c.Set("output_data", "room_ids is not right")
- c.JSONMap(map[string]interface{}{"message": "room_ids is not right"}, ecode.RequestErr)
- c.Abort()
- return
- }
- resp := map[int64][]string{}
- for _, v := range roomIDs {
- roomID, err := strconv.ParseInt(v, 10, 64)
- if err != nil {
- log.Warn("room id is not right")
- continue
- }
- urls, err := srv.GetSingleScreeShot(c, roomID, startTime.Unix(), endTime.Unix(), channel)
- if err != nil {
- log.Warn("%v", err)
- continue
- }
- resp[roomID] = urls
- }
- c.Set("output_data", resp)
- c.JSONMap(map[string]interface{}{"data": resp}, nil)
- }
|