[ 'name' => '5折购买券', 'discount' => 0.5, 'description' => '购买卡片时5折消费', 'validity' => 86400 ], 2 => [ 'name' => '5折购买券', 'discount' => 0.5, 'description' => '购买卡片时5折消费', 'validity' => 86400 ], 3 => [ 'name' => '分配对象补偿券', 'discount' => 0, 'description' => '抵扣分配对象入场费9.9元', 'validity' => 86400 * 14 ], 4 => [ 'name' => '免费解锁券', 'discount' => 0, 'description' => '免费解锁卡片一次', 'validity' => 86400 * 365 * 10 ], 5 => [ 'name' => '免费解锁券', 'discount' => 0, 'description' => '免费解锁卡片一次', 'validity' => 86400 * 365 * 10 ] ); private $ticketModel; public function __construct() { $this->ticketModel = new TicketModel(); } /** * 创建卡片[存在uid则领取] * @param int $type * @param int $uid * @return mixed * @throws \ApiException * @deprecated */ public function create(int $type = 1, int $uid = 0) { return array( 'code' => 404, 'message' => '该功能已下线' ); $add = array( 'name' => self::TICKET[$type]['name'], 'description' => self::TICKET[$type]['description'], 'code' => bin2hex(\openssl_random_pseudo_bytes(4)), 'type' => $type, 'create_time' => time() ); if ($uid) { $add['uid'] = $uid; $add['get_time'] = time(); $add['validity_time'] = time() + self::TICKET[$type]['validity']; } $ticketModel = new TicketModel(); $ticket = $ticketModel->fill($add); if ($ticket->save()) { return $ticket->id; } else { throw new AlertException("数据库异常", 505); } } /** * 检验卡劵是否存在 * @param string $ticket_code * @return bool * @throws \Tymon\JWTAuth\Exceptions\JWTException */ public function checkTicket(string $ticket_code) { $uid = Auth::auth(); $where = array( ['code', $ticket_code], ['validity_time', '>', time()], ['uid', $uid], ['type', 5], ['state', 0] ); if (TicketModel::where($where)->exists()) { return true; } else { return false; } } /** * 抽卡 * @return array * @throws \ApiException * @throws \Tymon\JWTAuth\Exceptions\JWTException */ public function randTicket() { return array( 'code' => 404, 'message' => '该功能已下线' ); $uid = Auth::auth(); $user = UserModel::find($uid); if ($user->ck_count > 0) { $rand = rand(1, 10001); if ($rand == 1) { # 0.01% $cnt = 9; } if ($rand > 1 && $rand <= 51) { # 0.5% $cnt = 8; } if ($rand > 51 && $rand <= 151) { # 1.0% $cnt = 7; } if ($rand > 151 && $rand <= 301) { # 1.5% $cnt = 6; } if ($rand > 301 && $rand <= 501) { # 2.0% $cnt = 5; } if ($rand > 501 && $rand <= 1001) { # 5.0% $cnt = 4; } if ($rand > 1001 && $rand <= 1501) { # 5.0% $cnt = 3; } if ($rand > 1501 && $rand <= 3001) { # 15% $cnt = 2; } if ($rand > 3001 && $rand <= 10001) { # 70% $cnt = 1; } for ($i = 0; $i < $cnt; $i++) { $this->create(5, $uid); } $user->decrement('ck_count', 1); return array( 'code' => 200, 'message' => 'success', 'data' => [ 'cnt' => $i ], ); } else { return array( 'code' => 101, 'message' => '没有抽卡机会' ); } } }