123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- 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)
- }
|