GmChargeLogic.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. /**
  3. * GmChargeLogic.php UTF-8
  4. *
  5. *
  6. * @date : 2018/6/5 15:51
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : luowei <lw@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\GmChargeModel;
  16. use huolib\constant\CommonConst;
  17. use huolib\tool\StrUtils;
  18. class GmChargeLogic 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['gm_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['gm_charge_model.create_time'] = ['gt', strtotime($param['start_time'])];
  33. } else if (!empty($param['end_time'])) {
  34. $_map['gm_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['gm_charge_model.status'] = $param['status'];
  48. }
  49. if (!empty($param['type'])) {
  50. $_map['gm_charge_model.type'] = $param['type'];
  51. }
  52. if (!empty($param['username'])) {
  53. $_mem_ids = (new MemberLogic())->getIdsByUsername($param['username']);
  54. $_map['gm_charge_model.mem_id'] = ['in', $_mem_ids];
  55. }
  56. if (!empty($param['agent_id'])) {
  57. $_mem_ids = (new MemberLogic())->getIdsByAgentId($param['agent_id']);
  58. $_map['gm_charge_model.mem_id'] = ['in', $_mem_ids];
  59. }
  60. return $_map;
  61. }
  62. public function getField($agent_id) {
  63. return [];
  64. }
  65. /**
  66. * 获取记录
  67. *
  68. * @param $mem_id
  69. * @param $app_id
  70. * @param $param
  71. * @param string $page
  72. * @param string $order
  73. *
  74. * @return array
  75. */
  76. public function getMemList($mem_id, $app_id, $param = [], $page = '1,10', $order = '-create_time') {
  77. $_map = $this->getWhere($param);
  78. $_field = $this->getField($mem_id);
  79. if (!empty($mem_id)) {
  80. $_map['mem_id'] = $mem_id;
  81. }
  82. if (!empty($app_id)) {
  83. $_map['app_id'] = $app_id;
  84. }
  85. return $this->getList($_field, $_map, $page, $order);
  86. }
  87. /**
  88. * 获取列表
  89. *
  90. * @param array $field
  91. * @param array $where
  92. * @param string $page
  93. * @param string $order
  94. *
  95. * @return array
  96. */
  97. public function getList($field = [], $where, $page = '1,10', $order = '-create_time') {
  98. $_map = $where;
  99. $_model = new GmChargeModel();
  100. $_count = $_model->alias('gm_charge_model')->where($_map)->count();
  101. if (empty($_count)) {
  102. return [
  103. 'count' => 0,
  104. 'sum' => [],
  105. 'list' => []
  106. ];
  107. }
  108. $_sum_field = [
  109. 'sum(amount)' => 'sum_amount',
  110. 'sum(real_amount)' => 'sum_real_amount',
  111. 'sum(rebate_cnt)' => 'sum_rebate_cnt',
  112. 'sum(gm_cnt)' => 'sum_gm_cnt'
  113. ];
  114. $_sum_data = $_model
  115. ->alias('gm_charge_model')
  116. ->field($_sum_field)
  117. ->where($where)
  118. ->find();
  119. if (is_object($_sum_data)) {
  120. $_sum_data = $_sum_data->toArray();
  121. }
  122. $_sum = [];
  123. foreach ($_sum_data as $_k => $_v) {
  124. $_sum[$_k] = StrUtils::formatNumber($_v);
  125. }
  126. $_field = $field;
  127. if (empty($field)) {
  128. $_field = [];
  129. }
  130. $_order = $_model->orderFilter($order);
  131. $_datas = $_model
  132. ->alias('gm_charge_model')
  133. ->with('mem,back,game')
  134. ->where($where)
  135. ->field($_field)
  136. ->order($_order)
  137. ->page($page)
  138. ->select();
  139. if (is_object($_datas)) {
  140. $_datas = $_datas->toArray();
  141. }
  142. if (empty($_datas)) {
  143. return [
  144. 'count' => $_count,
  145. 'sum' => $_sum,
  146. 'list' => []
  147. ];
  148. }
  149. foreach ($_datas as $_k => $_v) {
  150. $_datas[$_k]['username'] = !empty($_v['mem']) ? $_v['mem']['username'] : '';
  151. $_datas[$_k]['gamename'] = !empty($_v['game']) ? $_v['game']['name'] : '';
  152. }
  153. return [
  154. 'count' => $_count,
  155. 'sum' => $_sum,
  156. 'list' => $_datas
  157. ];
  158. }
  159. public function getIncomeList($where = [], $page = '1,10', $order = '-create_time') {
  160. $_map = $this->getWhere($where);
  161. $_field = [];
  162. return $this->getList($_field, $_map, $page, $order);
  163. }
  164. public function getDetailByOrderId($order_id) {
  165. $_gm_charge = (new GmChargeModel())->where('order_id', '=', $order_id)->find();
  166. return $_gm_charge;
  167. }
  168. }