base_sales_region_detail.go 4.9 KB

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