Files
ntonpower/app/api/controller/v1/Goods.php
2026-10-14 14:00:29 +08:00

488 lines
18 KiB
PHP
Raw Permalink 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
declare(strict_types=1);
namespace app\api\controller\v1;
use app\api\model\Goods as GoodsModel;
use app\api\validate\Goods as GoodsValidate;
/**
* 商品类
* Class Goods
* @package app\api\controller
*/
class Goods extends Base
{
public function initialize()
{
parent::initialize();
$this->model = new GoodsModel();
$this->validate = new GoodsValidate();
}
/**
* 列表
*/
public function index():\think\Response\Json
{
$inputData = $this->request->param();
$inputData['platform_id'] = $this->platformId;
if (isset($inputData['language_id']) && $inputData['language_id'] != 0 && $inputData['language_id'] != '') {
$this->focus['site_id'] = $inputData['site_id'] = $inputData['language_id'];
unset($inputData['language_id']);
}
if (isset($inputData['goods_category_id']) && $inputData['goods_category_id'] != '' && $inputData['goods_category_id'] != 0 ) {
//批量获取当前类与子类ID
$inputData['goods_category_id'] = $this->model->getAllSonCategory(['id'=>$inputData['goods_category_id']]);
}
if (isset($inputData['status']) && $inputData['status'] != '' ) {
$this->focus['status'] = $inputData['status'];
}
//组建查询条件
if (isset($inputData['keyword']) && $inputData['keyword'] != '') {
$this->simple['model_number'] = $inputData['keyword'];
}
if (!$this->commonValidate(__FUNCTION__,$inputData)) {
return $this->msg(-1,$this->validate->getError());
}
if (!empty($this->focus)) {
if (!$this->commonValidate(__FUNCTION__,$this->focus)) {
return $this->msg(-1,$this->validate->getError());
}
}
//强制商品列表按添加时间倒序
$this->order['create_time'] = 'desc';
$result = $this->model->getAllList($inputData,$this->simple,$this->focus,$this->order);
if (!empty($result['page'])) {
foreach ($result['page'] as &$value) {
$value['language_id'] = $value['site_id'];
$value['language_name'] = $this->model->getLanguageName($value['site_id']);
$value['platform_name'] = $this->model->getPlatformName($value['platform_id']);
}
return $this->msg(200,'获取列表成功',$result);
} else {
if (isset($inputData['keyword']) && $inputData['keyword'] != '') {
if (isset($this->simple['model_number'])) {
unset($this->simple['model_number']);
}
$this->simple['name'] = $inputData['keyword'];
}
$result = $this->model->getAllList($inputData,$this->simple,$this->focus,$this->order);
if (!empty($result['page'])) {
foreach ($result['page'] as &$value) {
$value['language_name'] = $this->model->getLanguageName($value['site_id']);
$value['platform_name'] = $this->model->getPlatformName($value['platform_id']);
}
return $this->msg(200,'获取列表成功',$result);
}
// if (isset($result['count']) && $result['count'] == 0) {
return $this->msg(200,'获取列表成功',$result);
// } else {
// return $this->msg(504,'获取列表失败');
// }
}
}
/**
* 新增
*/
public function create():\think\Response\Json
{
$details = $this->request->param('details','','htmlspecialchars');
$inputData = $this->request->param();
$inputData['details'] = $details;
$inputData['platform_id'] = $this->platformId;
// 过滤ID
if (isset($inputData['id']) && $inputData['id'] == '') {
unset($inputData['id']);
}
if (isset($inputData['language_id']) && $inputData['language_id'] != 0 && $inputData['language_id'] != '') {
$this->focus['site_id'] = $inputData['site_id'] = $inputData['language_id'];
unset($inputData['language_id']);
}
//主要参数不能为空
if ((isset($inputData['attr'][0]['attribute_id']) && $inputData['attr'][0]['attribute_id'] == '') || (isset($inputData['attr'][0]['value']) && $inputData['attr'][0]['value'] == "")) {
return $this->msg(504,'主要参数必填,请检查!');
}
//主要参数不能为空
if (isset($inputData['goods_images']) && empty($inputData['goods_images'])) {
return $this->msg(504,'必须上传商品主图,请检查!');
}
//主要参数不能为空
if (!isset($inputData['details']) || empty($inputData['details'])) {
return $this->msg(504,'图文介绍必填,请检查!');
}
if (!$this->commonValidate(__FUNCTION__,$inputData)) {
return $this->msg(-1,$this->validate->getError());
}
//动态检测数据是否完整
// $isExitsLang = $this->model->dynamicCheck(\app\api\model\Site::class,['status'=>0,'id'=>$inputData['site_id']]);
// if (!$isExitsLang) {
// return $this->msg(504,'语言数据有变动,请重新填写再提交!');
// }
// $isExitsGoodsCategory = $this->model->dynamicCheck(\app\api\model\GoodsCategory::class,['status'=>0,'id'=>$inputData['goods_category_id']]);
// if (!$isExitsGoodsCategory) {
// return $this->msg(504,'商品分类数据有变动,请重新填写再提交!');
// }
// $flag = true;
// foreach ($inputData['attr'] as $datum) {
// $isExitsAttr = $this->model->dynamicCheck(\app\api\model\Attribute::class,['id'=>$datum['attribute_id']]);
// $flag = $isExitsAttr && $flag;
// if (!$flag) {
// return $this->msg(504,'商品参数有变动,请重新填写再提交!');
// }
// }
//
// foreach ($inputData['connect_goods'] as $item) {
// $isExitsGoodsCategory = $this->model->dynamicCheck(\app\api\model\GoodsCategory::class,['status'=>0,'id'=>$item['goods_category_id']]);
// $flag = $isExitsGoodsCategory && $flag;
// if (!$flag) {
// return $this->msg(504,'商品分类数据有变动,请重新填写再提交!');
// }
// $isExitsGoods = $this->model->dynamicCheck(\app\api\model\Goods::class,['status'=>0,'id'=>$item['connect_good_id']]);
// $flag = $isExitsGoods && $flag;
// if (!$flag) {
// return $this->msg(504,'关联商品数据有变动,请重新填写再提交!');
// }
// }
//
// foreach ($inputData['soft_manual'] as $item) {
// $isExitsSoft = $this->model->dynamicCheck(\app\api\model\Download::class,['status'=>0,'id'=>$item['soft_manual_id']]);
// $flag = $isExitsSoft && $flag;
// if (!$flag) {
// return $this->msg(504,'下载文件数据有变动,请重新填写再提交!');
// }
// $isExitsFileType = $this->model->dynamicCheck(\app\api\model\FileType::class,['status'=>0,'id'=>$item['file_type_id']]);
// $flag = $isExitsFileType && $flag;
// if (!$flag) {
// return $this->msg(504,'文件分类数据有变动,请重新填写再提交!');
// }
// }
$result = $this->model->addData($inputData);
if ($result) {
return $this->msg(200,'新增成功');
} else {
return $this->msg(504,'新增失败');
}
}
/**
* 修改
*/
public function update():\think\Response\Json
{
$details = $this->request->param('details','','htmlspecialchars');
$inputData = $this->request->param();
$inputData['details'] = $details;
$inputData['platform_id'] = $this->platformId;
if (isset($inputData['language_id']) && $inputData['language_id'] != 0 && $inputData['language_id'] != '') {
$this->focus['site_id'] = $inputData['site_id'] = $inputData['language_id'];
unset($inputData['language_id']);
}
//主要参数不能为空
if ((isset($inputData['attr'][0]['attribute_id']) && $inputData['attr'][0]['attribute_id'] == '') || (isset($inputData['attr'][0]['value']) && $inputData['attr'][0]['value'] == "")) {
return $this->msg(504,'主要参数必填,请检查!');
}
//主要参数不能为空
if (isset($inputData['goods_images']) && empty($inputData['goods_images'])) {
return $this->msg(504,'必须上传商品主图,请检查!');
}
//主要参数不能为空
if (!isset($inputData['details']) || empty($inputData['details'])) {
return $this->msg(504,'图文介绍必填,请检查!');
}
if (!$this->commonValidate(__FUNCTION__,$inputData)) {
return $this->msg(-1,$this->validate->getError());
}
// //动态检测数据是否完整
// $isExitsLang = $this->model->dynamicCheck(\app\api\model\Site::class,['status'=>0,'id'=>$inputData['site_id']]);
// if (!$isExitsLang) {
// return $this->msg(504,'语言数据有变动,请重新填写再提交!');
// }
// $isExitsGoodsCategory = $this->model->dynamicCheck(\app\api\model\GoodsCategory::class,['status'=>0,'id'=>$inputData['goods_category_id']]);
// if (!$isExitsGoodsCategory) {
// return $this->msg(504,'商品分类数据有变动,请重新填写再提交!');
// }
// $flag = true;
// foreach ($inputData['attr'] as $datum) {
// $isExitsAttr = $this->model->dynamicCheck(\app\api\model\Attribute::class,['id'=>$datum['attribute_id']]);
// $flag = $isExitsAttr && $flag;
// if (!$flag) {
// return $this->msg(504,'商品参数有变动,请重新填写再提交!');
// }
// }
//
// foreach ($inputData['connect_goods'] as $item) {
// $isExitsGoodsCategory = $this->model->dynamicCheck(\app\api\model\GoodsCategory::class,['status'=>0,'id'=>$item['goods_category_id']]);
// $flag = $isExitsGoodsCategory && $flag;
// if (!$flag) {
// return $this->msg(504,'关联商品,商品分类数据有变动,请重新填写再提交!');
// }
// $isExitsGoods = $this->model->dynamicCheck(\app\api\model\Goods::class,['status'=>0,'id'=>$item['connect_good_id']]);
// $flag = $isExitsGoods && $flag;
// if (!$flag) {
// return $this->msg(504,'关联商品数据有变动,请重新填写再提交!');
// }
// }
//
// foreach ($inputData['soft_manual'] as $item) {
// $isExitsSoft = $this->model->dynamicCheck(\app\api\model\Download::class,['status'=>0,'id'=>$item['soft_manual_id']]);
// $flag = $isExitsSoft && $flag;
// if (!$flag) {
// return $this->msg(504,'下载文件数据有变动,请重新填写再提交!');
// }
// $isExitsFileType = $this->model->dynamicCheck(\app\api\model\FileType::class,['status'=>0,'id'=>$item['file_type_id']]);
// $flag = $isExitsFileType && $flag;
// if (!$flag) {
// return $this->msg(504,'文件分类数据有变动,请重新填写再提交!');
// }
// }
$result = $this->model->editData($inputData);
if ($result) {
return $this->msg(200,'更改成功');
} else {
return $this->msg(504,'更改失败');
}
}
/**
* 详情
*/
public function read():\think\Response\Json
{
$inputData = $this->request->param(['id']);
$inputData['platform_id'] = $this->platformId;
if (isset($inputData['language_id']) && $inputData['language_id'] != 0 && $inputData['language_id'] != '') {
$this->focus['site_id'] = $inputData['site_id'] = $inputData['language_id'];;
unset($inputData['language_id']);
}
if (!$this->commonValidate(__FUNCTION__,$inputData)) {
return $this->msg(-1,$this->validate->getError());
}
$result = $this->model->getInfo($inputData);
$result['details'] = htmlspecialchars_decode($result['details']);
if ($result) {
return $this->msg(200,'获取列表成功',$result);
} else {
return $this->msg(504,'获取列表失败');
}
}
/**
* 获取当前品牌语言列表
* @return mixed
*/
public function languageList():\think\Response\Json
{
$result = $this->model->getPlatformLanguage($this->platformId);
return $this->msg(200,'获取成功',$result);
}
/**
* 批量修改分类
*/
public function batchCategoryModify():\think\Response\Json
{
$inputData = $this->request->param();
if (count($inputData['id']) > 0) {
//构建分类数据
$newCateData = [];
foreach ($inputData['id'] as $item) {
//分类不能超过3个,
$newCateData[] = [
'id' => $item,
'goods_category_id' => $inputData['goods_category_id']
];
}
$result = $this->model->goodsBatchEditCategory($newCateData);
if ($result) {
return $this->msg(200,'更改成功');
} else {
return $this->msg(504,'更改失败');
}
} else {
return $this->msg(504,'提交的数据有问题,请检查后再提交');
}
}
/**
* 批量删除
*/
public function batchGoodsDel():\think\Response\Json
{
$inputData = $this->request->param();
if (count($inputData['id']) > 0) {
$newData = [];
//构建数据
foreach ($inputData['id'] as $item) {
$newData[] = [
'id' => $item,
];
}
$result = $this->model->batchDelData($newData);
if ($result) {
return $this->msg(200,'删除成功');
} else {
return $this->msg(504,'删除失败');
}
} else {
return $this->msg(504,'提交的数据有问题,请检查后再提交');
}
}
/**
* 批量启用
*/
public function batchGoodsEnable():\think\Response\Json
{
$inputData = $this->request->param();
if (count($inputData['id']) > 0) {
//验证分类ID
$newData = [];
if (count($inputData['id']) > 0) {
foreach ($inputData['id'] as $item) {
$newData[] = [
'id' => $item,
'status' => 0
];
}
}
$result = $this->model->batchEditData($newData);
if ($result) {
return $this->msg(200,'启用成功');
} else {
return $this->msg(504,'启用失败');
}
} else {
return $this->msg(504,'提交的数据有问题,请检查后再提交');
}
}
/**
* 排序
*/
public function changeSort():\think\Response\Json
{
$inputData = $this->request->param(['id','sort']);
$inputData['platform_id'] = $this->platformId;
if (!$this->commonValidate(__FUNCTION__,$inputData)) {
return $this->msg(-1,$this->validate->getError());
}
$result = $this->model->changeSort($inputData);
if ($result) {
return $this->msg(200,"操作成功");
} else {
return $this->msg(504,"操作失败");
}
}
/**
* 启用禁用
*/
public function changeStatus():\think\Response\Json
{
$inputData = $this->request->param(['id','status']);
$inputData['platform_id'] = $this->platformId;
if (!$this->commonValidate(__FUNCTION__,$inputData)) {
return $this->msg(-1,$this->validate->getError());
}
$result = $this->model->changeStatus($inputData);
if ($result) {
return $this->msg(200,"操作成功");
} else {
return $this->msg(504,"操作失败");
}
}
/**
* 分类商品
* @return \think\response\Json
*/
public function categoryGoodsInfo():\think\Response\Json
{
$inputData = $this->request->param(['goods_category_id','type']);
$inputData['platform_id'] = $this->platformId;
if (!$this->commonValidate(__FUNCTION__,$inputData)) {
return $this->msg(-1,$this->validate->getError());
}
//
if (isset($inputData['goods_category_id'])) {
$list = $this->model->getGoodsInfoByGoodsCategoryId($inputData);
if ($list) {
$list['type'] = $inputData['type'];
return $this->msg(200, '获取列表成功', $list);
} else {
return $this->msg(504, '获取列表失败');
}
} else {
// $list['type'] = $inputData['type'];
$list = [
['connect_good_id'=>'','category'=>''],
['connect_good_id'=>'','category'=>''],
['connect_good_id'=>'','category'=>''],
['connect_good_id'=>'','category'=>''],
];
return $this->msg(200, '获取列表成功', $list);
}
}
/**
* 批量禁用
*/
public function batchGoodsDisable():\think\Response\Json
{
$inputData = $this->request->param();
if (count($inputData['id']) > 0) {
//验证分类ID
$newData = [];
if (count($inputData['id']) > 0) {
foreach ($inputData['id'] as $item) {
$newData[] = [
'id' => $item,
'status' => 1
];
}
}
$result = $this->model->batchEditData($newData);
if ($result) {
return $this->msg(200,'禁用成功');
} else {
return $this->msg(504,'禁用失败');
}
} else {
return $this->msg(504,'提交的数据有问题,请检查后再提交');
}
}
}