Browse Source

订单与组合

shish 4 năm trước cách đây
mục cha
commit
2a16e0ac92

+ 1 - 0
app-hd/controllers/OrderController.php

@@ -40,6 +40,7 @@ class OrderController extends BaseController
         $post['sjId'] = $this->sjId;
         $post['shopId'] = $this->shopId;
         $post['payWay'] = $this->isWx == true ? 0 : 1;
+        $post['mainId'] = $this->mainId ?? 0;
         $now = time();
         //订单30分钟后过期
         $expireTime = $now + 1800;

+ 14 - 0
biz-hd/group/classes/GroupGoodsClass.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace bizHd\group\classes;
+
+
+use bizHd\base\classes\BaseClass;
+use common\components\imgUtil;
+
+class GroupGoodsClass extends BaseClass
+{
+
+    public static $baseFile = '\bizHd\group\models\GroupGoods';
+
+}

+ 14 - 0
biz-hd/group/classes/GroupItemClass.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace bizHd\group\classes;
+
+
+use bizHd\base\classes\BaseClass;
+use common\components\imgUtil;
+
+class GroupItemClass extends BaseClass
+{
+
+    public static $baseFile = '\bizHd\group\models\GroupItem';
+
+}

+ 13 - 0
biz-hd/group/models/GroupGoods.php

@@ -0,0 +1,13 @@
+<?php
+namespace bizHd\group\models;
+use bizHd\base\models\Base;
+
+class GroupGoods extends Base
+{
+
+    public static function tableName()
+    {
+        return 'xhGroup';
+    }
+
+}

+ 13 - 0
biz-hd/group/models/GroupItem.php

@@ -0,0 +1,13 @@
+<?php
+namespace bizHd\group\models;
+use bizHd\base\models\Base;
+
+class GroupItem extends Base
+{
+
+    public static function tableName()
+    {
+        return 'xhGroup';
+    }
+
+}

+ 13 - 0
biz-hd/group/services/GroupGoodsService.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace bizHd\group\services;
+
+use bizHd\base\services\BaseService;
+use bizHd\group\classes\GroupClass;
+
+class GroupGoodsService extends BaseService
+{
+
+    public static $baseFile = '\bizHd\group\classes\GroupGoodsClass';
+
+}

+ 13 - 0
biz-hd/group/services/GroupItemService.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace bizHd\group\services;
+
+use bizHd\base\services\BaseService;
+use bizHd\group\classes\GroupClass;
+
+class GroupItemService extends BaseService
+{
+
+    public static $baseFile = '\bizHd\group\classes\GroupItemClass';
+
+}

+ 161 - 6
biz-hd/order/services/OrderService.php

@@ -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);
 

+ 16 - 1
common/components/dict.php

@@ -13,10 +13,13 @@ class dict
             'need' => 1,
             'noNeed' => 2,
         ],
-
+        //结账方式
         'hasPay' => [
+            //待付款
             'unPay' => 0,
+            //已付款
             'payed' => 1,
+            //欠款
             'debt' => 2,
         ],
         'hasPayMap' => [
@@ -29,6 +32,18 @@ class dict
             //花材
             'item' => 1,
         ],
+        //单位类型 0大单位 1小单位
+        'unitType' => [
+            'big' => 0,
+            'small' => 1,
+        ],
+        //配送方式
+        'sendType' => [
+            //配送,可填运费
+            'send' => 1,
+            //自取
+            'selfGet' => 2,
+        ],
 
         //批发店囤货时显示给零售库存的最高值
         'showMaxStock' => 260,

+ 28 - 17
sql.txt

@@ -265,18 +265,22 @@ id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
 `intro` VARCHAR(900) NOT NULL DEFAULT '' COMMENT '简介',
 `price` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '价格',
 `num` INT NOT NULL DEFAULT 0 COMMENT '开单次数',
-`addTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间'
+`addTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
+`updateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
 )COMMENT='商品花材组合';
 DROP TABLE IF EXISTS `xhGroupItem`;
-CREATE TABLE IF NOT EXISTS `xhGroupItem`(
-`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-`groupId` INT NOT NULL DEFAULT 0 COMMENT '组合id',
-`name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '花材名称',
-`itemId` INT(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '花材ID',
-`ptItemId` INT(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '平台花材ID',
-`num` DECIMAL(10,2) NOT NULL DEFAULT '0.00' COMMENT '花材数量',
-`addTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
-)COMMENT='组合花材';
+CREATE TABLE `xhGroupItem` (
+  `id` INT(11) NOT NULL AUTO_INCREMENT,
+  `groupId` INT(11) NOT NULL DEFAULT '0' COMMENT '组合id',
+  `name` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '花材名称',
+  `itemId` INT(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '花材ID',
+  `ptItemId` INT(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '平台花材ID',
+  `num` INT NOT NULL DEFAULT 0 COMMENT '当前数量',
+  `unitType` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '当前单位类型 0大单位 1小单位',
+  `unitPrice` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '当前单位价格,单价',
+  `addTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  PRIMARY KEY (`id`)
+) COMMENT='常用组合的花材';
 DROP TABLE IF EXISTS `xhGroupGoods`;
 CREATE TABLE IF NOT EXISTS `xhGroupGoods`(
 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -366,12 +370,11 @@ CREATE TABLE `xhOrderItem` (
   `name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '名称',
   `cover` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '封面',
   `ratio` TINYINT(4) NOT NULL DEFAULT 0 COMMENT '大小单位比例',
-  `unitType` TINYINT NOT NULL DEFAULT 0 COMMENT '单位类型 0大单位 1小单位',
-  `unitName` CHAR(10) NOT NULL DEFAULT '' COMMENT '单位名称',
-  `unitId` INT NOT NULL DEFAULT 0 COMMENT '单位id',
-  `unitPrice` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '单价',
+  `unitType` TINYINT NOT NULL DEFAULT 0 COMMENT '当前单位类型 0大单位 1小单位',
+  `unitName` CHAR(10) NOT NULL DEFAULT '' COMMENT '当前单位名称',
+  `unitId` INT NOT NULL DEFAULT 0 COMMENT '当前单位id',
+  `unitPrice` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '当前单位价格,单价',
   `num` INT NOT NULL DEFAULT 0 COMMENT '当前单位数量',
-  `orderId` INT(11) NOT NULL DEFAULT '0' COMMENT '订单id',
   `orderSn` CHAR(20) NOT NULL DEFAULT '' COMMENT '订单编号',
   `itemId` INT(11) NOT NULL DEFAULT '0' COMMENT '商家花材id',
   `ptItemId` INT NOT NULL DEFAULT 0 COMMENT '平台花材id',
@@ -381,6 +384,7 @@ CREATE TABLE `xhOrderItem` (
   `hdId` INT NOT NULL DEFAULT 0 COMMENT '花店id',
   `sjId` INT(11) NOT NULL DEFAULT '0' COMMENT '商户id',
   `shopId` INT NOT NULL DEFAULT 0 COMMENT '门店id',
+  `mainId` INT NOT NULL DEFAULT 0 COMMENT '中央id',
   `addTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
   `updateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
   PRIMARY KEY (`id`)
@@ -388,13 +392,13 @@ CREATE TABLE `xhOrderItem` (
 DROP TABLE IF EXISTS `xhOrderGoods`;
 CREATE TABLE `xhOrderGoods` (
   `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '订单id',
-  `orderId` INT(11) NOT NULL DEFAULT '0' COMMENT '订单id',
   `orderSn` CHAR(20) NOT NULL DEFAULT '' COMMENT '订单编号',
   `goodsId` INT(11) NOT NULL DEFAULT '0' COMMENT '商品id,备用字段',
   `customId` INT(11) NOT NULL DEFAULT '0' COMMENT '客户id',
   `hdId` INT NOT NULL DEFAULT 0 COMMENT '花店id',
   `sjId` INT(11) NOT NULL DEFAULT '0' COMMENT '商户id',
   `shopId` INT NOT NULL DEFAULT 0 COMMENT '门店id',
+  `mainId` INT NOT NULL DEFAULT 0 COMMENT '中央id',
   `name` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '名称',
   `cover` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '封面',
   `unitPrice` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '单价',
@@ -403,4 +407,11 @@ CREATE TABLE `xhOrderGoods` (
   `addTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
   `updateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
   PRIMARY KEY (`id`)
-) COMMENT='零售订单商品明细';
+) COMMENT='零售订单商品明细';
+
+ALTER TABLE xhCustom ADD hdId INT NOT NULL DEFAULT 0 COMMENT '花店id' AFTER `id`;
+ALTER TABLE xhHd ADD customId INT NOT NULL DEFAULT 0 COMMENT '客户id' AFTER `id`;
+ALTER TABLE xhOrder ADD hdId INT NOT NULL DEFAULT 0 COMMENT '花店id' AFTER `discountType`;
+ALTER TABLE xhOrder ADD hdName VARCHAR(50) NOT NULL DEFAULT '' COMMENT '花店名称' AFTER `hdId`;
+ALTER TABLE xhOrder ADD mainId INT NOT NULL DEFAULT 0 COMMENT '中央id' AFTER `id`;
+