base_district.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package base
  2. import (
  3. "context"
  4. "github.com/gogf/gf/errors/gerror"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/util/gconv"
  7. "dashoo.cn/micro/app/dao/base"
  8. model "dashoo.cn/micro/app/model/base"
  9. "dashoo.cn/micro/app/service"
  10. )
  11. type districtService struct {
  12. *service.ContextService
  13. Dao *base.BaseDistrictDao
  14. DetailDao *base.BaseSalesRegionDetailDao
  15. RegionDao *base.BaseSalesRegionDao
  16. }
  17. func NewDistrictService(ctx context.Context) (svc *districtService, err error) {
  18. svc = new(districtService)
  19. if svc.ContextService, err = svc.Init(ctx); err != nil {
  20. return nil, err
  21. }
  22. svc.Dao = base.NewBaseDistrictDao(svc.Tenant)
  23. svc.DetailDao = base.NewBaseSalesRegionDetailDao(svc.Tenant)
  24. svc.RegionDao = base.NewBaseSalesRegionDao(svc.Tenant)
  25. return svc, nil
  26. }
  27. func (d *districtService) ListToTree(Id int) []*model.T {
  28. Model := d.Dao.M
  29. ms := make(map[int]*model.T)
  30. var distributorList []model.BaseDistrict
  31. treeList := []*model.T{}
  32. if Id != 0 {
  33. Model = Model.Where("parent_id =", Id).WhereOr("id =", Id)
  34. }
  35. Model.Order("parent_id asc").Scan(&distributorList)
  36. g.Log().Info("distributorList", distributorList)
  37. for _, v := range distributorList {
  38. ms[v.Id] = &model.T{
  39. Id: v.Id,
  40. ParentId: v.ParentId,
  41. DistName: v.DistName,
  42. }
  43. }
  44. for _, v := range ms {
  45. //if _, ok := ms[v.ParentId]; ok {
  46. // ms[v.ParentId].Children = append(ms[v.ParentId].Children, v)
  47. // continue
  48. //}
  49. treeList = append(treeList, v)
  50. }
  51. return treeList
  52. }
  53. func (d *districtService) GetProvinceInfo() (list []*model.Province) {
  54. Model := d.Dao.M
  55. err := Model.Where(base.BaseDistrict.Columns.ParentId, 0).Scan(&list)
  56. if err != nil {
  57. g.Log().Error(err)
  58. err = gerror.New("获取数据失败")
  59. return
  60. }
  61. return
  62. }
  63. func (d *districtService) ListToRegions() (region []*model.Region) {
  64. RegModel := d.RegionDao.M
  65. RegModel.Fields(d.RegionDao.Columns.RegionDesc, d.RegionDao.Columns.Id).Scan(&region)
  66. var districtList []int
  67. for _, v := range region {
  68. districtList = append(districtList, v.Id)
  69. }
  70. Model := d.Dao.M
  71. list, _ := Model.As("dis").RightJoin("base_sales_region_detail deftail", "dis.id = deftail.province_code").
  72. Fields("dis.dist_name,dis.id,deftail.region_id").Where("deftail.region_id in (?)", districtList).All()
  73. ms := make(map[int][]*model.District)
  74. for _, v := range list.List() {
  75. ms[gconv.Int(v["region_id"])] = append(ms[gconv.Int(v["region_id"])], &model.District{
  76. Id: gconv.Int(v["id"]),
  77. RegionDesc: gconv.String(v["dist_name"]),
  78. RegionId: gconv.Int(v["region_id"]),
  79. })
  80. }
  81. for _, v := range region {
  82. g.Log().Info("msssss", ms[v.Id])
  83. //if _, ok := ms[v.Id]; ok {
  84. // v.Children = ms[v.Id]
  85. // continue
  86. //}
  87. v.Children = ms[v.Id]
  88. }
  89. g.Log().Info("return", region)
  90. return
  91. }