Cash.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. namespace addons\ddrive\model;
  3. use addons\ddrive\extend\Common;
  4. use app\admin\model\User;
  5. use think\Db;
  6. use think\Model;
  7. class Cash extends Model
  8. {
  9. const STATUS_AUDIT = 1; //待审核
  10. const STATUS_SUCCESS = 2; //成功
  11. const STATUS_FAIL = 3; //失败
  12. // 表名
  13. protected $name = 'cash';
  14. // 自动写入时间戳字段
  15. protected $autoWriteTimestamp = 'int';
  16. // 定义时间戳字段名
  17. protected $createTime = 'createtime';
  18. protected $updateTime = 'updatetime';
  19. protected $deleteTime = false;
  20. // 追加属性
  21. protected $append = [
  22. 'pay_type_text',
  23. 'status_text'
  24. ];
  25. public function getPayTypeList()
  26. {
  27. return ['1' => __('Pay_type 1'), '2' => __('Pay_type 2')];
  28. }
  29. public function getStatusList()
  30. {
  31. return ['1' => __('Status 1'), '2' => __('Status 2'), '3' => __('Status 3')];
  32. }
  33. public function getPayTypeTextAttr($value, $data)
  34. {
  35. $value = $value ? $value : (isset($data['pay_type']) ? $data['pay_type'] : '');
  36. $list = $this->getPayTypeList();
  37. return isset($list[$value]) ? $list[$value] : '';
  38. }
  39. public function getStatusTextAttr($value, $data)
  40. {
  41. $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
  42. $list = $this->getStatusList();
  43. return isset($list[$value]) ? $list[$value] : '';
  44. }
  45. public function addCash($data)
  46. {
  47. $ddrive_config = get_addon_config('ddrive');
  48. $userInfo = Db::name('user')->where('id', $data['user_id'])->find();
  49. $availabel_bonus = $userInfo['money'] ? $userInfo['money']: 0;
  50. if (empty($data['account_number']) || empty($data['payee']) || empty($data['pay_type'])) {
  51. $this->error = '请选择收款账户';
  52. }
  53. if (!in_array($data['pay_type'], [1, 2])) {
  54. $this->error = '收款方式错误';
  55. return false;
  56. }
  57. if (!$data['money'] || $data['money'] < $ddrive_config['withdraw_min'] || $data['money'] > $ddrive_config['withdraw_max']) {
  58. $this->error = '提现金额错误';
  59. return false;
  60. }
  61. $inCash = [];
  62. //手续费
  63. $withdraw_rate = $ddrive_config['withdraw_rate'] ? $ddrive_config['withdraw_rate'] : 0;
  64. $fee_money = ($data['money'])*($withdraw_rate/100);
  65. //$inCash['actual_payment'] = (new \addons\ddrive\library\Common())::math_jian($data['money'], $fee_money);//实际到账金额
  66. $inCash['actual_payment'] = (new \addons\ddrive\library\Common())->math_jian($data['money'], $fee_money);//实际到账金额
  67. $payable_money = $data['money'];
  68. if ($availabel_bonus < $payable_money || $inCash['actual_payment']<=0) {
  69. $this->error = '余额不足';
  70. return false;
  71. }
  72. $inCash['money'] = $data['money'];
  73. $inCash['createtime'] = time();
  74. $inCash['updatetime'] = time();
  75. $inCash['user_id'] = $data['user_id'];
  76. $inCash['account_number'] = $data['account_number'];
  77. $inCash['payee'] = $data['payee'];
  78. $inCash['pay_type'] = $data['pay_type'];
  79. $inCash['actual_payment'] = $inCash['actual_payment'];
  80. $inCash['commission'] = $fee_money;
  81. $id = $this->insertGetId($inCash);
  82. //可用奖金
  83. //$new_availabel_bonus = math_jian($cash_money['all_bonus'], $data['money'] * 10000);
  84. (new User())->where('id', $data['user_id'])->setDec('money', $payable_money);
  85. //减钱
  86. $detailModel = new Details();
  87. $detailModel->addDetail($data['user_id'],2,'提现申请中',$data['money'],1,1,$id);
  88. return $id;
  89. }
  90. public function user()
  91. {
  92. return $this->belongsTo('User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
  93. }
  94. public function admin()
  95. {
  96. return $this->belongsTo('Admin', 'admin_id', 'id', [], 'LEFT')->setEagerlyType(0);
  97. }
  98. }