GreenBankCash.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. * 用户银行表 Table<ai_allwin_bank_cash>
  7. */
  8. namespace app\green\model;
  9. use app\common\facade\Inform;
  10. use app\common\facade\WechatPay;
  11. use think\Model;
  12. class GreenBankCash extends Model{
  13. protected $pk = 'id';
  14. //用户
  15. public function user(){
  16. return $this->hasOne('app\common\model\SystemUser','id','user_id');
  17. }
  18. /**
  19. * 提现申请审核操作
  20. * @param array $param
  21. * @return boolean
  22. */
  23. public static function isPass(array $param,$member_miniapp_id){
  24. $id = intval($param['id']);
  25. $ispass = intval($param['ispass']);
  26. $miniapp_id = intval($param['miniapp_id']);
  27. $cash = self::where(['member_miniapp_id' =>$miniapp_id,'id'=> $id,'state' => 0])->find();
  28. if($cash){
  29. $setting = GreenConfig::where(['member_miniapp_id' =>$miniapp_id])->find();
  30. $realmoney = $cash->money;
  31. //判断是否成功
  32. $is_success = false;
  33. $is_diy = false;
  34. $trade_no = $cash->user->invite_code.order_no().'WE';
  35. if($ispass){
  36. if($setting->is_wechat_touser && (!empty($cash->user->official_uid) || $realmoney < 5000)){
  37. $trade_no .= 'WE';
  38. $app = WechatPay::doPay($miniapp_id,true);
  39. $rel = $app->transfer->toBalance(['partner_trade_no' => $trade_no,'openid' => $cash->user->official_uid,'check_name' => 'NO_CHECK','amount' => $realmoney*100,'desc' => '提现']);
  40. if ($rel['return_code'] === 'SUCCESS') {
  41. if ($rel['result_code'] === 'SUCCESS') {
  42. $state = 1;
  43. $is_success = true;
  44. $is_diy = true;
  45. $message = "[通过]申请转出已结算到微信钱包";
  46. }else{
  47. $message = $rel['err_code_des'];
  48. }
  49. }else{
  50. $message = $rel['return_msg'];
  51. }
  52. }else{
  53. $trade_no .= 'BANK';
  54. $is_diy = true;
  55. $message = "[通过]申请转出已结算到您填写的账户";
  56. }
  57. if($is_diy){
  58. $bank = self::isPassCash($cash->user_id,$cash->money);
  59. if($bank){
  60. $state = 1;
  61. $is_success = true;
  62. }
  63. }
  64. }else{
  65. $trade_no .= 'BANK';
  66. $bank = self::isPassCash($cash->user_id,$cash->money,false);
  67. if($bank){
  68. $state = -1;
  69. $is_success = true;
  70. $message = "[失败]申请转出,已退回账户";
  71. }
  72. }
  73. if($is_success){
  74. $data['state'] = $state;
  75. $data['realmoney'] = $realmoney;
  76. $data['audit_time'] = time();
  77. $data['trade_no'] = $trade_no;
  78. $data['msg'] = $message;
  79. self::where(['member_miniapp_id' =>$miniapp_id,'id'=> $id])->update($data);
  80. //通知申请者到微信
  81. if($state){
  82. Inform::sms($cash->user_id,$member_miniapp_id,['title' =>'您的账户进行了一笔转账交易','type' => '个人转出','content' =>$cash->money.'元','state' => '成功']);
  83. }else{
  84. Inform::sms($cash->user_id,$member_miniapp_id,['title' =>'您的账户进行了一笔转账交易','type' => '个人转出','content' =>$cash->money.'元','state' => '失败']);
  85. }
  86. return ['code'=>200,'msg' => $message,'url' => url('green/bank/cashpass',['id' => $id])];
  87. }else{
  88. return ['code'=>0,'msg'=>$message,'url' => url('green/bank/cashpass',['id' => $id])];
  89. }
  90. }else{
  91. return ['code'=>0,'msg'=>'操作失败,为找到申请提现记录.'];
  92. }
  93. }
  94. protected static function isPassCash(int $uid,float $money,$is_success = true){
  95. if($is_success == false){
  96. $info = GreenUser::where(['uid' => $uid])->find();
  97. $money = $money*1000;
  98. $info->points = ['inc',$money];
  99. $info->update_time = time();
  100. return $info->save();
  101. }
  102. return true;
  103. }
  104. }