'后台管理员赠送', self::TYPE_INVITE_NEW_GIVE => '邀请新用户赠送', self::TYPE_NEW_USER_GIVE => '新用户赠送', ]; const COUPON_TYPE_MAN_JIAN = 1; const COUPON_TYPE_WU_MEN_KAN = 2; const COUPON_TYPE_ZHE_KOU = 3; const COUPON_TYPE_DEPOSIT_FREE = 4; public static $couponTypeMaps = [ self::COUPON_TYPE_MAN_JIAN => '满减优惠', self::COUPON_TYPE_WU_MEN_KAN => '无门槛优惠', self::COUPON_TYPE_ZHE_KOU => '折扣优惠', self::COUPON_TYPE_DEPOSIT_FREE => '免押金劵', ]; const STATUS_OK = 1; const STATUS_NO = 0; const STATUS_USED = 2; public static $statusMaps = [ self::STATUS_OK => '启用', self::STATUS_NO => '停用', self::STATUS_USED => '已使用', ]; const VALID_TYPE_ABSOLUTELY = 1; const VALID_TYPE_RELATIVE = 2; const VALID_TYPE_FOR_EVER = 3; public static $validTypeMaps = [ self::VALID_TYPE_ABSOLUTELY => '绝对时效', self::VALID_TYPE_RELATIVE => '相对时效', self::VALID_TYPE_FOR_EVER => '永久', ]; const ORDER_TYPE_NORMAL = 1; const ORDER_TYPE_RENT = 2; const ORDER_TYPE_ALL = 3; public static $orderTypeMaps = [ self::ORDER_TYPE_NORMAL => '仅普通订单可用', self::ORDER_TYPE_RENT => '仅日租订单可用', self::ORDER_TYPE_ALL => '所有订单可用', ]; public function getCouponsDataAttribute($value) { return json_decode($value, true); } public function setCouponsDataAttribute($value) { $this->attributes['coupons_data'] = json_encode($value); } public function users() { return $this->belongsTo(User::class, 'user_id', 'id'); } public function coupons() { return $this->belongsTo(Coupon::class, 'coupon_id', 'id'); } public static function useCoupon($order_id, $id) { $couponUsers = self::query()->find($id); $couponUsers->status = self::STATUS_USED; $couponUsers->order_id = $order_id; $couponUsers->save(); Coupon::couponUsed($couponUsers->coupon_id); } /** * 赠送优惠劵 * Author: Mead */ public static function addCoupon($coupon, $user, $num = 1) { $valid_end_time = $coupon->valid_end_time; switch ((int)$coupon->valid_type) { case CouponsUserBag::VALID_TYPE_ABSOLUTELY: break; case CouponsUserBag::VALID_TYPE_RELATIVE: $valid_end_time = Carbon::parse($coupon->valid_start_time)->addDays($coupon->valid_days)->toDateTimeString(); break; case CouponsUserBag::VALID_TYPE_FOR_EVER: $valid_end_time = Carbon::parse($coupon->valid_start_time)->addYears(10)->toDateTimeString(); break; } for ($i = 1; $i <= $num; $i++) { $data = [ 'coupon_id' => $coupon->id, 'type' => CouponsUserBag::TYPE_ADMIN_GIVE, 'user_id' => $user->id, 'coupons_data' => $coupon->toArray(), 'status' => CouponsUserBag::STATUS_OK, 'coupon_type' => $coupon->type, 'valid_type' => $coupon->valid_type, 'valid_start_time' => $coupon->valid_start_time, 'valid_end_time' => $valid_end_time, 'valid_days' => $coupon->valid_days, 'grant_start_at' => $coupon->grant_start_at, 'grant_end_at' => $coupon->grant_end_at, 'give_admin_id' => 0, 'order_type' => $coupon->order_type, 'merchant_id' => $user->merchant_id ]; CouponsUserBag::create($data); } if ((int)$coupon->type === self::COUPON_TYPE_DEPOSIT_FREE) { //免押金卡 User::query()->where('id', $user->id)->update(['is_coupon_deposit_free' => User::IS_COUPON_DEPOSIT_FREE_OK]); } return true; } }