123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?php
- namespace app\api\validate;
- use think\Validate;
- use app\common\Enum\LotteryEnum;
- class Lottery extends Validate
- {
- public function __construct(array $rules = [], $message = [], $field = [])
- {
- // 动态设置枚举值
- $this->rule['record_status'] = 'require|in:' . implode(',', LotteryEnum::getDrawStatusList());
- parent::__construct($rules, $message, $field);
- }
- /**
- * 验证规则
- */
- protected $rule = [
- 'lottery_id' => 'require|integer|gt:0',
- 'lottery_id_optional' => 'integer|gt:0', // 可选的lottery_id
- 'page' => 'integer|egt:1',
- 'pageSize' => 'integer|between:1,100',
- 'status' => 'integer|in:0,1,2,3',
- 'type' => 'array|length:1,10', // 奖品类型,数组且每个元素为整型
- 'type.*' => 'integer|length:1,10', // 奖品类型,数组且每个元素为整型
- 'win_record_id' => 'require|integer|gt:0',
- 'receiver_name' => 'require|length:2,20|chsAlphaNum',
- 'receiver_mobile' => 'require|regex:/^1[3-9]\d{9}$/',
- 'receiver_address' => 'require|length:10,200',
- 'province' => 'length:1,50',
- 'city' => 'length:1,50',
- 'district' => 'length:1,50',
- 'detail_address' => 'require|length:5,100',
- 'order_id' => 'require|integer|gt:0',
- 'draw_record_id' => 'require|integer|gt:0'
- ];
- /**
- * 提示消息
- */
- protected $message = [
- 'lottery_id.require' => '活动ID不能为空',
- 'lottery_id.integer' => '活动ID必须是整数',
- 'lottery_id.gt' => '活动ID必须大于0',
- 'lottery_id_optional.integer' => '活动ID必须是整数',
- 'lottery_id_optional.gt' => '活动ID必须大于0',
- 'page.integer' => '页码必须是整数',
- 'page.egt' => '页码必须大于等于1',
- 'pageSize.integer' => '每页数量必须是整数',
- 'pageSize.between' => '每页数量必须在1-100之间',
- 'status.integer' => '状态必须是整数',
- 'status.in' => '状态值不正确',
- 'record_status.integer' => '状态必须是整数',
- 'record_status.in' => '状态值不正确',
- 'type.array' => '奖品类型必须是数组格式',
- 'type.*.integer' => '奖品类型数组中的每个元素必须是整型',
- 'type.*.length' => '奖品类型数组中的每个元素长度必须在1-10之间',
- 'win_record_id.require' => '中奖记录ID不能为空',
- 'win_record_id.integer' => '中奖记录ID必须是整数',
- 'win_record_id.gt' => '中奖记录ID必须大于0',
- 'receiver_name.require' => '收货人姓名不能为空',
- 'receiver_name.length' => '收货人姓名长度必须在2-20个字符之间',
- 'receiver_name.chsAlphaNum' => '收货人姓名只能包含中文、字母和数字',
- 'receiver_mobile.require' => '收货人手机号不能为空',
- 'receiver_mobile.regex' => '收货人手机号格式不正确',
- 'receiver_address.require' => '收货地址不能为空',
- 'receiver_address.length' => '收货地址长度必须在10-200个字符之间',
- 'province.length' => '省份名称不能超过50个字符',
- 'city.length' => '城市名称不能超过50个字符',
- 'district.length' => '区县名称不能超过50个字符',
- 'detail_address.require' => '详细地址不能为空',
- 'detail_address.length' => '详细地址长度必须在5-100个字符之间',
- 'order_id.require' => '订单ID不能为空',
- 'order_id.integer' => '订单ID必须是整数',
- 'order_id.gt' => '订单ID必须大于0',
- 'draw_record_id.require' => '抽奖记录ID不能为空',
- 'draw_record_id.integer' => '抽奖记录ID必须是整数',
- 'draw_record_id.gt' => '抽奖记录ID必须大于0'
- ];
- /**
- * 验证场景
- */
- protected $scene = [
- // 获取活动列表(所有参数都可选)
- 'activityList' => ['page', 'limit', 'status'],
- // 获取活动详情(lottery_id必填)
- 'activityDetail' => ['lottery_id'],
- // 执行抽奖(lottery_id必填)
- 'draw' => ['lottery_id'],
- // 获取用户抽奖机会(lottery_id必填)
- 'getUserChances' => ['lottery_id'],
- // 获取用户抽奖记录( 可选,page和pageSize可选)
- 'getDrawRecords' => ['lottery_id_optional', 'page', 'pageSize', 'record_status'],
- // 获取用户中奖记录(page和pageSize可选)
- 'getWinRecords' => ['page', 'pageSize'],
- // 设置中奖记录收货地址(所有地址相关字段必填)
- 'setWinRecordAddress' => ['win_record_id', 'receiver_name', 'receiver_mobile', 'receiver_address'],
- // 设置详细收货地址(包含省市区)
- 'setDetailAddress' => ['win_record_id', 'receiver_name', 'receiver_mobile', 'province', 'city', 'district', 'detail_address'],
- // 获取活动排行榜(lottery_id必填,page和pageSize可选)
- 'getRanking' => ['lottery_id', 'page', 'pageSize'],
- // 获取奖品列表(lottery_id可选,page、pageSize、type可选)
- 'getPrizes' => ['lottery_id_optional', 'page', 'pageSize', 'type'],
- // 获取订单完成后分发抽奖机会
- 'getLotteryChanceByOrder' => ['order_id'],
- // 获取抽奖记录详情
- 'getDrawRecordDetail' => ['draw_record_id']
- ];
- }
|