base_district.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package base
  2. import (
  3. "context"
  4. "dashoo.cn/micro/app/dao/base"
  5. model "dashoo.cn/micro/app/model/base"
  6. "dashoo.cn/micro/app/service"
  7. "github.com/gogf/gf/frame/g"
  8. )
  9. type districtService struct {
  10. *service.ContextService
  11. Dao *base.BaseDistrictDao
  12. DetailDao *base.BaseSalesRegionDetailDao
  13. RegionDao *base.BaseSalesRegionDao
  14. }
  15. func NewDistrictService(ctx context.Context) (svc *districtService, err error) {
  16. svc = new(districtService)
  17. if svc.ContextService, err = svc.Init(ctx); err != nil {
  18. return nil, err
  19. }
  20. svc.Dao = base.NewBaseDistrictDao(svc.Tenant)
  21. svc.DetailDao = base.NewBaseSalesRegionDetailDao(svc.Tenant)
  22. svc.RegionDao = base.NewBaseSalesRegionDao(svc.Tenant)
  23. return svc, nil
  24. }
  25. // GetProvincesList 所属区域列表
  26. func (s *districtService) GetProvincesList(Id int64) (treeList []*model.ProvincesTree, err error) {
  27. ms := make(map[int]*model.ProvincesTree)
  28. var distributorList []model.BaseDistrict
  29. err = s.Dao.Order("id asc").Scan(&distributorList)
  30. if err != nil {
  31. return
  32. }
  33. for _, v := range distributorList {
  34. ms[v.Id] = &model.ProvincesTree{
  35. Id: v.Id,
  36. ParentId: v.ParentId,
  37. DistName: v.DistName,
  38. }
  39. }
  40. for _, v := range ms {
  41. if _, ok := ms[v.ParentId]; ok {
  42. ms[v.ParentId].Children = append(ms[v.ParentId].Children, v)
  43. continue
  44. }
  45. treeList = append(treeList, v)
  46. }
  47. s.SortToProvince(treeList)
  48. return
  49. }
  50. // SortToProvince 省市区排序
  51. func (s *districtService) SortToProvince(treeList []*model.ProvincesTree) []*model.ProvincesTree {
  52. length := len(treeList)
  53. for i := 0; i < length-1; i++ {
  54. for j := i + 1; j < length; j++ {
  55. if treeList[i].Id > treeList[j].Id {
  56. treeList[i], treeList[j] = treeList[j], treeList[i]
  57. }
  58. }
  59. }
  60. for i := 0; i < length; i++ {
  61. treeList[i].Children = s.SortToProvince(treeList[i].Children)
  62. }
  63. return treeList
  64. }
  65. // GetProvinceList 返回所有省份的
  66. func (s *districtService) GetProvinceList() (list []*model.Province, err error) {
  67. err = s.Dao.Where(base.BaseDistrict.C.ParentId, 0).Scan(&list)
  68. if err != nil {
  69. g.Log().Error(err)
  70. return
  71. }
  72. return
  73. }