|
|
@@ -6,13 +6,20 @@ use bizHd\base\services\BaseService;
|
|
|
use biz\sj\services\SjCapitalService;
|
|
|
use biz\sj\services\MerchantService;
|
|
|
use bizHd\custom\classes\CustomClass;
|
|
|
+use bizHd\goods\classes\GoodsClass;
|
|
|
+use bizHd\group\classes\GroupClass;
|
|
|
+use bizHd\group\classes\GroupGoodsClass;
|
|
|
+use bizHd\group\classes\GroupItemClass;
|
|
|
+use bizHd\item\classes\ItemClass;
|
|
|
use bizHd\order\classes\OrderClass;
|
|
|
use bizHd\order\classes\OrderGoodsClass;
|
|
|
use bizHd\order\classes\OrderItemClass;
|
|
|
+use bizHd\order\classes\OrderSnClass;
|
|
|
use bizHd\promote\services\CouponService;
|
|
|
use bizHd\user\classes\UserAssetClass;
|
|
|
use common\components\dict;
|
|
|
use common\components\imgUtil;
|
|
|
+use common\components\orderSn;
|
|
|
use common\components\stringUtil;
|
|
|
use common\components\util;
|
|
|
use Yii;
|
|
|
@@ -26,17 +33,60 @@ class OrderService extends BaseService
|
|
|
{
|
|
|
$payWay = $data['payWay'] ?? dict::getDict('payWay', 'wxPay');
|
|
|
$requestSide = $data['requestSide'] ?? 0;
|
|
|
+
|
|
|
+ $orderSn = orderSn::getOrderSn();
|
|
|
+ $customId = $custom['id'] ?? 0;
|
|
|
+ $hdId = $custom['hdId'] ?? 0;
|
|
|
+ $sjId = $data['sjId'] ?? 0;
|
|
|
+ $shopId = $data['shopId'] ?? 0;
|
|
|
+ $mainId = $data['mainId'] ?? 0;
|
|
|
+
|
|
|
+ $groupCover = '';
|
|
|
+
|
|
|
if ($requestSide == 1) {
|
|
|
//收银台开单成品必须要有库存
|
|
|
$groupId = $data['groupId'] ?? 0;
|
|
|
if (!empty($groupId)) {
|
|
|
+
|
|
|
+
|
|
|
$totalPrice = 0;
|
|
|
+
|
|
|
+
|
|
|
} else {
|
|
|
$product = $data['product'] ?? [];
|
|
|
if (empty($product)) {
|
|
|
util::fail('没有商品');
|
|
|
}
|
|
|
+
|
|
|
+ $currentGoodsIds = [];
|
|
|
+ $currentItemIds = [];
|
|
|
+ foreach ($product as $key => $val) {
|
|
|
+ $currentId = $val['id'] ?? 0;
|
|
|
+ $property = $val['property'];
|
|
|
+ if ($property == dict::getDict('property', 'goods')) {
|
|
|
+ $currentGoodsIds[] = $currentId;
|
|
|
+ }
|
|
|
+ if ($property == dict::getDict('property', 'item')) {
|
|
|
+ $currentItemIds[] = $currentId;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $goodsInfo = [];
|
|
|
+ $currentGoodsIds = array_unique(array_filter($currentGoodsIds));
|
|
|
+ if (!empty($currentGoodsIds)) {
|
|
|
+ $goodsInfo = GoodsClass::getByIds($currentGoodsIds, null, 'id');
|
|
|
+ }
|
|
|
+ $itemInfo = [];
|
|
|
+ $currentItemIds = array_unique(array_filter($currentItemIds));
|
|
|
+ if (!empty($currentItemIds)) {
|
|
|
+ $itemInfo = \bizGhs\item\classes\ItemClass::getByIds($currentItemIds, null, 'id');
|
|
|
+ }
|
|
|
+
|
|
|
$totalPrice = 0;
|
|
|
+
|
|
|
+ //组合的花材和商品数据
|
|
|
+ $groupGoodsData = [];
|
|
|
+ $groupItemData = [];
|
|
|
+
|
|
|
foreach ($product as $key => $val) {
|
|
|
if (isset($val['property']) == false) {
|
|
|
util::fail('没有找到产品属性');
|
|
|
@@ -44,14 +94,97 @@ class OrderService extends BaseService
|
|
|
$currentPrice = $val['price'] ?? 0;
|
|
|
$totalPrice = bcadd($totalPrice, $currentPrice, 2);
|
|
|
$property = $val['property'];
|
|
|
+ $unitPrice = $val['price'] ?? 0;
|
|
|
+ $unitType = $val['unitType'] ?? 0;
|
|
|
+ $currentId = $val['id'] ?? 0;
|
|
|
+ $num = $val['num'] ?? 0;
|
|
|
if ($property == dict::getDict('property', 'goods')) {
|
|
|
-
|
|
|
+ $goodsId = $val['id'] ?? 0;
|
|
|
+ $name = $goodsInfo[$currentId]['name'] ?? '';
|
|
|
+ $cover = $goodsInfo[$currentId]['cover'] ?? '';
|
|
|
+ if (!empty($groupCover)) {
|
|
|
+ $groupCover = $cover;
|
|
|
+ }
|
|
|
+ $currentMainId = $goodsInfo[$currentId]['mainId'] ?? 0;
|
|
|
+ if ($currentMainId != $mainId) {
|
|
|
+ util::fail('不是您的花材');
|
|
|
+ }
|
|
|
+ $currentGoodsData = [
|
|
|
+ 'orderSn' => $orderSn,
|
|
|
+ 'goodsId' => $goodsId,
|
|
|
+ 'customId' => $customId,
|
|
|
+ 'hdId' => $hdId,
|
|
|
+ 'sjId' => $sjId,
|
|
|
+ 'shopId' => $shopId,
|
|
|
+ 'name' => $name,
|
|
|
+ 'cover' => $cover,
|
|
|
+ 'unitPrice' => $unitPrice,
|
|
|
+ 'num' => $num,
|
|
|
+ 'totalPrice' => $totalPrice,
|
|
|
+ 'mainId' => $mainId,
|
|
|
+ ];
|
|
|
+ OrderGoodsClass::add($currentGoodsData);
|
|
|
+ $groupGoodsData[] = [
|
|
|
+ 'goodsId' => $goodsId,
|
|
|
+ 'num' => $num,
|
|
|
+ 'name' => $name,
|
|
|
+ ];
|
|
|
}
|
|
|
if ($property == dict::getDict('property', 'item')) {
|
|
|
-
|
|
|
+ $itemId = $val['id'] ?? 0;
|
|
|
+ $name = $itemInfo[$currentId]['name'] ?? '';
|
|
|
+ $cover = $itemInfo[$currentId]['cover'] ?? '';
|
|
|
+ if (!empty($groupCover)) {
|
|
|
+ $groupCover = $cover;
|
|
|
+ }
|
|
|
+ $ratio = $itemInfo[$currentId]['ratio'] ?? 20;
|
|
|
+ $currentMainId = $itemInfo[$currentId]['mainId'] ?? 0;
|
|
|
+ if ($currentMainId != $mainId) {
|
|
|
+ util::fail('不是您的商品');
|
|
|
+ }
|
|
|
+ if ($unitType == dict::getDict('unitType', 'big')) {
|
|
|
+ $unitName = $itemInfo[$currentId]['bigUnit'] ?? '';
|
|
|
+ $unitId = $itemInfo[$currentId]['bigUnitId'] ?? 0;
|
|
|
+ $totalNum = $num;
|
|
|
+ } else {
|
|
|
+ $unitName = $itemInfo[$currentId]['smallUnit'] ?? '';
|
|
|
+ $unitId = $itemInfo[$currentId]['smallUnitId'] ?? 0;
|
|
|
+ $totalNum = bcdiv($num, $ratio, 2);
|
|
|
+ }
|
|
|
+ $ptItemId = $itemInfo[$currentId]['itemId'] ?? 0;
|
|
|
+ $currentItemData = [
|
|
|
+ 'name' => $name,
|
|
|
+ 'cover' => $cover,
|
|
|
+ 'ratio' => $ratio,
|
|
|
+ 'unitType' => $unitType,
|
|
|
+ 'unitName' => $unitName,
|
|
|
+ 'unitId' => $unitId,
|
|
|
+ 'unitPrice' => $unitPrice,
|
|
|
+ 'num' => $num,
|
|
|
+ 'orderSn' => $orderSn,
|
|
|
+ 'itemId' => $itemId,
|
|
|
+ 'ptItemId' => $ptItemId,
|
|
|
+ 'totalNum' => $totalNum,
|
|
|
+ 'totalPrice' => $totalPrice,
|
|
|
+ 'customId' => $customId,
|
|
|
+ 'hdId' => $hdId,
|
|
|
+ 'sjId' => $sjId,
|
|
|
+ 'shopId' => $shopId,
|
|
|
+ 'mainId' => $mainId,
|
|
|
+ ];
|
|
|
+ OrderItemClass::add($currentItemData);
|
|
|
+ $groupItemData[] = [
|
|
|
+ 'name' => $name,
|
|
|
+ 'itemId' => $itemId,
|
|
|
+ 'ptItemId' => $ptItemId,
|
|
|
+ 'num' => $num,
|
|
|
+ 'unitType' => $unitType,
|
|
|
+ 'unitPrice' => $unitPrice,
|
|
|
+ ];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
$sendCost = $data['sendCost'] ?? 0;
|
|
|
$totalPrice = bcadd($totalPrice, $sendCost, 2);
|
|
|
$modifyPrice = $data['modifyPrice'] ?? 0;
|
|
|
@@ -66,15 +199,37 @@ class OrderService extends BaseService
|
|
|
$data['discountAmount'] = $discountAmount;
|
|
|
}
|
|
|
|
|
|
- $orderGoods = [];
|
|
|
- $orderItem = [];
|
|
|
- OrderGoodsClass::add();
|
|
|
- OrderItemClass::add();
|
|
|
+ //保存组合
|
|
|
+ $groupName = $data['groupName'] ?? '';
|
|
|
+ if (!empty($groupName)) {
|
|
|
+ $groupData = ['price' => $modifyPrice, 'name' => $groupName, 'sjId' => $sjId, 'shopId' => $shopId, 'cover' => $groupCover];
|
|
|
+ $group = GroupClass::add($groupData, true);
|
|
|
+ $groupId = $group->id ?? 0;
|
|
|
+ if (!empty($groupGoodsData)) {
|
|
|
+ foreach ($groupGoodsData as $groupGoodsVal) {
|
|
|
+ $groupGoodsVal['groupId'] = $groupId;
|
|
|
+ GroupGoodsClass::add($groupGoodsVal);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (!empty($groupItemData)) {
|
|
|
+ foreach ($groupItemData as $groupItemVal) {
|
|
|
+ $groupItemVal['groupId'] = $groupId;
|
|
|
+ GroupItemClass::add($groupItemVal);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
$addData = [
|
|
|
'prePrice' => $totalPrice,
|
|
|
'actPrice' => $modifyPrice,
|
|
|
'realPrice' => $modifyPrice,
|
|
|
+ 'customId' => $customId,
|
|
|
+ 'hdId' => $hdId,
|
|
|
+ 'sjId' => $sjId,
|
|
|
+ 'shopId' => $shopId,
|
|
|
+ 'mainId' => $mainId,
|
|
|
+ 'payWay' => $payWay,
|
|
|
];
|
|
|
$returnOrder = OrderClass::addOrder($addData);
|
|
|
|