RechargeController.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: king
  5. * Date: 2018/10/22
  6. * Time: 上午11:48
  7. */
  8. namespace app\backend\modules\point\controllers;
  9. use app\backend\modules\member\models\Member;
  10. use app\backend\modules\point\models\RechargeModel;
  11. use app\common\components\BaseController;
  12. use app\common\exceptions\ShopException;
  13. use app\common\helpers\Url;
  14. use app\common\models\notice\MessageTemp;
  15. class RechargeController extends BaseController
  16. {
  17. /**
  18. * @var Member
  19. */
  20. private $memberModel;
  21. /**
  22. * @var RechargeModel
  23. */
  24. private $rechargeModel;
  25. public function preAction()
  26. {
  27. parent::preAction();
  28. $this->memberModel = $this->getMemberModel();
  29. }
  30. public function index()
  31. {
  32. $value = $this->getPostValue();
  33. if ($value) {
  34. return $this->recharge();
  35. }
  36. return view('point.recharge', $this->getResultData());
  37. }
  38. /**
  39. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  40. */
  41. private function recharge()
  42. {
  43. $result = $this->tryRecharge();
  44. if ($result === true && $this->rechargeModel->status == RechargeModel::STATUS_SUCCESS) {
  45. $temp_id = \Setting::get('shop.notice.point_change');
  46. $params = [
  47. ['name' => '时间', 'value' => date('Y-m-d H:i:s')],
  48. ['name' => '积分变动金额', 'value' => $this->getRechargeData()['money'] ],
  49. ['name' => '积分变动类型', 'value' => $this->rechargeModel->getTypeNameComment($this->rechargeModel->type) ],
  50. ['name' => '变动后积分数值', 'value' => $this->memberModel->credit1+$this->getRechargeData()['money']]
  51. ];
  52. $msg = \app\common\models\notice\MessageTemp::getSendMsg($temp_id, $params);
  53. $news_link = MessageTemp::find($temp_id)->news_link;
  54. $news_link = $news_link ?:'';
  55. \app\common\services\MessageService::notice($temp_id, $msg, $this->memberModel->uid, \YunShop::app()->uniacid,$news_link);
  56. return $this->message('积分充值成功', $this->successUrl());
  57. }
  58. return view('point.recharge', $this->getResultData());
  59. }
  60. /**
  61. * @return bool|\Laracasts\Flash\FlashNotifier
  62. */
  63. private function tryRecharge()
  64. {
  65. $this->rechargeModel = new RechargeModel();
  66. $this->rechargeModel->fill($this->getRechargeData());
  67. $validator = $this->rechargeModel->validator();
  68. if ($validator->fails()) {
  69. return $this->error($validator->messages()->first());
  70. }
  71. return $this->rechargeModel->save();
  72. }
  73. /**
  74. * @return array
  75. */
  76. private function getRechargeData()
  77. {
  78. return [
  79. 'type' => 0, //todo 后台充值、商城付款,应该在支付模型中设置常量
  80. 'money' => $this->getPostValue(),
  81. 'status' => RechargeModel::STATUS_ERROR,
  82. 'remark' => $this->getPostRemark(),
  83. 'uniacid' => \YunShop::app()->uniacid,
  84. 'member_id' => $this->memberModel->uid,
  85. 'order_sn' => RechargeModel::createOrderSn('RP','order_sn')
  86. ];
  87. }
  88. private function successUrl()
  89. {
  90. return Url::absoluteWeb('point.recharge.index',array('id' => $this->memberModel->uid));
  91. }
  92. /**
  93. * @return array
  94. */
  95. private function getResultData()
  96. {
  97. return [
  98. 'memberInfo' => $this->memberModel,
  99. 'rechargeMenu' => $this->getRechargeMenu()
  100. ];
  101. }
  102. /**
  103. * @return mixed
  104. * @throws ShopException
  105. */
  106. private function getMemberModel()
  107. {
  108. $member_id = $this->getMemberId();
  109. $memberModel = Member::getMemberInfoById($member_id);
  110. if (!$memberModel) {
  111. throw new ShopException('会员不存在');
  112. }
  113. return $memberModel;
  114. }
  115. /**
  116. * @return int
  117. * @throws ShopException
  118. */
  119. private function getMemberId()
  120. {
  121. $member_id = (int)\YunShop::request()->id;
  122. if (!$member_id) {
  123. throw new ShopException('参数错误');
  124. }
  125. return $member_id;
  126. }
  127. /**
  128. * @return double
  129. */
  130. private function getPostValue()
  131. {
  132. return \YunShop::request()->point;
  133. }
  134. /**
  135. * @return string
  136. */
  137. private function getPostRemark()
  138. {
  139. return \YunShop::request()->remark;
  140. }
  141. /**
  142. * @return array
  143. */
  144. private function getRechargeMenu()
  145. {
  146. return array(
  147. 'title' => '积分充值',
  148. 'name' => '粉丝',
  149. 'type' => 'point',
  150. 'profile' => '会员信息',
  151. 'old_value' => '当前积分',
  152. 'charge_value' => '充值积分'
  153. );
  154. }
  155. }