Browse Source

同步系统数据

xyxie 2 months ago
parent
commit
7bad277a74

+ 132 - 0
models/system/sys_department.go

@@ -0,0 +1,132 @@
+package system
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type SysDepartmentAddReq struct {
+	DepartmentName string `description:"部门名称"`
+}
+
+type SysDepartment struct {
+	DepartmentId   int       `orm:"column(department_id);pk" description:"部门Id"`
+	DepartmentName string    `description:"部门名称"`
+	Sort           int       `description:"排序"`
+	CreateTime     time.Time `description:"创建时间"`
+}
+
+func GetSysDepartmentCount(departmentName string) (count int, err error) {
+	sql := `SELECT COUNT(1) AS count FROM sys_department WHERE department_name=? `
+	o := orm.NewOrm()
+	err = o.Raw(sql, departmentName).QueryRow(&count)
+	return
+}
+
+func AddSysDepartment(item *SysDepartment) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+type SysDepartmentEditReq struct {
+	DepartmentId   int    `description:"部门Id"`
+	DepartmentName string `description:"部门名称"`
+}
+
+func GetSysDepartmentById(departmentId int) (item *SysDepartment, err error) {
+	sql := `SELECT * FROM sys_department WHERE department_id=? `
+	o := orm.NewOrm()
+	err = o.Raw(sql, departmentId).QueryRow(&item)
+	return
+}
+
+func GetSysDepartmentByName(departmentName string) (item *SysDepartment, err error) {
+	sql := `SELECT * FROM sys_department WHERE department_name=? `
+	o := orm.NewOrm()
+	err = o.Raw(sql, departmentName).QueryRow(&item)
+	return
+}
+
+func ModifySysDepartment(departmentName string, departmentId 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_department SET department_name=? WHERE department_id=? `
+	_, err = to.Raw(sql, departmentName, departmentId).Exec()
+	if err != nil {
+		return
+	}
+	sql = `UPDATE admin SET department_name=? WHERE department_id=? `
+	_, err = to.Raw(sql, departmentName, departmentId).Exec()
+	return
+}
+
+type SysDepartmentDeleteReq struct {
+	DepartmentId int `description:"部门Id"`
+}
+
+func DeleteSysDepartment(departmentId int) (err error) {
+	sql := `DELETE FROM sys_department WHERE department_id=? `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, departmentId).Exec()
+	return
+}
+
+func GetSysDepartmentAll() (item []*SysDepartment, err error) {
+	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
+}
+
+// DepartmentUserTree 部门用户树
+type DepartmentUserTree struct {
+	NodeId   int                   `description:"节点ID"`
+	NodeType int                   `description:"节点类型:1-部门;2-分组;3-用户"`
+	NodeName string                `description:"节点名称"`
+	Children []*DepartmentUserTree `description:"子节点"`
+}
+
+// 获取所有部门信息
+func GetAllSysDepartment() (items []*SysDepartment, err error) {
+	sql := `SELECT * FROM sys_department `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 203 - 0
models/system/sys_group.go

@@ -0,0 +1,203 @@
+package system
+
+import (
+	"eta/eta_forum_task/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
+}
+
+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
+}
+
+// GetSysGroupByGroupIds 销售主管用,查找销售主管所在大组的名称
+func GetSysGroupByGroupIds(groupIds []int) (items []*SysGroup, err error) {
+	sql := `SELECT * FROM sys_group WHERE group_id in (` + utils.GetOrmInReplace(len(groupIds)) + `) ORDER BY sort ASC, create_time ASC`
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, groupIds).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 GetAllSysGroup() (items []*SysGroup, err error) {
+	sql := `SELECT * FROM sys_group `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 280 - 0
models/system/sys_role.go

@@ -0,0 +1,280 @@
+package system
+
+import (
+	"eta/eta_forum_task/utils"
+	"time"
+
+	"github.com/beego/beego/v2/client/orm"
+)
+
+type SysRoleAddReq struct {
+	RoleName string `description:"角色名称"`
+	RoleType string `description:"角色类型"`
+}
+
+type SysRole struct {
+	RoleId       int       `orm:"column(role_id);pk" description:"角色ID"`
+	RoleName     string    `description:"角色名称"`
+	RoleType     string    `description:"角色类型"`
+	RoleTypeCode string    `description:"角色类型编码"`
+	RoleLevel    int       `description:"角色等级:0-表示一级角色,每个账号只能绑定一个一级角色 ,1-表示二级角色,每个账号可以绑定多个二级 角色"`
+	CreateTime   time.Time `description:"创建时间"`
+	ModifyTime   time.Time
+}
+
+type SysRoleItem struct {
+	RoleId       int       `orm:"column(role_id);pk" description:"角色ID"`
+	RoleName     string    `description:"角色名称"`
+	RoleType     string    `description:"角色类型"`
+	RoleTypeCode string    `description:"角色类型编码"`
+	CreateTime   time.Time `description:"创建时间"`
+	RoleLevel    int       `description:"角色等级:0-表示一级角色,每个账号只能绑定一个一级角色 ,1-表示二级角色,每个账号可以绑定多个二级 角色"`
+}
+
+func GetSysRoleCount(roleName string) (count int, err error) {
+	sql := `SELECT COUNT(1) AS count FROM sys_role WHERE role_name=? `
+	o := orm.NewOrm()
+	err = o.Raw(sql, roleName).QueryRow(&count)
+	return
+}
+
+func AddSysRole(item *SysRole) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+type SysRoleEditReq struct {
+	RoleId   int    `description:"角色ID"`
+	RoleName string `description:"角色名称"`
+	RoleType string `description:"角色类型"`
+}
+
+func GetSysRoleById(roleId int) (item *SysRoleItem, err error) {
+	sql := `SELECT * FROM sys_role WHERE role_id=? `
+	o := orm.NewOrm()
+	err = o.Raw(sql, roleId).QueryRow(&item)
+	return
+}
+
+func GetRoleInfoById(roleId int) (item *SysRole, err error) {
+	sql := `SELECT * FROM sys_role WHERE role_id=? `
+	o := orm.NewOrm()
+	err = o.Raw(sql, roleId).QueryRow(&item)
+	return
+}
+
+func GetSysRoleByName(roleName string) (item *SysRoleItem, err error) {
+	sql := `SELECT * FROM sys_role WHERE role_name=? `
+	o := orm.NewOrm()
+	err = o.Raw(sql, roleName).QueryRow(&item)
+	return
+}
+
+// GetSysRoleByRoleTypeCode role_type_code
+func GetSysRoleByRoleTypeCode(roleTypeCode string) (item *SysRoleItem, err error) {
+	sql := `SELECT * FROM sys_role WHERE role_type_code=? `
+	o := orm.NewOrm()
+	err = o.Raw(sql, roleTypeCode).QueryRow(&item)
+	return
+}
+func ModifySysRole(roleName, roleType, roleTypeCode string, groupId int) (err error) {
+	sql := `UPDATE sys_role SET role_name=?,role_type=?,role_type_code=?,modify_time=NOW() WHERE role_id=? `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, roleName, roleType, roleTypeCode, groupId).Exec()
+	return
+}
+
+type SysRoleDeleteReq struct {
+	RoleId int `description:"角色ID"`
+}
+
+func DeleteSysRole(roleId int) (err error) {
+	sql := `DELETE FROM sys_role WHERE role_id=? `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, roleId).Exec()
+	return
+}
+
+func GetSysRoleListCount(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS count FROM sys_role WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
+func GetSysRoleList(condition string, pars []interface{}, startSize, pageSize int) (items []*SysRoleItem, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM sys_role WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += `ORDER BY modify_time DESC LIMIT ?,?`
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+type RoleMenu struct {
+	MenuId int    `description:"导航唯一标识"`
+	Name   string `description:"导航名称"`
+	NameEn string `description:"导航名称(英文)"`
+}
+
+type RoleMenuList struct {
+	MenuId    int    `description:"导航唯一标识"`
+	Name      string `description:"导航名称"`
+	NameEn    string `description:"导航名称(英文)"`
+	Child     []*RoleMenu
+	CheckList []int
+}
+
+type RoleMenuListResp struct {
+	List []*RoleMenuList
+}
+
+func GetRoleMenuList() (items []*RoleMenuList, err error) {
+	sql := `SELECT * FROM sys_menu WHERE parent_id=0 ORDER BY sort ASC `
+	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
+	return
+}
+
+func GetRoleMenuByParentId(parentId int) (items []*RoleMenu, err error) {
+	sql := `SELECT * FROM sys_menu WHERE parent_id=? ORDER BY sort ASC `
+	_, err = orm.NewOrm().Raw(sql, parentId).QueryRows(&items)
+	return
+}
+
+func GetCheckListRoleMenu(roleId, parentId int) (items []*RoleMenuList, err error) {
+	sql := ` SELECT b.menu_id FROM sys_role_menu AS a
+				INNER JOIN sys_menu AS b ON a.menu_id=b.menu_id
+				WHERE a.role_id=? AND a.type = 0
+				AND b.parent_id=? `
+	_, err = orm.NewOrm().Raw(sql, roleId, parentId).QueryRows(&items)
+	return
+}
+
+type RoleMenusAddReq struct {
+	RoleId          int    `description:"角色ID"`
+	MenuIdStr       string `description:"MenuId,多个用英文逗号隔开"`
+	MenuButtonIdStr string `description:"menu_button_id,多个用英文逗号隔开"`
+}
+
+func DeleteRoleMenuByRoleId(roleId int) (err error) {
+	sql := `DELETE FROM sys_role_menu WHERE role_id=? `
+	_, err = orm.NewOrm().Raw(sql, roleId).Exec()
+	return
+
+}
+
+type SysRoleMenu struct {
+	RoleMenuId int `orm:"column(role_menu_id);pk" description:"关联id"`
+	RoleId     int
+	MenuId     int
+	Type       int `description:"类型:0-全选;1-半选(此字段仅用于前端的回显)"`
+}
+
+func AddSysRoleMenu(item *SysRoleMenu) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+// CreateMultiSysRoleMenu 删除并新增角色权限
+func CreateMultiSysRoleMenu(roleId int, items []*SysRoleMenu) (err error) {
+	if roleId == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	tx, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = tx.Rollback()
+			return
+		}
+		_ = tx.Commit()
+	}()
+
+	sql := `DELETE FROM sys_role_menu WHERE role_id = ?`
+	_, err = tx.Raw(sql, roleId).Exec()
+	if err != nil {
+		return
+	}
+
+	if len(items) > 0 {
+		_, err = tx.InsertMulti(len(items), items)
+	}
+	return
+}
+
+func GetSysRoleAll(levelFlag bool) (items []*SysRoleItem, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM sys_role WHERE 1=1`
+	if levelFlag {
+		sql += ` and role_level = 0`
+	}
+	sql += ` ORDER BY create_time DESC `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+type SysRoleAllResp struct {
+	List []*SysRoleItem
+}
+
+// GetEnglishAuthRoleIds 获取英文权限角色IDs
+func GetEnglishAuthRoleIds(roleCodes []string) (roleIds []int, err error) {
+	if len(roleCodes) == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT role_id FROM sys_role WHERE role_type_code IN (` + utils.GetOrmInReplace(len(roleCodes)) + `)`
+	_, err = o.Raw(sql, roleCodes).QueryRows(&roleIds)
+	return
+}
+
+// GetSysRoleMenuByRoleId 获取角色关联菜单
+func GetSysRoleMenuByRoleId(roleId int) (items []*SysRoleMenu, err error) {
+	sql := `SELECT
+				*
+			FROM
+				sys_role_menu
+			WHERE
+				role_id = ?`
+	_, err = orm.NewOrm().Raw(sql, roleId).QueryRows(&items)
+	return
+}
+
+// GetEnglishAuthRoleItems 获取英文权限角色
+func GetEnglishAuthRoleItems(roleCodes []string) (items []*SysRole, err error) {
+	if len(roleCodes) == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT * FROM sys_role WHERE role_type_code IN (` + utils.GetOrmInReplace(len(roleCodes)) + `)`
+	_, err = o.Raw(sql, roleCodes).QueryRows(&items)
+	return
+}
+
+func GetSysRoleByIdList(id []int) (items []*SysRole, err error) {
+	if len(id) == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT * FROM sys_role WHERE role_id IN (` + utils.GetOrmInReplace(len(id)) + `)`
+	_, err = o.Raw(sql, id).QueryRows(&items)
+	return
+}
+
+// 获取所有角色信息
+func GetAllSysRole() (list []*SysRole, err error) {
+	sql := `SELECT * FROM sys_role `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}

+ 9 - 0
services/eta_forum/eta_forum_hub_lib.go

@@ -30,6 +30,15 @@ func AdminBatchSaveLib(req string) (resp *models.BaseResponse, err error) {
 	return
 }
 
+func PostLib(urlStr, req string) (resp *models.BaseResponse, err error) {
+	_, resultByte, err := post(req, urlStr)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	return
+}
+
 // post
 func post(paramStr string, urlStr string) (resp *models.BaseResponse, result []byte, err error) {
 	if utils.ETA_FORUM_HUB_URL == "" {

+ 115 - 0
services/system.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"encoding/json"
 	"eta/eta_forum_task/models"
+	"eta/eta_forum_task/models/system"
 	"eta/eta_forum_task/services/alarm_msg"
 	"eta/eta_forum_task/services/eta_forum"
 	"eta/eta_forum_task/utils"
@@ -58,5 +59,119 @@ func AdminBatchSaveTask(cont context.Context) (err error) {
 		return
 	}
 	fmt.Println("同步管理员数据完成, 同步管理员数据完成:", len(adminList), "条")
+	go GroupSyncTask()
+	go RoleSyncTask()
+	go DepartmentSyncTask()
+	return
+}
+
+type SysGroupSyncReq struct {
+	List []*system.SysGroup
+}
+
+// 同步分组信息
+func GroupSyncTask() (err error) {
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg(utils.APP_NAME_CN+"同步部门分组数据失败"+time.Now().Format("2006-01-02 15:04:05")+"<br/>"+err.Error(), 3)
+		}
+	}()
+	//查询用户信息
+	list, err := system.GetAllSysGroup()
+	if err != nil {
+		err = fmt.Errorf("获取分组信息失败,Err:" + err.Error())
+		return
+	}
+	var req SysGroupSyncReq
+	req.List = list
+	reqJson, err := json.Marshal(req)
+	if err != nil {
+		err = fmt.Errorf("参数解析异常,Err:" + err.Error())
+		return
+	}
+	respItem, err := eta_forum.PostLib("/v1/system/group/sync", string(reqJson))
+	if err != nil {
+		err = fmt.Errorf("上传角色信息失败,Err:" + err.Error())
+		return
+	}
+	if respItem.Ret != 200 {
+		err = fmt.Errorf("上传角色信息失败,Err:%v,errMsg:%v", respItem.Msg, respItem.ErrMsg)
+		return
+	}
+	fmt.Println("同步部门分组数据成功:", len(list), "条")
+	return
+}
+
+type DepartmentSyncReq struct {
+	List []*system.SysDepartment
+}
+
+// 同步部门信息
+func DepartmentSyncTask() (err error) {
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg(utils.APP_NAME_CN+"同步部门数据失败"+time.Now().Format("2006-01-02 15:04:05")+"<br/>"+err.Error(), 3)
+		}
+	}()
+	//查询用户信息
+	list, err := system.GetAllSysDepartment()
+	if err != nil {
+		err = fmt.Errorf("获取部门信息失败,Err:" + err.Error())
+		return
+	}
+	var req DepartmentSyncReq
+	req.List = list
+	reqJson, err := json.Marshal(req)
+	if err != nil {
+		err = fmt.Errorf("参数解析异常,Err:" + err.Error())
+		return
+	}
+	respItem, err := eta_forum.PostLib("/v1/system/department/sync", string(reqJson))
+	if err != nil {
+		err = fmt.Errorf("同步部门信息失败,Err:" + err.Error())
+		return
+	}
+	if respItem.Ret != 200 {
+		err = fmt.Errorf("同步部门信息失败,Err:%v,errMsg:%v", respItem.Msg, respItem.ErrMsg)
+		return
+	}
+	fmt.Println("同步部门数据成功:", len(list), "条")
+	return
+}
+
+type SysRoleSyncReq struct {
+	List []*system.SysRole
+}
+
+// 同步角色信息
+func RoleSyncTask() (err error) {
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg(utils.APP_NAME_CN+"同步角色信息失败"+time.Now().Format("2006-01-02 15:04:05")+"<br/>"+err.Error(), 3)
+		}
+	}()
+	//查询用户信息
+	list, err := system.GetAllSysRole()
+	if err != nil {
+		err = fmt.Errorf("获取角色信息失败,Err:" + err.Error())
+		return
+	}
+	var req SysRoleSyncReq
+	req.List = list
+	reqJson, err := json.Marshal(req)
+	if err != nil {
+		err = fmt.Errorf("参数解析异常,Err:" + err.Error())
+		return
+	}
+	respItem, err := eta_forum.PostLib("/v1/system/role/sync", string(reqJson))
+	if err != nil {
+		err = fmt.Errorf("同步角色信息失败,Err:" + err.Error())
+		return
+	}
+	if respItem.Ret != 200 {
+		err = fmt.Errorf("同步角色信息失败,Err:%v,errMsg:%v", respItem.Msg, respItem.ErrMsg)
+		return
+	}
+	fmt.Println("同步角色数据成功:", len(list), "条")
 	return
 }

+ 1 - 1
services/task.go

@@ -17,7 +17,7 @@ func Task() {
 	task.AddTask("定时更新图表数据到eta社区", etaForumChartUpdate)
 
 	// 每隔1小时,定时更新管理员数据到eta社区
-	etaForumAdminUpdate := task.NewTask("etaForumAdminUpdate", "0 10 * * * *", AdminBatchSaveTask)
+	etaForumAdminUpdate := task.NewTask("etaForumAdminUpdate", "0 0 */1 * * *", AdminBatchSaveTask)
 	task.AddTask("定时更新管理员数据到eta社区", etaForumAdminUpdate)
 
 	task.StartTask()