CRMEB/crmeb/app/outapi/controller/StoreProduct.php
2025-06-09 10:32:07 +08:00

221 lines
7.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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['bar_code_number']) || !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);
}
}