package base import ( "context" "strconv" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/os/gtime" "github.com/gogf/gf/util/gconv" "dashoo.cn/micro/app/dao/base" model "dashoo.cn/micro/app/model/base" "dashoo.cn/micro/app/service" ) type salesRegionService struct { *service.ContextService Dao *base.BaseSalesRegionDao Detail *base.BaseSalesRegionDetailDao } func NewSalesRegionService(ctx context.Context) (svc *salesRegionService, err error) { svc = new(salesRegionService) if svc.ContextService, err = svc.Init(ctx); err != nil { return nil, err } svc.Dao = base.NewBaseSalesRegionDao(svc.Tenant) svc.Detail = base.NewBaseSalesRegionDetailDao(svc.Tenant) return svc, nil } // Create 创建区域 func (s *salesRegionService) Create(req *model.AddRegionReq) (err error) { regionData := new(model.BaseSalesRegion) if err = gconv.Struct(req, regionData); err != nil { return } service.SetCreatedInfo(regionData, s.GetCxtUserId(), s.GetCxtUserName()) regionData.RegionCode = strconv.Itoa(int(gtime.Timestamp())) _, err = s.Dao.Insert(regionData) if err != nil { g.Log().Error(err) return } return nil } // GetRegionList 获取区域 func (s *salesRegionService) GetRegionList() (RegionList []*model.Region, err error) { err = s.Dao.Order("id asc").Scan(&RegionList) if err != nil { g.Log().Error(err) return } return } // GetRegionTree 获取大区及下属地区 func (s *salesRegionService) GetRegionTree() (regionList []*model.Region, err error) { err = s.Dao.Order("id asc").Scan(®ionList) if err != nil { return } detailDao := base.NewBaseSalesRegionDetailDao(s.Tenant) regionDetailsList := ([]*model.District)(nil) err = detailDao.Fields("region_id, cust_province_id as regionCode, cust_province as regionDesc").Group("cust_province_id"). OrderAsc(detailDao.Columns.RegionId).Scan(®ionDetailsList) if err != nil { return } for _, item := range regionList { item.Children = make([]*model.District, 0) for _, v := range regionDetailsList { if item.Id == v.RegionId { item.Children = append(item.Children, v) } } } return }