package one import ( "fmt" "github.com/gin-gonic/gin" "github.com/tealeg/xlsx/v3" "zhiyuan/pkg/app" "zhiyuan/pkg/param" "zhiyuan/pkg/utils" "zhiyuan/services/admin" "zhiyuan/services/material/pkg" "zhiyuan/services/user" ) func AdminImport(c *gin.Context) { file, err := c.FormFile("file") if err != nil { app.Error(c, fmt.Sprintf("get form err: %s", err.Error())) return } fileExt := utils.FileExt(file.Filename) attachKey := utils.RandomStr() + fileExt file.Filename = "data/" + attachKey if err := c.SaveUploadedFile(file, file.Filename); err != nil { app.Error(c, fmt.Sprintf("上传文件失败%s", err.Error())) return } wb, err := xlsx.OpenFile(file.Filename) if err != nil { app.Error(c, err.Error()) return } sh, ok := wb.Sheet["Sheet1"] if !ok { fmt.Println("Sheet does not exist") return } adminMap := make(map[string]int, 0) if adminList, _ := admin.GetAdmins(nil, nil, app.Page{}, nil); adminList != nil { for _, v := range adminList { adminMap[v.Username] = v.ID } } districtMap := make(map[string]int) for _, v := range param.Params.District { districtMap[v.Name] = v.ID } shopMap := map[string]int{ "安欣家": 1, "昇吉家": 2, "德配": 3, "玖悦会": 4, } pkgMap := make(map[string]int) if pkgList, err := pkg.GetPkgs(nil, nil, app.Page{}, nil); err == nil { for _, v := range pkgList { pkgMap[v.PkgName] = v.ID } } siteID := 1 sh.ForEachRow(func(r *xlsx.Row) error { if r.GetCoordinate() <= 1 { return nil } if projectStart, err := r.GetCell(21).GetTime(false); err == nil { projectStart = projectStart.AddDate(0, 1, 0) fmt.Println(utils.ToStr(utils.DateParseUnix(utils.DateT(projectStart, "YYYY-MM-DD"), "Y-m-d"))) } userMap := map[string]interface{}{ "name": r.GetCell(4).String(), "phone": r.GetCell(5).String(), "site_id": siteID, } userID, err := user.InsertOne(userMap) if err != nil { return nil } houseMap := map[string]interface{}{ "user_id": userID, "province": 360000, "city": 360100, "pkg_id": pkgMap[r.GetCell(2).String()], "address": r.GetCell(3).String(), "link_name": r.GetCell(4).String(), "link_phone": r.GetCell(5).String(), "shop_id": shopMap[r.GetCell(17).String()], } if r.GetCell(1).String() != "" { houseMap["district"] = districtMap[r.GetCell(1).String()] } designer := r.GetCell(6).String() if designer != "" { if adminMap[designer] > 0 { houseMap["designer"] = adminMap[designer] } else { if adminID, err := admin.InsertOne(map[string]interface{}{"username": designer, "role_ids": 2, "deleted_at": 1}); err == nil { //admin.AddRoleByAdmin(utils.ToInt(adminID), []int{2}) adminMap[designer] = utils.ToInt(adminID) houseMap["designer"] = utils.ToInt(adminID) } } } salesman := r.GetCell(7).String() if salesman != "" { if adminMap[salesman] > 0 { houseMap["salesman"] = adminMap[salesman] } else { if adminID, err := admin.InsertOne(map[string]interface{}{"username": salesman, "role_ids": 3, "deleted_at": 1}); err == nil { //admin.AddRoleByAdmin(utils.ToInt(adminID), []int{3}) adminMap[salesman] = utils.ToInt(adminID) houseMap["salesman"] = utils.ToInt(adminID) } } } projectManager := r.GetCell(12).String() if projectManager != "" { if adminMap[projectManager] > 0 { houseMap["project_manager"] = adminMap[projectManager] } else { if adminID, err := admin.InsertOne(map[string]interface{}{"username": projectManager, "role_ids": 4, "deleted_at": 1}); err == nil { //admin.AddRoleByAdmin(utils.ToInt(adminID), []int{4}) adminMap[projectManager] = utils.ToInt(adminID) houseMap["project_manager"] = utils.ToInt(adminID) } } } projectLeader := r.GetCell(13).String() if projectLeader != "" { if adminMap[projectLeader] > 0 { houseMap["project_leader"] = adminMap[projectLeader] } else { if adminID, err := admin.InsertOne(map[string]interface{}{"username": projectLeader, "role_ids": 5, "deleted_at": 1}); err == nil { //admin.AddRoleByAdmin(utils.ToInt(adminID), []int{5}) adminMap[projectLeader] = utils.ToInt(adminID) houseMap["project_leader"] = utils.ToInt(adminID) } } } supervisor := r.GetCell(14).String() if supervisor != "" { if adminMap[supervisor] > 0 { houseMap["supervisor"] = adminMap[supervisor] } else { if adminID, err := admin.InsertOne(map[string]interface{}{"username": supervisor, "role_ids": 6, "deleted_at": 1}); err == nil { //admin.AddRoleByAdmin(utils.ToInt(adminID), []int{6}) adminMap[supervisor] = utils.ToInt(adminID) houseMap["supervisor"] = utils.ToInt(adminID) } } } if projectStart, err := r.GetCell(15).GetTime(false); err == nil { houseMap["project_start"] = utils.ToStr(utils.DateParseUnix(utils.DateT(projectStart, "YYYY-MM-DD"), "Y-m-d")) } else { houseMap["project_start"] = "0" } if projectEnd, err := r.GetCell(20).GetTime(false); err == nil { houseMap["project_end"] = utils.ToStr(utils.DateParseUnix(utils.DateT(projectEnd, "YYYY-MM-DD"), "Y-m-d")) } else { houseMap["project_end"] = "0" } if warrantyStart, err := r.GetCell(21).GetTime(false); err == nil { if siteID == 2 { warrantyStart = warrantyStart.AddDate(0, 1, 0) } houseMap["warranty_start"] = utils.ToStr(utils.DateParseUnix(utils.DateT(warrantyStart, "YYYY-MM-DD"), "Y-m-d")) } else { houseMap["warranty_start"] = "0" } user.InsertOneHouse(houseMap) fmt.Println(houseMap) return nil }) app.Success(c, nil) }