|
|
package device
|
|
|
|
|
|
import (
|
|
|
"goqs/controllers"
|
|
|
"goqs/dbsql"
|
|
|
"goqs/models"
|
|
|
"net/http"
|
|
|
"strconv"
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
"github.com/spf13/cast"
|
|
|
)
|
|
|
|
|
|
// @Tags 设备相关 /api/device/v1/
|
|
|
// @Summary 查询设备
|
|
|
// @Description 根据udid查询设备
|
|
|
// @accept x-www-form-urlencoded
|
|
|
// @Param udid query string true "设备udid"
|
|
|
// @Success 200 {object} models.Response "返回设备信息"
|
|
|
// @Router /api/device/v1/get_device [get]
|
|
|
func GetDeviceByUdid(c *gin.Context) {
|
|
|
rsp := controllers.NewResponse()
|
|
|
|
|
|
udid := c.DefaultQuery("udid", "")
|
|
|
if udid == "" {
|
|
|
rsp.Error("udid error")
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
return
|
|
|
}
|
|
|
db, err := dbsql.GetConn(dbsql.DSN)
|
|
|
if err != nil {
|
|
|
c.JSON(http.StatusOK, rsp.Error(err.Error()))
|
|
|
return
|
|
|
}
|
|
|
defer dbsql.Close(db)
|
|
|
|
|
|
var device models.Device
|
|
|
|
|
|
db.Model(&models.Device{}).Where("udid = ?", udid).Last(&device)
|
|
|
|
|
|
if device.ID < 1 {
|
|
|
rsp.Error("没有找到该设备,udid-" + udid)
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
rsp.Success()
|
|
|
rsp.Data = device
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
}
|
|
|
|
|
|
// @Tags 设备相关 /api/device/v1/
|
|
|
// @Summary 获取设备列表
|
|
|
// @Description 获取设备列表
|
|
|
// @accept x-www-form-urlencoded
|
|
|
// @Param page_size query int false "每页大小,默认为10"
|
|
|
// @Param page_index query int false "第几页,默认为第一页"
|
|
|
// @Success 200 {object} models.Response "返回设备列表信息"
|
|
|
// @Router /api/device/v1/list [get]
|
|
|
func GetDevices(c *gin.Context) {
|
|
|
rsp := controllers.NewResponse()
|
|
|
var p models.Page
|
|
|
|
|
|
pageIndex, err := strconv.Atoi(c.DefaultQuery("page_index", "1"))
|
|
|
if err != nil {
|
|
|
c.JSON(http.StatusOK, rsp.Error(err.Error()))
|
|
|
return
|
|
|
}
|
|
|
p.Index = pageIndex
|
|
|
pageSize, err := strconv.Atoi(c.DefaultQuery("page_size", "10"))
|
|
|
if err != nil {
|
|
|
c.JSON(http.StatusOK, rsp.Error(err.Error()))
|
|
|
return
|
|
|
}
|
|
|
p.Size = pageSize
|
|
|
|
|
|
db, err := dbsql.GetConn(dbsql.DSN)
|
|
|
if err != nil {
|
|
|
c.JSON(http.StatusOK, rsp.Error(err.Error()))
|
|
|
return
|
|
|
}
|
|
|
defer dbsql.Close(db)
|
|
|
|
|
|
var list []models.Device
|
|
|
|
|
|
db = db.Model(&models.Device{})
|
|
|
var count int64
|
|
|
db = db.Count(&count)
|
|
|
db = dbsql.SetPageQuery(db, pageIndex, pageSize)
|
|
|
db.Where("is_del = 0").Order("id desc").Find(&list)
|
|
|
dbsql.Close(db)
|
|
|
|
|
|
db, _ = dbsql.GetConn(dbsql.DSN)
|
|
|
|
|
|
dbsql.Close(db)
|
|
|
|
|
|
p.MaxPage = count/(int64(p.Size)+1) + 1
|
|
|
p.List = list
|
|
|
p.Total = int(count)
|
|
|
|
|
|
rsp.Success()
|
|
|
rsp.Data = p
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
}
|
|
|
|
|
|
// @Tags 设备相关 /api/device/v1/
|
|
|
// @Summary 新建设备
|
|
|
// @Description 新建设备,UDID唯一
|
|
|
// @accept x-www-form-urlencoded
|
|
|
// @Param project formData string true "项目"
|
|
|
// @Param product_name formData string true "产品"
|
|
|
// @Param device_name formData string true "存放设备名字型号"
|
|
|
// @Param os formData string false "操作系统的版本"
|
|
|
// @Param udid formData string true "设备唯一udid"
|
|
|
// @Param platform formData string true "操作系统平台adr/ios"
|
|
|
// @Success 200 {object} models.Response "返回创建后的设备信息"
|
|
|
// @Router /api/device/v1/create [post]
|
|
|
func CreateDevice(c *gin.Context) {
|
|
|
rsp := controllers.NewResponse()
|
|
|
|
|
|
db, err := dbsql.GetConn(dbsql.DSN)
|
|
|
if err != nil {
|
|
|
rsp.Error(err.Error())
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
}
|
|
|
defer dbsql.Close(db)
|
|
|
|
|
|
var obj models.Device
|
|
|
obj.Project = c.PostForm("project")
|
|
|
obj.ProductName = c.PostForm("product_name")
|
|
|
obj.DeviceName = c.PostForm("device_name")
|
|
|
obj.OS = c.PostForm("os")
|
|
|
obj.Udid = c.PostForm("udid")
|
|
|
obj.Platform = c.PostForm("platform")
|
|
|
|
|
|
// || obj.Creator == ""
|
|
|
if obj.Project == "" || obj.ProductName == "" ||
|
|
|
obj.DeviceName == "" || obj.Platform == "" ||
|
|
|
obj.Udid == "" {
|
|
|
rsp.Error("get formdata error")
|
|
|
rsp.Data = obj
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
var _device models.Device
|
|
|
db.Model(models.Device{}).Where("udid = ?", obj.Udid).Find(&_device)
|
|
|
if _device.ID > 0 {
|
|
|
rsp.Error("添加失败,该设备已存在")
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
db.Model(models.Device{}).Create(&obj)
|
|
|
if db.Error != nil {
|
|
|
rsp.Error(db.Error.Error())
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
}
|
|
|
|
|
|
rsp.Success()
|
|
|
rsp.Data = obj
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
}
|
|
|
|
|
|
// @Tags 设备相关 /api/device/v1/
|
|
|
// @Summary 更新设备
|
|
|
// @Description 根据主键更新设备
|
|
|
// @accept x-www-form-urlencoded
|
|
|
// @Param id formData string true "设备id,必传"
|
|
|
// @Param project formData string false "项目"
|
|
|
// @Param product_name formData string false "产品"
|
|
|
// @Param device_name formData string false "存放设备名字型号"
|
|
|
// @Param os formData string false "操作系统的版本"
|
|
|
// @Param udid formData string false "设备唯一udid"
|
|
|
// @Param platform formData string false "操作系统平台adr/ios"
|
|
|
// @Success 200 {object} models.Response "返回创建后的设备信息"
|
|
|
// @Router /api/device/v1/update [post]
|
|
|
func UpdateDevice(c *gin.Context) {
|
|
|
rsp := controllers.NewResponse()
|
|
|
|
|
|
id := cast.ToInt(c.PostForm("id"))
|
|
|
if id == 0 {
|
|
|
rsp.Error("device.id error - " + c.PostForm("id"))
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
}
|
|
|
|
|
|
db, err := dbsql.GetConn(dbsql.DSN)
|
|
|
if err != nil {
|
|
|
rsp.Error(err.Error())
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
}
|
|
|
defer dbsql.Close(db)
|
|
|
|
|
|
var obj models.Device
|
|
|
db.Model(models.Device{}).Where("id = ?", obj.ID).Find(&obj)
|
|
|
if obj.ID < 1 {
|
|
|
rsp.Error("修改失败,该设备不存在")
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
return
|
|
|
}
|
|
|
if c.PostForm("project") != "" {
|
|
|
obj.Project = c.PostForm("project")
|
|
|
}
|
|
|
if c.PostForm("product_name") != "" {
|
|
|
obj.ProductName = c.PostForm("product_name")
|
|
|
}
|
|
|
if c.PostForm("device_name") != "" {
|
|
|
obj.DeviceName = c.PostForm("device_name")
|
|
|
}
|
|
|
if c.PostForm("os") != "" {
|
|
|
obj.OS = c.PostForm("os")
|
|
|
}
|
|
|
if c.PostForm("udid") != "" {
|
|
|
obj.Udid = c.PostForm("udid")
|
|
|
}
|
|
|
if c.PostForm("platform") != "" {
|
|
|
obj.Platform = c.PostForm("platform")
|
|
|
}
|
|
|
|
|
|
db.Model(models.Device{}).Where("id = ?", obj.ID).Updates(&obj)
|
|
|
if db.Error != nil {
|
|
|
rsp.Error(db.Error.Error())
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
}
|
|
|
|
|
|
rsp.Success()
|
|
|
rsp.Data = obj
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
}
|
|
|
|
|
|
// @Tags 设备相关 /api/device/v1/
|
|
|
// @Summary 删除设备
|
|
|
// @Description 根据主键软删除设备,is_del设为1
|
|
|
// @accept x-www-form-urlencoded
|
|
|
// @Param id path string true "设备id,必传"
|
|
|
// @Success 200 {object} models.Response "返回创建后的设备信息"
|
|
|
// @Router /api/device/v1/delete/{id} [delete]
|
|
|
func DeleteDevice(c *gin.Context) {
|
|
|
rsp := controllers.NewResponse()
|
|
|
|
|
|
id := cast.ToInt(c.Param("id"))
|
|
|
if id == 0 {
|
|
|
rsp.Error("device.id error - " + c.Param("id"))
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
db, err := dbsql.GetConn(dbsql.DSN)
|
|
|
if err != nil {
|
|
|
rsp.Error(err.Error())
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
return
|
|
|
}
|
|
|
defer dbsql.Close(db)
|
|
|
|
|
|
db.Model(models.Device{}).Where("id = ?", id).Update("is_del", 1)
|
|
|
|
|
|
rsp.Success()
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
}
|
|
|
|
|
|
// @Tags 设备相关 /api/device/v1/
|
|
|
// @Summary 更新设备状态
|
|
|
// @Description 更新设备状态,错误的状态会被拒绝
|
|
|
// @accept x-www-form-urlencoded
|
|
|
// @Param udid formData string true "设备udid"
|
|
|
// @Param status formData string true "要更新的设备状态,online-在线空闲,busy-占用中,offline-离线"
|
|
|
// @Success 200 {object} models.Response "返回更新的状态"
|
|
|
// @Router /api/device/v1/update_status [post]
|
|
|
func UpdateDeviceStatus(c *gin.Context) {
|
|
|
rsp := controllers.NewResponse()
|
|
|
|
|
|
if c.PostForm("udid") == "" {
|
|
|
rsp.Error("参数udid错误:" + c.PostForm("udid"))
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
return
|
|
|
}
|
|
|
if c.PostForm("status") != "offline" && c.PostForm("status") != "online" && c.PostForm("status") != "busy" {
|
|
|
rsp.Error("参数status错误:" + c.PostForm("status"))
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
db, err := dbsql.GetConn(dbsql.DSN)
|
|
|
if err != nil {
|
|
|
rsp.Error(err.Error())
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
return
|
|
|
}
|
|
|
defer dbsql.Close(db)
|
|
|
|
|
|
db.Model(models.Device{}).Where("udid = ?", c.PostForm("udid")).Update("status", c.PostForm("status"))
|
|
|
|
|
|
rsp.Success()
|
|
|
rsp.Data = c.PostForm("udid")
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
}
|