package archiveapi import ( "encoding/json" "strconv" "time" "github.com/flipped-aurora/gin-vue-admin/server/commonus" "github.com/flipped-aurora/gin-vue-admin/server/global" "github.com/flipped-aurora/gin-vue-admin/server/model/archivesmodel" "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" "github.com/flipped-aurora/gin-vue-admin/server/model/testpage" "github.com/gin-gonic/gin" ) //图文信息模块 type GraphicInformation struct{} //文档列表 func (g *GraphicInformation) ArchiveFileList(c *gin.Context) { var requestData fileList err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } //查询条件 whereMap := commonus.MapOut() if requestData.ParentId != 0 { whereMap["g_parent"] = requestData.ParentId } if requestData.ParentIdStr != "" { outIdVal, outIdErr := strconv.ParseInt(requestData.ParentIdStr, 10, 64) if outIdErr != nil { response.Result(102, requestData, "参数错误!请重新提交!", c) return } whereMap["g_parent"] = outIdVal } //判断集团 if requestData.Group != 0 { whereMap["g_write_group"] = requestData.Group } //判断分厂 if requestData.Factory != 0 { whereMap["g_write_bfid"] = requestData.Factory } //判断工段 if requestData.Position != 0 { whereMap["g_ws_id"] = requestData.Position } //判断班组 if requestData.Team != 0 { whereMap["g_team"] = requestData.Team } //判断所属栏目 if requestData.ColumnId != 0 { whereMap["g_parent_sun"] = requestData.ColumnId } if requestData.PageSize == 0 { requestData.PageSize = 20 } if requestData.Page <= 0 { requestData.Page = 1 } // psge := (requestData.Page - 1) * requestData.PageSize appointPages := commonus.CalculatePages(requestData.Page, requestData.PageSize) var fileList []archivesmodel.ArchiveFile var total int64 //获取所有数据 if requestData.Title != "" { listTitleErr := global.GVA_DB_BooImgkDate.Where(whereMap).Where("`g_title` LIKE %?% AND `g_state` IN ?", requestData.Title, []int{1, 2, 3}).Order("`g_id` DESC").Limit(requestData.PageSize).Offset(appointPages).Find(&fileList).Error if listTitleErr != nil { response.Result(103, listTitleErr, "数据获取失败!", c) return } counrErr := global.GVA_DB_BooImgkDate.Model(&fileList).Where(whereMap).Where("`g_title` LIKE %?% AND `g_state` IN ?", requestData.Title, []int{1, 2, 3}).Count(&total).Error if counrErr != nil { total = 0 } } else { listErr := global.GVA_DB_BooImgkDate.Where(whereMap).Where("`g_state` IN ?", []int{1, 2, 3}).Order("`g_id` DESC").Limit(requestData.PageSize).Offset(appointPages).Find(&fileList).Error if listErr != nil { response.Result(104, listErr, "数据获取失败!", c) return } counrErr := global.GVA_DB_BooImgkDate.Model(&fileList).Where(whereMap).Where("`g_state` IN ?", []int{1, 2, 3}).Count(&total).Error if counrErr != nil { total = 0 } } var fileListAry []callBackFilesList for _, fileCont := range fileList { var archiveTypeCont archivesmodel.ArchivesType var fileListInfo callBackFilesList fileListInfo.Id = fileCont.Id fileListInfo.Title = fileCont.Title fileListInfo.ColumnId = fileCont.ParentSun fileListInfo.ParentColumnId = fileCont.Parent archiveTypeCont.Id = fileCont.Parent arcTypeErrParent := archiveTypeCont.GetArchiveTypeInfo() if arcTypeErrParent == nil { fileListInfo.ParentColumnTitle = archiveTypeCont.Title } else { fileListInfo.ParentColumnTitle = "" } archiveTypeCont.Id = fileCont.ParentSun arcTypeErr := archiveTypeCont.GetArchiveTypeInfo() if arcTypeErr == nil { fileListInfo.ColumnTitle = archiveTypeCont.Title } else { fileListInfo.ColumnTitle = "" } reading, comment, collect, likes, tread, score := getBookArrter(fileCont.Id) //计算文章属性 fileListInfo.Reading = reading fileListInfo.Comment = comment fileListInfo.Collect = collect fileListInfo.Likes = likes fileListInfo.Tread = tread fileListInfo.Score = score fileListInfo.Scope = fileCont.VisitStrat if fileCont.State == 2 { fileListInfo.State = true } else { fileListInfo.State = false } fileListInfo.OutId = strconv.FormatInt(fileCont.Id, 10) fileListAry = append(fileListAry, fileListInfo) } countSum := len(fileListAry) printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, fileListAry) // fmt.Printf("%v\n", printData) response.Result(0, printData, "查询成功!", c) } //获取文档属性 global.GVA_DB_BookDate func getBookArrter(id int64) (Reading, Comment, Collect, Likes, Tread, Score int64) { var bookAttr archivesmodel.BookAttribute readingErr := global.GVA_DB_BookDate.Model(&bookAttr).Where("`b_file_id` = ? AND `b_stater` = ? AND `b_type` = ?", id, 1, 1).Count(&Reading).Error if readingErr != nil { Reading = 0 } collectErr := global.GVA_DB_BookDate.Model(&bookAttr).Where("`b_file_id` = ? AND `b_stater` = ? AND `b_type` = ?", id, 1, 2).Count(&Collect).Error if collectErr != nil { Collect = 0 } likesErr := global.GVA_DB_BookDate.Model(&bookAttr).Where("`b_file_id` = ? AND `b_stater` = ? AND `b_type` = ?", id, 1, 3).Count(&Likes).Error if likesErr != nil { Likes = 0 } treadErr := global.GVA_DB_BookDate.Model(&bookAttr).Where("`b_file_id` = ? AND `b_stater` = ? AND `b_type` = ?", id, 1, 3).Count(&Tread).Error if treadErr != nil { Tread = 0 } var siscussMsg archivesmodel.DiscussMsg commentErr := global.GVA_DB_BookDate.Model(&siscussMsg).Where("dis_file_id = ? AND dis_stater = ?", id, 2).Count(&Comment).Error if commentErr != nil { Comment = 0 } return } //添加文档 func (g *GraphicInformation) AddArchiveFileInfo(c *gin.Context) { var archiveFileInfo archivesmodel.ArchiveFile archiveFileInfo.InitInfo() err := c.ShouldBindJSON(&archiveFileInfo) if err != nil { response.Result(101, archiveFileInfo, "参数错误!请重新提交!", c) return } if archiveFileInfo.Title == "" { response.Result(102, archiveFileInfo, "请输入文档标题!", c) return } if archiveFileInfo.Parent == 0 { response.Result(103, archiveFileInfo, "请输入文档所属顶级分类!", c) return } if archiveFileInfo.ParentSun == 0 { response.Result(104, archiveFileInfo, "请输入文档所属分类!", c) return } if archiveFileInfo.Source == 2 && archiveFileInfo.SourceUrl == "" { response.Result(105, archiveFileInfo, "请输入文档转载地址!", c) return } if archiveFileInfo.Source != 2 && archiveFileInfo.Content == "" && archiveFileInfo.TestUrl == "" { response.Result(106, archiveFileInfo, "正文内容不能为空", c) return } if archiveFileInfo.UserKey == 0 { response.Result(109, archiveFileInfo, "请确认编辑人员KEY!", c) return } if archiveFileInfo.State <= 0 || archiveFileInfo.State > 4 { archiveFileInfo.State = 2 } if archiveFileInfo.OuterLink != "" { urlIsTrue := commonus.JudgeHttpOrHttps(archiveFileInfo.OuterLink) if urlIsTrue != true { response.Result(107, archiveFileInfo, "您输入的外链格式不正确!", c) return } } addArchiveFileErr := global.GVA_DB_BooImgkDate.Create(&archiveFileInfo).Error if addArchiveFileErr != nil { response.Result(108, archiveFileInfo, "数据写入失败!", c) } else { response.Result(0, archiveFileInfo, "数据写入成功!", c) } } //获取文档信息 func (g *GraphicInformation) GetArchiveFileInfo(c *gin.Context) { var getID commonus.SetId err := c.ShouldBindJSON(&getID) if err != nil { response.Result(101, getID, "参数错误!请重新提交!", c) return } if getID.Id == 0 { response.Result(101, getID, "参数错误!请重新提交!", c) return } if getID.OutId != "" { outIdVal, outIdErr := strconv.ParseInt(getID.OutId, 10, 64) if outIdErr != nil { response.Result(102, getID, "参数错误!请重新提交!", c) return } getID.Id = outIdVal } var archiveFileInfo archivesmodel.ArchiveFile archiveFileInfo.InitInfo() sysUserErr := global.GVA_DB_BooImgkDate.Where("g_id = ?", getID.Id).First(&archiveFileInfo).Error if sysUserErr != nil { response.Result(102, sysUserErr, "数据查询失败!", c) } else { response.Result(0, archiveFileInfo, "数据查询成功!", c) } } //修改文档信息 func (g *GraphicInformation) EiteArchiveFileInfo(c *gin.Context) { var archiveFileInfo archivesmodel.ArchiveFile err := c.ShouldBindJSON(&archiveFileInfo) if err != nil { response.Result(101, archiveFileInfo, "参数错误!请重新提交!", c) return } if archiveFileInfo.Id == 0 { response.Result(108, archiveFileInfo, "!请提交文档ID!", c) return } if archiveFileInfo.Title == "" { response.Result(102, archiveFileInfo, "请输入文档标题!", c) return } if archiveFileInfo.Parent == 0 { response.Result(103, archiveFileInfo, "请输入文档所属顶级分类!", c) return } if archiveFileInfo.ParentSun == 0 { response.Result(104, archiveFileInfo, "请输入文档所属分类!", c) return } if archiveFileInfo.Source == 2 && archiveFileInfo.SourceUrl == "" { response.Result(105, archiveFileInfo, "请输入文档转载地址!", c) return } if archiveFileInfo.Source != 2 && archiveFileInfo.Content == "" && archiveFileInfo.TestUrl == "" { response.Result(106, archiveFileInfo, "正文内容不能为空", c) return } if archiveFileInfo.UserKey == 0 { response.Result(109, archiveFileInfo, "请确认编辑人员KEY!", c) return } if archiveFileInfo.State <= 0 || archiveFileInfo.State > 4 { archiveFileInfo.State = 2 } if archiveFileInfo.OuterLink != "" { urlIsTrue := commonus.JudgeHttpOrHttps(archiveFileInfo.OuterLink) if urlIsTrue != true { response.Result(107, archiveFileInfo, "您输入的外链格式不正确!", c) return } } // addArchiveFileErr := global.GVA_DB_BooImgkDate.Create(&archiveFileInfo).Error // if addArchiveFileErr != nil { // response.Result(108, archiveFileInfo, "数据写入失败!", c) // } else { // response.Result(0, archiveFileInfo, "数据写入成功!", c) // } archiveFileInfo.EiteTime = time.Now().Unix() var archiveFileMod archivesmodel.ArchiveFile addArchiveFileErr := global.GVA_DB_BooImgkDate.Model(&archiveFileMod).Where("g_id = ?", archiveFileInfo.Id).Updates(archiveFileInfo).Error if addArchiveFileErr != nil { response.Result(110, addArchiveFileErr, "数据写入失败!", c) return } response.Result(0, archiveFileInfo, "数据写入成功!", c) } //状态修改及软硬删除文档信息 func (g *GraphicInformation) ModifyArchiveFileInfo(c *gin.Context) { var arrData archiveState err := c.ShouldBindJSON(&arrData) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if arrData.Id == 0 { response.Result(102, arrData, "参数错误!请重新提交!", c) return } if arrData.OutId != "" { outIdVal, outIdErr := strconv.ParseInt(arrData.OutId, 10, 64) if outIdErr != nil { response.Result(102, arrData, "参数错误!请重新提交!", c) return } arrData.Id = outIdVal } if arrData.State == 0 { arrData.State = 3 } if arrData.IsDel != 1 { isTrue := eiteArchiveFileState(arrData) if isTrue != true { response.Result(103, isTrue, "修改失败!", c) return } response.Result(0, arrData, "修改成功!", c) } else { if arrData.State == 4 { var archiveFileMod archivesmodel.ArchiveFile archiveInfoErr := global.GVA_DB_BooImgkDate.Where("g_id = ?", arrData.Id).Delete(&archiveFileMod).Error if archiveInfoErr != nil { response.Result(104, arrData, "删除失败!", c) return } response.Result(0, arrData, "删除成功!", c) } else { isTrue := eiteArchiveFileState(arrData) if isTrue != true { response.Result(105, isTrue, "修改失败!", c) return } response.Result(0, arrData, "修改成功!", c) } } } //修改文档状态 func eiteArchiveFileState(arrData archiveState) (isTrue bool) { isTrue = false //软处理 saveData := commonus.MapOut() saveData["g_state"] = arrData.State saveData["g_eite_time"] = time.Now().Unix() var archiveFileMod archivesmodel.ArchiveFile archiveInfoErr := global.GVA_DB_BooImgkDate.Model(&archiveFileMod).Where("g_id = ?", arrData.Id).Updates(saveData).Error if archiveInfoErr != nil { return } isTrue = true return } //批量删除 func (g *GraphicInformation) BatchDeleteArchiveFile(c *gin.Context) { var arrData batchArchiveState err := c.ShouldBindJSON(&arrData) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if len(arrData.Id) < 1 { response.Result(102, arrData, "参数错误!请重新提交!", c) return } if arrData.State == 0 { arrData.State = 3 } if arrData.IsDel != 1 { isTrue := batchEiteArchiveFileState(arrData) if isTrue != true { response.Result(103, isTrue, "修改失败!", c) return } response.Result(0, arrData, "修改成功!", c) } else { if arrData.State == 4 { var archiveFileMod archivesmodel.ArchiveFile archiveInfoErr := global.GVA_DB_BooImgkDate.Where("g_id IN ?", arrData.Id).Delete(&archiveFileMod).Error if archiveInfoErr != nil { response.Result(104, arrData, "删除失败!", c) return } response.Result(0, arrData, "删除成功!", c) } else { isTrue := batchEiteArchiveFileState(arrData) if isTrue != true { response.Result(105, isTrue, "修改失败!", c) return } response.Result(0, arrData, "修改成功!", c) } } } //批量修改文档状态 func batchEiteArchiveFileState(arrData batchArchiveState) (isTrue bool) { isTrue = false //软处理 saveData := commonus.MapOut() saveData["g_state"] = arrData.State saveData["g_eite_time"] = time.Now().Unix() var archiveFileMod archivesmodel.ArchiveFile archiveInfoErr := global.GVA_DB_BooImgkDate.Model(&archiveFileMod).Where("g_id IN ?", arrData.Id).Updates(saveData).Error if archiveInfoErr != nil { return } isTrue = true return } //获取文档属性列表 func (g *GraphicInformation) GetArchiveFileAttributeList(c *gin.Context) { var fileAttribute archiveFileAttr err := c.ShouldBindJSON(&fileAttribute) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if fileAttribute.FileID == 0 { response.Result(102, err, "参数错误!请重新提交!", c) return } if fileAttribute.Type == 0 { fileAttribute.Type = 1 } if fileAttribute.PageSize == 0 { fileAttribute.PageSize = 20 } if fileAttribute.Page <= 0 { fileAttribute.Page = 1 } appointPages := commonus.CalculatePages(fileAttribute.Page, fileAttribute.PageSize) var bookAttrbuteList []archivesmodel.BookAttribute var total int64 //获取所有数据 //查询条件 whereMap := commonus.MapOut() whereMap["b_file_id"] = fileAttribute.FileID whereMap["b_type"] = fileAttribute.Type whereMap["b_stater"] = 1 listErr := global.GVA_DB_BookDate.Where(whereMap).Order("`b_id` DESC").Limit(fileAttribute.PageSize).Offset(appointPages).Find(&bookAttrbuteList).Error if listErr != nil { response.Result(104, listErr, "数据获取失败!", c) return } counrErr := global.GVA_DB_BookDate.Model(&bookAttrbuteList).Where(whereMap).Count(&total).Error if counrErr != nil { total = 0 } var bookAttrContMap []archiveFileAttrOutPut for _, bookAttrVal := range bookAttrbuteList { var bookAttrCont archiveFileAttrOutPut getMyInfo, myInfoIstrue := getUserInfo([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": bookAttrVal.UserId}) bookAttrCont.Id = bookAttrVal.Id bookAttrCont.OutId = strconv.FormatInt(bookAttrVal.Id, 10) bookAttrCont.FileId = bookAttrVal.FileId bookAttrCont.UserId = bookAttrVal.UserId bookAttrCont.Time = bookAttrVal.Time bookAttrCont.Type = bookAttrVal.Type bookAttrCont.Stater = bookAttrVal.Stater bookAttrCont.EiteTime = bookAttrVal.EiteTime bookAttrCont.Source = bookAttrVal.Source if myInfoIstrue == true { bookAttrCont.Number = getMyInfo.Number bookAttrCont.Name = getMyInfo.Name } bookAttrContMap = append(bookAttrContMap, bookAttrCont) } countSum := len(bookAttrContMap) printData := commonus.OutPutList(total, int64(countSum), fileAttribute.Page, fileAttribute.PageSize, bookAttrContMap) // fmt.Printf("%v\n", printData) response.Result(0, printData, "查询成功!", c) } //获取人员信息 func getUserInfo(field []string, whereMap map[string]interface{}) (userCont testpage.PersonalDetails, isTrue bool) { isTrue = false var userInfo testpage.WorkMan userErr := global.GVA_DB_Master.Model(&userInfo).Select(field).Joins("left join worker_man_data on worker_man_data.wmd_key = worker_man.wm_key").Where(whereMap).Find(&userCont).Error if userErr == nil { isTrue = true } return } //获取归档评论列表 func (g *GraphicInformation) GetDiscussFileMsg(c *gin.Context) { var fileAttribute archiveFileAttr err := c.ShouldBindJSON(&fileAttribute) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if fileAttribute.FileID == 0 { response.Result(102, err, "参数错误!请重新提交!", c) return } if fileAttribute.Type == 0 { fileAttribute.Type = 1 } if fileAttribute.PageSize == 0 { fileAttribute.PageSize = 20 } if fileAttribute.Page <= 0 { fileAttribute.Page = 1 } appointPages := commonus.CalculatePages(fileAttribute.Page, fileAttribute.PageSize) var total int64 //获取所有数据 var siscussMsg []archivesmodel.DiscussMsg //查询条件 whereMap := commonus.MapOut() whereMap["dis_file_id"] = fileAttribute.FileID whereMap["dis_source"] = fileAttribute.Type whereMap["dis_stater"] = 2 listErr := global.GVA_DB_BookDate.Where(whereMap).Order("`dis_id` DESC").Limit(fileAttribute.PageSize).Offset(appointPages).Find(&siscussMsg).Error if listErr != nil { response.Result(104, listErr, "数据获取失败!", c) return } counrErr := global.GVA_DB_BookDate.Model(&siscussMsg).Where(whereMap).Count(&total).Error if counrErr != nil { total = 0 } var bookAttrContMap []archiveFileDiscussAttrOutPut for _, bookAttrVal := range siscussMsg { var bookAttrCont archiveFileDiscussAttrOutPut bookAttrCont.Id = bookAttrVal.Id bookAttrCont.FileId = bookAttrVal.FileId bookAttrCont.UserId = bookAttrVal.UserId bookAttrCont.Prent = bookAttrVal.Prent bookAttrCont.Content = bookAttrVal.Content bookAttrCont.Time = bookAttrVal.Time bookAttrCont.Stater = bookAttrVal.Stater bookAttrCont.EiteTime = bookAttrVal.EiteTime bookAttrCont.Source = bookAttrVal.Source bookAttrCont.UserJson = bookAttrVal.UserJson var discussJson discussJson errDisJson := json.Unmarshal([]byte(bookAttrVal.UserJson), &discussJson) if errDisJson == nil { bookAttrCont.UserJsonCont = discussJson } getMyInfo, myInfoIstrue := getUserInfo([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": bookAttrVal.UserId}) if myInfoIstrue == true { bookAttrCont.Number = getMyInfo.Number bookAttrCont.Name = getMyInfo.Name } bookAttrContMap = append(bookAttrContMap, bookAttrCont) } countSum := len(bookAttrContMap) printData := commonus.OutPutList(total, int64(countSum), fileAttribute.Page, fileAttribute.PageSize, bookAttrContMap) // fmt.Printf("%v\n", printData) response.Result(0, printData, "查询成功!", c) }