PtbAgentOrder.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. <?php
  2. /**
  3. * PtbAgentOrder.php UTF-8
  4. * 渠道订单
  5. *
  6. * @date : 2018/5/18 18:16
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\logic\finance;
  13. use huo\controller\member\Member;
  14. use huo\logic\agent\AgentLogic;
  15. use huo\logic\member\MemberLogic;
  16. use huo\model\common\CommonModel;
  17. use huo\model\finance\PtbAgentOrderModel;
  18. use huolib\constant\AgentConst;
  19. use huolib\constant\CommonConst;
  20. use huolib\tool\StrUtils;
  21. class PtbAgentOrder extends CommonModel {
  22. /**
  23. * @param array $param
  24. *
  25. * @return array
  26. */
  27. protected function getWhere($param = []) {
  28. $_map = [];
  29. if (!empty($param['start_time']) && !empty($param['start_time'])) {
  30. $_map['ptb_agent_order_model.create_time'] = ['between', [strtotime($param['start_time']),
  31. CommonConst::CONST_DAY_SECONDS + strtotime(
  32. $param['end_time']
  33. )]];
  34. } else if (!empty($param['start_time'])) {
  35. $_map['ptb_agent_order_model.create_time'] = ['gt', strtotime($param['start_time'])];
  36. } else if (!empty($param['end_time'])) {
  37. $_map['ptb_agent_order_model.create_time'] = ['lt', CommonConst::CONST_DAY_SECONDS + strtotime(
  38. $param['end_time']
  39. )];
  40. }
  41. if (!empty($param['order_id'])) {
  42. $_map['order_id'] = $param['order_id'];
  43. }
  44. if (!empty($param['agent_id'])) {
  45. $_map['ptb_agent_order_model.agent_id'] = $param['agent_id'];
  46. }
  47. if (!empty($param['to_agent_id'])) {
  48. $_map['ptb_agent_order_model.to_agent_id'] = $param['to_agent_id'];
  49. }
  50. if (!empty($param['mem_id'])) {
  51. $_map['ptb_agent_order_model.to_mem_id'] = $param['mem_id'];
  52. }
  53. if (!empty($param['parent_id'])) {
  54. $_agent_ids = (new AgentLogic())->getAgentIds($param['parent_id']);
  55. $_map['ptb_agent_order_model.agent_id'] = ['in', $_agent_ids];
  56. }
  57. if (!empty($param['username'])) {
  58. $_mem_ids = (new MemberLogic())->getIdsByUsername($param['username']);
  59. $_map['ptb_agent_order_model.to_mem_id'] = ['in', $_mem_ids];
  60. }
  61. if (!empty($param['cost_type'])) {
  62. if ($param['cost_type'] == AgentConst::IS_AGENT) {
  63. $_map['ptb_agent_order_model.to_agent_id'] = ['>', 0];
  64. } else if ($param['cost_type'] == AgentConst::IS_MEMBER) {
  65. $_map['ptb_agent_order_model.to_mem_id'] = ['>', 0];
  66. }
  67. }
  68. return $_map;
  69. }
  70. public function getField($agent_id) {
  71. return [];
  72. }
  73. /**
  74. * 获取获取记录
  75. *
  76. * @param $agent_id
  77. * @param $param
  78. * @param string $page
  79. * @param string $order
  80. *
  81. * @return array
  82. */
  83. public function getAgentList($agent_id, $param, $page = '1,10', $order = '-create_time') {
  84. $_map = $this->getWhere($param);
  85. $field = $this->getField($agent_id);
  86. $_map['to_mem_id'] = 0;
  87. $_map['to_agent_id'] = ['gt', 0];
  88. if (!empty($agent_id)) {
  89. $_map['agent_id'] = $agent_id;
  90. }
  91. return $this->getList($field, $_map, $page, $order);
  92. }
  93. /**
  94. * 获取获取记录
  95. *
  96. * @param $agent_id
  97. * @param $param
  98. * @param string $page
  99. * @param string $order
  100. *
  101. * @return array
  102. */
  103. public function getMemList($agent_id, $param, $page = '1,10', $order = '-create_time') {
  104. $_map = $this->getWhere($param);
  105. $field = $this->getField($agent_id);
  106. $_map['to_agent_id'] = 0;
  107. $_map['to_mem_id'] = ['gt', 0];
  108. $_map['ptb_cnt'] = ['gt', 0];
  109. if (!empty($agent_id)) {
  110. $_map['agent_id'] = $agent_id;
  111. }
  112. if (!empty($param['username'])) {
  113. $_to_mem_id = (new Member())->getIdByName($param['username']);
  114. if (empty($_to_mem_id)) {
  115. return [
  116. 'count' => 0,
  117. 'sum' => [],
  118. 'list' => []
  119. ];
  120. }
  121. $_map['to_mem_id'] = $_to_mem_id;
  122. }
  123. return $this->getList($field, $_map, $page, $order);
  124. }
  125. /**
  126. * 获取获取记录
  127. *
  128. * @param $agent_id
  129. * @param $param
  130. * @param string $page
  131. * @param string $order
  132. *
  133. * @return array
  134. */
  135. public function getMemGmList($agent_id, $param, $page = '1,10', $order = '-create_time') {
  136. $_map = $this->getWhere($param);
  137. $field = $this->getField($agent_id);
  138. $_map['to_agent_id'] = 0;
  139. $_map['to_mem_id'] = ['gt', 0];
  140. $_map['gm_cnt'] = ['gt', 0];
  141. $_map['app_id'] = ['gt', 0];
  142. if (!empty($param['app_id'])) {
  143. $_map['app_id'] = $param['app_id'];
  144. }
  145. if (!empty($agent_id)) {
  146. $_map['agent_id'] = $agent_id;
  147. }
  148. if (!empty($param['username'])) {
  149. $_to_mem_id = (new Member())->getIdByName($param['username']);
  150. if (empty($_to_mem_id)) {
  151. return [
  152. 'count' => 0,
  153. 'sum' => [],
  154. 'list' => []
  155. ];
  156. }
  157. $_map['to_mem_id'] = $_to_mem_id;
  158. }
  159. return $this->getList($field, $_map, $page, $order);
  160. }
  161. /**
  162. * 获取消费列表
  163. *
  164. * @param array $field
  165. * @param array $where
  166. * @param string $page
  167. * @param string $order
  168. *
  169. * @return array
  170. */
  171. public function getList($field = [], $where, $page = '1,10', $order = '-create_time') {
  172. $_map = $where;
  173. $_model = new PtbAgentOrderModel();
  174. $_count = $_model->alias('ptb_agent_order_model')->where($_map)->count();
  175. if (empty($_count)) {
  176. return [
  177. 'count' => 0,
  178. 'sum' => [],
  179. 'list' => []
  180. ];
  181. }
  182. $_sum_field = [
  183. 'sum(amount)' => 'sum_amount',
  184. 'sum(real_amount)' => 'sum_real_amount',
  185. 'sum(rebate_cnt)' => 'sum_rebate_cnt',
  186. 'sum(ptb_cnt)' => 'sum_ptb_cnt',
  187. 'sum(gm_cnt)' => 'sum_gm_cnt',
  188. 'sum(cost_ptb_cnt)' => 'sum_cost_ptb_cnt'
  189. ];
  190. $_sum_data = $_model
  191. ->alias('ptb_agent_order_model')
  192. ->field($_sum_field)
  193. ->where($where)
  194. ->find();
  195. if (is_object($_sum_data)) {
  196. $_sum_data = $_sum_data->toArray();
  197. }
  198. $_sum = [];
  199. foreach ($_sum_data as $_k => $_v) {
  200. $_sum[$_k] = StrUtils::formatNumber($_v);
  201. }
  202. $_field = $field;
  203. if (empty($field)) {
  204. $_field = [];
  205. }
  206. $_order = $_model->orderFilter($order);
  207. $_datas = $_model
  208. ->alias('ptb_agent_order_model')
  209. ->with('mem')
  210. ->with('agent')
  211. ->with('toagent')
  212. ->with('game')
  213. ->where($where)
  214. ->field($_field)
  215. ->order($_order)
  216. ->page($page)
  217. ->select();
  218. if (is_object($_datas)) {
  219. $_datas = $_datas->toArray();
  220. }
  221. if (empty($_datas)) {
  222. return [
  223. 'count' => $_count,
  224. 'sum' => $_sum,
  225. 'list' => []
  226. ];
  227. }
  228. foreach ($_datas as $_k => $_v) {
  229. $_datas[$_k]['to_agent_name'] = !empty($_v['toagent']) ? $_v['toagent']['user_login'] : '';
  230. $_datas[$_k]['username'] = !empty($_v['mem']) ? $_v['mem']['username'] : '';
  231. $_datas[$_k]['gamename'] = !empty($_v['game']) ? $_v['game']['name'] : '';
  232. }
  233. return [
  234. 'count' => $_count,
  235. 'sum' => $_sum,
  236. 'list' => $_datas
  237. ];
  238. }
  239. /**
  240. * 获取消费列表
  241. *
  242. * @param array $where
  243. * @param string $page
  244. * @param string $order
  245. *
  246. * @return array
  247. */
  248. public function getCostList($where = [], $page = '1,10', $order = '-create_time') {
  249. $_map = $this->getWhere($where);
  250. $_field = [];
  251. return $this->getList($_field, $_map, $page, $order);
  252. }
  253. }