base_sales_region_detail.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package base
  2. import (
  3. "context"
  4. "github.com/gogf/gf/errors/gerror"
  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. "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. func (p *salesRegionDetailService) GetList(req *model.SecBaseRegionDetailReq) (total int, RegionList []*model.BaseRegionDetailRep, err error) {
  40. Model := p.Dao.M
  41. Model = Model.Where(p.Dao.Columns.RegionId, req.RegionId).Where(p.Dao.Columns.DeletedTime + " is null")
  42. total, err = Model.Count()
  43. if err != nil {
  44. g.Log().Error(err)
  45. err = gerror.New("获取总行数失败")
  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. err = gerror.New("获取数据失败")
  55. return
  56. }
  57. var districtList []int
  58. for _, v := range RegionList {
  59. districtList = append(districtList, v.ProvinceCode)
  60. }
  61. CustModel := p.CustomerDao.M
  62. CustModel = CustModel.Fields("count(*) as count,cust_dist_code").Where("cust_dist_code in (?)", districtList)
  63. if req.CustName != "" {
  64. g.Log().Info("custName", req.CustName)
  65. CustModel = CustModel.Where(p.CustomerDao.Columns.CustName+" like ?", "%"+req.CustName+"%")
  66. }
  67. if req.CustCode != "" {
  68. g.Log().Info("客户编码搜索", req)
  69. CustModel = CustModel.Where(p.CustomerDao.Columns.CustCode+" like ?", "%"+req.CustCode+"%")
  70. }
  71. if req.CustIndustry != "" {
  72. CustModel = CustModel.Where(p.CustomerDao.Columns.CustIndustry+" like ?", "%"+req.CustIndustry+"%")
  73. }
  74. total, err = Model.Fields().Count()
  75. dist, _ := p.District.M.Fields("dist_name,dist_code").Where("dist_code in (?)", districtList).All()
  76. custDist, _ := CustModel.Group("cust_dist_code").All()
  77. for _, v := range RegionList {
  78. for _, v2 := range dist {
  79. if v.ProvinceCode == gconv.Int(v2["dist_code"]) {
  80. v.DistName = gconv.String(v2["dist_name"])
  81. }
  82. }
  83. for _, v3 := range custDist {
  84. if v.ProvinceCode == gconv.Int(v3["cust_dist_code"]) {
  85. v.Count = gconv.Int(v3["count"])
  86. }
  87. }
  88. }
  89. g.Log().Info("List", RegionList)
  90. return
  91. }
  92. //创建区域
  93. func (p *salesRegionDetailService) Create(req *model.AddBaseRegionDetailReq) (err error) {
  94. Model := p.Dao.M
  95. detailData := new(model.BaseSalesRegionDetail)
  96. if err = gconv.Struct(req, detailData); err != nil {
  97. return
  98. }
  99. service.SetCreatedInfo(detailData, p.GetCxtUserId(), p.GetCxtUserName())
  100. detailData.RegionId = req.RegionId
  101. detailData.ProvinceCode = req.ProvinceCode
  102. service.SetCreatedInfo(detailData, p.GetCxtUserId(), p.GetCxtUserName())
  103. _, err = Model.Insert(detailData)
  104. if err != nil {
  105. return err
  106. }
  107. return nil
  108. }
  109. //更新
  110. func (p *salesRegionDetailService) UpdateById(req *model.UpdateBaseRegionDetailReq) (err error) {
  111. //uptime := gtime.New(time.Now())
  112. db := p.Dao.M
  113. record, err := db.FindOne("Id", req.Id)
  114. if err != nil || record.IsEmpty() {
  115. err = gerror.New("该数据不存在")
  116. return err
  117. }
  118. productData := new(model.BaseSalesRegionDetail)
  119. if err = gconv.Struct(req, productData); err != nil {
  120. return
  121. }
  122. service.SetUpdatedInfo(productData, p.GetCxtUserId(), p.GetCxtUserName())
  123. _, err = db.FieldsEx(base.BaseSalesRegionDetail.Columns.CreatedTime, base.BaseSalesRegionDetail.Columns.CreatedBy, base.BaseSalesRegionDetail.Columns.CreatedName).
  124. WherePri(base.BaseSalesRegionDetail.Columns.Id, req.Id).Update(productData)
  125. if err != nil {
  126. g.Log().Error(err)
  127. err = gerror.New("修改信息失败")
  128. return
  129. }
  130. return
  131. }
  132. //删除
  133. func (p *salesRegionDetailService) DeleteById(req int) (err error) {
  134. Model := p.Dao.M
  135. regionDetail := new(model.BaseSalesRegionDetail)
  136. err = Model.Where(p.Dao.Columns.Id, req).Scan(&regionDetail)
  137. //g.Log().Info("DeleteByIds", one)
  138. if err != nil {
  139. g.Log().Error(err)
  140. err = gerror.New("没有要删除的数据")
  141. return
  142. }
  143. regionDetail.DeletedTime = gtime.Now()
  144. _, err = Model.FieldsEx(EgionDetailFieldEx).
  145. WherePri(p.Dao.Columns.Id, req).Update(regionDetail)
  146. if err != nil {
  147. g.Log().Error(err)
  148. err = gerror.New("删除数据失败")
  149. return err
  150. }
  151. return
  152. }
  153. //省份客户
  154. //func (p *salesRegionDetailService) GetCustomerList(distributor []string) (list []*model.BaseRegionCustomer, err error) {
  155. // Model := p.CustomerDao.M
  156. // Model.Where("cust_location", "%%")
  157. //
  158. // //if req.CustName != "" {
  159. // // Model = Model.Where("cust_name ", req.CustName)
  160. // //}
  161. // ////客户编码
  162. // //if req.CustCode != "" {
  163. // // Model = Model.Where("cust_name ", req.CustCode)
  164. // //}
  165. // //err = Model.Fields("count(*) counts").Page(req.PageNum, req.PageSize).Order("id desc").Scan($list)
  166. // return
  167. //}