截流自动化的商城平台
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

CouponValidate.php 5.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | likeshop开源商城系统
  4. // +----------------------------------------------------------------------
  5. // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
  6. // | gitee下载:https://gitee.com/likeshop_gitee
  7. // | github下载:https://github.com/likeshop-github
  8. // | 访问官网:https://www.likeshop.cn
  9. // | 访问社区:https://home.likeshop.cn
  10. // | 访问手册:http://doc.likeshop.cn
  11. // | 微信公众号:likeshop技术社区
  12. // | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
  13. // | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
  14. // | 禁止对系统程序代码以任何目的,任何形式的再发布
  15. // | likeshop团队版权所有并拥有最终解释权
  16. // +----------------------------------------------------------------------
  17. // | author: likeshop.cn.team
  18. // +----------------------------------------------------------------------
  19. namespace app\shop\validate\coupon;
  20. use think\Validate;
  21. class CouponValidate extends Validate{
  22. protected $rule = [
  23. 'name' => 'require|max:16', //优惠券名称
  24. 'send_time_start' => 'require|checkSendTime', //优惠券发放开始时间
  25. 'send_time_end' => 'require', //优惠券发放结束时间
  26. 'money' => 'require|gt:0', //优惠券面额
  27. 'send_total_type' => 'require|in:1,2', //发送总量类型:1-不限制;2-限制张数
  28. 'send_total' => 'requireIf:send_total_type,2|gt:0', //发送总量类型为2时:该字段为限制的张数
  29. 'condition_type' => 'require|in:1,2', //使用条件类型:1-无门槛;2-订单满足金额
  30. 'condition_money' => 'requireIf:condition_type,2|gt:0', //使用条件类型为2时:该字段为订单满足金额可使用
  31. 'use_time_type' => 'require|in:1,2,3', //用券时间类型:1-固定时间;2-领券当天起;3-领券次日起
  32. 'use_time_start' => 'requireIf:use_time_type,1|checkUseTime',//用券时间类型为1时:该字段为使用开始时间
  33. 'use_time_end' => 'requireIf:use_time_type,1', //用券时间类型为1时:该字段为使用结束时间
  34. 'use_time' => 'requireIf:use_time_type,2', //用券时间类型为2时:该字段为多少天内可用
  35. 'tomorrow_use_time' => 'requireIf:use_time_type,3', //用券时间类型为3时:该字段为多少天内可用
  36. 'get_type' => 'require|in:1,2', //领取类型:1-直接领取;2-商家赠送
  37. 'get_num_type' => 'require|in:1,2,3', //领取次数类型:1-不限制领取次数;2-限制次数;3-每天限制数量
  38. 'get_num' => 'requireIf:get_num_type,2', //领取次数类型为:2时:该字段为领取限制的数量
  39. 'use_goods_type' => 'require|in:1,2,3', //适用商品类型:1-全部商品;2-部分商品可用;3-部分商品不可用
  40. ];
  41. protected $message = [
  42. 'name.require' => '请输入优惠券名称',
  43. 'name.max' => '优惠券名称长度最多16个字符',
  44. 'send_time_start.require' => '请选择优惠券开始发放时间',
  45. 'send_time_end.require' => '请选择优惠券结束发放时间',
  46. 'money.require' => '请输入优惠券面额',
  47. 'money.gt' => '优惠券面额必须大于零',
  48. 'send_total_type.require' => '请选择发放总量',
  49. 'send_total_type.in' => '发放总量类型错误',
  50. 'send_total.requireIf' => '请填写限制张数',
  51. 'send_total.gt' => '限制张数必须大于0',
  52. 'condition_type.require' => '请选择使用门槛',
  53. 'condition_type.in' => '使用门槛类型错误',
  54. 'condition_money.gt' => '使用门槛金额不可小于0',
  55. 'use_time_type.require' => '请选择用券时间',
  56. 'use_time_start.requireIf' => '请选择优惠券使用时间',
  57. 'use_time_end.requireIf' => '请选择优惠券使用时间',
  58. 'use_time.requireIf' => '请选择优惠券使用时间',
  59. 'tomorrow_use_time.requireIf' => '请选择优惠券使用时间',
  60. 'get_type.require' => '请选择领取方式',
  61. 'get_type.in' => '领取方式类型错误',
  62. 'get_num_type.require' => '请选择领取次数',
  63. 'get_num_type.in' => '领取次数类型错误',
  64. 'get_num.requireIf' => '请输入领取次数',
  65. 'day_get_num.requireIf' => '请输入领取次数',
  66. 'use_goods_type.require' => '请选择适用商品',
  67. 'use_goods_type.in' => '适用商品类型错误',
  68. ];
  69. public function checkUseTime($value,$rule,$data){
  70. if($value && strtotime($value) == strtotime($data['use_time_end'])){
  71. return '用券时间开始时间和结束时间不能相同';
  72. }
  73. return true;
  74. }
  75. public function checkSendTime($value,$rule,$data){
  76. if($value && strtotime($value) == strtotime($data['send_time_end'])){
  77. return '发放开始时间和结束时间不能相同';
  78. }
  79. if (strtotime($data['send_time_end']) < strtotime($value)) {
  80. return '发放结束时间不能小于发放开始时间';
  81. }
  82. return true;
  83. }
  84. }