base_sales_region_detail.go 4.7 KB

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