package base import ( "context" "fmt" "dashoo.cn/opms_libary/myerrors" "github.com/gogf/gf/errors/gerror" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/util/gconv" "dashoo.cn/micro/app/dao/base" "dashoo.cn/micro/app/dao/cust" model "dashoo.cn/micro/app/model/base" "dashoo.cn/micro/app/service" ) var EgionDetailFieldEx = []interface{}{ "id", "created_by", "created_name", "created_time", "province_code", "remark", "updated_by", "updated_name", "updated_time", } type salesRegionDetailService struct { *service.ContextService Dao *base.BaseSalesRegionDetailDao District *base.BaseDistrictDao CustomerDao *cust.CustCustomerDao } func NewSalesRegionDetailService(ctx context.Context) (svc *salesRegionDetailService, err error) { svc = new(salesRegionDetailService) if svc.ContextService, err = svc.Init(ctx); err != nil { return nil, err } svc.Dao = base.NewBaseSalesRegionDetailDao(svc.Tenant) svc.District = base.NewBaseDistrictDao(svc.Tenant) svc.CustomerDao = cust.NewCustCustomerDao(svc.Tenant) return svc, nil } //GetList 销售区域列表 func (s *salesRegionDetailService) GetList(req *model.SecBaseRegionDetailReq) (total int, RegionList []*model.BaseRegionDetailRep, err error) { Model := s.Dao.M Model = Model.Where(s.Dao.Columns.RegionId, req.RegionId) total, err = Model.Count() if err != nil { g.Log().Error(err) err = gerror.New("获取总行数失败") return } if req.PageNum == 0 { req.PageNum = 1 } err = Model.Page(req.PageNum, req.PageSize).Order("id asc").Scan(&RegionList) if err != nil { g.Log().Error(err) err = gerror.New("获取数据失败") return } var districtList []int for _, v := range RegionList { districtList = append(districtList, v.ProvinceCode) } //CustModel := p.CustomerDao.M CustModel := s.CustomerDao.M.Fields("count(*) as count,cust_dist_code").Where("cust_dist_code in (?)", districtList) if req.CustName != "" { g.Log().Info("custName", req.CustName) CustModel = CustModel.Where(s.CustomerDao.Columns.CustName+" like ?", "%"+req.CustName+"%") } if req.CustCode != "" { g.Log().Info("客户编码搜索", req) CustModel = CustModel.Where(s.CustomerDao.Columns.CustCode+" like ?", "%"+req.CustCode+"%") } if req.CustIndustry != "" { CustModel = CustModel.Where(s.CustomerDao.Columns.CustIndustry+" like ?", "%"+req.CustIndustry+"%") } total, err = Model.Fields().Count() dist, _ := s.District.Fields("dist_name,dist_code").Where("dist_code in (?)", districtList).All() custDist, _ := CustModel.Group("cust_dist_code").All() for _, v := range RegionList { for _, v2 := range dist { if v.ProvinceCode == gconv.Int(v2.DistCode) { v.DistName = gconv.String(v2.DistName) } } for _, v3 := range custDist { if v.ProvinceCode == gconv.Int(v3["cust_dist_code"]) { v.Count = gconv.Int(v3["count"]) } } } g.Log().Info("List", RegionList) return } //创建区域 func (s *salesRegionDetailService) Create(req *model.AddBaseRegionDetailReq) (err error) { detailData := new(model.BaseSalesRegionDetail) if err = gconv.Struct(req, detailData); err != nil { return } detailData.RegionId = req.RegionId detailData.ProvinceCode = req.ProvinceCode service.SetCreatedInfo(detailData, s.GetCxtUserId(), s.GetCxtUserName()) _, err = s.Dao.Insert(detailData) if err != nil { return err } return nil } //UpdateById 修改 func (s *salesRegionDetailService) UpdateById(req *model.UpdateBaseRegionDetailReq) (err error) { count, err := s.Dao.FindCount(req.Id) if err != nil { g.Log().Error(err) return } if count == 0 { err = myerrors.NewMsgError(nil, "无修改数据") return } productData := new(model.BaseSalesRegionDetail) if err = gconv.Struct(req, productData); err != nil { g.Log().Error(err) return } service.SetUpdatedInfo(productData, s.GetCxtUserId(), s.GetCxtUserName()) _, err = s.Dao.FieldsEx(base.BaseSalesRegionDetail.Columns.CreatedTime, base.BaseSalesRegionDetail.Columns.CreatedBy, base.BaseSalesRegionDetail.Columns.CreatedName). WherePri(base.BaseSalesRegionDetail.Columns.Id, req.Id).Update(productData) if err != nil { g.Log().Error(err) return } return } //DeleteByIds 删除 func (s *salesRegionDetailService) DeleteByIds(ids []int64) (err error) { if len(ids) == 1 { count, err := s.Dao.WherePri(ids[0]).Count() if err != nil { g.Log().Error(err) return err } if count == 0 { return myerrors.NewMsgError(nil, "数据不存在或已被删除,请刷新页面") } } else { _, err := s.Dao.WhereIn(s.Dao.Columns.Id, ids).LockShared().Count() if err != nil { g.Log().Error(err) return err } result, err := s.Dao.WhereIn(s.Dao.Columns.Id, ids).Delete() if err != nil { g.Log().Error(err) return err } rows, err := result.RowsAffected() if err == nil { if len(ids) != int(rows) { return myerrors.NewMsgError(nil, fmt.Sprintf("应更新%s行,实际更新%s行", len(ids), int(rows))) } } } return }