223 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			223 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | |||
|  | // +----------------------------------------------------------------------
 | |||
|  | // | likeshop开源商城系统
 | |||
|  | // +----------------------------------------------------------------------
 | |||
|  | // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
 | |||
|  | // | gitee下载:https://gitee.com/likeshop_gitee
 | |||
|  | // | github下载:https://github.com/likeshop-github
 | |||
|  | // | 访问官网:https://www.likeshop.cn
 | |||
|  | // | 访问社区:https://home.likeshop.cn
 | |||
|  | // | 访问手册:http://doc.likeshop.cn
 | |||
|  | // | 微信公众号:likeshop技术社区
 | |||
|  | // | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
 | |||
|  | // |  likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
 | |||
|  | // | 禁止对系统程序代码以任何目的,任何形式的再发布
 | |||
|  | // | likeshop团队版权所有并拥有最终解释权
 | |||
|  | // +----------------------------------------------------------------------
 | |||
|  | // | author: likeshop.cn.team
 | |||
|  | // +----------------------------------------------------------------------
 | |||
|  | 
 | |||
|  | namespace app\shopapi\validate; | |||
|  | 
 | |||
|  | 
 | |||
|  | use app\common\basics\Validate; | |||
|  | use app\common\enum\OrderEnum; | |||
|  | use app\common\model\Delivery; | |||
|  | use app\common\model\order\Order; | |||
|  | 
 | |||
|  | /** | |||
|  |  * 商家移动端订单管理验证器 | |||
|  |  * Class OrderValidate | |||
|  |  * @package app\shopapi\validate | |||
|  |  */ | |||
|  | class OrderValidate extends Validate | |||
|  | { | |||
|  |     protected $rule = [ | |||
|  |         'id' => 'require|checkId', | |||
|  |         'consignee' => 'require', | |||
|  |         'province' => 'require', | |||
|  |         'city' => 'require', | |||
|  |         'district' => 'require', | |||
|  |         'address' => 'require', | |||
|  |         'mobile' => 'require|mobile', | |||
|  |         'send_type' => 'require|in:1,2', | |||
|  |         'shipping_id' => 'requireIf:send_type,1', | |||
|  |         'invoice_no' => 'requireIf:send_type,1', | |||
|  |     ]; | |||
|  | 
 | |||
|  |     protected $message = [ | |||
|  |         'id.require' => '参数缺失', | |||
|  |         'consignee.require' => '请填写收件人', | |||
|  |         'province.require' => '地址参数缺失', | |||
|  |         'city.require' => '地址参数缺失', | |||
|  |         'district.require' => '地址参数缺失', | |||
|  |         'address.require' => '请填写详细', | |||
|  |         'mobile.require' => '请填写手机号码', | |||
|  |         'mobile.mobile' => '请填写正确的手机号码', | |||
|  |         'send_type.require' => '请选择快递方式', | |||
|  |         'send_type.in' => '快递方式参数错误', | |||
|  |         'shipping_id.requireIf' => '请选择快递公司', | |||
|  |         'invoice_no.requireIf' => '请填写快递单号', | |||
|  |     ]; | |||
|  | 
 | |||
|  |     public function sceneDetail() | |||
|  |     { | |||
|  |         return $this->only(['id']); | |||
|  |     } | |||
|  | 
 | |||
|  |     public function sceneCancel() | |||
|  |     { | |||
|  |         return $this->only(['id']) | |||
|  |             ->append('id','checkCancel'); | |||
|  |     } | |||
|  | 
 | |||
|  |     public function sceneDel() | |||
|  |     { | |||
|  |         return $this->only(['id']) | |||
|  |             ->append('id','checkDel'); | |||
|  |     } | |||
|  | 
 | |||
|  |     public function sceneEditAddress() | |||
|  |     { | |||
|  |         return $this->only(['id','consignee','province','city','district','address','mobile']); | |||
|  |     } | |||
|  | 
 | |||
|  |     public function sceneDelivery() | |||
|  |     { | |||
|  |         return $this->only(['id','send_type','shipping_id','invoice_no']) | |||
|  |             ->append('id','checkDelivery'); | |||
|  |     } | |||
|  | 
 | |||
|  |     public function sceneConfirm() | |||
|  |     { | |||
|  |         return $this->only(['id']) | |||
|  |             ->append('id','checkConfirm'); | |||
|  |     } | |||
|  | 
 | |||
|  |     public function sceneLogistics() | |||
|  |     { | |||
|  |         return $this->only(['id']) | |||
|  |             ->append('id','checkLogistics'); | |||
|  |     } | |||
|  | 
 | |||
|  |     public function sceneGetAddress() | |||
|  |     { | |||
|  |         return $this->only(['id']); | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 检验订单是否存在 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @author ljj | |||
|  |      * @date 2021/11/10 3:25 下午 | |||
|  |      */ | |||
|  |     public function checkId($value,$rule,$data) | |||
|  |     { | |||
|  |         $result = Order::where(['id'=>$value,'shop_id'=>$data['shop_id'],'del'=>0,'delete'=>0])->findOrEmpty(); | |||
|  |         if ($result->isEmpty()) { | |||
|  |             return '订单不存在'; | |||
|  |         } | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 检验订单是否可以取消 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @author ljj | |||
|  |      * @date 2021/11/10 4:38 下午 | |||
|  |      */ | |||
|  |     public function checkCancel($value,$rule,$data) | |||
|  |     { | |||
|  |         $result = Order::where(['id'=>$value,'shop_id'=>$data['shop_id']])->findOrEmpty(); | |||
|  |         if ($result['order_status'] > OrderEnum::ORDER_STATUS_GOODS) { | |||
|  |             return '订单已发货,不能取消'; | |||
|  |         } | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 检验订单能否删除 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @author ljj | |||
|  |      * @date 2021/11/10 5:21 下午 | |||
|  |      */ | |||
|  |     public function checkDel($value,$rule,$data) | |||
|  |     { | |||
|  |         $result = Order::where(['id'=>$value,'shop_id'=>$data['shop_id']])->findOrEmpty(); | |||
|  |         if ($result['order_status'] != OrderEnum::ORDER_STATUS_DOWN) { | |||
|  |             return '此订单不可删除'; | |||
|  |         } | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 检验订单能否发货 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @author ljj | |||
|  |      * @date 2021/11/11 10:25 上午 | |||
|  |      */ | |||
|  |     public function checkDelivery($value,$rule,$data) | |||
|  |     { | |||
|  |         $result = Order::where(['id'=>$value])->findOrEmpty(); | |||
|  | 
 | |||
|  |         if ($result['shipping_status'] == 1) { | |||
|  |             return '订单已发货'; | |||
|  |         } | |||
|  |         if ($result['order_type'] == OrderEnum::TEAM_ORDER) { | |||
|  |             return '已支付的拼团订单需要等待拼团成功后才能发货'; | |||
|  |         } | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 检验订单能否确认收货 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @author ljj | |||
|  |      * @date 2021/11/11 11:22 上午 | |||
|  |      */ | |||
|  |     public function checkConfirm($value,$rule,$data) | |||
|  |     { | |||
|  |         $result = Order::where(['id'=>$value])->findOrEmpty(); | |||
|  | 
 | |||
|  |         if ($result['shipping_status'] != 1 || $result['order_status'] != OrderEnum::ORDER_STATUS_GOODS) { | |||
|  |             return '此订单不允许确认收货'; | |||
|  |         } | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 检验订单是否有物流信息 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @author ljj | |||
|  |      * @date 2021/11/11 11:34 上午 | |||
|  |      */ | |||
|  |     public function checkLogistics($value,$rule,$data) | |||
|  |     { | |||
|  |         $order = Order::where(['id'=>$value])->findOrEmpty(); | |||
|  |         $delivery = Delivery::where('order_id',$value)->findOrEmpty(); | |||
|  | 
 | |||
|  |         if (($order['order_status'] != OrderEnum::ORDER_STATUS_GOODS && $order['order_status'] != OrderEnum::ORDER_STATUS_COMPLETE) || $delivery['send_type'] == 2) { | |||
|  |             return '暂无物流信息'; | |||
|  |         } | |||
|  | 
 | |||
|  |         return true; | |||
|  |     } | |||
|  | } |