ParameterTemplateRepository.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2022 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\ParameterTemplateDao;
  13. use app\common\repositories\BaseRepository;
  14. use app\common\repositories\system\RelevanceRepository;
  15. use think\exception\ValidateException;
  16. use think\facade\Db;
  17. class ParameterTemplateRepository extends BaseRepository
  18. {
  19. /**
  20. * @var ParameterTemplateDao
  21. */
  22. protected $dao;
  23. /**
  24. * ParameterRepository constructor.
  25. * @param ParameterTemplateDao $dao
  26. */
  27. public function __construct(ParameterTemplateDao $dao)
  28. {
  29. $this->dao = $dao;
  30. }
  31. /**
  32. * TODO 列表
  33. * @param array $where
  34. * @param int $page
  35. * @param int $limit
  36. * @return array
  37. * @author Qinii
  38. * @day 2022/11/22
  39. */
  40. public function getList(array $where, int $page, int $limit)
  41. {
  42. $query = $this->dao->getSearch($where)->with([
  43. 'cateId' => function($query){
  44. $query->with(['category' =>function($query) {
  45. $query->field('store_category_id,cate_name');
  46. }]);
  47. },
  48. 'merchant' => function($query) {
  49. $query->field('mer_id,mer_name');
  50. }
  51. // 'parameter' =>function($query){
  52. // $query->field('parameter_id,template_id,name,value,sort')->order('sort DESC');
  53. // }
  54. ])->order('sort DESC,create_time DESC');
  55. $count = $query->count();
  56. $list = $query->page($page, $limit)->select();
  57. return compact('count', 'list');
  58. }
  59. public function getSelect(array $where)
  60. {
  61. return$this->dao->getSearch($where)->field('template_name label,template_id value')->select();
  62. }
  63. /**
  64. * TODO 详情
  65. * @param $id
  66. * @param $merId
  67. * @return array|\think\Model
  68. * @author Qinii
  69. * @day 2022/11/22
  70. */
  71. public function detail($id,$merId)
  72. {
  73. $where['template_id'] = $id;
  74. if ($merId) $where['mer_id'] = $merId;
  75. $data = $this->dao->getSearch($where)->with([
  76. 'cateId' => function($query){
  77. $query->with(['category' =>function($query) {
  78. $query->field('store_category_id,cate_name');
  79. }]);
  80. },
  81. 'parameter' =>function($query){
  82. $query->field('parameter_id,template_id,name,value,sort')->order('sort DESC');
  83. },
  84. 'merchant' => function($query){
  85. $query->field('mer_name,mer_id');
  86. }
  87. ])->find();
  88. if (!$data) throw new ValidateException('数据不存在');
  89. return $data;
  90. }
  91. public function show($where)
  92. {
  93. $data = $this->dao->getSearch($where)->with([
  94. 'parameter' =>function($query){
  95. $query->field('parameter_id,template_id,name,value,mer_id,sort')->order('sort DESC');
  96. }
  97. ])->order('mer_id ASC,create_time DESC')->select();
  98. $list = [];
  99. foreach ($data as $datum) {
  100. if ($datum['parameter']) {
  101. foreach ($datum['parameter'] as $item) {
  102. $list[] = $item;
  103. }
  104. }
  105. }
  106. return $list;
  107. }
  108. /**
  109. * TODO 添加模板
  110. * @param $merId
  111. * @param $data
  112. * @author Qinii
  113. * @day 2022/11/22
  114. */
  115. public function create($merId, $data)
  116. {
  117. $params = $data['params'];
  118. $cate = array_unique($data['cate_ids']);
  119. $tem = [
  120. 'template_name' => $data['template_name'],
  121. 'sort' => $data['sort'],
  122. 'mer_id' => $merId
  123. ];
  124. $paramMake = app()->make(ParameterRepository::class);
  125. $releMake = app()->make(RelevanceRepository::class);
  126. Db::transaction(function() use($params, $tem, $cate,$merId,$paramMake,$releMake) {
  127. $temp = $this->dao->create($tem);
  128. $paramMake->createOrUpdate($temp->template_id, $merId, $params);
  129. if (!empty($cate)) $releMake->createMany($temp->template_id, $cate, RelevanceRepository::PRODUCT_PARAMES_CATE);
  130. });
  131. }
  132. public function update($id, $data, $merId = 0)
  133. {
  134. $params = $data['params'];
  135. $cate = array_unique($data['cate_ids']);
  136. $tem = [
  137. 'template_name' => $data['template_name'],
  138. 'sort' => $data['sort'],
  139. ];
  140. $paramMake = app()->make(ParameterRepository::class);
  141. $releMake = app()->make(RelevanceRepository::class);
  142. Db::transaction(function() use($id, $params, $tem, $cate,$paramMake,$releMake,$merId) {
  143. $this->dao->update($id,$tem);
  144. $paramMake->diffDelete($id, $params);
  145. $paramMake->createOrUpdate($id, $merId, $params);
  146. $releMake->batchDelete($id,RelevanceRepository::PRODUCT_PARAMES_CATE);
  147. if (!empty($cate)) $releMake->createMany($id, $cate, RelevanceRepository::PRODUCT_PARAMES_CATE);;
  148. });
  149. }
  150. public function delete($id)
  151. {
  152. $paramMake = app()->make(ParameterRepository::class);
  153. $releMake = app()->make(RelevanceRepository::class);
  154. Db::transaction(function() use($id, $paramMake,$releMake) {
  155. $this->dao->delete($id);
  156. $paramMake->getSearch(['template_id' => $id])->delete();
  157. $releMake->batchDelete($id,RelevanceRepository::PRODUCT_PARAMES_CATE);
  158. });
  159. }
  160. }