diff --git a/pkg/api/asset.go b/pkg/api/asset.go index 9c50390..ca4e734 100644 --- a/pkg/api/asset.go +++ b/pkg/api/asset.go @@ -55,8 +55,11 @@ func AssetPagingEndpoint(c echo.Context) error { userGroupId := c.QueryParam("userGroupId") ip := c.QueryParam("ip") + order := c.QueryParam("order") + field := c.QueryParam("field") + account, _ := GetCurrentAccount(c) - items, total, err := model.FindPageAsset(pageIndex, pageSize, name, protocol, tags, account, owner, sharer, userGroupId, ip) + items, total, err := model.FindPageAsset(pageIndex, pageSize, name, protocol, tags, account, owner, sharer, userGroupId, ip, order, field) if err != nil { return err } diff --git a/pkg/api/command.go b/pkg/api/command.go index 4b5ccaf..2d71058 100644 --- a/pkg/api/command.go +++ b/pkg/api/command.go @@ -34,7 +34,10 @@ func CommandPagingEndpoint(c echo.Context) error { content := c.QueryParam("content") account, _ := GetCurrentAccount(c) - items, total, err := model.FindPageCommand(pageIndex, pageSize, name, content, account) + order := c.QueryParam("order") + field := c.QueryParam("field") + + items, total, err := model.FindPageCommand(pageIndex, pageSize, name, content, order, field, account) if err != nil { return err } diff --git a/pkg/api/credential.go b/pkg/api/credential.go index eeb9cb1..a091557 100644 --- a/pkg/api/credential.go +++ b/pkg/api/credential.go @@ -62,8 +62,11 @@ func CredentialPagingEndpoint(c echo.Context) error { pageSize, _ := strconv.Atoi(c.QueryParam("pageSize")) name := c.QueryParam("name") + order := c.QueryParam("order") + field := c.QueryParam("field") + account, _ := GetCurrentAccount(c) - items, total, err := model.FindPageCredential(pageIndex, pageSize, name, account) + items, total, err := model.FindPageCredential(pageIndex, pageSize, name, order, field, account) if err != nil { return err } diff --git a/pkg/api/job.go b/pkg/api/job.go index 1fdc31c..7a406af 100644 --- a/pkg/api/job.go +++ b/pkg/api/job.go @@ -29,7 +29,10 @@ func JobPagingEndpoint(c echo.Context) error { name := c.QueryParam("name") status := c.QueryParam("status") - items, total, err := model.FindPageJob(pageIndex, pageSize, name, status) + order := c.QueryParam("order") + field := c.QueryParam("field") + + items, total, err := model.FindPageJob(pageIndex, pageSize, name, status, order, field) if err != nil { return err } diff --git a/pkg/api/user-group.go b/pkg/api/user-group.go index 4d3686c..5d9e840 100644 --- a/pkg/api/user-group.go +++ b/pkg/api/user-group.go @@ -39,7 +39,10 @@ func UserGroupPagingEndpoint(c echo.Context) error { pageSize, _ := strconv.Atoi(c.QueryParam("pageSize")) name := c.QueryParam("name") - items, total, err := model.FindPageUserGroup(pageIndex, pageSize, name) + order := c.QueryParam("order") + field := c.QueryParam("field") + + items, total, err := model.FindPageUserGroup(pageIndex, pageSize, name, order, field) if err != nil { return err } diff --git a/pkg/api/user.go b/pkg/api/user.go index f74f6bd..a7bf5a3 100644 --- a/pkg/api/user.go +++ b/pkg/api/user.go @@ -37,7 +37,10 @@ func UserPagingEndpoint(c echo.Context) error { username := c.QueryParam("username") nickname := c.QueryParam("nickname") - items, total, err := model.FindPageUser(pageIndex, pageSize, username, nickname) + order := c.QueryParam("order") + field := c.QueryParam("field") + + items, total, err := model.FindPageUser(pageIndex, pageSize, username, nickname, order, field) if err != nil { return err } diff --git a/pkg/model/asset.go b/pkg/model/asset.go index 64a4d35..c58f2f3 100644 --- a/pkg/model/asset.go +++ b/pkg/model/asset.go @@ -78,7 +78,7 @@ func FindAssetByConditions(protocol string, account User) (o []Asset, err error) return } -func FindPageAsset(pageIndex, pageSize int, name, protocol, tags string, account User, owner, sharer, userGroupId, ip string) (o []AssetVo, total int64, err error) { +func FindPageAsset(pageIndex, pageSize int, name, protocol, tags string, account User, owner, sharer, userGroupId, ip, order, field string) (o []AssetVo, total int64, err error) { db := global.DB.Table("assets").Select("assets.id,assets.name,assets.ip,assets.port,assets.protocol,assets.active,assets.owner,assets.created,assets.tags, users.nickname as owner_name,COUNT(resource_sharers.user_id) as sharer_count").Joins("left join users on assets.owner = users.id").Joins("left join resource_sharers on assets.id = resource_sharers.resource_id").Group("assets.id") dbCounter := global.DB.Table("assets").Select("DISTINCT assets.id").Joins("left join resource_sharers on assets.id = resource_sharers.resource_id").Group("assets.id") @@ -145,7 +145,20 @@ func FindPageAsset(pageIndex, pageSize int, name, protocol, tags string, account if err != nil { return nil, 0, err } - err = db.Order("assets.created desc").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&o).Error + + if order == "ascend" { + order = "asc" + } else { + order = "desc" + } + + if field == "name" { + field = "name" + } else { + field = "created" + } + + err = db.Order("assets." + field + " " + order).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&o).Error if o == nil { o = make([]AssetVo, 0) diff --git a/pkg/model/command.go b/pkg/model/command.go index 13d2418..1100ee5 100644 --- a/pkg/model/command.go +++ b/pkg/model/command.go @@ -27,7 +27,7 @@ func (r *Command) TableName() string { return "commands" } -func FindPageCommand(pageIndex, pageSize int, name, content string, account User) (o []CommandVo, total int64, err error) { +func FindPageCommand(pageIndex, pageSize int, name, content, order, field string, account User) (o []CommandVo, total int64, err error) { db := global.DB.Table("commands").Select("commands.id,commands.name,commands.content,commands.owner,commands.created, users.nickname as owner_name,COUNT(resource_sharers.user_id) as sharer_count").Joins("left join users on commands.owner = users.id").Joins("left join resource_sharers on commands.id = resource_sharers.resource_id").Group("commands.id") dbCounter := global.DB.Table("commands").Select("DISTINCT commands.id").Joins("left join resource_sharers on commands.id = resource_sharers.resource_id").Group("commands.id") @@ -53,7 +53,19 @@ func FindPageCommand(pageIndex, pageSize int, name, content string, account User return nil, 0, err } - err = db.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&o).Error + if order == "ascend" { + order = "asc" + } else { + order = "desc" + } + + if field == "name" { + field = "name" + } else { + field = "created" + } + + err = db.Order("commands." + field + " " + order).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&o).Error if o == nil { o = make([]CommandVo, 0) } diff --git a/pkg/model/credential.go b/pkg/model/credential.go index 359aa1b..89eb895 100644 --- a/pkg/model/credential.go +++ b/pkg/model/credential.go @@ -52,7 +52,7 @@ func FindAllCredential(account User) (o []CredentialSimpleVo, err error) { return } -func FindPageCredential(pageIndex, pageSize int, name string, account User) (o []CredentialVo, total int64, err error) { +func FindPageCredential(pageIndex, pageSize int, name, order, field string, account User) (o []CredentialVo, total int64, err error) { db := global.DB.Table("credentials").Select("credentials.id,credentials.name,credentials.type,credentials.username,credentials.owner,credentials.created,users.nickname as owner_name,COUNT(resource_sharers.user_id) as sharer_count").Joins("left join users on credentials.owner = users.id").Joins("left join resource_sharers on credentials.id = resource_sharers.resource_id").Group("credentials.id") dbCounter := global.DB.Table("credentials").Select("DISTINCT credentials.id").Joins("left join resource_sharers on credentials.id = resource_sharers.resource_id").Group("credentials.id") @@ -71,7 +71,20 @@ func FindPageCredential(pageIndex, pageSize int, name string, account User) (o [ if err != nil { return nil, 0, err } - err = db.Order("credentials.created desc").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&o).Error + + if order == "ascend" { + order = "asc" + } else { + order = "desc" + } + + if field == "name" { + field = "name" + } else { + field = "created" + } + + err = db.Order("credentials." + field + " " + order).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&o).Error if o == nil { o = make([]CredentialVo, 0) } diff --git a/pkg/model/job.go b/pkg/model/job.go index c8d983d..7647a2a 100644 --- a/pkg/model/job.go +++ b/pkg/model/job.go @@ -42,7 +42,7 @@ func (r *Job) TableName() string { return "jobs" } -func FindPageJob(pageIndex, pageSize int, name, status string) (o []Job, total int64, err error) { +func FindPageJob(pageIndex, pageSize int, name, status, order, field string) (o []Job, total int64, err error) { job := Job{} db := global.DB.Table(job.TableName()) dbCounter := global.DB.Table(job.TableName()) @@ -62,7 +62,21 @@ func FindPageJob(pageIndex, pageSize int, name, status string) (o []Job, total i return nil, 0, err } - err = db.Order("created desc").Find(&o).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Error + if order == "ascend" { + order = "asc" + } else { + order = "desc" + } + + if field == "name" { + field = "name" + } else if field == "created" { + field = "created" + } else { + field = "updated" + } + + err = db.Order(field + " " + order).Find(&o).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Error if o == nil { o = make([]Job, 0) } diff --git a/pkg/model/user-group.go b/pkg/model/user-group.go index c5e6e03..8a33eab 100644 --- a/pkg/model/user-group.go +++ b/pkg/model/user-group.go @@ -23,7 +23,7 @@ func (r *UserGroup) TableName() string { return "user_groups" } -func FindPageUserGroup(pageIndex, pageSize int, name string) (o []UserGroupVo, total int64, err error) { +func FindPageUserGroup(pageIndex, pageSize int, name, order, field string) (o []UserGroupVo, total int64, err error) { db := global.DB.Table("user_groups").Select("user_groups.id, user_groups.name, user_groups.created, count(resource_sharers.user_group_id) as asset_count").Joins("left join resource_sharers on user_groups.id = resource_sharers.user_group_id and resource_sharers.resource_type = 'asset'").Group("user_groups.id") dbCounter := global.DB.Table("user_groups") if len(name) > 0 { @@ -35,7 +35,20 @@ func FindPageUserGroup(pageIndex, pageSize int, name string) (o []UserGroupVo, t if err != nil { return nil, 0, err } - err = db.Order("user_groups.created desc").Find(&o).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Error + + if order == "ascend" { + order = "asc" + } else { + order = "desc" + } + + if field == "name" { + field = "name" + } else { + field = "created" + } + + err = db.Order("user_groups." + field + " " + order).Find(&o).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Error if o == nil { o = make([]UserGroupVo, 0) } diff --git a/pkg/model/user.go b/pkg/model/user.go index 3c8ccce..6f13533 100644 --- a/pkg/model/user.go +++ b/pkg/model/user.go @@ -50,7 +50,7 @@ func FindAllUser() (o []User) { return } -func FindPageUser(pageIndex, pageSize int, username, nickname string) (o []UserVo, total int64, err error) { +func FindPageUser(pageIndex, pageSize int, username, nickname, order, field string) (o []UserVo, total int64, err error) { db := global.DB.Table("users").Select("users.id,users.username,users.nickname,users.online,users.enabled,users.created,users.type, count(resource_sharers.user_id) as sharer_asset_count").Joins("left join resource_sharers on users.id = resource_sharers.user_id and resource_sharers.resource_type = 'asset'").Group("users.id") dbCounter := global.DB.Table("users") if len(username) > 0 { @@ -68,7 +68,21 @@ func FindPageUser(pageIndex, pageSize int, username, nickname string) (o []UserV return nil, 0, err } - err = db.Order("users.created desc").Find(&o).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Error + if order == "ascend" { + order = "asc" + } else { + order = "desc" + } + + if field == "username" { + field = "username" + } else if field == "nickname" { + field = "nickname" + } else { + field = "created" + } + + err = db.Order("users." + field + " " + order).Find(&o).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Error if o == nil { o = make([]UserVo, 0) } diff --git a/web/src/components/asset/Asset.js b/web/src/components/asset/Asset.js index b1cca2e..773bb59 100644 --- a/web/src/components/asset/Asset.js +++ b/web/src/components/asset/Asset.js @@ -442,6 +442,16 @@ class Asset extends Component { }); } + handleTableChange = (pagination, filters, sorter) => { + let query = { + ...this.state.queryParams, + 'order': sorter.order, + 'field': sorter.field + } + + this.loadTableData(query); + } + render() { const columns = [{ @@ -465,7 +475,8 @@ class Asset extends Component { {short} ); - } + }, + sorter: true, }, { title: '连接协议', dataIndex: 'protocol', @@ -529,7 +540,8 @@ class Asset extends Component { {dayjs(text).fromNow()} ) - } + }, + sorter: true, }, { title: '操作', @@ -767,6 +779,7 @@ class Asset extends Component { showTotal: total => `总计 ${total} 条` }} loading={this.state.loading} + onChange={this.handleTableChange} /> { diff --git a/web/src/components/command/DynamicCommand.js b/web/src/components/command/DynamicCommand.js index 56bdfb2..3309737 100644 --- a/web/src/components/command/DynamicCommand.js +++ b/web/src/components/command/DynamicCommand.js @@ -357,6 +357,16 @@ class DynamicCommand extends Component { }) } + handleTableChange = (pagination, filters, sorter) => { + let query = { + ...this.state.queryParams, + 'order': sorter.order, + 'field': sorter.field + } + + this.loadTableData(query); + } + render() { const columns = [{ @@ -380,7 +390,8 @@ class DynamicCommand extends Component { {short} ); - } + }, + sorter: true, }, { title: '指令内容', dataIndex: 'content', @@ -411,7 +422,8 @@ class DynamicCommand extends Component { {dayjs(text).fromNow()} ) - } + }, + sorter: true, }, { title: '操作', key: 'action', @@ -632,6 +644,7 @@ class DynamicCommand extends Component { showTotal: total => `总计 ${total} 条` }} loading={this.state.loading} + onChange={this.handleTableChange} /> { diff --git a/web/src/components/credential/Credential.js b/web/src/components/credential/Credential.js index e3354c8..94cc2c4 100644 --- a/web/src/components/credential/Credential.js +++ b/web/src/components/credential/Credential.js @@ -324,6 +324,16 @@ class Credential extends Component { }) } + handleTableChange = (pagination, filters, sorter) => { + let query = { + ...this.state.queryParams, + 'order': sorter.order, + 'field': sorter.field + } + + this.loadTableData(query); + } + render() { const columns = [{ @@ -347,7 +357,8 @@ class Credential extends Component { {short} ); - } + }, + sorter: true, }, { title: '凭证类型', dataIndex: 'type', @@ -382,7 +393,8 @@ class Credential extends Component { {dayjs(text).fromNow()} ) - } + }, + sorter: true, }, { title: '操作', @@ -574,6 +586,7 @@ class Credential extends Component { showTotal: total => `总计 ${total} 条` }} loading={this.state.loading} + onChange={this.handleTableChange} /> { diff --git a/web/src/components/job/Job.js b/web/src/components/job/Job.js index fe9a9f0..a4e15fa 100644 --- a/web/src/components/job/Job.js +++ b/web/src/components/job/Job.js @@ -257,6 +257,16 @@ class Job extends Component { } } + handleTableChange = (pagination, filters, sorter) => { + let query = { + ...this.state.queryParams, + 'order': sorter.order, + 'field': sorter.field + } + + this.loadTableData(query); + } + render() { const columns = [{ @@ -280,7 +290,8 @@ class Job extends Component { {short} ); - } + }, + sorter: true, }, { title: '状态', dataIndex: 'status', @@ -325,7 +336,8 @@ class Job extends Component { {dayjs(text).fromNow()} ) - } + }, + sorter: true, }, { title: '最后执行日期', dataIndex: 'updated', @@ -339,7 +351,8 @@ class Job extends Component { {dayjs(text).fromNow()} ) - } + }, + sorter: true, }, { title: '操作', key: 'action', @@ -529,6 +542,7 @@ class Job extends Component { showTotal: total => `总计 ${total} 条` }} loading={this.state.loading} + onChange={this.handleTableChange} /> { diff --git a/web/src/components/user/User.js b/web/src/components/user/User.js index ffa9df7..0657231 100644 --- a/web/src/components/user/User.js +++ b/web/src/components/user/User.js @@ -281,6 +281,16 @@ class User extends Component { }) } + handleTableChange = (pagination, filters, sorter) => { + let query = { + ...this.state.queryParams, + 'order': sorter.order, + 'field': sorter.field + } + + this.loadTableData(query); + } + render() { const columns = [{ @@ -294,10 +304,12 @@ class User extends Component { title: '登录账号', dataIndex: 'username', key: 'username', + sorter: true, }, { title: '用户昵称', dataIndex: 'nickname', key: 'nickname', + sorter: true, }, { title: '用户类型', dataIndex: 'type', @@ -350,7 +362,8 @@ class User extends Component { {dayjs(text).fromNow()} ) - } + }, + sorter: true, }, { title: '操作', @@ -578,6 +591,7 @@ class User extends Component { showTotal: total => `总计 ${total} 条` }} loading={this.state.loading} + onChange={this.handleTableChange} /> {/* 为了屏蔽ant modal 关闭后数据仍然遗留的问题*/} diff --git a/web/src/components/user/UserGroup.js b/web/src/components/user/UserGroup.js index 720ed3f..5f38788 100644 --- a/web/src/components/user/UserGroup.js +++ b/web/src/components/user/UserGroup.js @@ -259,6 +259,16 @@ class UserGroup extends Component { }) } + handleTableChange = (pagination, filters, sorter) => { + let query = { + ...this.state.queryParams, + 'order': sorter.order, + 'field': sorter.field + } + + this.loadTableData(query); + } + render() { const columns = [{ @@ -271,6 +281,7 @@ class UserGroup extends Component { }, { title: '名称', dataIndex: 'name', + sorter: true, }, { title: '授权资产', dataIndex: 'assetCount', @@ -293,7 +304,8 @@ class UserGroup extends Component { {dayjs(text).fromNow()} ) - } + }, + sorter: true, }, { title: '操作', @@ -422,6 +434,7 @@ class UserGroup extends Component { showTotal: total => `总计 ${total} 条` }} loading={this.state.loading} + onChange={this.handleTableChange} /> {/* 为了屏蔽ant modal 关闭后数据仍然遗留的问题*/}