Browse Source

feat:yb15.3

Roc 1 year ago
parent
commit
41b7dbca89

+ 245 - 152
controllers/sys_admin.go

@@ -526,6 +526,7 @@ func (this *SysAdminController) Add() {
 	br.Msg = "新增成功"
 }
 
+// Edit
 // @Title 编辑系统用户
 // @Description 编辑系统用户接口
 // @Param	request	body system.SysuserEditReq true "type json string"
@@ -552,13 +553,17 @@ func (this *SysAdminController) Edit() {
 	}
 	//根据用户id获取用户信息
 	adminInfo, err := system.GetSysAdminById(req.AdminId)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "用户已被删除, 请刷新页面"
+			return
+		}
 		br.Msg = "获取数据失败"
 		br.ErrMsg = "获取系统用户数据失败,Err:" + err.Error() + ";AdminId:" + fmt.Sprint(req.AdminId)
 		return
 	}
 
-	//根据用户登录用户名获取用户信息
+	// 根据用户登录用户名获取用户信息
 	item, err := system.GetSysAdminByName(req.AdminName)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取数据失败"
@@ -569,6 +574,8 @@ func (this *SysAdminController) Edit() {
 		br.Msg = "账号名称已存在,请重新输入"
 		return
 	}
+
+	// 手机号
 	if item != nil {
 		if req.Mobile != "" && req.Mobile != item.Mobile {
 			mobileCount, err := system.GetSysAdminCountByMobile(req.Mobile, req.AdminId)
@@ -597,7 +604,8 @@ func (this *SysAdminController) Edit() {
 		}
 	}
 
-	var roleName, departmentName, groupName, teamName string
+	// 角色
+	var roleName string
 
 	roleItem, err := system.GetSysRoleById(req.RoleId)
 	if err != nil {
@@ -613,74 +621,6 @@ func (this *SysAdminController) Edit() {
 	if roleItem != nil {
 		roleName = roleItem.RoleName
 	}
-	if req.DepartmentId > 0 {
-		departmentItem, err := system.GetSysDepartmentById(req.DepartmentId)
-		if err != nil {
-			br.Msg = "获取数据失败"
-			br.ErrMsg = "获取部门数据失败,Err:" + err.Error()
-			return
-		}
-		if departmentItem != nil {
-			departmentName = departmentItem.DepartmentName
-		}
-	}
-
-	if req.GroupId > 0 {
-		groupItem, err := system.GetSysGroupById(req.GroupId)
-		if err != nil {
-			br.Msg = "获取数据失败"
-			br.ErrMsg = "获取分组数据失败,Err:" + err.Error()
-			return
-		}
-		if groupItem != nil {
-			groupName = groupItem.GroupName
-		}
-	}
-
-	if req.TeamId > 0 {
-		teamItem, err := system.GetSysGroupById(req.TeamId)
-		if err != nil {
-			br.Msg = "获取数据失败"
-			br.ErrMsg = "获取小组数据失败,Err:" + err.Error()
-			return
-		}
-		if teamItem != nil {
-			teamName = teamItem.GroupName
-		}
-	}
-
-	pwdByte, err := base64.StdEncoding.DecodeString(req.Password)
-	if err != nil {
-		br.Msg = "解析数据失败"
-		br.ErrMsg = "解析数据失败,Err:" + err.Error()
-		return
-	}
-	adminItem, err := system.GetSysAdminById(req.AdminId)
-	if err != nil {
-		br.Msg = "获取数据失败"
-		br.ErrMsg = "获取系统用户数据失败,Err:" + err.Error()
-		return
-	}
-	var newPwd string
-	pwdStr := string(pwdByte)
-	if adminInfo.Password != pwdStr {
-		pwdStr = strings.ToLower(pwdStr)
-		if pwdStr == "" {
-			if adminItem == nil {
-				br.Msg = "系统用户信息不存在"
-				return
-			}
-			newPwd = adminItem.Password
-		} else {
-			if !utils.CheckPwd(pwdStr) {
-				br.Msg = "密码格式错误,请重新输入"
-				return
-			}
-			newPwd = utils.MD5(pwdStr)
-		}
-	} else {
-		newPwd = adminItem.Password
-	}
 
 	// 员工工号
 	req.EmployeeId = strings.TrimSpace(req.EmployeeId)
@@ -702,31 +642,7 @@ func (this *SysAdminController) Edit() {
 		}
 	}
 
-	admin := new(system.Admin)
-	admin.AdminId = req.AdminId
-	admin.AdminName = req.AdminName
-	admin.RealName = req.RealName
-	admin.Password = newPwd
-	admin.LastUpdatedPasswordTime = time.Now().Format(utils.FormatDateTime)
-	admin.Enabled = 1
-	admin.LastLoginTime = time.Now().Format(utils.FormatDateTime)
-	admin.CreatedTime = time.Now()
-	admin.LastUpdatedTime = time.Now().Format(utils.FormatDateTime)
-	admin.Mobile = req.Mobile
-	admin.RoleType = 0
-	admin.RoleId = req.RoleId
-	admin.RoleName = roleName
-	admin.DepartmentId = req.DepartmentId
-	admin.DepartmentName = departmentName
-	admin.AdminAvatar = req.AdminAvatar
-	if req.TeamId <= 0 {
-		admin.GroupId = req.GroupId
-		admin.GroupName = groupName
-	} else {
-		admin.GroupId = req.TeamId
-		admin.GroupName = teamName
-	}
-	admin.Enabled = req.Enabled
+	// 管理权限
 	var authority int
 	if roleItem.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN {
 		authority = 3
@@ -743,23 +659,33 @@ func (this *SysAdminController) Edit() {
 			authority = 0
 		}
 	}
-	admin.Authority = authority
-	admin.Position = req.Position
-	admin.RoleTypeCode = roleItem.RoleTypeCode
-	admin.Province = req.Province
-	admin.ProvinceCode = req.ProvinceCode
-	admin.City = req.City
-	admin.CityCode = req.CityCode
-	admin.EmployeeId = req.EmployeeId
-	err = system.EditAdmin(admin)
-
-	//用户被禁用的情况下,需要将他对应的token给过期
-	//if adminItem.Enabled == 1 && req.Enabled == 0 {
-	//	_ = system.ExpiredSysSessionByAdminId(adminItem.AdminId)
-	//}
 
+	adminInfo.AdminName = req.AdminName
+	adminInfo.RealName = req.RealName
+	adminInfo.LastUpdatedTime = time.Now().Format(utils.FormatDateTime)
+	adminInfo.Mobile = req.Mobile
+	adminInfo.RoleId = req.RoleId
+	adminInfo.RoleName = roleName
+	adminInfo.Enabled = req.Enabled
+	adminInfo.Authority = authority
+	adminInfo.Position = req.Position
+	adminInfo.RoleTypeCode = roleItem.RoleTypeCode
+	adminInfo.Province = req.Province
+	adminInfo.ProvinceCode = req.ProvinceCode
+	adminInfo.City = req.City
+	adminInfo.CityCode = req.CityCode
+	adminInfo.EmployeeId = req.EmployeeId
+	cols := []string{
+		"AdminName", "RealName", "LastUpdatedTime", "Mobile", "RoleId", "RoleName", "Enabled", "Authority",
+		"Position", "RoleTypeCode", "Province", "ProvinceCode", "City", "CityCode", "EmployeeId",
+	}
+	if e := adminInfo.Update(cols); e != nil {
+		br.Msg = "编辑失败"
+		br.ErrMsg = "更新用户信息失败, Err:" + e.Error()
+		return
+	}
 	// 用户登出
-	logOutSystemUser(adminItem.AdminId)
+	logOutSystemUser(adminInfo.AdminId)
 
 	// 研究方向分组
 	if e := services.UpdateResearcherTagGroup(req.AdminId, req.ResearchGroupIds); e != nil {
@@ -768,47 +694,6 @@ func (this *SysAdminController) Edit() {
 		return
 	}
 
-	{
-		sysUserItem, err := system.GetSysAdminById(req.AdminId)
-		fmt.Println("sysUserItem:", sysUserItem)
-		fmt.Println("req:", req)
-		if err != nil {
-			br.Msg = "获取数据失败"
-			br.ErrMsg = "获取分组数据失败,Err:" + err.Error()
-			return
-		}
-		if req.TeamId > 0 {
-			//修改客户关联的分组
-			if req.TeamId != adminItem.GroupId {
-				err = company.ModifyCompanyGroupId(req.AdminId, req.TeamId)
-				if err != nil {
-					br.Msg = "编辑失败"
-					br.ErrMsg = "ModifyCompanyGroupId,Err:" + err.Error()
-					return
-				}
-			}
-		} else {
-			if req.GroupId != adminItem.GroupId {
-				//修改客户关联的分组
-				err = company.ModifyCompanyGroupId(req.AdminId, req.GroupId)
-				if err != nil {
-					br.Msg = "编辑失败"
-					br.ErrMsg = "ModifyCompanyGroupId,Err:" + err.Error()
-					return
-				}
-			}
-		}
-
-		if req.DepartmentId != adminItem.DepartmentId {
-			err = company.ModifyCompanyDepartmentId(req.AdminId, req.DepartmentId)
-			if err != nil {
-				br.Msg = "编辑失败"
-				br.ErrMsg = "ModifyCompanyDepartmentId,Err:" + err.Error()
-				return
-			}
-		}
-	}
-
 	// 清楚系统用户列表缓存key
 	utils.Rc.Delete(utils.CACHE_KEY_ADMIN)
 	utils.Rc.Delete(utils.CACHE_KEY_ADMIN_ID)
@@ -1035,3 +920,211 @@ func logOutSystemUser(adminId int) {
 	// 退出随手办公小程序
 	_ = system.UnBindAdminRecordByUserId(adminId)
 }
+
+// Move
+// @Title 移动分组
+// @Description 移动分组
+// @Param	request	body system.SysUserMoveReq true "type json string"
+// @Success 200 编辑成功
+// @router /sysuser/move [post]
+func (this *SysAdminController) Move() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req system.SysUserMoveReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.AdminId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = "参数有误, AdminId"
+		return
+	}
+	if req.DepartmentId <= 0 {
+		br.Msg = "请选择部门"
+		return
+	}
+
+	adminInfo, err := system.GetSysAdminById(req.AdminId)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取数据失败"
+		br.ErrMsg = "获取系统用户数据失败,Err:" + err.Error() + ";AdminId:" + fmt.Sprint(req.AdminId)
+		return
+	}
+
+	var departmentName, groupName, teamName string
+	if req.DepartmentId > 0 {
+		departmentItem, err := system.GetSysDepartmentById(req.DepartmentId)
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "获取部门数据失败,Err:" + err.Error()
+			return
+		}
+		if departmentItem != nil {
+			departmentName = departmentItem.DepartmentName
+		}
+	}
+	if req.GroupId > 0 {
+		groupItem, err := system.GetSysGroupById(req.GroupId)
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "获取分组数据失败,Err:" + err.Error()
+			return
+		}
+		if groupItem != nil {
+			groupName = groupItem.GroupName
+		}
+	}
+	if req.TeamId > 0 {
+		teamItem, err := system.GetSysGroupById(req.TeamId)
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "获取小组数据失败,Err:" + err.Error()
+			return
+		}
+		if teamItem != nil {
+			teamName = teamItem.GroupName
+		}
+	}
+
+	adminInfo.DepartmentId = req.DepartmentId
+	adminInfo.DepartmentName = departmentName
+	if req.TeamId <= 0 {
+		adminInfo.GroupId = req.GroupId
+		adminInfo.GroupName = groupName
+	} else {
+		adminInfo.GroupId = req.TeamId
+		adminInfo.GroupName = teamName
+	}
+	adminInfo.LastUpdatedTime = time.Now().Format(utils.FormatDateTime)
+	if e := adminInfo.Update([]string{"DepartmentId", "DepartmentName", "GroupId", "GroupName", "LastUpdatedTime"}); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "更新系统用户分组失败, Err: " + e.Error()
+		return
+	}
+
+	// 修改客户关联的分组
+	{
+		if req.TeamId > 0 {
+			if req.TeamId != adminInfo.GroupId {
+				err = company.ModifyCompanyGroupId(req.AdminId, req.TeamId)
+				if err != nil {
+					br.Msg = "编辑失败"
+					br.ErrMsg = "ModifyCompanyGroupId,Err:" + err.Error()
+					return
+				}
+			}
+		} else {
+			if req.GroupId != adminInfo.GroupId {
+				err = company.ModifyCompanyGroupId(req.AdminId, req.GroupId)
+				if err != nil {
+					br.Msg = "编辑失败"
+					br.ErrMsg = "ModifyCompanyGroupId,Err:" + err.Error()
+					return
+				}
+			}
+		}
+
+		if req.DepartmentId != adminInfo.DepartmentId {
+			err = company.ModifyCompanyDepartmentId(req.AdminId, req.DepartmentId)
+			if err != nil {
+				br.Msg = "编辑失败"
+				br.ErrMsg = "ModifyCompanyDepartmentId,Err:" + err.Error()
+				return
+			}
+		}
+	}
+
+	// 清除系统用户列表缓存key
+	_ = utils.Rc.Delete(utils.CACHE_KEY_ADMIN)
+	_ = utils.Rc.Delete(utils.CACHE_KEY_ADMIN_ID)
+
+	br.Ret = 200
+	br.Success = true
+	br.IsAddLog = true
+	br.Msg = "操作成功"
+}
+
+// ResetPass
+// @Title 重置密码
+// @Description 重置密码
+// @Param	request	body system.SysUserResetPassReq true "type json string"
+// @Success 200 编辑成功
+// @router /sysuser/reset_pass [post]
+func (this *SysAdminController) ResetPass() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req system.SysUserResetPassReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.AdminId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = "参数有误, AdminId"
+		return
+	}
+	req.Password = strings.TrimSpace(req.Password)
+	if req.Password == "" {
+		br.Msg = "新密码不能为空"
+		return
+	}
+	req.RePassword = strings.TrimSpace(req.RePassword)
+	if req.RePassword == "" {
+		br.Msg = "确认密码不能为空"
+		return
+	}
+	if req.Password != req.RePassword {
+		br.Msg = "两次输入密码不一致,请重新填写"
+		return
+	}
+
+	adminInfo, err := system.GetSysAdminById(req.AdminId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "用户已被删除, 请刷新页面"
+			return
+		}
+		br.Msg = "获取数据失败"
+		br.ErrMsg = "获取系统用户数据失败,Err:" + err.Error() + ";AdminId:" + fmt.Sprint(req.AdminId)
+		return
+	}
+
+	b, err := base64.StdEncoding.DecodeString(req.Password)
+	if err != nil {
+		br.Msg = "解析数据失败"
+		br.ErrMsg = "解析数据失败,Err:" + err.Error()
+		return
+	}
+	pwd := string(b)
+	pwd = strings.ToLower(pwd)
+	pwd = utils.MD5(pwd)
+
+	adminInfo.Password = pwd
+	adminInfo.LastUpdatedPasswordTime = time.Now().Format(utils.FormatDateTime)
+	adminInfo.LastUpdatedTime = time.Now().Format(utils.FormatDateTime)
+	if e := adminInfo.Update([]string{"Password", "LastUpdatedPasswordTime", "LastUpdatedTime"}); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "更新系统用户分组失败, Err: " + e.Error()
+		return
+	}
+
+	// 清除系统用户列表缓存key
+	_ = utils.Rc.Delete(utils.CACHE_KEY_ADMIN)
+	_ = utils.Rc.Delete(utils.CACHE_KEY_ADMIN_ID)
+
+	br.Ret = 200
+	br.Success = true
+	br.IsAddLog = true
+	br.Msg = "重置密码成功"
+}

+ 70 - 0
controllers/sys_group.go

@@ -156,3 +156,73 @@ func (this *SysGroupController) Delete() {
 	br.Success = true
 	br.Msg = "删除成功"
 }
+
+// SetSort
+// @Title 分组排序
+// @Description  分组排序
+// @Param	request	body system.SysGroupEditReq true "type json string"
+// @Success 200 修改成功
+// @router /group/set_sort [post]
+func (this *SysGroupController) SetSort() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req system.SysGroupSortReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	// 部门排序
+	if len(req.DepartmentIds) > 0 {
+		updateArr := make([]*system.DepartmentSort, 0)
+		for k, d := range req.DepartmentIds {
+			updateArr = append(updateArr, &system.DepartmentSort{
+				DepartmentId: d,
+				Sort:         k + 1,
+			})
+		}
+		if e := system.MultiUpdateDepartmentSort(updateArr); e != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "批量更新部门排序失败, Err: " + e.Error()
+			return
+		}
+	}
+
+	// 分组排序/小组排序
+	if len(req.GroupIds) > 0 || len(req.TeamIds) > 0 {
+		updateArr := make([]*system.GroupSort, 0)
+		if len(req.GroupIds) > 0 {
+			for k, g := range req.GroupIds {
+				updateArr = append(updateArr, &system.GroupSort{
+					GroupId: g,
+					Sort:    k + 1,
+				})
+			}
+		}
+		if len(req.TeamIds) > 0 {
+			for k, t := range req.TeamIds {
+				updateArr = append(updateArr, &system.GroupSort{
+					GroupId: t,
+					Sort:    k + 1,
+				})
+			}
+		}
+		if e := system.MultiUpdateGroupSort(updateArr); e != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "批量更新分组排序失败, Err: " + e.Error()
+			return
+		}
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}

+ 20 - 13
models/system/sys_admin.go

@@ -48,7 +48,7 @@ func GetSysuserList(condition string, pars []interface{}, startSize, pageSize in
 	if condition != "" {
 		sql += condition
 	}
-	sql += `ORDER BY created_time DESC LIMIT ?,?`
+	sql += `ORDER BY enabled DESC, last_updated_time DESC, created_time DESC LIMIT ?,?`
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }
@@ -145,18 +145,12 @@ func AddAdmin(item *Admin) (err error) {
 }
 
 type SysuserEditReq struct {
-	AdminId      int    `description:"系统用户id"`
-	AdminName    string `description:"系统用户名称"`
-	AdminAvatar  string `description:"用户头像"`
-	RealName     string `description:"系统用户姓名"`
-	Password     string `description:"密码"`
-	Mobile       string `description:"手机号"`
-	RoleId       int    `description:"角色id"`
-	DepartmentId int    `description:"部门id"`
-	GroupId      int    `description:"分组id"`
-	TeamId       int    `description:"小组id"`
-	Enabled      int    `description:"1:有效,0:禁用"`
-	//Authority    int    `description:"管理权限,0:无,1:部门负责人,2:小组负责人"`
+	AdminId          int    `description:"系统用户id"`
+	AdminName        string `description:"系统用户名称"`
+	RealName         string `description:"系统用户姓名"`
+	Mobile           string `description:"手机号"`
+	RoleId           int    `description:"角色id"`
+	Enabled          int    `description:"1:有效,0:禁用"`
 	Position         string `description:"职位"`
 	ResearchGroupIds string `description:"研究方向分组IDs"`
 	Province         string `description:"省"`
@@ -166,6 +160,19 @@ type SysuserEditReq struct {
 	EmployeeId       string `description:"员工工号(钉钉/每刻报销)"`
 }
 
+type SysUserMoveReq struct {
+	AdminId      int `description:"系统用户id"`
+	DepartmentId int `description:"部门id"`
+	GroupId      int `description:"分组id"`
+	TeamId       int `description:"小组id"`
+}
+
+type SysUserResetPassReq struct {
+	AdminId    int    `description:"系统用户id"`
+	Password   string `description:"密码"`
+	RePassword string `description:"重复密码"`
+}
+
 // 用户状态编辑
 type SysuserEditEnabledReq struct {
 	AdminId int `description:"系统用户id"`

+ 30 - 3
models/system/sys_department.go

@@ -12,6 +12,7 @@ type SysDepartmentAddReq struct {
 type SysDepartment struct {
 	DepartmentId   int       `orm:"column(department_id);pk" description:"部门Id"`
 	DepartmentName string    `description:"部门名称"`
+	Sort           int       `description:"排序"`
 	CreateTime     time.Time `description:"创建时间"`
 }
 
@@ -91,7 +92,7 @@ type SysDepartmentList struct {
 
 func GetDepartmentList() (items []*SysDepartmentList, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM sys_department ORDER BY create_time ASC `
+	sql := `SELECT * FROM sys_department ORDER BY sort ASC, create_time ASC `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
@@ -103,7 +104,7 @@ func GetDepartmentListByIds(departmentIds string) (items []*SysDepartmentList, e
 	if departmentIds != "" {
 		sql += `and department_id in(` + departmentIds + `) `
 	}
-	sql += ` ORDER BY create_time ASC `
+	sql += ` ORDER BY sort ASC, create_time ASC `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
@@ -113,8 +114,34 @@ type SysDepartmentListResp struct {
 }
 
 func GetSysDepartmentAll() (item []*SysDepartment, err error) {
-	sql := `SELECT * FROM sys_department ORDER BY department_id ASC `
+	sql := `SELECT * FROM sys_department ORDER BY sort ASC, department_id ASC `
 	o := orm.NewOrm()
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
 }
+
+type DepartmentSort struct {
+	DepartmentId int
+	Sort         int
+}
+
+func MultiUpdateDepartmentSort(items []*DepartmentSort) (err error) {
+	if len(items) == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	p, err := o.Raw("UPDATE sys_department SET sort = ? WHERE department_id = ?").Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close()
+	}()
+	for _, v := range items {
+		_, err = p.Exec(v.Sort, v.DepartmentId)
+		if err != nil {
+			return
+		}
+	}
+	return
+}

+ 77 - 8
models/system/sys_group.go

@@ -15,6 +15,7 @@ type SysGroup struct {
 	DepartmentId int       `description:"部门Id"`
 	ParentId     int       `description:"父级Id"`
 	GroupName    string    `description:"分组名称"`
+	Sort         int       `description:"排序"`
 	CreateTime   time.Time `description:"创建时间"`
 }
 
@@ -81,7 +82,7 @@ func DeleteSysGroup(groupId int) (err error) {
 	return
 }
 
-//因前端显示需要,TopId字段用来当做一级部门id,DepartmentId为当前分组id
+// 因前端显示需要,TopId字段用来当做一级部门id,DepartmentId为当前分组id
 type SysGroupList struct {
 	GroupId      int            `orm:"column(group_id);pk" json:"DepartmentId" description:"分组ID"`
 	ParentId     int            `json:"ParentId" description:"父级ID"`
@@ -93,7 +94,7 @@ type SysGroupList struct {
 }
 
 func GetSysGroupByDepartmentId(departmentId int) (items []*SysGroupList, err error) {
-	sql := `SELECT * FROM sys_group WHERE department_id=? AND parent_id=0`
+	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
@@ -101,7 +102,7 @@ func GetSysGroupByDepartmentId(departmentId int) (items []*SysGroupList, err err
 
 // GetSysGroupListByDepartmentId 获取该部门下的所有分组(包含大小分组,不包含 “无” 这个分组)
 func GetSysGroupListByDepartmentId(departmentId int) (items []*SysGroupList, err error) {
-	sql := `SELECT * FROM sys_group WHERE department_id=? AND group_name<>'无' `
+	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
@@ -115,7 +116,7 @@ func ClearSysUserGroup(groupId int) (err error) {
 }
 
 func GetSysGroupByDirectorId(directorId int) (items []*SysGroupList, err error) {
-	sql := `SELECT * FROM sys_group WHERE group_id=? `
+	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
@@ -123,7 +124,7 @@ func GetSysGroupByDirectorId(directorId int) (items []*SysGroupList, err error)
 
 // 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=?`
+	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
@@ -131,7 +132,7 @@ func GetSysGroupByGroupId(groupId int) (items []*SysGroupList, err error) {
 
 // GetChildSysGroupByGroupId 通过上级分组id获取下级的分组id
 func GetChildSysGroupByGroupId(groupId int) (items []*SysGroup, err error) {
-	sql := `SELECT * FROM sys_group WHERE parent_id=?`
+	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
@@ -147,13 +148,81 @@ type SysFullGroup struct {
 	CreateTime      time.Time `description:"创建时间"`
 }
 
-//GetFullGroup 获取完整的分组信息
+// 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`
+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:"销售名称"`
+}

+ 1 - 1
models/system/sys_team.go

@@ -70,7 +70,7 @@ type SysTeamList struct {
 }
 
 func GetSysTeamByDepartmentId(groupId int) (items []*SysTeamList, err error) {
-	sql := `SELECT * FROM sys_group WHERE parent_id=? `
+	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