123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474 |
- <?php
- /**
- * 订单
- * Created by PhpStorm.
- * User: XiaoMing
- * Date: 2019/11/19
- * Time: 18:53
- */
- namespace JinDouYun\Controller\Order;
- use Mall\Framework\Core\StatusCode;
- use Mall\Framework\Core\ErrorCode;
- use JinDouYun\Controller\BaseController;
- use JinDouYun\Model\Cart\MCart;
- use JinDouYun\Model\Goods\MGoods;
- use JinDouYun\Model\Order\MOrderReturn;
- use JinDouYun\Model\Order\MOrder;
- use JinDouYun\Model\Price\MPrice;
- class ApiOrder extends BaseController
- {
- private $objMOrder;
- private $objMCart;
- /**
- * Order constructor.
- * @param bool $isCheckAcl
- * @param bool $isMustLogin
- * @throws \Exception
- */
- public function __construct($isCheckAcl = false, $isMustLogin = true)
- {
- parent::__construct($isCheckAcl, $isMustLogin);
- $this->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());
- }
- }
|