|
|
@@ -3,6 +3,7 @@
|
|
|
namespace bizHd\purchase\classes;
|
|
|
|
|
|
use biz\ghs\classes\GhsClass;
|
|
|
+use biz\product\classes\XjClass;
|
|
|
use biz\shop\classes\ShopClass;
|
|
|
use biz\shop\classes\ShopCouponClass;
|
|
|
use biz\wx\classes\WxMessageClass;
|
|
|
@@ -10,7 +11,9 @@ use bizGhs\admin\classes\AdminClass;
|
|
|
use bizGhs\order\traits\OrderTrait;
|
|
|
use bizGhs\product\classes\ProductClass;
|
|
|
use bizGhs\stock\services\StockRecordService;
|
|
|
+use bizHd\cg\classes\CgXjClass;
|
|
|
use common\components\dict;
|
|
|
+use common\components\imgUtil;
|
|
|
use common\components\orderSn;
|
|
|
use common\components\util;
|
|
|
use bizHd\base\classes\BaseClass;
|
|
|
@@ -60,9 +63,8 @@ class PurchaseClass extends BaseClass
|
|
|
$productList = self::mergeItemInfo($productList);
|
|
|
$data['kindNum'] = count($productList); //多少种花材
|
|
|
|
|
|
- //传过滤的productId 是供应商的,需要转换为零售端(hd)的productId
|
|
|
- //补充了hdProductId
|
|
|
- //[{"productId":"113","bigNum":1,"smallNum":0,"classId":"-2","hdProductId":1}]
|
|
|
+ //传过来的是供应商的productId,需要转换为零售端的productId
|
|
|
+ //数据格式 [{"productId":"113","bigNum":1,"smallNum":0,"classId":"-2","hdProductId":1}]
|
|
|
$shopId = $data['shopId'] ?? 0;
|
|
|
$sjId = $data['sjId'] ?? 0;
|
|
|
$productList = ProductClass::toggleProductList($productList, $shopId, $sjId);
|
|
|
@@ -81,6 +83,7 @@ class PurchaseClass extends BaseClass
|
|
|
$productId = $product['productId'];
|
|
|
$hdProductId = $product['hdProductId'];
|
|
|
|
|
|
+ $variety = $hdProductData[$hdProductId]['variety'] ?? 0;
|
|
|
$ratio = $hdProductData[$hdProductId]['ratio'] ?? 0; //比例必须一致
|
|
|
$itemId = $hdProductData[$hdProductId]['itemId'] ?? 0;
|
|
|
$rank = $hdProductData[$hdProductId]['rank'] ?? 'B';// 花材级别
|
|
|
@@ -121,6 +124,7 @@ class PurchaseClass extends BaseClass
|
|
|
];
|
|
|
|
|
|
$productList[$key]['itemInfo'] = json_encode($itemInfo);
|
|
|
+ $productList[$key]['variety'] = $variety;
|
|
|
$productList[$key]['itemId'] = $itemId;
|
|
|
$productList[$key]['itemNum'] = $itemNum;
|
|
|
$productList[$key]['price'] = $price;
|
|
|
@@ -136,6 +140,7 @@ class PurchaseClass extends BaseClass
|
|
|
$prePrice = bcadd($prePrice, $productTotalPrice, 2);
|
|
|
|
|
|
}
|
|
|
+
|
|
|
$data['itemPrice'] = $prePrice;
|
|
|
$sendCost = $data['sendCost'] ?? 0.00;
|
|
|
$prePrice = bcadd($prePrice, $sendCost, 2);
|
|
|
@@ -183,7 +188,32 @@ class PurchaseClass extends BaseClass
|
|
|
$current = time() + $validTime;
|
|
|
$data['deadline'] = $data['deadline'] ?? date("Y-m-d H:i:s", $current);
|
|
|
$respond = self::add($data, true);
|
|
|
- PurchaseItemClass::batchAdd($productList);
|
|
|
+
|
|
|
+ foreach ($productList as $productKey => $productVal) {
|
|
|
+ $returnItem = PurchaseItemClass::add($productVal, true);
|
|
|
+ //小菊
|
|
|
+ if (isset($returnItem->variety) && $returnItem->variety == 1) {
|
|
|
+ $unitPrice = $returnItem->price ?? 0;
|
|
|
+ $currentId = $returnItem->id ?? 0;
|
|
|
+ if (isset($data['xj']) && !empty($data['xj'])) {
|
|
|
+ $xjArr = json_decode($data['xj'], true);
|
|
|
+ if (is_array($xjArr)) {
|
|
|
+ $ids = array_column($xjArr, 'id');
|
|
|
+ $sjInfo = XjClass::getByIds($ids, null, 'id');
|
|
|
+ $xjData = [];
|
|
|
+ foreach ($xjArr as $xjItem) {
|
|
|
+ $id = $xjItem['id'] ?? 0;
|
|
|
+ $num = $xjItem['num'] ?? 0;
|
|
|
+ $name = $sjInfo[$id]['name'] ?? '';
|
|
|
+ $cover = $sjInfo[$id]['cover'] ?? '';
|
|
|
+ $xjData[] = ['xjId' => $id, 'name' => $name, 'num' => $num, 'price' => $unitPrice, 'itemId' => $currentId, 'cover' => $cover];
|
|
|
+ }
|
|
|
+ CgXjClass::batchAdd($xjData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
$shop = ShopClass::getLockById($shopId);
|
|
|
if (empty($shop)) {
|
|
|
util::fail('没有找到门店');
|
|
|
@@ -375,6 +405,7 @@ class PurchaseClass extends BaseClass
|
|
|
$orderSn = $val['orderSn'];
|
|
|
$orderItem = PurchaseItemClass::getOrderItemDetail($orderSn);
|
|
|
$itemData = [];
|
|
|
+ $xjData = [];
|
|
|
if ($orderItem) {
|
|
|
foreach ($orderItem as $v) {
|
|
|
$info = json_decode($v['itemInfo'], true);
|
|
|
@@ -387,12 +418,47 @@ class PurchaseClass extends BaseClass
|
|
|
}
|
|
|
$tmp['name'] = $tmp['itemName'];
|
|
|
$tmp = array_merge($tmp, $v);
|
|
|
- $itemData[] = $tmp;
|
|
|
+
|
|
|
+ //小菊
|
|
|
+ if (isset($tmp['variety']) && $tmp['variety'] == 1) {
|
|
|
+ $currentItemId = $tmp['id'] ?? 0;
|
|
|
+ $xjList = CgXjClass::getAllByCondition(['itemId' => $currentItemId], null, '*');
|
|
|
+ if (!empty($xjList)) {
|
|
|
+ foreach ($xjList as $xjKey => $xj) {
|
|
|
+ $xjBase = $tmp;
|
|
|
+ $num = $xj['num'] ?? 0;
|
|
|
+ $name = $xj['name'] ?? '';
|
|
|
+ $cover = $xj['cover'] ?? '';
|
|
|
+ $price = $xj['price'] ?? '';
|
|
|
+ $totalPrice = bcmul($num, $price, 2);
|
|
|
+ if ($num > 0) {
|
|
|
+ $xjBase['cover'] = imgUtil::groupImg($cover) . "?x-oss-process=image/resize,m_fill,h_130,w_130";
|
|
|
+ $xjBase['name'] = $name;
|
|
|
+ $xjBase['itemNum'] = floatval($num);
|
|
|
+ $xjBase['bigNum'] = floatval($num);
|
|
|
+ $xjBase['smallNum'] = 0;
|
|
|
+ $xjBase['price'] = $price;
|
|
|
+ $xjBase['totalPrice'] = $totalPrice;
|
|
|
+ $xjAddList[] = $xjBase;
|
|
|
+ }
|
|
|
+ $xjData[] = $xjBase;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $itemData[] = $tmp;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
+ if (!empty($xjData)) {
|
|
|
+ $itemData = array_merge($itemData, $xjData);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
$list[$key]['product'] = $itemData;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
return $list;
|
|
|
}
|
|
|
|