128 lines
3.5 KiB
PHP
Executable File
128 lines
3.5 KiB
PHP
Executable File
<?php
|
||
|
||
namespace app\controller\manager\mall;
|
||
|
||
use app\controller\manager\Base;
|
||
use app\model\Log;
|
||
use app\model\Express as ExpressModel;
|
||
use app\repository\OrderRepository;
|
||
use app\service\Math;
|
||
use think\db\exception\DataNotFoundException;
|
||
use think\db\exception\DbException;
|
||
use think\db\exception\ModelNotFoundException;
|
||
use think\response\Json;
|
||
|
||
/**
|
||
* 快递配送管理
|
||
* Class Express
|
||
* @package app\controller\manager\mall
|
||
*/
|
||
class Express extends Base
|
||
{
|
||
public function index()
|
||
{
|
||
if ($this->request->isPost()) {
|
||
$items = OrderRepository::getInstance()->allExpress();
|
||
$items->each(function ($item) {
|
||
$item->default_price = Math::fen2Yuan($item->default_price);
|
||
});
|
||
$data = [
|
||
'total' => $items->count(),
|
||
'list' => $items,
|
||
];
|
||
|
||
return $this->json(0, 'success', $data);
|
||
}
|
||
|
||
return $this->view();
|
||
}
|
||
|
||
public function add()
|
||
{
|
||
if ($this->request->isPost()) {
|
||
$data = $this->request->param('item/a', []);
|
||
$validate = $this->validateByApi($data, [
|
||
'code|快递代号' => 'require|unique:express',
|
||
]);
|
||
|
||
if ($validate !== true) {
|
||
return $validate;
|
||
}
|
||
|
||
if ($data['is_default'] == ExpressModel::COMMON_ON) {
|
||
if (ExpressModel::where('is_default', ExpressModel::COMMON_ON)->count() > 0) {
|
||
return $this->json(4001, '默认快递已存在');
|
||
}
|
||
}
|
||
|
||
OrderRepository::getInstance()->addExpress($data);
|
||
|
||
return $this->json();
|
||
}
|
||
|
||
return $this->view();
|
||
}
|
||
|
||
/**
|
||
* @throws DataNotFoundException
|
||
* @throws ModelNotFoundException
|
||
* @throws DbException
|
||
*/
|
||
public function edit()
|
||
{
|
||
$id = $this->request->param('id/d', 0);
|
||
|
||
if (!$express = ExpressModel::findById($id)) {
|
||
return $this->json(4004, '没有相关的快递公司记录');
|
||
}
|
||
|
||
if ($this->request->isPost()) {
|
||
$data = $this->request->param('item/a', []);
|
||
$validate = $this->validateByApi($data, [
|
||
'code|快递代号' => 'require|unique:express,code,'.$id,
|
||
]);
|
||
|
||
if ($validate !== true) {
|
||
return $validate;
|
||
}
|
||
|
||
if ($data['is_default'] == ExpressModel::COMMON_ON) {
|
||
if (ExpressModel::where('id', '<>', $id)->where('is_default', ExpressModel::COMMON_ON)->count() > 0) {
|
||
return $this->json(4001, '默认快递已存在');
|
||
}
|
||
}
|
||
|
||
$express->save($data);
|
||
|
||
return $this->json();
|
||
}
|
||
|
||
$express->default_price = Math::fen2Yuan($express->default_price);
|
||
$this->data['item'] = $express;
|
||
$this->data['id'] = $id;
|
||
return $this->view();
|
||
}
|
||
|
||
/**
|
||
* @return Json
|
||
*/
|
||
public function del(): Json
|
||
{
|
||
if (!$this->request->isPost()) {
|
||
return $this->json(4000, '非法请求');
|
||
}
|
||
|
||
$ids = $this->request->param('ids/a', []);
|
||
if (empty($ids)) {
|
||
$ids[] = $this->request->param('id/d', 0);
|
||
$ids = array_filter($ids);
|
||
}
|
||
|
||
if (count($ids)) {
|
||
ExpressModel::deleteByIds($ids);
|
||
Log::write(get_class(), 'del', '删除了快递记录,涉及到的ID为:'.implode(',', $ids));
|
||
}
|
||
|
||
return $this->json();
|
||
}
|
||
} |