SettleModel.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. /**
  3. * SettleModel.php UTF-8
  4. * 提现
  5. *
  6. * @date : 2018/5/18 16:33
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\model\finance;
  13. use huo\model\common\CommonModel;
  14. use huo\model\user\AgentExtModel;
  15. use huo\model\user\UserModel;
  16. use huolib\constant\SettleConst;
  17. use huomp\model\member\UnusualMemModel;
  18. class SettleModel extends CommonModel {
  19. protected $name = 'settle';
  20. // 开启自动写入时间戳字段
  21. protected $autoWriteTimestamp = true;
  22. public function agent() {
  23. return $this->belongsTo('huo\model\user\UserModel', 'agent_id', 'id');
  24. }
  25. /**
  26. * 获取余额
  27. *
  28. * @return \think\model\relation\HasOne
  29. */
  30. public function remain() {
  31. return $this->hasOne(AgentExtModel::className(), 'agent_id', 'agent_id')
  32. ->field('agent_id, share_total,frozen_amount,share_remain');
  33. }
  34. /**
  35. * 获取用户标记
  36. *
  37. * @return \think\model\relation\HasOne
  38. */
  39. public function memtag() {
  40. return $this->hasOne(UnusualMemModel::className(), 'agent_id', 'agent_id')
  41. ->field('agent_id, type');
  42. }
  43. /**
  44. * 创建提现订单
  45. *
  46. * @param array $data
  47. *
  48. * @return bool|string
  49. */
  50. public function createOrder($data = []) {
  51. $_data = $data;
  52. $_data['failreason'] = !empty($data['failreason']) ? $data['failreason'] : '';
  53. if (empty($data)) {
  54. return false;
  55. }
  56. if ($_obj = self::create($_data, true)) {
  57. $_sh_data['s_id'] = $_obj->id;
  58. $_sh_data['u_id'] = $data['agent_id'];
  59. $_sh_data['content'] = '创建提现订单';
  60. (new SettleHistoryModel())->addLog($_sh_data);
  61. return $_obj->id;
  62. } else {
  63. return false;
  64. }
  65. }
  66. /**
  67. * 更新单条记录
  68. *
  69. * @param array $data
  70. * @param int $id
  71. *
  72. * @return bool
  73. */
  74. public function updateData($data, $id) {
  75. $_map['id'] = $id;
  76. $_data = $data;
  77. $_rs = self::update($_data, $_map, true);
  78. if (false == $_rs) {
  79. return false;
  80. } else {
  81. return true;
  82. }
  83. }
  84. /**
  85. * @param int $id
  86. *
  87. * @return array|false
  88. */
  89. public function getDetail($id) {
  90. $_map['id'] = $id;
  91. $_data = $this->where($_map)->find();
  92. if (false == $_data) {
  93. return false;
  94. }
  95. if (is_object($_data)) {
  96. $_data = $_data->toArray();
  97. }
  98. return $_data;
  99. }
  100. /**
  101. * 获取提现总金额
  102. *
  103. * @param $agent_id
  104. *
  105. * @return float|int
  106. */
  107. public function getTotalAmount($agent_id) {
  108. $_status = [SettleConst::SETTLE_STATUS_OP_CHECK, SettleConst::SETTLE_STATUS_FIN_CHECK,
  109. SettleConst::SETTLE_STATUS_OK];
  110. return $this->where('agent_id', '=', $agent_id)
  111. ->where('status', 'in', $_status)
  112. ->sum('amount');
  113. }
  114. /**
  115. * 获取提现总金额
  116. *
  117. * @param $agent_id
  118. *
  119. * @return float|int
  120. */
  121. public function getSubTotalAmount($agent_id) {
  122. $_sub_ids = (new UserModel())->getIdsByParentId($agent_id);
  123. if (empty($_sub_ids)) {
  124. return 0.00;
  125. }
  126. $_status = [SettleConst::SETTLE_STATUS_OP_CHECK, SettleConst::SETTLE_STATUS_FIN_CHECK,
  127. SettleConst::SETTLE_STATUS_OK];
  128. return $this->where('agent_id', '=', $agent_id)
  129. ->where('status', 'in', $_status)
  130. ->sum('amount');
  131. }
  132. /**
  133. * 获取提现次数
  134. *
  135. * @param $agent_id
  136. *
  137. * @return int|string
  138. */
  139. public function getCnt($agent_id) {
  140. $_map = [];
  141. $_map['status'] = ['in', [SettleConst::SETTLE_STATUS_OP_CHECK, SettleConst::SETTLE_STATUS_FIN_CHECK,
  142. SettleConst::SETTLE_STATUS_OK, SettleConst::SETTLE_STATUS_QUEUE]];
  143. $_map['agent_id'] = $agent_id;
  144. return $this->where($_map)->count();
  145. }
  146. }