base_distributor.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package base
  2. import (
  3. "context"
  4. "dashoo.cn/opms_libary/myerrors"
  5. "github.com/gogf/gf/container/garray"
  6. "github.com/gogf/gf/frame/g"
  7. "github.com/gogf/gf/util/gconv"
  8. "dashoo.cn/micro/app/dao/base"
  9. model "dashoo.cn/micro/app/model/base"
  10. "dashoo.cn/micro/app/service"
  11. )
  12. type distributorService struct {
  13. *service.ContextService
  14. Dao *base.BaseDistributorDao
  15. }
  16. func NewDistributorService(ctx context.Context) (svc *distributorService, err error) {
  17. svc = new(distributorService)
  18. if svc.ContextService, err = svc.Init(ctx); err != nil {
  19. return nil, err
  20. }
  21. svc.Dao = base.NewBaseDistributorDao(svc.Tenant)
  22. return svc, nil
  23. }
  24. // GetList 经销商信息列表
  25. func (s *distributorService) GetList(req *model.BaseDistributorSearchReq) (total int, distributorList []*model.DistributorRonp, err error) {
  26. distributorModel := s.Dao.FieldsEx(s.Dao.C.DeletedTime)
  27. // 用户仅有销售工程师角色展示自己的数据,其他人可以看到所有数据
  28. if garray.NewStrArrayFrom(s.CxtUser.Roles, true).Contains("SalesEngineer") {
  29. distributorModel = distributorModel.WhereIn("belong_sale_id", s.DataScope["userIds"])
  30. }
  31. if req.DistCode != "" {
  32. distributorModel = distributorModel.WhereLike(s.Dao.C.DistCode, "%"+req.DistCode+"%")
  33. }
  34. if req.DistName != "" {
  35. distributorModel = distributorModel.WhereLike(s.Dao.C.DistName, "%"+req.DistName+"%")
  36. }
  37. if req.BelongSale != "" {
  38. distributorModel = distributorModel.WhereLike(s.Dao.C.BelongSale, "%"+req.BelongSale+"%")
  39. }
  40. if len(req.ProvinceId) > 0 {
  41. distributorModel = distributorModel.WhereIn(s.Dao.C.ProvinceId, req.ProvinceId)
  42. }
  43. total, err = distributorModel.Count()
  44. if err != nil {
  45. err = myerrors.DbError("获取总行数失败。")
  46. return
  47. }
  48. err = distributorModel.Page(req.GetPage()).Order("id desc").Scan(&distributorList)
  49. return
  50. }
  51. // 获取经销商编号
  52. func (s *distributorService) getDistributorCode(distCode string) (string, error) {
  53. sequence, err := service.Sequence(s.Dao.DB, "distributor_code")
  54. if err != nil {
  55. return "", err
  56. }
  57. return distCode + sequence, nil
  58. }
  59. // Create 经销商创建
  60. func (s *distributorService) Create(req *model.AddDistributor) (lastId int64, err error) {
  61. DistributorData := new(model.BaseDistributor)
  62. if err = gconv.Struct(req, DistributorData); err != nil {
  63. return
  64. }
  65. DistributorData.DistCode, err = s.getDistributorCode("JXS")
  66. if err != nil {
  67. return 0, err
  68. }
  69. service.SetCreatedInfo(DistributorData, s.GetCxtUserId(), s.GetCxtUserName())
  70. lastId, err = s.Dao.InsertAndGetId(DistributorData)
  71. if err != nil {
  72. return 0, err
  73. }
  74. return
  75. }
  76. // GetEntityById 详情
  77. func (s *distributorService) GetEntityById(id int64) (distributorInfo *model.DistributorRonp, err error) {
  78. err = s.Dao.Where(base.BaseProduct.C.Id, id).Scan(&distributorInfo)
  79. if err != nil {
  80. return
  81. }
  82. return
  83. }
  84. // UpdateById 修改数据
  85. func (s *distributorService) UpdateById(req *model.UpdateDistributorReq) (err error) {
  86. count, err := s.Dao.Where("id = ", req.Id).Count()
  87. if err != nil {
  88. g.Log().Error(err)
  89. return
  90. }
  91. if count == 0 {
  92. err = myerrors.TipsError("无修改数据")
  93. return
  94. }
  95. distData := new(model.BaseDistributor)
  96. if err = gconv.Struct(req, distData); err != nil {
  97. return
  98. }
  99. service.SetUpdatedInfo(distData, s.GetCxtUserId(), s.GetCxtUserName())
  100. _, err = s.Dao.FieldsEx(s.Dao.C.DistCode, s.Dao.C.Id,
  101. s.Dao.C.CreatedName, s.Dao.C.CreatedBy, s.Dao.C.CreatedTime).WherePri(s.Dao.C.Id, req.Id).Update(distData)
  102. if err != nil {
  103. g.Log().Error(err)
  104. return
  105. }
  106. return
  107. }
  108. // DeleteByIds 删除
  109. func (s *distributorService) DeleteByIds(ids []int64) (err error) {
  110. _, err = s.Dao.WhereIn(s.Dao.C.Id, ids).Delete()
  111. if err != nil {
  112. return err
  113. }
  114. return
  115. }