package base import ( "context" "github.com/gogf/gf/errors/gerror" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/os/gtime" "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 } func (p *salesRegionDetailService) GetList(req *model.SecBaseRegionDetailReq) (total int, RegionList []*model.BaseRegionDetailRep, err error) { Model := p.Dao.M Model = Model.Where(p.Dao.Columns.RegionId, req.RegionId).Where(p.Dao.Columns.DeletedTime + " is null") 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 = CustModel.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(p.CustomerDao.Columns.CustName+" like ?", "%"+req.CustName+"%") } if req.CustCode != "" { g.Log().Info("客户编码搜索", req) CustModel = CustModel.Where(p.CustomerDao.Columns.CustCode+" like ?", "%"+req.CustCode+"%") } if req.CustIndustry != "" { CustModel = CustModel.Where(p.CustomerDao.Columns.CustIndustry+" like ?", "%"+req.CustIndustry+"%") } total, err = Model.Fields().Count() dist, _ := p.District.M.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["dist_code"]) { v.DistName = gconv.String(v2["dist_name"]) } } 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 (p *salesRegionDetailService) Create(req *model.AddBaseRegionDetailReq) (err error) { Model := p.Dao.M detailData := new(model.BaseSalesRegionDetail) if err = gconv.Struct(req, detailData); err != nil { return } service.SetCreatedInfo(detailData, p.GetCxtUserId(), p.GetCxtUserName()) detailData.RegionId = req.RegionId detailData.ProvinceCode = req.ProvinceCode service.SetCreatedInfo(detailData, p.GetCxtUserId(), p.GetCxtUserName()) _, err = Model.Insert(detailData) if err != nil { return err } return nil } //更新 func (p *salesRegionDetailService) UpdateById(req *model.UpdateBaseRegionDetailReq) (err error) { //uptime := gtime.New(time.Now()) db := p.Dao.M record, err := db.FindOne("Id", req.Id) if err != nil || record.IsEmpty() { err = gerror.New("该数据不存在") return err } productData := new(model.BaseSalesRegionDetail) if err = gconv.Struct(req, productData); err != nil { return } service.SetUpdatedInfo(productData, p.GetCxtUserId(), p.GetCxtUserName()) _, err = db.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) err = gerror.New("修改信息失败") return } return } //删除 func (p *salesRegionDetailService) DeleteById(req int) (err error) { Model := p.Dao.M regionDetail := new(model.BaseSalesRegionDetail) err = Model.Where(p.Dao.Columns.Id, req).Scan(®ionDetail) //g.Log().Info("DeleteByIds", one) if err != nil { g.Log().Error(err) err = gerror.New("没有要删除的数据") return } regionDetail.DeletedTime = gtime.Now() _, err = Model.FieldsEx(EgionDetailFieldEx). WherePri(p.Dao.Columns.Id, req).Update(regionDetail) if err != nil { g.Log().Error(err) err = gerror.New("删除数据失败") return err } return } //省份客户 //func (p *salesRegionDetailService) GetCustomerList(distributor []string) (list []*model.BaseRegionCustomer, err error) { // Model := p.CustomerDao.M // Model.Where("cust_location", "%%") // // //if req.CustName != "" { // // Model = Model.Where("cust_name ", req.CustName) // //} // ////客户编码 // //if req.CustCode != "" { // // Model = Model.Where("cust_name ", req.CustCode) // //} // //err = Model.Fields("count(*) counts").Page(req.PageNum, req.PageSize).Order("id desc").Scan($list) // return //}