house.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package user
  2. import (
  3. "errors"
  4. "fmt"
  5. "time"
  6. "zhiyuan/models"
  7. "zhiyuan/pkg/app"
  8. "zhiyuan/pkg/db"
  9. "zhiyuan/pkg/utils"
  10. "zhiyuan/services/admin"
  11. "zhiyuan/services/form"
  12. "zhiyuan/services/log"
  13. "zhiyuan/services/structs"
  14. )
  15. func GetHouseList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.UserHouse, error) {
  16. if page.PageNum > 0 && page.PageSize > 0 {
  17. where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize))
  18. }
  19. return UserHouse.GetMulti(where, fields, retVal)
  20. }
  21. func GetHouseInfoByID(id int, fields []string, retVal interface{}) (*models.UserHouse, error) {
  22. return UserHouse.GetOne(map[string]interface{}{"id": id}, fields, retVal)
  23. }
  24. func GetHouseMap(form form.HouseAdd) (map[string]interface{}, error) {
  25. houseMap := map[string]interface{}{
  26. "user_id": form.UserID,
  27. "pkg_id": form.PkgID,
  28. "shop_id": form.ShopID,
  29. "district": form.District,
  30. "salesman": form.Salesman,
  31. "project_manager": form.ProjectManager,
  32. "project_leader": form.ProjectLeader,
  33. "address": form.Address,
  34. "designer": form.Designer,
  35. "supervisor": form.Supervisor,
  36. "project_start": utils.DateParseUnix(form.ProjectStart, "Y-m-d"),
  37. "mark": form.Mark,
  38. }
  39. if userInfo, _ := GetOne(map[string]interface{}{"id": form.UserID}, nil, nil); userInfo == nil {
  40. return nil, errors.New("用户不存在")
  41. } else {
  42. houseMap["link_name"] = userInfo.Name
  43. houseMap["link_phone"] = userInfo.Phone
  44. return houseMap, nil
  45. }
  46. }
  47. func HouseAdd(form form.HouseAdd) (int64, error) {
  48. if houseMap, err := GetHouseMap(form); err != nil {
  49. return 0, err
  50. } else {
  51. if admin.CheckAuth([]string{"user:warranty:edit"}, form.AdminID) {
  52. houseMap["project_end"] = utils.DateParseUnix(form.ProjectEnd, "Y-m-d")
  53. houseMap["warranty_start"] = utils.DateParseUnix(form.WarrantyStart, "Y-m-d")
  54. houseMap["warranty_mark"] = form.WarrantyMark
  55. houseMap["warranty_period_base"] = form.WarrantyPeriodBase
  56. houseMap["warranty_period_material"] = form.WarrantyPeriodMaterial
  57. houseMap["warranty_period_electric"] = form.WarrantyPeriodElectric
  58. houseMap["warranty_period_base_adddate"] = form.WarrantyPeriodBaseAddDate
  59. houseMap["warranty_period_material_adddate"] = form.WarrantyPeriodMaterialAddDate
  60. houseMap["warranty_period_electric_adddate"] = form.WarrantyPeriodElectricAddDate
  61. houseMap["pictures"] = form.Pictures
  62. }
  63. return db.InsertOne(UserHouse.TableName(), houseMap)
  64. }
  65. }
  66. func HouseEdit(f form.HouseAdd, id int) (int64, error) {
  67. houseInfo, _ := GetHouseInfoByID(id, nil, nil)
  68. if houseMap, err := GetHouseMap(f); err != nil {
  69. return 0, err
  70. } else {
  71. if admin.CheckAuth([]string{"user:warranty:edit"}, f.AdminID) {
  72. houseMap["project_end"] = utils.DateParseUnix(f.ProjectEnd, "Y-m-d")
  73. houseMap["warranty_start"] = utils.DateParseUnix(f.WarrantyStart, "Y-m-d")
  74. houseMap["warranty_mark"] = f.WarrantyMark
  75. houseMap["warranty_period_base"] = f.WarrantyPeriodBase
  76. houseMap["warranty_period_material"] = f.WarrantyPeriodMaterial
  77. houseMap["warranty_period_electric"] = f.WarrantyPeriodElectric
  78. houseMap["warranty_period_base_adddate"] = f.WarrantyPeriodBaseAddDate
  79. houseMap["warranty_period_material_adddate"] = f.WarrantyPeriodMaterialAddDate
  80. houseMap["warranty_period_electric_adddate"] = f.WarrantyPeriodElectricAddDate
  81. houseMap["pictures"] = f.Pictures
  82. }
  83. go func() {
  84. log.Add(form.LogAdd{
  85. Type: log.TypeMap.EditUser.ID,
  86. Title: "编辑房屋信息_" + utils.ToStr(id),
  87. UserID: f.UserID,
  88. AdminID: f.AdminID,
  89. Content: map[string]interface{}{
  90. "before": houseInfo,
  91. "after": houseMap,
  92. },
  93. })
  94. }()
  95. return db.Update(UserHouse.TableName(), map[string]interface{}{"id": id}, houseMap)
  96. }
  97. }
  98. func GetHouseCustomerMap(form form.HouseAddByCustomer) map[string]interface{} {
  99. return map[string]interface{}{
  100. "user_id": form.UserID,
  101. "address": form.Address,
  102. "link_name": form.LinkName,
  103. "link_phone": form.LinkPhone,
  104. "origin": 2,
  105. }
  106. }
  107. func HouseEditByCustomer(form form.HouseAddByCustomer, id int) error {
  108. houseInfo, err := GetHouseInfoByID(id, []string{"user_id"}, nil)
  109. if err != nil {
  110. return err
  111. }
  112. if houseInfo.UserID != form.UserID {
  113. return errors.New("无法编辑该房屋")
  114. }
  115. houseMap := GetHouseCustomerMap(form)
  116. _, err = db.Update(UserHouse.TableName(), map[string]interface{}{"id": id}, houseMap)
  117. return err
  118. }
  119. func HouseAddByCustomer(form form.HouseAddByCustomer) (int64, error) {
  120. houseMap := GetHouseCustomerMap(form)
  121. return db.InsertOne(UserHouse.TableName(), houseMap)
  122. }
  123. func InsertOneHouse(data map[string]interface{}) (int64, error) {
  124. return db.InsertOne(UserHouse.TableName(), data)
  125. }
  126. func HouseDelByID(id int) (int64, error) {
  127. return db.DeleteSoft(UserHouse.TableName(), map[string]interface{}{"id": id})
  128. }
  129. func GetWarrantyPeriod(warrantyStart int64, warrantyType *structs.WarrantyType, houseItem *structs.HouseList) *structs.WarrantyType {
  130. switch warrantyType.ID {
  131. case 1:
  132. warrantyType.WarrantyPeriod = houseItem.WarrantyPeriodMaterial
  133. warrantyType.WarrantyPeriodAddDate = houseItem.WarrantyPeriodMaterialAddDate
  134. case 2:
  135. warrantyType.WarrantyPeriod = houseItem.WarrantyPeriodBase
  136. warrantyType.WarrantyPeriodAddDate = houseItem.WarrantyPeriodBaseAddDate
  137. case 3:
  138. warrantyType.WarrantyPeriod = houseItem.WarrantyPeriodElectric
  139. warrantyType.WarrantyPeriodAddDate = houseItem.WarrantyPeriodElectricAddDate
  140. }
  141. currentTime := utils.ToInt(utils.GetZeroTime(time.Now()).Unix())
  142. warrantyType.WarrantyEnd = utils.ToInt(time.Unix(warrantyStart, 0).AddDate(warrantyType.WarrantyPeriod, 0, warrantyType.WarrantyPeriodAddDate).Unix())
  143. warrantyType.LeftDate = (warrantyType.WarrantyEnd - currentTime) / 86400
  144. if currentTime >= utils.ToInt(warrantyStart) && currentTime <= warrantyType.WarrantyEnd {
  145. warrantyType.InWarranty = 1
  146. }
  147. fmt.Println(utils.ToStr(warrantyType.ID) + "======" + utils.ToStr(warrantyType.WarrantyPeriod))
  148. return warrantyType
  149. }