Forráskód Böngészése

feat: annex中增加分页

lanjianrong 4 éve
szülő
commit
cd0607ff1f

+ 12 - 8
dao/annex_dao.go

@@ -28,17 +28,21 @@ func NewAnnexDao(engine *xorm.Engine) *AnnexDao {
 }
 
 // 获取附件列表
-func (d *AnnexDao) GetList(dataType int, dataId int) []viewmodels.AnnexListView {
+func (d *AnnexDao) GetList(dataType int, dataId int, pageNo int, pageSize int) ([]viewmodels.AnnexListView, int64) {
 	dataList := make([]viewmodels.AnnexListView, 0)
-	err := d.engine.
-		Asc("create_time").
-		Sql("select f.`account_id`, f.`create_time`, f.`name` as file_name, f.`oss_url` as file_path, a.`name` as account_name from `cm_annex` as f, `cm_project_account` as a where f.`account_id` = a.`id` and f.`data_type` = ? and f.`data_id` = ?", dataType, dataId).
-		Find(&dataList)
-	fmt.Println("dataList", dataList)
+	start := (pageNo - 1) * pageSize
+	// fmt.Println("start", start, "pageSize", pageSize)
+	total, err := d.engine.Table("`cm_annex` as f").
+		Select("f.`id`, f.`account_id`, f.`create_time`, f.`name` as file_name, f.`oss_url` as file_path, a.`name` as account_name").
+		Join("LEFT", "`cm_project_account` as a", "a.id = f.account_id").
+		Where("f.data_id = ? and f.data_type = ?", dataId, dataType).
+		Limit(pageSize, start).
+		FindAndCount(&dataList)
+	// fmt.Println("total", total)
 	if err != nil {
-		return dataList
+		return dataList, 0
 	}
-	return dataList
+	return dataList, total
 }
 
 // 获取总数

+ 6 - 4
services/annex_service.go

@@ -27,7 +27,7 @@ type AnnexService interface {
 	Create(uid int, dataType int, dataId int, list []viewmodels.AnnexList) error
 	Delete(id int) error
 	GetCounts(dataType int, dataId int) (int64, error)
-	Get(dataType int, dataId int) []viewmodels.AnnexListView
+	Get(dataType int, dataId int, pageNo int, pageSize int) ([]viewmodels.AnnexListView, int64)
 }
 
 // //返回service操作类
@@ -46,20 +46,22 @@ func NewAnnexService() AnnexService {
 }
 
 // 附件列表
-func (s *annexService) Get(dataType int, dataId int) []viewmodels.AnnexListView {
+func (s *annexService) Get(dataType int, dataId int, pageNo int, pageSize int) ([]viewmodels.AnnexListView, int64) {
 	fileData := make([]viewmodels.AnnexListView, 0)
-	list := s.daoAnnex.GetList(dataType, dataId)
+	list, total := s.daoAnnex.GetList(dataType, dataId, pageNo, pageSize)
 	for _, item := range list {
 		annexVM := viewmodels.AnnexListView{}
 		uid, _ := comm.AesEncrypt(item.AccountId, conf.SignSecret)
 		annexVM.AccountId = uid
+		id, _ := comm.AesEncrypt(item.Id, conf.SignSecret)
+		annexVM.Id = id
 		annexVM.AccountName = item.AccountName
 		annexVM.CreateTime = item.CreateTime
 		annexVM.FileName = item.FileName
 		annexVM.FilePath = item.FilePath
 		fileData = append(fileData, annexVM)
 	}
-	return fileData
+	return fileData, total
 }
 
 // 计算附件总数

+ 2 - 1
services/safe_service.go

@@ -104,7 +104,8 @@ func (s *safeService) GetDetail(id int, pid int) viewmodels.SafeDetail {
 	account := s.daoProjectAccount.Get(safeData.Uid, pid)
 	data.AuditName = account.Name
 	data.CreateTime = safeData.CreateTime
-	data.FileList = s.daoAnnex.GetList(3, safeData.Id)
+	fileList, _ := s.daoAnnex.GetList(3, safeData.Id, 1, 15)
+	data.FileList = fileList
 	auditors := s.daoSafeAudit.GetAuditors(safeData.Id, safeData.Times, account.Id)
 	data.Auditors = auditors
 	return data

+ 7 - 4
web/api/annex_api.go

@@ -30,6 +30,8 @@ type AnnexApi struct {
 // @Security ApiKeyAuth
 // @Param   dataType     path    int     true        "附件类型"
 // @Param   dataId     path    string     true        "源数据id"
+// @Param   pageNo     path    int     true        "页码" eg:1
+// @Param   pageSize     path    int     true        "页数" eg:15
 // @Success 200 {object} viewmodels.AnnexList "{code:0成功,data:viewmodels.AnnexList,msg:}"
 // @Failure 400 {string} string	"{code:0成功,-1参数类错误,-2服务端内部错误,msg:错误信息}"
 // @Router /api/file [get]
@@ -44,11 +46,12 @@ func (c *AnnexApi) Get() {
 	dataType, err := strconv.Atoi(annexData.DataType)
 	// data = c.ServiceAnnex.Get(dataType, dataId)
 	// dataType, err := strconv.Atoi(annexData.DataType)
-	data := c.ServiceAnnex.Get(dataType, dataId)
+	data, total := c.ServiceAnnex.Get(dataType, dataId, annexData.PageNo, annexData.PageSize)
 	c.Ctx.JSON(iris.Map{
-		"code": 0,
-		"msg":  "请求成功",
-		"data": data,
+		"code":  0,
+		"msg":   "请求成功",
+		"data":  data,
+		"total": total,
 	})
 }
 

+ 5 - 0
web/viewmodels/annex.go

@@ -21,6 +21,8 @@ type Annex struct {
 	AccountId  string    `form:"accoundId" json:"accoundId"`
 	CreateTime time.Time `form:"createTime" json:"createTime"`
 	UpdateTime time.Time `form:"updateTime" json:"updateTime"`
+	PageNo     int       `from:"pageNo" json:"pageNo"`
+	PageSize   int       `from:"pageSize" json:"pageSize"`
 }
 
 type AnnexList struct {
@@ -30,6 +32,7 @@ type AnnexList struct {
 }
 
 type AnnexListView struct {
+	Id          string    `from:"id" json:"id"`
 	FileName    string    `from:"filename" json:"filename"`
 	FilePath    string    `from:"filepath" json:"filepath"`
 	AccountName string    `from:"accountName" json:"accountName"`
@@ -56,6 +59,8 @@ func (l Annex) Validate() error {
 		validation.Field(&l.DataType, validation.Required.Error("存储类型不能为空")),
 		validation.Field(&l.DataId, validation.Required.Error("存储ID不能为空")),
 		validation.Field(&l.AccountId, validation.Required.Error("账号ID不能为空")),
+		validation.Field(&l.PageNo, validation.Required.Error("页码不能为空")),
+		validation.Field(&l.PageSize, validation.Required.Error("页数不能为空")),
 	)
 }