Commit f7b14705 authored by pengfei's avatar pengfei

Merge branch 'feature_optimize_order_create_refund' into develop

parents 1e7e0818 b7d99b6f
...@@ -19,6 +19,7 @@ class GoodsException extends BaseException ...@@ -19,6 +19,7 @@ class GoodsException extends BaseException
const LABEL_PRINTER_ALREADY_EXIST = 53; const LABEL_PRINTER_ALREADY_EXIST = 53;
const PRINTER_BIND_ERROR = 54; const PRINTER_BIND_ERROR = 54;
const PRINTER_SN_ERROR = 55; const PRINTER_SN_ERROR = 55;
const PARAMS_NULL_ERROR = 56;
protected $cus = [ protected $cus = [
0 => '商品创建失败,请稍后重试', 0 => '商品创建失败,请稍后重试',
...@@ -77,5 +78,6 @@ class GoodsException extends BaseException ...@@ -77,5 +78,6 @@ class GoodsException extends BaseException
self::LABEL_PRINTER_ALREADY_EXIST => '标签打印机已被%s绑定', self::LABEL_PRINTER_ALREADY_EXIST => '标签打印机已被%s绑定',
self::PRINTER_BIND_ERROR => '打印机绑定失败:%s', self::PRINTER_BIND_ERROR => '打印机绑定失败:%s',
self::PRINTER_SN_ERROR => '打印机sn号码有误', self::PRINTER_SN_ERROR => '打印机sn号码有误',
self:: PARAMS_NULL_ERROR => '参数不能为空',
]; ];
} }
\ No newline at end of file
...@@ -314,7 +314,7 @@ class GoodsController extends Base ...@@ -314,7 +314,7 @@ class GoodsController extends Base
*/ */
public function refundAction() public function refundAction()
{ {
(new RefundGoodsValidate())->validate(); //(new RefundGoodsValidate())->validate();
$params = $this->params; $params = $this->params;
$res = GoodsService::refundGoods($params); $res = GoodsService::refundGoods($params);
$this->success(["result" => $res]); $this->success(["result" => $res]);
...@@ -349,4 +349,15 @@ class GoodsController extends Base ...@@ -349,4 +349,15 @@ class GoodsController extends Base
$res = GoodsSnapshotsService::goodsSnapshots($this->params); $res = GoodsSnapshotsService::goodsSnapshots($this->params);
$this->success(["result" => $res]); $this->success(["result" => $res]);
} }
/**
* 下单时获取商品数据 sku and spu
* @throws Exception
*/
public function place_order_goods_listAction()
{
$params = $this->params;
$data = GoodsService::getPlaceOrderGoodsList($params);
$this->success(["result" => $data]);
}
} }
\ No newline at end of file
...@@ -1936,19 +1936,27 @@ class GoodsService ...@@ -1936,19 +1936,27 @@ class GoodsService
* @return bool * @return bool
* @throws GoodsException * @throws GoodsException
*/ */
public static function refundGoods($params) public static function refundGoods($dataJson)
{ {
if (empty($dataJson)){
throw new GoodsException(["cus" => GoodsException::PARAMS_NULL_ERROR]);
}
foreach ($dataJson as $params){
$goodsSukParams = GoodsSkuId::getGoodsSkuIdParams($params["goods_sku_id"]); $goodsSukParams = GoodsSkuId::getGoodsSkuIdParams($params["goods_sku_id"]);
if (!empty($goodsSukParams)) { if (!empty($goodsSukParams)) {
if (isset($goodsSukParams["table_tag"]) && ($goodsSukParams["table_tag"] == GoodsSkuId::TABLE_TAG_PINDAN if (isset($goodsSukParams["table_tag"]) && ($goodsSukParams["table_tag"] == GoodsSkuId::TABLE_TAG_PINDAN
|| $goodsSukParams["category_1_id"] == "00")) { || $goodsSukParams["category_1_id"] == "00")) {
return MarketingPindanGoodsService::refundGoods($params); $refundGoodsData[] = $params;
} }
} else { } else {
throw new GoodsException(["cus" => 41]); throw new GoodsException(["cus" => 41]);
} }
}
if (empty($refundGoodsData)){
return true; return true;
} }
return MarketingPindanGoodsService::refundGoods($refundGoodsData);
}
/** /**
* 通过goods_sku_id 获取 拼单商品的ota信息 * 通过goods_sku_id 获取 拼单商品的ota信息
...@@ -1974,4 +1982,69 @@ class GoodsService ...@@ -1974,4 +1982,69 @@ class GoodsService
} }
return $data; return $data;
} }
/**
* 下单时获取商品数据
* @param array $params
* @return array
*/
public static function getPlaceOrderGoodsList($params)
{
if (!$goodsSkuList = self::getPlaceOrderGoodsSkuList($params)) {
return [];
}
$goodsSpuList = self::getGoodsSpuList(['goods_spu_id' => array_column($goodsSkuList, 'goods_spu_id')]);
$goodsSpuList = array_column($goodsSpuList, null, 'goods_spu_id');
$goodsSkuData = [];
foreach ($goodsSkuList as $goodsInfo) {
if (!empty($goodsSpuList[$goodsInfo['goods_spu_id']])) {
$goodsSpuInfo = $goodsSpuList[$goodsInfo['goods_spu_id']];
$goodsSkuData[] = [
'goods_sku_id' => $goodsInfo['goods_sku_id'],
'goods_spu_id' => $goodsInfo['goods_spu_id'],
'goods_version' => $goodsInfo['goods_version'],
'price' => $goodsInfo['price'],
'clear_price' => $goodsInfo['clear_price'],
'rule_limit' => $goodsInfo['rule_limit'],
'online_status' => $goodsInfo['online_status'],
'inventory_rest' => $goodsInfo['inventory_rest'],
'rule_refund' => $goodsSpuInfo['rule_refund'],
'goods_sale_type' => $goodsSpuInfo['goods_sale_type'],
'goods_type' => $goodsSpuInfo['goods_type'],
'shop_id' => $goodsSpuInfo['shop_id'],
'life_account_id' => $goodsSpuInfo['life_account_id']
];
}
}
return $goodsSkuData;
}
/**
* 下单时获取商品sku数据
* @param array $params
* @return array
*/
public static function getPlaceOrderGoodsSkuList($params)
{
if (empty($params['goods_sku_id'])) {
return [];
}
$goodsSkuIdList = [];
foreach ($params['goods_sku_id'] as $goodsSkuId) {
$goodsParams = GoodsSkuId::getGoodsSkuIdParams($goodsSkuId);
$goodsSkuIdList[$goodsParams['goods_type']][] = $goodsSkuId;
}
$goodsSkuList = [];
foreach ($goodsSkuIdList as $goodsType => $goodsSkuIds) {
// 现在只有两种类型 实体,虚拟
if ($goodsType == GoodsSpu::TYPE_VIRTUAL) {
$goodsData = self::generalGetGoodsSkuList(['goods_sku_id' => $goodsSkuIds]);
} else {
$goodsData = self::generalGetPindanGoodsSkuList(['goods_sku_id' => $goodsSkuIds]);
}
$goodsSkuList = array_merge($goodsSkuList, $goodsData);
}
return $goodsSkuList;
}
} }
\ No newline at end of file
...@@ -471,20 +471,22 @@ class MarketingPindanGoodsService ...@@ -471,20 +471,22 @@ class MarketingPindanGoodsService
} }
/** /**
* 退款拼单商品,库存调整 * 退款拼单商品,库存调整 (批量退库存)
* @param $params * @param $params
* @return bool * @return bool
* @throws GoodsException * @throws GoodsException
*/ */
public static function refundGoods($params) public static function refundGoods($dataJson)
{ {
if (empty($dataJson)){
throw new GoodsException(["cus" => GoodsException::PARAMS_NULL_ERROR]);
}
PindanGoodsSku::beginTransaction();
foreach ($dataJson as $params){
$sku = PindanGoodsSku::get("*", ["goods_sku_id" => $params["goods_sku_id"]]); $sku = PindanGoodsSku::get("*", ["goods_sku_id" => $params["goods_sku_id"]]);
if (empty($sku)) { if (empty($sku)) {
throw new GoodsException(["cus" => 15]); throw new GoodsException(["cus" => 15]);
} }
PindanGoodsSku::beginTransaction();
$records = GoodsRefundRecord::getRecordMaster([ $records = GoodsRefundRecord::getRecordMaster([
"goods_sku_id" => $params["goods_sku_id"], "goods_sku_id" => $params["goods_sku_id"],
"order_item_id" => $params["order_item_id"], "order_item_id" => $params["order_item_id"],
...@@ -504,9 +506,7 @@ class MarketingPindanGoodsService ...@@ -504,9 +506,7 @@ class MarketingPindanGoodsService
"total_amount_order[-]" => $params["num"], "total_amount_order[-]" => $params["num"],
"inventory_rest[+]" => $params["num"], "inventory_rest[+]" => $params["num"],
], ["goods_sku_id" => $sku["goods_sku_id"], "total_amount_sold[>=]" => $params["num"], "total_amount_order[>=]" => $params["num"]]); ], ["goods_sku_id" => $sku["goods_sku_id"], "total_amount_sold[>=]" => $params["num"], "total_amount_order[>=]" => $params["num"]]);
FileLog::info('goods_refund_log', 'json decode error raw:' . json_encode($params)); FileLog::info('goods_refund_log', 'json decode error raw:' . json_encode($params));
if ($row < 1){ if ($row < 1){
PindanGoodsSku::rollback(); PindanGoodsSku::rollback();
GoodsRefundRecord::save([ GoodsRefundRecord::save([
...@@ -519,7 +519,7 @@ class MarketingPindanGoodsService ...@@ -519,7 +519,7 @@ class MarketingPindanGoodsService
throw new GoodsException(["cus" => 0]); throw new GoodsException(["cus" => 0]);
} }
} }
}
if (!PindanGoodsSku::commit()) { if (!PindanGoodsSku::commit()) {
PindanGoodsSku::rollback(); PindanGoodsSku::rollback();
throw new GoodsException(["cus" => 0]); throw new GoodsException(["cus" => 0]);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment