849 行
31 KiB
PHP
可执行文件
849 行
31 KiB
PHP
可执行文件
<?php
|
||
|
||
namespace Terminalapi\Controller;
|
||
|
||
use Common\Business\Brand;
|
||
use Common\Business\GoodsClassify;
|
||
use Common\Business\OperateGoods;
|
||
use Common\Business\OperateMGoods;
|
||
use Common\Business\SkuAttribute;
|
||
use Common\Business\Yieldly;
|
||
use Common\Model\DeliveryTemplateModel;
|
||
use Common\Model\GoodsLabelModel;
|
||
use Common\Model\RetailCashierModel;
|
||
use Common\Model\RetailGoodsModel;
|
||
use Common\Model\RetailMgoodsModel;
|
||
use Common\Model\SkuGoodsViewModel;
|
||
use Common\Model\UploadImageClassModel;
|
||
use Retail\Business\LabelInventory;
|
||
use Retail\Business\UnitLibrary;
|
||
use Think\Controller;
|
||
|
||
//[1.8.78]
|
||
|
||
/**
|
||
* 助手端-商品管理
|
||
* Class GoodsManageController
|
||
* [
|
||
* getGoodsList 获取商品列表
|
||
* batchOperateGoods 批量操作更改商品信息
|
||
* operateGoodsInfo 添加/编辑商品
|
||
* getGoodsInfo 获取商品详情
|
||
* getGoodsSkuAttr 获取商品规格信息
|
||
* delGoodsInfo 门店/商户删除商品档案
|
||
* addGoodsImage 添加商品图片/视频
|
||
* delGoodsImage 删除商品图片/视频
|
||
* addGoodsLabelLink 添加商品标签绑定
|
||
*
|
||
* getUsedSupplierList 门店获取用来使用的供货商列表
|
||
* getSkuAttr 新增、编辑商品处获取规格供选择
|
||
* getEditMGoodsBaseSet 获取商户商品积分限制设置
|
||
* getSelectBrand 获取品牌库下拉选择
|
||
* getGoodsLabelList 获取商品标签供选择
|
||
* getGoodsYieldlyList 获取商品产地供选择
|
||
* getGoodsClass 获取商户分类
|
||
* getStoreFreightTem 获取发货模板
|
||
* getUnitSelect 获取单位列表-筛选
|
||
* ]
|
||
* @package CashierApi\Controller
|
||
* @author GuYunQinFeng
|
||
*/
|
||
class GoodsManageController extends Controller
|
||
{
|
||
/**
|
||
* 商品管理-获取商品列表
|
||
* 2020年12月14日15:31:18
|
||
* @param page 页码
|
||
* @param limit 页长
|
||
* @param managerType 类型 3商户 4门店
|
||
* @param user_type 登录角色类型 1商户 2店长 3收银员
|
||
*/
|
||
public function getGoodsList()
|
||
{
|
||
$managerType = I('post.managerType');
|
||
if (!$managerType || !in_array($managerType, [3, 4])) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '缺少必要参数']);
|
||
}
|
||
$this->userTypeVerify(I('post.user_type'), I('post.operator_id'), 5);
|
||
$param = [
|
||
'platform_type' => I('post.platform_type') ? I('post.platform_type') : 1,
|
||
'page' => I('post.page') ? I('post.page') : 1,
|
||
'limit' => I('post.limit') ? I('post.limit') : 10,
|
||
// 按照商品类别搜索
|
||
'person1' => I('post.person1'),
|
||
'person2' => I('post.person2'),
|
||
'person3' => I('post.person3'),
|
||
'keyword' => I('post.keyword'), //搜索关键词
|
||
'need_img' => I('post.need_img') ? I('post.need_img') : true, //是否需要图片 true false
|
||
'need_goods_num' => I('post.need_goods_num') ? I('post.need_goods_num') : true, //是否需要库存
|
||
'need_count' => I('post.need_count') ? I('post.need_count') : false, //是否需要总数量
|
||
'keyword_type' => I('post.keyword_type'), //关键词搜索类型 1货号 2条码 3名称
|
||
'order_type' => I("post.order_type"), //排序规则
|
||
'condition_name' => I("post.condition_name"), //排序规则关键词
|
||
'status' => I("post.status"), //状态
|
||
// 'recovery_type' => I('post.recovery_type'), //2回收站
|
||
'attribute_state' => I('post.attribute_state'), //规格 1无规格 2规格
|
||
];
|
||
if ($managerType == 3) {
|
||
$param['merchant_id'] = I('post.merchant_id');
|
||
$param['can_exchange_weigh'] = I('post.pricing_method'); // 该商品是否称重计价 1:不称重 2:称重
|
||
$param['issellonline'] = I('post.online_state'); // 商城出售状态
|
||
$OperateMGoods = new OperateMGoods();
|
||
$result = $OperateMGoods->getMerGoodsList($param);
|
||
} else {
|
||
$global_store_jurisdiction = M('retail_store_jurisdiction')->field('showpurch_price')->where(['storeid' => I('post.store_id')])->find();
|
||
$param['store_id'] = I('post.store_id');
|
||
$param['showpurch_price'] = $global_store_jurisdiction['showpurch_price']; //进价查看权限
|
||
$param['identity'] = 2; //用户身份 1商户2门店
|
||
$param['online_state'] = I('post.online_state'); // 是否在商城中出售:0,不在,1,在商城出售。
|
||
$param['pricing_method'] = I('post.pricing_method'); // 该商品是否称重计价 1:不称重 2:称重
|
||
$param['status'] = I('post.status');
|
||
$param['advance_sale_status'] = I('post.advance_sale_status');
|
||
|
||
$SkuGoodsViewModel = new SkuGoodsViewModel();
|
||
$result = $SkuGoodsViewModel->getGoodsList($param);
|
||
}
|
||
$this->ajaxReturn($result);
|
||
}
|
||
|
||
/**
|
||
* 批量操作
|
||
* 2020年12月18日14:54:26
|
||
* @param goodsIds 商品id数组
|
||
* @param managerType 类型 3商户 4门店
|
||
* @param key 操作键名
|
||
* @param value 操作键值
|
||
* @param user_type 登录角色类型 1商户 2店长 3收银员
|
||
*/
|
||
public function batchOperateGoods()
|
||
{
|
||
$key = I('post.key');
|
||
$value = json_decode(I('post.value'), true);
|
||
$goodsIds = json_decode(I('post.goodsIds'), true);
|
||
$type = I('post.managerType');
|
||
$operate_id = I('post.operator_id');
|
||
if (!in_array($type, [3, 4]) || empty($goodsIds) || !$key || (!isset($value) & $value === '')) {
|
||
$this->ajaxReturn(callBack(statusCode()['error'], "缺少重要参数"));
|
||
}
|
||
$this->userTypeVerify(I('post.user_type'), I('post.operator_id'), 4);
|
||
$param = [
|
||
'merchant_id' => I('post.merchant_id'),
|
||
'user_type' => $type,
|
||
'operate_id' => $operate_id,
|
||
'key' => $key,
|
||
'value' => $value,
|
||
'goodsIds' => $goodsIds,
|
||
'delivery_template_id' => I('post.delivery_template_id'),
|
||
];
|
||
if ($type == 3) {
|
||
$OperateMGoods = new OperateMGoods();
|
||
$result = $OperateMGoods->batchOperateGoods($param);
|
||
} else {
|
||
$OperateGoods = new OperateGoods();
|
||
$param['store_id'] = I('post.store_id');
|
||
$result = $OperateGoods->batchOperateGoods($param);
|
||
}
|
||
if ($result['status'] == 1) {
|
||
$sysParam = [
|
||
'postInfo' => I('post.'),
|
||
'operate_id' => $operate_id,
|
||
];
|
||
$desc = $this->keyChangeDesc($param['key']);
|
||
$this->addSysLog($sysParam, $type, $desc);
|
||
}
|
||
$this->ajaxReturn($result);
|
||
}
|
||
|
||
/**
|
||
* 添加/编辑商品
|
||
* 2020年12月18日16:39:39
|
||
* @param managerType 类型 3商户 4门店
|
||
* @param user_type 登录角色类型 1商户 2店长 3收银员
|
||
* @param operate_id 操作人员id
|
||
*/
|
||
public function operateGoodsInfo()
|
||
{
|
||
$managerType = I('post.managerType');
|
||
if (!$managerType || !in_array($managerType, [3, 4])) {
|
||
$this->ajaxReturn(callBack(statusCode()['error'], "缺少必要参数"));
|
||
}
|
||
$param = [
|
||
'merchant_id' => I('post.merchant_id'),
|
||
'platform_type' => I('post.platform_type'),
|
||
'goodsInfo' => I('post.'),
|
||
'operate_source' => 1,
|
||
];
|
||
// 公共参数json处理
|
||
$param = $this->paramChange($param, 5);
|
||
if (!$param['goodsInfo']['id']) {
|
||
// 判断添加权限
|
||
$this->userTypeVerify(I('post.user_type'), I('post.operator_id'), 1);
|
||
} else {
|
||
// 判断编辑权限
|
||
$this->userTypeVerify(I('post.user_type'), I('post.operator_id'), 2);
|
||
}
|
||
switch ($managerType) {
|
||
case 3:
|
||
// 商户
|
||
$OperateGoodsApi = new OperateMGoods(I('post.merchant_id'));
|
||
$param['user_type'] = 3;
|
||
// 商户参数处理
|
||
$param = $this->paramChange($param, 3);
|
||
$editGoods = $OperateGoodsApi->editMerchantGoods($param);
|
||
break;
|
||
case 4:
|
||
$OperateGoodsApi = new OperateGoods();
|
||
// 门店
|
||
$param['user_type'] = 4;
|
||
$param['store_id'] = I('post.store_id');
|
||
$param['operate_id'] = I('post.operator_id');
|
||
$editGoods = $OperateGoodsApi->editStoreGoods($param);
|
||
break;
|
||
}
|
||
if ($editGoods['status'] == 1) {
|
||
$sysParam = [
|
||
'postInfo' => I('post.'),
|
||
'operate_id' => I('post.operator_id'),
|
||
];
|
||
$msg = $param['goodsInfo']['id'] ? '设置-修改商品' : '设置-添加商品';
|
||
$this->addSysLog($sysParam, $managerType, $msg);
|
||
}
|
||
$this->ajaxReturn($editGoods);
|
||
}
|
||
|
||
/**
|
||
* 获取商品详情
|
||
* 2021年1月27日10:53:02
|
||
* @param managerType 类型 3商户 4门店
|
||
* @param merchant_id 商户id
|
||
* @param goods_id 商品id
|
||
* @param store_id 门店id
|
||
*/
|
||
public function getGoodsInfo()
|
||
{
|
||
$managerType = I('post.managerType');
|
||
$param['merchant_id'] = I('post.merchant_id');
|
||
$param['goods_id'] = I('post.goods_id');
|
||
if (!$managerType) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '缺少必要参数']);
|
||
}
|
||
switch ($managerType) {
|
||
case 3:
|
||
$OperateGoodsApi = new OperateMGoods(I('post.merchant_id'));
|
||
$result = $OperateGoodsApi->getMGoodsDetails($param);
|
||
$result = $this->paramChange($result, 4);
|
||
break;
|
||
case 4:
|
||
$OperateGoodsApi = new OperateGoods();
|
||
$param['store_id'] = I('post.store_id');
|
||
$result = $OperateGoodsApi->getGoodsDetails($param);
|
||
break;
|
||
}
|
||
$this->ajaxReturn($result);
|
||
}
|
||
|
||
/**
|
||
* 获取商品规格信息
|
||
* 2021年1月27日10:57:58
|
||
* @param managerType 类型 3商户 4门店
|
||
* @param goods_id 商品id
|
||
* @param merchant_id 商户id
|
||
* @param store_id 门店id
|
||
* @throws \think\db\exception\DataNotFoundException
|
||
* @throws \think\db\exception\DbException
|
||
* @throws \think\db\exception\ModelNotFoundException
|
||
* @throws \think\exception\DbException
|
||
*/
|
||
public function getGoodsSkuAttr()
|
||
{
|
||
$managerType = I('post.managerType');
|
||
$goods_id = I('post.goods_id');
|
||
$SkuAttribute = new SkuAttribute();
|
||
$param = [
|
||
'merchant_id' => I('post.merchant_id'),
|
||
'goods_id' => $goods_id,
|
||
];
|
||
if (!$goods_id || !$managerType || !$param['merchant_id']) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '缺少必要参数']);
|
||
}
|
||
|
||
switch ($managerType) {
|
||
case 3:
|
||
$result = $SkuAttribute->getMerGoodsSkuInfo($param);
|
||
break;
|
||
case 4:
|
||
$param['store_id'] = I('post.store_id');
|
||
if (!$param['store_id']) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '缺少门店id']);
|
||
}
|
||
$result = $SkuAttribute->getStoreGoodsSkuInfo($param);
|
||
break;
|
||
}
|
||
$this->ajaxReturn($result);
|
||
}
|
||
|
||
/**
|
||
* 门店/商户删除商品档案
|
||
* 2020年12月19日17:21:10
|
||
* @param ids 商品id数组
|
||
* @param managerType 类型 3商户 4门店
|
||
* @param user_type 登录角色类型 1商户 2店长 3收银员
|
||
*/
|
||
public function delGoodsInfo()
|
||
{
|
||
$ids = json_decode(I('post.ids'), true);
|
||
$managerType = I('post.managerType');
|
||
if (empty($ids) || !$managerType) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '缺少必要参数']);
|
||
}
|
||
$this->userTypeVerify(I('post.user_type'), I('post.operator_id'), 3);
|
||
switch ($managerType) {
|
||
case 3:
|
||
// 商户
|
||
$result = $this->delMgoodsOperate($ids);
|
||
break;
|
||
case 4:
|
||
// 门店
|
||
$result = $this->delGoodsOperate($ids);
|
||
break;
|
||
}
|
||
if ($result['status'] == 1) {
|
||
$sysParam = [
|
||
'postInfo' => I('post.'),
|
||
'operate_id' => I('post.operator_id'),
|
||
];
|
||
$this->addSysLog($sysParam, $managerType, '设置-删除商品');
|
||
}
|
||
$this->ajaxReturn($result);
|
||
}
|
||
|
||
/**
|
||
* 门店获取用来使用的供货商列表
|
||
*/
|
||
public function getUsedSupplierList()
|
||
{
|
||
$SupplierApi = new \Common\User\Supplier();
|
||
$data = $SupplierApi->getStoreUsedSupplierList(I('post.store_id'));
|
||
|
||
$this->ajaxReturn([
|
||
'status' => 1,
|
||
'msg' => $data ? '获取成功' : '暂无数据',
|
||
'data' => $data ? $data : [],
|
||
]);
|
||
}
|
||
|
||
/**
|
||
* 新增、编辑商品处获取规格供选择
|
||
* @throws \think\db\exception\DataNotFoundException
|
||
* @throws \think\db\exception\DbException
|
||
* @throws \think\db\exception\ModelNotFoundException
|
||
* @throws \think\exception\DbException
|
||
*/
|
||
public function getSkuAttr()
|
||
{
|
||
$SkuAttribute = new SkuAttribute();
|
||
$this->ajaxReturn($SkuAttribute->getSkuAttr(I('post.merchant_id')));
|
||
}
|
||
|
||
/**
|
||
* 获取商户商品积分限制设置
|
||
*/
|
||
public function getEditMGoodsBaseSet()
|
||
{
|
||
$user_type = I('post.user_type');
|
||
switch ($user_type) {
|
||
case '1':
|
||
//商户
|
||
$OperateMGoodsApi = new OperateMGoods(I('post.merchant_id'));
|
||
$config = $OperateMGoodsApi->getEditGoodsConfig();
|
||
break;
|
||
case '2':
|
||
case '3':
|
||
//门店 收银员
|
||
$OperateGoodsApi = new OperateGoods();
|
||
$config = $OperateGoodsApi->getEditGoodsConfig([
|
||
'user_type' => 4,
|
||
'merchant_id' => I('post.merchant_id'),
|
||
'store_id' => I('post.store_id'),
|
||
]);
|
||
//门店
|
||
break;
|
||
}
|
||
$this->ajaxReturn([
|
||
'status' => 1,
|
||
'msg' => '获取成功',
|
||
'data' => $config,
|
||
]);
|
||
}
|
||
|
||
/**
|
||
* 获取品牌库下拉选择
|
||
* @param name 品牌库名字
|
||
*/
|
||
public function getSelectBrand()
|
||
{
|
||
$Brand = new Brand();
|
||
$this->ajaxReturn($Brand->getSelectBrand([
|
||
'merchant_id' => I('post.merchant_id'),
|
||
'name' => I('post.name'),
|
||
]));
|
||
}
|
||
|
||
/**
|
||
* 获取商品标签供选择
|
||
*/
|
||
public function getGoodsLabelList()
|
||
{
|
||
$LabelModel = new GoodsLabelModel();
|
||
$map = array(
|
||
'storeid' => I('post.store_id'),
|
||
);
|
||
$data = $LabelModel->getSelect($map, 'id,label_name as name');
|
||
$this->ajaxReturn(callBack(statusCode()['success'], $data ? '获取成功' : '暂无标签', [
|
||
'list' => $data ? $data : [],
|
||
]));
|
||
}
|
||
|
||
/**
|
||
* 获取商品产地供选择
|
||
*/
|
||
public function getGoodsYieldlyList()
|
||
{
|
||
$YieldlyApi = new Yieldly();
|
||
$data = $YieldlyApi->getUsedGoodsYieldlyList(I('post.merchant_id'));
|
||
$this->ajaxReturn([
|
||
'status' => 1,
|
||
'msg' => $data ? '获取成功' : '暂无标签',
|
||
'data' => $data ? $data : [],
|
||
]);
|
||
}
|
||
|
||
/**
|
||
* 获取商户分类
|
||
*/
|
||
public function getGoodsClass()
|
||
{
|
||
$ClassApi = new GoodsClassify();
|
||
$param = [
|
||
'pid' => I('post.pid'),
|
||
'merchant_id' => I('post.merchant_id'),
|
||
];
|
||
$data = $ClassApi->getAbsolutelyGoodsClass($param);
|
||
$this->ajaxReturn([
|
||
'status' => 1,
|
||
'msg' => $data ? '获取成功' : '暂无分类',
|
||
'data' => $data ? $data : [],
|
||
]);
|
||
}
|
||
|
||
/**
|
||
* 获取发货模板
|
||
*/
|
||
public function getStoreFreightTem()
|
||
{
|
||
$DeliveryTemplateModel = new DeliveryTemplateModel();
|
||
$data = $DeliveryTemplateModel->getStoreFreightTem(I('post.store_id'));
|
||
$this->ajaxReturn([
|
||
'status' => 1,
|
||
'msg' => $data ? '获取成功' : '暂无数据',
|
||
'data' => $data ? $data : [],
|
||
]);
|
||
}
|
||
|
||
/**
|
||
* 获取单位列表-筛选
|
||
* @param name
|
||
* @param merchant_id 商户id
|
||
* @param store_id 门店id
|
||
* @param managerType 3商户 4门店
|
||
*/
|
||
public function getUnitSelect()
|
||
{
|
||
$UnitLibrary = new UnitLibrary();
|
||
$result = $UnitLibrary->getUnitSelect([
|
||
'merchant_id' => I('post.merchant_id'),
|
||
'store_id' => I('post.store_id'),
|
||
'name' => I('post.name'),
|
||
'type' => I('post.managerType') == 3 ? 1 : 2,
|
||
]);
|
||
|
||
$this->ajaxReturn($result);
|
||
}
|
||
|
||
/**
|
||
* 添加商品图片/视频
|
||
* @param fileType 文件类型 1图片 2视频
|
||
* @param user_type 登录类型 1商户 2门店 3收银员
|
||
* @param operate_id 操作人员id
|
||
*/
|
||
public function addGoodsImage()
|
||
{
|
||
if (!$_FILES) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '未上传文件']);
|
||
}
|
||
|
||
$fileType = I('post.fileType');
|
||
if (!in_array($fileType, ['1', '2'])) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '请选择文件类型']);
|
||
}
|
||
$user_type = I('post.user_type');
|
||
switch ($user_type) {
|
||
case 1:
|
||
// 商户
|
||
$user_real_type = 3;
|
||
break;
|
||
case 2:
|
||
// 门店
|
||
$user_real_type = 4;
|
||
break;
|
||
case 3:
|
||
// 收银员
|
||
$user_real_type = 5;
|
||
break;
|
||
}
|
||
|
||
if (!$user_real_type) $this->ajaxReturn(['status' => 0, 'msg' => '缺少必要参数']);
|
||
|
||
$item = [
|
||
'add_time' => time(),
|
||
'user_type' => $user_real_type,
|
||
'user_id' => I('post.operator_id'),
|
||
'type' => $fileType == 2 ? 2 : 1,
|
||
'limit_size' => $fileType == 1 ? 1048576 : 10485760,//1M = 1024*1024 = 1048576
|
||
'merchant_id' => I('post.merchant_id'),
|
||
];
|
||
|
||
if (in_array($user_real_type, [4, 5])) {
|
||
$item['from_type_id'] = 28; // 门店商品图片
|
||
$item['store_id'] = I('post.store_id');
|
||
} else {
|
||
$item['from_type_id'] = 19; // 商户商品图片
|
||
}
|
||
$UploadImageClassModel = new UploadImageClassModel();
|
||
$directory = $UploadImageClassModel->getFindField(['id' => $item['from_type_id']], 'directory');
|
||
$item['localUrl'] = $directory;
|
||
$uploads = uploadFiles($item);
|
||
if (!empty($uploads['file'])) {
|
||
$result = ['status' => 1, 'msg' => '上传成功', 'image_id' => $uploads['file']['id'], 'access_path' => $uploads['file']['access_path']];
|
||
} else {
|
||
$result = ['status' => 0, 'msg' => $uploads['msg']];
|
||
}
|
||
|
||
$this->ajaxReturn($result);
|
||
}
|
||
|
||
/**
|
||
* 删除商品图片/视频
|
||
* @param id 图片/视频id
|
||
*/
|
||
public function delGoodsImage()
|
||
{
|
||
$id = I('post.id');
|
||
if (!$id) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '缺少必要参数']);
|
||
}
|
||
|
||
$ImageGalleryModel = new \Common\Model\ImageGalleryModel();
|
||
$file = $ImageGalleryModel->getFind(['id' => $id]);
|
||
if (empty($file)) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '图片不存在']);
|
||
}
|
||
|
||
$result = deleteUploadFile([$file], '');
|
||
$this->ajaxReturn($result);
|
||
}
|
||
|
||
/**
|
||
* 添加商品标签绑定
|
||
* @param label_ids 标签ID数组以逗号拼接
|
||
* @param goods_id 商品id
|
||
* @param merchant_id 商户id
|
||
* @param store_id 门店id
|
||
* @param operator_id 操作人员id
|
||
* @param user_type 3商户 4门店
|
||
*/
|
||
public function addGoodsLabelLink()
|
||
{
|
||
$param = I('post.');
|
||
$param['goods_id'] = I('post.goods_id');
|
||
$param['label_ids'] = I('post.label_ids');
|
||
$param['user_type'] = I('post.user_type');
|
||
$param['merchant_id'] = I('post.merchant_id');
|
||
$param['store_id'] = I('post.store_id');
|
||
$param['operate_id'] = I('post.operate_id');
|
||
|
||
$LabelInventory = new LabelInventory();
|
||
|
||
$this->ajaxReturn($LabelInventory->addGoodsLabelLink($param));
|
||
}
|
||
|
||
/* ---------------------------------------------私用函数处理--------------------------------------------------- */
|
||
|
||
/**
|
||
* @param param 参数
|
||
* @param type 类型
|
||
* [
|
||
* 3商户 => 门店
|
||
* 4门店 => 商户
|
||
* 5公共
|
||
* ]
|
||
*/
|
||
private function paramChange(&$param, $type = 3)
|
||
{
|
||
switch ($type) {
|
||
case 3:
|
||
$param['goodsInfo']['issellonline'] = $param['goodsInfo']['online_state']; //是否在商城中出售
|
||
$param['goodsInfo']['can_exchange_weigh'] = $param['goodsInfo']['pricing_method']; //是否称重
|
||
$param['goodsInfo']['good_number'] = $param['goodsInfo']['goods_number']; //商品货号
|
||
$param['goodsInfo']['purch_price'] = $param['goodsInfo']['purchase_price']; //商品进价
|
||
$param['goodsInfo']['attribute'] = $param['goodsInfo']['attribute_state']; //是否开启sku
|
||
$param['goodsInfo']['goods_image_id'] = $param['goodsInfo']['goods_img_id']; //封面图
|
||
unset($param['goodsInfo']['online_state'],
|
||
$param['goodsInfo']['pricing_method'],
|
||
$param['goodsInfo']['goods_number'],
|
||
$param['goodsInfo']['purchase_price'],
|
||
$param['goodsInfo']['attribute_state'],
|
||
$param['goodsInfo']['goods_img_id']);
|
||
break;
|
||
case 4:
|
||
$param['data']['goods']['online_state'] = $param['data']['goods']['issellonline']; //是否在商城中出售
|
||
$param['data']['goods']['pricing_method'] = $param['data']['goods']['can_exchange_weigh']; //是否称重
|
||
$param['data']['goods']['goods_number'] = $param['data']['goods']['good_number']; //商品货号
|
||
$param['data']['goods']['purchase_price'] = $param['data']['goods']['purch_price']; //商品进价
|
||
$param['data']['goods']['attribute_state'] = $param['data']['goods']['attribute']; //是否开启sku
|
||
$param['data']['goods']['goods_img_id'] = $param['data']['goods']['goods_image_id']; //封面图
|
||
unset($param['data']['goods']['issellonline'],
|
||
$param['data']['goods']['can_exchange_weigh'],
|
||
$param['data']['goods']['good_number'],
|
||
$param['data']['goods']['purch_price'],
|
||
$param['data']['goods']['attribute'],
|
||
$param['data']['goods']['goods_image_id']);
|
||
break;
|
||
case 5:
|
||
$param['goodsInfo']['delivery_type'] = json_decode($param['goodsInfo']['delivery_type'], true); //配送方式
|
||
$param['goodsInfo']['bannerList'] = json_decode($param['goodsInfo']['bannerList'], true); //轮播图
|
||
break;
|
||
}
|
||
|
||
return $param;
|
||
}
|
||
|
||
/**
|
||
* 日志描述转化
|
||
* @param key 操作参数
|
||
*/
|
||
private function keyChangeDesc($key)
|
||
{
|
||
switch ($key) {
|
||
case 'status':
|
||
$desc = '设置-商品状态设置';
|
||
break;
|
||
case 'retail_state':
|
||
$desc = '设置-商品店内出售设置';
|
||
break;
|
||
case 'online_state':
|
||
$desc = '设置-商品商城出售设置';
|
||
break;
|
||
case 'vip_retail_state':
|
||
$desc = '设置-线下会员打折设置';
|
||
break;
|
||
case 'vip_online_state':
|
||
$desc = '设置-会员打折设置';
|
||
break;
|
||
case 'goods_class_id':
|
||
$desc = '设置-商品所属类别设置';
|
||
break;
|
||
case 'guide_royalty_state':
|
||
$desc = '设置-商品提成设置';
|
||
break;
|
||
}
|
||
return $desc;
|
||
}
|
||
|
||
/**
|
||
* 添加日志
|
||
* @param param [
|
||
* postInfo post参数
|
||
* operate_id 操作人员id
|
||
* ]
|
||
* @param type 3 商户 4 门店
|
||
* @param msg 操作描述
|
||
*/
|
||
private function addSysLog($param, $type, $msg)
|
||
{
|
||
$type_name = $type == 3 ? '商户' : '门店';
|
||
$desc = $type_name . $msg;
|
||
$log_data = [
|
||
'source' => 1,
|
||
'desc' => $desc,
|
||
'type' => $type,
|
||
'request_data' => json_encode($param['postInfo']),
|
||
'operator_id' => $param['operate_id'],
|
||
'mer_id' => $param['postInfo']['merchant_id'],
|
||
];
|
||
action_log_v2($log_data);
|
||
}
|
||
|
||
/**
|
||
* 删除商户商品
|
||
*/
|
||
private function delMgoodsOperate($ids)
|
||
{
|
||
// 验证商品信息 防止传假数据
|
||
$verifyRes = $this->verifyGoodsInfo($ids, 3);
|
||
if (!$verifyRes) {
|
||
return ['status' => 0, 'msg' => '请选择正确数据'];
|
||
}
|
||
|
||
$RetailMgoodsModel = new RetailMgoodsModel();
|
||
|
||
$defeatArr = [];
|
||
$success = 0;
|
||
$totalNum = count($ids);
|
||
foreach ($ids as $id) {
|
||
$goodsInfo = $RetailMgoodsModel->getFind(['id' => $id], 'goods_name,attribute');
|
||
$updateRes = $RetailMgoodsModel->updateOrder(['id' => $id], ['status' => 2]);
|
||
if (!$updateRes) {
|
||
$defeatArr[] = '商品【' . $goodsInfo['goods_name'] . '】删除失败';
|
||
} else {
|
||
if ($goodsInfo['attribute'] == 2) {
|
||
//规格商品规格状态修改
|
||
M('retail_sku_mgoods')->where(['mgoods_id' => $id])->setField('state', 1);
|
||
}
|
||
$updateDataRes = D('SaleMGoods')->updateData(['goods_id' => $id], ['status' => 2]);
|
||
if ($updateDataRes) {
|
||
$success++;
|
||
}
|
||
}
|
||
}
|
||
if ($success < $totalNum) {
|
||
return ['status' => 0, 'msg' => '商品删除失败'];
|
||
} else if ($success == $totalNum) {
|
||
return ['status' => 1, 'msg' => '商品删除成功'];
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 删除门店商品
|
||
*/
|
||
private function delGoodsOperate($ids)
|
||
{
|
||
// 验证商品信息 防止传假数据
|
||
$verifyRes = $this->verifyGoodsInfo($ids, 4);
|
||
if (!$verifyRes) {
|
||
return ['status' => 0, 'msg' => '请选择正确数据'];
|
||
}
|
||
|
||
$RetailGoodsModel = new RetailGoodsModel();
|
||
$save = $RetailGoodsModel->updateOrder(['id' => ['in', $ids]], ['status' => 2]);
|
||
if ($save) {
|
||
$map = ['goods_id' => ['in', $ids]];
|
||
// 促销商品
|
||
M("retail_host")->where($map)->delete();
|
||
// 规格删除
|
||
M('retail_sku_goods')->where($map)->save(['state' => 1]);
|
||
$updateDataRes = D('SSaleMGoods')->updateData($map, ['status' => 2]);
|
||
if ($updateDataRes) {
|
||
return ['status' => 1, 'msg' => '商品删除成功'];
|
||
} else {
|
||
return ['status' => 1, 'msg' => '商品删除成功,商品库存删除失败'];
|
||
}
|
||
} else {
|
||
return ['status' => 0, 'msg' => '商品删除失败'];
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 验证商品是否存在,防止传假数据
|
||
* @param ids id数组
|
||
* @param type 类型 3商户 4门店
|
||
*/
|
||
private function verifyGoodsInfo($ids, $type)
|
||
{
|
||
switch ($type) {
|
||
case 3:
|
||
$Model = new RetailMgoodsModel();
|
||
break;
|
||
case 4:
|
||
$Model = new RetailGoodsModel();
|
||
break;
|
||
}
|
||
$totalNum = count($ids);
|
||
$goodsInfo = $Model->getFindField(['id' => ['in', $ids]], 'goods_name', true);
|
||
if ($totalNum == count($goodsInfo)) {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 验证当前登录人员身份
|
||
* @param user_type 1商户 2门店 3收银员
|
||
* @param type [
|
||
* 1 添加商品
|
||
* 2 编辑商品
|
||
* 3 删除商品
|
||
* 4 批量修改商品
|
||
* 5 商品管理权限
|
||
* ]
|
||
*/
|
||
private function userTypeVerify($user_type, $cashier_id = 0, $type)
|
||
{
|
||
if (!$user_type || !$type) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '缺少必要参数']);
|
||
}
|
||
$RetailCashierModel = new RetailCashierModel();
|
||
switch ($user_type) {
|
||
case 1:
|
||
case 2:
|
||
return true;
|
||
break;
|
||
case 3:
|
||
if (!$cashier_id) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '缺少收银员id']);
|
||
}
|
||
switch ($type) {
|
||
case 1:
|
||
$hasAuthorize = $RetailCashierModel->getFindField(['id' => $cashier_id], 'cashier_add_goods');
|
||
if ($hasAuthorize != 1) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '该收银员暂无添加商品权限']);
|
||
}
|
||
break;
|
||
case 2:
|
||
$hasAuthorize = $RetailCashierModel->getFind(['id' => $cashier_id], 'goods_manage_edit,is_goods_manage');
|
||
if ($hasAuthorize['goods_manage_edit'] != 1 || $hasAuthorize['is_goods_manage'] != 1) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '该收银员暂无编辑商品权限']);
|
||
}
|
||
break;
|
||
case 3:
|
||
$hasAuthorize = $RetailCashierModel->getFind(['id' => $cashier_id], 'goods_manage_del,is_goods_manage');
|
||
if ($hasAuthorize['goods_manage_del'] != 1 || $hasAuthorize['is_goods_manage'] != 1) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '该收银员暂无删除商品权限']);
|
||
}
|
||
break;
|
||
case 4:
|
||
$hasAuthorize = $RetailCashierModel->getFind(['id' => $cashier_id], 'goods_manage_operate,is_goods_manage');
|
||
if ($hasAuthorize['goods_manage_operate'] != 1 || $hasAuthorize['is_goods_manage'] != 1) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '该收银员暂无批量修改商品权限']);
|
||
}
|
||
break;
|
||
case 5:
|
||
$hasAuthorize = $RetailCashierModel->getFindField(['id' => $cashier_id], 'is_goods_manage');
|
||
if ($hasAuthorize != 1) {
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '该收银员暂无商品管理权限']);
|
||
}
|
||
break;
|
||
default:
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '缺少必要参数']);
|
||
break;
|
||
}
|
||
return true;
|
||
break;
|
||
default:
|
||
$this->ajaxReturn(['status' => 0, 'msg' => '缺少必要参数']);
|
||
break;
|
||
}
|
||
}
|
||
}
|