| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- <?php
- namespace addons\Sudoku\common\logic\order\purchase;
- use addons\GroupBuy\common\models\GroupBuyOrder;
- use addons\Sudoku\common\enums\SudokuEnum;
- use common\enums\AppEnum;
- use common\enums\StatusEnum;
- use addons\Sudoku\common\logic\order\OrderFormLogic;
- use common\helpers\ArrayHelper;
- use common\models\mall\Mall;
- use common\models\user\UserAddress;
- use common\traits\ErrorTrait;
- use Exception;
- use yii\helpers\Json;
- // 支付方式接口
- abstract class BasePurchase
- {
- use ErrorTrait;
- public $isNewRecord = false; // 是否是新增操作
- /**
- * @desc:
- * @Author: hua
- * @Date: 2021/12/15
- * @Time: 9:56
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param OrderFormLogic $form
- * @return mixed
- */
- abstract public function execute(OrderFormLogic $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(OrderFormLogic $form, string $type){
- try{
- // 重组默认商品信息
- $default_goods = ArrayHelper::arrayKey($form['default_goods'], 'id');
- $order_goods = $form['order_goods'];
- $group_order_goods = [];
- $mch_order = [];
- $data = is_array($form->data)?$form->data:Json::decode($form->data,true);
- // 产品按照商户重新归类组别
- 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){
- // 平台
- $mall = Mall::getOne([['id'=>$item['mall_id']]],true,[],false,'name');
- if(empty($mall)) throw new Exception('商城不存在');
- $group_order_goods[$item['mch_id']]['mch_order_info']['mch_name'] = $mall['name'];
- }else{
- // 查询商户信息
- }
- // 主订单信息
- $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']['address_id'] = $form->address_id;
- $group_order_goods[$item['mch_id']]['mch_order_info']['province'] = $form->address_default['province_id'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['city'] = $form->address_default['city_id'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['area'] = $form->address_default['district_id'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['mobile'] = $form->address_default['mobile'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['receiver_name'] = $form->address_default['name'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['address'] = $form->address_default['detail'];
- $region_name = $form->address_default['province'].' '.$form->address_default['city'].' '.$form->address_default['district'].' '.$form->address_default['town'].' '.$form->address_default['detail'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['region_name'] = $region_name;
- $group_order_goods[$item['mch_id']]['mch_order_info']['remark'] = $form->remark?$form->remark:" ";
- $group_order_goods[$item['mch_id']]['mch_order_info']['original_goods_price'] = $item['original_goods_price'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['goods_price'] = $item['goods_price'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['shipping_money'] = $item['shipping_money'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['pay_money'] = $item['goods_price'];
- $group_order_goods[$item['mch_id']]['mch_order_info']['marketing_type'] = SudokuEnum::ADDONS_NAME;
- $group_order_goods[$item['mch_id']]['mch_order_info']['marketing_id'] = $form->id;
- }else{
- $group_order_goods[$item['mch_id']]['mch_order_info']['original_goods_price'] += $item['original_goods_price'];
- $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'];
- }
- 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'];
- $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'] = $form->address_id;
- return $form;
- }catch(Exception $e){
- $this->setError($e->getMessage());
- return false;
- }
- }
- /**
- * @desc:校验收货地址
- * @Author: hua
- * @Date: 2021/11/23
- * @Time: 10:49
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $action
- * @param $data
- * @param $user_id
- * @throws Exception
- */
- public function checkAddress($action, $data, $user_id)
- {
- if ($action == AppEnum::ACTION_CREATE) {
- if (empty($data['address_id'])) throw new Exception('收货地址不能为空');
- $res = UserAddress::findOne(['id' => $data['address_id'], 'status' => StatusEnum::ENABLED, 'user_id' => $user_id]);
- if (empty($res)) throw new Exception('收货地址无效');
- }
- }
- }
|