PtbChargeLogic.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?php
  2. /**
  3. * PtbChargeLogic.php UTF-8
  4. * 玩家平台币充值订单逻辑
  5. *
  6. * @date : 2018/5/18 21:03
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\logic\finance;
  13. use huo\logic\member\MemberLogic;
  14. use huo\model\common\CommonModel;
  15. use huo\model\finance\PtbChargeModel;
  16. use huolib\constant\CommonConst;
  17. use huolib\tool\StrUtils;
  18. class PtbChargeLogic extends CommonModel {
  19. /**
  20. * @param array $param
  21. *
  22. * @return array
  23. */
  24. protected function getWhere($param = []) {
  25. $_map = [];
  26. if (!empty($param['start_time']) && !empty($param['end_time'])) {
  27. $_map['ptb_charge_model.create_time'] = ['between', [strtotime($param['start_time']),
  28. CommonConst::CONST_DAY_SECONDS + strtotime(
  29. $param['end_time']
  30. )]];
  31. } else if (!empty($param['start_time'])) {
  32. $_map['ptb_charge_model.create_time'] = ['gt', strtotime($param['start_time'])];
  33. } else if (!empty($param['end_time'])) {
  34. $_map['ptb_charge_model.create_time'] = ['lt',
  35. CommonConst::CONST_DAY_SECONDS + strtotime($param['end_time'])];
  36. }
  37. if (!empty($param['order_id'])) {
  38. $_map['order_id'] = $param['order_id'];
  39. }
  40. if (!empty($param['mem_id'])) {
  41. $_map['mem_id'] = $param['mem_id'];
  42. }
  43. if (!empty($param['from_id'])) {
  44. $_map['from_id'] = $param['from_id'];
  45. }
  46. if (!empty($param['status'])) {
  47. $_map['ptb_charge_model.status'] = $param['status'];
  48. }
  49. if (!empty($param['type'])) {
  50. $_map['ptb_charge_model.type'] = $param['type'];
  51. }
  52. if (!empty($param['username'])) {
  53. $_mem_ids = (new MemberLogic())->getIdsByUsername($param['username']);
  54. $_map['ptb_charge_model.mem_id'] = ['in', $_mem_ids];
  55. }
  56. return $_map;
  57. }
  58. public function getField($agent_id) {
  59. return [];
  60. }
  61. /**
  62. * 获取获取记录
  63. *
  64. * @param $mem_id
  65. * @param $param
  66. * @param string $page
  67. * @param string $order
  68. *
  69. * @return array
  70. */
  71. public function getMemList($mem_id, $param = [], $page = '1,10', $order = '-create_time') {
  72. $_map = $this->getWhere($param);
  73. $_field = $this->getField($mem_id);
  74. if (!empty($mem_id)) {
  75. $_map['mem_id'] = $mem_id;
  76. }
  77. return $this->getList($_field, $_map, $page, $order);
  78. }
  79. /**
  80. * 获取列表
  81. *
  82. * @param array $field
  83. * @param array $where
  84. * @param string $page
  85. * @param string $order
  86. *
  87. * @return array
  88. */
  89. public function getList($field = [], $where, $page = '1,10', $order = '-create_time') {
  90. $_map = $where;
  91. $_model = new PtbChargeModel();
  92. $_count = $_model->alias('ptb_charge_model')->where($_map)->count();
  93. if (empty($_count)) {
  94. return [
  95. 'count' => 0,
  96. 'sum' => [],
  97. 'list' => []
  98. ];
  99. }
  100. $_sum_field = [
  101. 'sum(amount)' => 'sum_amount',
  102. 'sum(real_amount)' => 'sum_real_amount',
  103. 'sum(rebate_cnt)' => 'sum_rebate_cnt',
  104. 'sum(ptb_cnt)' => 'sum_ptb_cnt'
  105. ];
  106. $_sum_data = $_model
  107. ->alias('ptb_charge_model')
  108. ->field($_sum_field)
  109. ->where($where)
  110. ->find();
  111. if (is_object($_sum_data)) {
  112. $_sum_data = $_sum_data->toArray();
  113. }
  114. $_sum = [];
  115. foreach ($_sum_data as $_k => $_v) {
  116. $_sum[$_k] = StrUtils::formatNumber($_v);
  117. }
  118. $_field = $field;
  119. if (empty($field)) {
  120. $_field = [];
  121. }
  122. $_order = $_model->orderFilter($order);
  123. $_datas = $_model
  124. ->alias('ptb_charge_model')
  125. ->with('mem,agent')
  126. ->where($where)
  127. ->field($_field)
  128. ->order($_order)
  129. ->page($page)
  130. ->select();
  131. if (is_object($_datas)) {
  132. $_datas = $_datas->toArray();
  133. }
  134. if (empty($_datas)) {
  135. return [
  136. 'count' => $_count,
  137. 'sum' => $_sum,
  138. 'list' => []
  139. ];
  140. }
  141. foreach ($_datas as $_k => $_v) {
  142. $_datas[$_k]['username'] = !empty($_v['mem']) ? $_v['mem']['username'] : '';
  143. $_datas[$_k]['agent_name'] = !empty($_v['agent']) ? $_v['agent']['user_login'] : '';
  144. }
  145. return [
  146. 'count' => $_count,
  147. 'sum' => $_sum,
  148. 'list' => $_datas
  149. ];
  150. }
  151. public function getIncomeList($where = [], $page = '1,10', $order = '-create_time') {
  152. $_map = $this->getWhere($where);
  153. $_field = [];
  154. return $this->getList($_field, $_map, $page, $order);
  155. }
  156. /**
  157. * @param $order_id
  158. *
  159. * @return array|false|\PDOStatement|string|PtbChargeModel
  160. */
  161. public function getDetailByOrderId($order_id) {
  162. $_ptb_charge = (new PtbChargeModel())->where('order_id', '=', $order_id)->find();
  163. return $_ptb_charge;
  164. }
  165. }