| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- package business
- import (
- "fmt"
- "log"
- "net/http"
- "os"
- "os/exec"
- "strconv"
- "strings"
- "time"
- "github.com/gin-gonic/gin"
- "github.com/gin-gonic/gin/binding"
- "github.com/google/uuid"
- "device-manage/app/admin/models/busmodels"
- "device-manage/tools"
- "device-manage/tools/app"
- )
- var aaptCmd string = "/home/jen/workspace/tools/apktool_2.4.1/prebuilt/linux/aapt dump badging "
- func GetUpgradeFileList(c *gin.Context) {
- var upgradeData busmodels.BusUpgradeFile
- var err error
- var params busmodels.QueryUpgradeParams
- err = c.MustBindWith(¶ms, binding.JSON)
- pageSize := params.PageSize
- pageIndex := params.PageIndex
- gids := params.Gids
- upgradeData.FileName = params.FileName
- upgradeData.AppId = params.AppId
- result, count, err := upgradeData.GetPage(pageSize, pageIndex, gids)
- tools.HasError(err, "", -1)
- app.PageOK(c, result, count, pageIndex, pageSize, "")
- }
- func InsertVersion(c *gin.Context) {
- var device busmodels.BusApplication
- err := c.BindWith(&device, binding.JSON)
- tools.HasError(err, "非法数据格式", 500)
- device.CreateBy = tools.GetUserIdStr(c)
- id, err := device.Insert()
- fmt.Println(id)
- tools.HasError(err, "添加失败", 500)
- app.OK(c, id, "添加成功")
- }
- func GetVersion(c *gin.Context) {
- var data busmodels.BusApplication
- data.AppId, _ = tools.StringToInt(c.Param("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 UpdateUpgradeFile(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 DeleteUpgradeFile(c *gin.Context) {
- var data busmodels.BusUpgradeFile
- data.UpdateBy = tools.GetUserIdStr(c)
- IDS := tools.IdsStrToIdsIntGroup("upgradefileId", c)
- fmt.Println(IDS)
- result, err := data.BatchDelete(IDS)
- tools.HasError(err, "删除失败", 500)
- app.OK(c, result, "删除成功")
- }
- //web 端上传升级文件,应用和配置等
- func UploadUpgradeFile(c *gin.Context) {
- upgradeInfo := busmodels.BusUpgradeFile{}
- //获取文件头
- file, err := c.FormFile("file")
- upgradeInfo.Remark, _ = c.GetPostForm("remark")
- appid, _ := c.GetPostForm("appId")
- upgradeInfo.AppId, _ = strconv.Atoi(appid)
- fmt.Println(upgradeInfo.VersionName)
- fmt.Println(upgradeInfo.Remark)
- if err != nil {
- fmt.Println(err)
- c.String(http.StatusBadRequest, "请求失败:%s", err)
- return
- }
- fileArry := strings.Split(file.Filename, ".")
- if len(fileArry) <= 0 {
- c.String(http.StatusBadRequest, "请求失败,文件格式错误.")
- return
- }
- fileType := fileArry[len(fileArry)-1]
- if err = upgradeInfo.UploadFileCheck(fileType); err != nil {
- c.String(http.StatusBadRequest, "请求失败:%s", err)
- return
- }
- upgradeInfo.Uid = uuid.NewString()
- upgradeInfo.Size = strconv.FormatInt(file.Size, 10)
- upgradeInfo.FileName = file.Filename
- destName := upgradeInfo.Uid
- destPath := "files/appfiles/" + upgradeInfo.Uid[0:2] + "/" + upgradeInfo.Uid[2:4]
- finalPath := destPath + "/" + destName
- fmt.Println("文件名 :", destName)
- fmt.Println("文件路径:", destPath)
- //保存文件到服务器本地
- //SaveUploadedFile(文件头,保存路径)
- if _, err := os.Stat(destPath); err != nil {
- if err = os.MkdirAll(destPath, os.ModePerm); err != nil {
- fmt.Println(err)
- c.String(http.StatusBadRequest, "保存失败 Error:%s", err.Error())
- return
- }
- }
- if _, err := os.Stat(finalPath); err != nil {
- if _, err = os.Create(finalPath); err != nil {
- fmt.Println(err)
- c.String(http.StatusBadRequest, "保存失败 Error:%s", err.Error())
- return
- }
- }
- if err := c.SaveUploadedFile(file, finalPath); err != nil {
- c.String(http.StatusBadRequest, "保存失败 Error:%s", err.Error())
- return
- }
- if fileType == "apk" {
- command := aaptCmd + finalPath
- cmd := exec.Command("/bin/bash", "-c", command)
- bytes, err := cmd.Output()
- if err != nil {
- log.Println(err)
- }
- resp := string(bytes)
- log.Println(resp)
- var strSplit []string = strings.Split(resp, "\n")
- var strSplit1 = strings.Split(strSplit[0], " ")
- var verName = strings.Split(strSplit1[3], "'")
- upgradeInfo.VersionName = verName[1]
- log.Println(upgradeInfo.VersionName)
- var pkgName = strings.Split(strSplit1[1], "'")
- upgradeInfo.PkgName = pkgName[1]
- log.Println(upgradeInfo.PkgName)
- var sdk = strings.Split(strSplit[1], "'")
- upgradeInfo.SdkVersion = sdk[1]
- }
- upgradeInfo.CreateBy = tools.GetUserIdStr(c)
- upgradeInfo.UpdateBy = tools.GetUserIdStr(c)
- var time time.Time = time.Now()
- upgradeInfo.CreatedAt = time
- upgradeInfo.UpdatedAt = time
- if _, err := upgradeInfo.Insert(); err != nil {
- c.String(http.StatusBadRequest, "数据存入失败 Error:%s", err.Error())
- }
- app.OK(c, "添加成功", "")
- }
- //web 端下载应用和配置文件
- func DownloadUpgradeFile(c *gin.Context) {
- var fileInfo busmodels.BusUpgradeFile
- fileInfo.Uid = c.Query("uid")
- fileDir := "files/appfiles" + "/" + fileInfo.Uid[0:2] + "/" + fileInfo.Uid[2:4]
- finalPath := fileDir + "/" + fileInfo.Uid
- fmt.Println("文件路径:", finalPath)
- //打开文件
- if _, err := os.Open(finalPath); err != nil {
- c.Redirect(http.StatusFound, "/404")
- return
- }
- if err := fileInfo.GetFileInfo(); err != nil {
- c.Redirect(http.StatusFound, "/404")
- return
- }
- fmt.Println("文件名 :", fileInfo.FileName)
- c.Header("Content-Type", "application/octet-stream")
- c.Header("Content-Disposition", "attachment; filename="+fileInfo.FileName)
- c.Header("Content-Transfer-Encoding", "binary")
- c.File(finalPath)
- return
- }
- //设备端下载应用和配置文件
- func DeviceDownloadUpgradeFile(c *gin.Context) {
- var fileInfo busmodels.BusUpgradeFile
- fileInfo.Uid = c.Query("uid")
- fileDir := "files/appfiles" + "/" + fileInfo.Uid[0:2] + "/" + fileInfo.Uid[2:4]
- finalPath := fileDir + "/" + fileInfo.Uid
- fmt.Println("文件路径:", finalPath)
- //打开文件
- if _, err := os.Open(finalPath); err != nil {
- c.Redirect(http.StatusFound, "/404")
- return
- }
- if err := fileInfo.GetFileInfo(); err != nil {
- c.Redirect(http.StatusFound, "/404")
- return
- }
- fmt.Println("文件名 :", fileInfo.FileName)
- c.Header("Content-Type", "application/octet-stream")
- c.Header("Content-Disposition", "attachment; filename="+fileInfo.FileName)
- c.Header("Content-Transfer-Encoding", "binary")
- c.File(finalPath)
- return
- }
|