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