MemberCardController.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\controller\api\v1\user;
  12. use app\Request;
  13. use app\services\activity\coupon\StoreCouponUserServices;
  14. use app\services\order\OtherOrderServices;
  15. use app\services\other\AgreementServices;
  16. use app\services\user\member\MemberCardServices;
  17. use app\services\user\MemberRecordServices;
  18. use app\services\user\UserServices;
  19. use think\db\exception\DataNotFoundException;
  20. use think\db\exception\DbException;
  21. use think\db\exception\ModelNotFoundException;
  22. /**
  23. * 会员卡
  24. * Class MemberCardController
  25. * @package app\controller\api\v1\user
  26. */
  27. class MemberCardController
  28. {
  29. protected $services = NUll;
  30. protected $channelType = ['weixin' => 'wechat', 'weixinh5' => 'weixinh5', 'routine' => 'routine', 'h5' => 'h5'];
  31. /** 初始化service层句柄
  32. * MemberCardController constructor.
  33. * @param MemberCardServices $memberCardServices
  34. */
  35. public function __construct(MemberCardServices $memberCardServices)
  36. {
  37. $this->services = $memberCardServices;
  38. }
  39. /**
  40. * 会员卡主页数据接口
  41. * @param Request $request
  42. * @return mixed
  43. */
  44. public function index(Request $request)
  45. {
  46. $uid = (int)$request->uid();
  47. $member_rights = $this->services->getMemberRightsInfo();
  48. /** @var AgreementServices $agreementService */
  49. $agreementService = app()->make(AgreementServices::class);
  50. $member_explain = $agreementService->getAgreementBytype(1);
  51. $member_explain = (isset($member_explain['status']) && $member_explain['status'] == 1) ? $member_explain : "";
  52. $member_type = $this->services->DoMemberType($uid);
  53. /** @var OtherOrderServices $OtherOrderServices */
  54. $OtherOrderServices = app()->make(OtherOrderServices::class);
  55. $is_get_free = $OtherOrderServices->isCanGetFree($uid);
  56. /** @var StoreCouponUserServices $couponUserService */
  57. $couponUserService = app()->make(StoreCouponUserServices::class);
  58. $coupons = $couponUserService->getMemberCoupon($uid);
  59. return app('json')->successful([
  60. 'member_rights' => $member_rights['member_right'],
  61. 'is_get_free' => $is_get_free,
  62. 'member_explain' => $member_explain,
  63. 'member_type' => $member_type,
  64. 'member_coupons' => $coupons
  65. ]);
  66. }
  67. /**
  68. * 卡密领取会员卡
  69. * @param Request $request
  70. * @return mixed
  71. */
  72. public function draw_member_card(Request $request)
  73. {
  74. $data = $request->postMore([
  75. ['member_card_code', ''],
  76. ['member_card_pwd', ''],
  77. ['from', 'weixin'],
  78. ]);
  79. $data['from'] = strtolower(trim($data['from']));
  80. if (!array_key_exists($data['from'], $this->channelType)) return app('json')->fail('非法渠道');
  81. $data['from'] = $this->channelType[$data['from']];
  82. $uid = (int)$request->uid();
  83. $this->services->drawMemberCard($data, $uid);
  84. return app('json')->successful("激活成功");
  85. }
  86. /**
  87. * 会员券接口
  88. * @param Request $request
  89. * @return mixed
  90. * @throws DataNotFoundException
  91. * @throws DbException
  92. * @throws ModelNotFoundException
  93. */
  94. public function memberCouponList(Request $request)
  95. {
  96. /** @var StoreCouponUserServices $couponUserService */
  97. $couponUserService = app()->make(StoreCouponUserServices::class);
  98. $coupons = $couponUserService->getMemberCoupon($request->uid());
  99. return app('json')->successful($coupons);
  100. }
  101. /**
  102. * 计算会员天数
  103. * @param Request $request
  104. * @return mixed
  105. */
  106. public function getOverdueTime(Request $request)
  107. {
  108. $params = $request->getMore([
  109. ['member_type', ''],
  110. ['vip_day', ''],
  111. ]);
  112. $member_type = $params['member_type'];
  113. $vip_day = $params['vip_day'];
  114. $user_info = $request->user();
  115. if ($member_type == 'ever') {
  116. $overdue_time = 0;
  117. $is_ever_level = 1;
  118. } else {
  119. if ($user_info['is_money_level'] == 0) {
  120. $overdue_time = bcadd(bcmul($vip_day, 86400, 0), time(), 0);
  121. } else {
  122. $overdue_time = bcadd(bcmul($vip_day, 86400, 0), $user_info['overdue_time'], 0);
  123. }
  124. $is_ever_level = 0;
  125. }
  126. if ($is_ever_level == 1 || $user_info['is_ever_level']) {
  127. $res = "永久会员";
  128. } else {
  129. $res = date('Y-m-d', $overdue_time);
  130. }
  131. return app('json')->successful(['data' => $res]);
  132. }
  133. }