| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?php
- namespace addons\DepositPresale\common\logic\order\purchase;
- use addons\DepositPresale\common\models\DepositPresaleOrder;
- use common\enums\AppEnum;
- use common\enums\StatusEnum;
- use addons\DepositPresale\common\logic\order\OrderFormLogic;
- use common\models\mall\Mall;
- use common\models\user\UserAddress;
- use common\traits\ErrorTrait;
- use Exception;
- use yii\helpers\Json;
- // 支付方式接口
- abstract class BasePurchase extends \common\logic\order\purchase\BasePurchase
- {
- /**
- * @desc:
- * @Author: hua
- * @Date: 2021/12/15
- * @Time: 9:56
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $form
- * @return mixed
- */
- abstract public function execute($form);
- /**
- * 获取下单类型
- * @Author bing
- * @DateTime 2021-09-23 09:48:45
- * @return string
- * @copyright: Copyright (c) 2020 广东七件事集团
- */
- abstract public static function getType(): string;
- public function afterExecute($form, string $type)
- {
- try {
- // 重组默认商品信息
- $order_goods = $form['order_goods'];
- $group_order_goods = [];
- $data = is_array($form->data) ? $form->data : Json::decode($form->data, true);
- if (empty($data['open_group_id'])) {
- $commander_id = $form->user_id;
- $is_commander = 1;
- } else {
- $group_order = DepositPresaleOrder::findOne(['id' => $data['open_group_id']]);
- if ($group_order->commander_id == $form->user_id) throw new \Exception('团长和团员不能是同一个人');
- $commander_id = $group_order->commander_id;
- $is_commander = 0;
- }
- // 产品按照商户重新归类组别
- $mall_id_arr = array_column($order_goods, 'mall_id');
- $mall_list = Mall::lists(['where' => [['id' => $mall_id_arr]], 'select' => 'id,name'], true);
- $mall_arr = array_column($mall_list, 'name', 'id');
- $sku = $form['sku'];
- foreach ($order_goods as $item) {
- if (!isset($group_order_goods[$item['mch_id']])) {
- $group_order_goods[$item['mch_id']]['mch_order_info']['mch_id'] = $item['mch_id'];
- if ($item['mch_id'] == 0) {
- // 平台
- if (empty($mall_arr[$item['mall_id']])) throw new Exception('商城不存在');
- $group_order_goods[$item['mch_id']]['mch_order_info']['mch_name'] = $mall_arr[$item['mall_id']];
- } else {
- // 查询商户信息
- }
- // 主订单信息
- $group_order_goods[$item['mch_id']]['mch_order_info']['commander_id'] = $commander_id;
- $group_order_goods[$item['mch_id']]['mch_order_info']['is_commander'] = $is_commander;
- $group_order_goods[$item['mch_id']]['mch_order_info']['deposit_presale_active_id'] = $data['active_id'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['goods_id'] = $item['goods_id'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['goods_attr_id'] = $item['goods_attr_id'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['open_group_id'] = $data['open_group_id'] ?? 0;
- $group_order_goods[$item['mch_id']]['mch_order_info']['user_id'] = $item['user_id'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['mall_id'] = $item['mall_id'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['price'] = $item['price'];
- // $group_order_goods[$item['mch_id']]['mch_order_info']['deposit_presale_price'] = $item['goods_price'];
- $single_deposit_presale_price = isset($sku[$item['goods_id']]) ? $sku[$item['goods_id']]['deposit_presale_price'] : 0;
- $single_deposit_price = isset($sku[$item['goods_id']]) ? $sku[$item['goods_id']]['deposit_price'] : 0;
- $group_order_goods[$item['mch_id']]['mch_order_info']['deposit_presale_price'] = bcmul($single_deposit_presale_price, $item['num'], 2);
- $group_order_goods[$item['mch_id']]['mch_order_info']['deposit_price'] = bcmul($single_deposit_price, $item['num'], 2);
- $group_order_goods[$item['mch_id']]['mch_order_info']['final_payment'] = bcsub($group_order_goods[$item['mch_id']]['mch_order_info']['deposit_presale_price'], $group_order_goods[$item['mch_id']]['mch_order_info']['deposit_price'], 2);
- $group_order_goods[$item['mch_id']]['mch_order_info']['deposit_start_at'] = isset($sku[$item['goods_id']]) ? date('Y-m-d', $sku[$item['goods_id']]['depositPresaleActive']['deposit_start_at']) : '';
- $group_order_goods[$item['mch_id']]['mch_order_info']['final_payment_start_at'] = isset($sku[$item['goods_id']]) ? date('Y-m-d', $sku[$item['goods_id']]['depositPresaleActive']['final_payment_start_at']) : '';
- $group_order_goods[$item['mch_id']]['mch_order_info']['address_id'] = 0;
- $group_order_goods[$item['mch_id']]['mch_order_info']['remark'] = $data['remark'][$item['mch_id']] ?? '';
- $group_order_goods[$item['mch_id']]['mch_order_info']['original_goods_price'] = $item['original_goods_price'] ?? 0;
- $group_order_goods[$item['mch_id']]['mch_order_info']['goods_price'] = $item['goods_price'];
- // $group_order_goods[$item['mch_id']]['mch_order_info']['pay_money'] = $item['goods_price'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['pay_money'] = bcmul($single_deposit_price, $item['num'], 2);
- $group_order_goods[$item['mch_id']]['mch_order_info']['total_price'] = bcmul($item['goods_price'], $item['num'], 2);
- $group_order_goods[$item['mch_id']]['mch_order_info']['total_pay_price'] = bcmul($item['goods_price'], $item['num'], 2);
- $group_order_goods[$item['mch_id']]['mch_order_info']['num'] = $item['num'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['goods_name'] = $item['goods_name'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['goods_attr_name'] = $item['goods_attr_name'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['pic_url'] = $item['pic_url'];
- }
- if (!isset($group_order_goods[$item['mch_id']]['goods'][$item['goods_id']])) {
- $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_id'] = $item['goods_id'];
- $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_price'] = 0;
- $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['num'] = 0;
- $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_name'] = $item['goods_name'];
- $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_details'] = [];
- }
- $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_price'] += $item['goods_price'];
- // $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['original_goods_price'] += ($item['original_goods_price'] ?? 0);
- $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['num'] += $item['num'];
- $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_details'][] = $item;
- }
- // 写入组别
- $form['group_order_goods'] = $group_order_goods;
- $form['address_id'] = $data['address_id'];
- return $form;
- } catch (Exception $e) {
- $this->setError($e->getMessage());
- return false;
- }
- }
- }
|