base_sales_region.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package base
  2. import (
  3. "context"
  4. "strconv"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/os/gtime"
  7. "github.com/gogf/gf/util/gconv"
  8. "dashoo.cn/micro/app/dao/base"
  9. model "dashoo.cn/micro/app/model/base"
  10. "dashoo.cn/micro/app/service"
  11. )
  12. type salesRegionService struct {
  13. *service.ContextService
  14. Dao *base.BaseSalesRegionDao
  15. Detail *base.BaseSalesRegionDetailDao
  16. }
  17. func NewSalesRegionService(ctx context.Context) (svc *salesRegionService, err error) {
  18. svc = new(salesRegionService)
  19. if svc.ContextService, err = svc.Init(ctx); err != nil {
  20. return nil, err
  21. }
  22. svc.Dao = base.NewBaseSalesRegionDao(svc.Tenant)
  23. svc.Detail = base.NewBaseSalesRegionDetailDao(svc.Tenant)
  24. return svc, nil
  25. }
  26. // Create 创建区域
  27. func (s *salesRegionService) Create(req *model.AddRegionReq) (err error) {
  28. regionData := new(model.BaseSalesRegion)
  29. if err = gconv.Struct(req, regionData); err != nil {
  30. return
  31. }
  32. service.SetCreatedInfo(regionData, s.GetCxtUserId(), s.GetCxtUserName())
  33. regionData.RegionCode = strconv.Itoa(int(gtime.Timestamp()))
  34. _, err = s.Dao.Insert(regionData)
  35. if err != nil {
  36. g.Log().Error(err)
  37. return
  38. }
  39. return nil
  40. }
  41. // GetRegionList 获取区域
  42. func (s *salesRegionService) GetRegionList() (RegionList []*model.Region, err error) {
  43. err = s.Dao.Order("id asc").Scan(&RegionList)
  44. if err != nil {
  45. g.Log().Error(err)
  46. return
  47. }
  48. return
  49. }
  50. // GetRegionTree 获取大区及下属地区
  51. func (s *salesRegionService) GetRegionTree() (regionList []*model.Region, err error) {
  52. err = s.Dao.Order("id asc").Scan(&regionList)
  53. if err != nil {
  54. return
  55. }
  56. detailDao := base.NewBaseSalesRegionDetailDao(s.Tenant)
  57. regionDetailsList := ([]*model.District)(nil)
  58. err = detailDao.Fields("region_id, cust_province_id as regionCode, cust_province as regionDesc").Group("cust_province_id").
  59. OrderAsc(detailDao.Columns.RegionId).Scan(&regionDetailsList)
  60. if err != nil {
  61. return
  62. }
  63. for _, item := range regionList {
  64. item.Children = make([]*model.District, 0)
  65. for _, v := range regionDetailsList {
  66. if item.Id == v.RegionId {
  67. item.Children = append(item.Children, v)
  68. }
  69. }
  70. }
  71. return
  72. }