MOrderReturn.Class.php 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065
  1. <?php
  2. /**
  3. * 订单退货Model
  4. * Created by PhpStorm.
  5. * User: 小威
  6. * Date: 2019/11/1
  7. * Time: 15:50
  8. */
  9. namespace JinDouYun\Model\Order;
  10. use JinDouYun\Dao\Customer\DCustomer;
  11. use JinDouYun\Dao\Order\DOrderIndex;
  12. use JinDouYun\Model\System\MSystemPushMessage;
  13. use Mall\Framework\Core\ErrorCode;
  14. use Mall\Framework\Core\ResultWrapper;
  15. use Mall\Framework\Core\StatusCode;
  16. use JinDouYun\Model\MBaseModel;
  17. use JinDouYun\Model\Shop\MShop;
  18. use JinDouYun\Model\Stock\MInventoryIn;
  19. use JinDouYun\Model\System\MPrintNum;
  20. use JinDouYun\Model\Stock\MInventoryOut;
  21. use JinDouYun\Dao\Order\DOrderReturn;
  22. use JinDouYun\Dao\Order\DOrderReturnDetails;
  23. class MOrderReturn extends MBaseModel
  24. {
  25. private $objDOrderReturnDetails;
  26. private $objDOrderReturn;
  27. private $userCenterId;
  28. private $enterpriseId;
  29. public function __construct($enterpriseId, $userCenterId = false)
  30. {
  31. $this->enterpriseId = $enterpriseId;
  32. $this->userCenterId = $userCenterId;
  33. parent::__construct($this->enterpriseId,$this->userCenterId);
  34. $this->objDOrderReturn = new DOrderReturn('default');
  35. $this->objDOrderReturnDetails = new DOrderReturnDetails('default');
  36. $this->objDOrderReturnDetails->setTable($this->objDOrderReturnDetails->get_Table() . '_' . $enterpriseId);
  37. $this->objDOrderReturn->setTable($this->objDOrderReturn->get_Table() . '_' . $enterpriseId);
  38. $this->objDOrderReturnDetails->setSearchIndex('order_out_search')->setType('order_out');
  39. }
  40. /**
  41. * 订单退货添加
  42. * @param $params
  43. * @return ResultWrapper
  44. * @throws \Exception
  45. */
  46. public function addOrderReturn($params)
  47. {
  48. $details = $params['details'];
  49. unset($params['details']);
  50. $deleteArray = $params['deleteArray'];
  51. unset($params['deleteArray']);
  52. // 生成编号
  53. $dbResult = $this->objDOrderReturn->get('createTime >='.strtotime(date('Ymd'.'0:0:0')), 'no', 'createTime desc');
  54. if ($dbResult === false) {
  55. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  56. }
  57. if(empty($dbResult)){
  58. $params['no'] = createSerialNumberByDate('');
  59. }else{
  60. $params['no'] = createSerialNumberByDate($dbResult['no']);
  61. }
  62. //$params['no'] = createOrderSn(StatusCode::$source['manage'], StatusCode::$orderType['saleReturn'], $this->enterpriseId);
  63. $params['inStatus'] = StatusCode::$delete;
  64. $beginStatus = $this->objDOrderReturn->beginTransaction();
  65. $dbResult = $this->objDOrderReturn->insert($params);
  66. if ($dbResult === false) {
  67. $this->objDOrderReturn->rollBack();
  68. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  69. }
  70. $returnData = $dbResult;
  71. unset($dbResult);
  72. $updateOrderDetailsIds = [];
  73. foreach($details as &$value){
  74. $value['deleteStatus'] = StatusCode::$standard;
  75. $value['linkId'] = $returnData;
  76. $value['linkNo'] = $params['no'];
  77. if(isset($value['id']) && !empty($value['id'])) $updateOrderDetailsIds[] = $value['id'];
  78. unset($value['id']);
  79. }
  80. unset($value);
  81. $dbResult = $this->objDOrderReturnDetails->insert($details, true);
  82. if ($dbResult === false) {
  83. $this->objDOrderReturn->rollBack();
  84. return ResultWrapper::fail($this->objDOrderReturnDetails->error(), ErrorCode::$dberror);
  85. }
  86. //修改订单状态
  87. $objMOrder = new MOrder($this->userCenterId, $this->enterpriseId);
  88. $sql = 'select g.orderId,g.goodsName,g.skuId,g.outNum from qianniao_order_goods_'.$this->enterpriseId.'_1 g left join qianniao_order_'.$this->enterpriseId.'_1 o on o.id = g.orderId where g.orderId = '.$params['originId'].' and g.deleteStatus = '.StatusCode::$standard.' and o.outStatus in ( '.StatusCode::$outStatus['allOut'].','.StatusCode::$outStatus['notAllOut'].')';
  89. $dbResult = $this->objDOrderReturn->query($sql);
  90. if($dbResult === false){
  91. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  92. }
  93. $orderGoodsData = $dbResult;
  94. unset($dbResult);
  95. if(empty($orderGoodsData)){
  96. return ResultWrapper::fail('未查询可退订单数据', ErrorCode::$paramError);
  97. }
  98. $sql = 'select d.skuId as skuId,sum(d.num) as num from qianniao_order_return_details_'.$this->enterpriseId.' d left join qianniao_order_return_'.$this->enterpriseId.' r on r.id = d.linkId where r.originId = '.$params['originId'].' and r.deleteStatus = '.StatusCode::$standard.' and d.deleteStatus = '.StatusCode::$standard.' group by d.skuId';
  99. $dbResult = $this->objDOrderReturn->query($sql);
  100. if($dbResult === false){
  101. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  102. }
  103. $returnGoodsData = [];
  104. foreach($dbResult as $value){
  105. $returnGoodsData[$value['skuId']] = $value;
  106. }
  107. unset($dbResult);
  108. $returnStatus = 2;//全部退货
  109. foreach($orderGoodsData as $value){
  110. if($returnGoodsData[$value['skuId']]['num'] > $value['outNum']){
  111. //退货总数量大于出库数量
  112. return ResultWrapper::fail($value['goodsName'].' 可退数量不足', ErrorCode::$paramError);
  113. }
  114. if($returnGoodsData[$value['skuId']]['num'] < $value['outNum']){
  115. //退货总数量小于出库数量
  116. $returnStatus = 1;//部分退货
  117. }
  118. }
  119. $updateData = [
  120. 'returnStatus' => $returnStatus,
  121. 'updateTime' => time(),
  122. 'id' => $params['originId']
  123. ];
  124. $modelResult = $objMOrder->editOrder($updateData);
  125. if(!$modelResult->isSuccess()){
  126. $this->objDOrderReturn->rollBack();
  127. return ResultWrapper::fail($modelResult->getData(),$modelResult->getErrorCode());
  128. }
  129. unset($modelResult);
  130. //修改订单详情状态
  131. $objMOderGoods = new MOrderGoods($this->userCenterId, $this->enterpriseId);
  132. $modelResult = $objMOderGoods->updateDetails(['returnStatus' => StatusCode::$orderReturn['allReturn'], 'updateTime' => time()], ['id'=>$updateOrderDetailsIds]);
  133. if(!$modelResult->isSuccess()){
  134. $this->objDOrderReturn->rollBack();
  135. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  136. }
  137. // 增加es数据
  138. /*$modelResult = self::addEsData($details, $params, $dbResult);
  139. if(!$modelResult->isSuccess()){
  140. $this->objDOrderReturn->rollBack();
  141. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  142. }*/
  143. $beginStatus && $this->objDOrderReturn->commit();
  144. return ResultWrapper::success($returnData);
  145. }
  146. /**
  147. * 销售退货删除
  148. * @param $params
  149. * @return ResultWrapper
  150. */
  151. public function deleteOrderOut($params)
  152. {
  153. $updateData['deleteStatus'] = StatusCode::$delete;
  154. $updateData['updateTime'] = time();
  155. $dbResult = $this->objDOrderReturn->update($updateData, ['id'=>$params]);
  156. if ($dbResult === false) {
  157. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  158. }
  159. return ResultWrapper::success($dbResult);
  160. }
  161. /**
  162. * 销售退货审核
  163. * @param $params
  164. * @return ResultWrapper
  165. * @throws \Exception
  166. */
  167. public function auditOrderOut($params)
  168. {
  169. $id = $params['id'];
  170. unset($params['id']);
  171. // 查询退货单数据
  172. $dbResult = $this->objDOrderReturn->get($id);
  173. if($dbResult === false){
  174. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  175. }
  176. $orderOutData = $dbResult;
  177. if( empty($orderOutData) ){
  178. return ResultWrapper::fail('退货单不存在', ErrorCode::$contentNotExists);
  179. }
  180. if( $orderOutData['auditPass'] == StatusCode::$auditStatus['auditPass'] ){
  181. return ResultWrapper::fail('退货单已经审核过了', ErrorCode::$notAllowAccess);
  182. }
  183. $updateData = $params;
  184. $updateData['auditStatus'] = StatusCode::$auditStatus['auditPass'];
  185. $updateData['auditTime'] = time();
  186. $updateData['updateTime'] = time();
  187. $beginStatus = $this->objDOrderReturn->beginTransaction();
  188. //修改退货单审核状态
  189. $dbResult = $this->objDOrderReturn->update($updateData, ['id'=>$id]);
  190. if ($dbResult === false) {
  191. $this->objDOrderReturn->rollBack();
  192. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  193. }
  194. $returnData = $dbResult;
  195. unset($dbResult);
  196. //查询商铺绑定仓库
  197. $objMShop = new MShop($this->enterpriseId,$this->userCenterId);
  198. $modelResult = $objMShop->getShopBindWarehouse($orderOutData['shopId']);
  199. if(!$modelResult->isSuccess()){
  200. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  201. }
  202. $shop = $modelResult->getData();
  203. unset($modelResult);
  204. if(empty($shop)){
  205. return ResultWrapper::fail('商铺查询失败', ErrorCode::$dberror);
  206. }
  207. $warehouseData = $shop['warehouseData'];
  208. //查询详情
  209. $dbResult = $this->objDOrderReturnDetails->select(['linkId' => $id]);
  210. if($dbResult === false){
  211. return ResultWrapper::fail($this->objDOrderReturnDetails->error(), ErrorCode::$dberror);
  212. }
  213. $details = $dbResult;
  214. unset($dbResult);
  215. //查询每个商品出库数量
  216. $objMInventoryOut = new MInventoryOut($this->enterpriseId, $this->userCenterId);
  217. $modelResult = $objMInventoryOut->getInventoryOutByOriginId($orderOutData['originId'], StatusCode::$orderType['saleOrder']);
  218. if(!$modelResult->isSuccess()){
  219. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  220. }
  221. $inventoryOut = $modelResult->getData();
  222. unset($modelResult);
  223. unset($modelResult);
  224. $inInventoryData = [
  225. 'sourceId' => $orderOutData['id'],
  226. 'sourceNo' => $orderOutData['no'],
  227. 'originId' => $orderOutData['originId'],
  228. 'originNo' => $orderOutData['originNo'],
  229. 'shopId' => $orderOutData['shopId'],
  230. 'shopName' => $orderOutData['shopName'],
  231. 'warehouseId' => '',
  232. 'warehouseName' => '',
  233. 'operatorId' => $this->userCenterId,
  234. 'operatorName' => $params['auditName'],
  235. 'remark' => $orderOutData['remark'],
  236. 'source' => StatusCode::$orderType['saleReturn'],
  237. 'type' => StatusCode::$orderType['saleReturnIn']
  238. ];
  239. $inInventoryData['materielNum'] = 0;
  240. $inInventoryData['amount'] = 0;
  241. $inInventoryData['orderGoodsData'] = [];
  242. $inWarehouseData = [];
  243. $ids = [];
  244. foreach($details as $key => $value){
  245. $ids[] = $value['id'];
  246. $inInventoryData['materielNum']++; // 入库总数量
  247. $inInventoryData['amount'] += bcmul($value['returnUnitPrice'], $value['num']); // 入库总金额
  248. $returnNum = $value['num'];
  249. foreach($inventoryOut[$value['skuId']]['outWarehouse'] as $outWarehouse){
  250. if($returnNum <= 0){
  251. break;
  252. }
  253. $inInventoryDetails = [
  254. 'materielId' => $value['goodsBasicId'],
  255. 'materielName' => $value['goodsName'],
  256. 'materielCode' => $value['goodsCode'],
  257. 'skuId' => $value['skuId'],
  258. 'unitName' => isset($value['unitName']) ? $value['unitName'] : '',
  259. 'skuName' => isset($value['skuName']) ? $value['skuName'] : '',
  260. 'unitPrice' => $value['returnUnitPrice'],
  261. 'totalPrice' => bcmul($value['returnUnitPrice'], $value['num']),
  262. ];
  263. if($returnNum > $outWarehouse['num']){
  264. //多个仓退
  265. $inInventoryDetails['num'] = $outWarehouse['num'];
  266. $inInventoryDetails['otherNum'] = $outWarehouse['otherNum'];
  267. $returnNum = bcsub($returnNum, $outWarehouse['num'], 8);
  268. }else{
  269. //一个仓退
  270. $inInventoryDetails['num'] = $returnNum;
  271. $inInventoryDetails['otherNum'] = $value['otherNum'];
  272. $returnNum = 0;
  273. }
  274. $inWarehouseData[$outWarehouse['warehouseId']][] = $inInventoryDetails;
  275. }
  276. }
  277. $objMInventoryIn = new MInventoryIn($this->enterpriseId, $this->userCenterId);
  278. foreach($inWarehouseData as $warehouseId => $value){
  279. $inInventoryData['warehouseId'] = $warehouseId;
  280. $inInventoryData['warehouseName'] = $warehouseData[$outWarehouse['warehouseId']]['warehouseName'];
  281. $inInventoryData['orderGoodsData'] = $value;
  282. $modelResult = $objMInventoryIn->addInventoryIn($inInventoryData);
  283. if(!$modelResult->isSuccess()){
  284. $this->objDOrderReturn->rollBack();
  285. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  286. }
  287. }
  288. $beginStatus && $this->objDOrderReturn->commit();
  289. return ResultWrapper::success($returnData);
  290. }
  291. /**
  292. * 销售退货修改
  293. * @param $params
  294. * @return ResultWrapper
  295. */
  296. public function updateOrderOut($params)
  297. {
  298. $id = $params['id'];
  299. unset($params['id']);
  300. $details = $params['details'];
  301. unset($params['details']);
  302. $deleteArray = $params['deleteArray'];
  303. unset($params['deleteArray']);
  304. unset($params['no']);
  305. $this->objDOrderReturn->beginTransaction();
  306. $dbResult = $this->objDOrderReturn->update($params,['id'=>$id]);
  307. if ($dbResult === false) {
  308. $this->objDOrderReturn->rollBack();
  309. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  310. }
  311. $returnData = $dbResult;
  312. unset($dbResult);
  313. //修改或新增
  314. $addDetailsData = [];
  315. $updateDetailsIds = [];
  316. $updateDetailsData = [];
  317. foreach($details as &$value){
  318. if(isset($value['id'])){
  319. $detailsId = $value['id'];
  320. $updateDetailsIds[] = $value['id'];
  321. unset($value['id']);
  322. //修改
  323. $dbResult = $this->objDOrderReturnDetails->update($value, ['id'=>$detailsId]);
  324. if ($dbResult === false) {
  325. $this->objDOrderReturn->rollBack();
  326. return ResultWrapper::fail($this->objDOrderReturnDetails->error(), ErrorCode::$dberror);
  327. }
  328. $updateDetailsData[] = $value;
  329. unset($dbResult);
  330. }else{
  331. //新增
  332. $addDetailsData[] = [
  333. 'linkId' => $id,
  334. 'linkNo' => $params['no'],
  335. 'goodsId' => $value['goodsId'],
  336. 'goodsName' => $value['goodsName'],
  337. 'goodsCode' => $value['goodsCode'],
  338. 'goodsBasicId' => $value['goodsBasicId'],
  339. 'skuId' => $value['skuId'],
  340. 'num' => $value['num'],
  341. 'otherNum' => $value['otherNum'],
  342. 'returnUnitPrice' => $value['returnUnitPrice'],
  343. 'saleUnitPrice' => $value['saleUnitPrice'],
  344. 'returnTotalPrice' => $value['returnTotalPrice'],
  345. 'saleTotalPrice' => $value['saleTotalPrice'],
  346. 'deleteStatus' => StatusCode::$standard,
  347. 'createTime' => time(),
  348. 'updateTime' => time(),
  349. ];
  350. }
  351. }
  352. //添加
  353. $addDetailsIds = [];
  354. if(!empty($addDetailsData)){
  355. $dbResult = $this->objDOrderReturnDetails->insert($addDetailsData, true);
  356. if($dbResult === false){
  357. $this->objDOrderReturn->rollBack();
  358. return ResultWrapper::fail($this->objDOrderReturnDetails->error(), ErrorCode::$dberror);
  359. }
  360. $addDetailsIds = $dbResult;
  361. unset($dbResult);
  362. }
  363. unset($dbResult);
  364. //删除
  365. if(!empty($deleteArray)){
  366. $deleteData = [
  367. 'deleteStatus' => StatusCode::$delete,
  368. 'updateTime' => time(),
  369. ];
  370. $dbResult = $this->objDOrderReturnDetails->update($deleteData, ['id' => 3, 'linkId' => $id]);
  371. if($dbResult === false){
  372. $this->objDOrderReturn->rollBack();
  373. return ResultWrapper::fail($this->objDOrderReturnDetails->error(), ErrorCode::$dberror);
  374. }
  375. unset($dbResult);
  376. }
  377. //es操作
  378. //修改es
  379. /*$modelResult = self::addEsData($updateDetailsData, $params, $updateDetailsIds);
  380. if(!$modelResult->isSuccess()){
  381. $this->objDOrderReturn->rollBack();
  382. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  383. }
  384. //添加es
  385. $modelResult = self::addEsData($addDetailsData, $params, $addDetailsIds);
  386. if(!$modelResult->isSuccess()){
  387. $this->objDOrderReturn->rollBack();
  388. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  389. }
  390. //删除es
  391. $modelResult = self::delEsData([], $params, $deleteArray);
  392. if(!$modelResult->isSuccess()){
  393. $this->objDOrderReturn->rollBack();
  394. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  395. }*/
  396. $this->objDOrderReturn->commit();
  397. return ResultWrapper::success($returnData);
  398. }
  399. /**
  400. * 修改销售退货
  401. * @param $updateData
  402. * @param $where
  403. * @return ResultWrapper
  404. */
  405. public function updateOrderReturnData($updateData, $where)
  406. {
  407. $orderReturnData = $this->objDOrderReturn->get($where);
  408. if($orderReturnData === false){
  409. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  410. }
  411. if(empty($orderReturnData)){
  412. return ResultWrapper::fail('要修改的退货单不存在', ErrorCode::$contentNotExists);
  413. }
  414. $dbResult = $this->objDOrderReturn->update($updateData, $where);
  415. if($dbResult === false){
  416. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  417. }
  418. // 退货单驳回,订单退货状态回退
  419. if(isset($updateData['auditStatus']) && $updateData['auditStatus'] == StatusCode::$auditStatus['auditNotPass']){
  420. //修改订单状态
  421. $objMOrder = new MOrder($this->userCenterId, $this->enterpriseId);
  422. $updateData = [
  423. 'returnStatus' => 0,
  424. 'updateTime' => time(),
  425. 'id' => $orderReturnData['originId']
  426. ];
  427. $modelResult = $objMOrder->editOrder($updateData);
  428. if(!$modelResult->isSuccess()){
  429. return ResultWrapper::fail($modelResult->getData(),$modelResult->getErrorCode());
  430. }
  431. unset($modelResult);
  432. //修改订单详情状态
  433. $objMOderGoods = new MOrderGoods($this->userCenterId, $this->enterpriseId);
  434. $modelResult = $objMOderGoods->updateDetails(['returnStatus' => 0, 'updateTime' => time()], ['orderId'=>$orderReturnData['originId']]);
  435. if(!$modelResult->isSuccess()){
  436. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  437. }
  438. /* 暂时不做作废操作
  439. $deleteOrderOut = self::deleteOrderOut($orderReturnData['id']);
  440. if(!$deleteOrderOut->isSuccess()){
  441. return ResultWrapper::fail($deleteOrderOut->getData(), $deleteOrderOut->getErrorCode());
  442. }*/
  443. }
  444. return ResultWrapper::success($dbResult);
  445. }
  446. /**
  447. * Doc: (des="")
  448. * User: XMing
  449. * Date: 2020/8/24
  450. * Time: 11:41 上午
  451. * @param $selectParams
  452. * @param $export
  453. * @return ResultWrapper
  454. * @throws \Exception
  455. */
  456. public function getAllOrderOut($selectParams, $export = false)
  457. {
  458. $limit = $selectParams['limit'];
  459. unset($selectParams['limit']);
  460. $offset = $selectParams['offset'];
  461. unset($selectParams['offset']);
  462. if ($export == 1) self::exportOrderReturn(true,'db');
  463. $where = '';
  464. if( isset($selectParams['userCenterId']) && !empty($selectParams['userCenterId'])){
  465. $where = ' and a.userCenterId = '.$selectParams['userCenterId'];
  466. }
  467. $sql = "select a.*, d.goodsId,d.goodsName,d.goodsCode,d.goodsBasicId,d.skuId,d.num as goodsNum,d.returnUnitPrice,d.saleUnitPrice,d.returnTotalPrice,d.saleTotalPrice from ".$this->objDOrderReturn->get_Table()." a left join ".$this->objDOrderReturnDetails->get_Table()." d on a.id = d.linkId where a.deleteStatus = ".StatusCode::$standard." and d.deleteStatus = ".StatusCode::$standard.$where;
  468. if (isset($selectParams['shopId']) && !empty($selectParams['shopId'])){
  469. $sql .= ' AND a.shopId = '.$selectParams['shopId'];
  470. }
  471. $sql .= ' ORDER BY a.createTime desc ';
  472. $sql .= " limit " . $offset . "," . $limit;
  473. $dbResult = $this->objDOrderReturn->query($sql);
  474. if ($dbResult === false) {
  475. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  476. }
  477. unset($sql);
  478. $sql = "select count(d.id) as num from ".$this->objDOrderReturn->get_Table()." a left join ".$this->objDOrderReturnDetails->get_Table()." d on a.id = d.linkId where a.deleteStatus = ".StatusCode::$standard." and d.deleteStatus = ".StatusCode::$standard.$where;
  479. if (isset($selectParams['shopId']) && !empty($selectParams['shopId'])){
  480. $sql .= ' AND a.shopId = '.$selectParams['shopId'];
  481. }
  482. $dbDAllocateResult = $this->objDOrderReturn->query($sql);
  483. if($dbDAllocateResult === false){
  484. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  485. }
  486. $DAllocate = array_shift($dbDAllocateResult);
  487. $total = $DAllocate['num'];
  488. $formatData = parent::formatOrderMan($this->enterpriseId, $dbResult, StatusCode::$orderType['saleReturn']);
  489. $return = [
  490. 'data' => $formatData,
  491. 'total' => ($total) ? intval($total) : 0,
  492. ];
  493. return ResultWrapper::success($return);
  494. }
  495. /**
  496. * 销售退货搜索
  497. * @param $params
  498. * @param $export
  499. * @return ResultWrapper
  500. * @throws \Exception
  501. */
  502. public function searchAllOrderOut($params, $export)
  503. {
  504. $defaultDSL = [];
  505. if ($export != 1){
  506. $defaultDSL = ['from' => $params['offset'],'size' => $params['limit'],'sort' => ['createTime' => ['order' => 'desc']]];
  507. }
  508. $selectParams = [];
  509. //店铺id
  510. parent::getAccessShopIds();
  511. if (parent::$shopIds) {
  512. $dsl['query']['bool']['filter'][] = [
  513. 'terms' => ['shopId' => parent::$shopIds]
  514. ];
  515. }
  516. !empty($params['shopId']) && $selectParams[] = ['term' => ['shopId' => $params['shopId']]];
  517. !empty($params['operatorId']) && $selectParams[] = ['term' => ['source' => $params['operatorId']]];
  518. !empty($params['auditStatus']) && $selectParams[] = ['term' => ['auditStatus' => $params['auditStatus']]];
  519. (!empty($params['start']) && !empty($params['end'])) && $selectParams[] = ['range' => ['createTime' => ['gte' => $params['start'],'lte' => $params['end']]]];
  520. !empty($params['search']) && $selectParams[] = ['multi_match' => ['fields' => ['no','sourceNo', 'goodsName'],'query' => $params['search'],'fuzziness' => 'AUTO']];
  521. $dsl = [];
  522. !empty($selectParams) && $dsl['query']['bool']['must'][] = $selectParams;
  523. $dsl = array_merge($defaultDSL, $dsl);
  524. $dbResult = $this->objDOrderReturnDetails->getSearchQueryDsl($dsl);
  525. if(isset($dbResult['error'])){
  526. return ResultWrapper::fail($dbResult, ErrorCode::$dberror);
  527. }
  528. if (isset($dbResult['status']) && $dbResult['status'] == 400) {
  529. return ResultWrapper::fail('获取数据失败' . $dbResult['error']['reason'], ErrorCode::$apiNotResult);
  530. }
  531. if($export == 1){
  532. $list = [];
  533. $esData = isset($dbResult['hits']['hits']) ? $dbResult['hits']['hits'] : [];
  534. foreach ($esData as $key => &$value) {
  535. $data = [];
  536. $data = $value['_source'];
  537. $list[] = $data;
  538. }
  539. self::exportOrderReturn($list,'es');
  540. }
  541. $returnData = parent::formatEsSelectData($dbResult, $this->enterpriseId);
  542. return ResultWrapper::success($returnData);
  543. }
  544. /**
  545. * Doc: (des="退货单导出")
  546. * User: XMing
  547. * Date: 2020/8/24
  548. * Time: 10:31 上午
  549. * @param $data
  550. * @param string $source
  551. * @return ResultWrapper
  552. */
  553. private function exportOrderReturn($data,string $source)
  554. {
  555. if (empty($data)){
  556. return ResultWrapper::success([]);
  557. }
  558. $exportListsResult = self::buildDataBySelection($data,$source);
  559. if (!$exportListsResult->isSuccess()){
  560. return ResultWrapper::fail($exportListsResult->getData(),$exportListsResult->getErrorCode());
  561. }
  562. $exportList = $exportListsResult->getData();
  563. if (empty($exportList)){
  564. return ResultWrapper::fail('导出数据构建失败',ErrorCode::$paramError);
  565. }
  566. $exportData = self::buildExportData($exportList);
  567. self::exportCsv($exportData);
  568. }
  569. /**
  570. * Doc: (des="")
  571. * User: XMing
  572. * Date: 2020/8/24
  573. * Time: 11:23 上午
  574. * @param array $data
  575. * @return array
  576. */
  577. private static function buildExportData(array $data)
  578. {
  579. //print_r($exportList);die;
  580. $mapping = [];
  581. $mappingGoods = [];
  582. foreach ($data as $value){
  583. $mapping[$value['id']] = [
  584. 'id' => $value['id'],
  585. 'no' => $value['no'],
  586. 'customerName' => $value['customerName'],
  587. 'originNo' => $value['originNo'],
  588. 'shopName' => $value['shopName'],
  589. 'operatorName' => $value['operatorName'],
  590. 'updateTime' => date('Y-m-d H:i:s',$value['updateTime']),
  591. 'auditStatusMsg' => isset(StatusCode::$auditStatus[$value['auditStatus']]) ? StatusCode::$auditStatus[$value['auditStatus']] : '',
  592. 'orderReturnMsg' => $value['inStatus'] == StatusCode::$standard ? '已入库' : '未入库',
  593. ];
  594. $mappingGoods[$value['id']][] = [
  595. 'goodsCode' => $value['goodsCode'],
  596. 'goodsName' => $value['goodsName'],
  597. 'unitName' => $value['unitName'],
  598. 'specName' => (empty($value['skuName']) || $value['skuName'] == ' ') ? '无' : $value['skuName'],
  599. 'num' => $value['goodsNum'],
  600. 'saleUnitPrice' => $value['saleUnitPrice'],
  601. 'saleTotalPrice' => $value['saleTotalPrice'],
  602. 'returnUnitPrice' => $value['returnUnitPrice'],
  603. 'returnTotalPrice' => $value['returnTotalPrice']
  604. ];
  605. }
  606. unset($value);
  607. unset($exportList);
  608. foreach ($mapping as &$value){
  609. $value['details'] = isset($mappingGoods[$value['id']]) ? $mappingGoods[$value['id']] : [];
  610. }
  611. $mapping = array_values($mapping);
  612. return $mapping;
  613. }
  614. /**
  615. * Doc: (des="构建导出数据")
  616. * User: XMing
  617. * Date: 2020/8/24
  618. * Time: 10:33 上午
  619. * @param $data
  620. * @param string $source
  621. * @return ResultWrapper
  622. */
  623. private function buildDataBySelection($data,string $source)
  624. {
  625. $fields = 'a.*, d.goodsId,d.goodsName,d.goodsCode,d.goodsBasicId,d.skuId,d.num as goodsNum,d.returnUnitPrice,d.saleUnitPrice,d.returnTotalPrice,d.saleTotalPrice,d.skuName,d.unitName';
  626. $sql = 'select '.$fields.' FROM '.$this->objDOrderReturn->get_Table().' a
  627. left join '.$this->objDOrderReturnDetails->get_Table().' d on a.id = d.linkId
  628. where a.deleteStatus = '.StatusCode::$standard.'
  629. and d.deleteStatus = '.StatusCode::$standard;
  630. switch ($source){
  631. case 'db':
  632. //数据库
  633. break;
  634. case 'es':
  635. $allIds = [];
  636. foreach ($data as $value){
  637. $allIds[] = $value['linkId'];
  638. }
  639. $allIds = array_values(array_unique($allIds));
  640. if (empty($allIds)){
  641. return ResultWrapper::fail('导出数据为空',ErrorCode::$paramError);
  642. }
  643. $allIdsStr = implode(',',$allIds);
  644. $sql .= ' AND a.id in('.$allIdsStr.') ';
  645. break;
  646. }
  647. $sql .= ' ORDER BY a.createTime DESC';
  648. $result = $this->objDOrderReturn->exportQuery($sql);
  649. if ($result === false){
  650. return ResultWrapper::fail($this->objDOrderReturn->error(),ErrorCode::$dberror);
  651. }
  652. $list = self::getGeneratorData($result);
  653. return ResultWrapper::success($list);
  654. }
  655. /**
  656. * Doc: (des="获取export查询方法返回的数据集合")
  657. * User: XMing
  658. * Date: 2020/8/22
  659. * Time: 11:42 上午
  660. * @param $object
  661. * @return array
  662. */
  663. private static function getGeneratorData($object)
  664. {
  665. $arrayList = [];
  666. foreach ($object as $value){
  667. $arrayList[] = $value;
  668. }
  669. return $arrayList;
  670. }
  671. /**
  672. * Doc: (des="退货单导出")
  673. * User: XMing
  674. * Date: 2020/8/24
  675. * Time: 10:03 上午
  676. * @param array $result
  677. *
  678. */
  679. private function exportCsv(array $result)
  680. {
  681. //导出到本地
  682. header ( "Content-type:application/vnd.ms-excel" );
  683. header ( "Content-Disposition:filename=销售退货记录表.csv" );
  684. header ('Cache-Control: max-age=0');
  685. $fp = fopen('php://output', 'a');
  686. $head = ['ID','退货单号','源销售订单号','客户名称','商铺','单据人','审核时间','审核状态', '单据状态',
  687. '商品编码','商品名称','单位','属性','数量','销售单价','销售金额','退货单价','退货金额']; //定义标题
  688. foreach ($head as $i => $v) {
  689. $head[$i] = mb_convert_encoding($v, 'GBK', 'utf-8'); //将中文标题转换编码,否则乱码
  690. }
  691. fputcsv($fp, $head);
  692. $limit = 10000;
  693. $num = 0;
  694. $rows = [];
  695. foreach ($result as $v) {
  696. $num++;
  697. if($num == $limit){
  698. ob_flush(); //释放内存
  699. flush();
  700. }
  701. foreach ($v['details'] as $index => $item){
  702. self::buildExportFinalData($rows,$v,$item,$index);
  703. foreach ($rows as $kk => $vv) {
  704. $rs[$kk] = mb_convert_encoding($vv, 'GBK', 'utf-8'); //转译编码
  705. }
  706. fputcsv($fp, $rs);
  707. $rows = [];
  708. }
  709. }
  710. exit;
  711. }
  712. /**
  713. * Doc: (des="映射导出数据")
  714. * User: XMing
  715. * Date: 2020/8/24
  716. * Time: 11:36 上午
  717. * @param $rows
  718. * @param array $v
  719. * @param array $item
  720. * @param int $index
  721. */
  722. private static function buildExportFinalData(&$rows,array $v,array $item,int $index)
  723. {
  724. $rows['id'] = '';
  725. $rows['no'] = '';
  726. $rows['customerName'] = '';
  727. $rows['originNo'] = '';
  728. $rows['shopName'] = '';
  729. $rows['operatorName'] = '';
  730. $rows['updateTime'] = '';
  731. $rows['auditStatusMsg'] = '';
  732. $rows['orderReturnMsg'] = '';
  733. if ($index == 0){
  734. $rows['id'] = $v['id'];
  735. $rows['no'] = $v['no'];
  736. $rows['customerName'] = $v['customerName'];
  737. $rows['originNo'] = $v['originNo'];
  738. $rows['shopName'] = $v['shopName'];
  739. $rows['operatorName'] = $v['operatorName'];
  740. $rows['updateTime'] = $v['updateTime'];
  741. $rows['auditStatusMsg'] = $v['auditStatusMsg'];
  742. $rows['orderReturnMsg'] = $v['orderReturnMsg'];
  743. }
  744. $rows['goodsCode'] = $item['goodsCode'];
  745. $rows['goodsName'] = $item['goodsName'];
  746. $rows['unitName'] = $item['unitName'];
  747. $rows['specName'] = $item['specName'];
  748. $rows['num'] = $item['num'];
  749. $rows['saleUnitPrice'] = $item['saleUnitPrice'];
  750. $rows['saleTotalPrice'] = $item['saleTotalPrice'];
  751. $rows['returnUnitPrice'] = $item['returnUnitPrice'];
  752. $rows['returnTotalPrice'] = $item['returnTotalPrice'];
  753. }
  754. /**
  755. * 销售退货导出方法
  756. * @param $result
  757. * @return void
  758. */
  759. public function export($result)
  760. {
  761. //导出到本地
  762. header ( "Content-type:application/vnd.ms-excel" );
  763. header ( "Content-Disposition:filename=销售退货记录表.csv" );
  764. header ('Cache-Control: max-age=0');
  765. $fp = fopen('php://output', 'a');
  766. $head = ['序号','商品名称','退货单号','单位','商铺','数量','销售单价','销售金额','退货单价','退货金额','单据人','源销售订单号','审核时间', '审核状态', '单据状态']; //定义标题
  767. foreach ($head as $i => $v) {
  768. $head[$i] = mb_convert_encoding($v, 'GBK', 'utf-8'); //将中文标题转换编码,否则乱码
  769. }
  770. fputcsv($fp, $head);
  771. $limit = 10000;
  772. $num = 0; //计数器
  773. foreach ( $result as $v ) { //循环数据
  774. $num++;
  775. if($num == $limit){
  776. ob_flush(); //释放内存
  777. flush();
  778. }
  779. $rows['id'] = isset($v['id']) ? $v['id'] : null;
  780. $rows['goodsName'] = isset($v['goodsName']) ? $v['goodsName'] : null;
  781. $rows['no'] = isset($v['no']) ? $v['no'] : null;
  782. $rows['skuName'] = isset($v['skuName']) ? $v['skuName'] : null;
  783. $rows['shopName'] = isset($v['shopName']) ? $v['shopName'] : null;
  784. $rows['num'] = isset($v['num']) ? $v['num'] : null;
  785. $rows['saleUnitPrice'] = isset($v['saleUnitPrice']) ? $v['saleUnitPrice'] : null;
  786. $rows['saleTotalPrice'] = isset($v['saleTotalPrice']) ? $v['saleTotalPrice'] : null;
  787. $rows['returnUnitPrice'] = isset($v['returnUnitPrice']) ? $v['returnUnitPrice'] : null;
  788. $rows['returnTotalPrice'] = isset($v['returnTotalPrice']) ? $v['returnTotalPrice'] : null;
  789. $rows['customerName'] = isset($v['customerName']) ? $v['customerName'] : null;
  790. $rows['originNo'] = isset($v['originNo']) ? $v['originNo'] : null;
  791. $rows['auditTime'] = date('Y-m-d H:i:s', $v['auditTime']);
  792. $rows['auditStatus'] = $v['auditStatus'] == StatusCode::$auditStatus['auditPass'] ? '已审核' : '未审核';
  793. $rows['inStatus'] = $v['inStatus'] == StatusCode::$standard ? '已入库' : '未入库';
  794. foreach ( $rows as $kk => $vv){
  795. $rs[$kk] = mb_convert_encoding($vv, 'GBK', 'utf-8'); //转译编码
  796. }
  797. fputcsv($fp, $rs);
  798. $rows = [];
  799. }
  800. }
  801. /**
  802. * 销售退货详情
  803. * @param $params
  804. * @return ResultWrapper
  805. * @throws \Exception
  806. */
  807. public function getOrderOut($params)
  808. {
  809. $dbResult = $this->objDOrderReturn->get($params);
  810. if($dbResult === false){
  811. return ResultWrapper::fail($this->objDOrderReturn->error(), ErrorCode::$dberror);
  812. }
  813. $returnData = $dbResult;
  814. unset($dbResult);
  815. //查询单据信息
  816. $objMOrder = new MOrder($this->userCenterId, $this->enterpriseId);
  817. $modelResult = $objMOrder->getOrderInfoById($returnData['originId']);
  818. if(!$modelResult->isSuccess()){
  819. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  820. }
  821. $orderData = $modelResult->getData();
  822. unset($modelResult);
  823. //组装收货人信息
  824. $returnData['realName'] = $orderData['receiveData']['realName'];
  825. $returnData['mobile'] = $orderData['receiveData']['mobile'];
  826. $returnData['address'] = $orderData['receiveData']['address'];
  827. $returnData['area'] = $orderData['receiveData']['area'];
  828. $returnData['type'] = StatusCode::$orderType['saleReturn'];
  829. //查询打印次数
  830. $objMPrintNum = new MPrintNum($this->enterpriseId);
  831. $returnData['printNum'] = $objMPrintNum->getObjectPrintNum($returnData['no'],StatusCode::$orderType['saleReturn']);
  832. //查询商品信息
  833. $dbResult = $this->objDOrderReturnDetails->select(['linkId' => $params['id'], 'deleteStatus' => StatusCode::$standard]);
  834. if($dbResult === false){
  835. return ResultWrapper::fail($this->objDOrderReturnDetails->error(), ErrorCode::$dberror);
  836. }
  837. foreach($dbResult as &$value){
  838. if(!empty($value['extend'])){
  839. $value['extend'] = json_decode($value['extend'], true);
  840. }
  841. }
  842. unset($value);
  843. $returnData['details'] = $dbResult;
  844. $formatData = parent::formatOrderMan($this->enterpriseId, $returnData);
  845. return ResultWrapper::success($formatData);
  846. }
  847. /**
  848. * 增加详情es数据
  849. * @param $data
  850. * @param $params
  851. * @param $ids
  852. * @return ResultWrapper
  853. */
  854. public function addEsData($data, $params, $ids)
  855. {
  856. if(empty($data) && empty($ids)) return ResultWrapper::success($data);
  857. foreach($data as $key => $value){
  858. $modelResult = self::updateEsData($value,$params, $ids[$key]);
  859. if(!$modelResult->isSuccess()){
  860. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  861. }
  862. }
  863. return ResultWrapper::success(true);
  864. }
  865. /**
  866. * 删除详情es数据
  867. * @param $data
  868. * @param $params
  869. * @param $ids
  870. * @return ResultWrapper
  871. */
  872. public function delEsData($data, $params, $ids){
  873. foreach($ids as $key => $value){
  874. if(empty($data)) $data = ['deleteStatus' => StatusCode::$delete, 'updateTime' => time()];
  875. $modelResult = self::updateEsData($data,$params, $value);
  876. if(!$modelResult->isSuccess()){
  877. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  878. }
  879. }
  880. return ResultWrapper::success(true);
  881. }
  882. /**
  883. * 添加详情es
  884. * @param $data
  885. * @param $params
  886. * @param $id
  887. * @return ResultWrapper
  888. */
  889. public function updateEsData($data, $params, $id)
  890. {
  891. $addEsData = [
  892. 'id' => $id,
  893. 'enterpriseId' => $this->enterpriseId,
  894. 'no' => isset($params['no']) ? $params['no'] : false,
  895. 'sourceId' => isset($params['sourceId']) ? $params['sourceId'] : false,
  896. 'sourceNo' => isset($params['sourceNo']) ? $params['sourceNo'] : false,
  897. 'shopId' => isset($params['shopId']) ? $params['shopId'] : false,
  898. 'operatorId' => isset($params['operatorId']) ? $params['operatorId'] : false,
  899. 'operatorName' => isset($params['operatorName']) ? $params['operatorName'] : false,
  900. 'auditId' => isset($params['auditId']) ? $params['auditId'] : false,
  901. 'auditName' => isset($params['auditName']) ? $params['auditName'] : false,
  902. 'remark' => isset($params['remark']) ? $params['remark'] : false,
  903. 'auditTime' => isset($params['auditTime']) ? $params['auditTime'] : false,
  904. 'auditStatus' => isset($params['auditStatus']) ? $params['auditStatus'] : false,
  905. 'deleteStatus' => isset($params['deleteStatus']) ? $params['deleteStatus'] : false,
  906. 'linkId' => isset($data['linkId']) ? $data['linkId'] : false,
  907. 'goodsId' => isset($data['goodsId']) ? $data['goodsId'] : false,
  908. 'goodsName' => isset($data['goodsName']) ? $data['goodsName'] : false,
  909. 'goodsCode' => isset($data['goodsCode']) ? $data['goodsCode'] : false,
  910. 'goodsBasicId' => isset($data['goodsBasicId']) ? $data['goodsBasicId'] : false,
  911. 'skuId' => isset($data['skuId']) ? $data['skuId'] : false,
  912. 'unitName' => isset($data['unitName']) ? $data['unitName'] : false,
  913. 'skuName' => isset($data['skuName']) ? $data['skuName'] : false,
  914. 'num' => isset($data['num']) ? $data['num'] : false,
  915. 'returnUnitPrice' => isset($data['costUnitPrice']) ? $data['costUnitPrice'] : false,
  916. 'saleUnitPrice' => isset($data['costUnitPrice']) ? $data['costUnitPrice'] : false,
  917. 'returnTotalPrice' => isset($data['costUnitPrice']) ? $data['costUnitPrice'] : false,
  918. 'saleTotalPrice' => isset($data['saleUnitPrice']) ? $data['saleUnitPrice'] : false,
  919. 'createTime' => isset($data['createTime']) ? $data['createTime'] : false,
  920. 'updateTime' => isset($data['updateTime']) ? $data['updateTime'] : false,
  921. ];
  922. foreach($addEsData as $key => $value){
  923. if($value == false){
  924. unset($addEsData[$key]);
  925. }
  926. }
  927. //创建es id
  928. $esId = self::esId($id);
  929. $result = $this->objDOrderReturnDetails->addUpSearchIndexDocument($addEsData, $esId);
  930. if (isset($result['_shards']) && isset($result['_shards']['successful']) && $result['_shards']['successful'] == 1) {
  931. return ResultWrapper::success(isset($result['_id']) ? $result['_id'] : false);
  932. }
  933. return ResultWrapper::fail($result['error']['reason'], ErrorCode::$paramError);
  934. }
  935. /**
  936. * 拼接详情es id
  937. * @param $id
  938. * @return string
  939. */
  940. public function esId($id)
  941. {
  942. return 'EnterpriseId_' . $this->enterpriseId . '_OrderOutId_' . $id;
  943. }
  944. /**
  945. * Doc: (des="")
  946. * User: XMing
  947. * Date: 2021/1/20
  948. * Time: 11:47 上午
  949. * @param $selectParams
  950. * @return ResultWrapper
  951. */
  952. public function getSubRetMoneyToday(array $selectParams = []): ResultWrapper
  953. {
  954. $todayStart = strtotime(date('Y-m-d 00:00:00', time()));
  955. $todayEnd = strtotime(date('Y-m-d 23:59:59', time()));
  956. $fields = ' SUM(`returnTotalPrice`) as subRetMoney ';
  957. $sql = 'SELECT '.$fields.' FROM qianniao_order_return_details_'.$this->enterpriseId.' as d
  958. LEFT JOIN qianniao_order_return_'.$this->enterpriseId.' as o
  959. ON o.id = d.linkId WHERE d.deleteStatus = '.StatusCode::$standard.' AND o.auditStatus = '.StatusCode::$auditStatus['auditPass'].' AND
  960. o.createTime BETWEEN '.$todayStart.' AND '.$todayEnd;
  961. if (isset($selectParams['shopId']) && !empty($selectParams['shopId'])){
  962. $sql .= ' AND o.shopId = '.$selectParams['shopId'];
  963. }
  964. $sum = $this->objDOrderReturn->query($sql);
  965. if ($sum === false){
  966. return ResultWrapper::fail($this->objDOrderReturn->error(),ErrorCode::$dberror);
  967. }
  968. $sum = isset($sum[0]['subRetMoney']) ? $sum[0]['subRetMoney'] : 0;
  969. return ResultWrapper::success($sum);
  970. }
  971. /**
  972. * 获取指定脱货单的审核状态
  973. * @return ResultWrapper
  974. */
  975. public function getAuditStatusByOrderId($orderReturnId)
  976. {
  977. $dbResult = $this->objDOrderReturn->get_field('auditStatus', ['originId'=>$orderReturnId]);
  978. if ($dbResult === false){
  979. return ResultWrapper::fail($this->objDOrderReturn->error(),ErrorCode::$dberror);
  980. }
  981. return ResultWrapper::success($dbResult);
  982. }
  983. }