196 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			196 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | |||
|  | 
 | |||
|  | namespace app\api\validate; | |||
|  | 
 | |||
|  | 
 | |||
|  | use app\common\basics\Validate; | |||
|  | use app\common\enum\GoodsEnum; | |||
|  | use app\common\enum\ShopEnum; | |||
|  | use app\common\model\community\CommunityArticle; | |||
|  | use app\common\model\goods\Goods; | |||
|  | use app\common\model\shop\Shop; | |||
|  | 
 | |||
|  | /** | |||
|  |  * 种草社区文章验证 | |||
|  |  * Class CommunityArticleValidate | |||
|  |  * @package app\api\validate | |||
|  |  */ | |||
|  | class CommunityArticleValidate extends Validate | |||
|  | { | |||
|  | 
 | |||
|  |     protected $rule = [ | |||
|  |         'id' => 'require|checkArticle', | |||
|  |         'content' => 'require|min:10|max:999', | |||
|  |         'image' => 'require|checkImage', | |||
|  |         'goods' => 'checkGoods', | |||
|  |         'shop' => 'checkShop', | |||
|  |     ]; | |||
|  | 
 | |||
|  |     protected $message = [ | |||
|  |         'id.require' => '参数缺失', | |||
|  |         'content.require' => '写够10个字,才可以发布和被精选哦', | |||
|  |         'content.min' => '至少输入10个字符', | |||
|  |         'content.max' => '至多输入999个字符', | |||
|  |         'image.require' => '至少要添加1张图片哦', | |||
|  |     ]; | |||
|  | 
 | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 添加场景 | |||
|  |      * @return CommunityArticleValidate | |||
|  |      * @author 段誉 | |||
|  |      * @date 2022/5/7 9:46 | |||
|  |      */ | |||
|  |     public function sceneAdd() | |||
|  |     { | |||
|  |         return $this->remove('id', true); | |||
|  |     } | |||
|  | 
 | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 编辑场景 | |||
|  |      * @author 段誉 | |||
|  |      * @date 2022/5/7 9:47 | |||
|  |      */ | |||
|  |     public function sceneEdit() | |||
|  |     { | |||
|  |     } | |||
|  | 
 | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 删除场景 | |||
|  |      * @author 段誉 | |||
|  |      * @date 2022/5/7 9:47 | |||
|  |      */ | |||
|  |     public function sceneDel() | |||
|  |     { | |||
|  |         return $this->only(['id']); | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 校验文章 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @author 段誉 | |||
|  |      * @date 2022/5/7 9:50 | |||
|  |      */ | |||
|  |     protected function checkArticle($value, $rule, $data) | |||
|  |     { | |||
|  |         $article = CommunityArticle::findOrEmpty($value); | |||
|  | 
 | |||
|  |         if ($article->isEmpty()) { | |||
|  |             return '信息不存在'; | |||
|  |         } | |||
|  | 
 | |||
|  |         if ($article['del'] == 1) { | |||
|  |             return '已被删除'; | |||
|  |         } | |||
|  | 
 | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 校验图片数量 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @author 段誉 | |||
|  |      * @date 2022/4/29 10:53 | |||
|  |      */ | |||
|  |     protected function checkImage($value, $rule, $data) | |||
|  |     { | |||
|  |         if (count($value) > 9) { | |||
|  |             return '最多上传9张图片'; | |||
|  |         } | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 校验所选商品 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @author 段誉 | |||
|  |      * @date 2022/4/29 10:53 | |||
|  |      */ | |||
|  |     protected function checkGoods($value, $rule, $data) | |||
|  |     { | |||
|  |         if (empty($value)) { | |||
|  |             return true; | |||
|  |         } | |||
|  | 
 | |||
|  |         if (!empty($data['shop'])) { | |||
|  |             return '不能同时选择宝贝/店铺'; | |||
|  |         } | |||
|  | 
 | |||
|  |         if (count($value) > 5) { | |||
|  |             return '最多只能选择5个商品'; | |||
|  |         } | |||
|  | 
 | |||
|  |         $goods_id = array_unique($value); | |||
|  |         $where = [ | |||
|  |             ['del', '=', GoodsEnum::DEL_NORMAL],  // 未删除
 | |||
|  |             ['status', '=', GoodsEnum::STATUS_SHELVES], // 上架中
 | |||
|  |             ['audit_status', '=', GoodsEnum::AUDIT_STATUS_OK], // 审核通过
 | |||
|  |             ['id', 'in', $goods_id] | |||
|  |         ]; | |||
|  |         $goods = Goods::where($where)->column('*', 'id'); | |||
|  | 
 | |||
|  |         foreach ($value as $item) { | |||
|  |             if (!isset($goods[$item])) { | |||
|  |                 return '所选商品中包含已下架商品'; | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 校验所选店铺 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @author 段誉 | |||
|  |      * @date 2022/4/29 10:54 | |||
|  |      */ | |||
|  |     protected function checkShop($value, $rule, $data) | |||
|  |     { | |||
|  |         if (empty($value)) { | |||
|  |             return true; | |||
|  |         } | |||
|  | 
 | |||
|  |         if (!empty($data['goods'])) { | |||
|  |             return '不能同时选择宝贝/店铺'; | |||
|  |         } | |||
|  | 
 | |||
|  |         if (count($value) > 3) { | |||
|  |             return '最多只能选择3个店铺'; | |||
|  |         } | |||
|  | 
 | |||
|  |         $shop_id = array_unique($value); | |||
|  |         $where = [ | |||
|  |             ['is_freeze', '=', ShopEnum::SHOP_FREEZE_NORMAL], // 未冻结
 | |||
|  |             ['del', '=', 0], // 未删除
 | |||
|  |             ['is_run', '=', ShopEnum::SHOP_RUN_OPEN], // 未暂停营业
 | |||
|  |             ['id', 'in', $shop_id] | |||
|  |         ]; | |||
|  |         $shops = Shop::where($where)->column('*', 'id'); | |||
|  | 
 | |||
|  |         foreach ($value as $item) { | |||
|  |             if (!isset($shops[$item])) { | |||
|  |                 return '所选店铺中包含暂停营业店铺'; | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  | } |