AccountOrderLogic.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. /**
  3. * AccountOrderLogic.php UTF-8
  4. *
  5. *
  6. * @date : 2018/6/13 17:43
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : luowei <lw@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huoAccountDeal\logic;
  13. use huo\controller\member\Member;
  14. use huo\model\common\CommonModel;
  15. use huoAccountDeal\model\AccountGoodsModel;
  16. use huoAccountDeal\model\AccountOrderModel;
  17. use huolib\constant\AccountConst;
  18. use huolib\constant\OrderConst;
  19. class AccountOrderLogic extends CommonModel {
  20. /**
  21. * @param $param
  22. *
  23. * @return array|mixed
  24. */
  25. public function getWhere($param = []) {
  26. $_map = [];
  27. if (!empty($param['status'])) {
  28. $_map['status'] = $param['status'];
  29. }
  30. if (!empty($param['buy_mem_id'])) {
  31. $_map['buy_mem_id'] = $param['buy_mem_id'];
  32. }
  33. if (!empty($param['order_id'])) {
  34. $_map['order_id'] = $param['order_id'];
  35. }
  36. if (!empty($param['title'])) {
  37. $_ags_ids = (new AccountGoodsModel())->getIdsByTitle($param['title']);
  38. $_map['ags_id'] = ['in', $_ags_ids];
  39. }
  40. if (!empty($param['sell_mem'])) {
  41. $_member_id = (new Member())->getIdByName($param['sell_mem']);
  42. $_map['sell_mem_id'] = $_member_id;
  43. }
  44. if (!empty($param['buy_mem'])) {
  45. $_member_id = (new Member())->getIdByName($param['buy_mem']);
  46. $_map['buy_mem_id'] = $_member_id;
  47. }
  48. return $_map;
  49. }
  50. public function getOrderList($where = [], $page = '1,10', $order = '-create_time') {
  51. $_map = $this->getWhere($where);
  52. $_field = [
  53. 'order_id' => 'order_id',
  54. 'ags_id' => 'ags_id',
  55. 'app_id' => 'app_id',
  56. 'price' => 'price',
  57. 'real_price' => 'real_price',
  58. 'payway' => 'payway',
  59. 'status' => 'status',
  60. 'pay_time' => 'pay_time',
  61. ];
  62. $_model = new AccountOrderModel();
  63. $_count = $_model->where($where)->count();
  64. if (empty($_count)) {
  65. return [
  66. 'count' => $_count,
  67. 'list' => [],
  68. ];
  69. }
  70. $_order = $this->orderFilter($order);
  71. $_datas = $_model->with('mg,game,goods')->field($_field)->where($_map)->order($_order)->page($page)->select();
  72. if (is_object($_datas)) {
  73. $_datas = $_datas->toArray();
  74. }
  75. foreach ($_datas as $key => $data) {
  76. $data['account_id'] = isset($data['ags_id']) ? $data['ags_id'] : '';
  77. $data['nickname'] = isset($data['mg']) ? $data['mg']['nickname'] : '';
  78. $data['gamename'] = isset($data['game']) ? $data['game']['name'] : '';
  79. $data['game_icon'] = isset($data['game']) ? $data['game']['icon'] : '';
  80. $data['server_id'] = isset($data['goods']) ? $data['goods']['server_id'] : '';
  81. $data['server_name'] = isset($data['goods']) ? $data['goods']['server_name'] : '';
  82. $data['role_id'] = isset($data['goods']) ? $data['goods']['role_id'] : '';
  83. $data['role_name'] = isset($data['goods']) ? $data['goods']['role_name'] : '';
  84. //移除关联数组
  85. unset($data['mg'], $data['game'], $data['account']);
  86. $_datas[$key] = $data;
  87. }
  88. return [
  89. 'count' => $_count,
  90. 'list' => $_datas
  91. ];
  92. }
  93. /**
  94. * 取消购买
  95. *
  96. * @param $order_id
  97. * @param $ags_id
  98. *
  99. * @return bool
  100. */
  101. public function cancel($order_id, $ags_id) {
  102. //订单变为失败状态
  103. AccountOrderModel::update(['status' => OrderConst::CP_STATUS_FAIL], ['order_id' => $order_id]);
  104. //重新上架小号商品
  105. AccountGoodsModel::update(
  106. ['status' => AccountConst::STATUS_PULL_ON_SHELVES, 'lock_time' => 0], ['id' => $ags_id]
  107. );
  108. return true;
  109. }
  110. public function adminOrderList($map, $page = '1,10', $order = '-create_time') {
  111. $_map = $this->getWhere($map);
  112. $_field = [];
  113. $_model = new AccountOrderModel();
  114. $_count = $_model->where($_map)->count();
  115. if (empty($_count)) {
  116. return [
  117. 'count' => $_count,
  118. 'list' => [],
  119. ];
  120. }
  121. $_order = $this->orderFilter($order);
  122. $_datas = $_model->with('mg,game,goods,seller,buyer')->field($_field)->where($_map)->order($_order)->page($page)
  123. ->select();
  124. if (is_object($_datas)) {
  125. $_datas = $_datas->toArray();
  126. }
  127. return [
  128. 'count' => $_count,
  129. 'list' => $_datas
  130. ];
  131. }
  132. /**
  133. * 根据玩家名获取玩家游戏账号ID
  134. *
  135. * @param $username
  136. *
  137. * @return mixed
  138. */
  139. public function getMgMemIdByUsername($username) {
  140. return (new AccountOrderModel())->where(['check_mem_id' => $username])->value('mg_mem_id');
  141. }
  142. }