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