MOrder.Class.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. /**
  3. * 订单
  4. * Created by PhpStorm.
  5. * User: 小威
  6. * Date: 2020/03/14
  7. * Time: 17:03
  8. */
  9. namespace Jobs\Model\MTopic\Order;
  10. use Jobs\Dao\BaseDao;
  11. use Jobs\Dao\Order\DOrder;
  12. use Jobs\Dao\Order\DOrderGoods;
  13. use Mall\Framework\Core\ErrorCode;
  14. use Mall\Framework\Core\ResultWrapper;
  15. use Mall\Framework\Core\StatusCode;
  16. class MOrder
  17. {
  18. private $enterpriseId;
  19. private $userCenterId;
  20. private $objDOrder;
  21. private $objDOrderGoods;
  22. private $cutTable = 200000;
  23. /**
  24. * MGrantCoupon constructor.
  25. * @throws \Exception
  26. */
  27. public function __construct()
  28. {
  29. $this->objDOrder = new DOrder();
  30. $this->objDOrderGoods = new DOrderGoods();
  31. echo '编辑订单信息:' . date('Y-d-d H:i:s') . ':' . PHP_EOL;
  32. }
  33. /**
  34. * 切换分表
  35. * @param $enterpriseId
  36. * @param $userCenterId
  37. * @throws \Exception
  38. */
  39. public function orderSubTable($enterpriseId, $userCenterId)
  40. {
  41. $tableName = $this->objDOrder->getTableName($this->objDOrder->get_Table() . '_' . $enterpriseId, $userCenterId, $this->cutTable);
  42. $this->objDOrder->setTable($tableName);
  43. $tableName = $this->objDOrderGoods->getTableName($this->objDOrderGoods->get_Table() . '_' . $enterpriseId, $userCenterId, $this->cutTable);
  44. $this->objDOrderGoods->setTable($tableName);
  45. }
  46. /**
  47. * 回写订单库存成本
  48. * @param $params
  49. * @return ResultWrapper
  50. * @throws \Exception
  51. */
  52. public function backOrderOutCostPrise($params)
  53. {
  54. var_dump($params);
  55. $params = $params['data'];
  56. //调用分表
  57. self::orderSubTable($params['enterpriseId'], $params['userCenterId']);
  58. //查询订单
  59. $dbResult = $this->objDOrder->get(['id'=>$params['originId'], 'deleteStatus' => StatusCode::$standard]);
  60. if($dbResult === false){
  61. echo $this->objDOrder->error() . PHP_EOL;
  62. return false;
  63. }
  64. if(empty($dbResult)){
  65. echo '订单不存在' . PHP_EOL;
  66. return false;
  67. }
  68. unset($dbResult);
  69. //查询详情
  70. $dbResult = $this->objDOrderGoods->get(['orderId' => $params['originId'], 'deleteStatus' => StatusCode::$standard, 'returnStatus' => StatusCode::$orderReturn['notReturn']]);
  71. if($dbResult === false){
  72. echo $this->objDOrderGoods->error() . PHP_EOL;
  73. return false;
  74. }
  75. if(empty($dbResult)){
  76. echo '商品数据为空' . PHP_EOL;
  77. return false;
  78. }
  79. unset($dbResult);
  80. foreach($params['stock'] as $skuId => $value){
  81. //判断是那种计算成本方式
  82. if($params['costType'] == StatusCode::$costType['mwa']){
  83. //移动加权
  84. $costPrise = $value['averageCost'];
  85. }elseif($params['costType'] == StatusCode::$costType['sp']){
  86. //批次成本
  87. //计算平均值
  88. $prise = 0;
  89. foreach($value['batch'] as $v){
  90. $prise = bcadd($prise,$v['batchCost'],4);
  91. }
  92. $count = count($value['batch']);
  93. $costPrise = bcdiv($prise ,$count,4);
  94. }else{
  95. echo '成本计算参数错误' . PHP_EOL;
  96. return false;
  97. }
  98. echo '$skuId='.$skuId.' -- '.'成本方式'.$params['costType'].', 成本单价'.$costPrise.PHP_EOL;
  99. //修改订单详情
  100. print_r(['outCostPrice' => $costPrise, 'updateTime' => time()]);
  101. print_r(['id' => $params['originId'], 'skuId' => $skuId]);
  102. print_r($this->objDOrderGoods->get_Table());
  103. $dbResult = $this->objDOrderGoods->update(['outCostPrice' => $costPrise, 'updateTime' => time()], ['orderId' => $params['originId'], 'skuId' => $skuId]);
  104. //var_dump($dbResult);
  105. if($dbResult === false){
  106. echo $this->objDOrderGoods->error() . PHP_EOL;
  107. return false;
  108. }
  109. }
  110. echo '修改成功' . PHP_EOL;
  111. return true;
  112. }
  113. }