文件
mashangyoujiu/Application/Retail/Business/UnitLibrary.class.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;
}
}