|
@@ -0,0 +1,254 @@
|
|
|
+package system
|
|
|
+
|
|
|
+import (
|
|
|
+ "eta/eta_forum_admin/utils"
|
|
|
+ "github.com/beego/beego/v2/client/orm"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+type SysGroupAddReq struct {
|
|
|
+ DepartmentId int `description:"部门Id"`
|
|
|
+ GroupName string `description:"分组名称,多个用英文逗号隔开"`
|
|
|
+}
|
|
|
+
|
|
|
+type SysGroup struct {
|
|
|
+ GroupId int `orm:"column(group_id);pk" description:"分组ID"`
|
|
|
+ DepartmentId int `description:"部门Id"`
|
|
|
+ ParentId int `description:"父级Id"`
|
|
|
+ GroupName string `description:"分组名称"`
|
|
|
+ Sort int `description:"排序"`
|
|
|
+ CreateTime time.Time `description:"创建时间"`
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysGroupCount(departmentId int, groupName string) (count int, err error) {
|
|
|
+ sql := `SELECT COUNT(1) AS count FROM sys_group WHERE department_id=? AND group_name=? `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ err = o.Raw(sql, departmentId, groupName).QueryRow(&count)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func AddSysGroup(item *SysGroup) (lastId int64, err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ lastId, err = o.Insert(item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type SysGroupEditReq struct {
|
|
|
+ GroupId int `description:"分组ID"`
|
|
|
+ GroupName string `description:"分组名称"`
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysGroupById(groupId int) (item *SysGroup, err error) {
|
|
|
+ sql := `SELECT * FROM sys_group WHERE group_id=? `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ err = o.Raw(sql, groupId).QueryRow(&item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysGroupByName(groupName string) (item *SysGroup, err error) {
|
|
|
+ sql := `SELECT * FROM sys_group WHERE group_name=? `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ err = o.Raw(sql, groupName).QueryRow(&item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func ModifySysGroup(groupName string, groupId int) (err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ to, err := o.Begin()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ _ = to.Rollback()
|
|
|
+ } else {
|
|
|
+ _ = to.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ sql := `UPDATE sys_group SET group_name=? WHERE group_id=? `
|
|
|
+ _, err = to.Raw(sql, groupName, groupId).Exec()
|
|
|
+ sql = `UPDATE admin SET group_name=? WHERE group_id=? `
|
|
|
+ _, err = to.Raw(sql, groupName, groupId).Exec()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type SysGroupDeleteReq struct {
|
|
|
+ GroupId int `description:"分组ID"`
|
|
|
+}
|
|
|
+
|
|
|
+func DeleteSysGroup(groupId int) (err error) {
|
|
|
+ sql := `DELETE FROM sys_group WHERE group_id=? `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql, groupId).Exec()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 因前端显示需要,TopId字段用来当做一级部门id,DepartmentId为当前分组id
|
|
|
+type SysGroupList struct {
|
|
|
+ GroupId int `orm:"column(group_id);pk" json:"DepartmentId" description:"分组ID"`
|
|
|
+ ParentId int `json:"ParentId" description:"父级ID"`
|
|
|
+ DepartmentId int `json:"TopId" description:"部门Id"`
|
|
|
+ GroupName string `json:"DepartmentName" description:"分组名称"`
|
|
|
+ Child []*SysTeamList `description:"小组"`
|
|
|
+ CreateTime time.Time `description:"创建时间"`
|
|
|
+ IsGroup bool `description:"是否为二级部门"`
|
|
|
+}
|
|
|
+
|
|
|
+type SysTeamList struct {
|
|
|
+ GroupId int `orm:"column(group_id);pk" json:"DepartmentId" description:"小组ID"`
|
|
|
+ ParentId int `json:"GroupId" description:"小组Id"`
|
|
|
+ GroupName string `json:"DepartmentName" description:"分组名称"`
|
|
|
+ CreateTime time.Time `description:"创建时间"`
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysGroupByDepartmentId(departmentId int) (items []*SysGroupList, err error) {
|
|
|
+ sql := `SELECT * FROM sys_group WHERE department_id=? AND parent_id=0 ORDER BY sort ASC, create_time ASC`
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql, departmentId).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// GetSysGroupListByDepartmentId 获取该部门下的所有分组(包含大小分组,不包含 “无” 这个分组)
|
|
|
+func GetSysGroupListByDepartmentId(departmentId int) (items []*SysGroupList, err error) {
|
|
|
+ sql := `SELECT * FROM sys_group WHERE department_id=? AND group_name<>'无' ORDER BY sort ASC, create_time ASC`
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql, departmentId).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func ClearSysUserGroup(groupId int) (err error) {
|
|
|
+ sql := `UPDATE admin SET group_id=0,group_name='' WHERE group_id=? `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql, groupId).Exec()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysGroupByDirectorId(directorId int) (items []*SysGroupList, err error) {
|
|
|
+ sql := `SELECT * FROM sys_group WHERE group_id=? ORDER BY sort ASC, create_time ASC`
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql, directorId).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysGroupByGroupIds(groupIds []int) (items []*SysGroupList, err error) {
|
|
|
+ lenArr := len(groupIds)
|
|
|
+ if lenArr == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sql := `SELECT * FROM sys_group WHERE group_id IN (` + utils.GetOrmInReplace(lenArr) + `) ORDER BY sort ASC, create_time ASC`
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql, groupIds).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// GetSysGroupByGroupId 销售主管用,查找销售主管所在大组的名称
|
|
|
+func GetSysGroupByGroupId(groupId int) (items []*SysGroupList, err error) {
|
|
|
+ sql := `SELECT * FROM sys_group WHERE department_id=2 AND parent_id=0 AND group_id=? ORDER BY sort ASC, create_time ASC`
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql, groupId).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// GetChildSysGroupByGroupId 通过上级分组id获取下级的分组id
|
|
|
+func GetChildSysGroupByGroupId(groupId int) (items []*SysGroup, err error) {
|
|
|
+ sql := `SELECT * FROM sys_group WHERE parent_id=? ORDER BY sort ASC, create_time ASC`
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql, groupId).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type SysFullGroup struct {
|
|
|
+ GroupId int `orm:"column(group_id);pk" description:"分组ID"`
|
|
|
+ DepartmentId int `description:"部门Id"`
|
|
|
+ ParentId int `description:"父级Id"`
|
|
|
+ GroupName string `description:"分组名称"`
|
|
|
+ ParentGroupName string `description:"父级分组名称"`
|
|
|
+ DepartmentName string `description:"部门名称"`
|
|
|
+ CreateTime time.Time `description:"创建时间"`
|
|
|
+}
|
|
|
+
|
|
|
+// GetFullGroup 获取完整的分组信息
|
|
|
+func GetFullGroup() (list []*SysFullGroup, err error) {
|
|
|
+ sql := `SELECT s.*,g.group_name as parent_group_name , d.department_name
|
|
|
+from sys_group s
|
|
|
+LEFT JOIN sys_group g on s.parent_id=g.group_id
|
|
|
+LEFT JOIN sys_department d on s.department_id=d.department_id ORDER BY s.sort ASC, s.create_time ASC`
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql).QueryRows(&list)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type SysGroupSortReq struct {
|
|
|
+ //ParentId int `description:"上级部门/分组ID"`
|
|
|
+ DepartmentIds []int `description:"移动后的一级ID排序"`
|
|
|
+ GroupIds []int `description:"移动后的二级ID排序"`
|
|
|
+ TeamIds []int `description:"移动后的三级ID排序"`
|
|
|
+}
|
|
|
+
|
|
|
+type GroupSort struct {
|
|
|
+ GroupId int
|
|
|
+ Sort int
|
|
|
+}
|
|
|
+
|
|
|
+func MultiUpdateGroupSort(items []*GroupSort) (err error) {
|
|
|
+ if len(items) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ o := orm.NewOrm()
|
|
|
+ p, err := o.Raw("UPDATE sys_group SET sort = ? WHERE group_id = ?").Prepare()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ _ = p.Close()
|
|
|
+ }()
|
|
|
+ for _, v := range items {
|
|
|
+ _, err = p.Exec(v.Sort, v.GroupId)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetGroupByDepartmentId(departmentId int) (list []*SysFullGroup, err error) {
|
|
|
+ sql := `SELECT
|
|
|
+ s.*, g.group_name AS parent_group_name,
|
|
|
+ d.department_name
|
|
|
+ FROM
|
|
|
+ sys_group s
|
|
|
+ LEFT JOIN sys_group g ON s.parent_id = g.group_id
|
|
|
+ LEFT JOIN sys_department d ON s.department_id = d.department_id
|
|
|
+ WHERE
|
|
|
+ s.department_id = ?
|
|
|
+ ORDER BY
|
|
|
+ s.sort ASC,
|
|
|
+ s.create_time ASC`
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql, departmentId).QueryRows(&list)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type RoadshowGroupResp struct {
|
|
|
+ List []RoadshowGroups
|
|
|
+}
|
|
|
+
|
|
|
+type RoadshowGroups struct {
|
|
|
+ GroupId int `description:"分组ID"`
|
|
|
+ GroupName string `description:"分组名称"`
|
|
|
+ Child []RoadshowGroupSellers `description:"销售"`
|
|
|
+}
|
|
|
+
|
|
|
+type RoadshowGroupSellers struct {
|
|
|
+ GroupId int `description:"大组ID"`
|
|
|
+ TeamId int `description:"小组ID"`
|
|
|
+ AdminId int `description:"销售ID"`
|
|
|
+ AdminName string `description:"销售名称"`
|
|
|
+}
|
|
|
+
|
|
|
+func GetAllSysGroupByGroupId(groupId int) (items []*SysGroup, err error) {
|
|
|
+ sql := `SELECT * FROM sys_group WHERE parent_id=? OR parent_id = ? ORDER BY sort ASC, create_time ASC`
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql, groupId, groupId).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|