ParameterRepository.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\common\repositories\store\parameter;
  12. use app\common\dao\store\parameter\ParameterDao;
  13. use app\common\repositories\BaseRepository;
  14. class ParameterRepository extends BaseRepository
  15. {
  16. /**
  17. * @var ParameterDao
  18. */
  19. protected $dao;
  20. /**
  21. * ParameterRepository constructor.
  22. * @param ParameterDao $dao
  23. */
  24. public function __construct(ParameterDao $dao)
  25. {
  26. $this->dao = $dao;
  27. }
  28. public function save($id, $merId, $data, $productId = 0)
  29. {
  30. foreach ($data as $datum) {
  31. $value = implode('&', $datum['value']);
  32. $create = $this->create(['template_id' => $id, 'name' => $datum['name'], 'value' => $value, 'sort' => $datum['sort'], 'mer_id' => $merId]);
  33. $pv = ['parameter_id' => $create->parameter_id, 'product_id' => $productId, 'name' => $datum['name'],];
  34. foreach ($datum['value'] as $v) {
  35. $res[] = array_merge(['value' => $v], $pv) ;
  36. }
  37. }
  38. app()->make(ParameterValueRepository::class)->insertAll($res);
  39. }
  40. /**
  41. * 更新或者添加参数
  42. * @param $id
  43. * @param $merId
  44. * @param $data
  45. * @author Qinii
  46. * @day 2022/11/22
  47. */
  48. public function createOrUpdate($id, $merId, $data,$productId = 0)
  49. {
  50. $parameterValueRepository = app()->make(ParameterValueRepository::class);
  51. foreach ($data as &$datum) {
  52. $values = array_column($datum['values'],'value');
  53. $value = implode('&',$values);
  54. if (isset($datum['parameter_id']) && $datum['parameter_id']) {
  55. $update = [
  56. 'name' => $datum['name'],
  57. 'value' => $value,
  58. 'sort' => $datum['sort'] ?? 0,
  59. ];
  60. $this->dao->update($datum['parameter_id'], $update);
  61. } else {
  62. $create = $this->create([
  63. 'template_id' => $id,
  64. 'name' => $datum['name'],
  65. 'value' => $value,
  66. 'sort' => $datum['sort'] ?? 0,
  67. 'mer_id' => $merId
  68. ]);
  69. $datum['parameter_id'] = $create->parameter_id;
  70. }
  71. }
  72. $parameterValueRepository->create($data, 0 , $merId);
  73. }
  74. /**
  75. * 更新差异的删除操作
  76. * @param int $id
  77. * @param array $params
  78. * @author Qinii
  79. * @day 2022/11/22
  80. */
  81. public function diffDelete(int $id, array $params)
  82. {
  83. $paramsKey = array_unique(array_column($params,'parameter_id'));
  84. $this->dao->getSearch([])->where('template_id',$id)->whereNotIn('parameter_id',$paramsKey)->delete();
  85. }
  86. }