base_district.go 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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 int64) []*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("parent_id", Id)
  34. //}
  35. Model.Order("parent_id asc").Scan(&distributorList)
  36. for _, v := range distributorList {
  37. ms[v.Id] = &model.T{
  38. Id: v.Id,
  39. ParentId: v.ParentId,
  40. DistName: v.DistName,
  41. }
  42. }
  43. for _, v := range ms {
  44. if _, ok := ms[v.ParentId]; ok {
  45. ms[v.ParentId].Children = append(ms[v.ParentId].Children, v)
  46. continue
  47. }
  48. treeList = append(treeList, v)
  49. }
  50. return treeList
  51. }
  52. func (d *districtService) GetProvinceInfo() (list []*model.Province) {
  53. Model := d.Dao.M
  54. err := Model.Where(base.BaseDistrict.Columns.ParentId, 0).Scan(&list)
  55. if err != nil {
  56. g.Log().Error(err)
  57. err = gerror.New("获取数据失败")
  58. return
  59. }
  60. return
  61. }
  62. func (d *districtService) ListToRegions() (region []*model.Region) {
  63. RegModel := d.RegionDao.M
  64. RegModel.Fields(d.RegionDao.Columns.RegionDesc, d.RegionDao.Columns.Id).Scan(&region)
  65. var districtList []int
  66. for _, v := range region {
  67. districtList = append(districtList, v.Id)
  68. }
  69. Model := d.Dao.M
  70. list, _ := Model.As("dis").RightJoin("base_sales_region_detail deftail", "dis.id = deftail.province_code").
  71. Fields("dis.dist_name,dis.id,deftail.region_id").Where("deftail.region_id in (?)", districtList).All()
  72. ms := make(map[int][]*model.District)
  73. for _, v := range list.List() {
  74. ms[gconv.Int(v["region_id"])] = append(ms[gconv.Int(v["region_id"])], &model.District{
  75. Id: gconv.Int(v["id"]),
  76. RegionDesc: gconv.String(v["dist_name"]),
  77. RegionId: gconv.Int(v["region_id"]),
  78. })
  79. }
  80. for _, v := range region {
  81. g.Log().Info("msssss", ms[v.Id])
  82. //if _, ok := ms[v.Id]; ok {
  83. // v.Children = ms[v.Id]
  84. // continue
  85. //}
  86. v.Children = ms[v.Id]
  87. }
  88. g.Log().Info("return", region)
  89. return
  90. }