CardService.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace app\admin\service\coupon;
  3. use app\model\Card;
  4. use app\model\MemberAccount;
  5. use support\Log;
  6. class CardService
  7. {
  8. public static function checkExpired()
  9. {
  10. $unixTime = time();
  11. $cards = Card::whereRaw("CAST(UNIX_TIMESTAMP(card_deadline_datetime) as SIGNED) <= {$unixTime}")
  12. ->whereRaw("CAST(UNIX_TIMESTAMP(card_deadline_datetime) as SIGNED) > 0")
  13. ->whereIn('card_status', ['INIT', 'WAITING', 'PENDING', 'USED'])
  14. ->select('card_id')
  15. ->get()
  16. ->toArray();
  17. foreach ($cards as $card) {
  18. // 检查是否关联会员账户
  19. $account = MemberAccount::where('member_account_nbr', $card['card_id'])->first();
  20. if (!empty($account) && $account->member_account_status == 'ACTIVED') {
  21. $account->member_account_status = 'EXPIRED';
  22. $account->save();
  23. }
  24. $cardNow = Card::where('card_id', $card['card_id'])->first();
  25. $cardNow->card_status = 'EXPIRED';
  26. $cardExtendJson = [];
  27. if (!empty($cardNow->card_extend_json)) {
  28. $cardExtendJson = json_decode($cardNow->card_extend_json,true);
  29. }
  30. $cardExtendJson['expired_datetime'] = date('Y-m-d H:i:s');
  31. $cardNow->card_extend_json = json_encode($cardExtendJson);
  32. $cardNow->save();
  33. Log::info("储值卡:【".$card['card_id'].'】已过期');
  34. }
  35. }
  36. public static $status = [
  37. 'INIT' => '待分配',
  38. 'WAITING' => '已分配,待售',
  39. 'PENDING' => '已售,待激活',
  40. 'USED' => '已激活',
  41. 'DONE' => '使用完成',
  42. 'EXPIRED' => '已过期',
  43. 'PAUSED' => '冻结'
  44. ];
  45. }