Przeglądaj źródła

同步角色,分组等数据

xyxie 4 miesięcy temu
rodzic
commit
2d3c524b5a

+ 38 - 0
controllers/system/sys_department.go

@@ -85,3 +85,41 @@ func (this *SysDepartmentController) Delete() {
 	br.Success = true
 	br.Msg = "删除成功"
 }
+
+// Sync
+// @Title 新增或者编辑系统用户
+// @Description 新增系统用户接口
+// @Param	request	body system.SysuserAddReq true "type json string"
+// @Success 200 新增成功
+// @router /department/sync [post]
+func (this *SysDepartmentController) Sync() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req system.SysDepartmentSyncReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if len(req.List) == 0 {
+		br.Msg = "请输入组合"
+		br.IsSendEmail = false
+		return
+	}
+
+	err, isSendEmail := services.SyncSysDepartment(&req)
+	if err != nil {
+		br.Msg = "新增或者更新部门失败"
+		br.ErrMsg = "新增或者更新部门失败, Err:" + err.Error()
+		br.IsSendEmail = isSendEmail
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "新增成功"
+}

+ 38 - 0
controllers/system/sys_group.go

@@ -85,3 +85,41 @@ func (this *SysGroupController) Delete() {
 	br.Success = true
 	br.Msg = "删除成功"
 }
+
+// Sync
+// @Title 新增或者编辑系统用户
+// @Description 新增系统用户接口
+// @Param	request	body system.SysuserAddReq true "type json string"
+// @Success 200 新增成功
+// @router /group/sync [post]
+func (this *SysGroupController) Sync() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req system.SysGroupAddReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if len(req.List) == 0 {
+		br.Msg = "请输入组合"
+		br.IsSendEmail = false
+		return
+	}
+
+	err, isSendEmail := services.SyncSysGroup(&req)
+	if err != nil {
+		br.Msg = "新增或者更新分组失败"
+		br.ErrMsg = "新增或者更新分组失败, Err:" + err.Error()
+		br.IsSendEmail = isSendEmail
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "新增成功"
+}

+ 38 - 0
controllers/system/sys_role.go

@@ -85,3 +85,41 @@ func (this *SysRoleController) Delete() {
 	br.Success = true
 	br.Msg = "删除成功"
 }
+
+// Sync
+// @Title 新增或者编辑系统用户
+// @Description 新增系统用户接口
+// @Param	request	body system.SysuserAddReq true "type json string"
+// @Success 200 新增成功
+// @router /role/sync [post]
+func (this *SysRoleController) Sync() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req system.SysRoleSyncReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if len(req.List) == 0 {
+		br.Msg = "请输入组合"
+		br.IsSendEmail = false
+		return
+	}
+
+	err, isSendEmail := services.SyncSysRole(&req)
+	if err != nil {
+		br.Msg = "新增或者更新角色失败"
+		br.ErrMsg = "新增或者更新角色失败, Err:" + err.Error()
+		br.IsSendEmail = isSendEmail
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "新增成功"
+}

+ 3 - 2
models/chart_collect/chart.go

@@ -106,14 +106,15 @@ type ChartCollectEditReq struct {
 func GetChartCollectPageByCondition(condition string, pars []interface{}, currentIndex, pageSize int) (item []*ChartCollectView, err error) {
 	o := orm.NewOrm()
 	//sql := ` SELECT * FROM chart_collect WHERE 1=1 `
-	sql := `SELECT a.*,b.chart_name_en,b.chart_name, b.unique_code, b.chart_image FROM chart_collect AS a
+	sql := `SELECT a.chart_collect_id, a.user_id, a.business_code, a.real_name, a.chart_info_id, a.collect_classify_id, a.chart_source, a.create_time, a.modify_time, max(a.collect_time) as collect_time,
+       b.chart_name_en,b.chart_name, b.unique_code, b.chart_image, b.sys_user_id, b.sys_user_real_name FROM chart_collect AS a
                                                                     INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
 			WHERE 1=1 
 			`
 	if condition != "" {
 		sql += condition
 	}
-	sql += ` GROUP BY a.chart_info_id  limit ?,?`
+	sql += ` GROUP BY a.chart_info_id  ORDER BY a.collect_time desc  limit ?,?`
 	_, err = o.Raw(sql, pars, currentIndex, pageSize).QueryRows(&item)
 	return
 }

+ 19 - 0
models/system/sys_department.go

@@ -102,3 +102,22 @@ func (item *SysDepartment) Update(cols []string) (err error) {
 	_, err = o.Update(item, cols...)
 	return
 }
+
+type SysDepartmentSyncReq struct {
+	List []*SysDepartment
+}
+
+// 获取所有部门信息
+func GetAllSysDepartment() (items []*SysDepartment, err error) {
+	sql := `SELECT * FROM sys_department `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// Update 更新用户基础信息
+func (item *SysDepartment) AddOrUpdate() (err error) {
+	o := orm.NewOrm()
+	_, err = o.InsertOrUpdate(item)
+	return
+}

+ 7 - 0
models/system/sys_group.go

@@ -166,6 +166,13 @@ func GetAllSysGroupByGroupId(groupId int) (items []*SysGroup, err error) {
 	return
 }
 
+func GetAllSysGroup() (items []*SysGroup, err error) {
+	sql := `SELECT * FROM sys_group `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 func GetParentIdFromGroup(gid int) (items *int, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT parent_id FROM sys_group WHERE group_id=? `

+ 18 - 0
models/system/sys_role.go

@@ -56,3 +56,21 @@ func DeleteSysRole(roleId int) (err error) {
 	_, err = o.Raw(sql, roleId).Exec()
 	return
 }
+
+type SysRoleSyncReq struct {
+	List []*SysRole
+}
+
+// 获取所有角色信息
+func GetSysRoleList() (list []*SysRole, err error) {
+	sql := `SELECT * FROM sys_role `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
+func (item *SysRole) AddOrUpdate() (err error) {
+	o := orm.NewOrm()
+	_, err = o.InsertOrUpdate(item)
+	return
+}

+ 27 - 0
routers/commentsRouter.go

@@ -133,6 +133,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_forum_hub/controllers/system:SysDepartmentController"] = append(beego.GlobalControllerRouter["eta/eta_forum_hub/controllers/system:SysDepartmentController"],
+        beego.ControllerComments{
+            Method: "Sync",
+            Router: `/department/sync`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_forum_hub/controllers/system:SysGroupController"] = append(beego.GlobalControllerRouter["eta/eta_forum_hub/controllers/system:SysGroupController"],
         beego.ControllerComments{
             Method: "Delete",
@@ -151,6 +160,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_forum_hub/controllers/system:SysGroupController"] = append(beego.GlobalControllerRouter["eta/eta_forum_hub/controllers/system:SysGroupController"],
+        beego.ControllerComments{
+            Method: "Sync",
+            Router: `/group/sync`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_forum_hub/controllers/system:SysRoleController"] = append(beego.GlobalControllerRouter["eta/eta_forum_hub/controllers/system:SysRoleController"],
         beego.ControllerComments{
             Method: "Delete",
@@ -169,6 +187,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_forum_hub/controllers/system:SysRoleController"] = append(beego.GlobalControllerRouter["eta/eta_forum_hub/controllers/system:SysRoleController"],
+        beego.ControllerComments{
+            Method: "Sync",
+            Router: `/role/sync`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_forum_hub/controllers:AdminController"] = append(beego.GlobalControllerRouter["eta/eta_forum_hub/controllers:AdminController"],
         beego.ControllerComments{
             Method: "BatchSave",

+ 2 - 0
routers/router.go

@@ -40,6 +40,8 @@ func init() {
 		web.NSNamespace("/system",
 			web.NSInclude(
 				&system.SysRoleController{},
+				&system.SysGroupController{},
+				&system.SysDepartmentController{},
 			),
 		),
 		web.NSNamespace("/eta_trial",

+ 126 - 0
services/system.go

@@ -209,3 +209,129 @@ func BatchAddOrUpdateAdmin(reqAdmin *system.AdminBatchAddReq) (err error, isSend
 	}
 	return
 }
+
+// 同步分组数据
+func SyncSysGroup(req *system.SysGroupAddReq) (err error, isSendEmail bool) {
+	defer func() {
+		if err != nil {
+			utils.FileLog.Info("新增或者更新分组, SyncSysGroup  Err: " + err.Error())
+			go alarm_msg.SendAlarmMsg("新增或者更新分组, SyncSysGroup  Err: "+err.Error(), 3)
+		}
+	}()
+	isSendEmail = true
+	if len(req.List) == 0 {
+		return
+	}
+	groupList, err := system.GetAllSysGroup()
+	if err != nil {
+		err = fmt.Errorf("获取账号数据失败,%v", err)
+		return
+	}
+	// 查询所有的账号,如果不在同步的列表里,则删除
+	deleteGroupList := make(map[int]int)
+	for _, v := range groupList {
+		deleteGroupList[v.GroupId] = v.GroupId
+	}
+
+	for _, v := range req.List {
+		if v.GroupId > 0 {
+			delete(deleteGroupList, v.GroupId)
+		}
+		err = v.AddOrUpdate()
+		if err != nil {
+			return
+		}
+	}
+	for _, v := range deleteGroupList {
+		err = system.DeleteSysGroup(v)
+		if err != nil {
+			err = fmt.Errorf("删除失败,Err:%s", err.Error())
+			return
+		}
+	}
+	return
+}
+
+// 同步部门数据
+func SyncSysDepartment(req *system.SysDepartmentSyncReq) (err error, isSendEmail bool) {
+	defer func() {
+		if err != nil {
+			utils.FileLog.Info("新增或者更新部门, SyncSysDepartment  Err: " + err.Error())
+			go alarm_msg.SendAlarmMsg("新增或者更新部门, SyncSysDepartment  Err: "+err.Error(), 3)
+		}
+	}()
+	isSendEmail = true
+	if len(req.List) == 0 {
+		return
+	}
+	list, err := system.GetAllSysDepartment()
+	if err != nil {
+		err = fmt.Errorf("获取账号数据失败,%v", err)
+		return
+	}
+	// 查询所有的账号,如果不在同步的列表里,则删除
+	deleteList := make(map[int]int)
+	for _, v := range list {
+		deleteList[v.DepartmentId] = v.DepartmentId
+	}
+
+	for _, v := range req.List {
+		if v.DepartmentId > 0 {
+			delete(deleteList, v.DepartmentId)
+		}
+		err = v.AddOrUpdate()
+		if err != nil {
+			return
+		}
+	}
+	for _, v := range deleteList {
+		err = system.DeleteSysDepartment(v)
+		if err != nil {
+			err = fmt.Errorf("删除失败,Err:%s", err.Error())
+			return
+		}
+	}
+	return
+}
+
+// 同步角色数据
+func SyncSysRole(req *system.SysRoleSyncReq) (err error, isSendEmail bool) {
+	defer func() {
+		if err != nil {
+			utils.FileLog.Info("同步角色数据, SyncSysRole  Err: " + err.Error())
+			go alarm_msg.SendAlarmMsg("同步角色数据, SyncSysRole  Err: "+err.Error(), 3)
+		}
+	}()
+	isSendEmail = true
+	if len(req.List) == 0 {
+		return
+	}
+	list, err := system.GetSysRoleList()
+	if err != nil {
+		err = fmt.Errorf("获取账号数据失败,%v", err)
+		return
+	}
+	// 查询所有的账号,如果不在同步的列表里,则删除
+	deleteList := make(map[int]int)
+	for _, v := range list {
+		deleteList[v.RoleId] = v.RoleId
+	}
+
+	for _, v := range req.List {
+		if v.RoleId > 0 {
+			delete(deleteList, v.RoleId)
+		}
+		err = v.AddOrUpdate()
+		if err != nil {
+			return
+		}
+	}
+	for _, v := range deleteList {
+		err = system.DeleteSysRole(v)
+		if err != nil {
+			err = fmt.Errorf("删除失败,Err:%s", err.Error())
+			return
+		}
+	}
+	return
+}