glhcp/server/app/api/validate/CommunityArticleValidate.php

196 lines
4.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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