AgentWallet.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. /**
  3. * AgentWallet.php UTF-8
  4. *
  5. *
  6. * @date : 2018/5/18 19:31
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\agent;
  13. use huo\controller\common\Base;
  14. use huolib\constant\SettleConst;
  15. use huolib\status\SettleStatus;
  16. use huolib\tool\StrUtils;
  17. class AgentWallet extends Base {
  18. /**
  19. * 更新渠道钱包
  20. *
  21. * @param int $agent_id
  22. * @param float $amount
  23. * @param int $type
  24. * @param int $frozen
  25. *
  26. * @return int
  27. */
  28. public function updateWallet(
  29. $agent_id, $amount, $type = SettleConst::SETTLE_WALLET_NO, $frozen = SettleConst::SETTLE_WALLET_NO_LOCK
  30. ) {
  31. $_ac_class = AgentCache::ins();
  32. $_ae_data = $_ac_class->getAgentExtByAgentId($agent_id);
  33. $_total = $_ae_data['share_total'];
  34. $_remain = $_ae_data['share_remain'];
  35. $_frozen = $_ae_data['frozen_amount'];
  36. switch ($type) {
  37. case SettleConst::SETTLE_WALLET_DEDUCT:
  38. $_remain = $_remain - $amount;
  39. break;
  40. case SettleConst::SETTLE_WALLET_ADD:
  41. $_remain = $_remain + $amount;
  42. if (SettleConst::SETTLE_WALLET_UNLOCK != $frozen) {
  43. $_total = $_total + $amount;
  44. }
  45. break;
  46. default:
  47. }
  48. switch ($frozen) {
  49. case SettleConst::SETTLE_WALLET_LOCK:
  50. $_frozen += $amount;
  51. break;
  52. case SettleConst::SETTLE_WALLET_UNLOCK:
  53. $_frozen -= $amount;
  54. break;
  55. default:
  56. }
  57. if (StrUtils::compareNumber($_remain, 0) < 0) {
  58. return SettleStatus::REMAIN_NOT_ENOUGH;
  59. }
  60. if (StrUtils::compareNumber($_frozen, 0) < 0) {
  61. return SettleStatus::FROZEN_AMOUNT_NOT_ENOUGH;
  62. }
  63. $_ae_data['share_total'] = $_total;
  64. $_ae_data['share_remain'] = $_remain;
  65. $_ae_data['frozen_amount'] = $_frozen;
  66. $_rs = $_ac_class->updateAgentExt($agent_id, $_ae_data);
  67. if (false == $_rs) {
  68. return SettleStatus::INNER_ERROR;
  69. } else {
  70. return SettleStatus::NO_ERROR;
  71. }
  72. }
  73. /**
  74. * 更新渠道平台币
  75. *
  76. * @param int $agent_id
  77. * @param float $ptb_cnt
  78. * @param int $type
  79. * @param int $frozen
  80. * @param int $frozen
  81. *
  82. * @return int
  83. */
  84. public function updatePtb(
  85. $agent_id, $ptb_cnt, $type = SettleConst::SETTLE_WALLET_NO, $frozen = SettleConst::SETTLE_WALLET_NO_LOCK
  86. ) {
  87. $_ac_class = AgentCache::ins();
  88. $_ae_data = $_ac_class->getAgentExtByAgentId($agent_id);
  89. if (empty($_ae_data)) {
  90. return SettleStatus::REMAIN_NOT_ENOUGH;
  91. }
  92. $_total = $_ae_data['ptb_total'];
  93. $_remain = $_ae_data['ptb_remain'];
  94. $_frozen = $_ae_data['frozen_ptb'];
  95. switch ($type) {
  96. case SettleConst::SETTLE_WALLET_DEDUCT:
  97. $_remain = $_remain - $ptb_cnt;
  98. break;
  99. case SettleConst::SETTLE_WALLET_ADD:
  100. $_remain = $_remain + $ptb_cnt;
  101. if (SettleConst::SETTLE_WALLET_UNLOCK != $frozen) {
  102. $_total = $_total + $ptb_cnt;
  103. }
  104. break;
  105. default:
  106. }
  107. switch ($frozen) {
  108. case SettleConst::SETTLE_WALLET_LOCK:
  109. $_frozen += $ptb_cnt;
  110. break;
  111. case SettleConst::SETTLE_WALLET_UNLOCK:
  112. $_frozen -= $ptb_cnt;
  113. break;
  114. default:
  115. }
  116. if (StrUtils::compareNumber($_remain, 0) < 0) {
  117. return SettleStatus::REMAIN_NOT_ENOUGH;
  118. }
  119. if (StrUtils::compareNumber($_frozen, 0) < 0) {
  120. return SettleStatus::FROZEN_AMOUNT_NOT_ENOUGH;
  121. }
  122. $_ae_data['ptb_total'] = $_total;
  123. $_ae_data['ptb_remain'] = $_remain;
  124. $_ae_data['frozen_ptb'] = $_frozen;
  125. $_rs = $_ac_class->updateAgentExt($agent_id, $_ae_data);
  126. if (false == $_rs) {
  127. return SettleStatus::INNER_ERROR;
  128. } else {
  129. return SettleStatus::NO_ERROR;
  130. }
  131. }
  132. /**
  133. * 更新提现
  134. *
  135. * @param int $agent_id 渠道ID
  136. * @param float $amount 变化金额
  137. *
  138. * @return int
  139. */
  140. public function updateSettle($agent_id, $amount) {
  141. $_ac_class = AgentCache::ins();
  142. $_ag_data = $_ac_class->getAgentExtByAgentId($agent_id);
  143. $_ag_data['settle_cnt']++;
  144. $_ag_data['last_settle_time'] = time();
  145. $_ag_data['last_settle_amount'] = $amount;
  146. $_rs = $_ac_class->updateAgentExt($agent_id, $_ag_data);
  147. if (false == $_rs) {
  148. return SettleStatus::INNER_ERROR;
  149. } else {
  150. return SettleStatus::NO_ERROR;
  151. }
  152. }
  153. }