base_sales_region_detail.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package base
  2. import (
  3. "context"
  4. "fmt"
  5. "dashoo.cn/opms_libary/myerrors"
  6. "github.com/gogf/gf/frame/g"
  7. "github.com/gogf/gf/util/gconv"
  8. "dashoo.cn/micro/app/dao/base"
  9. "dashoo.cn/micro/app/dao/cust"
  10. model "dashoo.cn/micro/app/model/base"
  11. "dashoo.cn/micro/app/service"
  12. )
  13. type salesRegionDetailService struct {
  14. *service.ContextService
  15. Dao *base.BaseSalesRegionDetailDao
  16. District *base.BaseDistrictDao
  17. CustomerDao *cust.CustCustomerDao
  18. }
  19. func NewSalesRegionDetailService(ctx context.Context) (svc *salesRegionDetailService, err error) {
  20. svc = new(salesRegionDetailService)
  21. if svc.ContextService, err = svc.Init(ctx); err != nil {
  22. return nil, err
  23. }
  24. svc.Dao = base.NewBaseSalesRegionDetailDao(svc.Tenant)
  25. svc.District = base.NewBaseDistrictDao(svc.Tenant)
  26. svc.CustomerDao = cust.NewCustCustomerDao(svc.Tenant)
  27. return svc, nil
  28. }
  29. //GetList 销售区域列表
  30. func (s *salesRegionDetailService) GetList(req *model.SecBaseRegionDetailReq) (total int, RegionList []*model.BaseRegionDetailRep, err error) {
  31. Model := s.Dao.M
  32. Model = Model.Where(s.Dao.Columns.RegionId, req.RegionId)
  33. total, err = Model.Count()
  34. if err != nil {
  35. g.Log().Error(err)
  36. err = myerrors.DbError("获取总行数失败。")
  37. return
  38. }
  39. if req.PageNum == 0 {
  40. req.PageNum = 1
  41. }
  42. err = Model.Page(req.PageNum, req.PageSize).Order("id asc").Scan(&RegionList)
  43. if err != nil {
  44. g.Log().Error(err)
  45. return
  46. }
  47. var districtList []int
  48. for _, v := range RegionList {
  49. districtList = append(districtList, v.ProvinceCode)
  50. }
  51. //CustModel := p.CustomerDao.M
  52. CustModel := s.CustomerDao.M.Fields("count(*) as count,cust_dist_code").Where("cust_dist_code in (?)", districtList)
  53. if req.CustName != "" {
  54. CustModel = CustModel.Where(s.CustomerDao.Columns.CustName+" like ?", "%"+req.CustName+"%")
  55. }
  56. if req.CustCode != "" {
  57. CustModel = CustModel.Where(s.CustomerDao.Columns.CustCode+" like ?", "%"+req.CustCode+"%")
  58. }
  59. if req.CustIndustry != "" {
  60. CustModel = CustModel.Where(s.CustomerDao.Columns.CustIndustry+" like ?", "%"+req.CustIndustry+"%")
  61. }
  62. dist, _ := s.District.Fields("dist_name,dist_code").Where("dist_code in (?)", districtList).All()
  63. custDist, _ := CustModel.Group("cust_dist_code").All()
  64. for _, v := range RegionList {
  65. for _, v2 := range dist {
  66. if v.ProvinceCode == gconv.Int(v2.DistCode) {
  67. v.DistName = gconv.String(v2.DistName)
  68. }
  69. }
  70. for _, v3 := range custDist {
  71. if v.ProvinceCode == gconv.Int(v3["cust_dist_code"]) {
  72. v.Count = gconv.Int(v3["count"])
  73. }
  74. }
  75. }
  76. return
  77. }
  78. //创建区域
  79. func (s *salesRegionDetailService) Create(req *model.AddBaseRegionDetailReq) (err error) {
  80. detailData := new(model.BaseSalesRegionDetail)
  81. if err = gconv.Struct(req, detailData); err != nil {
  82. return
  83. }
  84. detailData.RegionId = req.RegionId
  85. detailData.ProvinceCode = req.ProvinceCode
  86. service.SetCreatedInfo(detailData, s.GetCxtUserId(), s.GetCxtUserName())
  87. _, err = s.Dao.Insert(detailData)
  88. if err != nil {
  89. g.Log().Error(err)
  90. return err
  91. }
  92. return nil
  93. }
  94. //UpdateById 修改
  95. func (s *salesRegionDetailService) UpdateById(req *model.UpdateBaseRegionDetailReq) (err error) {
  96. count, err := s.Dao.FindCount(req.Id)
  97. if err != nil {
  98. g.Log().Error(err)
  99. return
  100. }
  101. if count == 0 {
  102. err = myerrors.TipsError("无修改数据")
  103. return
  104. }
  105. productData := new(model.BaseSalesRegionDetail)
  106. if err = gconv.Struct(req, productData); err != nil {
  107. g.Log().Error(err)
  108. return
  109. }
  110. service.SetUpdatedInfo(productData, s.GetCxtUserId(), s.GetCxtUserName())
  111. _, err = s.Dao.FieldsEx(base.BaseSalesRegionDetail.Columns.CreatedTime, base.BaseSalesRegionDetail.Columns.CreatedBy, base.BaseSalesRegionDetail.Columns.CreatedName).
  112. WherePri(base.BaseSalesRegionDetail.Columns.Id, req.Id).Update(productData)
  113. if err != nil {
  114. g.Log().Error(err)
  115. return
  116. }
  117. return
  118. }
  119. //DeleteByIds 删除
  120. func (s *salesRegionDetailService) DeleteByIds(ids []int64) (err error) {
  121. if len(ids) == 1 {
  122. count, err := s.Dao.WherePri(ids[0]).Count()
  123. if err != nil {
  124. g.Log().Error(err)
  125. return err
  126. }
  127. if count == 0 {
  128. return myerrors.TipsError("数据不存在或已被删除,请刷新页面")
  129. }
  130. } else {
  131. _, err := s.Dao.WhereIn(s.Dao.Columns.Id, ids).LockShared().Count()
  132. if err != nil {
  133. g.Log().Error(err)
  134. return err
  135. }
  136. result, err := s.Dao.WhereIn(s.Dao.Columns.Id, ids).Delete()
  137. if err != nil {
  138. g.Log().Error(err)
  139. return err
  140. }
  141. rows, err := result.RowsAffected()
  142. if err == nil {
  143. if len(ids) != int(rows) {
  144. return myerrors.TipsError(fmt.Sprintf("应更新%s行,实际更新%s行", len(ids), int(rows)))
  145. }
  146. }
  147. }
  148. return
  149. }