* @version : HUOSDK 8.0 */ namespace huoAccountDeal\logic; use huo\controller\member\Member; use huo\model\common\CommonModel; use huoAccountDeal\model\AccountGoodsModel; use huoAccountDeal\model\AccountOrderModel; use huolib\constant\AccountConst; use huolib\constant\OrderConst; class AccountOrderLogic extends CommonModel { /** * @param $param * * @return array|mixed */ public function getWhere($param = []) { $_map = []; if (!empty($param['status'])) { $_map['status'] = $param['status']; } if (!empty($param['buy_mem_id'])) { $_map['buy_mem_id'] = $param['buy_mem_id']; } if (!empty($param['order_id'])) { $_map['order_id'] = $param['order_id']; } if (!empty($param['title'])) { $_ags_ids = (new AccountGoodsModel())->getIdsByTitle($param['title']); $_map['ags_id'] = ['in', $_ags_ids]; } if (!empty($param['sell_mem'])) { $_member_id = (new Member())->getIdByName($param['sell_mem']); $_map['sell_mem_id'] = $_member_id; } if (!empty($param['buy_mem'])) { $_member_id = (new Member())->getIdByName($param['buy_mem']); $_map['buy_mem_id'] = $_member_id; } return $_map; } public function getOrderList($where = [], $page = '1,10', $order = '-create_time') { $_map = $this->getWhere($where); $_field = [ 'order_id' => 'order_id', 'ags_id' => 'ags_id', 'app_id' => 'app_id', 'price' => 'price', 'real_price' => 'real_price', 'payway' => 'payway', 'status' => 'status', 'pay_time' => 'pay_time', ]; $_model = new AccountOrderModel(); $_count = $_model->where($where)->count(); if (empty($_count)) { return [ 'count' => $_count, 'list' => [], ]; } $_order = $this->orderFilter($order); $_datas = $_model->with('mg,game,goods')->field($_field)->where($_map)->order($_order)->page($page)->select(); if (is_object($_datas)) { $_datas = $_datas->toArray(); } foreach ($_datas as $key => $data) { $data['account_id'] = isset($data['ags_id']) ? $data['ags_id'] : ''; $data['nickname'] = isset($data['mg']) ? $data['mg']['nickname'] : ''; $data['gamename'] = isset($data['game']) ? $data['game']['name'] : ''; $data['game_icon'] = isset($data['game']) ? $data['game']['icon'] : ''; $data['server_id'] = isset($data['goods']) ? $data['goods']['server_id'] : ''; $data['server_name'] = isset($data['goods']) ? $data['goods']['server_name'] : ''; $data['role_id'] = isset($data['goods']) ? $data['goods']['role_id'] : ''; $data['role_name'] = isset($data['goods']) ? $data['goods']['role_name'] : ''; //移除关联数组 unset($data['mg'], $data['game'], $data['account']); $_datas[$key] = $data; } return [ 'count' => $_count, 'list' => $_datas ]; } /** * 取消购买 * * @param $order_id * @param $ags_id * * @return bool */ public function cancel($order_id, $ags_id) { //订单变为失败状态 AccountOrderModel::update(['status' => OrderConst::CP_STATUS_FAIL], ['order_id' => $order_id]); //重新上架小号商品 AccountGoodsModel::update( ['status' => AccountConst::STATUS_PULL_ON_SHELVES, 'lock_time' => 0], ['id' => $ags_id] ); return true; } public function adminOrderList($map, $page = '1,10', $order = '-create_time') { $_map = $this->getWhere($map); $_field = []; $_model = new AccountOrderModel(); $_count = $_model->where($_map)->count(); if (empty($_count)) { return [ 'count' => $_count, 'list' => [], ]; } $_order = $this->orderFilter($order); $_datas = $_model->with('mg,game,goods,seller,buyer')->field($_field)->where($_map)->order($_order)->page($page) ->select(); if (is_object($_datas)) { $_datas = $_datas->toArray(); } return [ 'count' => $_count, 'list' => $_datas ]; } /** * 根据玩家名获取玩家游戏账号ID * * @param $username * * @return mixed */ public function getMgMemIdByUsername($username) { return (new AccountOrderModel())->where(['check_mem_id' => $username])->value('mg_mem_id'); } }