BalanceController.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 2017/3/30
  6. * Time: 下午3:56
  7. */
  8. namespace app\backend\modules\finance\controllers;
  9. use app\backend\modules\balance\controllers\RechargeController;
  10. use app\backend\modules\finance\services\BalanceService;
  11. use app\backend\modules\member\models\Member;
  12. use app\backend\modules\member\models\MemberGroup;
  13. use app\backend\modules\member\models\MemberLevel;
  14. use app\common\components\BaseController;
  15. use app\common\facades\Setting;
  16. use app\common\helpers\PaginationHelper;
  17. use app\common\helpers\Url;
  18. use app\common\models\finance\Balance;
  19. use app\common\models\finance\BalanceRecharge;
  20. use app\common\models\finance\BalanceTransfer;
  21. use \app\backend\modules\finance\models\BalanceRecharge as BackendBalanceRecharge;
  22. use app\common\services\credit\ConstService;
  23. use app\common\services\finance\BalanceChange;
  24. class BalanceController extends BaseController
  25. {
  26. private $_member_model;
  27. private $_recharge_model;
  28. /**
  29. * 查看余额明细详情
  30. *
  31. * @return string
  32. * @Author yitian
  33. */
  34. public function lookBalanceDetail()
  35. {
  36. $id = \YunShop::request()->id;
  37. $detailModel = \app\common\models\finance\Balance::getDetailById($id);
  38. return view('finance.balance.look-detail', [
  39. 'detailModel' => $detailModel,
  40. 'pager' => ''
  41. ])->render();
  42. }
  43. /**
  44. * 会员余额转让记录
  45. *
  46. * @return string
  47. * @Author yitian
  48. */
  49. public function transferRecord()
  50. {
  51. if (request()->ajax()) {
  52. $pageSize = 20;
  53. $records = BalanceTransfer::records();
  54. $search = \YunShop::request()->search;
  55. if ($search) {
  56. $records = $records->search($search);
  57. }
  58. $pageList = $records->orderBy('created_at', 'desc')->paginate($pageSize)->toArray();
  59. $shopSet = Setting::get('shop.member');
  60. foreach ($pageList['data'] as &$item) {
  61. if ($item['transfer_info']) {
  62. $item['transfer_info']['avatar'] = $item['transfer_info']['avatar'] ? tomedia($item['transfer_info']['avatar']) : tomedia($shopSet['headimg']);
  63. $item['transfer_info']['nickname'] = $item['transfer_info']['nickname'] ?:
  64. ($item['recipient_info']['mobile'] ? substr($item['recipient_info']['mobile'], 0, 2) . '******' . substr($item['recipient_info']['mobile'], -2, 2) : '无昵称会员');
  65. } else {
  66. $item['transfer_info'] = [
  67. 'avatar' => tomedia($shopSet['headimg']),
  68. 'nickname' => '该会员已被删除或者已注销',
  69. ];
  70. }
  71. if ($item['recipient_info']) {
  72. $item['recipient_info']['avatar'] = $item['recipient_info']['avatar'] ? tomedia($item['recipient_info']['avatar']) : tomedia($shopSet['headimg']);
  73. $item['recipient_info']['nickname'] = $item['recipient_info']['nickname'] ?:
  74. ($item['recipient_info']['mobile'] ? substr($item['recipient_info']['mobile'], 0, 2) . '******' . substr($item['recipient_info']['mobile'], -2, 2) : '无昵称会员');
  75. } else {
  76. $item['recipient_info'] = [
  77. 'avatar' => tomedia($shopSet['headimg']),
  78. 'nickname' => '该会员已被删除或者已注销',
  79. ];
  80. }
  81. }
  82. return $this->successJson('ok', [
  83. 'tansferList' => $pageList,
  84. 'search' => $search
  85. ]);
  86. }
  87. return view('finance.balance.transferRecord')->render();
  88. }
  89. private function rechargeStart()
  90. {
  91. $this->_recharge_model = new BalanceRecharge();
  92. $this->_recharge_model->fill($this->getRechargeData());
  93. $validator = $this->_recharge_model->validator();
  94. if ($validator->fails()) {
  95. return $validator->messages();
  96. }
  97. if ($this->_recharge_model->save()) {
  98. //$result = (new BalanceService())->changeBalance($this->getChangeBalanceData());
  99. $data = $this->getChangeBalanceData();
  100. if ($this->_recharge_model->money > 0) {
  101. $data['change_value'] = $this->_recharge_model->money;
  102. $result = (new BalanceChange())->recharge($data);
  103. } else {
  104. $data['change_value'] = -$this->_recharge_model->money;
  105. $result = (new BalanceChange())->rechargeMinus($data);
  106. }
  107. return $result === true ? $this->updateRechargeStatus() : $result;
  108. }
  109. return '充值记录写入出错,请联系管理员';
  110. }
  111. private function updateRechargeStatus()
  112. {
  113. $this->_recharge_model->status = BalanceRecharge::PAY_STATUS_SUCCESS;
  114. if ($this->_recharge_model->save()) {
  115. return true;
  116. }
  117. return '充值状态修改失败';
  118. }
  119. private function getMemberInfo()
  120. {
  121. return $this->_member_model = Member::getMemberInfoById(\YunShop::request()->member_id) ?: false;
  122. }
  123. //充值记录数据
  124. private function getRechargeData()
  125. {
  126. $rechargeMoney = trim(\YunShop::request()->num);
  127. return array(
  128. 'uniacid' => \YunShop::app()->uniacid,
  129. 'member_id' => \YunShop::request()->member_id,
  130. 'old_money' => $this->_member_model->credit2,
  131. 'money' => $rechargeMoney,
  132. 'new_money' => $this->getNewMoney(),
  133. 'type' => BalanceRecharge::PAY_TYPE_SHOP,
  134. 'ordersn' => $this->getRechargeOrderSN(),
  135. 'status' => BalanceRecharge::PAY_STATUS_ERROR,
  136. );
  137. }
  138. //获取计算后的余额值
  139. private function getNewMoney()
  140. {
  141. $newMoney = $this->_member_model->credit2 + trim(\YunShop::request()->num);
  142. return $newMoney > 0 ? $newMoney : 0;
  143. }
  144. //生成充值订单号
  145. private function getRechargeOrderSN()
  146. {
  147. return BalanceRecharge::createOrderSn('RV', 'ordersn');
  148. }
  149. private function getChangeBalanceData()
  150. {
  151. $money = $this->_recharge_model->money > 0 ? $this->_recharge_model->money : -$this->_recharge_model->money;
  152. return array(
  153. 'member_id' => $this->_recharge_model->member_id,
  154. 'remark' => '后台充值' . $this->_recharge_model->money . "元",
  155. 'source' => ConstService::SOURCE_RECHARGE,
  156. 'relation' => $this->_recharge_model->ordersn,
  157. 'operator' => ConstService::OPERATOR_SHOP,
  158. 'operator_id' => \YunShop::app()->uid
  159. );
  160. }
  161. /**
  162. * 余额充值菜单
  163. *
  164. * @return array
  165. * @Author yitian
  166. */
  167. private function getRechargeMenu()
  168. {
  169. return array(
  170. 'title' => '余额充值',
  171. 'name' => '粉丝',
  172. 'profile' => '会员信息',
  173. 'old_value' => '当前余额',
  174. 'charge_value' => '充值金额',
  175. 'type' => 'balance'
  176. );
  177. }
  178. /**
  179. * 处理充值赠送数据,满额赠送数据
  180. *
  181. * @param $data
  182. * @return array
  183. * @Author yitian
  184. */
  185. private function rechargeSale($data)
  186. {
  187. $result = array();
  188. $sale = is_array($data['enough']) ? $data['enough'] : array();
  189. foreach ($sale as $key => $value) {
  190. $enough = trim($value);
  191. if ($enough) {
  192. $result[] = array(
  193. 'enough' => trim($data['enough'][$key]),
  194. 'give' => trim($data['give'][$key])
  195. );
  196. }
  197. }
  198. return $result;
  199. }
  200. }