123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- <?php
- namespace App\Models;
- use App\Utils\Admin;
- use Carbon\Carbon;
- class CouponsUserBag extends Model
- {
- //
- protected $table = "coupons_user_bags";
- protected $guarded = [];
- const TYPE_ADMIN_GIVE = 1;
- const TYPE_INVITE_NEW_GIVE = 2;
- const TYPE_NEW_USER_GIVE = 3;
- public static $typeMaps = [
- self::TYPE_ADMIN_GIVE => '后台管理员赠送',
- 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;
- }
- }
|