MemberCard.php 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\wap\model\user;
  12. use think\Db;
  13. use traits\ModelTrait;
  14. use basic\ModelBasic;
  15. use app\wap\model\user\User;
  16. use app\wap\model\user\MemberCardBatch;//会员卡批次
  17. /**会员卡
  18. * Class MemberCard
  19. * @package app\wap\model\user
  20. */
  21. class MemberCard extends ModelBasic
  22. {
  23. use ModelTrait;
  24. /**激活会员卡
  25. * @param $data
  26. * @param $user
  27. * @return bool
  28. * @throws \think\db\exception\DataNotFoundException
  29. * @throws \think\db\exception\ModelNotFoundException
  30. * @throws \think\exception\DbException
  31. */
  32. public static function confirmActivation($data, $user)
  33. {
  34. $code = self::where('card_number', $data['member_code'])->where('status', 1)->find();
  35. if (!$code) return self::setErrorInfo('会员卡不存在或已冻结!');
  36. if ($code['card_password'] != $data['member_pwd']) return self::setErrorInfo('会员卡密码有误!');
  37. if ($code['use_uid'] && $code['use_time']) return self::setErrorInfo('会员卡已使用!');
  38. if ($user['level'] && $user['is_permanent']) return self::setErrorInfo('您已是永久会员,无需使用会员卡!');
  39. $batch = MemberCardBatch::where('id', $code['card_batch_id'])->find();
  40. if (!$batch['status']) return self::setErrorInfo('会员卡未激活!');
  41. $res = self::edit(['use_uid' => $user['uid'], 'use_time' => time()], $code['id'], 'id');
  42. if ($res && $batch) $res1 = MemberCardBatch::edit(['use_num' => bcadd($batch['use_num'], 1, 0)], $code['card_batch_id'], 'id');
  43. if ($res1) {
  44. switch ($user['level']) {
  45. case 1:
  46. $overdue_time = bcadd(bcmul($batch['use_day'], 86400, 0), $user['overdue_time'], 0);
  47. break;
  48. case 0:
  49. $overdue_time = bcadd(bcmul($batch['use_day'], 86400, 0), time(), 0);
  50. break;
  51. }
  52. $data = [
  53. 'oid' => 0,
  54. 'uid' => $user['uid'],
  55. 'type' => 1,
  56. 'code' => $data['member_code'],
  57. 'price' => 0,
  58. 'validity' => $batch['use_day'],
  59. 'purchase_time' => time(),
  60. 'is_permanent' => 0,
  61. 'is_free' => 0,
  62. 'overdue_time' => $overdue_time,
  63. 'add_time' => time(),
  64. ];
  65. $res4 = MemberRecord::set($data);
  66. if ($res4) {
  67. switch ($user['level']) {
  68. case 1:
  69. $res2 = User::edit(['overdue_time' => $overdue_time, 'is_permanent' => 0], $user['uid'], 'uid');
  70. break;
  71. case 0:
  72. $res2 = User::edit(['level' => 1, 'member_time' => time(), 'overdue_time' => $overdue_time, 'is_permanent' => 0], $user['uid'], 'uid');
  73. break;
  74. }
  75. }
  76. }
  77. $res3 = $res && $res1 && $res2 && $res4;
  78. return $res3;
  79. }
  80. }