(page, size int, wd string)
| 167 | } |
| 168 | |
| 169 | func (m *Version) Lists(page, size int, wd string) (versions []Version, total int64) { |
| 170 | o := orm.NewOrm() |
| 171 | q := o.QueryTable(m) |
| 172 | wd = strings.TrimSpace(wd) |
| 173 | if wd != "" { |
| 174 | q = q.Filter("title__icontains", wd) |
| 175 | } |
| 176 | |
| 177 | total, _ = q.Count() |
| 178 | if total == 0 { |
| 179 | return |
| 180 | } |
| 181 | |
| 182 | q.Limit(size).Offset((page - 1) * size).OrderBy("-id").All(&versions) |
| 183 | |
| 184 | l := len(versions) |
| 185 | if l == 0 { |
| 186 | return |
| 187 | } |
| 188 | |
| 189 | var ( |
| 190 | ids []interface{} |
| 191 | items []VersionItem |
| 192 | itemMap = make(map[int][]VersionItem) |
| 193 | ) |
| 194 | |
| 195 | for _, ver := range versions { |
| 196 | ids = append(ids, ver.Id) |
| 197 | } |
| 198 | |
| 199 | o.QueryTable(NewVersionItem()).Filter("version_id__in", ids...).Limit(l * 1000).OrderBy("version_id").All(&items) |
| 200 | for _, item := range items { |
| 201 | itemMap[item.VersionId] = append(itemMap[item.VersionId], item) |
| 202 | } |
| 203 | |
| 204 | for idx, ver := range versions { |
| 205 | if v, ok := itemMap[ver.Id]; ok { |
| 206 | ver.Versions = m.SortVersionItems(v) |
| 207 | versions[idx] = ver |
| 208 | } |
| 209 | } |
| 210 | |
| 211 | return |
| 212 | } |
| 213 | |
| 214 | // DeleteVersionItem 删除版本项 |
| 215 | func (m *Version) DeleteVersionItem(id int) (err error) { |
no test coverage detected