Files
zmkgC/internal/app/system/logic/device/device.go

233 lines
7.5 KiB
Go
Raw Normal View History

2025-07-07 20:11:59 +08:00
// ==========================================================================
// GFast自动生成logic操作代码。
// 生成日期2023-11-24 09:57:07
// 生成路径: internal/app/system/logic/device.go
// 生成人gfast
// desc:安全帽设备java
// company:云南奇讯科技有限公司
// ==========================================================================
package logic
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
"github.com/gogf/gf/v2/util/gconv"
"github.com/tiger1103/gfast/v3/api/v1/system"
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
"github.com/tiger1103/gfast/v3/internal/app/system/dao"
"github.com/tiger1103/gfast/v3/internal/app/system/model"
"github.com/tiger1103/gfast/v3/internal/app/system/model/do"
"github.com/tiger1103/gfast/v3/internal/app/system/service"
"github.com/tiger1103/gfast/v3/library/liberr"
tool "github.com/tiger1103/gfast/v3/utility/coryUtils"
"time"
)
func init() {
service.RegisterDevice(New())
}
func New() *sDevice {
return &sDevice{}
}
type sDevice struct{}
func (s *sDevice) ScheduleTimeFunc(ctx context.Context, req *system.ScheduleTimeReq) (res *system.ScheduleTimeRes, err error) {
res = new(system.ScheduleTimeRes)
var arrStr []string
err = g.Try(ctx, func(ctx context.Context) {
array, err := g.DB().Model("location").Ctx(ctx).
Fields("DISTINCT DATE_FORMAT( time, '%Y-%m-%d' ) as te").
Where("dev_num", req.DevNum).
WhereBetween(
"time",
req.DateRange[0],
req.DateRange[1],
).
Array()
for i := range array {
arrStr = append(arrStr, array[i].String())
}
res.List = arrStr
liberr.ErrIsNil(ctx, err, "获取数据失败")
})
return
}
func (s *sDevice) AllList(ctx context.Context, req *system.DeviceSearchAllReq) (res *system.DeviceSearchAllRes, err error) {
res = new(system.DeviceSearchAllRes)
g.Try(ctx, func(ctx context.Context) {
var dir []*model.DeviceListRes
err := dao.Device.Ctx(ctx).As("a").
LeftJoin("bus_construction_user", "b", "a.dev_num = b.dev_num").
Fields("a.*,b.openid,b.nick_name,b.user_name").
Where("b.project_id", req.ProjectId).
WhereNotNull("b.head_icon").Scan(&dir)
res.List = dir
liberr.ErrIsNil(ctx, err, "获取数据失败!")
})
return
}
func (s *sDevice) HelmetListFunc(ctx context.Context, req *system.HelmetListReq) (listRes *system.HelmetListRes, err error) {
listRes = new(system.HelmetListRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.Device.Ctx(ctx).As("a").
Fields("a.dev_num,a.dev_name")
if req.ProjectId > 0 {
m = m.Where("a."+dao.Device.Columns().ProjectId+" = ?", req.ProjectId)
}
if req.DevNum != "" {
m = m.Where("a."+dao.Device.Columns().DevNum+" like ?", "%"+req.DevNum+"%")
}
if req.DevName != "" {
m = m.Where("a."+dao.Device.Columns().DevName+" like ?", "%"+req.DevName+"%")
}
array, err := m.Array()
listRes.Total = len(array)
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "a.dev_num desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.DeviceInfoRes
err = m.Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.DeviceListRes, len(res))
for k, v := range res {
listRes.List[k] = &model.DeviceListRes{
DevNum: v.DevNum,
DevName: v.DevName,
}
}
})
return
}
func (s *sDevice) List(ctx context.Context, req *system.DeviceSearchReq) (listRes *system.DeviceSearchRes, err error) {
listRes = new(system.DeviceSearchRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.Device.Ctx(ctx).As("a").
LeftJoin("bus_construction_user", "b", "a.dev_num = b.dev_num").
Fields("a.*,b.openid,b.head_icon,b.nick_name,b.user_name,b.phone")
if req.ProjectId > 0 {
m = m.Where("a."+dao.Device.Columns().ProjectId+" = ?", req.ProjectId)
}
if req.Status != "" {
m = m.Where("a."+dao.Device.Columns().Status+" = ?", gconv.Int(req.Status))
}
if req.DevNum != "" {
m = m.Where("a."+dao.Device.Columns().DevNum+" like ?", "%"+req.DevNum+"%")
}
if req.DevName != "" {
m = m.Where("a."+dao.Device.Columns().DevName+" like ?", "%"+req.DevName+"%")
}
array, err := m.Array()
listRes.Total = len(array)
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "a.dev_num desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.DeviceInfoRes
err = m.Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.DeviceListRes, len(res))
for k, v := range res {
listRes.List[k] = &model.DeviceListRes{
DevNum: v.DevNum,
DevName: v.DevName,
Status: v.Status,
CreateTime: v.CreateTime,
UpdateTime: v.UpdateTime,
ProjectId: v.ProjectId,
HeadIcon: v.HeadIcon,
NickName: v.NickName,
UserName: v.UserName,
Phone: v.Phone,
Openid: v.Openid,
BatteryLevel: v.BatteryLevel,
IsLowBattery: v.IsLowBattery,
BatteryOn: v.BatteryOn,
BatteryOff: v.BatteryOff,
}
}
})
return
}
func (s *sDevice) GetByDevNum(ctx context.Context, req *system.DeviceGetReq) (res *system.DeviceGetRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.Device.Ctx(ctx).As("a").
LeftJoin("bus_construction_user", "b", "a.dev_num = b.dev_num").
Fields("a.*,b.openid,b.head_icon,b.nick_name,b.user_name,b.phone").
Where("a.dev_num", req.DevNum).Scan(&res)
//err = dao.Device.Ctx(ctx).WithAll().Where(dao.Device.Columns().DevNum, req.DevNum).Scan(&res)
//插叙当前用户的足迹,按照日期时间范围筛选
var latAndLon []*system.ActionPathLatAndLonActionPathLatAndLon
m := g.DB().Model("location").Ctx(ctx).Where("dev_num", req.DevNum)
if len(req.DateRange) > 0 {
m = m.Where("DATE_FORMAT(time,'%Y-%m-%d') >=? AND DATE_FORMAT(time,'%Y-%m-%d') <=?", req.DateRange[0], req.DateRange[1])
}
err = m.OrderAsc("time").Scan(&latAndLon)
res.LatAndLonList = latAndLon
liberr.ErrIsNil(ctx, err, "获取信息失败")
})
return
}
func (s *sDevice) Add(ctx context.Context, req *system.DeviceAddReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.Device.Ctx(ctx).Insert(do.Device{
DevNum: req.DevNum,
DevName: req.DevName,
Status: req.Status,
ProjectId: req.ProjectId,
CreateTime: gtime.NewFromStr(tool.New().GetFormattedDateTime(time.Now())),
})
liberr.ErrIsNil(ctx, err, "添加失败")
})
return
}
func (s *sDevice) RemoveRelationFunc(ctx context.Context, req *system.RemoveRelationReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err := dao.BusConstructionUser.Ctx(ctx).Where("openid", req.Openid).Update(g.Map{"dev_num": ""})
liberr.ErrIsNil(ctx, err, "移除失败!")
})
return
}
func (s *sDevice) Delete(ctx context.Context, devNums []string) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
for i := range devNums {
_, err = dao.BusConstructionUser.Ctx(ctx).Where("dev_num", devNums[i]).Update(g.Map{"dev_num": ""})
if err != nil {
liberr.ErrIsNil(ctx, err, "删除失败")
return
}
}
_, err = dao.Device.Ctx(ctx).Delete(dao.Device.Columns().DevNum+" in (?)", devNums)
liberr.ErrIsNil(ctx, err, "删除失败")
})
return
}