| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- <?php
- namespace app\backend\modules\coupon\models;
- use app\common\observers\coupon\CouponObserver;
- use app\common\models\coupon\CouponIncreaseRecords;
- class Coupon extends \app\common\models\Coupon
- {
- static protected $needLog = true;
- public $table = 'yz_coupon';
- public $widgets = [];
- //类型转换
- protected $casts = [
- 'goods_ids' => 'json',
- 'category_ids' => 'json',
- 'storeids' => 'json',
- 'member_tags_ids' => 'json',
- 'goods_names' => 'json',
- 'categorynames' => 'json',
- 'storenames' => 'json',
- 'member_tags_names' => 'json',
- ];
- //默认值
- protected $attributes = [
- 'goods_ids' => '[]',
- 'category_ids' => '[]',
- 'storeids' => '[]',
- 'member_tags_ids' => '[]',
- 'display_order' => 0,
- 'plugin_id' => 0,
- ];
- /**
- * 定义字段名
- * 可使
- * @return array */
- public function atributeNames() {
- return [
- 'display_order'=> '排序',
- 'name'=> '优惠券名称',
- 'enough'=> '使用条件(消费金额前提)',
- 'time_days'=> '使用时间限制',
- 'deduct'=> '立减',
- 'discount'=> '折扣',
- 'get_max'=> '每个人的限领数量',
- 'get_limit_max' => '每人每日限领数量',
- 'total' => '发放总数',
- 'resp_title' => '推送标题',
- 'resp_desc' => '推送说明',
- 'resp_url' => '推送链接',
- ];
- }
- public function couponIncreaseRecords()
- {
- return $this->hasMany(CouponIncreaseRecords::class, 'coupon_id')->select('count', 'created_at')->orderBy('created_at', 'desc')->get();
- }
- /**
- * 字段规则
- * @return array */
- public function rules() {
- //因为 deduct 和 discount 的默认值都为 0, 为了让 0 通过验证, 所以需要如下判断
- if($this->coupon_method == 1){
- $deduct = '|min:1';
- // if($this->enough){
- // $deduct = '|between:1,'.$this->enough; //不能超过"订单金额"(如果 enough 为 0, 表示不限制消费金额, 则不限制"立减"金额)
- // } else{
- // $deduct = '|min:1';
- // }
- }elseif($this->coupon_method == 2){
- $discount = '|between:0,10';
- }else{
- $deduct = null;
- $discount = null;
- }
- return [
- 'display_order' => 'required|integer',
- 'name' => 'required',
- 'enough' => 'required|integer',
- 'time_days' => 'required|integer',
- 'deduct' => 'required|'.$deduct,
- 'discount' => 'required|'.$discount,
- // 'get_max' => 'required|integer',
- // 'get_limit_max' => 'required|integer',
- 'total' => 'required|integer',
- 'resp_title' => 'nullable|string',
- 'resp_desc' => 'nullable|string',
- 'resp_url' => 'nullable|url',
- ];
- }
- /**
- * @param $keyword
- * @return mixed
- */
- public static function getCouponsByName($keyword)
- {
- return static::uniacid()->select('id', 'name')
- ->where('name', 'like', '%' . $keyword . '%')
- ->get();
- }
- /**
- * @param $keyword
- * @return mixed
- */
- public static function getCouponsDataByName($keyword)
- {
- return static::uniacid()
- ->select(['id','display_order','name', 'enough', 'coupon_method', 'deduct', 'discount', 'get_type', 'created_at','status','money' , 'total'])
- ->where('name', 'like', '%' . $keyword . '%');
- }
- /**
- * @param $title 优惠券名称
- * @param $type 优惠券是否在领取中心显示
- * @param $timeSwitch 是否开启"创建时间"的搜索选项
- * @param $timeStart 起始时间
- * @param $timeEnd 结束时间
- * @return mixed
- */
- static public function getCouponsBySearch($title, $type=NULL, $timeSwitch=0, $timeStart=NULL, $timeEnd=NULL)
- {
- $CouponsModel = self::uniacid()
- ->select(['id','display_order','name', 'enough',
- 'coupon_method', 'deduct', 'discount', 'get_type', 'created_at','total']);
- if(!empty($title)){
- $CouponsModel = $CouponsModel->where('name', 'like', '%'.$title.'%');
- }
- if(!empty($type) || $type == '0'){
- $CouponsModel = $CouponsModel->where('get_type', '=', $type);
- }
- if($timeSwitch == 1 && !empty($timeStart) && !empty($timeEnd)){
- $CouponsModel = $CouponsModel->whereBetween('created_at', [$timeStart, $timeEnd]);
- }
- return $CouponsModel;
- }
- //删除优惠券
- public static function deleteCouponById($couponId)
- {
- return static::find($couponId)->delete();
- }
- }
|