277 行
8.4 KiB
PHP
可执行文件
277 行
8.4 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Retail\Business;
|
|
|
|
use Common\Model\RetailGoodsModel;
|
|
use Retail\Model\UnitLibraryModel;
|
|
|
|
//[1.7.90]
|
|
|
|
/**
|
|
* 单位库
|
|
* Class UnitLibrary
|
|
* [
|
|
* getUnitList 获取单位库列表
|
|
* addUnit 添加单位
|
|
* deleteUnit 删除单位
|
|
* ]
|
|
* @package Retail\Business
|
|
*/
|
|
class UnitLibrary
|
|
{
|
|
/**
|
|
* 获取单位库列表-分页
|
|
* @param $param
|
|
* $param['name'] 单位名称
|
|
* $param['merchant_id'] 商户ID
|
|
* $param['store_id'] 门店ID
|
|
* $param['type'] 1商户 2门店
|
|
* $param['start_time'] 开始时间
|
|
* $param['end_time'] 结束时间
|
|
* $param['page'] 页码
|
|
* $param['limit'] 页长
|
|
* @return array
|
|
*/
|
|
public function getUnitList($param)
|
|
{
|
|
$verify = $this->publicVerifyParam($param);
|
|
if ($verify['status'] != 1) {
|
|
return $verify;
|
|
}
|
|
if (empty($param['page']) || empty($param['limit'])) {
|
|
return callBack(statusCode()['error'], '缺少必要参数');
|
|
}
|
|
$map = $this->getUnitMap($param);
|
|
$UnitLibraryModel = new UnitLibraryModel();
|
|
$RetailGoodsModel = new RetailGoodsModel();
|
|
|
|
$list = $UnitLibraryModel->getSelect($map, '', 'add_time desc', $param['page'] . ',' . $param['limit']);
|
|
foreach ($list as &$val) {
|
|
$val['goods_num'] = $RetailGoodsModel->getCount(['unit_name' => $val['name'], 'status' => ['neq', 2]]);
|
|
$val['add_time'] = $val['add_time'] ? date("Y-m-d H:i:s", $val['add_time']) : '-';
|
|
}
|
|
if (!empty($list)) {
|
|
return callBack(statusCode()['success'], '获取成功', [
|
|
'list' => $list,
|
|
'count' => $UnitLibraryModel->getCount($map),
|
|
]);
|
|
} else {
|
|
return callBack(statusCode()['success'], '暂无数据', [
|
|
'list' => [],
|
|
'count' => 0,
|
|
]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取单位库列表-供筛选
|
|
* @param $param
|
|
* $param['name'] 单位名称
|
|
* $param['merchant_id'] 商户ID
|
|
* $param['store_id'] 门店ID
|
|
* $param['type'] 1商户 2门店
|
|
* @return array
|
|
*/
|
|
public function getUnitSelect($param)
|
|
{
|
|
$verify = $this->publicVerifyParam($param);
|
|
if ($verify['status'] != 1) {
|
|
return $verify;
|
|
}
|
|
|
|
$map = $this->getUnitMap($param);
|
|
|
|
$UnitLibraryModel = new UnitLibraryModel();
|
|
|
|
$list = $UnitLibraryModel->getSelect($map, 'id,name', 'add_time desc');
|
|
return callBack(statusCode()['success'], empty($list) ? '暂无数据' : '获取成功', [
|
|
'list' => $list,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 添加单位
|
|
* @param $param
|
|
* $param['name'] 单位名称
|
|
* $param['merchant_id'] 商户ID
|
|
* $param['store_id'] 门店ID
|
|
* $param['type'] 1商户 2门店
|
|
* @return array
|
|
*/
|
|
public function addUnit($param)
|
|
{
|
|
$verify = $this->publicVerifyParam($param);
|
|
if ($verify['status'] != 1) {
|
|
return $verify;
|
|
}
|
|
|
|
$map = $this->getUnitMap($param);
|
|
|
|
$UnitLibraryModel = new UnitLibraryModel();
|
|
|
|
// 验重
|
|
$repeat = $UnitLibraryModel->getFind($map);
|
|
if ($repeat) {
|
|
return callBack(statusCode()['error'], '该单位已存在');
|
|
}
|
|
$new_data = [
|
|
'state' => 1,
|
|
'type' => $param['type'],
|
|
'name' => $param['name'],
|
|
'add_time' => time(),
|
|
'merchant_id' => $param['merchant_id'],
|
|
'store_id' => $param['store_id'] ? $param['store_id'] : 0,
|
|
];
|
|
$res = $UnitLibraryModel->addOrder($new_data);
|
|
if ($res) {
|
|
return callBack(statusCode()['success'], '单位添加成功', ['id' => $res]);
|
|
} else {
|
|
return callBack(statusCode()['error'], '单位添加失败,请稍后重试');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 编辑单位
|
|
* @param $param
|
|
* $param['id'] 单位ID
|
|
* $param['name'] 单位名称
|
|
* $param['merchant_id'] 商户ID
|
|
* $param['store_id'] 门店ID
|
|
* $param['type'] 1商户 2门店
|
|
* @return array
|
|
*/
|
|
public function editUnit($param)
|
|
{
|
|
$verify = $this->publicVerifyParam($param);
|
|
if ($verify['status'] != 1) {
|
|
return $verify;
|
|
}
|
|
|
|
if (!$param['id']) {
|
|
return callBack(statusCode()['error'], '缺少必要参数');
|
|
}
|
|
$map = $this->getUnitMap($param);
|
|
unset($map['name']);
|
|
$map['type'] = $param['type'];
|
|
|
|
$UnitLibraryModel = new UnitLibraryModel();
|
|
|
|
$repeatMap = [
|
|
'id' => ['neq', $param['id']],
|
|
'merchant_id' => $param['merchant_id'],
|
|
'name' => trim($param['name']),
|
|
'state' => 1,
|
|
];
|
|
$repeat = $UnitLibraryModel->getFind($repeatMap);
|
|
|
|
if ($repeat) {
|
|
return ['status' => 0, 'msg' => '已存在同名单位'];
|
|
} else {
|
|
$result = $UnitLibraryModel->updateOrder($map, ['name' => $param['name']]);
|
|
if ($result) {
|
|
return callBack(statusCode()['success'], '修改成功');
|
|
} else {
|
|
return callBack(statusCode()['error'], '单位未修改');
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 删除单位
|
|
* @param $param
|
|
* $param['id'] 单位ID
|
|
* $param['merchant_id'] 商户ID
|
|
* $param['store_id'] 门店ID
|
|
* $param['type'] 1商户 2门店
|
|
* @return array
|
|
*/
|
|
public function deleteUnit($param)
|
|
{
|
|
$verify = $this->publicVerifyParam($param);
|
|
if ($verify['status'] != 1) {
|
|
return $verify;
|
|
}
|
|
if (!$param['id']) {
|
|
return callBack(statusCode()['error'], '缺少必要参数');
|
|
}
|
|
|
|
$map = $this->getUnitMap($param);
|
|
if ($param['type'] == 2) {
|
|
$map['store_id'] = $param['store_id'];
|
|
}
|
|
$UnitLibraryModel = new UnitLibraryModel();
|
|
|
|
|
|
$unitInfo = $UnitLibraryModel->getFind($map, 'merchant_id,store_id,type');
|
|
if ($unitInfo['type'] == 0) {
|
|
return callBack(statusCode()['error'], '系统自带单位,不允许删除');
|
|
}
|
|
|
|
$res = $UnitLibraryModel->updateOrder($map, ['state' => 0]);
|
|
if ($res) {
|
|
return callBack(statusCode()['success'], '单位删除成功');
|
|
} else {
|
|
return callBack(statusCode()['error'], '单位删除失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 验证请求参数
|
|
* @param $param
|
|
* @return mixed
|
|
*/
|
|
private function publicVerifyParam($param)
|
|
{
|
|
if (empty($param['type'])
|
|
|| !in_array($param['type'], [1, 2])
|
|
|| empty($param['merchant_id'])
|
|
|| $param['type'] == 2 && empty($param['store_id'])) {
|
|
return callBack(statusCode()['error'], '缺少必要参数');
|
|
}
|
|
return callBack(statusCode()['success'], '参数验证成功');
|
|
}
|
|
|
|
/**
|
|
* 获取查询条件
|
|
* @param $param
|
|
* $param['merchant_id'] (必传)商户ID
|
|
* $param['store_id'] (必传)门店ID
|
|
* $param['type'] (必传)1商户 2门店
|
|
* $param['id'] (非必传)单位ID
|
|
* $param['name'] (非必传)单位名称
|
|
* $param['start_time'] (非必传)开始时间
|
|
* $param['end_time'] (非必传)结束时间
|
|
* @return array
|
|
*/
|
|
private function getUnitMap($param)
|
|
{
|
|
$map = [
|
|
'state' => 1,
|
|
'merchant_id' => ['in', [$param['merchant_id'], 0]],
|
|
];
|
|
|
|
if (!empty($param['id'])) {
|
|
$map['id'] = $param['id'];
|
|
}
|
|
if ($param['start_time'] && $param['end_time']) {
|
|
$map['add_time'] = ['between', [strtotime($param['start_time']), strtotime($param['end_time'])]];
|
|
}
|
|
|
|
if (trim($param['name'])) {
|
|
$map['name'] = ['like', '%' . trim($param['name']) . '%'];
|
|
}
|
|
switch ($param['type']) {
|
|
case 1:
|
|
// 商户
|
|
$map['type'] = ['in', [0, 1]];
|
|
break;
|
|
case 2:
|
|
// 门店
|
|
$map['store_id'] = ['in', [$param['store_id'], 0]];
|
|
$map['type'] = ['in', [0, 2]];
|
|
break;
|
|
}
|
|
return $map;
|
|
}
|
|
}
|