MemberCardController.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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\api\controller\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. /** 会员卡
  18. * Class MemberCardController
  19. * @package app\api\controller\v1\user
  20. */
  21. class MemberCardController
  22. {
  23. protected $services = NUll;
  24. protected $channelType = ['weixin' => 'wechat', 'weixinh5' => 'weixinh5', 'routine' => 'routine', 'h5' => 'h5'];
  25. /** 初始化service层句柄
  26. * MemberCardController constructor.
  27. * @param MemberCardServices $memberCardServices
  28. */
  29. public function __construct(MemberCardServices $memberCardServices)
  30. {
  31. $this->services = $memberCardServices;
  32. }
  33. /**
  34. * 会员卡主页数据接口
  35. * @param Request $request
  36. * @return mixed
  37. * @throws \think\db\exception\DataNotFoundException
  38. * @throws \think\db\exception\DbException
  39. * @throws \think\db\exception\ModelNotFoundException
  40. */
  41. public function index(Request $request)
  42. {
  43. $member_rights = $this->services->getMemberRightsInfo();
  44. /** @var AgreementServices $agreementService */
  45. $agreementService = app()->make(AgreementServices::class);
  46. $member_explain = $agreementService->getAgreementBytype(1);
  47. $member_explain = (isset($member_explain['status']) && $member_explain['status'] == 1) ? $member_explain : "";
  48. $member_type = $this->services->DoMemberType();
  49. /** @var OtherOrderServices $OtherOrderServices */
  50. $OtherOrderServices = app()->make(OtherOrderServices::class);
  51. $is_get_free = $OtherOrderServices->isCanGetFree((int)$request->uid());
  52. /** @var StoreCouponUserServices $couponUserService */
  53. $couponUserService = app()->make(StoreCouponUserServices::class);
  54. $coupons = $couponUserService->getMemberCoupon($request->uid());
  55. return app('json')->success([
  56. 'member_rights' => $member_rights['member_right'],
  57. 'is_get_free' => $is_get_free,
  58. 'member_explain' => $member_explain,
  59. 'member_type' => $member_type,
  60. 'member_coupons' => $coupons
  61. ]);
  62. }
  63. /**
  64. * 卡密领取会员卡
  65. * @param Request $request
  66. * @return mixed
  67. */
  68. public function draw_member_card(Request $request)
  69. {
  70. $data = $request->postMore([
  71. ['member_card_code', ''],
  72. ['member_card_pwd', ''],
  73. ['from', 'weixin'],
  74. ]);
  75. $data['from'] = strtolower(trim($data['from']));
  76. if (!array_key_exists($data['from'], $this->channelType)) return app('json')->fail(100101);
  77. $data['from'] = $this->channelType[$data['from']];
  78. $uid = (int)$request->uid();
  79. $this->services->drawMemberCard($data, $uid);
  80. return app('json')->success(410165);
  81. }
  82. /**
  83. * 会员券接口
  84. * @param Request $request
  85. * @return mixed
  86. * @throws \think\db\exception\DataNotFoundException
  87. * @throws \think\db\exception\DbException
  88. * @throws \think\db\exception\ModelNotFoundException
  89. */
  90. public function memberCouponList(Request $request)
  91. {
  92. /** @var StoreCouponUserServices $couponUserService */
  93. $couponUserService = app()->make(StoreCouponUserServices::class);
  94. $coupons = $couponUserService->getMemberCoupon($request->uid());
  95. return app('json')->success($coupons);
  96. }
  97. /**
  98. * 计算会员天数
  99. * @param Request $request
  100. * @return mixed
  101. */
  102. public function getOverdueTime(Request $request)
  103. {
  104. $params = $request->getMore([
  105. ['member_type', ''],
  106. ['vip_day', ''],
  107. ['mc_id', 0]
  108. ]);
  109. $member_type = $params['member_type'];
  110. $vip_day = $params['vip_day'];
  111. /** @var \app\services\user\UserServices $userServices */
  112. $userServices = app()->make(\app\services\user\UserServices::class);
  113. $user_info = $userServices->getUserInfo($request->uid());
  114. if ($member_type == 'ever') {
  115. $overdue_time = 0;
  116. $is_ever_level = 1;
  117. } else {
  118. if ($user_info['is_money_level'] == 0) {
  119. $overdue_time = bcadd(bcmul($vip_day, 86400, 0), time(), 0);
  120. } else {
  121. $overdue_time = bcadd(bcmul($vip_day, 86400, 0), $user_info['overdue_time'], 0);
  122. }
  123. $is_ever_level = 0;
  124. }
  125. if ($is_ever_level == 1 || $user_info['is_ever_level']) {
  126. $res = "永久会员";
  127. } else {
  128. $res = date('Y-m-d', $overdue_time);
  129. }
  130. return app('json')->success(['data' => $res]);
  131. }
  132. }