package business import ( "fmt" "net/http" "time" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" //"device-manage/app/admin/models" "device-manage/app/admin/models/busmodels" "device-manage/common/log" mqtthandler "device-manage/common/mqttcli" "device-manage/tools" "device-manage/tools/app" "device-manage/tools/config" ) func GetApplicationList(c *gin.Context) { var data busmodels.BusApplication var err error var params busmodels.QueryAppParams err = c.MustBindWith(¶ms, binding.JSON) pageSize := params.PageSize pageIndex := params.PageIndex gids := params.Gids data.AppName = params.AppName data.DestObject = params.DestObject result, count, err := data.GetPage(pageSize, pageIndex, gids) tools.HasError(err, "", -1) app.PageOK(c, result, count, pageIndex, pageSize, "") } func InsertApplication(c *gin.Context) { var appInfo busmodels.BusApplication err := c.MustBindWith(&appInfo, binding.JSON) tools.HasError(err, "非法数据格式", 500) user := tools.GetUserIdStr(c) appInfo.CreateBy = user appInfo.UpdateBy = user fmt.Println(user) times := time.Now() appInfo.CreatedAt = times appInfo.UpdatedAt = times id, err := appInfo.Insert() fmt.Println(id) tools.HasError(err, "添加失败", 500) app.OK(c, id, "添加成功") } func GetApplication(c *gin.Context) { var data busmodels.BusApplication data.AppId, _ = tools.StringToInt(c.Param("appId")) fmt.Println(data.AppId) result, err := data.Get() tools.HasError(err, "抱歉未找到相关信息", -1) var res app.Response res.Data = result c.JSON(http.StatusOK, res.ReturnOK()) } //更新之前,应该先获取当前选项的数据, 得到 id以后才好i修改. func UpdateApplication(c *gin.Context) { var data busmodels.BusApplication err := c.Bind(&data) fmt.Println(data) tools.HasError(err, "数据解析失败", -1) data.UpdateBy = tools.GetUserIdStr(c) fmt.Println(data) result, err := data.Update(data.AppId) tools.HasError(err, "修改失败", 500) app.OK(c, result, "修改成功") } func DeleteApplication(c *gin.Context) { var data busmodels.BusApplication data.UpdateBy = tools.GetUserIdStr(c) IDS := tools.IdsStrToIdsIntGroup("appId", c) fmt.Println(IDS) result, err := data.BatchDelete(IDS) tools.HasError(err, "删除失败", 500) app.OK(c, result, "删除成功") } func PublishApp2Devices(c *gin.Context) { var applicatoin busmodels.BusApplication var upgradefile busmodels.BusUpgradeFile var record busmodels.BusUpgradeRecord var dev busmodels.BusDevice var devInfo busmodels.DeviceInfo var data busmodels.PublishAppDevice err := c.MustBindWith(&data, binding.JSON) tools.HasError(err, "非法数据格式", 500) fmt.Println(data.AppId) applicatoin.AppId = data.AppId upgradefile.AppId = data.AppId userId := tools.GetUserIdStr(c) appInfo, _ := applicatoin.Get() upgradefile, _ = upgradefile.GetFirstFile() // /api/v1/device/usual/upgradefile/download url := "http://" + tools.GetLocaHonst() + ":" + config.ApplicationConfig.Port + "/" fmt.Println(url) //todo publish app to devices for _, devid := range data.DeviceId { fmt.Println(devid) dev.DeviceId = devid if devInfo, err = dev.Get(); err != nil { continue } record.RecordId = 0 record.DeviceSn = devInfo.DeviceSn record.Uid = upgradefile.Uid if record, err = record.GetUpgradeRecord(); err == nil { fmt.Println("app version is old.") continue } if devInfo.Status > 0 { if _, ok := mqtthandler.MqttClientList[devInfo.ServerIp]; ok { go func(devInfo busmodels.DeviceInfo) { mqtthandler.MqttClientList[devInfo.ServerIp].FileUpgrade(userId, devInfo.DeviceSn, appInfo.AppKey, url, upgradefile.Uid) }(devInfo) } } else { log.Info("[%v] publish app device offline", devInfo.DeviceSn) } } //result, err := data.BatchDelete(IDS) //tools.HasError(err, "删除失败", 500) app.OK(c, "", "发布成功") } func PublishApp2Groups(c *gin.Context) { var applicatoin busmodels.BusApplication var upgradefile busmodels.BusUpgradeFile var dev busmodels.BusDevice var devs []busmodels.DeviceInfo var data busmodels.PublishAppGroup err := c.MustBindWith(&data, binding.JSON) tools.HasError(err, "非法数据格式", 500) fmt.Println(data.AppId) userId := tools.GetUserIdStr(c) applicatoin.AppId = data.AppId appInfo, _ := applicatoin.Get() upgradefile, _ = upgradefile.GetFirstFile() // /api/v1/device/usual/upgradefile/download url := "http://" + tools.GetLocaHonst() + ":" + config.ApplicationConfig.Port + "/" fmt.Println(url) //todo publish app to groups for _, gid := range data.GroupId { fmt.Println("group id:", gid) dev.GroupId = gid if devs, err = dev.GetDevices(); err != nil { continue } else { for _, devInfo := range devs { dev.DeviceId = devInfo.DeviceId if devInfo, err = dev.Get(); err != nil { continue } if devInfo.Status > 0 { if _, ok := mqtthandler.MqttClientList[devInfo.ServerIp]; ok { go func(devInfo busmodels.DeviceInfo) { mqtthandler.MqttClientList[devInfo.ServerIp].FileUpgrade(userId, devInfo.DeviceSn, appInfo.AppKey, url, upgradefile.Uid) }(devInfo) } } else { log.Info("cmd publish app device offline [%s]", devInfo.DeviceSn) } } } } //result, err := data.BatchDelete(IDS) //tools.HasError(err, "删除失败", 500) app.OK(c, "", "发布成功") }