admin.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package one
  2. import (
  3. "fmt"
  4. "github.com/gin-gonic/gin"
  5. "github.com/tealeg/xlsx/v3"
  6. "zhiyuan/pkg/app"
  7. "zhiyuan/pkg/param"
  8. "zhiyuan/pkg/utils"
  9. "zhiyuan/services/admin"
  10. "zhiyuan/services/material/pkg"
  11. "zhiyuan/services/user"
  12. )
  13. func AdminImport(c *gin.Context) {
  14. file, err := c.FormFile("file")
  15. if err != nil {
  16. app.Error(c, fmt.Sprintf("get form err: %s", err.Error()))
  17. return
  18. }
  19. fileExt := utils.FileExt(file.Filename)
  20. attachKey := utils.RandomStr() + fileExt
  21. file.Filename = "data/" + attachKey
  22. if err := c.SaveUploadedFile(file, file.Filename); err != nil {
  23. app.Error(c, fmt.Sprintf("上传文件失败%s", err.Error()))
  24. return
  25. }
  26. wb, err := xlsx.OpenFile(file.Filename)
  27. if err != nil {
  28. app.Error(c, err.Error())
  29. return
  30. }
  31. sh, ok := wb.Sheet["Sheet1"]
  32. if !ok {
  33. fmt.Println("Sheet does not exist")
  34. return
  35. }
  36. adminMap := make(map[string]int, 0)
  37. if adminList, _ := admin.GetAdmins(nil, nil, app.Page{}, nil); adminList != nil {
  38. for _, v := range adminList {
  39. adminMap[v.Username] = v.ID
  40. }
  41. }
  42. districtMap := make(map[string]int)
  43. for _, v := range param.Params.District {
  44. districtMap[v.Name] = v.ID
  45. }
  46. shopMap := map[string]int{
  47. "安欣家": 1,
  48. "昇吉家": 2,
  49. "德配": 3,
  50. "玖悦会": 4,
  51. }
  52. pkgMap := make(map[string]int)
  53. if pkgList, err := pkg.GetPkgs(nil, nil, app.Page{}, nil); err == nil {
  54. for _, v := range pkgList {
  55. pkgMap[v.PkgName] = v.ID
  56. }
  57. }
  58. siteID := 1
  59. sh.ForEachRow(func(r *xlsx.Row) error {
  60. if r.GetCoordinate() <= 1 {
  61. return nil
  62. }
  63. if projectStart, err := r.GetCell(21).GetTime(false); err == nil {
  64. projectStart = projectStart.AddDate(0, 1, 0)
  65. fmt.Println(utils.ToStr(utils.DateParseUnix(utils.DateT(projectStart, "YYYY-MM-DD"), "Y-m-d")))
  66. }
  67. userMap := map[string]interface{}{
  68. "name": r.GetCell(4).String(),
  69. "phone": r.GetCell(5).String(),
  70. "site_id": siteID,
  71. }
  72. userID, err := user.InsertOne(userMap)
  73. if err != nil {
  74. return nil
  75. }
  76. houseMap := map[string]interface{}{
  77. "user_id": userID,
  78. "province": 360000,
  79. "city": 360100,
  80. "pkg_id": pkgMap[r.GetCell(2).String()],
  81. "address": r.GetCell(3).String(),
  82. "link_name": r.GetCell(4).String(),
  83. "link_phone": r.GetCell(5).String(),
  84. "shop_id": shopMap[r.GetCell(17).String()],
  85. }
  86. if r.GetCell(1).String() != "" {
  87. houseMap["district"] = districtMap[r.GetCell(1).String()]
  88. }
  89. designer := r.GetCell(6).String()
  90. if designer != "" {
  91. if adminMap[designer] > 0 {
  92. houseMap["designer"] = adminMap[designer]
  93. } else {
  94. if adminID, err := admin.InsertOne(map[string]interface{}{"username": designer, "role_ids": 2, "deleted_at": 1}); err == nil {
  95. //admin.AddRoleByAdmin(utils.ToInt(adminID), []int{2})
  96. adminMap[designer] = utils.ToInt(adminID)
  97. houseMap["designer"] = utils.ToInt(adminID)
  98. }
  99. }
  100. }
  101. salesman := r.GetCell(7).String()
  102. if salesman != "" {
  103. if adminMap[salesman] > 0 {
  104. houseMap["salesman"] = adminMap[salesman]
  105. } else {
  106. if adminID, err := admin.InsertOne(map[string]interface{}{"username": salesman, "role_ids": 3, "deleted_at": 1}); err == nil {
  107. //admin.AddRoleByAdmin(utils.ToInt(adminID), []int{3})
  108. adminMap[salesman] = utils.ToInt(adminID)
  109. houseMap["salesman"] = utils.ToInt(adminID)
  110. }
  111. }
  112. }
  113. projectManager := r.GetCell(12).String()
  114. if projectManager != "" {
  115. if adminMap[projectManager] > 0 {
  116. houseMap["project_manager"] = adminMap[projectManager]
  117. } else {
  118. if adminID, err := admin.InsertOne(map[string]interface{}{"username": projectManager, "role_ids": 4, "deleted_at": 1}); err == nil {
  119. //admin.AddRoleByAdmin(utils.ToInt(adminID), []int{4})
  120. adminMap[projectManager] = utils.ToInt(adminID)
  121. houseMap["project_manager"] = utils.ToInt(adminID)
  122. }
  123. }
  124. }
  125. projectLeader := r.GetCell(13).String()
  126. if projectLeader != "" {
  127. if adminMap[projectLeader] > 0 {
  128. houseMap["project_leader"] = adminMap[projectLeader]
  129. } else {
  130. if adminID, err := admin.InsertOne(map[string]interface{}{"username": projectLeader, "role_ids": 5, "deleted_at": 1}); err == nil {
  131. //admin.AddRoleByAdmin(utils.ToInt(adminID), []int{5})
  132. adminMap[projectLeader] = utils.ToInt(adminID)
  133. houseMap["project_leader"] = utils.ToInt(adminID)
  134. }
  135. }
  136. }
  137. supervisor := r.GetCell(14).String()
  138. if supervisor != "" {
  139. if adminMap[supervisor] > 0 {
  140. houseMap["supervisor"] = adminMap[supervisor]
  141. } else {
  142. if adminID, err := admin.InsertOne(map[string]interface{}{"username": supervisor, "role_ids": 6, "deleted_at": 1}); err == nil {
  143. //admin.AddRoleByAdmin(utils.ToInt(adminID), []int{6})
  144. adminMap[supervisor] = utils.ToInt(adminID)
  145. houseMap["supervisor"] = utils.ToInt(adminID)
  146. }
  147. }
  148. }
  149. if projectStart, err := r.GetCell(15).GetTime(false); err == nil {
  150. houseMap["project_start"] = utils.ToStr(utils.DateParseUnix(utils.DateT(projectStart, "YYYY-MM-DD"), "Y-m-d"))
  151. } else {
  152. houseMap["project_start"] = "0"
  153. }
  154. if projectEnd, err := r.GetCell(20).GetTime(false); err == nil {
  155. houseMap["project_end"] = utils.ToStr(utils.DateParseUnix(utils.DateT(projectEnd, "YYYY-MM-DD"), "Y-m-d"))
  156. } else {
  157. houseMap["project_end"] = "0"
  158. }
  159. if warrantyStart, err := r.GetCell(21).GetTime(false); err == nil {
  160. if siteID == 2 {
  161. warrantyStart = warrantyStart.AddDate(0, 1, 0)
  162. }
  163. houseMap["warranty_start"] = utils.ToStr(utils.DateParseUnix(utils.DateT(warrantyStart, "YYYY-MM-DD"), "Y-m-d"))
  164. } else {
  165. houseMap["warranty_start"] = "0"
  166. }
  167. user.InsertOneHouse(houseMap)
  168. fmt.Println(houseMap)
  169. return nil
  170. })
  171. app.Success(c, nil)
  172. }