128 lines
3.5 KiB
PHP
128 lines
3.5 KiB
PHP
|
<?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();
|
|||
|
}
|
|||
|
}
|