MemberCardController.php 5.3 KB

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