소스 검색

批量同步账号

xyxie 2 달 전
부모
커밋
2e4e313055
5개의 변경된 파일154개의 추가작업 그리고 1개의 파일을 삭제
  1. 38 0
      controllers/admin.go
  2. 12 0
      models/system/admin.go
  3. 9 0
      routers/commentsRouter.go
  4. 7 1
      services/elastic/chart_collect.go
  5. 88 0
      services/system.go

+ 38 - 0
controllers/admin.go

@@ -104,3 +104,41 @@ func (this *AdminController) Delete() {
 	br.Success = true
 	br.Msg = "删除成功"
 }
+
+// BatchSave
+// @Title 批量修改账号
+// @Description 批量修改账号
+// @Param	request	body system.SysuserAddReq true "type json string"
+// @Success 200 新增成功
+// @router /batch_save [post]
+func (this *AdminController) BatchSave() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req system.AdminBatchAddReq
+	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.BatchAddOrUpdateAdmin(&req)
+	if err != nil {
+		br.Msg = "新增或者更新用户失败"
+		br.ErrMsg = "新增或者更新用户失败, Err:" + err.Error()
+		br.IsSendEmail = isSendEmail
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "新增成功"
+}

+ 12 - 0
models/system/admin.go

@@ -306,3 +306,15 @@ type AdminDeleteReq struct {
 	AdminName    string
 	BusinessCode string `description:"商家编码"`
 }
+
+type AdminBatchAddReq struct {
+	List []*Admin
+}
+
+// GetAllAdminList 根据用户id列表获取系统用户列表
+func GetAllAdminList() (items []*Admin, err error) {
+	sql := `SELECT * FROM admin `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 9 - 0
routers/commentsRouter.go

@@ -169,6 +169,15 @@ func init() {
             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",
+            Router: `/batch_save`,
+            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: "Delete",

+ 7 - 1
services/elastic/chart_collect.go

@@ -87,7 +87,13 @@ func SearchChartCollectData(indexName, keywordStr string, userId int, permission
 	// 分页查询
 	queryMap["from"] = from
 	queryMap["size"] = size
-
+	queryMap["sort"] = []map[string]interface{}{
+		map[string]interface{}{
+			"CollectTime": map[string]interface{}{
+				"order": "desc",
+			},
+		},
+	}
 	request := client.Search(indexName).Source(queryMap) // sets the JSON request
 
 	searchMap := make(map[string]string)

+ 88 - 0
services/system.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_forum_hub/services/alarm_msg"
 	"eta/eta_forum_hub/utils"
 	"fmt"
+	"time"
 )
 
 // 新增或者更新角色
@@ -121,3 +122,90 @@ func AddOrUpdateGroup(req *system.SysGroupAddReq) (err error, isSendEmail bool)
 	}
 	return
 }
+
+// 批量更新账号
+func BatchAddOrUpdateAdmin(reqAdmin *system.AdminBatchAddReq) (err error, isSendEmail bool) {
+	defer func() {
+		if err != nil {
+			utils.FileLog.Info("新增或者更新账号, BatchAddOrUpdateAdmin  Err: " + err.Error())
+			go alarm_msg.SendAlarmMsg("新增或者更新账号, BatchAddOrUpdateAdmin  Err: "+err.Error(), 3)
+		}
+	}()
+	isSendEmail = true
+	if len(reqAdmin.List) == 0 {
+		return
+	}
+	// 查询所有的账号,如果不在同步的列表里,则删除
+	deleteAdminList := make(map[string]int)
+
+	adminList, err := system.GetAllAdminList()
+	if err != nil {
+		err = fmt.Errorf("获取账号数据失败,%v", err)
+		return
+	}
+	adminMap := make(map[string]*system.Admin)
+	for _, v := range adminList {
+		deleteAdminList[v.AdminName] = v.AdminId
+		adminMap[v.AdminName] = v
+	}
+	for _, req := range reqAdmin.List {
+		adminItem, ok := adminMap[req.AdminName]
+		if ok {
+			delete(deleteAdminList, req.AdminName)
+		} else {
+			adminItem = new(system.Admin)
+		}
+		adminItem.AdminName = req.AdminName
+		adminItem.RealName = req.RealName
+		adminItem.Password = req.Password
+		adminItem.LastUpdatedPasswordTime = time.Now().Format(utils.FormatDateTime)
+		adminItem.Enabled = req.Enabled
+		adminItem.LastUpdatedTime = time.Now().Format(utils.FormatDateTime)
+		adminItem.Mobile = req.Mobile
+		adminItem.RoleType = req.RoleType
+		adminItem.RoleId = req.RoleId
+		adminItem.RoleName = req.RoleName
+		adminItem.RoleTypeCode = req.RoleTypeCode
+		adminItem.DepartmentId = req.DepartmentId
+		adminItem.DepartmentName = req.DepartmentName
+		adminItem.AdminAvatar = req.AdminAvatar
+		adminItem.GroupId = req.GroupId
+		adminItem.GroupName = req.GroupName
+
+		adminItem.Role = req.Role
+		adminItem.EmployeeId = req.EmployeeId
+		adminItem.Email = req.Email
+		adminItem.Authority = req.Authority
+		adminItem.Position = req.Position
+		adminItem.Province = req.Province
+		adminItem.ProvinceCode = req.ProvinceCode
+		adminItem.City = req.City
+		adminItem.CityCode = req.CityCode
+		adminItem.TelAreaCode = req.TelAreaCode
+		adminItem.IsLdap = req.IsLdap
+		//admin.BusinessCode = req.BusinessCode
+		if !ok {
+			adminItem.CreatedTime = time.Now()
+			adminItem.LastLoginTime = time.Now().Format(utils.FormatDateTime)
+			err = system.AddAdmin(adminItem)
+			if err != nil {
+				err = fmt.Errorf("新增失败,Err:%s", err.Error())
+				return
+			}
+		} else {
+			err = adminItem.Update([]string{})
+			if err != nil {
+				err = fmt.Errorf("更新失败,Err:%s", err.Error())
+				return
+			}
+		}
+	}
+	for _, v := range deleteAdminList {
+		err = system.DeleteSysuser(v)
+		if err != nil {
+			err = fmt.Errorf("删除失败,Err:%s", err.Error())
+			return
+		}
+	}
+	return
+}