You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
318 lines
12 KiB
318 lines
12 KiB
1 year ago
|
<?php
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Author: CRMEB Team <admin@crmeb.com>
|
||
|
// +----------------------------------------------------------------------
|
||
|
|
||
|
namespace app\controller\admin\system\diy;
|
||
|
|
||
|
use app\common\repositories\article\ArticleRepository;
|
||
|
use app\common\repositories\store\product\ProductRepository;
|
||
|
use app\common\repositories\store\product\SpuRepository;
|
||
|
use app\common\repositories\store\StoreCategoryRepository;
|
||
|
use app\common\repositories\system\diy\DiyRepository;
|
||
|
use crmeb\basic\BaseController;
|
||
|
use think\App;
|
||
|
use think\exception\ValidateException;
|
||
|
|
||
|
class Diy extends BaseController
|
||
|
{
|
||
|
|
||
|
protected $repository;
|
||
|
public function __construct(App $app, DiyRepository $repository)
|
||
|
{
|
||
|
parent::__construct($app);
|
||
|
$this->repository = $repository;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* DIY列表
|
||
|
* @return mixed
|
||
|
* @throws \think\db\exception\DataNotFoundException
|
||
|
* @throws \think\db\exception\DbException
|
||
|
* @throws \think\db\exception\ModelNotFoundException
|
||
|
*/
|
||
|
public function lst()
|
||
|
{
|
||
|
$where = $this->request->params([
|
||
|
['status', ''],
|
||
|
['type', ''],
|
||
|
['name', ''],
|
||
|
['version', ''],
|
||
|
['is_diy',1]
|
||
|
]);
|
||
|
$where['mer_id'] = $this->request->merId();
|
||
|
[$page, $limit] = $this->getPage();
|
||
|
$data = $this->repository->getSysList($where,$page, $limit);
|
||
|
return app('json')->success($data);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 保存资源
|
||
|
* @param int $id
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function saveData(int $id = 0)
|
||
|
{
|
||
|
$data = $this->request->params([
|
||
|
['name', ''],
|
||
|
['title', ''],
|
||
|
['value', ''],
|
||
|
['type', '1'],
|
||
|
['cover_image', ''],
|
||
|
['is_show', 0],
|
||
|
['is_bg_color', 0],
|
||
|
['is_bg_pic', 0],
|
||
|
['bg_tab_val', 0],
|
||
|
['color_picker', ''],
|
||
|
['bg_pic', ''],
|
||
|
['is_diy',1],
|
||
|
]);
|
||
|
$data['mer_id'] = $this->request->merId();
|
||
|
$value = is_string($data['value']) ? json_decode($data['value'], true) : $data['value'];
|
||
|
$infoDiy = $id ? $this->repository->getWhere(['id' => $id, 'mer_id' => $data['mer_id']]) : [];
|
||
|
if ($infoDiy && $infoDiy['is_default'])
|
||
|
return app('json')->fail('默认模板不能修改');
|
||
|
if ($infoDiy) {
|
||
|
foreach ($value as $k => $item) {
|
||
|
if ($item['name'] === 'goodList') {
|
||
|
if (isset($item['selectConfig']['list'])) {
|
||
|
unset($item['selectConfig']['list']);
|
||
|
}
|
||
|
if (isset($item['goodsList']['list']) && is_array($item['goodsList']['list'])) {
|
||
|
$item['goodsList']['ids'] = array_column($item['goodsList']['list'], 'product_id');
|
||
|
unset($item['goodsList']['list']);
|
||
|
}
|
||
|
} elseif ($item['name'] === 'articleList') {
|
||
|
if (isset($item['selectList']['list']) && is_array($item['selectList']['list'])) {
|
||
|
unset($item['selectList']['list']);
|
||
|
}
|
||
|
} elseif ($item['name'] === 'promotionList') {
|
||
|
unset($item['productList']['list']);
|
||
|
}
|
||
|
$value[$k] = $item;
|
||
|
}
|
||
|
$data['value'] = json_encode($value);
|
||
|
} else {
|
||
|
if (isset($value['d_goodList']['selectConfig']['list'])) {
|
||
|
unset($value['d_goodList']['selectConfig']['list']);
|
||
|
} elseif (isset($value['d_goodList']['goodsList']['list'])) {
|
||
|
$limitMax = config('database.page.limitMax', 50);
|
||
|
if (isset($value['d_goodList']['numConfig']['val']) && isset($value['d_goodList']['tabConfig']['tabVal']) && $value['d_goodList']['tabConfig']['tabVal'] == 0 && $value['d_goodList']['numConfig']['val'] > $limitMax) {
|
||
|
return app('json')->fail('您设置得商品个数超出系统限制,最大限制' . $limitMax . '个商品');
|
||
|
}
|
||
|
$value['d_goodList']['goodsList']['ids'] = array_column($value['d_goodList']['goodsList']['list'], 'product_id');
|
||
|
unset($value['d_goodList']['goodsList']['list']);
|
||
|
} elseif (isset($value['k_newProduct']['goodsList']['list'])) {
|
||
|
$list = [];
|
||
|
foreach ($value['k_newProduct']['goodsList']['list'] as $item) {
|
||
|
$list[] = [
|
||
|
'image' => $item['image'],
|
||
|
'store_info' => $item['store_info'],
|
||
|
'store_name' => $item['store_name'],
|
||
|
'id' => $item['id'],
|
||
|
'price' => $item['price'],
|
||
|
'ot_price' => $item['ot_price'],
|
||
|
];
|
||
|
}
|
||
|
$value['k_newProduct']['goodsList']['list'] = $list;
|
||
|
} elseif (isset($value['selectList']['list']) && is_array($value['selectList']['list'])) {
|
||
|
unset($value['goodsList']['list']);
|
||
|
}
|
||
|
$data['value'] = json_encode($value, JSON_UNESCAPED_UNICODE);
|
||
|
}
|
||
|
$data['version'] = '1.0';
|
||
|
return app('json')->success($id ? '修改成功' : '保存成功',
|
||
|
['id' => $this->repository->saveData($id, $data)]
|
||
|
);
|
||
|
}
|
||
|
|
||
|
public function select()
|
||
|
{
|
||
|
$where = ['is_diy' => 0, 'is_del' => 0];
|
||
|
$data = $this->repository->getOptions($where);
|
||
|
return app('json')->success($data);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 删除模板
|
||
|
* @param $id
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function del($id)
|
||
|
{
|
||
|
$this->repository->del($id,$this->request->merId());
|
||
|
return app('json')->success('删除成功');
|
||
|
}
|
||
|
|
||
|
public function getDiyInfo()
|
||
|
{
|
||
|
return app('json')->success($this->repository->getDiyInfo(0,$this->request->merId()));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 使用模板
|
||
|
* @param $id
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function setStatus($id)
|
||
|
{
|
||
|
$this->repository->setUsed($id,$this->request->merId());
|
||
|
return app('json')->success('修改成功');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取一条数据
|
||
|
* @param int $id
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function getInfo(int $id)
|
||
|
{
|
||
|
if (!$id) throw new ValidateException('参数错误');
|
||
|
$info = $this->repository->getWhere([$this->repository->getPk() => $id, 'mer_id' => $this->request->merId()]);
|
||
|
if ($info) {
|
||
|
$info = $info->toArray();
|
||
|
} else {
|
||
|
throw new ValidateException('模板不存在');
|
||
|
}
|
||
|
$info['value'] = json_decode($info['value'], true);
|
||
|
if ($info['value']) {
|
||
|
$articleServices = app()->make(ArticleRepository::class);
|
||
|
if ($info['is_diy']) {
|
||
|
foreach ($info['value'] as &$item) {
|
||
|
if ($item['name'] === 'goodList' && isset($item['goodsList']['ids']) && count($item['goodsList']['ids'])) {
|
||
|
$item['goodsList']['list'] = app()->make(SpuRepository::class)->search(['product_ids' => $item['goodsList']['ids']])->select();
|
||
|
} elseif ($item['name'] === 'articleList') {//文章
|
||
|
$data = [];
|
||
|
if ($item['selectConfig']['activeValue'] ?? 0) {
|
||
|
$data = $articleServices->search(0,['cid' => $item['selectConfig']['activeValue'] ?? 0], 0, $item['numConfig']['val'] ?? 10);
|
||
|
$data = $data['list'];
|
||
|
}
|
||
|
$item['selectList']['list'] = $data['list'] ?? [];
|
||
|
} elseif ($item['name'] === 'promotionList') {//活动模仿
|
||
|
$data = [];
|
||
|
if (isset($item['tabConfig']['tabCur']) && $typeArr = $item['tabConfig']['list'][$item['tabConfig']['tabCur']] ?? []) {
|
||
|
$val = $typeArr['link']['activeVal'] ?? 0;
|
||
|
if ($val) {
|
||
|
$data = $this->get_groom_list($val, (int)($item['numConfig']['val'] ?? 0));
|
||
|
}
|
||
|
}
|
||
|
$item['productList']['list'] = $data;
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
if ($info['value']) {
|
||
|
if (isset($info['value']['d_goodList']['goodsList'])) {
|
||
|
$info['value']['d_goodList']['goodsList']['list'] = [];
|
||
|
}
|
||
|
if (isset($info['value']['d_goodList']['goodsList']['ids']) && count($info['value']['d_goodList']['goodsList']['ids'])) {
|
||
|
$info['value']['d_goodList']['goodsList']['list'] = app()->make(SpuRepository::class)->getApiSearch(['product_ids' => $info['value']['d_goodList']['goodsList']['ids']],1,10);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return app('json')->success(compact('info'));
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 设置模版默认数据
|
||
|
* @param $id
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function setDefaultData($id)
|
||
|
{
|
||
|
if (!$id) return app('json')->fail('参数错误');
|
||
|
|
||
|
$info = $this->repository->getWhere([$this->repository->getPk() => $id, 'mer_id' => $this->request->merId()]);
|
||
|
if ($info) {
|
||
|
if ($info->is_default) return app('json')->fail('默认模板不能修改');
|
||
|
$info->default_value = $info->value;
|
||
|
$info->update_time = time();
|
||
|
$info->save();
|
||
|
return app('json')->success('设置成功');
|
||
|
} else {
|
||
|
return app('json')->fail('模板不存在');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 还原模板数据
|
||
|
* @param $id
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function Recovery($id)
|
||
|
{
|
||
|
if (!$id) return app('json')->fail('参数错误');
|
||
|
$info = $this->repository->getWhere([$this->repository->getPk() => $id, 'mer_id' => $this->request->merId()]);
|
||
|
if ($info) {
|
||
|
if ($info->is_default) return app('json')->fail('默认模板不能修改');
|
||
|
$info->value = $info->default_value;
|
||
|
$info->update_time = time();
|
||
|
$info->save();
|
||
|
return app('json')->success('还原成功');
|
||
|
} else {
|
||
|
return app('json')->fail('模板不存在');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 实际获取方法
|
||
|
* @param $type
|
||
|
* @return array
|
||
|
*/
|
||
|
protected function get_groom_list($type, int $num = 0)
|
||
|
{
|
||
|
$services = app()->make(SpuRepository::class);
|
||
|
$info = [];
|
||
|
[$page, $limit] = $this->getPage();
|
||
|
|
||
|
$where['is_gift_bag'] = 0;
|
||
|
$where['order'] = 'star';
|
||
|
$where['product_type'] = 0;
|
||
|
if ($type == 1) {//TODO 精品推荐
|
||
|
$where['hot_type'] = 'best';
|
||
|
$info = $services->getApiSearch($where, $page, $limit, null);//TODO 精品推荐个数
|
||
|
} else if ($type == 2) {//TODO 热门榜单
|
||
|
$where['hot_type'] = 'hot';
|
||
|
$info = $services->getApiSearch($where, $page, $limit, null);//TODO 热门榜单 猜你喜欢
|
||
|
} else if ($type == 3) {//TODO 首发新品
|
||
|
$where['hot_type'] = 'new';
|
||
|
$info = $services->getApiSearch($where, $page, $limit, null);//TODO 首发新品
|
||
|
} else if ($type == 4) {//TODO 促销单品
|
||
|
$where['hot_type'] = 'good';
|
||
|
$info = $services->getApiSearch($where, $page, $limit, null);//TODO 促销单品
|
||
|
}
|
||
|
return $info;
|
||
|
}
|
||
|
|
||
|
public function productLst()
|
||
|
{
|
||
|
[$page, $limit] = $this->getPage();
|
||
|
$where = $this->request->params([
|
||
|
['store_name',''],
|
||
|
['order', 'star'],
|
||
|
['cate_pid',0],
|
||
|
['star',''],
|
||
|
'product_type',
|
||
|
'mer_cate_id'
|
||
|
]);
|
||
|
$where['is_gift_bag'] = 0;
|
||
|
$where['keyword'] = $where['store_name'];
|
||
|
if ($this->request->merId()) $where['mer_id'] = $this->request->merId();
|
||
|
$data = app()->make(SpuRepository::class)->getApiSearch($where, $page, $limit, null);
|
||
|
return app('json')->success($data);
|
||
|
}
|
||
|
|
||
|
public function copy($id)
|
||
|
{
|
||
|
$data = $this->repository->copy($id,$this->request->merId());
|
||
|
return app('json')->success($data);
|
||
|
}
|
||
|
}
|