| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <?php
- namespace addons\QiShangTong\common\logic;
- use addons\QiShangTong\common\expand\sdk\qishangtong\src\model\OrderConfirmGoodsItemModel;
- use addons\QiShangTong\common\expand\sdk\qishangtong\src\model\OrderConfirmModel;
- use addons\QiShangTong\common\expand\sdk\qishangtong\src\request\OrderConfirmRequest;
- use addons\QiShangTong\common\helper\RequestHelper;
- use addons\QiShangTong\common\models\QiShangTongGoods;
- use addons\QiShangTong\common\models\QiShangTongGoodsAttr;
- use addons\QiShangTong\common\models\QiShangTongRegion;
- use common\logic\order\marketing\BaseMarketing;
- use common\models\user\UserAddress;
- class OrderLimitLogic extends BaseMarketing
- {
- public function execute($form)
- {
- // TODO: Implement execute() method.
- }
- /**
- * 当前方法不在使用
- * @param $form
- * @return void
- * @throws \Exception
- */
- public static function compute($form)
- {
- foreach ($form->group_order_goods as $item) {
- // 判断这件商品是否为企叮咚的商品
- $attr = QiShangTongGoodsAttr::findOne(['goods_attr_id' => $form['data']['attr_id']]);
- if (!empty($attr)) {
- // 判断件数
- $qGoods = QiShangTongGoods::findOne(['goods_id' => $attr->goods_id]);
- $specs = array_column($qGoods->content['goods']['spec'], 'qidingliang', 'spec_id');
- if ($specs[$attr->third_spec_id] > $form['data']['num']) throw new \Exception("起订量 {$specs[$attr->third_spec_id]} 件起");
- }
- }
- }
- /**
- * @param $params
- * @return array|void
- * @throws \Exception
- */
- public function validBuyNum($params)
- {
- $return = [
- 'status' => true,
- 'msg' => 'success'
- ];
- $attrs = $params['attrs'] ?? [];
- if(empty($attrs)) return $return;
- try {
- $goods = [];
- foreach ($attrs as $attr_id => $num) {
- $attr = QiShangTongGoodsAttr::findOne(['goods_attr_id' => $attr_id]);
- if (!empty($attr)) {
- // 判断件数
- $qGoods = QiShangTongGoods::findOne(['goods_id' => $attr->goods_id]);
- if (!empty($qGoods)) {
- if (empty($qGoods->can_sale) ||
- (!empty($qGoods->content['goods']['can_sale']) && $qGoods->content['goods']['can_sale'] != 1))
- throw new \Exception("当前商品不可售");
- $specs = array_column($qGoods->content['goods']['spec'], 'qidingliang', 'spec_id');
- if ($specs[$attr->third_spec_id] > $num) throw new \Exception("起订量 {$specs[$attr->third_spec_id]} 件起");
- $tGoods = new OrderConfirmGoodsItemModel();
- $tGoods->goods_id = $attr->third_goods_id;
- $tGoods->spec_id = $attr->third_spec_id;
- $tGoods->num = $num;
- $goods[] = $tGoods;
- }
- }
- }
- if (!empty($goods)) {
- // 企商通预览订单
- $addr = UserAddress::getUserAddress($params['user_id'], $params['address_id'] ?? 0);
- if (!empty($addr)) {
- $is_d = true;
- $region = QiShangTongRegion::findOne(['local_id' => $addr['district_id']]);
- if (empty($region)) {
- $is_d = false;
- $region = QiShangTongRegion::findOne(['local_id' => $addr['city_id']]);
- }
- $contentModel = new OrderConfirmModel();
- $contentModel->phone_mob = $addr['mobile'];
- $contentModel->region_name = "{$addr['province']}{$addr['city']}{$addr['district']}";
- $contentModel->address = $addr['detail'];
- $contentModel->province = $region->province_id; // ID要相通
- $contentModel->city = $region->city_id; // 直辖市可以传0,但是 区县/省市不能传0
- $contentModel->area = $is_d ? $region->id : $region->district_id;
- $contentModel->consignee = $addr['name'];
- $contentModel->details = $goods;
- // 商品信息
- $res = RequestHelper::send(new OrderConfirmRequest(), $contentModel, $params['mall_id']);
- if (is_string($res)) throw new \Exception($res);
- $return['extra'][$attr->goods_id]['shipping_fee'] = $res['shipping_fee'];
- }
- }
- } catch (\Exception $e) {
- $return = [
- 'status' => false,
- 'msg' => $e->getMessage()
- ];
- }
- return $return;
- }
- }
|