Takecash.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. namespace app\admin\controller;
  3. use app\common\controller\Backend;
  4. use think\Db;
  5. /**
  6. * 用户提现申请
  7. *
  8. * @icon fa fa-circle-o
  9. */
  10. class Takecash extends Backend
  11. {
  12. /**
  13. * Takecash模型对象
  14. * @var \app\admin\model\Takecash
  15. */
  16. protected $model = null;
  17. public function _initialize()
  18. {
  19. parent::_initialize();
  20. $this->model = new \app\admin\model\Takecash;
  21. $this->view->assign("typeList", $this->model->getTypeList());
  22. $this->view->assign("statusList", $this->model->getStatusList());
  23. }
  24. public function import()
  25. {
  26. parent::import();
  27. }
  28. /**
  29. * 查看
  30. */
  31. public function index()
  32. {
  33. //当前是否为关联查询
  34. $this->relationSearch = true;
  35. //设置过滤方法
  36. $this->request->filter(['strip_tags', 'trim']);
  37. if ($this->request->isAjax()) {
  38. //如果发送的来源是Selectpage,则转发到Selectpage
  39. if ($this->request->request('keyField')) {
  40. return $this->selectpage();
  41. }
  42. list($where, $sort, $order, $offset, $limit) = $this->buildparams();
  43. $list = $this->model
  44. ->with(['user'])
  45. ->where($where)
  46. ->order($sort, $order)
  47. ->paginate($limit);
  48. foreach ($list as $row) {
  49. $row->getRelation('user')->visible(['username','nickname']);
  50. }
  51. $list2 = collection($list->items())->toArray();
  52. foreach($list2 as $key => &$info){
  53. $account_info = json_decode($info['acount_json'],true);
  54. if($info['type'] == 2){
  55. $info['account_info'] = '姓名:'.$account_info['truename'].',身份证:'.$account_info['idcard'].',账号:'.$account_info['bank_no'];
  56. }else{
  57. $info['account_info'] = '姓名:'.$account_info['truename'].',身份证:'.$account_info['idcard'].',账号:'.$account_info['pay_no'];
  58. }
  59. }
  60. $result = array("total" => $list->total(), "rows" => $list2);
  61. return json($result);
  62. }
  63. return $this->view->fetch();
  64. }
  65. /**
  66. * 审核
  67. */
  68. public function audit(){
  69. $id = input('id');
  70. $info = Db::name('take_cash')
  71. ->where('id',$id)
  72. ->find();
  73. if ($this->request->isPost()) {
  74. $status = input('status',0);
  75. $data = [
  76. 'status' => $status,
  77. 'auditremark' => input('auditremark',''),
  78. 'audittime' => strtotime(input('audittime','')),
  79. 'updatetime' => time(),
  80. ];
  81. Db::startTrans();
  82. $rs = Db::name('take_cash')->where('id',$id)->update($data);
  83. if($status == 1){
  84. //系统消息
  85. $msg_id = \app\common\model\Message::addMessage($info['user_id'],'提现审核','提现审核已经通过');
  86. $remark = '提现(成功)';
  87. Db::name('user_gold_log')->where('table','take_cash')->where('table_id',$id)->update(['remark'=>$remark]);
  88. $shouyi_result = $this->takecash($info['user_id'],$info['jewel'],'take_cash',$id);
  89. if($shouyi_result !== true){
  90. Db::rollback();
  91. $this->error($shouyi_result);
  92. }
  93. }elseif($status == 2){
  94. $remark = '提现(驳回)';
  95. Db::name('user_gold_log')->where('table','take_cash')->where('table_id',$id)->update(['remark'=>$remark]);
  96. //还钱
  97. $wallet_rs = model('wallet')->lockChangeAccountRemain($info['user_id'],'jewel',$info['jewel'],31,'提现被拒返回:'.$info['jewel'],'take_cash',$info['id']);
  98. if($wallet_rs['status'] === false){
  99. Db::rollback();
  100. $this->error($wallet_rs['msg']);
  101. }
  102. //系统消息
  103. $msg_id = \app\common\model\Message::addMessage($info['user_id'],'提现审核','提现审核已经被拒绝');
  104. }
  105. Db::commit();
  106. $this->success('审核完成');
  107. }
  108. $account_info = json_decode($info['acount_json'],true);
  109. if($info['type'] == 2){
  110. $info['account_info'] = '姓名:'.$account_info['truename'].',身份证:'.$account_info['idcard'].',账号:'.$account_info['bank_no'];
  111. }else{
  112. $info['account_info'] = '姓名:'.$account_info['truename'].',身份证:'.$account_info['idcard'].',账号:'.$account_info['pay_no'];
  113. }
  114. $this->assign('row',$info);
  115. return $this->view->fetch();
  116. }
  117. //普通邀请关系,提现
  118. private function takecash($user_id,$gold,$table,$table_id){
  119. //精确小数点
  120. bcscale(1);
  121. //收益者本人
  122. $userinfo = Db::name('user')->field('username,invite_uid')->where('id',$user_id)->find();
  123. //提现往上(直推)返一级
  124. if(!empty($userinfo['invite_uid'])){
  125. $takecash_invite_rate = config('site.invite_takecash_rate');
  126. $jewel = bcdiv(bcmul($gold,$takecash_invite_rate),100);
  127. $result = model('Wallet')->lockChangeAccountRemain($userinfo['invite_uid'],'jewel',$jewel,42, $userinfo['username'].'提现',$table,$table_id);
  128. if($result['status']===false)
  129. {
  130. return $result['msg'];
  131. }
  132. }
  133. return true;
  134. }
  135. }