| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- package base
- import (
- "context"
- "fmt"
- "dashoo.cn/opms_libary/myerrors"
- "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)
- 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)
- 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+"%")
- }
-
- 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
- }
|