Commit 3a12a297 authored by luhongguang's avatar luhongguang

Merge branch 'test'

parents 1b9dd0d7 4fad3f94
...@@ -42,5 +42,7 @@ class GoodsException extends BaseException ...@@ -42,5 +42,7 @@ class GoodsException extends BaseException
28 => '上架状态不能编辑,需先下架,再做编辑操作', 28 => '上架状态不能编辑,需先下架,再做编辑操作',
29 => '发布商品的生活号不存在', 29 => '发布商品的生活号不存在',
30 => '当前商品已过期', 30 => '当前商品已过期',
31 => '当前商品锁定库存不足',
32 => '当前商品已下单数量不足',
]; ];
} }
\ No newline at end of file
...@@ -233,7 +233,7 @@ class ElasticGoodService ...@@ -233,7 +233,7 @@ class ElasticGoodService
]; ];
//gte 是大于等于; gt是大于; lte是小于等于; lt是小于 //gte 是大于等于; gt是大于; lte是小于等于; lt是小于
$data["query"]["bool"]["filter"][]["range"] = ["inventory_rest" => [["gt" => 0]]]; $data["query"]["bool"]["filter"][]["range"] = ["inventory_rest" => [["gt" => 0]]];
$data["query"]["bool"]["filter"][]["range"] = ["price" => [["gt" => 0]]];
if (!empty($searchContent) || (!empty($subjectName) && $subjectName != "本周上新")) { if (!empty($searchContent) || (!empty($subjectName) && $subjectName != "本周上新")) {
$multiMatch = [["multi_match" => [ $multiMatch = [["multi_match" => [
"query" => $searchContent.$subjectName, "query" => $searchContent.$subjectName,
......
...@@ -108,6 +108,10 @@ class DistributorService ...@@ -108,6 +108,10 @@ class DistributorService
$userId = $shareUserId; $userId = $shareUserId;
} }
if (!empty($userId)) {
throw new DistributorException(['cus'=>14]);
}
if (!empty($info)) { if (!empty($info)) {
throw new DistributorException(['cus'=>2]); throw new DistributorException(['cus'=>2]);
} }
......
...@@ -109,6 +109,8 @@ class MarketingGoodsService ...@@ -109,6 +109,8 @@ class MarketingGoodsService
}else{ }else{
$list[$i]['is_self_publish'] = 1; $list[$i]['is_self_publish'] = 1;
} }
//允许自己买自己的
$list[$i]['is_self_publish'] = 1;
$life_account_id = !empty($list[$i]['life_account_id']) ? $list[$i]['life_account_id'] : ''; $life_account_id = !empty($list[$i]['life_account_id']) ? $list[$i]['life_account_id'] : '';
...@@ -135,12 +137,12 @@ class MarketingGoodsService ...@@ -135,12 +137,12 @@ class MarketingGoodsService
//比例 //比例
if (!empty($secondCommission) && $commissionMode == 1) { if (!empty($secondCommission) && $commissionMode == 1) {
$price = !empty($list[$i]['price']) ? $list[$i]['price'] : 0; $price = !empty($list[$i]['price']) ? $list[$i]['price'] : 0;
$list[$i]['share_price'] = sprintf("%.2f",$secondCommission*$price/100); $list[$i]['share_price'] = substr(sprintf("%.4f",$secondCommission*$price/100),0,-2);
} }
//固定 //固定
if (!empty($commissionMode) && $commissionMode == 2) { if (!empty($commissionMode) && $commissionMode == 2) {
$list[$i]['share_price'] = sprintf("%.2f",$secondCommission/100); $list[$i]['share_price'] = substr(sprintf("%.4f",$secondCommission/100),0,-2);
} }
$content = $userId .'_' .$value['marketing_id']; $content = $userId .'_' .$value['marketing_id'];
......
...@@ -78,15 +78,21 @@ class TccService ...@@ -78,15 +78,21 @@ class TccService
} }
$num = $numList[$goodsSkuId]; $num = $numList[$goodsSkuId];
if ($sku["inventory_rest"] < $num) { //条件加上乐观锁
GoodsSku::rollback(); $rowCount = GoodsSku::save([
return self::TCC_RESULT_FAIL;
}
GoodsSku::save([
"inventory_lock" => $sku["inventory_lock"] + $num, "inventory_lock" => $sku["inventory_lock"] + $num,
"inventory_rest" => $sku["inventory_rest"] - $num, "inventory_rest" => $sku["inventory_rest"] - $num,
], ["goods_sku_id" => $goodsSkuId]); ], ["goods_sku_id" => $goodsSkuId, "inventory_rest[>=]" => $num]);
if ($rowCount <= 0) {
GoodsSku::rollback();
Tcc::save([
"tid" => $tid,
"goods_sku_id" => $goodsSkuId,
"type" => Tcc::STATUS_TRY,
"operator_result" => Tcc::OPERATOR_RESULT_FAIL,
]);
throw new GoodsException(["cus" => 24]);
}
Tcc::save([ Tcc::save([
"tid" => $tid, "tid" => $tid,
"goods_sku_id" => $goodsSkuId, "goods_sku_id" => $goodsSkuId,
...@@ -161,14 +167,14 @@ class TccService ...@@ -161,14 +167,14 @@ class TccService
} }
//在confirm时候必须已经有try,如果没有就直接返回fail //在confirm时候必须已经有try,如果没有就直接返回fail
$cTccInfoList = Tcc::getRecordMaster([ $tTccInfoList = Tcc::getRecordMaster([
"tid" => $tid, "tid" => $tid,
"goods_sku_id" => $goodsSkuIds, "goods_sku_id" => $goodsSkuIds,
"type" => Tcc::STATUS_TRY, "type" => Tcc::STATUS_TRY,
"operator_result" => Tcc::OPERATOR_RESULT_SUCCESS "operator_result" => Tcc::OPERATOR_RESULT_SUCCESS
]); ]);
if (empty($cTccInfoList) || count($cTccInfoList) != count($goodsSkuIds)) { if (empty($tTccInfoList) || count($tTccInfoList) != count($goodsSkuIds)) {
foreach ($goodsSkuIds as $goodsSkuId) { foreach ($goodsSkuIds as $goodsSkuId) {
Tcc::save([ Tcc::save([
"tid" => $tid, "tid" => $tid,
...@@ -203,15 +209,21 @@ class TccService ...@@ -203,15 +209,21 @@ class TccService
} }
$num = $numList[$goodsSkuId]; $num = $numList[$goodsSkuId];
if ($sku["inventory_lock"] < $num) { //条件加上乐观锁
GoodsSku::rollback(); $rowCount = GoodsSku::save([
return self::TCC_RESULT_FAIL;
}
GoodsSku::save([
"inventory_lock" => $sku["inventory_lock"] - $num, "inventory_lock" => $sku["inventory_lock"] - $num,
"total_amount_order" => $sku["total_amount_order"] + $num, "total_amount_order" => $sku["total_amount_order"] + $num,
], ["goods_sku_id" => $goodsSkuId]); ], ["goods_sku_id" => $goodsSkuId, "inventory_lock[>=]" => $num]);
if ($rowCount <= 0) {
GoodsSku::rollback();
Tcc::save([
"tid" => $tid,
"goods_sku_id" => $goodsSkuId,
"type" => Tcc::STATUS_CONFIRM,
"operator_result" => Tcc::OPERATOR_RESULT_FAIL,
]);
throw new GoodsException(["cus" => 31]);
}
Tcc::save([ Tcc::save([
"tid" => $tid, "tid" => $tid,
...@@ -286,23 +298,24 @@ class TccService ...@@ -286,23 +298,24 @@ class TccService
return self::TCC_RESULT_SUCCESS; return self::TCC_RESULT_SUCCESS;
} }
//在cancel时候必须已经有try,如果没有就直接返回fail //允许空cancel(没有try情况)
$cTccInfoList = Tcc::getRecordMaster([ //在cancel时候必须已经有try,如果没有就直接返回success
$tTccInfoList = Tcc::getRecordMaster([
"tid" => $tid, "tid" => $tid,
"goods_sku_id" => $goodsSkuIds, "goods_sku_id" => $goodsSkuIds,
"type" => Tcc::STATUS_TRY, "type" => Tcc::STATUS_TRY,
"operator_result" => Tcc::OPERATOR_RESULT_SUCCESS "operator_result" => Tcc::OPERATOR_RESULT_SUCCESS
]); ]);
if (empty($cTccInfoList) || count($cTccInfoList) != count($goodsSkuIds)) { if (empty($tTccInfoList) || count($tTccInfoList) != count($goodsSkuIds)) {
foreach ($goodsSkuIds as $goodsSkuId) { foreach ($goodsSkuIds as $goodsSkuId) {
Tcc::save([ Tcc::save([
"tid" => $tid, "tid" => $tid,
"goods_sku_id" => $goodsSkuId, "goods_sku_id" => $goodsSkuId,
"type" => Tcc::STATUS_CANCEL, "type" => Tcc::STATUS_CANCEL,
"operator_result" => Tcc::OPERATOR_RESULT_FAIL, "operator_result" => Tcc::OPERATOR_RESULT_SUCCESS,
]); ]);
} }
return self::TCC_RESULT_FAIL; return self::TCC_RESULT_SUCCESS;
} }
//如果已经 confirm 成功, 则失败 //如果已经 confirm 成功, 则失败
$cTccInfoList = Tcc::getRecordMaster([ $cTccInfoList = Tcc::getRecordMaster([
...@@ -328,16 +341,21 @@ class TccService ...@@ -328,16 +341,21 @@ class TccService
} }
$num = $numList[$goodsSkuId]; $num = $numList[$goodsSkuId];
if ($sku["inventory_lock"] < $num) { //条件加上乐观锁
GoodsSku::rollback(); $rowCount = GoodsSku::save([
return self::TCC_RESULT_FAIL;
}
GoodsSku::save([
"inventory_lock" => $sku["inventory_lock"] - $num, "inventory_lock" => $sku["inventory_lock"] - $num,
"inventory_rest" => $sku["inventory_rest"] + $num, "inventory_rest" => $sku["inventory_rest"] + $num,
], ["goods_sku_id" => $goodsSkuId]); ], ["goods_sku_id" => $goodsSkuId, "inventory_lock[>=]" => $num]);
if ($rowCount <= 0) {
GoodsSku::rollback();
Tcc::save([
"tid" => $tid,
"goods_sku_id" => $goodsSkuId,
"type" => Tcc::STATUS_CANCEL,
"operator_result" => Tcc::OPERATOR_RESULT_FAIL,
]);
throw new GoodsException(["cus" => 31]);
}
Tcc::save([ Tcc::save([
"tid" => $tid, "tid" => $tid,
"goods_sku_id" => $goodsSkuId, "goods_sku_id" => $goodsSkuId,
...@@ -429,21 +447,27 @@ class TccService ...@@ -429,21 +447,27 @@ class TccService
foreach ($skus as $sku) { foreach ($skus as $sku) {
$goodsSkuId = $sku["goods_sku_id"]; $goodsSkuId = $sku["goods_sku_id"];
if (!empty($sku["total_amount_order"]) && $sku["online_status"] == GoodsSku::ONLINE_STATUS_ONLINE) { if (!empty($sku["total_amount_order"])) {
if (empty($numList[$goodsSkuId])) { if (empty($numList[$goodsSkuId])) {
return self::TCC_RESULT_FAIL; return self::TCC_RESULT_FAIL;
} }
$num = $numList[$goodsSkuId]; $num = $numList[$goodsSkuId];
if ($sku["total_amount_order"] < $num) { //条件加上乐观锁
GoodsSku::rollback(); $rowCount = GoodsSku::save([
return self::TCC_RESULT_FAIL;
}
GoodsSku::save([
"inventory_lock" => $sku["inventory_lock"] + $num, "inventory_lock" => $sku["inventory_lock"] + $num,
"total_amount_order" => $sku["total_amount_order"] - $num, "total_amount_order" => $sku["total_amount_order"] - $num,
], ["goods_sku_id" => $goodsSkuId]); ], ["goods_sku_id" => $goodsSkuId, "total_amount_order[>=]" => $num]);
if ($rowCount <= 0) {
GoodsSku::rollback();
Tcc::save([
"tid" => $tid,
"goods_sku_id" => $goodsSkuId,
"type" => Tcc::STATUS_TRY,
"operator_result" => Tcc::OPERATOR_RESULT_FAIL,
]);
throw new GoodsException(["cus" => 32]);
}
Tcc::save([ Tcc::save([
"tid" => $tid, "tid" => $tid,
...@@ -556,36 +580,48 @@ class TccService ...@@ -556,36 +580,48 @@ class TccService
foreach ($skus as $sku) { foreach ($skus as $sku) {
$goodsSkuId = $sku["goods_sku_id"]; $goodsSkuId = $sku["goods_sku_id"];
if (!empty($sku["inventory_lock"]) && $sku["online_status"] == GoodsSku::ONLINE_STATUS_ONLINE) { if (!empty($sku["inventory_lock"])) {
if (empty($numList[$goodsSkuId])) { if (empty($numList[$goodsSkuId])) {
return self::TCC_RESULT_FAIL; return self::TCC_RESULT_FAIL;
} }
$num = $numList[$goodsSkuId]; $num = $numList[$goodsSkuId];
if ($sku["inventory_lock"] < $num) {
GoodsSku::rollback();
return self::TCC_RESULT_FAIL;
}
if ($type == self::TYPE_CANCEL_ORDER) { if ($type == self::TYPE_CANCEL_ORDER) {
$params = [ $params = [
"inventory_lock" => $sku["inventory_lock"] - $num, "inventory_lock" => $sku["inventory_lock"] - $num,
"inventory_rest" => $sku["inventory_rest"] + $num, "inventory_rest" => $sku["inventory_rest"] + $num,
]; ];
} $rowCount = GoodsSku::save($params, ["goods_sku_id" => $goodsSkuId, "inventory_lock[>=]" => $num]);
if ($type == self::TYPE_BACK_ORDER) { if ($rowCount <= 0) {
if ($sku["total_amount_sold"] < $num) {
GoodsSku::rollback(); GoodsSku::rollback();
return self::TCC_RESULT_FAIL; Tcc::save([
"tid" => $tid,
"goods_sku_id" => $goodsSkuId,
"type" => Tcc::STATUS_CONFIRM,
"operator_result" => Tcc::OPERATOR_RESULT_FAIL,
]);
throw new GoodsException(["cus" => 31]);
} }
}
if ($type == self::TYPE_BACK_ORDER) {
$params = [ $params = [
"inventory_lock" => $sku["inventory_lock"] - $num, "inventory_lock" => $sku["inventory_lock"] - $num,
"inventory_rest" => $sku["inventory_rest"] + $num, "inventory_rest" => $sku["inventory_rest"] + $num,
"total_amount_sold" => $sku["total_amount_sold"] - $num, "total_amount_sold" => $sku["total_amount_sold"] - $num,
]; ];
$rowCount = GoodsSku::save($params,
["goods_sku_id" => $goodsSkuId, "inventory_lock[>=]" => $num, "total_amount_sold[>=]" => $num]);
if ($rowCount <= 0) {
GoodsSku::rollback();
Tcc::save([
"tid" => $tid,
"goods_sku_id" => $goodsSkuId,
"type" => Tcc::STATUS_CONFIRM,
"operator_result" => Tcc::OPERATOR_RESULT_FAIL,
]);
throw new GoodsException(["cus" => 32]);
}
} }
GoodsSku::save($params, ["goods_sku_id" => $goodsSkuId]);
Tcc::save([ Tcc::save([
"tid" => $tid, "tid" => $tid,
...@@ -660,7 +696,8 @@ class TccService ...@@ -660,7 +696,8 @@ class TccService
return self::TCC_RESULT_SUCCESS; return self::TCC_RESULT_SUCCESS;
} }
//在cancel时候必须已经有try,如果没有就直接返回fail //允许空cancel(没有try情况)
//在cancel时候必须已经有try,如果没有就直接返回success
$cTccInfoList = Tcc::getRecordMaster([ $cTccInfoList = Tcc::getRecordMaster([
"tid" => $tid, "tid" => $tid,
"goods_sku_id" => $goodsSkuIds, "goods_sku_id" => $goodsSkuIds,
...@@ -673,11 +710,12 @@ class TccService ...@@ -673,11 +710,12 @@ class TccService
"tid" => $tid, "tid" => $tid,
"goods_sku_id" => $goodsSkuId, "goods_sku_id" => $goodsSkuId,
"type" => Tcc::STATUS_CANCEL, "type" => Tcc::STATUS_CANCEL,
"operator_result" => Tcc::OPERATOR_RESULT_FAIL, "operator_result" => Tcc::OPERATOR_RESULT_SUCCESS,
]); ]);
} }
return self::TCC_RESULT_FAIL; return self::TCC_RESULT_SUCCESS;
} }
//如果已经 confirm 成功, 则失败 //如果已经 confirm 成功, 则失败
$cTccInfoList = Tcc::getRecordMaster([ $cTccInfoList = Tcc::getRecordMaster([
"tid" => $tid, "tid" => $tid,
...@@ -696,21 +734,26 @@ class TccService ...@@ -696,21 +734,26 @@ class TccService
foreach ($skus as $sku) { foreach ($skus as $sku) {
$goodsSkuId = $sku["goods_sku_id"]; $goodsSkuId = $sku["goods_sku_id"];
if (!empty($sku["inventory_lock"]) && $sku["online_status"] == GoodsSku::ONLINE_STATUS_ONLINE) { if (!empty($sku["inventory_lock"])) {
if (empty($numList[$goodsSkuId])) { if (empty($numList[$goodsSkuId])) {
return self::TCC_RESULT_FAIL; return self::TCC_RESULT_FAIL;
} }
$num = $numList[$goodsSkuId]; $num = $numList[$goodsSkuId];
if ($sku["inventory_lock"] < $num) { $rowCount = GoodsSku::save([
GoodsSku::rollback();
return self::TCC_RESULT_FAIL;
}
GoodsSku::save([
"inventory_lock" => $sku["inventory_lock"] - $num, "inventory_lock" => $sku["inventory_lock"] - $num,
"total_amount_order" => $sku["total_amount_order"] + $num, "total_amount_order" => $sku["total_amount_order"] + $num,
], ["goods_sku_id" => $goodsSkuId]); ], ["goods_sku_id" => $goodsSkuId, "inventory_lock[>=]" => $num]);
if ($rowCount <= 0) {
GoodsSku::rollback();
Tcc::save([
"tid" => $tid,
"goods_sku_id" => $goodsSkuId,
"type" => Tcc::STATUS_CANCEL,
"operator_result" => Tcc::OPERATOR_RESULT_FAIL,
]);
throw new GoodsException(["cus" => 31]);
}
Tcc::save([ Tcc::save([
"tid" => $tid, "tid" => $tid,
......
...@@ -28,4 +28,23 @@ class Goods implements DaemonServiceInterface ...@@ -28,4 +28,23 @@ class Goods implements DaemonServiceInterface
GoodsSku::save($colums, $where); GoodsSku::save($colums, $where);
} }
} }
public function stock()
{
$orderData = [
'inventory_rest' => 0,
'LIMIT' => 100,
];
$goodsList = GoodsSku::getRecords($orderData);
DaemonLog::info('DaemonServiceInterface_goods', json_encode($goodsList));
foreach ($goodsList as $key => $value) {
$where = [];
$where['goods_sku_id'] = !empty($value['goods_sku_id']) ? $value['goods_sku_id'] : '';
$colums = [
'online_status' => 2,
];
GoodsSku::save($colums, $where);
}
}
} }
\ No newline at end of file
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