objMOrder = new MOrder($this->onlineUserId, $this->onlineEnterpriseId, $this->onlineUserId, true); $this->objMCart = new MCart($this->onlineUserId, $this->onlineEnterpriseId, true); } /** * @return array * @throws \Exception */ public function commonFieldFilter() { $params = $this->request->getRawJson(); if (empty($params)) { parent::sendOutput('参数为空', ErrorCode::$paramError); } $orderData = [ 'payType' => isset($params['payType']) ? $params['payType'] : '', 'source' => isset($params['source']) ? $params['source'] : 0,//订单来源 'goodsData' => isset($params['goodsData']) ? $params['goodsData'] : '',//商品数据json(包含信息有以下字段) ]; foreach ($orderData as $key => $value) { if (empty($value) && $value !== 0) { parent::sendOutput($key . '参数错误', ErrorCode::$paramError); } } $objMGoods = new MGoods($this->onlineEnterpriseId,true,$this->onlineUserId); $orderData['deliveryType'] = isset($params['deliveryType']) ? $params['deliveryType'] : 0; $orderData['receiveAddressId'] = isset($params['receiveAddressId']) ? $params['receiveAddressId'] : 0;//收货地址id $orderData['version'] = isset($params['version']) ? $params['version'] : 0; $orderData['comBinId'] = isset($params['comBinId']) ? $params['comBinId'] : 0;//组合套餐id $orderData['selfRuleId'] = isset($params['selfRuleId']) ? $params['selfRuleId'] : 0;//自提点id $orderData['useCoupon'] = isset($params['useCoupon']) ? $params['useCoupon'] : ''; $orderData['remark'] = isset($params['orderRemark']) ? $params['orderRemark'] : '';//订单备注 $orderData['admixPayData'] = getArrayItem($params, 'admixPayData', []); // 混合支付数据 $allGoodsData = [ 'totalMoney' => isset($orderData['goodsData']['totalMoney']) ? $orderData['goodsData']['totalMoney'] : '', 'payMoney' => isset($orderData['goodsData']['payMoney']) ? $orderData['goodsData']['payMoney'] : '', 'preferential' => isset($orderData['goodsData']['preferential']) ? $orderData['goodsData']['preferential'] : '', 'checkNum' => isset($orderData['goodsData']['checkNum']) ? $orderData['goodsData']['checkNum'] : '', 'expressMoney' => isset($orderData['goodsData']['expressMoney']) ? $orderData['goodsData']['expressMoney'] : 0, 'goodsData' => isset($orderData['goodsData']['goodsData']) ? $orderData['goodsData']['goodsData'] : '', ]; if ($allGoodsData['payMoney'] == 0) { parent::sendOutput('订单金额异常,无法下单,请联系客服!', ErrorCode::$paramError); } foreach ($allGoodsData as $key => $value) { if (empty($value) && $value !== 0) { parent::sendOutput($key . '参数错误', ErrorCode::$paramError); } } $allShopData = $allGoodsData['goodsData']; $goodsData = []; $allGoods = []; $proporties = []; foreach ($allShopData as $key => $val) { $goodsData[$key] = [ 'shopId' => isset($val['shopId']) ? $val['shopId'] : '', 'shopName' => isset($val['shopName']) ? $val['shopName'] : '', 'totalMoney' => isset($val['totalMoney']) ? $val['totalMoney'] : '', 'payMoney' => isset($val['payMoney']) ? $val['payMoney'] : '', 'expressMoney' => isset($val['expressMoney']) ? $val['expressMoney'] : 0, 'shopGoodsData' => isset($val['shopGoodsData']) ? $val['shopGoodsData'] : '', ]; foreach ($goodsData[$key] as $k => $v) { if (empty($v) && $v !== 0) { parent::sendOutput($k . '参数错误', ErrorCode::$paramError); } } if ($orderData['version'] == 1){ if (!isset($val['deliveryType'])){ parent::sendOutput('deliveryType参数错误',ErrorCode::$paramError); } if (!isset($val['selfRuleId'])){ parent::sendOutput('selfRuleId参数错误',ErrorCode::$paramError); } if (!isset($val['receiveAddressId'])){ parent::sendOutput('receiveAddressId参数错误',ErrorCode::$paramError); } $proporties[$val['shopId']] = [ 'deliveryType' => $val['deliveryType'], 'selfRuleId' => $val['selfRuleId'], 'receiveAddressId' => $val['receiveAddressId'] ]; } } //活动商品验证剩余数量 $orderData['proporties'] = $proporties; $dbResult = $this->objMOrder->checkLimit($allGoods); if (!$dbResult->isSuccess()) { parent::sendOutput($dbResult->getData(), $dbResult->getErrorCode()); } $lists = $orderData['goodsData']['goodsData']; foreach ($lists as &$item){ $shopGoodsData = $item['shopGoodsData']; foreach ($shopGoodsData as &$row){ if ($row['isEq'] == StatusCode::$standard){ $extends = $row['extends']; $row['skuId'] = $extends['uId']; $row['unitName'] = $extends['u']; $row['buyNum'] = bcmul($row['buyNum'],$extends['conversion'],2); $row['conversion'] = 0; $goodsResult = $objMGoods->getGoodsInfo($row['goodsId']); if (!$goodsResult->isSuccess()){ parent::sendOutput($goodsResult->getData(),ErrorCode::$dberror); } $goodsInfo = $goodsResult->getData(); $specMultiple = $goodsInfo['specMultiple']; $specMultipleMap = []; foreach ($specMultiple as $spec){ $specMultipleMap[$spec['id']] = $spec; } $masterPrice = 0; if( isset($specMultipleMap[$extends['uId']]) ){ $objMPrice = new MPrice($this->onlineUserId, $this->onlineEnterpriseId); if( isset($specMultipleMap[$extends['uId']]['memberPrice']) && !empty($specMultipleMap[$extends['uId']]['memberPrice'])){ $masterPrice = $specMultipleMap[$extends['uId']]['memberPrice']; }else{ $masterPrice = $objMPrice->getLadderPriceCommon($specMultipleMap[$extends['uId']]['ladderPrice'], $specMultipleMap[$extends['uId']]['salePrice'], $row['buyNum'],$specMultipleMap[$extends['uId']]['enabledLadder']); } } if ($masterPrice == 0){ parent::sendOutput('抄码商品'.$row['goodsId'].'价格获取错误',ErrorCode::$paramError); } $row['price'] = $masterPrice; $item['salePrice'] = $masterPrice; } } $item['shopGoodsData'] = $shopGoodsData; } $orderData['goodsData']['goodsData'] = $lists; return $orderData; } /** * 上传银行打款凭证 */ public function addOrderBankData() { $params = $this->request->getRawJson(); if (empty($params)) { parent::sendOutput('参数为空', ErrorCode::$paramError); } $orderBankData = [ 'orderId' => isset($params['orderId']) ? $params['orderId'] : '', 'bankData' => isset($params['bankData']) ? $params['bankData'] : '', ]; foreach ($orderBankData as $k => $v) { if (empty($v) && $v !== 0) { parent::sendOutput($k . '参数错误', ErrorCode::$paramError); } } if(!is_array($orderBankData['orderId'])){ parent::sendOutput('orderId参数错误', ErrorCode::$paramError); } $result = $this->objMOrder->addOrderBankData($orderBankData); if ($result->isSuccess()) { parent::sendOutput($result->getData()); } parent::sendOutput($result->getData(), $result->getErrorCode()); } /** * 添加订单 * @throws \Exception */ public function addOrder() { $orderData = $this->commonFieldFilter(); $ip = $this->request->get_onlineip(); $result = $this->objMOrder->addOrder($orderData, $ip,$this->token,$this->authorization); if ($result->isSuccess()) { parent::sendOutput($result->getData()); } parent::sendOutput($result->getData(), $result->getErrorCode()); } /** * 更新订单状态,取消订单/确认订单 * @throws \Exception */ public function updateOrderStatus() { $id = $this->request->param('request_id'); if (!$id) { $this->sendOutput('参数错误', ErrorCode::$paramError); } $params = $this->request->getRawJson(); $params = [ 'orderStatus' => isset($params['orderStatus']) ? $params['orderStatus'] : StatusCode::$orderStatus['close'], // 不传时为取消订单 'cancelReason' => isset($params['cancelReason']) ? $params['cancelReason'] : '', 'cancelbeforeOrderStatus' => getArrayItem($params, 'cancelbeforeOrderStatus' , '') ]; if( $params['orderStatus'] == StatusCode::$orderStatus['close'] && empty($params['cancelReason']) ){ parent::sendOutput('请输入取消订单原因', ErrorCode::$paramError); } $result = $this->objMOrder->updateOrderStatus($id, $params, [ 'Token' => $this->token, 'Authorization' => $this->authorization ] ); if ($result->isSuccess()) { parent::sendOutput($result->getData()); } parent::sendOutput($result->getData(), $result->getErrorCode()); } /** * 获取指定订单详情 * @throws \Exception */ public function getOrderInfoById() { $orderId = $this->request->param('request_id'); if (!$orderId) { $this->sendOutput('参数错误', ErrorCode::$paramError); } $result = $this->objMOrder->getOrderInfoById($orderId); if ($result->isSuccess()) { parent::sendOutput($result->getData()); } parent::sendOutput($result->getData(), $result->getErrorCode()); } /** * 全部 {"page": 1,"pageSize": 10,"orderStatus": 0} * 待付款 {"page": 1,"pageSize": 10,"orderStatus": 2} * 待发货 {"page": 1,"pageSize": 10,"orderStatus": 3} * 待收货 {"page": 1,"pageSize": 10,"orderStatus": 4} * 待收货 {"page": 1,"pageSize": 10,"orderStatus": 5} * @throws \Exception */ public function getOrderSelect() { $params = $this->request->getRawJson(); $page = $this->request->param('page') ?: 1; $pageSize = $this->request->param('pageSize') ?: 10; $offset = ($page - 1) * $pageSize; $params['limit'] = $pageSize; $params['offset'] = $offset; $orderData = $this->objMOrder->getOrderSelect($params); if ($orderData->isSuccess()) { $returnData = $orderData->getData(); $pageData = [ 'pageIndex' => $page, 'pageSize' => $pageSize, 'pageTotal' => $returnData['total'], ]; parent::sendOutput($returnData['data'], 0, $pageData); } parent::sendOutput($orderData->getData(), ErrorCode::$dberror); } /** * 订单再次支付 * @throws \Exception */ public function payOrder() { $paramsData = $this->request->getRawJson(); if (empty($paramsData)) { $this->sendOutput('参数为空', ErrorCode::$paramError); } $params = [ 'payType' => isset($paramsData['payType']) ? $paramsData['payType'] : '', 'no' => isset($paramsData['no']) ? $paramsData['no'] : '', 'source' => isset($paramsData['source']) ? $paramsData['source'] : StatusCode::$source['miniProgram'], ]; foreach ($params as $key => $value) { if (empty($value) && $value !== 0) { $this->sendOutput($key . '参数错误', ErrorCode::$paramError); } } $params['bankData'] = getArrayItem($paramsData,'bankData',(object)[]); $params['admixPayData'] = getArrayItem($paramsData,'admixPayData',[]); $ip = $this->request->get_onlineip(); $result = $this->objMOrder->payOrder($params, $ip); if ($result->isSuccess()) { parent::sendOutput($result->getData()); } parent::sendOutput($result->getData(), $result->getErrorCode()); } /** * Doc: (des="") * User: XMing * Date: 2020/9/8 * Time: 7:12 下午 */ public function getExpressInfoByOrderId() { $orderId = $this->request->param('request_id'); if (!$orderId) { $this->sendOutput('参数错误', ErrorCode::$paramError); } $result = $this->objMOrder->getExpressInfoByOrderId($orderId); if ($result->isSuccess()) { parent::sendOutput($result->getData()); } parent::sendOutput($result->getData(), $result->getErrorCode()); } /** * 订单退货添加 * @throws \Exception */ public function addOrderReturn() { $params = $this->request->getRawJson(); if (empty($params)) { parent::sendOutput('参数为空', ErrorCode::$paramError); } $data = [ 'originId' => isset($params['originId']) ? $params['originId'] : '', 'originNo' => isset($params['originNo']) ? $params['originNo'] : '', 'shopId' => isset($params['shopId']) ? $params['shopId'] : '', 'shopName' => isset($params['shopName']) ? $params['shopName'] : '', 'operatorName' => isset($params['operatorName']) ? $params['operatorName'] : '', 'operatorId' => $this->onlineUserId, 'userCenterId' => isset($params['userCenterId']) ? $params['userCenterId'] : '', 'customerId' => isset($params['customerId']) ? $params['customerId'] : '', 'customerName' => isset($params['customerName']) ? $params['customerName'] : '', ]; foreach ($data as $key => $value) { if (empty($value)) { parent::sendOutput($key . '参数错误', ErrorCode::$paramError); } } $data['remark'] = isset($params['remark']) ? $params['remark'] : ''; $data['no'] = isset($params['no']) ? $params['no'] : ''; $data['auditId'] = isset($params['auditName']) ? $this->onlineUserId : null; $data['auditName'] = isset($params['auditName']) ? $params['auditName'] : null; $data['auditId'] = isset($params['auditId']) ? $params['auditId'] : null; $data['deleteArray'] = isset($params['deleteArray']) ? $params['deleteArray'] : []; if (empty($params['details']) || !isset($params['details'])) parent::sendOutput('商品数据为空', ErrorCode::$paramError); $data['num'] = 0; $data['details'] = []; foreach ($params['details'] as $key => $value) { $data['num']++; $details = [ 'goodsId' => isset($value['goodsId']) ? $value['goodsId'] : '', 'goodsName' => isset($value['goodsName']) ? $value['goodsName'] : '', 'goodsCode' => isset($value['goodsCode']) ? $value['goodsCode'] : '', 'goodsBasicId' => isset($value['goodsBasicId']) ? $value['goodsBasicId'] : '', 'skuId' => isset($value['skuId']) ? $value['skuId'] : '', 'unitName' => isset($value['unitName']) ? $value['unitName'] : '', 'skuName' => isset($value['skuName']) ? $value['skuName'] : '', 'num' => isset($value['num']) ? $value['num'] : '', 'returnUnitPrice' => isset($value['returnUnitPrice']) ? $value['returnUnitPrice'] : '', 'saleUnitPrice' => isset($value['saleUnitPrice']) ? $value['saleUnitPrice'] : '', 'returnTotalPrice' => isset($value['returnTotalPrice']) ? $value['returnTotalPrice'] : '', 'saleTotalPrice' => isset($value['saleTotalPrice']) ? $value['saleTotalPrice'] : '', 'updateTime' => time(), ]; (isset($value['id']) && !empty($value['id'])) && $details['id'] = $value['id']; $details['deleteStatus'] = isset($value['deleteStatus']) ? $value['deleteStatus'] : StatusCode::$standard; isset($value['saleNum']) && $details['extend'] = json_encode(['saleNum' => $value['saleNum']]); $data['details'][] = $details; } $data['updateTime'] = time(); $objMOrderReturn = new MOrderReturn($this->onlineEnterpriseId, $this->onlineUserId); $modelResult = $objMOrderReturn->addOrderReturn($data); if (!$modelResult->isSuccess()) { parent::sendOutput($modelResult->getData(), $modelResult->getErrorCode()); } parent::sendOutput($modelResult->getData()); } // 获取售后订单 public function getAllOrderReturn() { $params = $this->request->getRawJson(); if( empty($params) ){ $this->sendOutput('参数为空', ErrorCode::$paramError ); } $pageParams = pageToOffset($params['page']?:1, $params['pageSize']?:10); $selectParams['limit'] = $pageParams['limit']; $selectParams['offset'] = $pageParams['offset']; $selectParams['userCenterId'] = $this->onlineUserId; $objMOrderReturn = new MOrderReturn($this->onlineEnterpriseId, $this->onlineUserId); $result = $objMOrderReturn->getAllOrderOut($selectParams); if ($result->isSuccess()) { $returnData = $result->getData(); $pageData = [ 'pageIndex' => $params['page'], 'pageSize' => $params['pageSize'], 'pageTotal' => $returnData['total'], ]; parent::sendOutput($returnData['data'], 0, $pageData); } else { parent::sendOutput($result->getData(), ErrorCode::$dberror); } } /** * *用户订单状态统计 */ public function getOrderStatusNum(){ $result = $this->objMOrder->getOrderStatusNum(); if (!$result->isSuccess()) { parent::sendOutput($result->getData(), $result->getErrorCode()); } parent::sendOutput($result->getData()); } }