base_sales_region_detail.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package base
  2. import (
  3. "context"
  4. "dashoo.cn/opms_libary/myerrors"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/util/gconv"
  7. "dashoo.cn/micro/app/dao/base"
  8. "dashoo.cn/micro/app/dao/cust"
  9. model "dashoo.cn/micro/app/model/base"
  10. "dashoo.cn/micro/app/service"
  11. )
  12. type salesRegionDetailService struct {
  13. *service.ContextService
  14. Dao *base.BaseSalesRegionDetailDao
  15. District *base.BaseDistrictDao
  16. CustomerDao *cust.CustCustomerDao
  17. }
  18. func NewSalesRegionDetailService(ctx context.Context) (svc *salesRegionDetailService, err error) {
  19. svc = new(salesRegionDetailService)
  20. if svc.ContextService, err = svc.Init(ctx); err != nil {
  21. return nil, err
  22. }
  23. svc.Dao = base.NewBaseSalesRegionDetailDao(svc.Tenant)
  24. svc.District = base.NewBaseDistrictDao(svc.Tenant)
  25. svc.CustomerDao = cust.NewCustCustomerDao(svc.Tenant)
  26. return svc, nil
  27. }
  28. // GetList 销售区域列表
  29. func (s *salesRegionDetailService) GetList(req *model.SecBaseRegionDetailReq) (total int, RegionList []*model.BaseRegionDetailRep, err error) {
  30. Model := s.Dao.Where(s.Dao.Columns.RegionId, req.RegionId)
  31. total, err = Model.Count()
  32. if err != nil {
  33. err = myerrors.DbError("获取总行数失败。")
  34. return
  35. }
  36. err = Model.Page(req.GetPage()).Order("id asc").Scan(&RegionList)
  37. if err != nil {
  38. return
  39. }
  40. var districtList []int
  41. for _, v := range RegionList {
  42. districtList = append(districtList, v.CustProvinceId)
  43. }
  44. //CustModel := p.CustomerDao.M
  45. CustModel := s.CustomerDao.M.Fields("count(*) as count,cust_dist_code").Where("cust_dist_code in (?)", districtList)
  46. if req.CustName != "" {
  47. CustModel = CustModel.Where(s.CustomerDao.Columns.CustName+" like ?", "%"+req.CustName+"%")
  48. }
  49. if req.CustCode != "" {
  50. CustModel = CustModel.Where(s.CustomerDao.Columns.CustCode+" like ?", "%"+req.CustCode+"%")
  51. }
  52. if req.CustIndustry != "" {
  53. CustModel = CustModel.Where(s.CustomerDao.Columns.CustIndustry+" like ?", "%"+req.CustIndustry+"%")
  54. }
  55. custDist, _ := CustModel.Group("cust_dist_code").All()
  56. for _, v := range RegionList {
  57. for _, v3 := range custDist {
  58. if v.CustProvinceId == gconv.Int(v3["cust_dist_code"]) {
  59. v.Count = gconv.Int(v3["count"])
  60. }
  61. }
  62. }
  63. return
  64. }
  65. // 创建区域
  66. func (s *salesRegionDetailService) Create(req *model.AddBaseRegionDetailReq) (err error) {
  67. detailData := new(model.BaseSalesRegionDetail)
  68. if err = gconv.Struct(req, detailData); err != nil {
  69. return
  70. }
  71. service.SetCreatedInfo(detailData, s.GetCxtUserId(), s.GetCxtUserName())
  72. _, err = s.Dao.Insert(detailData)
  73. if err != nil {
  74. g.Log().Error(err)
  75. return err
  76. }
  77. return nil
  78. }
  79. // UpdateById 修改
  80. func (s *salesRegionDetailService) UpdateById(req *model.UpdateBaseRegionDetailReq) (err error) {
  81. count, err := s.Dao.FindCount(req.Id)
  82. if err != nil {
  83. g.Log().Error(err)
  84. return
  85. }
  86. if count == 0 {
  87. err = myerrors.TipsError("数据不存在")
  88. return
  89. }
  90. productData := new(model.BaseSalesRegionDetail)
  91. if err = gconv.Struct(req, productData); err != nil {
  92. return
  93. }
  94. service.SetUpdatedInfo(productData, s.GetCxtUserId(), s.GetCxtUserName())
  95. _, err = s.Dao.FieldsEx(service.UpdateFieldEx...).WherePri(base.BaseSalesRegionDetail.Columns.Id, req.Id).Update(productData)
  96. if err != nil {
  97. g.Log().Error(err)
  98. return
  99. }
  100. return
  101. }
  102. // DeleteByIds 删除
  103. func (s *salesRegionDetailService) DeleteByIds(ids []int64) (err error) {
  104. _, err = s.Dao.WhereIn(s.Dao.Columns.Id, ids).Delete()
  105. return
  106. }