浏览代码

Merge remote-tracking branch 'origin/dm' into dm

Roc 6 月之前
父节点
当前提交
ecaaa5f47f
共有 5 个文件被更改,包括 174 次插入37 次删除
  1. 37 11
      controllers/base_auth.go
  2. 2 1
      controllers/bi_dashboard.go
  3. 102 22
      controllers/sys_department.go
  4. 25 3
      models/data_manage/edb_info.go
  5. 8 0
      models/system/sys_group.go

+ 37 - 11
controllers/base_auth.go

@@ -522,26 +522,41 @@ func (c *BaseAuthController) Prepare() {
 					tokenStr := authorization
 					tokenArr := strings.Split(tokenStr, "=")
 					token := tokenArr[1]
+
+					// 找不到session, 也直接切CookieValue中的用户登录
 					session, err := system.GetSysSessionByToken(token)
-					if err != nil {
-						if utils.IsErrNoRow(err) {
-							c.JSON(models.BaseResponse{Ret: 408, Msg: "信息已变更,请重新登陆!", ErrMsg: "Token 信息已变更:Token: " + token}, false, false)
+					//if err != nil {
+					//	if utils.IsErrNoRow(err) {
+					//		c.JSON(models.BaseResponse{Ret: 408, Msg: "信息已变更,请重新登陆!", ErrMsg: "Token 信息已变更:Token: " + token}, false, false)
+					//		c.StopRun()
+					//		return
+					//	}
+					//	c.JSON(models.BaseResponse{Ret: 408, Msg: "网络异常,请稍后重试!", ErrMsg: "获取用户信息异常,Eerr:" + err.Error()}, false, false)
+					//	c.StopRun()
+					//	return
+					//}
+					//if session == nil {
+					//	c.JSON(models.BaseResponse{Ret: 408, Msg: "网络异常,请稍后重试!", ErrMsg: "sesson is empty "}, false, false)
+					//	c.StopRun()
+					//	return
+					//}
+					if err != nil || session == nil {
+						newLogin, e := services.UserLoginChange(cookieVal)
+						if e != nil {
+							c.JSON(models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}, false, false)
 							c.StopRun()
 							return
 						}
-						c.JSON(models.BaseResponse{Ret: 408, Msg: "网络异常,请稍后重试!", ErrMsg: "获取用户信息异常,Eerr:" + err.Error()}, false, false)
-						c.StopRun()
-						return
-					}
-					if session == nil {
-						c.JSON(models.BaseResponse{Ret: 408, Msg: "网络异常,请稍后重试!", ErrMsg: "sesson is empty "}, false, false)
+						c.JSON(models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}, false, false)
 						c.StopRun()
 						return
 					}
 
-					// CookieVal不匹配、token验证失败、token过期,那么以cookieVal的用户去登录并返回4014
+					// CookieVal不匹配、token验证失败、session以及redis中的token过期,那么以cookieVal的用户去登录并返回4014
 					account := utils.MD5(session.UserName)
-					if session.UserName != cookieVal || !utils.CheckToken(account, token) || time.Now().After(session.ExpiredTime) {
+					loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, session.Id)
+					loginCache, _ := utils.Rc.RedisString(loginKey)
+					if session.UserName != cookieVal || !utils.CheckToken(account, token) || time.Now().After(session.ExpiredTime) || (session.IsRemember != 1 && loginCache == ``) {
 						newLogin, e := services.UserLoginChange(cookieVal)
 						if e != nil {
 							c.JSON(models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}, false, false)
@@ -552,6 +567,17 @@ func (c *BaseAuthController) Prepare() {
 						c.StopRun()
 						return
 					}
+				} else {
+					// Token空了, 以Cookie为准重新登录
+					newLogin, e := services.UserLoginChange(cookieVal)
+					if e != nil {
+						c.JSON(models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}, false, false)
+						c.StopRun()
+						return
+					}
+					c.JSON(models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}, false, false)
+					c.StopRun()
+					return
 				}
 			}
 

+ 2 - 1
controllers/bi_dashboard.go

@@ -243,7 +243,8 @@ func (this *BIDaShboardController) DeleteDashboard() {
 		return
 	}
 
-	err = bi_dashboard.DelDashboard(req.BiDashboardId)
+	//如果该看板存在共享记录,则删除共享
+	err = bi_dashboard.DeleteDashboardGrant(req.BiDashboardId)
 	if err != nil {
 		br.Msg = "删除失败"
 		br.ErrMsg = "删除失败,Err:" + err.Error()

+ 102 - 22
controllers/sys_department.go

@@ -188,36 +188,116 @@ func (this *SysDepartmentController) ListDepartment() {
 		br.ErrMsg = "请登录,SysUser Is Empty"
 		return
 	}
-	list, err := system.GetDepartmentList()
-	if err != nil {
+	//list, err := system.GetDepartmentList()
+	//if err != nil {
+	//	br.Msg = "获取失败"
+	//	br.ErrMsg = "获取失败,Err:" + err.Error()
+	//	return
+	//}
+	//lenList := len(list)
+	//for i := 0; i < lenList; i++ {
+	//	departmentId := list[i].DepartmentId
+	//	groupList, err := system.GetSysGroupByDepartmentId(departmentId)
+	//	if err != nil {
+	//		br.Msg = "获取数据失败"
+	//		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+	//		return
+	//	}
+	//	list[i].Child = groupList
+	//	list[i].IsDepartment = true
+	//	for i2, sysGroup := range groupList {
+	//		teamList, err := system.GetSysTeamByDepartmentId(sysGroup.GroupId)
+	//		if err != nil {
+	//			br.Msg = "获取数据失败"
+	//			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+	//			return
+	//		}
+	//		groupList[i2].Child = teamList
+	//		groupList[i2].IsGroup = true
+	//	}
+	//}
+
+	// 获取部门
+	departments, e := system.GetDepartmentList()
+	if e != nil {
 		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
+		br.ErrMsg = fmt.Sprintf("获取部门失败, %v", e)
 		return
 	}
-	lenList := len(list)
-	for i := 0; i < lenList; i++ {
-		departmentId := list[i].DepartmentId
-		groupList, err := system.GetSysGroupByDepartmentId(departmentId)
-		if err != nil {
-			br.Msg = "获取数据失败"
-			br.ErrMsg = "获取数据失败,Err:" + err.Error()
-			return
+	// 获取分组和小组
+	groups, e := system.GetSysGroupList()
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = fmt.Sprintf("获取分组失败, %v", e)
+		return
+	}
+	departmentGroup := make(map[int][]*system.SysGroupList)
+	groupTeam := make(map[int][]*system.SysTeamList)
+	for _, v := range groups {
+		if departmentGroup[v.DepartmentId] == nil {
+			departmentGroup[v.DepartmentId] = make([]*system.SysGroupList, 0)
+		}
+		if v.ParentId == 0 {
+			departmentGroup[v.DepartmentId] = append(departmentGroup[v.DepartmentId], v)
+		}
+		if v.ParentId > 0 {
+			if groupTeam[v.ParentId] == nil {
+				groupTeam[v.ParentId] = make([]*system.SysTeamList, 0)
+			}
+			groupTeam[v.ParentId] = append(groupTeam[v.ParentId], &system.SysTeamList{
+				GroupId:    v.GroupId,
+				ParentId:   v.ParentId,
+				GroupName:  v.GroupName,
+				CreateTime: v.CreateTime,
+			})
 		}
-		list[i].Child = groupList
-		list[i].IsDepartment = true
-		for i2, sysGroup := range groupList {
-			teamList, err := system.GetSysTeamByDepartmentId(sysGroup.GroupId)
-			if err != nil {
-				br.Msg = "获取数据失败"
-				br.ErrMsg = "获取数据失败,Err:" + err.Error()
-				return
+	}
+
+	// 数据重组
+	for _, groups := range departmentGroup {
+		for _, g := range groups {
+			g.IsGroup = true
+			if groupTeam[g.GroupId] != nil {
+				g.Child = groupTeam[g.GroupId]
+			} else {
+				g.Child = make([]*system.SysTeamList, 0)
 			}
-			groupList[i2].Child = teamList
-			groupList[i2].IsGroup = true
 		}
 	}
+	for _, v := range departments {
+		v.IsDepartment = true
+		if departmentGroup[v.DepartmentId] != nil {
+			v.Child = departmentGroup[v.DepartmentId]
+		} else {
+			v.Child = make([]*system.SysGroupList, 0)
+		}
+	}
+
+	//lenList := len(list)
+	//for i := 0; i < lenList; i++ {
+	//	departmentId := list[i].DepartmentId
+	//	groupList, err := system.GetSysGroupByDepartmentId(departmentId)
+	//	if err != nil {
+	//		br.Msg = "获取数据失败"
+	//		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+	//		return
+	//	}
+	//	list[i].Child = groupList
+	//	list[i].IsDepartment = true
+	//	for i2, sysGroup := range groupList {
+	//		teamList, err := system.GetSysTeamByDepartmentId(sysGroup.GroupId)
+	//		if err != nil {
+	//			br.Msg = "获取数据失败"
+	//			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+	//			return
+	//		}
+	//		groupList[i2].Child = teamList
+	//		groupList[i2].IsGroup = true
+	//	}
+	//}
+
 	resp := new(system.SysDepartmentListResp)
-	resp.List = list
+	resp.List = departments
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"

+ 25 - 3
models/data_manage/edb_info.go

@@ -1202,12 +1202,23 @@ func ReplaceChartEdb(oldEdbInfo, newEdbInfo *EdbInfo) (relationEdbInfoIdList []i
 	{
 		//获取所有包含的计算指标
 		mappingList := make([]*EdbInfoCalculateMapping, 0)
-		msql := ` SELECT * FROM edb_info_calculate_mapping WHERE from_edb_info_id=?  GROUP BY edb_info_id `
-		err = to.Raw(msql, oldEdbInfo.EdbInfoId).Scan(&mappingList).Error
+		queryList := make([]*EdbInfoCalculateMapping, 0)
+		//fields := []string{"edb_info_calculate_mapping_id", "edb_info_id", "source", "source_name", "edb_code", "from_edb_info_id", "from_edb_code", "from_edb_name", "from_source", "from_source_name", "move_value", "sort", "create_time", "modify_time", "from_tag", "from_sub_source"}
+		//msql := fmt.Sprintf(` SELECT %s FROM edb_info_calculate_mapping WHERE from_edb_info_id=?  GROUP BY %s `, strings.Join(fields, ","), strings.Join(fields, ","))
+		msql := ` SELECT * FROM edb_info_calculate_mapping WHERE from_edb_info_id = ?`
+		err = to.Raw(msql, oldEdbInfo.EdbInfoId).Find(&queryList).Error
 		if err != nil {
 			errmsg = "获取计算指标关联基础指标信息失败:Err:" + err.Error()
 			return
 		}
+		exists := make(map[int]bool)
+		for _, v := range queryList {
+			if exists[v.EdbInfoId] {
+				continue
+			}
+			exists[v.EdbInfoId] = true
+			mappingList = append(mappingList, v)
+		}
 		replaceCalculateTotal = len(mappingList)
 		//计算指标
 		if len(mappingList) > 0 {
@@ -1235,12 +1246,23 @@ func ReplaceChartEdb(oldEdbInfo, newEdbInfo *EdbInfo) (relationEdbInfoIdList []i
 	{
 		//获取所有包含的计算指标
 		predictEdbConfList := make([]*PredictEdbConf, 0)
-		msql := ` SELECT * FROM predict_edb_conf WHERE source_edb_info_id=?  GROUP BY predict_edb_info_id `
+		queryList := make([]*PredictEdbConf, 0)
+		//fields := []string{"config_id", "predict_edb_info_id", "source_edb_info_id", "rule_type", "fixed_value", "value", "empty_type", "max_empty_type", "end_date", "modify_time", "create_time"}
+		//msql := fmt.Sprintf(` SELECT %s FROM predict_edb_conf WHERE source_edb_info_id=? GROUP BY %s `, strings.Join(fields, ","), strings.Join(fields, ","))
+		msql := ` SELECT * FROM predict_edb_conf WHERE source_edb_info_id = ?`
 		err = to.Raw(msql, oldEdbInfo.EdbInfoId).Scan(&predictEdbConfList).Error
 		if err != nil {
 			errmsg = "获取关联的预测指标信息失败:Err:" + err.Error()
 			return
 		}
+		exists := make(map[int]bool)
+		for _, v := range queryList {
+			if exists[v.PredictEdbInfoId] {
+				continue
+			}
+			exists[v.PredictEdbInfoId] = true
+			predictEdbConfList = append(predictEdbConfList, v)
+		}
 		replaceCalculateTotal += len(predictEdbConfList)
 
 		//替换预测指标的来源指标

+ 8 - 0
models/system/sys_group.go

@@ -116,6 +116,14 @@ type SysGroupList struct {
 	IsGroup      bool           `description:"是否为二级部门"`
 }
 
+func GetSysGroupList() (items []*SysGroupList, err error) {
+	// o := orm.NewOrm()
+	sql := `SELECT * FROM sys_group ORDER BY sort ASC, create_time ASC `
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DmSQL.Raw(sql).Find(&items).Error
+	return
+}
+
 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()