AddOrCutMoney.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2018/12/3
  6. * Time: 12:37
  7. * 本类待测试,请别直接使用!!!!!!!!!!!!!
  8. */
  9. namespace App\Lib\Biz\Money;
  10. use App\Models\Money_recharge as MoneyRecharge;
  11. use App\Models\Account_detailed as AccountDetail;
  12. use App\Models\Money_details;
  13. use App\Models\MoneyRechargeRemark;
  14. use DB;
  15. class AddOrCutMoney
  16. {
  17. public function __construct()
  18. {
  19. }
  20. /**
  21. * 添加资金充值记录
  22. * @param AccountDetail $accountDetail
  23. * @param string $account_name
  24. * @param string $order_id
  25. * @param float $money
  26. * @param string $recharge_type
  27. * @param string $operator
  28. * @param string $reason
  29. * @param string $detail
  30. * @param int $rate
  31. * @return mixed
  32. * 由 ikeke 修改于2018-12-18,主要添加status的默认值
  33. */
  34. public function addMoneyRechargeRec(AccountDetail $accountDetail, string $account_name, string $order_id, float $money, string $recharge_type, string $operator, string $reason, string $detail, int $rate = 1, int $status = 1)
  35. {
  36. $money_cash = $accountDetail ? $accountDetail->cash : 0;
  37. $money_cash += $money; //当前余额
  38. $info_id = UUID();
  39. $data = [
  40. 'order_id' => $order_id,
  41. 'info_identity' => $info_id,
  42. 'account_identity' => $accountDetail->account_identity,
  43. 'account_name' => $account_name,
  44. 'money' => $money,
  45. 'reason' => $reason,
  46. 'money_cash' => $money_cash,
  47. 'status' => $status,
  48. 'apply_time' => date('Y-m-d H:i:s'),
  49. 'complete_time' => date('Y-m-d H:i:s'),
  50. 'recharge_type' => $recharge_type,
  51. 'sysetem_user' => $operator,
  52. 'rate' => $rate,
  53. ];
  54. // $detail = parseTag($detail, $data);
  55. $data['remark'] = $detail;
  56. try {
  57. (new MoneyRecharge())->insert($data);
  58. return $info_id;
  59. } catch (\Exception $e) {
  60. return $e->getMessage();
  61. return -70141;
  62. }
  63. }
  64. /**
  65. * 添加资金详情记录
  66. * @param AccountDetail $accountDetail
  67. * @param string $account_name
  68. * @param string $trade_id
  69. * @param float $money
  70. * @param int $money_type
  71. * @param string $trade_type
  72. * @param string $operator
  73. * @param string $trade_desc
  74. * @param string $reason
  75. * @return mixed
  76. */
  77. public function addMoneyDetailRec(AccountDetail $accountDetail, string $account_name, string $trade_id, float $money, int $money_type, string $trade_type, string $operator, string $trade_desc,string $reason='')
  78. {
  79. $oid = UUID();
  80. $money_cash = $accountDetail->cash; //当前余额
  81. if ($money_type === 1) {
  82. $money_cash += $money;
  83. } else {
  84. $money_cash -= $money;
  85. }
  86. $details['info_identity'] = $oid;
  87. $details['trade_id'] = $trade_id;
  88. $details['account_name'] = $account_name;
  89. $details['account_identity'] = $accountDetail->account_identity;
  90. $details['money'] = $money;
  91. $details['money_time'] = date('Y-m-d H:i:s');
  92. $details['money_type'] = $money_type;//2=扣款
  93. $details['money_cash'] = $money_cash;
  94. $details['trade_type'] = $trade_type;
  95. $details['sysetem_user'] = $operator;
  96. $details['reason'] = $reason;
  97. $details['status'] = 1;
  98. // $detail = parseTag($trade_desc, $details);
  99. $details['trade_desc'] = $trade_desc;
  100. try {
  101. (new Money_details())->insert($details);
  102. return $oid;
  103. } catch (\Exception $e) {
  104. // return ($e->getMessage());
  105. return -500142;
  106. }
  107. }
  108. /**
  109. * 更新流水差额
  110. * @param AccountDetail $accountDetail
  111. * @param float $money
  112. * @param int $rate
  113. * @return mixed
  114. */
  115. public function updateNeedMoneyRec(AccountDetail $accountDetail, float $money, int $rate = 1)
  116. {
  117. $withdrawRuleObj = lm('withdraw_rule', 'api');
  118. $ret = $withdrawRuleObj->updateRule($accountDetail->account_identity, $money, $rate);
  119. return intval($ret) ? $ret : -500143;
  120. }
  121. /**
  122. * 添加资金remark
  123. * @param AccountDetail $accountDetail
  124. * @param string $order_id
  125. * @param float $money
  126. * @return mixed
  127. */
  128. public function addMoneyRechargeRemark(AccountDetail $accountDetail, string $order_id, float $money)
  129. {
  130. $cjd = [
  131. 'name' => $accountDetail->account_name,
  132. 'order_id' => $order_id,
  133. 'money' => $money,
  134. 'recharge_time' => $operation_time = time(),
  135. ];
  136. try {
  137. return (new MoneyRechargeRemark())->insertGetId($cjd);
  138. } catch (\Exception $e) {
  139. return -500144;
  140. }
  141. }
  142. /**
  143. * 更新用户账户详情表中余额信息(加款操作)
  144. * @param AccountDetail $accountDetail
  145. * @param float $money
  146. * @return mixed
  147. */
  148. public function incAccountDetailMoney(AccountDetail $accountDetail, float $money)
  149. {
  150. $type = 1;
  151. $ret = DB::select("select update_money('" . $accountDetail->account_identity . "'," . $money . "," . $type . ")");
  152. if ($ret[0]->update_money !== 1) return -3;//更新失败
  153. return 1;
  154. }
  155. /**
  156. * 用户账户详情扣款操作
  157. * @param AccountDetail $accountDetail
  158. * @param float $money
  159. * @return int
  160. */
  161. public function decrAccountDetailMoney(AccountDetail $accountDetail, float $money): int
  162. {
  163. $accountDetail = (new AccountDetail())->where('account_identity', $accountDetail->account_identity)->first();
  164. if (!$accountDetail) {
  165. return -1;//用户不存在
  166. }
  167. $money_cash = $accountDetail->cash ? $accountDetail->cash : 0;
  168. $money_cash -= $money; //更新后当前余额
  169. if ($money_cash < 0) {
  170. return -2;
  171. }
  172. $type = 0;
  173. $ret = DB::select("select update_money('" . $accountDetail->account_identity . "'," . $money . "," . $type . ")");
  174. if ($ret[0]->update_money !== 1) return -3;//更新失败
  175. return 1;
  176. }
  177. }