vr-shopxo-source/app/index/controller/Buy.php

236 lines
8.0 KiB
PHP
Raw Normal View History

2018-12-28 10:58:37 +00:00
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
2021-03-16 02:34:52 +00:00
// | Copyright (c) 2011~2099 http://shopxo.net All rights reserved.
2018-12-28 10:58:37 +00:00
// +----------------------------------------------------------------------
2021-03-16 02:34:52 +00:00
// | Licensed ( https://opensource.org/licenses/mit-license.php )
2018-12-28 10:58:37 +00:00
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\index\controller;
2025-09-23 13:22:38 +00:00
use app\index\controller\Common;
use app\service\ApiService;
2021-04-11 07:51:06 +00:00
use app\service\SystemBaseService;
use app\service\GoodsService;
use app\service\UserService;
use app\service\UserAddressService;
use app\service\PaymentService;
use app\service\BuyService;
2024-12-25 09:35:54 +00:00
use app\service\ResourcesService;
2021-02-15 14:45:33 +00:00
use app\service\SeoService;
2018-12-28 10:58:37 +00:00
/**
* 购买
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class Buy extends Common
{
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-11-30
* @desc description
*/
public function __construct()
{
parent::__construct();
// 是否登录
2024-04-25 06:47:59 +00:00
IsUserLogin();
2018-12-28 10:58:37 +00:00
}
/**
* 订单确认页
2018-12-28 10:58:37 +00:00
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-02-22T16:50:32+0800
*/
public function Index()
{
2020-07-18 15:24:31 +00:00
if($this->data_post)
2018-12-28 10:58:37 +00:00
{
2025-03-03 09:49:22 +00:00
BuyService::BuyDataStorage($this->user['id'], $this->data_post);
2021-07-18 15:42:10 +00:00
return MyRedirect(MyUrl('index/buy/index'));
2018-12-28 10:58:37 +00:00
} else {
2019-11-13 12:51:43 +00:00
// 站点类型,是否开启了展示型
2025-03-03 09:49:22 +00:00
if(SystemBaseService::SiteTypeValue() == 4)
2019-11-13 12:51:43 +00:00
{
2024-12-25 09:35:54 +00:00
return MyView('public/tips_error', ['msg'=>MyLang('buy.exhibition_not_allow_submit_tips')]);
2019-11-13 12:51:43 +00:00
}
// 获取下单信息
2025-03-03 09:49:22 +00:00
$buy_data = BuyService::BuyDataRead($this->user['id']);
2022-12-16 06:11:14 +00:00
if(empty($buy_data) || (empty($buy_data['goods_data']) && empty($buy_data['ids'])))
2019-11-13 12:51:43 +00:00
{
2024-12-25 09:35:54 +00:00
return MyView('public/tips_error', ['msg'=>MyLang('goods_data_empty_tips')]);
2019-11-13 12:51:43 +00:00
}
// 参数
$params = array_merge($this->data_request, $buy_data);
2018-12-28 10:58:37 +00:00
$params['user'] = $this->user;
// 默认支付方式
$params['payment_id'] = PaymentService::BuyDefaultPayment($params);
// 订单初始化
$ret = BuyService::BuyOrderInit($params);
2022-04-24 09:27:20 +00:00
if(isset($ret['code']) && $ret['code'] == 0)
2018-12-28 10:58:37 +00:00
{
// 订单是否已提交、则直接进入订单支付
if(isset($ret['data']['is_order_submit']) && $ret['data']['is_order_submit'] == 1)
{
return MyRedirect($ret['data']['jump_url']);
}
// 基础信息
2022-04-24 09:27:20 +00:00
$buy_base = $ret['data']['base'];
$buy_goods = $ret['data']['goods'];
2020-07-19 14:40:12 +00:00
2025-03-03 09:49:22 +00:00
// 下单类型数据
$buy_site_model_data = ResourcesService::BuySiteModelData($buy_base['common_site_type'], $buy_base['site_model'], $buy_goods, $params);
$buy_base['site_model'] = $buy_site_model_data['site_model'];
// 模板数据
$assign = [
2024-12-25 09:35:54 +00:00
'base' => $buy_base,
'buy_goods' => $buy_goods,
'buy_data' => $buy_data,
// 浏览器名称
2024-12-25 09:35:54 +00:00
'home_seo_site_title' => SeoService::BrowserSeoTitle(MyLang('buy.base_nav_title'), 1),
// 公共销售模式
2024-12-25 09:35:54 +00:00
'common_site_type' => $buy_base['common_site_type'],
// 支付方式
2024-12-25 09:35:54 +00:00
'payment_list' => PaymentService::BuyPaymentList(['is_enable'=>1, 'is_open_user'=>1]),
2023-01-19 09:44:03 +00:00
// 下单类型模式
2025-03-03 09:49:22 +00:00
'buy_site_model_list' => $buy_site_model_data['data'],
];
2025-03-03 09:49:22 +00:00
// 同城、自提模式
if(in_array($buy_base['site_model'], [1,2]))
2024-12-25 09:35:54 +00:00
{
// 指定时间
$assign['buy_datetime_info'] = ResourcesService::BuyDatetimeData($params);
2025-03-03 09:49:22 +00:00
2024-12-25 09:35:54 +00:00
// 客户联系信息
2025-03-03 09:49:22 +00:00
if($buy_base['site_model'] == 2)
{
$assign['buy_extraction_contact_info'] = ResourcesService::BuyExtractionContactData($params);
}
2024-12-25 09:35:54 +00:00
}
2018-12-28 10:58:37 +00:00
// 用户地址
$address = UserAddressService::UserAddressList(['user'=>$this->user]);
$assign['user_address_list'] = $address['data'];
2019-11-19 13:46:22 +00:00
// 地址选中处理
// 防止选中id不存在地址列表中
// 如果默认没有则表示不存在地址列表中
if(isset($params['address_id']) && empty($buy_base['address']))
2019-11-19 13:46:22 +00:00
{
unset($params['address_id']);
}
$assign['params'] = $params;
2019-08-13 13:02:07 +00:00
// 数据赋值
MyViewAssign($assign);
2019-08-13 13:02:07 +00:00
// 钩子
2022-04-24 09:27:20 +00:00
$this->PluginsHook($ret['data'], $params);
2021-07-18 15:42:10 +00:00
return MyView();
2018-12-28 10:58:37 +00:00
}
2024-12-25 09:35:54 +00:00
return MyView('public/tips_error', ['msg'=>isset($ret['msg']) ? $ret['msg'] : MyLang('params_error_tips')]);
2018-12-28 10:58:37 +00:00
}
}
2019-08-13 11:38:13 +00:00
/**
* 钩子处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-08-13
* @desc description
2019-08-13 13:02:07 +00:00
* @param [array] $data [确认数据]
2019-08-13 11:38:13 +00:00
* @param [array] $params [输入参数]
*/
2019-08-13 13:02:07 +00:00
private function PluginsHook($data = [], $params = [])
2019-08-13 11:38:13 +00:00
{
2021-01-10 05:18:35 +00:00
$hook_arr = [
// 订单确认页面顶部钩子
'plugins_view_buy_top',
2019-08-13 11:38:13 +00:00
2021-01-10 05:18:35 +00:00
// 订单确认页面内部顶部钩子
'plugins_view_buy_inside_top',
2019-08-13 11:38:13 +00:00
2021-01-10 05:18:35 +00:00
// 订单确认页面地址底部钩子
'plugins_view_buy_address_bottom',
2019-08-13 11:38:13 +00:00
2021-01-10 05:18:35 +00:00
// 订单确认页面支付方式底部钩子
'plugins_view_buy_payment_bottom',
2019-08-13 11:38:13 +00:00
2021-01-10 05:18:35 +00:00
// 订单确认页面分组商品底部钩子
'plugins_view_buy_group_goods_bottom',
2019-08-13 11:38:13 +00:00
2021-01-10 05:18:35 +00:00
// 订单确认页面用户留言底部钩子
'plugins_view_buy_user_note_bottom',
2019-08-13 11:38:13 +00:00
2021-01-10 05:18:35 +00:00
// 订单确认页面订单确认信息顶部钩子
'plugins_view_buy_base_confirm_top',
2019-08-13 11:38:13 +00:00
2021-01-10 05:18:35 +00:00
// 订单确认页面提交订单表单内部钩子
'plugins_view_buy_form_inside',
2019-08-13 11:38:13 +00:00
2021-01-10 05:18:35 +00:00
// 订单确认页面内部底部钩子
'plugins_view_buy_inside_bottom',
2019-08-13 11:38:13 +00:00
2021-01-10 05:18:35 +00:00
// 订单确认页面底部钩子
'plugins_view_buy_bottom',
];
$assign = [];
2021-01-10 05:18:35 +00:00
foreach($hook_arr as $hook_name)
{
$assign[$hook_name.'_data'] = MyEventTrigger($hook_name,
2021-01-10 05:18:35 +00:00
[
'hook_name' => $hook_name,
'is_backend' => false,
'data' => $data,
'params' => $params,
]);
2021-01-10 05:18:35 +00:00
}
MyViewAssign($assign);
2019-08-13 11:38:13 +00:00
}
2018-12-28 10:58:37 +00:00
/**
* 订单添加
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-25
* @desc description
*/
public function Add()
{
2023-08-27 08:59:15 +00:00
$params = $this->data_request;
if(!empty($params))
2018-12-28 10:58:37 +00:00
{
$params['user'] = $this->user;
2024-04-15 02:25:01 +00:00
$params['creator'] = $this->user['id'];
$params['creator_name'] = $this->user['username'];
2024-12-25 09:35:54 +00:00
$ret = ApiService::ApiDataReturn(BuyService::OrderInsert($params));
if(IS_AJAX)
{
return $ret;
} else {
return MyRedirect($ret['data']['jump_url']);
}
2018-12-28 10:58:37 +00:00
}
2024-12-25 09:35:54 +00:00
return MyView('public/tips_error', ['msg'=>MyLang('illegal_access_tips')]);
2018-12-28 10:58:37 +00:00
}
}
?>