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();
 | 
						||
    }
 | 
						||
} |