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.
220 lines
7.3 KiB
220 lines
7.3 KiB
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|
// +----------------------------------------------------------------------
|
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|
// +----------------------------------------------------------------------
|
|
namespace app\outapi\controller;
|
|
|
|
use app\services\order\StoreCartServices;
|
|
use app\services\product\product\StoreCategoryServices;
|
|
use app\services\product\product\OutStoreProductServices;
|
|
use think\facade\App;
|
|
|
|
/**
|
|
* Class StoreProduct
|
|
* @package aapp\outapi\controller
|
|
*/
|
|
class StoreProduct extends AuthController
|
|
{
|
|
protected $services;
|
|
|
|
public function __construct(App $app, OutStoreProductServices $services)
|
|
{
|
|
parent::__construct($app);
|
|
$this->services = $services;
|
|
}
|
|
|
|
/**
|
|
* 显示资源列表
|
|
* @return mixed
|
|
*/
|
|
public function index()
|
|
{
|
|
$where = $this->request->getMore([
|
|
['cate_id', ''],
|
|
['store_name', ''],
|
|
['type', 1],
|
|
['is_live', 0],
|
|
['is_new', ''],
|
|
['is_virtual', -1],
|
|
['is_presale', -1]
|
|
]);
|
|
$where['is_del'] = 0;
|
|
/** @var StoreCategoryServices $storeCategoryServices */
|
|
$storeCategoryServices = app()->make(StoreCategoryServices::class);
|
|
if ($where['cate_id'] !== '') {
|
|
if ($storeCategoryServices->value(['id' => $where['cate_id']], 'pid')) {
|
|
$where['sid'] = $where['cate_id'];
|
|
} else {
|
|
$where['cid'] = $where['cate_id'];
|
|
}
|
|
}
|
|
|
|
unset($where['cate_id']);
|
|
$list = $this->services->searchList($where);
|
|
return app('json')->success($list);
|
|
}
|
|
|
|
/**
|
|
* 修改状态
|
|
* @param string $id
|
|
* @param string $is_show
|
|
*/
|
|
public function set_show($id = '', $is_show = '')
|
|
{
|
|
if ($id == '' || $is_show == '') return app('json')->fail(100100);
|
|
$this->services->setShow((int)$id, (int)$is_show);
|
|
return app('json')->success($is_show == 1 ? 100003 : 100004);
|
|
}
|
|
|
|
/**
|
|
* 获取商品信息
|
|
* @param $id
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\DbException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
*/
|
|
public function read($id = 0)
|
|
{
|
|
return app('json')->success($this->services->getInfo((int)$id));
|
|
}
|
|
|
|
/**
|
|
* 保存
|
|
* @return mixed
|
|
* @throws \Exception
|
|
*/
|
|
public function save()
|
|
{
|
|
$data = $this->request->postMore([
|
|
['cate_id', []],//分类id
|
|
['store_name', ''],//商品名称
|
|
['keyword', ''],//关键字
|
|
['unit_name', '件'],//单位
|
|
['store_info', ''],//商品简介
|
|
['slider_image', []],//轮播图
|
|
['video_open', 0],//是否开启视频
|
|
['video_link', ''],//视频链接
|
|
['spec_type', 0],//单多规格
|
|
['items', []],//规格
|
|
['attrs', []],//规格
|
|
['description', ''],//商品详情
|
|
['description_images', []],//商品详情
|
|
['logistics', []],//物流方式
|
|
['freight', 1],//运费设置
|
|
['postage', 0],//邮费
|
|
['is_sub', 0],//佣金是单独还是默认
|
|
['is_vip', 0],//付费会员价
|
|
['recommend', []],//商品推荐
|
|
['temp_id', 0],//运费模版id
|
|
['give_integral', 0],//赠送积分
|
|
['presale', 0],//预售商品开关
|
|
['presale_time', 0],//预售时间
|
|
['presale_day', 0],//预售发货日
|
|
['vip_product', 0],//是否付费会员商品
|
|
['activity', []],//活动优先级
|
|
['command_word', ''],//商品口令
|
|
['is_show', 0],//是否上架
|
|
['ficti', 0],//虚拟销量
|
|
['sort', 0],//排序
|
|
['recommend_image', ''],//商品推荐图
|
|
['custom_form', []],//自定义表单
|
|
['is_limit', 0],//是否限购
|
|
['limit_type', 0],//限购类型
|
|
['limit_num', 0]//限购数量
|
|
]);
|
|
$id = $this->services->save(0, $data);
|
|
return app('json')->success(100000, ['id' => $id]);
|
|
}
|
|
|
|
/**
|
|
* 更新
|
|
* @param $id
|
|
* @return mixed
|
|
*/
|
|
public function update($id)
|
|
{
|
|
$data = $this->request->postMore([
|
|
['cate_id', []],//分类id
|
|
['store_name', ''],//商品名称
|
|
['keyword', ''],//关键字
|
|
['unit_name', '件'],//单位
|
|
['store_info', ''],//商品简介
|
|
['slider_image', []],//轮播图
|
|
['video_open', 0],//是否开启视频
|
|
['video_link', ''],//视频链接
|
|
['spec_type', 0],//单多规格
|
|
['items', []],//规格
|
|
['attrs', []],//规格
|
|
['description', ''],//商品详情
|
|
['description_images', []],//商品详情
|
|
['logistics', []],//物流方式
|
|
['freight', 1],//运费设置
|
|
['postage', 0],//邮费
|
|
['is_sub', 0],//佣金是单独还是默认
|
|
['is_vip', 0],//付费会员价
|
|
['recommend', []],//商品推荐
|
|
['temp_id', 0],//运费模版id
|
|
['give_integral', 0],//赠送积分
|
|
['presale', 0],//预售商品开关
|
|
['presale_time', 0],//预售时间
|
|
['presale_day', 0],//预售发货日
|
|
['vip_product', 0],//是否付费会员商品
|
|
['activity', []],//活动优先级
|
|
['command_word', ''],//商品口令
|
|
['is_show', 0],//是否上架
|
|
['ficti', 0],//虚拟销量
|
|
['sort', 0],//排序
|
|
['recommend_image', ''],//商品推荐图
|
|
['custom_form', []],//自定义表单
|
|
['is_limit', 0],//是否限购
|
|
['limit_type', 0],//限购类型
|
|
['limit_num', 0]//限购数量
|
|
]);
|
|
$this->services->save((int)$id, $data);
|
|
return app('json')->success(100001);
|
|
}
|
|
|
|
/**
|
|
* 删除
|
|
* @param int $id
|
|
* @return \think\Response
|
|
*/
|
|
public function delete($id)
|
|
{
|
|
//删除商品检测是否有参与活动
|
|
$this->services->checkActivity($id);
|
|
$res = $this->services->del($id);
|
|
/** @var StoreCartServices $cartService */
|
|
$cartService = app()->make(StoreCartServices::class);
|
|
$cartService->changeStatus($id, 0);
|
|
return app('json')->success($res);
|
|
}
|
|
|
|
/**
|
|
* 同步库存
|
|
* @return void
|
|
*/
|
|
public function uploadStock()
|
|
{
|
|
[$items] = $this->request->postMore([['items', []]], true);
|
|
|
|
foreach ($items as $item) {
|
|
if (!isset($item['bar_code']) || !isset($item['qty'])) {
|
|
return app('json')->fail(400742);
|
|
}
|
|
}
|
|
|
|
if (count($items) > 100) {
|
|
return app('json')->fail(400743);
|
|
}
|
|
|
|
$this->services->syncStock($items);
|
|
return app('json')->success(100010);
|
|
}
|
|
}
|
|
|