Cash.php 3.6 KB

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