AddOrCutMoney.php 6.0 KB

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