From 2c8c78f1167ef52a10d8e6168199014a69ea9918 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Wed, 22 Feb 2023 16:37:09 +0800 Subject: [PATCH] 1 --- .../store/parameter/ParameterRepository.php | 80 ++++++++ .../parameter/ParameterTemplateRepository.php | 175 ++++++++++++++++++ .../parameter/ParameterValueRepository.php | 56 ++++++ cert_crmeb.key | 2 +- 4 files changed, 312 insertions(+), 1 deletion(-) create mode 100644 app/common/repositories/store/parameter/ParameterRepository.php create mode 100644 app/common/repositories/store/parameter/ParameterTemplateRepository.php create mode 100644 app/common/repositories/store/parameter/ParameterValueRepository.php diff --git a/app/common/repositories/store/parameter/ParameterRepository.php b/app/common/repositories/store/parameter/ParameterRepository.php new file mode 100644 index 00000000..0519758f --- /dev/null +++ b/app/common/repositories/store/parameter/ParameterRepository.php @@ -0,0 +1,80 @@ + +// +---------------------------------------------------------------------- + +namespace app\common\repositories\store\parameter; + +use app\common\dao\store\parameter\ParameterDao; +use app\common\repositories\BaseRepository; + +class ParameterRepository extends BaseRepository +{ + /** + * @var ParameterDao + */ + protected $dao; + + + /** + * ParameterRepository constructor. + * @param ParameterDao $dao + */ + public function __construct(ParameterDao $dao) + { + $this->dao = $dao; + } + + /** + * TODO 更新或者添加参数 + * @param $id + * @param $merId + * @param $data + * @author Qinii + * @day 2022/11/22 + */ + public function createOrUpdate($id, $merId, $data) + { + foreach ($data as $datum) { + if (isset($datum['parameter_id']) && $datum['parameter_id']) { + $update = [ + 'name' => $datum['name'], + 'value' => $datum['value'], + 'sort' => $datum['sort'], + ]; + $this->dao->update($datum['parameter_id'], $update); + $changeKey[] = $datum['parameter_id']; + } else { + $create[] = [ + 'template_id' => $id, + 'name' => $datum['name'], + 'value' => $datum['value'], + 'sort' => $datum['sort'], + 'mer_id' => $merId + ]; + } + } + if (!empty($create)) $this->dao->insertAll($create); + } + + /** + * TODO 更新差异的删除操作 + * @param int $id + * @param array $params + * @author Qinii + * @day 2022/11/22 + */ + public function diffDelete(int $id, array $params) + { + $paramsKey = array_unique(array_column($params,'parameter_id')); + $this->dao->getSearch([])->where('template_id',$id)->whereNotIn('parameter_id',$paramsKey)->delete(); + } +} + diff --git a/app/common/repositories/store/parameter/ParameterTemplateRepository.php b/app/common/repositories/store/parameter/ParameterTemplateRepository.php new file mode 100644 index 00000000..2f9dda4b --- /dev/null +++ b/app/common/repositories/store/parameter/ParameterTemplateRepository.php @@ -0,0 +1,175 @@ + +// +---------------------------------------------------------------------- + +namespace app\common\repositories\store\parameter; + +use app\common\dao\store\parameter\ParameterTemplateDao; +use app\common\repositories\BaseRepository; +use app\common\repositories\system\RelevanceRepository; +use think\exception\ValidateException; +use think\facade\Db; + +class ParameterTemplateRepository extends BaseRepository +{ + /** + * @var ParameterTemplateDao + */ + protected $dao; + + + /** + * ParameterRepository constructor. + * @param ParameterTemplateDao $dao + */ + public function __construct(ParameterTemplateDao $dao) + { + $this->dao = $dao; + } + + /** + * TODO 列表 + * @param array $where + * @param int $page + * @param int $limit + * @return array + * @author Qinii + * @day 2022/11/22 + */ + public function getList(array $where, int $page, int $limit) + { + $query = $this->dao->getSearch($where)->with([ + 'cateId' => function($query){ + $query->with(['category' =>function($query) { + $query->field('store_category_id,cate_name'); + }]); + }, + 'merchant' => function($query) { + $query->field('mer_id,mer_name'); + } +// 'parameter' =>function($query){ +// $query->field('parameter_id,template_id,name,value,sort')->order('sort DESC'); +// } + ])->order('sort DESC,create_time DESC'); + $count = $query->count(); + $list = $query->page($page, $limit)->select(); + return compact('count', 'list'); + } + + public function getSelect(array $where) + { + return$this->dao->getSearch($where)->field('template_name label,template_id value')->select(); + } + + /** + * TODO 详情 + * @param $id + * @param $merId + * @return array|\think\Model + * @author Qinii + * @day 2022/11/22 + */ + public function detail($id,$merId) + { + $where['template_id'] = $id; + if ($merId) $where['mer_id'] = $merId; + $data = $this->dao->getSearch($where)->with([ + 'cateId' => function($query){ + $query->with(['category' =>function($query) { + $query->field('store_category_id,cate_name'); + }]); + }, + 'parameter' =>function($query){ + $query->field('parameter_id,template_id,name,value,sort')->order('sort DESC'); + }, + 'merchant' => function($query){ + $query->field('mer_name,mer_id'); + } + ])->find(); + if (!$data) throw new ValidateException('数据不存在'); + return $data; + } + + public function show($where) + { + $data = $this->dao->getSearch($where)->with([ + 'parameter' =>function($query){ + $query->field('parameter_id,template_id,name,value,mer_id,sort')->order('sort DESC'); + } + ])->order('mer_id ASC,create_time DESC')->select(); + $list = []; + foreach ($data as $datum) { + if ($datum['parameter']) { + foreach ($datum['parameter'] as $item) { + $list[] = $item; + } + } + } + return $list; + } + /** + * TODO 添加模板 + * @param $merId + * @param $data + * @author Qinii + * @day 2022/11/22 + */ + public function create($merId, $data) + { + $params = $data['params']; + $cate = array_unique($data['cate_ids']); + $tem = [ + 'template_name' => $data['template_name'], + 'sort' => $data['sort'], + 'mer_id' => $merId + ]; + $paramMake = app()->make(ParameterRepository::class); + $releMake = app()->make(RelevanceRepository::class); + Db::transaction(function() use($params, $tem, $cate,$merId,$paramMake,$releMake) { + $temp = $this->dao->create($tem); + $paramMake->createOrUpdate($temp->template_id, $merId, $params); + if (!empty($cate)) $releMake->createMany($temp->template_id, $cate, RelevanceRepository::PRODUCT_PARAMES_CATE); + }); + } + + public function update($id, $data, $merId = 0) + { + $params = $data['params']; + $cate = array_unique($data['cate_ids']); + $tem = [ + 'template_name' => $data['template_name'], + 'sort' => $data['sort'], + ]; + + $paramMake = app()->make(ParameterRepository::class); + $releMake = app()->make(RelevanceRepository::class); + Db::transaction(function() use($id, $params, $tem, $cate,$paramMake,$releMake,$merId) { + $this->dao->update($id,$tem); + $paramMake->diffDelete($id, $params); + $paramMake->createOrUpdate($id, $merId, $params); + $releMake->batchDelete($id,RelevanceRepository::PRODUCT_PARAMES_CATE); + if (!empty($cate)) $releMake->createMany($id, $cate, RelevanceRepository::PRODUCT_PARAMES_CATE);; + }); + } + + public function delete($id) + { + $paramMake = app()->make(ParameterRepository::class); + $releMake = app()->make(RelevanceRepository::class); + Db::transaction(function() use($id, $paramMake,$releMake) { + $this->dao->delete($id); + $paramMake->getSearch(['template_id' => $id])->delete(); + $releMake->batchDelete($id,RelevanceRepository::PRODUCT_PARAMES_CATE); + }); + } + +} + diff --git a/app/common/repositories/store/parameter/ParameterValueRepository.php b/app/common/repositories/store/parameter/ParameterValueRepository.php new file mode 100644 index 00000000..f472a0bb --- /dev/null +++ b/app/common/repositories/store/parameter/ParameterValueRepository.php @@ -0,0 +1,56 @@ + +// +---------------------------------------------------------------------- + +namespace app\common\repositories\store\parameter; + +use app\common\dao\store\parameter\ParameterValueDao; +use app\common\repositories\BaseRepository; + +class ParameterValueRepository extends BaseRepository +{ + /** + * @var ParameterValueDao + */ + protected $dao; + + + /** + * ParameterRepository constructor. + * @param ParameterValueDao $dao + */ + public function __construct(ParameterValueDao $dao) + { + $this->dao = $dao; + } + + public function create($id, $data,$merId) + { + if (empty($data)) return ; + foreach ($data as $datum) { + if ($datum['name'] && $datum['value']) { + $create[] = [ + 'product_id' => $id, + 'name' => $datum['name'] , + 'value' => $datum['value'], + 'sort' => $datum['sort'], + 'parameter_id' => $datum['parameter_id'] ?? 0, + 'mer_id' => $datum['mer_id'] ?? $merId, + 'create_time' => date('Y-m-d H:i:s',time()) + ]; + } + } + if ($create) $this->dao->insertAll($create); + } + + +} + diff --git a/cert_crmeb.key b/cert_crmeb.key index 2c0ec1c0..902bdba9 100644 --- a/cert_crmeb.key +++ b/cert_crmeb.key @@ -1 +1 @@ -DtY7vc634+tbokk7ghP0HxmLhcmcb8JojfiEMu649qaPcpUdkH89ooxhTJMrVQKBz/+7V3WRCyy7c+GcIDYBHUMACTUgLQoW/tbfpR/WkWqQHQeLCypUuQW3O7b19kW0FR7n78OekUQE7PcVKFgN0q4ZSnVpCgZvz/g3gYaKw4+Ps3JO10dEhB7S/GiEX/789YMuLJH8mCHwkd17D8RXxf7BLBBLReHJPeqBdFn0R5NffDlyA/PfT+5WJkU1k3TONLfgBx4V64UhPI8OPxFuMZ+zx+HQAw9bJpDL4dSFXaAdK01m4x7Ct3ytPeU+IvfFvHGZGonyKmi3MToI1EhQOw==, \ No newline at end of file +eGLIHy0d5ysrt4c51m6Ev5eYSioxvuaYGamNpC4RBvcMpiPimekBjgcMygeq23YLqKH7ArRWZY8unFahNkGMgdVlvag9xsjshlrAOdY44KG4aBGGtRMyC4Sc4Gd1K54N6C19tMyrhGmezlz8IiOfLj0RZR++Up7DuP9UeqMnbZxAbwSAsK0YiVafiBoaIt4gj64CyWjfhlJDJjheCZjsX+y+YrLtZskprX2ongF8C8mkyJ0g02cPcUvEiocLbbHUXj/ijNgiLU3NYLE5z+mVoxD3ek7q9hWVspplG6Mebl56u2HoJzgBrG0EX9E6ejV1Tcbo959qTEh9PgKC5LFhuA==, \ No newline at end of file