123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468 |
- package controller
- import (
- "cold-delivery/app/admin/model"
- "cold-delivery/app/admin/service"
- "cold-delivery/app/admin/service/dto"
- "cold-delivery/common/actions"
- "cold-delivery/common/nats/nats_server"
- "encoding/json"
- "fmt"
- "github.com/gin-gonic/gin"
- "github.com/gin-gonic/gin/binding"
- "gogs.baozhida.cn/zoie/OAuth-core/api"
- "gogs.baozhida.cn/zoie/OAuth-core/pkg/jwtauth/user"
- _ "gogs.baozhida.cn/zoie/OAuth-core/pkg/response"
- "sort"
- "time"
- )
- type CoolerBoxController struct {
- api.Api
- }
- // GetPage 获取保温箱列表
- // @Summary 获取保温箱列表
- // @Description 获取保温箱列表
- // @Tags 保温箱
- // @Param name query string false "保温箱名称"
- // @Param sn query string false "保温箱关联sn"
- // @Param status query string false "状态:1-停用 2-启用"
- // @Param showTemp query bool false "是否展示最新温度"
- // @Param pageSize query int false "页条数"
- // @Param page query int false "页码"
- // @Success 200 {object} response.Response{data=response.Page{list=[]model.CoolerBox}} "{"code": 200, "data": [...]}"
- // @Router /api/cooler-box [get]
- // @Security Bearer
- func (e CoolerBoxController) GetPage(c *gin.Context) {
- s := service.CoolerBox{}
- req := dto.CoolerBoxGetPageReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.Query).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- //数据权限检查
- p := actions.GetPermissionFromContext(c)
- list := make([]model.CoolerBox, 0)
- var count int64
- err = s.GetPage(&req, &list, &count, p)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
- }
- // Get 通过id获取保温箱
- // @Summary 通过id获取保温箱
- // @Description 通过id获取保温箱
- // @Tags 保温箱
- // @Param id path string true "保温箱id"
- // @Success 200 {object} response.Response{data=model.CoolerBox} "{"code": 200, "data": [...]}"
- // @Router /api/cooler-box/{id} [get]
- // @Security Bearer
- func (e CoolerBoxController) Get(c *gin.Context) {
- s := service.CoolerBox{}
- req := dto.CoolerBoxGetReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, nil).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- var object model.CoolerBox
- p := actions.GetPermissionFromContext(c)
- //数据权限检查
- err = s.Get(&req, &object, p)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(object, "查询成功")
- }
- // Insert 添加保温箱
- // @Summary 添加保温箱
- // @Description 添加保温箱
- // @Tags 保温箱
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.CoolerBoxInsertReq true "data"
- // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
- // @Router /api/cooler-box [post]
- // @Security Bearer
- func (e CoolerBoxController) Insert(c *gin.Context) {
- s := service.CoolerBox{}
- req := dto.CoolerBoxInsertReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- p := actions.GetPermissionFromContext(c)
- // 设置创建人
- req.SetCreateBy(user.GetUserId(c))
- req.SetDeptId(p.DeptId)
- err = s.Insert(&req, p)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(req.GetId(), "添加成功")
- }
- // Update 修改保温箱
- // @Summary 修改保温箱
- // @Description 修改保温箱
- // @Tags 保温箱
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.CoolerBoxUpdateReq true "body"
- // @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "修改失败"}"
- // @Router /api/cooler-box [put]
- // @Security Bearer
- func (e CoolerBoxController) Update(c *gin.Context) {
- s := service.CoolerBox{}
- req := dto.CoolerBoxUpdateReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- p := actions.GetPermissionFromContext(c)
- req.SetUpdateBy(user.GetUserId(c))
- err = s.Update(&req, p)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(req.GetId(), "修改成功")
- }
- // Delete 删除保温箱
- // @Summary 删除保温箱
- // @Description 删除保温箱
- // @Tags 保温箱
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.CoolerBoxDeleteReq true "body"
- // @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
- // @Router /api/cooler-box [delete]
- // @Security Bearer
- func (e CoolerBoxController) Delete(c *gin.Context) {
- s := service.CoolerBox{}
- req := dto.CoolerBoxDeleteReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON, nil).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- //数据权限检查
- p := actions.GetPermissionFromContext(c)
- err = s.Remove(&req, p)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(req.GetId(), "删除成功")
- }
- // BatchInsert 批量添加保温箱
- // @Summary 批量添加保温箱
- // @Description 批量添加保温箱
- // @Tags 保温箱
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.CoolerBoxBatchInsertReq true "data"
- // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
- // @Router /api/cooler-box/import [post]
- // @Security Bearer
- func (e CoolerBoxController) BatchInsert(c *gin.Context) {
- s := service.CoolerBox{}
- req := dto.CoolerBoxBatchInsertReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- p := actions.GetPermissionFromContext(c)
- // 设置创建人
- req.SetCreateBy(user.GetUserId(c))
- req.SetDeptId(p.DeptId)
- err = s.BatchInsert(&req)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(nil, "添加成功")
- }
- // GetCollerBoxLocus 获取保温箱历史
- // @Summary 获取保温箱历史轨迹
- // @Description 获取保温箱历史
- // @Tags 保温箱
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.CoolerBoxBatchInsertReq true "data"
- // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
- // @Router /api/cooler-box/locus [get]
- // @Security Bearer
- func (e CoolerBoxController) GetCollerBoxLocus(c *gin.Context) {
- s := service.CoolerBox{}
- req := dto.CoolerBoxBatchReqSN{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- p := actions.GetPermissionFromContext(c)
- history, err := s.GetHistory(&req, p)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- count := req.PageZ / req.Page
- e.PageOK(history, int(count), req.Page, req.PageZ, "查询成功")
- }
- // GetCoolerBoxLocus 获取保温箱历史轨迹
- // @Summary 获取保温箱历史轨迹
- // @Description 获取保温箱历史轨迹
- // @Tags 保温箱
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.CoolerBoxBatchInsertReq true "data"
- // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
- // @Router /api/cooler-box/historylocus [post]
- // @Security Bearer
- func (e CoolerBoxController) GetCoolerBoxLocus(c *gin.Context) {
- s := service.CoolerBox{}
- req := dto.CoolerBoxBatchReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- data, _, err := nats_server.Cold_ReadDeviceDataListBy_T_snidForLocus(req.SnId+","+req.T_id, req.StartTime, req.EndTime, req.Page, req.PageZ)
- if err != nil {
- e.Logger.Error("nats 获取轨迹信息失败:", err)
- fmt.Println("nats 获取轨迹信息失败: %s", err)
- e.Error(500, err, err.Error())
- return
- }
- // 倒序排序
- sort.Slice(data, func(i, j int) bool {
- if data[i].T_time < data[j].T_time {
- return true
- }
- return false
- })
- e.OK(data, "查询成功")
- }
- // GetCoolerBoxNewestLocus 获取保温箱最新轨迹
- // @Summary 获取保温箱最新轨迹
- // @Description 获取保温箱最新轨迹
- // @Tags 保温箱
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.CoolerBoxBatchInsertReq true "data"
- // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
- // @Router /api/cooler-box/newlocus [post]
- // @Security Bearer
- func (e CoolerBoxController) GetCoolerBoxNewestLocus(c *gin.Context) {
- s := service.CoolerBox{}
- req := dto.CoolerBoxReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.Query).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- if len(req.T_sn) == 0 || req.T_sn == "" {
- e.Error(500, err, err.Error())
- return
- }
- conn := true
- // 数据权限检查
- // p := actions.GetPermissionFromContext(c)
- list := make([]nats_server.DeviceData_, 0)
- // 设置响应头
- c.Header("Content-Type", "text/event-stream")
- c.Header("Cache-Control", "no-cache")
- c.Header("Connection", "keep-alive")
- // 监听客户端断开连接
- notify := c.Writer.CloseNotify()
- type Response struct {
- RequestId string `protobuf:"bytes,1,opt,name=requestId,proto3" json:"requestId,omitempty"`
- Code int32 `protobuf:"varint,2,opt,name=code,proto3" json:"code,omitempty"`
- Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"`
- SN string `protobuf:"bytes,3,opt,name=sn,proto3" json:"sn,omitempty"`
- Data []nats_server.DeviceData_ `json:"data"`
- }
- var response Response
- for conn {
- select {
- case <-notify:
- fmt.Println("断开连接")
- conn = false
- return
- default:
- err = s.GetNewLocus(&req, &list)
- if err != nil {
- e.Logger.Error(err)
- response.Code = 500
- response.Msg = err.Error()
- response.Data = list
- response.SN = req.T_sn
- res, _ := json.Marshal(&response)
- fmt.Fprintf(c.Writer, "data: %s\n\n", string(res))
- c.Writer.Flush()
- time.Sleep(20 * time.Second)
- } else {
- response.Code = 200
- response.Msg = "查询成功"
- response.Data = list
- response.SN = req.T_sn
- res, _ := json.Marshal(&response)
- fmt.Fprintf(c.Writer, "data: %s\n\n", string(res))
- c.Writer.Flush()
- time.Sleep(10 * time.Second)
- }
- }
- }
- }
- // GetCoolerBoxIce 获取指定保温箱下的所有冰排信息
- // @Summary 获取指定保温箱下的所有冰排信息
- // @Description 获取指定保温箱下的所有冰排信息
- // @Tags 保温箱
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.CoolerBoxBatchInsertReq true "data"
- // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
- // @Router /api/cooler-box/getcoolerboxice [post]
- // @Security Bearer
- func (e CoolerBoxController) GetCoolerBoxIce(c *gin.Context) {
- s := service.CoolerBox{}
- req := dto.GetCoolerBoxIce{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.Query).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- list := make([]model.IceRaftRecord, 0)
- var count int64
- //数据权限检查
- p := actions.GetPermissionFromContext(c)
- err = s.GetCoolerBoxIce(&req, &list, p, &count)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
- }
- // GetCoolerBoxAll 获取所有保温箱使用记录
- // @Summary 获取所有保温箱使用记录
- // @Description 获取所有保温箱使用记录
- // @Tags 保温箱
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.CoolerBoxBatchInsertReq true "data"
- // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
- // @Router /api/cooler-box/getcoolerboxall [get]
- // @Security Bearer
- func (e CoolerBoxController) GetCoolerBoxAll(c *gin.Context) {
- s := service.CoolerBox{}
- req := dto.GetCoolerBoxIceAll{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.Query).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- list := make([]model.IceRaftRecord, 0)
- var count int64
- //数据权限检查
- p := actions.GetPermissionFromContext(c)
- err = s.GetCoolerBoxIceAll(&req, &list, p, &count)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
- }
|