mirror of
https://gitee.com/zongzhige/shopxo.git
synced 2026-07-06 21:45:47 +08:00
v6.6.0
This commit is contained in:
@ -526,16 +526,24 @@ class Common extends BaseController
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2016-12-20T19:18:29+0800
|
||||
* @param [string] $controller [控制器(默认读取当前)]
|
||||
* @param [string] $action [方法(默认读取当前)]
|
||||
* @param [array] $unwanted_power [不校验权限的方法(默认空)]
|
||||
*/
|
||||
protected function IsPower()
|
||||
protected function IsPower($controller = null, $action = null, $unwanted_power = [])
|
||||
{
|
||||
// 不需要校验权限的方法
|
||||
$unwanted_power = ['getnodeson', 'node'];
|
||||
if(!AdminIsPower(null, null, $unwanted_power))
|
||||
if(empty($unwanted_power))
|
||||
{
|
||||
$unwanted_power = ['getnodeson', 'node'];
|
||||
}
|
||||
if(!AdminIsPower($controller, $action, $unwanted_power))
|
||||
{
|
||||
$msg = MyLang('no_power_tips');
|
||||
if(IS_AJAX)
|
||||
{
|
||||
// 结束并设置响应头
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
exit(json_encode(DataReturn($msg, -1000)));
|
||||
} else {
|
||||
MyRedirect(MyUrl('admin/error/tips', ['msg'=>urlencode(base64_encode($msg))]), true);
|
||||
|
||||
@ -460,6 +460,32 @@ class DiyApi extends Base
|
||||
return ApiService::ApiDataReturn(DiyApiService::UserHeadData($this->data_request));
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品收藏自动数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2024-07-18
|
||||
* @desc description
|
||||
*/
|
||||
public function GoodsFavorAutoData()
|
||||
{
|
||||
return ApiService::ApiDataReturn(DiyApiService::GoodsFavorAutoData($this->data_request));
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品浏览自动数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2024-07-18
|
||||
* @desc description
|
||||
*/
|
||||
public function GoodsBrowseAutoData()
|
||||
{
|
||||
return ApiService::ApiDataReturn(DiyApiService::GoodsBrowseAutoData($this->data_request));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义初始化
|
||||
* @author Devil
|
||||
@ -472,5 +498,18 @@ class DiyApi extends Base
|
||||
{
|
||||
return ApiService::ApiDataReturn(DiyApiService::CustomInit($this->data_request));
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品魔方初始化
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2024-07-18
|
||||
* @desc description
|
||||
*/
|
||||
public function GoodsMagicInit()
|
||||
{
|
||||
return ApiService::ApiDataReturn(DiyApiService::GoodsMagicInit($this->data_request));
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -48,16 +48,14 @@ class GoodsParamsTemplate extends Base
|
||||
*/
|
||||
public function Detail()
|
||||
{
|
||||
// 模板数据
|
||||
$assign = [
|
||||
MyViewAssign([
|
||||
// 商品参数类型
|
||||
'common_goods_parameters_type_list' => MyConst('common_goods_parameters_type_list'),
|
||||
// 数据
|
||||
'data' => $this->data_detail,
|
||||
// 参数配置
|
||||
'parameters' => empty($this->data_detail['config_data']) ? [] : $this->data_detail['config_data'],
|
||||
];
|
||||
MyViewAssign($assign);
|
||||
]);
|
||||
return MyView();
|
||||
}
|
||||
|
||||
@ -133,7 +131,6 @@ class GoodsParamsTemplate extends Base
|
||||
public function Delete()
|
||||
{
|
||||
$params = $this->data_request;
|
||||
$params['user_type'] = 'admin';
|
||||
return ApiService::ApiDataReturn(GoodsParamsService::GoodsParamsTemplateDelete($params));
|
||||
}
|
||||
|
||||
|
||||
@ -119,7 +119,6 @@ class GoodsSpecTemplate extends Base
|
||||
public function Delete()
|
||||
{
|
||||
$params = $this->data_request;
|
||||
$params['user_type'] = 'admin';
|
||||
return ApiService::ApiDataReturn(GoodsSpecService::GoodsSpecTemplateDelete($params));
|
||||
}
|
||||
|
||||
|
||||
@ -101,7 +101,7 @@ class Index extends Common
|
||||
// 用户是否有数据统计权限
|
||||
$is_stats = AdminIsPower('index', 'stats');
|
||||
MyViewAssign('is_stats', $is_stats);
|
||||
if($is_stats == 1)
|
||||
if($is_stats)
|
||||
{
|
||||
// 默认时间
|
||||
$default_day = '30-day';
|
||||
|
||||
@ -12,6 +12,7 @@ namespace app\admin\controller;
|
||||
|
||||
use app\admin\controller\Base;
|
||||
use app\service\ApiService;
|
||||
use app\service\SystemBaseService;
|
||||
use app\service\RegionService;
|
||||
|
||||
/**
|
||||
@ -107,7 +108,7 @@ class Region extends Base
|
||||
['pid', '=', $pid],
|
||||
],
|
||||
];
|
||||
return ApiService::ApiDataReturn(DataReturn('success', 0, RegionService::RegionNode($params)));
|
||||
return ApiService::ApiDataReturn(SystemBaseService::DataReturn(RegionService::RegionNode($params)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -235,6 +235,7 @@ class Site extends Base
|
||||
$field_list[] = 'home_site_logo_wap';
|
||||
$field_list[] = 'home_site_logo_app';
|
||||
$field_list[] = 'home_site_logo_square';
|
||||
$field_list[] = 'home_site_title_icon';
|
||||
$field_list[] = 'home_site_app_state';
|
||||
break;
|
||||
|
||||
|
||||
@ -48,6 +48,22 @@ class Ueditor extends Common
|
||||
*/
|
||||
public function Index()
|
||||
{
|
||||
$action = empty($this->data_request['action']) ? 'config' : $this->data_request['action'];
|
||||
switch($action)
|
||||
{
|
||||
// 删除操作
|
||||
case 'deletefile' :
|
||||
$this->IsPower('attachment', 'delete');
|
||||
break;
|
||||
|
||||
// 验证上传权限(初始化、列表、上传、分类)
|
||||
default :
|
||||
// 排除配置获取
|
||||
if(!in_array($action, ['config']))
|
||||
{
|
||||
$this->IsPower('attachment', 'upload');
|
||||
}
|
||||
}
|
||||
return ApiService::ApiDataReturn(UeditorService::Run($this->data_request));
|
||||
}
|
||||
}
|
||||
|
||||
@ -98,6 +98,7 @@ class Admin
|
||||
'is_sort' => 1,
|
||||
'search_config' => [
|
||||
'form_type' => 'select',
|
||||
'form_name' => 'status',
|
||||
'where_type' => 'in',
|
||||
'data' => MyConst('common_admin_status_list'),
|
||||
'data_key' => 'value',
|
||||
|
||||
@ -105,6 +105,16 @@ class GoodsBrowse
|
||||
'is_point' => 1,
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => $lang['access_count'],
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'access_count',
|
||||
'is_sort' => 1,
|
||||
'search_config' => [
|
||||
'form_type' => 'section',
|
||||
'form_name' => 'b.access_count',
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => $lang['add_time'],
|
||||
'view_type' => 'field',
|
||||
|
||||
@ -156,10 +156,6 @@ class GoodsParamsTemplate
|
||||
'data' => [
|
||||
'table_name' => 'GoodsParamsTemplate',
|
||||
'data_handle' => 'GoodsParamsService::GoodsParamsTemplateListHandle',
|
||||
'data_params' => [
|
||||
'is_public' => 0,
|
||||
'user_type' => 'admin',
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
@ -157,10 +157,6 @@ class GoodsSpecTemplate
|
||||
'data' => [
|
||||
'table_name' => 'GoodsSpecTemplate',
|
||||
'data_handle' => 'GoodsSpecService::GoodsSpecTemplateListHandle',
|
||||
'data_params' => [
|
||||
'is_public' => 0,
|
||||
'user_type' => 'admin',
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
@ -50,6 +50,17 @@ class Order
|
||||
],
|
||||
// 表单配置
|
||||
'form' => [
|
||||
[
|
||||
'label' => $lang['system_type'],
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'system_type',
|
||||
'params_where_name' => 'system_type_value',
|
||||
'is_copy' => 1,
|
||||
'width' => 130,
|
||||
'search_config' => [
|
||||
'form_type' => 'input',
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => $lang['goods'],
|
||||
'view_type' => 'module',
|
||||
|
||||
@ -75,6 +75,18 @@ class PayLog
|
||||
],
|
||||
// 表单配置
|
||||
'form' => [
|
||||
[
|
||||
'label' => $lang['id'],
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'id',
|
||||
'width' => 110,
|
||||
'is_copy' => 1,
|
||||
'is_sort' => 1,
|
||||
'search_config' => [
|
||||
'form_type' => 'input',
|
||||
'where_type' => '=',
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => $lang['user'],
|
||||
'view_type' => 'module',
|
||||
|
||||
@ -512,6 +512,8 @@ return [
|
||||
'nav_store_theme_name' => '更多主題下載',
|
||||
'nav_theme_download_name' => '查看小程式打包教程',
|
||||
'nav_theme_download_tips' => '手機端主題採用uniapp開發(支持多端小程式、H5、APP)',
|
||||
'nav_appmini_order_list_path_name' => '訂單清單path',
|
||||
'nav_appmini_order_detail_path_name' => '訂單詳情path',
|
||||
'form_alipay_extend_title' => '客服配寘',
|
||||
'form_alipay_extend_tips' => 'PS:如【APP/小程式】中開啟(開啟線上客服),則以下配寘必填[企業編碼]和[聊天窗編碼]',
|
||||
'form_theme_upload_tips' => '上傳一個zip壓縮格式的安裝包',
|
||||
@ -674,6 +676,7 @@ return [
|
||||
'goods_placeholder' => '請輸入商品名稱/簡述/SEO資訊',
|
||||
'price' => '銷售價格',
|
||||
'original_price' => '原價',
|
||||
'access_count' => '流覽量',
|
||||
'add_time' => '創建時間',
|
||||
],
|
||||
],
|
||||
@ -804,6 +807,7 @@ return [
|
||||
'detail_no_payment_tips' => '請注意、該訂單還未支付',
|
||||
// 动态表格
|
||||
'form_table' => [
|
||||
'system_type' => '系統類型',
|
||||
'goods' => '基礎資訊',
|
||||
'goods_placeholder' => '請輸入訂單ID/訂單號/商品名稱/型號',
|
||||
'user' => '用戶資訊',
|
||||
@ -1026,6 +1030,7 @@ return [
|
||||
'pay_request_title' => '支付請求日誌',
|
||||
// 动态表格
|
||||
'form_table' => [
|
||||
'id' => '數據ID',
|
||||
'user' => '用戶資訊',
|
||||
'user_placeholder' => '請輸入用戶名/昵稱/手機/郵箱',
|
||||
'log_no' => '支付單號',
|
||||
@ -1229,6 +1234,7 @@ return [
|
||||
'diy' => [
|
||||
'nav_store_diy_name' => '更多diy範本下載',
|
||||
'nav_apptabbar_name' => '底部選單',
|
||||
'nav_homediy_name' => '首頁DIY',
|
||||
'upload_list_tips' => [
|
||||
'1. 選擇已下載的diy設計zip包',
|
||||
'2. 導入將自動新增一條數據',
|
||||
@ -1603,6 +1609,7 @@ return [
|
||||
'attachmentcategory_index' => '附件分類',
|
||||
'attachmentcategory_save' => '附件分類添加/編輯',
|
||||
'attachmentcategory_statusupdate' => '附件狀態更新',
|
||||
'attachmentcategory_upload' => '附件上傳',
|
||||
'attachmentcategory_delete' => '附件分類删除',
|
||||
]
|
||||
],
|
||||
|
||||
@ -516,6 +516,8 @@ return [
|
||||
'nav_store_theme_name' => 'More topic downloads',
|
||||
'nav_theme_download_name' => 'View the applet packaging tutorial',
|
||||
'nav_theme_download_tips' => 'The mobile theme is developed using Uniapp (supporting multiple mini programs, H5, and APP)',
|
||||
'nav_appmini_order_list_path_name' => 'Order list path',
|
||||
'nav_appmini_order_detail_path_name' => 'Order details path',
|
||||
'form_alipay_extend_title' => 'Customer service configuration',
|
||||
'form_alipay_extend_tips' => 'PS: If [APP/applet] is enabled (online customer service is enabled), the following configuration must be filled in [Enterprise Code] and [Chat Window Code]',
|
||||
'form_theme_upload_tips' => 'Upload a zip compressed installation package',
|
||||
@ -678,6 +680,7 @@ return [
|
||||
'goods_placeholder' => 'Please enter the goods name/brief description/SEO information',
|
||||
'price' => 'Sales Price(yuan)',
|
||||
'original_price' => 'Original Price(yuan))',
|
||||
'access_count' => 'Access count',
|
||||
'add_time' => 'Creation Time',
|
||||
],
|
||||
],
|
||||
@ -822,6 +825,7 @@ return [
|
||||
'detail_no_payment_tips' => 'Please note that the order has not been paid',
|
||||
// 动态表格
|
||||
'form_table' => [
|
||||
'system_type' => 'System type',
|
||||
'goods' => 'Base Info',
|
||||
'goods_placeholder' => 'Please enter order ID/order number/goods name/model',
|
||||
'user' => 'User Info',
|
||||
@ -1044,6 +1048,7 @@ return [
|
||||
'pay_request_title' => 'Payment Request Log',
|
||||
// 动态表格
|
||||
'form_table' => [
|
||||
'id' => 'Data ID',
|
||||
'user' => 'User Info',
|
||||
'user_placeholder' => 'Please enter user name/nickname/mobile phone/email',
|
||||
'log_no' => 'Payment OrderNo',
|
||||
@ -1247,6 +1252,7 @@ return [
|
||||
'diy' => [
|
||||
'nav_store_diy_name' => 'More DIY template downloads',
|
||||
'nav_apptabbar_name' => 'Bottom menu',
|
||||
'nav_homediy_name' => 'Home DIY',
|
||||
'upload_list_tips' => [
|
||||
'1. Select the downloaded DIY design zip file',
|
||||
'2. Importing will automatically add a new piece of data',
|
||||
@ -1621,6 +1627,7 @@ return [
|
||||
'attachmentcategory_index' => 'Annex category',
|
||||
'attachmentcategory_save' => 'Annex category add/edit',
|
||||
'attachmentcategory_statusupdate' => 'Annex status update',
|
||||
'attachmentcategory_upload' => 'Annex upload',
|
||||
'attachmentcategory_delete' => 'Annex category deletion',
|
||||
]
|
||||
],
|
||||
|
||||
@ -512,6 +512,8 @@ return [
|
||||
'nav_store_theme_name' => 'Descarga de más temas',
|
||||
'nav_theme_download_name' => 'Ver el tutorial de embalaje de applets',
|
||||
'nav_theme_download_tips' => 'El tema del teléfono móvil se desarrolla con una aplicación uniapp (admite applets multiterminales, h5, app)',
|
||||
'nav_appmini_order_list_path_name' => 'Ruta de la lista de pedidos',
|
||||
'nav_appmini_order_detail_path_name' => 'Detalles del pedido ruta',
|
||||
'form_alipay_extend_title' => 'Configuración del servicio al cliente',
|
||||
'form_alipay_extend_tips' => 'Ps: si se abre en [app / applet] (se abre el servicio al cliente en línea), se deben rellenar las siguientes configuraciones [código corporativo] y [código de ventana de chat]',
|
||||
'form_theme_upload_tips' => 'Cargar un paquete de instalación en formato zip comprimido',
|
||||
@ -674,6 +676,7 @@ return [
|
||||
'goods_placeholder' => 'Introduzca el nombre del producto / breve descripción / información seo',
|
||||
'price' => 'Precio de venta (yuan)',
|
||||
'original_price' => 'Precio original (yuan)',
|
||||
'access_count' => 'Vistas',
|
||||
'add_time' => 'Tiempo de creación',
|
||||
],
|
||||
],
|
||||
@ -804,6 +807,7 @@ return [
|
||||
'detail_no_payment_tips' => 'Tenga en cuenta que el pedido aún no se ha pagado',
|
||||
// 动态表格
|
||||
'form_table' => [
|
||||
'system_type' => 'Tipo de sistema',
|
||||
'goods' => 'Información básica',
|
||||
'goods_placeholder' => 'Introduzca el id del pedido / número de pedido / nombre del producto / Modelo',
|
||||
'user' => 'Información del usuario',
|
||||
@ -1026,6 +1030,7 @@ return [
|
||||
'pay_request_title' => 'Registro de solicitudes de pago',
|
||||
// 动态表格
|
||||
'form_table' => [
|
||||
'id' => 'ID de datos',
|
||||
'user' => 'Información del usuario',
|
||||
'user_placeholder' => 'Introduzca su nombre de usuario / apodo / teléfono móvil / buzón',
|
||||
'log_no' => 'Número de orden de pago',
|
||||
@ -1229,6 +1234,7 @@ return [
|
||||
'diy' => [
|
||||
'nav_store_diy_name' => 'Más descargas de plantillas DIY',
|
||||
'nav_apptabbar_name' => 'Menú inferior',
|
||||
'nav_homediy_name' => 'Página de inicio DIY',
|
||||
'upload_list_tips' => [
|
||||
'1. Elija el paquete zip de diseño DIY descargado',
|
||||
'2. La importación agregará automáticamente un nuevo dato',
|
||||
@ -1603,6 +1609,7 @@ return [
|
||||
'attachmentcategory_index' => 'Clasificación de los anexos',
|
||||
'attachmentcategory_save' => 'Clasificación de anexos añadir / editar',
|
||||
'attachmentcategory_statusupdate' => 'Actualización del Estado del Anexo',
|
||||
'attachmentcategory_upload' => 'Carga de archivos adjuntos',
|
||||
'attachmentcategory_delete' => 'Eliminación de la clasificación de Anexos',
|
||||
]
|
||||
],
|
||||
|
||||
@ -513,6 +513,8 @@ return [
|
||||
'nav_store_theme_name' => '更多主题下载',
|
||||
'nav_theme_download_name' => '查看小程序打包教程',
|
||||
'nav_theme_download_tips' => '手机端主题采用uniapp开发(支持多端小程序、H5、APP)',
|
||||
'nav_appmini_order_list_path_name' => '订单列表path',
|
||||
'nav_appmini_order_detail_path_name' => '订单详情path',
|
||||
'form_alipay_extend_title' => '客服配置',
|
||||
'form_alipay_extend_tips' => 'PS:如【APP/小程序】中开启(开启在线客服),则以下配置必填 [企业编码] 和 [聊天窗编码]',
|
||||
'form_theme_upload_tips' => '上传一个zip压缩格式的安装包',
|
||||
@ -675,6 +677,7 @@ return [
|
||||
'goods_placeholder' => '请输入商品名称/简述/SEO信息',
|
||||
'price' => '销售价格',
|
||||
'original_price' => '原价',
|
||||
'access_count' => '浏览量',
|
||||
'add_time' => '创建时间',
|
||||
],
|
||||
],
|
||||
@ -805,6 +808,7 @@ return [
|
||||
'detail_no_payment_tips' => '请注意、该订单还未支付',
|
||||
// 动态表格
|
||||
'form_table' => [
|
||||
'system_type' => '系统类型',
|
||||
'goods' => '基础信息',
|
||||
'goods_placeholder' => '请输入订单ID/订单号/商品名称/型号',
|
||||
'user' => '用户信息',
|
||||
@ -1027,6 +1031,7 @@ return [
|
||||
'pay_request_title' => '支付请求日志',
|
||||
// 动态表格
|
||||
'form_table' => [
|
||||
'id' => '数据ID',
|
||||
'user' => '用户信息',
|
||||
'user_placeholder' => '请输入用户名/昵称/手机/邮箱',
|
||||
'log_no' => '支付单号',
|
||||
@ -1230,6 +1235,7 @@ return [
|
||||
'diy' => [
|
||||
'nav_store_diy_name' => '更多diy模板下载',
|
||||
'nav_apptabbar_name' => '底部菜单',
|
||||
'nav_homediy_name' => '首页DIY',
|
||||
'upload_list_tips' => [
|
||||
'1. 选择已下载的diy设计zip包',
|
||||
'2. 导入将自动新增一条数据',
|
||||
@ -1624,6 +1630,7 @@ return [
|
||||
'attachmentcategory_index' => '附件分类',
|
||||
'attachmentcategory_save' => '附件分类添加/编辑',
|
||||
'attachmentcategory_statusupdate' => '附件状态更新',
|
||||
'attachmentcategory_upload' => '附件上传',
|
||||
'attachmentcategory_delete' => '附件分类删除',
|
||||
]
|
||||
],
|
||||
|
||||
@ -138,14 +138,17 @@
|
||||
</div>
|
||||
<div class="am-modal-bd">
|
||||
<div class="base am-form-group input-compose">
|
||||
<input type="text" placeholder="{{:MyLang('form_images_verify_title')}}" minlength="4" maxlength="4" id="verify-img-value" data-validation-message="{{:MyLang('form_images_verify_message')}}" class="am-form-field am-radius" />
|
||||
<input type="text" placeholder="{{:MyLang('form_images_verify_title')}}" minlength="4" maxlength="4" id="verify-img-value" data-is-clearout="0" data-validation-message="{{:MyLang('form_images_verify_message')}}" class="am-form-field am-radius" />
|
||||
<div class="am-input-group-btn verify-img">
|
||||
<img src="" class="am-radius am-cursor-pointer" id="verify-img" onClick="this.src='{{:MyUrl('admin/admin/adminverifyentry')}}&'+Math.random();" />
|
||||
<a href="javascript:;" class="verify-tips" onClick="document.getElementById('verify-img').src='{{:MyUrl('admin/admin/adminverifyentry')}}&'+Math.random();">{{:MyLang('form_images_verify_button_text')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" class="am-btn am-btn-primary am-radius am-btn-xs block m-t-20 btn-loading-example verify-submit-win" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:MyLang('send_tips')}}'}" data-win="1">{{:MyLang('confirm_title')}}</button>
|
||||
<button type="button" class="am-btn am-btn-primary am-radius am-btn-xs block m-t-20 btn-loading-example verify-submit-win" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:MyLang('confirm_title')}}'}" data-win="1">
|
||||
<i class="am-icon-check"></i>
|
||||
<span>{{:MyLang('confirm_title')}}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -142,36 +142,7 @@
|
||||
|
||||
<!-- 首页DIY模板 -->
|
||||
<div class="item" data-key="home-diy-template">
|
||||
<div class="am-operate-stretch-tips">
|
||||
<div class="title">
|
||||
<i class="iconfont icon-tips"></i>
|
||||
<strong title="{{:MyLang('operate_list_tips_msg')}}">{{:MyLang('operate_list_tips_button_text')}}</strong>
|
||||
<i class="iconfont icon-contract contract"></i>
|
||||
</div>
|
||||
<p>{{:MyLang('appconfig.home_diy_template_tips')}}</p>
|
||||
</div>
|
||||
<div class="home-diy-template-list am-margin-bottom-lg">
|
||||
{{foreach $common_platform_type as $v}}
|
||||
{{if !in_array($v['value'], ['pc'])}}
|
||||
<div class="am-flex am-flex-row am-flex-items-center am-gap-1 am-margin-top-sm">
|
||||
<span class="am-text-right">{{$v.name}}</span>
|
||||
<select name="common_app_home_data_diy_mode[{{$v.value}}][diy_id]" class="am-radius chosen-select" data-placeholder="{{:MyLang('optional_tips')}}" data-validation-message="{{:MyLang('site.site_setup_choice_payment_message', ['name'=>$v['name']])}}">
|
||||
<option value="">{{:MyLang('optional_tips')}}</option>
|
||||
{{if !empty($diy_list)}}
|
||||
{{foreach $diy_list as $diy}}
|
||||
<option value="{{$diy.id}}" {{if !empty($data['common_app_home_data_diy_mode']) and !empty($data['common_app_home_data_diy_mode']['value']) and !empty($data['common_app_home_data_diy_mode']['value'][$v['value']]) and !empty($data['common_app_home_data_diy_mode']['value']) and !empty($data['common_app_home_data_diy_mode']['value'][$v['value']]['diy_id']) and $data['common_app_home_data_diy_mode']['value'][$v['value']]['diy_id'] eq $diy['id']}}selected{{/if}}>{{$diy.name}}</option>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</select>
|
||||
<div class="form-multiple-where-input am-margin-left-sm">
|
||||
<input type="text" autocomplete="off" name="common_app_home_data_diy_mode[{{$v.value}}][time_start]" class="Wdate am-radius" placeholder="{{:MyLang('form_time_start_title')}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="{{if !empty($data['common_app_home_data_diy_mode']) and !empty($data['common_app_home_data_diy_mode']['value']) and !empty($data['common_app_home_data_diy_mode']['value'][$v['value']]) and !empty($data['common_app_home_data_diy_mode']['value']) and !empty($data['common_app_home_data_diy_mode']['value'][$v['value']]['time_start'])}}{{$data['common_app_home_data_diy_mode']['value'][$v['value']]['time_start']}}{{/if}}" />
|
||||
<span class="am-text-grey">~</span>
|
||||
<input type="text" autocomplete="off" class="Wdate am-radius" placeholder="{{:MyLang('form_time_end_title')}}" name="common_app_home_data_diy_mode[{{$v.value}}][time_end]" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="{{if !empty($data['common_app_home_data_diy_mode']) and !empty($data['common_app_home_data_diy_mode']['value']) and !empty($data['common_app_home_data_diy_mode']['value'][$v['value']]) and !empty($data['common_app_home_data_diy_mode']['value']) and !empty($data['common_app_home_data_diy_mode']['value'][$v['value']]['time_end'])}}{{$data['common_app_home_data_diy_mode']['value'][$v['value']]['time_end']}}{{/if}}" />
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
</div>
|
||||
{{:ModuleInclude('appconfig/public/home-diy-template')}}
|
||||
</div>
|
||||
|
||||
<!-- 在线客服 -->
|
||||
|
||||
24
app/admin/view/default/appconfig/homediy.html
Normal file
24
app/admin/view/default/appconfig/homediy.html
Normal file
@ -0,0 +1,24 @@
|
||||
{{:ModuleInclude('public/header')}}
|
||||
|
||||
<!-- right content start -->
|
||||
<div class="content-right">
|
||||
<div class="content">
|
||||
<!-- form start -->
|
||||
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/appconfig/save', ['nav_type'=>$nav_type])}}" method="POST" request-type="ajax-close" request-value="parent">
|
||||
{{:ModuleInclude('appconfig/public/home-diy-template')}}
|
||||
<div class="am-form-popup-submit am-text-left">
|
||||
<input type="hidden" name="type" value="{{$nav_type}}" />
|
||||
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
|
||||
<i class="am-icon-save"></i>
|
||||
<span>{{:MyLang('save_title')}}</span>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
<!-- form end -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- right content end -->
|
||||
|
||||
<!-- footer start -->
|
||||
{{:ModuleInclude('public/footer')}}
|
||||
<!-- footer end -->
|
||||
@ -0,0 +1,30 @@
|
||||
<div class="am-operate-stretch-tips">
|
||||
<div class="title">
|
||||
<i class="iconfont icon-tips"></i>
|
||||
<strong title="{{:MyLang('operate_list_tips_msg')}}">{{:MyLang('operate_list_tips_button_text')}}</strong>
|
||||
<i class="iconfont icon-contract contract"></i>
|
||||
</div>
|
||||
<p>{{:MyLang('appconfig.home_diy_template_tips')}}</p>
|
||||
</div>
|
||||
<div class="home-diy-template-list am-margin-bottom-lg">
|
||||
{{foreach $common_platform_type as $v}}
|
||||
{{if !in_array($v['value'], ['pc'])}}
|
||||
<div class="am-flex am-flex-row am-flex-items-center am-gap-1 am-margin-top-sm">
|
||||
<span class="am-text-right">{{$v.name}}</span>
|
||||
<select name="common_app_home_data_diy_mode[{{$v.value}}][diy_id]" class="am-radius chosen-select" data-placeholder="{{:MyLang('optional_tips')}}" data-validation-message="{{:MyLang('site.site_setup_choice_payment_message', ['name'=>$v['name']])}}">
|
||||
<option value="">{{:MyLang('optional_tips')}}</option>
|
||||
{{if !empty($diy_list)}}
|
||||
{{foreach $diy_list as $diy}}
|
||||
<option value="{{$diy.id}}" {{if !empty($data['common_app_home_data_diy_mode']) and !empty($data['common_app_home_data_diy_mode']['value']) and !empty($data['common_app_home_data_diy_mode']['value'][$v['value']]) and !empty($data['common_app_home_data_diy_mode']['value']) and !empty($data['common_app_home_data_diy_mode']['value'][$v['value']]['diy_id']) and $data['common_app_home_data_diy_mode']['value'][$v['value']]['diy_id'] eq $diy['id']}}selected{{/if}}>{{$diy.name}}</option>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</select>
|
||||
<div class="form-multiple-where-input am-margin-left-sm">
|
||||
<input type="text" autocomplete="off" name="common_app_home_data_diy_mode[{{$v.value}}][time_start]" class="Wdate am-radius" placeholder="{{:MyLang('form_time_start_title')}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="{{if !empty($data['common_app_home_data_diy_mode']) and !empty($data['common_app_home_data_diy_mode']['value']) and !empty($data['common_app_home_data_diy_mode']['value'][$v['value']]) and !empty($data['common_app_home_data_diy_mode']['value']) and !empty($data['common_app_home_data_diy_mode']['value'][$v['value']]['time_start'])}}{{$data['common_app_home_data_diy_mode']['value'][$v['value']]['time_start']}}{{/if}}" />
|
||||
<span class="am-text-grey">~</span>
|
||||
<input type="text" autocomplete="off" class="Wdate am-radius" placeholder="{{:MyLang('form_time_end_title')}}" name="common_app_home_data_diy_mode[{{$v.value}}][time_end]" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="{{if !empty($data['common_app_home_data_diy_mode']) and !empty($data['common_app_home_data_diy_mode']['value']) and !empty($data['common_app_home_data_diy_mode']['value'][$v['value']]) and !empty($data['common_app_home_data_diy_mode']['value']) and !empty($data['common_app_home_data_diy_mode']['value'][$v['value']]['time_end'])}}{{$data['common_app_home_data_diy_mode']['value'][$v['value']]['time_end']}}{{/if}}" />
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
</div>
|
||||
@ -4,6 +4,11 @@
|
||||
<div class="content-right">
|
||||
<!-- second nav end -->
|
||||
<div class="content">
|
||||
<!-- 提示 -->
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- 新版本小程序主题提示 -->
|
||||
<div class="am-operate-stretch-tips">
|
||||
<div class="title">
|
||||
@ -18,8 +23,18 @@
|
||||
<span>{{:MyLang('appmini.nav_store_theme_name')}}</span>
|
||||
</a>
|
||||
<p class="am-margin-top-xs">
|
||||
<a href="https://uniapp.shopxo.net/" target="_blank">{{:MyLang('appmini.nav_theme_download_name')}} <i class="am-icon-external-link"></i></a>
|
||||
<a href="https://uniapp.shopxo.net/" target="_blank">{{:MyLang('appmini.nav_theme_download_name')}} >></a>
|
||||
</p>
|
||||
<div class="am-margin-top">
|
||||
<span>{{:MyLang('appmini.nav_appmini_order_list_path_name')}}:</span>
|
||||
<strong class="am-color-blue">pages/paylog-list/paylog-list</strong>
|
||||
<span class="am-badge am-badge-success am-round am-margin-left-xs am-icon-copy text-copy-submit" data-value="pages/paylog-list/paylog-list"> {{:MyLang('copy_title')}}</span>
|
||||
</div>
|
||||
<div class="am-margin-top-xs">
|
||||
<span>{{:MyLang('appmini.nav_appmini_order_detail_path_name')}}:</span>
|
||||
<strong class="am-color-blue">pages/paylog-detail/paylog-detail?orderno=${商品订单号}</strong>
|
||||
<span class="am-badge am-badge-success am-round am-margin-left-xs am-icon-copy text-copy-submit" data-value="pages/paylog-detail/paylog-detail?orderno=${商品订单号}"> {{:MyLang('copy_title')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@ -20,10 +20,17 @@
|
||||
<!-- 底部菜单 -->
|
||||
{{if AdminIsPower('diy', 'apptabbar')}}
|
||||
<button type="button" class="am-btn am-btn-default-plain am-radius am-btn-xs submit-popup" data-offcanvas="right" data-url="{{:MyUrl('admin/diy/saveinfo', ['is_auto_create'=>0])}}#/tabbar" data-title="{{:MyLang('diy.nav_apptabbar_name')}}">
|
||||
<i class="iconfont icon-wechart am-show-sm-only"></i>
|
||||
<i class="iconfont icon-order-list am-show-sm-only"></i>
|
||||
<span>{{:MyLang('diy.nav_apptabbar_name')}}</span>
|
||||
</button>
|
||||
{{/if}}
|
||||
<!-- 首页DIY -->
|
||||
{{if AdminIsPower('appconfig', 'index')}}
|
||||
<button type="button" class="am-btn am-btn-default-plain am-radius am-btn-xs submit-popup" data-offcanvas="right" data-url="{{:MyUrl('admin/appconfig/index', ['type'=>'homediy'])}}" data-title="{{:MyLang('diy.nav_homediy_name')}}">
|
||||
<i class="iconfont icon-tupianmofang am-show-sm-only"></i>
|
||||
<span>{{:MyLang('diy.nav_homediy_name')}}</span>
|
||||
</button>
|
||||
{{/if}}
|
||||
<!-- 父级内容 -->
|
||||
{__block__}
|
||||
{{if $is_system_show_base eq 1 and AdminIsPower('packageinstall', 'index') and !empty($store_diy_url)}}
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
<div class="am-margin-bottom-sm am-text-center">
|
||||
<span class="am-color-grey">{{$v.name}}</span>
|
||||
{{if !empty($v['url'])}}
|
||||
<span class="text-copy-submit am-color-blue am-margin-left-sm" data-value="{{$v.url}}">{{:MyLang('copy_title')}}</span>
|
||||
<span class="text-copy-submit am-color-blue am-margin-left-xs" data-value="{{$v.url}}">{{:MyLang('copy_title')}}</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/foreach}}
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
<td class="am-text-middle">
|
||||
<div class="am-flex am-flex-items-center am-gap-1">
|
||||
<input type="text" value="{{$spec_base.title}}" name="spec_base_title_{{$spec_base_key}}" placeholder="{{:MyLang('common_service.goods.form_spec_type_title')}}" class="am-radius" />
|
||||
<i class="am-close quick-title-remove iconfont icon-delete am-text-red"></i>
|
||||
<i class="am-close quick-title-remove iconfont icon-delete am-text-primary"></i>
|
||||
</div>
|
||||
</td>
|
||||
<td class="spec-quick-td-value am-cf">
|
||||
@ -51,7 +51,7 @@
|
||||
<div class="am-fl value-item">
|
||||
<div class="am-flex am-flex-items-center am-gap-1">
|
||||
<input type="text" class="am-fl am-radius" name="spec_base_value_{{$spec_base_key}}[]" value="{{$value}}" placeholder="{{:MyLang('common_service.goods.form_spec_value_title')}}" />
|
||||
<i class="am-close quick-value-remove iconfont icon-delete am-text-red"></i>
|
||||
<i class="am-close quick-value-remove iconfont icon-delete am-text-primary"></i>
|
||||
</div>
|
||||
</div>
|
||||
{{/foreach}}
|
||||
@ -82,7 +82,7 @@
|
||||
</span>
|
||||
<span class="am-text-warning am-margin-left-sm"></span>
|
||||
</div>
|
||||
<div class="goods-specifications am-padding-top-sm">
|
||||
<div class="goods-specifications">
|
||||
<!-- 规格列表 -->
|
||||
<div class="specifications-container am-scrollable-horizontal">
|
||||
<table class="am-table am-table-bordered am-table-centered specifications-table am-margin-bottom-sm am-table-striped am-table-hover table-thead-beautify am-margin-bottom-0"
|
||||
@ -114,7 +114,7 @@
|
||||
<th class="table-title table-title-{{$type_v.id}}">
|
||||
<div class="am-flex am-am-flex-items-center am-gap-1">
|
||||
<input type="text" name="specifications_name_{{$type_v.id}}" placeholder="{{:MyLang('common_service.goods.form_spec_type_title')}}" value="{{$type_v.name}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_type_message')}}" class="am-radius" data-is-clearout="0" required />
|
||||
<i class="am-close title-nav-remove iconfont icon-delete am-text-red" data-index="{{$type_v.id}}"></i>
|
||||
<i class="am-close title-nav-remove iconfont icon-delete am-text-primary" data-index="{{$type_v.id}}"></i>
|
||||
</div>
|
||||
</th>
|
||||
{{/foreach}}
|
||||
|
||||
@ -111,7 +111,7 @@
|
||||
<!-- save win end -->
|
||||
|
||||
<!-- list start -->
|
||||
<div id="tree" class="am-margin-top-sm" data-head='[{"name":"ID","field":"id"},{"name":"{{:MyLang("name_title")}}","field":"name","is_arrow":"1","value_style":{"style":"color:#999","value_style_key":"is_enable","value_style_key_status":"0"}},{"name":"{{:MyLang("icon_title")}}","field":"icon","type":"img"},{"name":"{{:MyLang("form_is_enable_title")}}","field":"is_enable","type":"status"},{"name":"{{:MyLang("operate_title")}}","type":"operate"}]' data-additional='[{"field":"is_home_recommended", "value":"0", "type":"input"},{"field":"bg_color", "value":"", "type":"input"}, {"field":"bg_color", "value":"", "type":"css", "tag":".colorpicker-submit", "style":"background-color"}, {"field":"icon", "value":"", "type":"input"}, {"field":"icon", "value":"", "type":"annex", "tag":"ul.goods-category-icon-images-view", "style":"src"}, {"field":"icon_active", "value":"", "type":"input"}, {"field":"icon_active", "value":"", "type":"annex", "tag":"ul.goods-category-icon-active-images-view", "style":"src"}, {"field":"realistic_images", "value":"", "type":"input"}, {"field":"realistic_images", "value":"", "type":"annex", "tag":"ul.goods-category-realistic_images-images-view", "style":"src"}, {"field":"big_images", "value":"", "type":"input"}, {"field":"big_images", "value":"", "type":"annex", "tag":"ul.goods-category-big_images-images-view", "style":"src"}]' data-node-url="{{:MyUrl('admin/goodscategory/getnodeson')}}" data-del-url="{{:MyUrl('admin/goodscategory/delete')}}" data-popup-tag="#data-save-win" data-status-url="{{:MyUrl('admin/goodscategory/statusupdate')}}" data-rank="3">
|
||||
<div id="tree" class="am-margin-top-sm" data-head='[{"name":"ID","field":"id"},{"name":"{{:MyLang("name_title")}}","field":"name","is_arrow":"1","value_style":{"style":"color:#999","value_style_key":"is_enable","value_style_key_status":"0"}},{"name":"{{:MyLang("icon_title")}}","field":"icon","type":"img"},{"name":"{{:MyLang("form_is_enable_title")}}","field":"is_enable","type":"status"},{"name":"{{:MyLang("operate_title")}}","type":"operate"}]' data-additional='[{"field":"is_home_recommended", "value":"0", "type":"input"},{"field":"bg_color", "value":"", "type":"input"}, {"field":"bg_color", "value":"", "type":"css", "tag":".colorpicker-submit", "style":"background-color"}, {"field":"icon", "value":"", "type":"input"}, {"field":"icon", "value":"", "type":"annex", "tag":"ul.goods-category-icon-images-view", "style":"src"}, {"field":"icon_active", "value":"", "type":"input"}, {"field":"icon_active", "value":"", "type":"annex", "tag":"ul.goods-category-icon-active-images-view", "style":"src"}, {"field":"realistic_images", "value":"", "type":"input"}, {"field":"realistic_images", "value":"", "type":"annex", "tag":"ul.goods-category-realistic_images-images-view", "style":"src"}, {"field":"big_images", "value":"", "type":"input"}, {"field":"big_images", "value":"", "type":"annex", "tag":"ul.goods-category-big_images-images-view", "style":"src"}]' data-node-url="{{:MyUrl('admin/goodscategory/getnodeson')}}" data-del-url="{{:MyUrl('admin/goodscategory/delete')}}" data-status-url="{{:MyUrl('admin/goodscategory/statusupdate')}}" data-popup-tag="#data-save-win" data-rank="3">
|
||||
{{:ModuleInclude('public/loading')}}
|
||||
</div>
|
||||
<!-- list end -->
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
],
|
||||
[
|
||||
'name' => MyLang('goodsparamstemplate.detail_params_title'),
|
||||
'key' => 'goodsparamstemplate-detail_params_title',
|
||||
'key' => 'config',
|
||||
]
|
||||
]
|
||||
])}}
|
||||
@ -22,7 +22,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 商品参数 -->
|
||||
<div class="item" data-key="goodsparamstemplate-detail_params_title">
|
||||
<div class="item" data-key="config">
|
||||
{{:ModuleInclude('public/goodsparamstemplate/detail')}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
</div>
|
||||
{{:ModuleInclude('lib/is_enable', ['is_row'=>1])}}
|
||||
|
||||
<div class="am-form-group row">
|
||||
<div class="am-form-group row am-padding-bottom-0">
|
||||
<label class="am-block">
|
||||
{{:MyLang('common_service.goodsparamstemplate.form_item_config_title')}}
|
||||
<span class="am-form-group-label-tips-must">*</span>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{{:ModuleInclude('public/header')}}
|
||||
|
||||
<!-- right content start -->
|
||||
<div class="content-right" data-url="{{:MyUrl('admin/index/stats')}}">
|
||||
<div class="content-right" data-url="{{:MyUrl('admin/index/stats')}}" data-is-stats="{{if isset($is_stats) and $is_stats eq true}}1{{else /}}0{{/if}}">
|
||||
<div class="content bg-transparent am-padding-0">
|
||||
<!-- 顶部钩子 -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||
@ -80,7 +80,7 @@
|
||||
{{/if}}
|
||||
|
||||
<!-- 是否展示统计数据 -->
|
||||
{{if isset($is_stats) and $is_stats eq 1}}
|
||||
{{if isset($is_stats) and $is_stats eq true}}
|
||||
<!-- 基础统计内部顶部钩子 -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||
<div class="plugins-tag">
|
||||
@ -113,8 +113,8 @@
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
<div id="shopxo-base-dropdown" class="dropdown-more">
|
||||
<div class="am-dropdown" data-am-dropdown="{justify: '#shopxo-base-dropdown'}">
|
||||
<div id="base-dropdown" class="dropdown-more">
|
||||
<div class="am-dropdown" data-am-dropdown="{justify: '#base-dropdown'}">
|
||||
<a href="javascript:;" class="am-dropdown-toggle more-btn">{{:MyLang('more_title')}} <i class="iconfont icon-angle-down"></i></a>
|
||||
<div class="am-dropdown-content am-radius-lg">
|
||||
<div class="am-flex am-flex-warp am-gap-1">
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
<div class="am-form-popup-submit">
|
||||
<input type="hidden" name="id" value="{{$data.id}}"/>
|
||||
<input type="hidden" name="user_id" value="{{$data.user_id}}"/>
|
||||
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs am-margin-right-lg" data-am-modal-close>
|
||||
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs" data-am-modal-close>
|
||||
<i class="am-icon-paint-brush"></i>
|
||||
<span>{{:MyLang('cancel_title')}}</span>
|
||||
</button>
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<div class="am-form-popup-submit">
|
||||
<input type="hidden" name="id" value="0" />
|
||||
<input type="hidden" name="user_id" value="0" />
|
||||
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs am-margin-right-lg" data-am-modal-close>
|
||||
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs" data-am-modal-close>
|
||||
<i class="am-icon-paint-brush"></i>
|
||||
<span>{{:MyLang('cancel_title')}}</span>
|
||||
</button>
|
||||
@ -76,7 +76,7 @@
|
||||
<div class="am-form-popup-submit">
|
||||
<input type="hidden" name="id" value="0" />
|
||||
<input type="hidden" name="payment_id" value="0" />
|
||||
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs am-margin-right-lg" data-am-modal-close>
|
||||
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs" data-am-modal-close>
|
||||
<i class="am-icon-paint-brush"></i>
|
||||
<span>{{:MyLang('cancel_title')}}</span>
|
||||
</button>
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
<div class="am-form-popup-submit">
|
||||
<input type="hidden" name="id" value="{{$data.id}}"/>
|
||||
<input type="hidden" name="user_id" value="{{$data.user_id}}"/>
|
||||
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs am-margin-right-lg" data-am-modal-close>
|
||||
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs" data-am-modal-close>
|
||||
<i class="am-icon-paint-brush"></i>
|
||||
<span>{{:MyLang('cancel_title')}}</span>
|
||||
</button>
|
||||
|
||||
@ -6,12 +6,12 @@
|
||||
<div class="am-nbfc">
|
||||
{{if !empty($v['business_id'])}}
|
||||
<span class="am-icon-circle-thin">
|
||||
<strong>{{$v.business_id}}</strong>
|
||||
<strong class="text-copy-submit">{{$v.business_id}}</strong>
|
||||
</span>
|
||||
{{/if}}
|
||||
{{if !empty($v['business_no'])}}
|
||||
<span class="am-icon-bookmark-o am-margin-left">
|
||||
<strong>{{$v.business_no}}</strong>
|
||||
<strong class="text-copy-submit">{{$v.business_no}}</strong>
|
||||
</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
@ -304,24 +304,33 @@
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{if $is_system_show_base eq 1}}
|
||||
<div class="am-padding-vertical-xl am-text-center">
|
||||
<a href="{{$store_url}}" target="_blank" class="am-margin-left-xs">{{:MyLang('pluginsadmin.more_plugins_store_to_text')}}</a>
|
||||
{{if AdminIsPower('pluginsadmin', 'upload')}}
|
||||
<div class="am-text-center">
|
||||
<a href="javascript:;" class="submit-popup" data-url="{{:MyUrl('admin/pluginsadmin/index', ['view_type'=>'upload', 'switch_active'=>'market'])}}" data-title="{{:MyLang('pluginsadmin.base_upload_application_name')}}" data-full-max="1" data-full-max-size="xl">{{:MyLang('pluginsadmin.more_plugins_store_to_text')}}</a>
|
||||
</div>
|
||||
{{else /}}
|
||||
{{if $is_system_show_base eq 1}}
|
||||
<div class="am-padding-vertical-xl am-text-center">
|
||||
<a href="{{$store_url}}" target="_blank" class="am-margin-left-xs">{{:MyLang('pluginsadmin.more_plugins_store_to_text')}}</a>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{else /}}
|
||||
{{if $is_not_bind_accounts eq 1}}
|
||||
{{:ModuleInclude('public/store_bind_accounts_tips')}}
|
||||
{{else /}}
|
||||
<div class="table-no">
|
||||
<i class="am-icon-skyatlas am-icon-lg"></i>
|
||||
<p class="am-margin-top-sm">{{:MyLang('plugins_no_data_tips')}}</p>
|
||||
{{:ModuleInclude('public/not_data', ['msg'=>MyLang('plugins_no_data_tips')])}}
|
||||
{{if AdminIsPower('pluginsadmin', 'upload')}}
|
||||
<div class="am-text-center">
|
||||
<a href="javascript:;" class="submit-popup" data-url="{{:MyUrl('admin/pluginsadmin/index', ['view_type'=>'upload', 'switch_active'=>'market'])}}" data-title="{{:MyLang('pluginsadmin.base_upload_application_name')}}" data-full-max="1" data-full-max-size="xl">{{:MyLang('pluginsadmin.no_data_store_to_text')}}</a>
|
||||
</div>
|
||||
{{else /}}
|
||||
{{if $is_system_show_base eq 1}}
|
||||
<div class="am-margin-top-xl">
|
||||
<a href="{{$store_url}}" target="_blank" class="am-margin-left-xs">{{:MyLang('pluginsadmin.no_data_store_to_text')}}</a>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
@ -13,11 +13,12 @@
|
||||
'name' => MyLang('plugins_market_title'),
|
||||
'key' => 'market',
|
||||
],
|
||||
]
|
||||
],
|
||||
'index' => (isset($params['switch_active']) && $params['switch_active'] == 'market') ? 1 : 0,
|
||||
])}}
|
||||
<div class="detail-content-switch-data-item">
|
||||
<!-- 本地导入 -->
|
||||
<div class="item am-ht-auto am-active" data-key="upload">
|
||||
<div class="item am-ht-auto {{if !isset($params['switch_active']) or $params['switch_active'] eq 'upload'}}am-active{{/if}}" data-key="upload">
|
||||
<form class="am-form form-validation am-form-popup-fixed am-upload-file" action="{{:MyUrl('admin/pluginsadmin/upload')}}" method="POST" request-type="ajax-reload" request-value="parent" enctype="multipart/form-data">
|
||||
<div class="am-form-group am-flex-1">
|
||||
<div class="am-form-file">
|
||||
@ -40,7 +41,7 @@
|
||||
</form>
|
||||
</div>
|
||||
<!-- 模板市场 -->
|
||||
<div class="item am-ht-auto" data-key="market">
|
||||
<div class="item am-ht-auto {{if isset($params['switch_active']) and $params['switch_active'] eq 'market'}}am-active{{/if}}" data-key="market">
|
||||
{{:ModuleInclude('public/market/index', [
|
||||
'type' => 'plugins',
|
||||
'back_win_refresh_type' => 'none',
|
||||
|
||||
@ -135,6 +135,7 @@
|
||||
var __my_http__ = '{{$my_http}}';
|
||||
var __my_host__ = '{{$my_host}}';
|
||||
var __my_url__ = '{{$my_url}}';
|
||||
var __my_view_url__ = '{{$my_view_url}}';
|
||||
var __my_public_url__ = '{{$my_public_url}}';
|
||||
var __public__ = '{{$public_host}}';
|
||||
var __default_theme__ = '{{$default_theme}}';
|
||||
|
||||
@ -107,8 +107,7 @@
|
||||
<li>
|
||||
<a href="javascript:;" class="menu-items-{{$vss.key}} menu-item" data-parent-id="{{$vs.id}}" data-parent="{{$v.id}}|{{$vs.id}}"
|
||||
data-type="menu" data-url="{{$vss.url}}" data-key="{{$vss.id}}">
|
||||
<p class="nav-name am-inline-block am-text-break am-text-truncate">{{$vss.name}}
|
||||
</p>
|
||||
<p class="nav-name am-inline-block am-text-break am-text-truncate">{{$vss.name}}</p>
|
||||
</a>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
|
||||
@ -87,14 +87,14 @@
|
||||
</li>
|
||||
|
||||
<!-- 后台公告 -->
|
||||
{{if !empty($base_config['seller_center_notice']) and is_array($base_config['seller_center_notice'])}}
|
||||
{{if !empty($admin_notice)}}
|
||||
<li class="am-dropdown" data-am-dropdown="{trigger: 'hover'}">
|
||||
<a class="am-dropdown-toggle am-flex am-flex-row am-flex-items-center am-gap-12" href="javascript:;">
|
||||
<a href="javascript:;" class="am-dropdown-toggle am-flex am-flex-row am-flex-items-center am-gap-12">
|
||||
<i class="iconfont icon-notice"></i>
|
||||
<span class="am-show-sm-only">{{:MyLang('notice_title')}}</span>
|
||||
</a>
|
||||
<div class="am-dropdown-content am-radius-lg am-color-333 notice-width">
|
||||
<p>{{:implode("<br />", $base_config['seller_center_notice'])}}</p>
|
||||
<p>{{$admin_notice|raw}}</p>
|
||||
</div>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
@ -32,18 +32,18 @@
|
||||
<div class="nav-content">
|
||||
<div class="item am-active" data-key="role-form-item-menu">
|
||||
<div class="am-form-group">
|
||||
<ul class="tree-list am-avg-sm-1 am-avg-md-1 am-avg-lg-1 am-nbfc am-radius-lg">
|
||||
<ul class="tree-list am-nbfc am-radius-lg" data-is-two-check-find="0" data-is-three-check-parent="0">
|
||||
{{if !empty($power['power'])}}
|
||||
{{foreach $power.power as $v}}
|
||||
<li>
|
||||
<div class="item-content am-padding-sm">
|
||||
<label class="am-checkbox-inline">
|
||||
<input type="checkbox" name="power_id" value="{{$v.id}}" class="node-choice" {{if $v['is_power'] eq 'ok'}}checked{{/if}} data-am-ucheck />
|
||||
<input type="checkbox" name="power_id" value="{{$v.id}}" {{if $v['is_power'] eq 'ok'}}checked{{/if}} data-am-ucheck />
|
||||
<span class="{{if $v['is_show'] eq 0}}am-color-999{{/if}}">{{$v.name}}</span>
|
||||
</label>
|
||||
</div>
|
||||
{{if !empty($v['item'])}}
|
||||
<ul class="list-find am-avg-sm-1 am-avg-md-1 am-avg-lg-1">
|
||||
<ul class="list-find">
|
||||
{{foreach $v.item as $vs}}
|
||||
<li class="am-flex am-flex-row am-flex-justify-between am-flex-items-center am-flex-warp">
|
||||
<div class="item-content am-padding-sm">
|
||||
@ -53,7 +53,7 @@
|
||||
</label>
|
||||
</div>
|
||||
{{if !empty($vs['item'])}}
|
||||
<div class="am-padding-sm am-flex am-flex-justify-right am-flex-grow am-flex-items-center am-flex-warp am-gap-1">
|
||||
<div class="list-find-three am-padding-sm am-flex am-flex-justify-right am-flex-grow am-flex-items-center am-flex-warp am-gap-1">
|
||||
{{foreach $vs.item as $vss}}
|
||||
<label class="am-checkbox-inline">
|
||||
<input type="checkbox" name="power_id" value="{{$vss.id}}" {{if $vss['is_power'] eq 'ok'}}checked{{/if}} data-am-ucheck>
|
||||
@ -79,10 +79,10 @@
|
||||
<div class="am-form-group">
|
||||
<div class="tree-plugins am-padding-left-sm am-checkbox-group am-flex am-flex-warp-re am-flex-items-center am-gap-12">
|
||||
<label class="am-checkbox-inline am-text-truncate">
|
||||
<input type="checkbox" name="plugins" value="" class="auth-choice" data-am-ucheck />
|
||||
<input type="checkbox" name="plugins" value="" data-am-ucheck />
|
||||
<span>全选</span>
|
||||
</label>
|
||||
<span>{{:MyLang('common_service.role.form_item_plugins_tips')}}</span>
|
||||
<span class="am-color-red">{{:MyLang('common_service.role.form_item_plugins_tips')}}</span>
|
||||
</div>
|
||||
<ul class="tree-list tree-plugins am-flex am-flex-warp">
|
||||
{{if !empty($power['plugins'])}}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
<!-- right content start -->
|
||||
<div class="content-right">
|
||||
<div class="content bk-am-color-white am-padding-0">
|
||||
<div class="content am-background-white am-padding-0">
|
||||
<!-- form start -->
|
||||
<form class="am-form form-validation am-form-full-screen am-form-popup-sticky" action="{{:MyUrl('admin/shortcutmenu/save')}}" method="POST" request-type="ajax-fun" request-value="ShortCutMenuFormSaveBack" enctype="multipart/form-data">
|
||||
<div class="shortcut-menu-sort am-flex-1 am-flex am-flex-col am-flex-warp am-padding">
|
||||
|
||||
@ -111,6 +111,24 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="am-block">{{$data.home_site_title_icon.name}}<span class="am-form-group-label-tips">{{$data.home_site_title_icon.describe}}</span></label>
|
||||
<div class="am-form-file-upload-container">
|
||||
<ul class="plug-file-upload-view home_site_title_icon-images-view" data-form-name="home_site_title_icon" data-max-number="1" data-dialog-type="images" data-is-eye="1" data-suffix=".ico">
|
||||
<li class="plug-file-upload-submit" data-view-tag="ul.home_site_title_icon-images-view">
|
||||
{{if empty($data['home_site_title_icon']['value'])}}
|
||||
<i class="iconfont icon-upload-add"></i>
|
||||
{{else /}}
|
||||
<input type="text" name="home_site_title_icon" value="{{$data.home_site_title_icon.value}}" />
|
||||
<img src="{{:AttachmentPathViewHandle($data.home_site_title_icon.value)}}" />
|
||||
<i class="iconfont icon-close"></i>
|
||||
<i class="iconfont icon-eye"></i>
|
||||
{{/if}}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.common_timezone.name}}<span class="am-form-group-label-tips">{{$data.common_timezone.describe}}</span></label>
|
||||
<select name="{{$data.common_timezone.only_tag}}" class="am-radius chosen-select" data-placeholder="{{$data.common_timezone.name}}" data-validation-message="{{$data.common_timezone.error_tips}}" required>
|
||||
|
||||
@ -179,16 +179,6 @@
|
||||
{{/foreach}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.home_extraction_address_position.name}}<span class="am-form-group-label-tips">{{$data.home_extraction_address_position.describe}}</span></label>
|
||||
<div class="am-radio-group">
|
||||
{{foreach $common_close_open_list as $v}}
|
||||
<label class="am-radio-inline">
|
||||
<input type="radio" value="{{$v.value}}" name="{{$data.home_extraction_address_position.only_tag}}" data-validation-message="{{$data.home_extraction_address_position.error_tips}}" required {{if isset($data['home_extraction_address_position']['value']) and $data['home_extraction_address_position']['value'] eq $v['value']}}checked{{/if}} data-am-ucheck>{{$v.name}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 多语言 -->
|
||||
|
||||
@ -43,6 +43,44 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.home_extraction_address_position.name}}</label>
|
||||
<div class="am-radio-group">
|
||||
{{foreach $common_close_open_list as $v}}
|
||||
<label class="am-radio-inline">
|
||||
<input type="radio" value="{{$v.value}}" name="{{$data.home_extraction_address_position.only_tag}}" data-validation-message="{{$data.home_extraction_address_position.error_tips}}" required {{if isset($data['home_extraction_address_position']['value']) and $data['home_extraction_address_position']['value'] eq $v['value']}}checked{{/if}} data-am-ucheck>{{$v.name}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
<div class="am-tips-card">
|
||||
<p>{{$data.home_extraction_address_position.describe}}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 下单指定时间 -->
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.common_buy_datetime_info.name}}<span class="am-form-group-label-tips">{{$data.common_buy_datetime_info.describe}}</span></label>
|
||||
<div class="am-checkbox-group">
|
||||
{{foreach $common_buy_datetime_config_list as $v}}
|
||||
<label class="am-checkbox-inline">
|
||||
<input type="checkbox" name="{{$data.common_buy_datetime_info.only_tag}}" value="{{$v.value}}" {{if isset($data['common_buy_datetime_info']['value']) and in_array($v['value'], $data['common_buy_datetime_info']['value'])}}checked{{/if}} data-validation-message="{{$data.common_buy_datetime_info.error_tips}}" data-am-ucheck> {{$v.name}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 下单联系信息 -->
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.common_buy_extraction_contact_info.name}}<span class="am-form-group-label-tips">{{$data.common_buy_extraction_contact_info.describe}}</span></label>
|
||||
<div class="am-checkbox-group">
|
||||
{{foreach $common_buy_extraction_contact_config_list as $v}}
|
||||
<label class="am-checkbox-inline">
|
||||
<input type="checkbox" name="{{$data.common_buy_extraction_contact_info.only_tag}}" value="{{$v.value}}" {{if isset($data['common_buy_extraction_contact_info']['value']) and in_array($v['value'], $data['common_buy_extraction_contact_info']['value'])}}checked{{/if}} data-validation-message="{{$data.common_buy_extraction_contact_info.error_tips}}" data-am-ucheck> {{$v.name}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 库存 -->
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.common_is_deduction_inventory.name}}</label>
|
||||
@ -82,29 +120,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 订单支付 -->
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.home_is_enable_order_bulk_pay.name}}<span class="am-form-group-label-tips">{{$data.home_is_enable_order_bulk_pay.describe}}</span></label>
|
||||
<div class="am-radio-group">
|
||||
{{foreach $common_is_text_list as $v}}
|
||||
<label class="am-radio-inline">
|
||||
<input type="radio" value="{{$v.id}}" name="{{$data.home_is_enable_order_bulk_pay.only_tag}}" data-validation-message="{{$data.home_is_enable_order_bulk_pay.error_tips}}" required {{if isset($data['home_is_enable_order_bulk_pay']['value']) and $data['home_is_enable_order_bulk_pay']['value'] eq $v['id']}}checked{{/if}} data-am-ucheck>{{$v.name}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.common_is_pay_price_must_max_equal.name}}<span class="am-form-group-label-tips">{{$data.common_is_pay_price_must_max_equal.describe}}</span></label>
|
||||
<div class="am-radio-group">
|
||||
{{foreach $common_close_open_list as $v}}
|
||||
<label class="am-radio-inline">
|
||||
<input type="radio" value="{{$v.value}}" name="{{$data.common_is_pay_price_must_max_equal.only_tag}}" data-validation-message="{{$data.common_is_pay_price_must_max_equal.error_tips}}" required {{if isset($data['common_is_pay_price_must_max_equal']['value']) and $data['common_is_pay_price_must_max_equal']['value'] eq $v['value']}}checked{{/if}} data-am-ucheck>{{$v.name}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 线下支付 -->
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.common_is_under_line_order_normal.name}}</label>
|
||||
<div class="am-radio-group">
|
||||
@ -119,7 +134,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 虚拟订单直接提交支付 -->
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.common_fictitious_order_direct_pay.name}}</label>
|
||||
<div class="am-radio-group">
|
||||
@ -134,25 +148,24 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 下单指定时间 -->
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.common_buy_datetime_info.name}}</label>
|
||||
<div class="am-checkbox-group">
|
||||
{{foreach $common_buy_datetime_config_list as $v}}
|
||||
<label class="am-checkbox-inline">
|
||||
<input type="checkbox" name="{{$data.common_buy_datetime_info.only_tag}}" value="{{$v.value}}" {{if isset($data['common_buy_datetime_info']['value']) and in_array($v['value'], $data['common_buy_datetime_info']['value'])}}checked{{/if}} data-validation-message="{{$data.common_buy_datetime_info.error_tips}}" data-am-ucheck> {{$v.name}}
|
||||
<label>{{$data.common_is_pay_price_must_max_equal.name}}<span class="am-form-group-label-tips">{{$data.common_is_pay_price_must_max_equal.describe}}</span></label>
|
||||
<div class="am-radio-group">
|
||||
{{foreach $common_close_open_list as $v}}
|
||||
<label class="am-radio-inline">
|
||||
<input type="radio" value="{{$v.value}}" name="{{$data.common_is_pay_price_must_max_equal.only_tag}}" data-validation-message="{{$data.common_is_pay_price_must_max_equal.error_tips}}" required {{if isset($data['common_is_pay_price_must_max_equal']['value']) and $data['common_is_pay_price_must_max_equal']['value'] eq $v['value']}}checked{{/if}} data-am-ucheck>{{$v.name}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 下单联系信息 -->
|
||||
<!-- 订单支付 -->
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.common_buy_extraction_contact_info.name}}</label>
|
||||
<div class="am-checkbox-group">
|
||||
{{foreach $common_buy_extraction_contact_config_list as $v}}
|
||||
<label class="am-checkbox-inline">
|
||||
<input type="checkbox" name="{{$data.common_buy_extraction_contact_info.only_tag}}" value="{{$v.value}}" {{if isset($data['common_buy_extraction_contact_info']['value']) and in_array($v['value'], $data['common_buy_extraction_contact_info']['value'])}}checked{{/if}} data-validation-message="{{$data.common_buy_extraction_contact_info.error_tips}}" data-am-ucheck> {{$v.name}}
|
||||
<label>{{$data.home_is_enable_order_bulk_pay.name}}<span class="am-form-group-label-tips">{{$data.home_is_enable_order_bulk_pay.describe}}</span></label>
|
||||
<div class="am-radio-group">
|
||||
{{foreach $common_is_text_list as $v}}
|
||||
<label class="am-radio-inline">
|
||||
<input type="radio" value="{{$v.id}}" name="{{$data.home_is_enable_order_bulk_pay.only_tag}}" data-validation-message="{{$data.home_is_enable_order_bulk_pay.error_tips}}" required {{if isset($data['home_is_enable_order_bulk_pay']['value']) and $data['home_is_enable_order_bulk_pay']['value'] eq $v['id']}}checked{{/if}} data-am-ucheck>{{$v.name}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
|
||||
@ -135,11 +135,13 @@
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.home_search_params_type.name}}<span class="am-form-group-label-tips">{{$data.home_search_params_type.describe}}</span></label>
|
||||
<select name="{{$data.home_search_params_type.only_tag}}" multiple="multiple" class="am-radius chosen-select" data-placeholder="{{$data.home_search_params_type.name}}" data-validation-message="{{$data.home_search_params_type.error_tips}}">
|
||||
<div class="am-checkbox-group">
|
||||
{{foreach $common_goods_parameters_type_list as $v}}
|
||||
<option value="{{$v.value}}" {{if isset($data['home_search_params_type']['value']) and in_array($v['value'], $data['home_search_params_type']['value'])}}selected{{/if}}>{{$v.name}}</option>
|
||||
<label class="am-checkbox-inline">
|
||||
<input type="checkbox" value="{{$v.value}}" name="{{$data.home_search_params_type.only_tag}}" data-validation-message="{{$data.home_search_params_type.error_tips}}" {{if isset($data['home_search_params_type']['value']) and in_array($v['value'], $data['home_search_params_type']['value'])}}checked{{/if}} data-am-ucheck>{{$v.name}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label>{{$data.home_search_is_spec.name}}<span class="am-form-group-label-tips">{{$data.home_search_is_spec.describe}}</span></label>
|
||||
|
||||
@ -37,24 +37,29 @@
|
||||
<div class="item am-active" data-key="base-config-title">
|
||||
<!-- 展示型 -->
|
||||
<div class="am-form-group">
|
||||
<label class="am-block">{{$data.common_is_exhibition_mode_btn_text.name}}<span class="am-form-group-label-tips">{{$data.common_is_exhibition_mode_btn_text.describe}}</span></label>
|
||||
<input type="text" name="{{$data.common_is_exhibition_mode_btn_text.only_tag}}" placeholder="{{$data.common_is_exhibition_mode_btn_text.describe}}" data-validation-message="{{$data.common_is_exhibition_mode_btn_text.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_is_exhibition_mode_btn_text.value}}"{{/if}} />
|
||||
<label class="am-block">{{$data.common_is_exhibition_mode_btn_text.name}}</label>
|
||||
<input type="text" name="{{$data.common_is_exhibition_mode_btn_text.only_tag}}" placeholder="{{$data.common_is_exhibition_mode_btn_text.name}}" data-validation-message="{{$data.common_is_exhibition_mode_btn_text.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_is_exhibition_mode_btn_text.value}}"{{/if}} />
|
||||
<div class="am-tips-card">
|
||||
<p>{{$data.common_is_exhibition_mode_btn_text.describe}}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 站点类型 -->
|
||||
<div class="platform-list-value-container">
|
||||
<div class="am-form-group platform-list-value-container">
|
||||
<label class="am-block am-margin-bottom-sm">{{$data.common_site_type.name}}<span class="am-form-group-label-tips">{{$data.common_site_type.describe}}</span></label>
|
||||
<div class="site-type-list">
|
||||
<div class="site-type-list am-flex am-flex-warp am-gap-2 am-margin-top-sm">
|
||||
{{foreach $common_platform_type as $k=>$v}}
|
||||
<div class="am-flex am-flex-row am-flex-items-center am-gap-1 {{if $k gt 0}}am-margin-top-sm{{/if}}">
|
||||
<div class="am-flex am-flex-row am-gap-2">
|
||||
<span class="am-text-right">{{$v.name}}</span>
|
||||
<select name="{{$data.common_site_type.only_tag}}[{{$v.value}}]" class="am-radius chosen-select" data-placeholder="{{:MyLang('optional_tips')}}" data-validation-message="{{:MyLang('site.site_setup_choice_payment_message', ['name'=>$v['name']])}}">
|
||||
{{if !empty($common_site_type_list)}}
|
||||
{{if !empty($common_site_type_list)}}
|
||||
<div class="am-radio-group">
|
||||
{{foreach $common_site_type_list as $site}}
|
||||
<option value="{{$site.value}}" {{if !empty($data['common_site_type']) and !empty($data['common_site_type']['value']) and isset($data['common_site_type']['value'][$v['value']]) and $data['common_site_type']['value'][$v['value']] eq $site['value']}}selected{{/if}}>{{$site.name}}</option>
|
||||
<label class="am-radio-inline">
|
||||
<input type="radio" value="{{$site.value}}" name="{{$data.common_site_type.only_tag}}[{{$v.value}}]" data-validation-message="{{:MyLang('site.site_setup_choice_payment_message', ['name'=>$v['name']])}}" {{if (!empty($data['common_site_type']) and !empty($data['common_site_type']['value']) and isset($data['common_site_type']['value'][$v['value']]) and $data['common_site_type']['value'][$v['value']] eq $site['value']) or ((empty($data['common_site_type']) or empty($data['common_site_type']['value']) or !isset($data['common_site_type']['value'][$v['value']])) and isset($site['checked']) and $site['checked'] eq true)}}checked{{/if}} data-am-ucheck>{{$site.name}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</select>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
@ -105,12 +110,18 @@
|
||||
<!-- 虚拟销售 -->
|
||||
<div class="item" data-key="site-item-fictitious">
|
||||
<div class="am-form-group">
|
||||
<label class="am-block">{{$data.common_site_fictitious_return_title.name}}<span class="am-form-group-label-tips">{{$data.common_site_fictitious_return_title.describe}}</span></label>
|
||||
<input type="text" name="{{$data.common_site_fictitious_return_title.only_tag}}" placeholder="{{$data.common_site_fictitious_return_title.describe}}" data-validation-message="{{$data.common_site_fictitious_return_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_site_fictitious_return_title.value}}"{{/if}} />
|
||||
<label class="am-block">{{$data.common_site_fictitious_return_title.name}}</label>
|
||||
<input type="text" name="{{$data.common_site_fictitious_return_title.only_tag}}" placeholder="{{$data.common_site_fictitious_return_title.name}}" data-validation-message="{{$data.common_site_fictitious_return_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_site_fictitious_return_title.value}}"{{/if}} />
|
||||
<div class="am-tips-card">
|
||||
<p>{{$data.common_site_fictitious_return_title.describe}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="am-block">{{$data.common_site_fictitious_return_tips.name}}<span class="am-form-group-label-tips">{{$data.common_site_fictitious_return_tips.describe}}</span></label>
|
||||
<label class="am-block">{{$data.common_site_fictitious_return_tips.name}}</label>
|
||||
<textarea rows="4" name="{{$data.common_site_fictitious_return_tips.only_tag}}" class="am-radius" placeholder="{{$data.common_site_fictitious_return_tips.name}}" data-validation-message="{{$data.common_site_fictitious_return_tips.error_tips}}">{{if !empty($data)}}{{$data.common_site_fictitious_return_tips.value}}{{/if}}</textarea>
|
||||
<div class="am-tips-card">
|
||||
<p>{{$data.common_site_fictitious_return_tips.describe}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -73,54 +73,56 @@
|
||||
<input name="is_default" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="49" data-am-switch {{if isset($data['is_default']) and $data['is_default'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>{{:MyLang('common_service.useraddress.form_item_idcard_name')}}<a href="javascript:;" class="am-icon-question-circle am-margin-left-xs" data-am-popover="{content: '{{:MyLang('common_service.useraddress.form_item_idcard_name_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
|
||||
<input type="text" name="idcard_name" placeholder="{{:MyLang('common_service.useraddress.form_item_idcard_name_message')}}" minlength="0" maxlength="30" data-validation-message="{{:MyLang('common_service.useraddress.form_item_idcard_name_message')}}" class="am-radius" {{if !empty($data['idcard_name'])}} value="{{$data.idcard_name}}"{{/if}} />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label>{{:MyLang('common_service.useraddress.form_item_idcard_number')}}<a href="javascript:;" class="am-icon-question-circle am-margin-left-xs" data-am-popover="{content: '{{:MyLang('common_service.useraddress.form_item_idcard_number_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
|
||||
<input type="text" name="idcard_number" placeholder="{{:MyLang('common_service.useraddress.form_item_idcard_number_message')}}" minlength="0" maxlength="18" data-validation-message="{{:MyLang('common_service.useraddress.form_item_idcard_number_message')}}" class="am-radius" {{if !empty($data['idcard_number'])}} value="{{$data.idcard_number}}"{{/if}} />
|
||||
</div>
|
||||
{{if empty($data) or empty($data['user_id'])}}
|
||||
{{if MyC('home_user_address_idcard_status') eq 1}}
|
||||
<div class="am-form-group">
|
||||
<div class="am-tips-card">
|
||||
<p>{{:MyLang('common_service.useraddress.form_item_idcard_no_user_tips')}}</p>
|
||||
</div>
|
||||
<label>{{:MyLang('common_service.useraddress.form_item_idcard_name')}}<a href="javascript:;" class="am-icon-question-circle am-margin-left-xs" data-am-popover="{content: '{{:MyLang('common_service.useraddress.form_item_idcard_name_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
|
||||
<input type="text" name="idcard_name" placeholder="{{:MyLang('common_service.useraddress.form_item_idcard_name_message')}}" minlength="0" maxlength="30" data-validation-message="{{:MyLang('common_service.useraddress.form_item_idcard_name_message')}}" class="am-radius" {{if !empty($data['idcard_name'])}} value="{{$data.idcard_name}}"{{/if}} />
|
||||
</div>
|
||||
{{else /}}
|
||||
<div class="am-form-group plug-file-upload-view">
|
||||
<label>{{:MyLang('common_service.useraddress.form_item_idcard_images')}}<span class="am-form-group-label-tips">{{:MyLang('common_service.useraddress.form_item_idcard_images_tips')}}</span></label>
|
||||
<div class="am-nbfc user-address-idcard-images am-flex">
|
||||
<div class="item am-margin-right-lg">
|
||||
<ul class="plug-file-upload-view images-idcard_front" data-form-name="idcard_front" data-max-number="1" data-dialog-type="images">
|
||||
<li>
|
||||
{{if !empty($data['idcard_front'])}}
|
||||
<input type="text" name="idcard_front" value="{{$data.idcard_front}}" />
|
||||
{{/if}}
|
||||
<img src="{{if empty($data['idcard_front'])}}{{:StaticAttachmentUrl('default-idcard-front.jpg')}}{{else /}}{{$data.idcard_front}}{{/if}}" />
|
||||
{{if !empty($data['idcard_front'])}}
|
||||
<i class="iconfont icon-close"></i>
|
||||
{{/if}}
|
||||
</li>
|
||||
</ul>
|
||||
<div class="plug-file-upload-submit am-margin-top-sm" data-view-tag="ul.images-idcard_front">+ {{:MyLang('common_service.useraddress.form_item_idcard_front_button_name')}}</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<ul class="plug-file-upload-view images-idcard_back" data-form-name="idcard_back" data-max-number="1" data-dialog-type="images">
|
||||
<li>
|
||||
{{if !empty($data['idcard_back'])}}
|
||||
<input type="text" name="idcard_back" value="{{$data.idcard_back}}" />
|
||||
{{/if}}
|
||||
<img src="{{if empty($data['idcard_back'])}}{{:StaticAttachmentUrl('default-idcard-back.jpg')}}{{else /}}{{$data.idcard_back}}{{/if}}" />
|
||||
{{if !empty($data['idcard_back'])}}
|
||||
<i class="iconfont icon-close"></i>
|
||||
{{/if}}
|
||||
</li>
|
||||
</ul>
|
||||
<div class="plug-file-upload-submit am-margin-top-sm" data-view-tag="ul.images-idcard_back">+ {{:MyLang('common_service.useraddress.form_item_idcard_back_button_name')}}</div>
|
||||
<div class="am-form-group">
|
||||
<label>{{:MyLang('common_service.useraddress.form_item_idcard_number')}}<a href="javascript:;" class="am-icon-question-circle am-margin-left-xs" data-am-popover="{content: '{{:MyLang('common_service.useraddress.form_item_idcard_number_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
|
||||
<input type="text" name="idcard_number" placeholder="{{:MyLang('common_service.useraddress.form_item_idcard_number_message')}}" minlength="0" maxlength="18" data-validation-message="{{:MyLang('common_service.useraddress.form_item_idcard_number_message')}}" class="am-radius" {{if !empty($data['idcard_number'])}} value="{{$data.idcard_number}}"{{/if}} />
|
||||
</div>
|
||||
{{if empty($data) or empty($data['user_id'])}}
|
||||
<div class="am-form-group">
|
||||
<div class="am-tips-card">
|
||||
<p>{{:MyLang('common_service.useraddress.form_item_idcard_no_user_tips')}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else /}}
|
||||
<div class="am-form-group plug-file-upload-view">
|
||||
<label>{{:MyLang('common_service.useraddress.form_item_idcard_images')}}<span class="am-form-group-label-tips">{{:MyLang('common_service.useraddress.form_item_idcard_images_tips')}}</span></label>
|
||||
<div class="am-nbfc user-address-idcard-images am-flex">
|
||||
<div class="item am-margin-right-lg">
|
||||
<ul class="plug-file-upload-view images-idcard_front" data-form-name="idcard_front" data-max-number="1" data-dialog-type="images">
|
||||
<li>
|
||||
{{if !empty($data['idcard_front'])}}
|
||||
<input type="text" name="idcard_front" value="{{$data.idcard_front}}" />
|
||||
{{/if}}
|
||||
<img src="{{if empty($data['idcard_front'])}}{{:StaticAttachmentUrl('default-idcard-front.jpg')}}{{else /}}{{$data.idcard_front}}{{/if}}" />
|
||||
{{if !empty($data['idcard_front'])}}
|
||||
<i class="iconfont icon-close"></i>
|
||||
{{/if}}
|
||||
</li>
|
||||
</ul>
|
||||
<div class="plug-file-upload-submit am-margin-top-sm" data-view-tag="ul.images-idcard_front">+ {{:MyLang('common_service.useraddress.form_item_idcard_front_button_name')}}</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<ul class="plug-file-upload-view images-idcard_back" data-form-name="idcard_back" data-max-number="1" data-dialog-type="images">
|
||||
<li>
|
||||
{{if !empty($data['idcard_back'])}}
|
||||
<input type="text" name="idcard_back" value="{{$data.idcard_back}}" />
|
||||
{{/if}}
|
||||
<img src="{{if empty($data['idcard_back'])}}{{:StaticAttachmentUrl('default-idcard-back.jpg')}}{{else /}}{{$data.idcard_back}}{{/if}}" />
|
||||
{{if !empty($data['idcard_back'])}}
|
||||
<i class="iconfont icon-close"></i>
|
||||
{{/if}}
|
||||
</li>
|
||||
</ul>
|
||||
<div class="plug-file-upload-submit am-margin-top-sm" data-view-tag="ul.images-idcard_back">+ {{:MyLang('common_service.useraddress.form_item_idcard_back_button_name')}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
<div class="am-form-popup-submit">
|
||||
|
||||
@ -137,7 +137,7 @@ class Orderaftersale extends Common
|
||||
'returned_data' => $returned['data'],
|
||||
'return_only_money_reason' => empty($return_only_money_reason) ? [] : explode("\n", $return_only_money_reason),
|
||||
'return_money_goods_reason' => empty($return_money_goods_reason) ? [] : explode("\n", $return_money_goods_reason),
|
||||
'aftersale_type_list' => MyConst('common_order_aftersale_type_list'),
|
||||
'aftersale_type_list' => OrderAftersaleService::OrderAftersaleChoiceTypeList($order_id),
|
||||
'return_goods_address' => $return_goods_address,
|
||||
'editor_path_type' => ResourcesService::EditorPathTypeValue(OrderAftersaleService::EditorAttachmentPathType($this->user['id'], $order_id, $order_detail_id)),
|
||||
];
|
||||
|
||||
69
app/api/controller/Paylog.php
Normal file
69
app/api/controller/Paylog.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ShopXO 国内领先企业级B2C免费开源电商系统
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2011~2099 http://shopxo.net All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( https://opensource.org/licenses/mit-license.php )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Devil
|
||||
// +----------------------------------------------------------------------
|
||||
namespace app\api\controller;
|
||||
|
||||
use app\service\ApiService;
|
||||
use app\service\PayLogService;
|
||||
|
||||
/**
|
||||
* 支付日志
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2016-12-01T21:51:08+0800
|
||||
*/
|
||||
class PayLog extends Common
|
||||
{
|
||||
/**
|
||||
* 构造方法
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2016-12-03T12:39:08+0800
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// 调用父类前置方法
|
||||
parent::__construct();
|
||||
|
||||
// 是否登录
|
||||
$this->IsLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单列表页面数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2017-02-22T16:50:32+0800
|
||||
*/
|
||||
public function Index()
|
||||
{
|
||||
$params = $this->data_request;
|
||||
$params['user_id'] = $this->user['id'];
|
||||
return ApiService::ApiDataReturn(PayLogService::PayLogPagesListData($params));
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单详情页面数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2017-02-22T16:50:32+0800
|
||||
*/
|
||||
public function Detail()
|
||||
{
|
||||
$params = $this->data_request;
|
||||
$params['user_id'] = $this->user['id'];
|
||||
return ApiService::ApiDataReturn(PayLogService::PayLogPagesDetailData($params));
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -53,8 +53,7 @@ class Region extends Common
|
||||
['pid', '=', $pid],
|
||||
],
|
||||
];
|
||||
$result = RegionService::RegionNode($params);
|
||||
return ApiService::ApiDataReturn(SystemBaseService::DataReturn($result));
|
||||
return ApiService::ApiDataReturn(SystemBaseService::DataReturn(RegionService::RegionNode($params)));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -67,7 +66,7 @@ class Region extends Common
|
||||
*/
|
||||
public function All()
|
||||
{
|
||||
return ApiService::ApiDataReturn(RegionService::RegionAll());
|
||||
return ApiService::ApiDataReturn(SystemBaseService::DataReturn(RegionService::RegionAll()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -214,7 +214,7 @@ function IsUserLogin($login_url = null)
|
||||
function DefaultTheme($theme = null)
|
||||
{
|
||||
static $default_theme = null;
|
||||
if($default_theme === null)
|
||||
if($default_theme === null || !empty($theme))
|
||||
{
|
||||
$cookie_domain = MyFileConfig('common_cookie_domain', '', '', true);
|
||||
if(!empty($cookie_domain))
|
||||
@ -1265,7 +1265,7 @@ function GetUrlHost($url)
|
||||
}
|
||||
|
||||
// 判断是否是双后缀
|
||||
$preg = '/[\w].+\.(com|net|org|gov|ac|bj|sh|tj|cq|he|sn|sx|nm|ln|jl|hl|js|zj|ah|fj|jx|sd|ha|hb|hn|gd|gx|hi|sc|gz|yn|gs|qh|nx|xj|tw|hk|mo|xz|edu|ge|dev|co)\.(cn|nz|mm|ec|my|kz|sg)$/';
|
||||
$preg = '/[\w].+\.(com|net|org|gov|ac|bj|sh|tj|cq|he|sn|sx|nm|ln|jl|hl|js|zj|ah|fj|jx|sd|ha|hb|hn|gd|gx|hi|sc|gz|yn|gs|qh|nx|xj|tw|hk|mo|xz|edu|ge|dev|co)\.(cn|nz|mm|ec|my|kz|sg|tw)$/';
|
||||
if(($n > 2) && preg_match($preg, $host))
|
||||
{
|
||||
// 双后缀取后3位
|
||||
@ -3548,7 +3548,16 @@ function RequestGet($value, $timeout = 10)
|
||||
}
|
||||
|
||||
// 本地文件
|
||||
return file_exists($value) ? file_get_contents($value) : '';
|
||||
if(file_exists($value))
|
||||
{
|
||||
return file_get_contents($value);
|
||||
} else {
|
||||
if(file_exists(ROOT.'public'.$value))
|
||||
{
|
||||
return file_get_contents(ROOT.'public'.$value);
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -118,7 +118,7 @@ class Orderaftersale extends Center
|
||||
$assign['return_goods_address'] = $return_goods_address;
|
||||
|
||||
// 静态数据
|
||||
$assign['common_order_aftersale_type_list'] = MyConst('common_order_aftersale_type_list');
|
||||
$assign['common_order_aftersale_type_list'] = OrderAftersaleService::OrderAftersaleChoiceTypeList($order_id);
|
||||
|
||||
// 编辑器文件存放地址
|
||||
$assign['editor_path_type'] = ResourcesService::EditorPathTypeValue(OrderAftersaleService::EditorAttachmentPathType($this->user['id'], $order_id, $order_detail_id));
|
||||
|
||||
@ -11,6 +11,7 @@
|
||||
namespace app\index\controller;
|
||||
|
||||
use app\service\ApiService;
|
||||
use app\service\SystemBaseService;
|
||||
use app\service\RegionService;
|
||||
|
||||
/**
|
||||
@ -51,7 +52,7 @@ class Region extends Common
|
||||
['pid', '=', $pid],
|
||||
],
|
||||
];
|
||||
return ApiService::ApiDataReturn(DataReturn('success', 0, RegionService::RegionNode($params)));
|
||||
return ApiService::ApiDataReturn(SystemBaseService::DataReturn(RegionService::RegionNode($params)));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -64,7 +65,7 @@ class Region extends Common
|
||||
*/
|
||||
public function All()
|
||||
{
|
||||
return ApiService::ApiDataReturn(RegionService::RegionAll());
|
||||
return ApiService::ApiDataReturn(SystemBaseService::DataReturn(RegionService::RegionAll()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -109,6 +109,16 @@ class UserGoodsBrowse
|
||||
'is_point' => 1,
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => $lang['access_count'],
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'access_count',
|
||||
'is_sort' => 1,
|
||||
'search_config' => [
|
||||
'form_type' => 'section',
|
||||
'form_name' => 'b.access_count',
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => $lang['add_time'],
|
||||
'view_type' => 'field',
|
||||
|
||||
@ -470,6 +470,7 @@ return [
|
||||
'goods_placeholder' => '請輸入商品名稱/簡述/SEO資訊',
|
||||
'price' => '銷售價格',
|
||||
'original_price' => '原價',
|
||||
'access_count' => '流覽量',
|
||||
'add_time' => '創建時間',
|
||||
],
|
||||
],
|
||||
|
||||
@ -474,6 +474,7 @@ return [
|
||||
'goods_placeholder' => 'Please enter the goods name/brief description/SEO information',
|
||||
'price' => 'Sales price (yuan)',
|
||||
'original_price' => 'Original price (yuan)',
|
||||
'access_count' => 'Access count',
|
||||
'add_time' => 'Creation time',
|
||||
],
|
||||
],
|
||||
|
||||
@ -474,6 +474,7 @@ return [
|
||||
'goods_placeholder' => 'Introduzca el nombre del producto / breve descripción / información seo',
|
||||
'price' => 'Precio de venta (yuan)',
|
||||
'original_price' => 'Precio original (yuan)',
|
||||
'access_count' => 'Vistas',
|
||||
'add_time' => 'Tiempo de creación',
|
||||
],
|
||||
],
|
||||
|
||||
@ -475,6 +475,7 @@ return [
|
||||
'goods_placeholder' => '请输入商品名称/简述/SEO信息',
|
||||
'price' => '销售价格',
|
||||
'original_price' => '原价',
|
||||
'access_count' => '浏览量',
|
||||
'add_time' => '创建时间',
|
||||
],
|
||||
],
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name":"默认主题",
|
||||
"ver":"6.5.0",
|
||||
"ver":"6.6.0",
|
||||
"author":"Devil",
|
||||
"home":"https://shopxo.net/",
|
||||
"is_theme_data_admin": 1
|
||||
|
||||
@ -145,6 +145,7 @@
|
||||
var __my_http__ = '{{$my_http}}';
|
||||
var __my_host__ = '{{$my_host}}';
|
||||
var __my_url__ = '{{$my_url}}';
|
||||
var __my_view_url__ = '{{$my_view_url}}';
|
||||
var __my_public_url__ = '{{$my_public_url}}';
|
||||
var __public__ = '{{$public_host}}';
|
||||
var __default_theme__ = '{{$default_theme}}';
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
<!-- 手机端搜索 -->
|
||||
<form class="am-topbar-form am-topbar-left am-form-inline am-show-sm-only navigation-search" role="search" action="{{:MyUrl('index/search/index')}}" method="POST">
|
||||
<div class="am-input-group am-input-group-sm">
|
||||
<input type="text" name="wd" class="am-form-field" placeholder="{{:MyLang('common.search_input_placeholder')}}" value="{{if !empty($params['wd'])}}{{$params.wd}}{{/if}}" autocomplete="off" />
|
||||
<input type="text" name="wd" class="am-form-field" placeholder="{{:MyLang('common.search_input_placeholder')}}" value="{{if !empty($params['wd'])}}{{$params.wd}}{{/if}}" autocomplete="off" data-is-clearout="0" />
|
||||
<span class="am-input-group-btn">
|
||||
<button class="am-btn am-btn-default" type="submit">
|
||||
<span class="am-icon-search am-icon-xs"></span>
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
<!-- 搜索框 -->
|
||||
<form action="{{:MyUrl('index/search/index')}}" method="POST">
|
||||
<div class="search-group am-radius am-nbfc">
|
||||
<input id="search-input" name="wd" type="text" placeholder="{{:MyLang('common.search_input_placeholder')}}" value="{{if !empty($params['wd'])}}{{$params.wd}}{{/if}}" autocomplete="off" />
|
||||
<input id="search-input" name="wd" type="text" placeholder="{{:MyLang('common.search_input_placeholder')}}" value="{{if !empty($params['wd'])}}{{$params.wd}}{{/if}}" autocomplete="off" data-is-clearout="0" />
|
||||
<button type="submit" id="ai-topsearch" class="submit am-btn-primary">
|
||||
<span>{{:MyLang('common.search_button_text')}}</span>
|
||||
</button>
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
<!-- 搜索框 -->
|
||||
<form action="{{:MyUrl('index/search/index')}}" method="POST">
|
||||
<div class="search-group am-radius am-nbfc">
|
||||
<input id="search-input" name="wd" type="text" placeholder="{{:MyLang('common.search_input_placeholder')}}" value="{{if !empty($params['wd'])}}{{$params.wd}}{{/if}}" autocomplete="off" />
|
||||
<input id="search-input" name="wd" type="text" placeholder="{{:MyLang('common.search_input_placeholder')}}" value="{{if !empty($params['wd'])}}{{$params.wd}}{{/if}}" autocomplete="off" data-is-clearout="0" />
|
||||
<button type="submit" id="ai-topsearch" class="submit am-btn-primary">
|
||||
<span>{{:MyLang('common.search_button_text')}}</span>
|
||||
</button>
|
||||
|
||||
@ -48,42 +48,45 @@ class Common extends BaseController
|
||||
$assign = [
|
||||
// 当前方法
|
||||
'action' => RequestAction(),
|
||||
|
||||
|
||||
// 系统类型
|
||||
'system_type' => SystemService::SystemTypeValue(),
|
||||
|
||||
|
||||
// 系统环境参数最大数
|
||||
'env_max_input_vars_count' => SystemService::EnvMaxInputVarsCount(),
|
||||
|
||||
|
||||
// 默认不加载地图api、类型默认百度地图
|
||||
'is_load_map_api' => 0,
|
||||
|
||||
|
||||
'load_map_type' => MyC('common_map_type', 'baidu', true),
|
||||
|
||||
|
||||
// 页面语言
|
||||
'lang_data' => SystemService::PageViewLangData(),
|
||||
|
||||
|
||||
// 多语言
|
||||
'multilingual_default_code' => MultilingualService::GetUserMultilingualValue(),
|
||||
|
||||
|
||||
// 附件host地址
|
||||
'attachment_host' => SystemBaseService::AttachmentHost(),
|
||||
|
||||
|
||||
// css/js引入host地址
|
||||
'public_host' => MyConfig('shopxo.public_host'),
|
||||
|
||||
|
||||
// 当前url地址
|
||||
'my_domain' => __MY_DOMAIN__,
|
||||
|
||||
|
||||
// 当前host地址
|
||||
'my_host' => __MY_HOST__,
|
||||
|
||||
|
||||
// 当前完整url地址
|
||||
'my_url' => __MY_URL__,
|
||||
|
||||
|
||||
// 当前完整url地址
|
||||
'my_view_url' => __MY_VIEW_URL__,
|
||||
|
||||
// 项目public目录URL地址
|
||||
'my_public_url' => __MY_PUBLIC_URL__,
|
||||
|
||||
|
||||
// 当前http类型
|
||||
'my_http' => __MY_HTTP__,
|
||||
];
|
||||
|
||||
@ -44,6 +44,7 @@
|
||||
<div class="am-form-group row">
|
||||
<label>数据库服务器<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<input type="text" name="DB_HOST" placeholder="数据库服务器" value="127.0.0.1" class="am-radius am-input-sm" data-validation-message="请填写数据库服务器地址" required />
|
||||
<a href="javascript:;" class="am-icon-question-circle text-copy-submit" data-am-popover="{content: '如果连接不通,可以尝试使用 localhost 试试!', trigger: 'hover focus', theme: 'sm'}" data-value="localhost"></a>
|
||||
</div>
|
||||
<div class="am-form-group row">
|
||||
<label>数据库端口<span class="am-form-group-label-tips-must">*</span></label>
|
||||
@ -52,6 +53,7 @@
|
||||
<div class="am-form-group row">
|
||||
<label>数据库名<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<input type="text" name="DB_NAME" placeholder="数据库名" value="" class="am-radius am-input-sm" data-validation-message="请填写数据库名" required />
|
||||
<a href="javascript:;" class="am-icon-question-circle" data-am-popover="{content: '请先创建好数据库,编码和选择的保持一致!', trigger: 'hover focus', theme: 'sm'}"></a>
|
||||
</div>
|
||||
<div class="am-form-group row">
|
||||
<label>数据库用户名<span class="am-form-group-label-tips-must">*</span></label>
|
||||
|
||||
@ -56,6 +56,7 @@
|
||||
var __my_http__ = '{{$my_http}}';
|
||||
var __my_host__ = '{{$my_host}}';
|
||||
var __my_url__ = '{{$my_url}}';
|
||||
var __my_view_url__ = '{{$my_view_url}}';
|
||||
var __my_public_url__ = '{{$my_public_url}}';
|
||||
var __public__ = '{{$public_host}}';
|
||||
var __seo_url_suffix__ = '{{:MyC("home_seo_url_html_suffix", "html", true)}}';
|
||||
|
||||
@ -76,6 +76,9 @@ return [
|
||||
'upload_images_max_tips' => '最多上傳{value}張圖片',
|
||||
'upload_video_max_tips' => '最多上傳{value}個視頻',
|
||||
'upload_annex_max_tips' => '最多上傳{value}個附件',
|
||||
'upload_images_suffix_tips' => '第{value}張圖片格式有誤',
|
||||
'upload_video_suffix_tips' => '第{value}個視頻格式有誤',
|
||||
'upload_annex_suffix_tips' => '第{value}個附件格式有誤',
|
||||
'form_config_type_params_tips' => '表單[類型]參數配寘有誤',
|
||||
'form_config_value_params_tips' => '表單[類型]參數配寘有誤',
|
||||
'form_call_fun_not_exist_tips' => '表單定義的方法未定義',
|
||||
@ -338,6 +341,7 @@ return [
|
||||
'upd_time_title' => '更新時間',
|
||||
'price_min_title' => '最低價格',
|
||||
'price_max_title' => '最高價格',
|
||||
'shop_order' => '商城訂單',
|
||||
'back_home_title' => '回到首頁',
|
||||
'shop_home_title' => '商城首頁',
|
||||
'home_title' => '首頁',
|
||||
@ -451,6 +455,7 @@ return [
|
||||
'refuse_title' => '拒絕',
|
||||
'pass_title' => '通過',
|
||||
'agree_title' => '同意',
|
||||
'expire_title' => '過期',
|
||||
'order_title' => '訂單',
|
||||
'install_title' => '安裝',
|
||||
'uninstall_title' => '卸載',
|
||||
@ -580,6 +585,7 @@ return [
|
||||
'custom_title' => '自定義',
|
||||
'customer_title' => '客戶',
|
||||
'customer_info_title' => '客戶資訊',
|
||||
'region_title' => '地區',
|
||||
// 商品基础相关
|
||||
'goods_name' => '商品名稱',
|
||||
'goods_add_name' => '商品添加',
|
||||
@ -1163,6 +1169,23 @@ return [
|
||||
3 => '價格',
|
||||
4 => '最新',
|
||||
],
|
||||
// 用户商品收藏排序类型
|
||||
'common_goods_favor_order_by_type_list' => [
|
||||
0 => '綜合',
|
||||
1 => '銷量',
|
||||
2 => '熱度',
|
||||
3 => '價格',
|
||||
4 => '最新',
|
||||
],
|
||||
// 用户商品浏览排序类型
|
||||
'common_goods_browse_order_by_type_list' => [
|
||||
0 => '綜合',
|
||||
1 => '銷量',
|
||||
2 => '熱度',
|
||||
3 => '價格',
|
||||
4 => '最新',
|
||||
5 => '用戶瀏覽',
|
||||
],
|
||||
// 数据排序规则
|
||||
'common_data_order_by_rule_list' => [
|
||||
0 => '降序(desc)',
|
||||
@ -1645,6 +1668,8 @@ return [
|
||||
],
|
||||
// 配置信息
|
||||
'config' => [
|
||||
'site_title_icon_power_tips' => '瀏覽器標題圖標無許可權',
|
||||
'site_title_icon_fail_tips' => '瀏覽器標題圖標保存失敗',
|
||||
'route_dir_no_power_tips' => '路由目錄沒有操作許可權',
|
||||
'route_file_no_power_tips' => '路由設定檔沒有操作許可權',
|
||||
'route_file_config_no_exist_tips' => '路由規則檔案不存在',
|
||||
@ -1730,7 +1755,7 @@ return [
|
||||
'upload_config_file_error_tips' => '配寘資訊為空或有誤',
|
||||
'upload_config_file_handle_fail_tips' => '設定檔處理失敗',
|
||||
'upload_invalid_packet_tips' => '無效數据包',
|
||||
'preview_url_tips' => '請在後臺[ 手機->基礎配寘 ]先配寘手機端h5地址(h5端需要使用uniapp版本打包)',
|
||||
'preview_url_tips' => '如需h5預覽效果,請在後臺[手機->基礎配寘]先配寘手機端h5地址(h5端需要使用uniapp版本打包)',
|
||||
'form_item_desc' => '描述',
|
||||
'form_item_desc_message' => '描述內容格式2~60個字元',
|
||||
'form_item_apply_version' => '適用系統版本',
|
||||
@ -1874,8 +1899,8 @@ return [
|
||||
'form_item_brand_message' => '請選擇品牌',
|
||||
'form_item_place_origin' => '生產地',
|
||||
'form_item_place_origin_message' => '請選擇生產地',
|
||||
'form_item_inventory_unit' => '庫存組織',
|
||||
'form_item_inventory_unit_message' => '庫存組織格式1~6個字',
|
||||
'form_item_inventory_unit' => '計量單位',
|
||||
'form_item_inventory_unit_message' => '計量單位格式1~6個字',
|
||||
'form_item_give_integral' => '購買贈送積分比例',
|
||||
'form_item_give_integral_tips' => [
|
||||
'1.按照商品金額比例乘以數量的比例進行發放',
|
||||
@ -2361,6 +2386,7 @@ return [
|
||||
'pay_log_insert_fail_tips' => '支付訂單添加失敗',
|
||||
'pay_log_id_empty_tips' => '日誌id有誤',
|
||||
'pay_log_update_fail_tips' => '日誌訂單更新失敗',
|
||||
'pay_log_value_no_data_tips' => '無支付業務數據',
|
||||
],
|
||||
// 支付方式
|
||||
'payment' => [
|
||||
@ -3433,6 +3459,11 @@ return [
|
||||
'desc' => '建議使用png格式,建議300*300px',
|
||||
'tips' => '請上傳正方形logo',
|
||||
],
|
||||
'home_site_title_icon' => [
|
||||
'name' => '瀏覽器標題圖標',
|
||||
'desc' => '使用ico格式,建議128*128px',
|
||||
'tips' => '請上傳瀏覽器標題圖標',
|
||||
],
|
||||
'home_user_reg_type' => [
|
||||
'name' => '注册管道',
|
||||
'desc' => '未選擇、前端網站將無法注册,可選擇[簡訊,郵箱,用戶名]',
|
||||
@ -3882,7 +3913,7 @@ return [
|
||||
],
|
||||
'home_is_enable_userregister_agreement' => [
|
||||
'name' => '用戶註冊協定',
|
||||
'desc' => '默認關閉,開啟後用戶註冊需要同意協定才可以注册',
|
||||
'desc' => '默認關閉,開啟後用戶註冊需要同意協定才可以注册,僅對web端有效',
|
||||
'tips' => '請選擇是否啟用用戶註冊協定',
|
||||
],
|
||||
'home_order_aftersale_return_goods_contacts_name' => [
|
||||
@ -4053,16 +4084,17 @@ return [
|
||||
],
|
||||
'common_is_exhibition_mode_btn_text' => [
|
||||
'name' => '展示型操作名稱',
|
||||
'desc' => '默認立即諮詢',
|
||||
'desc' => '默認立即諮詢,展示模式下商品頁面的【立即購買】按鈕占位名稱',
|
||||
'tips' => '請填寫展示型操作名稱',
|
||||
],
|
||||
'common_site_fictitious_return_title' => [
|
||||
'name' => '虛擬資訊標題',
|
||||
'desc' => '默認金鑰資訊',
|
||||
'desc' => '默認金鑰資訊,用戶購買虛擬商品後、在訂單詳情裡面展示虛擬資訊的標題',
|
||||
'tips' => '請填寫虛擬資訊標題',
|
||||
],
|
||||
'common_site_fictitious_return_tips' => [
|
||||
'name' => '提示資訊',
|
||||
'desc' => '用戶購買虛擬商品後、在訂單詳情裡面展示給用戶的提示資訊',
|
||||
'tips' => '請填寫提示資訊',
|
||||
],
|
||||
'common_app_mini_alipay_tnt_inst_id' => [
|
||||
@ -4108,7 +4140,7 @@ return [
|
||||
],
|
||||
'common_is_mobile_concise_model' => [
|
||||
'name' => '手機簡潔模式',
|
||||
'desc' => '默認否',
|
||||
'desc' => '默認否,開啟後web端底部選單、友情連結不顯示',
|
||||
'tips' => '請選擇是否手機簡潔模式',
|
||||
],
|
||||
'common_app_weixin_liveplayer' => [
|
||||
@ -4319,9 +4351,9 @@ return [
|
||||
'desc' => '驗證碼變數識別字[ #code# ]',
|
||||
],
|
||||
'home_extraction_address_position' => [
|
||||
'name' => '自提選擇地理位置',
|
||||
'desc' => '默認關閉',
|
||||
'tips' => '請選擇自提選擇地理位置',
|
||||
'name' => '下單自提選擇地理位置',
|
||||
'desc' => '默認關閉,開啟後下單選擇自提地址之前需要先選擇用戶當前位置、地址以最近展示',
|
||||
'tips' => '請選擇下單自提選擇地理位置',
|
||||
],
|
||||
'home_search_is_keywords_where_and' => [
|
||||
'name' => '蒐索多個關鍵字並且關係',
|
||||
@ -4548,12 +4580,12 @@ return [
|
||||
],
|
||||
'common_buy_datetime_info' => [
|
||||
'name' => '下單指定時間',
|
||||
'desc' => '',
|
||||
'desc' => '僅同城、自提訂單模式下有效',
|
||||
'tips' => '請選擇下單指定時間',
|
||||
],
|
||||
'common_buy_extraction_contact_info' => [
|
||||
'name' => '下單聯系資訊',
|
||||
'desc' => '',
|
||||
'desc' => '僅自提訂單模式下有效',
|
||||
'tips' => '請選擇下單聯系資訊',
|
||||
],
|
||||
'home_search_history_record' => [
|
||||
|
||||
@ -76,6 +76,9 @@ return [
|
||||
'upload_images_max_tips' => 'Upload up to {value} pictures',
|
||||
'upload_video_max_tips' => 'Upload {value} videos at most',
|
||||
'upload_annex_max_tips' => 'Upload up to {value} attachments',
|
||||
'upload_images_suffix_tips' => 'The format of the {value} th image is incorrect',
|
||||
'upload_video_suffix_tips' => 'The {value} th video format is incorrect',
|
||||
'upload_annex_suffix_tips' => 'The format of the {value} th attachment is incorrect',
|
||||
'form_config_type_params_tips' => 'The form [type] parameter configuration is incorrect',
|
||||
'form_config_value_params_tips' => 'The form [type] parameter configuration is incorrect',
|
||||
'form_call_fun_not_exist_tips' => 'The method defined by the form is not defined',
|
||||
@ -338,6 +341,7 @@ return [
|
||||
'upd_time_title' => 'Update Time',
|
||||
'price_min_title' => 'Lowest price',
|
||||
'price_max_title' => 'Maximum price',
|
||||
'shop_order' => 'Mall orders',
|
||||
'back_home_title' => 'Back Home',
|
||||
'shop_home_title' => 'Shop Home',
|
||||
'home_title' => 'Home',
|
||||
@ -451,6 +455,7 @@ return [
|
||||
'refuse_title' => 'Refuse',
|
||||
'pass_title' => 'Pass',
|
||||
'agree_title' => 'Agree',
|
||||
'expire_title' => 'Expire',
|
||||
'order_title' => 'Order',
|
||||
'install_title' => 'Install',
|
||||
'uninstall_title' => 'Uninstall',
|
||||
@ -580,6 +585,7 @@ return [
|
||||
'custom_title' => 'Custom',
|
||||
'customer_title' => 'customer',
|
||||
'customer_info_title' => 'Customer Information',
|
||||
'region_title' => 'Area',
|
||||
// 商品基础相关
|
||||
'goods_name' => 'Goods Name',
|
||||
'goods_add_name' => 'Goods Add',
|
||||
@ -1163,6 +1169,23 @@ return [
|
||||
3 => 'Price',
|
||||
4 => 'newest',
|
||||
],
|
||||
// 用户商品收藏排序类型
|
||||
'common_goods_favor_order_by_type_list' => [
|
||||
0 => 'comprehensive',
|
||||
1 => 'sales volume',
|
||||
2 => 'degree of heat',
|
||||
3 => 'Price',
|
||||
4 => 'newest',
|
||||
],
|
||||
// 用户商品浏览排序类型
|
||||
'common_goods_browse_order_by_type_list' => [
|
||||
0 => 'comprehensive',
|
||||
1 => 'sales volume',
|
||||
2 => 'degree of heat',
|
||||
3 => 'Price',
|
||||
4 => 'newest',
|
||||
5 => 'User browse',
|
||||
],
|
||||
// 数据排序规则
|
||||
'common_data_order_by_rule_list' => [
|
||||
0 => 'Descending order (DESC)',
|
||||
@ -1642,6 +1665,8 @@ return [
|
||||
],
|
||||
// 配置信息
|
||||
'config' => [
|
||||
'site_title_icon_power_tips' => 'Browser title icon has no permission',
|
||||
'site_title_icon_fail_tips' => 'Failed to save browser title icon',
|
||||
'route_dir_no_power_tips' => 'Routing directory does not have operation permission',
|
||||
'route_file_no_power_tips' => 'Routing profile does not have operation permissions',
|
||||
'route_file_config_no_exist_tips' => 'Routing rule file does not exist',
|
||||
@ -1727,7 +1752,7 @@ return [
|
||||
'upload_config_file_error_tips' => 'Configuration information is empty or incorrect',
|
||||
'upload_config_file_handle_fail_tips' => 'Configuration file processing failed',
|
||||
'upload_invalid_packet_tips' => 'Invalid data packet',
|
||||
'preview_url_tips' => 'Please configure the H5 address on the mobile end in the background [Phone ->Basic Configuration] first (H5 end needs to be packaged using Uniapp version)',
|
||||
'preview_url_tips' => 'If you need the H5 preview effect, please configure the H5 address on the mobile end in the background [Phone ->Basic Configuration] first (the H5 end needs to be packaged using the Uniapp version)',
|
||||
'form_item_desc' => 'describe',
|
||||
'form_item_desc_message' => 'Describe content format 2-60 characters',
|
||||
'form_item_apply_version' => 'Applicable system version',
|
||||
@ -1871,8 +1896,8 @@ return [
|
||||
'form_item_brand_message' => 'Please select a brand',
|
||||
'form_item_place_origin' => 'Place of production',
|
||||
'form_item_place_origin_message' => 'Please select the place of production',
|
||||
'form_item_inventory_unit' => 'Inventory unit',
|
||||
'form_item_inventory_unit_message' => 'Inventory unit format 1~6 characters',
|
||||
'form_item_inventory_unit' => 'unit of measurement',
|
||||
'form_item_inventory_unit_message' => 'unit of measurement format 1~6 characters',
|
||||
'form_item_give_integral' => 'Percentage of free points for purchase',
|
||||
'form_item_give_integral_tips' => [
|
||||
'1. Distribute according to the proportion of goods amount multiplied by quantity',
|
||||
@ -2358,6 +2383,7 @@ return [
|
||||
'pay_log_insert_fail_tips' => 'Failed to add payment order',
|
||||
'pay_log_id_empty_tips' => 'The log ID is incorrect',
|
||||
'pay_log_update_fail_tips' => 'Log order update failed',
|
||||
'pay_log_value_no_data_tips' => 'No payment business data',
|
||||
],
|
||||
// 支付方式
|
||||
'payment' => [
|
||||
@ -3435,6 +3461,11 @@ return [
|
||||
'desc' => 'PNG format is recommended. 300*300px is recommended',
|
||||
'tips' => 'Please upload the square logo',
|
||||
],
|
||||
'home_site_title_icon' => [
|
||||
'name' => 'Browser title icon',
|
||||
'desc' => 'Using ICO format, it is recommended to use 128 * 128px',
|
||||
'tips' => 'Please upload the browser title icon',
|
||||
],
|
||||
'home_user_reg_type' => [
|
||||
'name' => 'Registration method',
|
||||
'desc' => 'If it is not selected, the front-end site cannot be registered. You can select [SMS, email, user name]',
|
||||
@ -3914,7 +3945,7 @@ return [
|
||||
],
|
||||
'home_is_enable_userregister_agreement' => [
|
||||
'name' => 'User registration agreement',
|
||||
'desc' => 'It is closed by default. After it is enabled, user registration can only be registered after agreeing to the agreement',
|
||||
'desc' => 'By default, it is turned off. After turning it on, users need to agree to the protocol before they can register, which is only valid for the web end',
|
||||
'tips' => 'Please select whether to enable user registration agreement',
|
||||
],
|
||||
'home_order_aftersale_return_goods_contacts_name' => [
|
||||
@ -4085,16 +4116,17 @@ return [
|
||||
],
|
||||
'common_is_exhibition_mode_btn_text' => [
|
||||
'name' => 'Display type operation name',
|
||||
'desc' => 'Default immediate consultation',
|
||||
'desc' => 'Default immediate consultation, the name occupied by the Buy Now button on the product page in display mode',
|
||||
'tips' => 'Please fill in the name of display type operation',
|
||||
],
|
||||
'common_site_fictitious_return_title' => [
|
||||
'name' => 'Virtual information title',
|
||||
'desc' => 'Default key information',
|
||||
'desc' => 'Default key information, the title of the virtual information displayed in the order details after the user purchases the virtual product',
|
||||
'tips' => 'Please fill in the title of virtual information',
|
||||
],
|
||||
'common_site_fictitious_return_tips' => [
|
||||
'name' => 'Prompt information',
|
||||
'desc' => 'Reminder information displayed to users in order details after purchasing virtual goods',
|
||||
'tips' => 'Please fill in the prompt information',
|
||||
],
|
||||
'common_app_mini_alipay_tnt_inst_id' => [
|
||||
@ -4140,7 +4172,7 @@ return [
|
||||
],
|
||||
'common_is_mobile_concise_model' => [
|
||||
'name' => 'Mobile phone simple mode',
|
||||
'desc' => 'Default no',
|
||||
'desc' => 'No by default, the bottom menu and friendship links on the web end will not be displayed when enabled',
|
||||
'tips' => 'Please select whether the phone is in compact mode',
|
||||
],
|
||||
'common_app_weixin_liveplayer' => [
|
||||
@ -4353,9 +4385,9 @@ return [
|
||||
'tips' => '',
|
||||
],
|
||||
'home_extraction_address_position' => [
|
||||
'name' => 'Self-selected geographical location',
|
||||
'desc' => 'Default off',
|
||||
'tips' => 'Please select Self-delivery and geographical location',
|
||||
'name' => 'Order self pickup, choose geographical location',
|
||||
'desc' => 'By default, it is turned off. Before placing an order and selecting a self pickup address, you need to first select the users current location and address for the most recent display',
|
||||
'tips' => 'Please choose to place an order for self pickup and select a geographical location',
|
||||
],
|
||||
'home_search_is_keywords_where_and' => [
|
||||
'name' => 'Search for multiple keywords and relationships',
|
||||
@ -4586,12 +4618,12 @@ return [
|
||||
],
|
||||
'common_buy_datetime_info' => [
|
||||
'name' => 'Order specified time',
|
||||
'desc' => '',
|
||||
'desc' => 'Only valid under the same city and self pickup order mode',
|
||||
'tips' => 'Please select the designated time for placing the order',
|
||||
],
|
||||
'common_buy_extraction_contact_info' => [
|
||||
'name' => 'Order contact information',
|
||||
'desc' => '',
|
||||
'desc' => 'Only valid in self pickup order mode',
|
||||
'tips' => 'Please select the contact information for placing an order',
|
||||
],
|
||||
'home_search_history_record' => [
|
||||
|
||||
@ -71,11 +71,14 @@ return [
|
||||
'operate_download_name' => 'Descargar',
|
||||
'operate_download_fail_tips' => 'Falló la descarga',
|
||||
'select_not_chosen_tips' => 'Por favor, seleccione el elemento',
|
||||
'select_chosen_min_tips' => 'Seleccione al menos el elemento (valor).',
|
||||
'select_chosen_max_tips' => 'Seleccione como máximo el elemento (valor).',
|
||||
'upload_images_max_tips' => 'Cargar hasta un máximo de (...) imágenes',
|
||||
'upload_video_max_tips' => 'Cargar hasta un máximo de valor vídeos',
|
||||
'upload_annex_max_tips' => 'Cargar hasta un máximo de (...) archivos adjuntos',
|
||||
'select_chosen_min_tips' => 'Seleccione al menos el elemento {value}.',
|
||||
'select_chosen_max_tips' => 'Seleccione como máximo el elemento {value}.',
|
||||
'upload_images_max_tips' => 'Cargar hasta un máximo de {value} imágenes',
|
||||
'upload_video_max_tips' => 'Cargar hasta un máximo de {value} vídeos',
|
||||
'upload_annex_max_tips' => 'Cargar hasta un máximo de {value} archivos adjuntos',
|
||||
'upload_images_suffix_tips' => 'La imagen {value} tiene un formato incorrecto',
|
||||
'upload_video_suffix_tips' => 'El {value} formato de vídeo es incorrecto',
|
||||
'upload_annex_suffix_tips' => 'El formato del anexo {value} es incorrecto',
|
||||
'form_config_type_params_tips' => 'Configuración incorrecta del parámetro del formulario [tipo]',
|
||||
'form_config_value_params_tips' => 'Configuración incorrecta del parámetro del formulario [tipo]',
|
||||
'form_call_fun_not_exist_tips' => 'El método definido por el formulario no está definido',
|
||||
@ -338,6 +341,7 @@ return [
|
||||
'upd_time_title' => 'Tiempo de actualización',
|
||||
'price_min_title' => 'Precio mínimo',
|
||||
'price_max_title' => 'Precio máximo',
|
||||
'shop_order' => 'Pedidos del centro comercial',
|
||||
'back_home_title' => 'Volver a la página de inicio',
|
||||
'shop_home_title' => 'Página de inicio del centro comercial',
|
||||
'home_title' => 'Página de inicio',
|
||||
@ -451,6 +455,7 @@ return [
|
||||
'refuse_title' => 'Rechazar',
|
||||
'pass_title' => 'Através',
|
||||
'agree_title' => 'De acuerdo',
|
||||
'expire_title' => 'Caducado',
|
||||
'order_title' => 'Pedidos',
|
||||
'install_title' => 'Instalación',
|
||||
'uninstall_title' => 'Desinstalar',
|
||||
@ -580,6 +585,7 @@ return [
|
||||
'custom_title' => 'Personalizado',
|
||||
'customer_title' => 'Cliente',
|
||||
'customer_info_title' => 'Información del cliente',
|
||||
'region_title' => 'Región',
|
||||
// 商品基础相关
|
||||
'goods_name' => 'Nombre de la mercancía',
|
||||
'goods_add_name' => 'Adición de productos básicos',
|
||||
@ -1163,6 +1169,23 @@ return [
|
||||
3 => 'Precio',
|
||||
4 => 'Último',
|
||||
],
|
||||
// 用户商品收藏排序类型
|
||||
'common_goods_favor_order_by_type_list' => [
|
||||
0 => 'Integral',
|
||||
1 => 'Ventas',
|
||||
2 => 'Calor',
|
||||
3 => 'Precio',
|
||||
4 => 'Último',
|
||||
],
|
||||
// 用户商品浏览排序类型
|
||||
'common_goods_browse_order_by_type_list' => [
|
||||
0 => 'Integral',
|
||||
1 => 'Ventas',
|
||||
2 => 'Calor',
|
||||
3 => 'Precio',
|
||||
4 => 'Último',
|
||||
5 => 'Navegación del usuario',
|
||||
],
|
||||
// 数据排序规则
|
||||
'common_data_order_by_rule_list' => [
|
||||
0 => 'Orden descendente (desc)',
|
||||
@ -1646,6 +1669,8 @@ return [
|
||||
],
|
||||
// 配置信息
|
||||
'config' => [
|
||||
'site_title_icon_power_tips' => 'El icono del título del navegador no tiene permisos',
|
||||
'site_title_icon_fail_tips' => 'Falló la conservación del icono del título del navegador',
|
||||
'route_dir_no_power_tips' => 'El catálogo de enrutamiento no tiene permisos operativos',
|
||||
'route_file_no_power_tips' => 'El perfil de ruta no tiene permisos operativos',
|
||||
'route_file_config_no_exist_tips' => 'El archivo de reglas de enrutamiento no existe',
|
||||
@ -1731,7 +1756,7 @@ return [
|
||||
'upload_config_file_error_tips' => 'La información de configuración está vacía o incorrecta',
|
||||
'upload_config_file_handle_fail_tips' => 'Falló el procesamiento del archivo de configuración',
|
||||
'upload_invalid_packet_tips' => 'Paquete de datos no válido',
|
||||
'preview_url_tips' => 'Por favor, configure la dirección h5 del teléfono móvil en segundo plano [teléfono móvil - > configuración básica] primero (el lado h5 necesita ser empaquetado con la versión uniapp)',
|
||||
'preview_url_tips' => 'Para el efecto de previsualización de h5, primero configure la dirección h5 del teléfono móvil en segundo plano [teléfono móvil - > configuración básica] (el lado h5 necesita ser empaquetado con la versión uniapp)',
|
||||
'form_item_desc' => 'Descripción',
|
||||
'form_item_desc_message' => 'Formato de contenido de descripción de 2 a 60 caracteres',
|
||||
'form_item_apply_version' => 'Versión del sistema aplicable',
|
||||
@ -1875,8 +1900,8 @@ return [
|
||||
'form_item_brand_message' => 'Por favor, elija la marca',
|
||||
'form_item_place_origin' => 'Lugar de producción',
|
||||
'form_item_place_origin_message' => 'Por favor, elija el lugar de producción.',
|
||||
'form_item_inventory_unit' => 'Unidades de inventario',
|
||||
'form_item_inventory_unit_message' => 'Formato de la unidad de inventario de 1 a 6 caracteres',
|
||||
'form_item_inventory_unit' => 'Unidad de medida',
|
||||
'form_item_inventory_unit_message' => 'Formato de organización de inventario de 1 a 6 palabras',
|
||||
'form_item_give_integral' => 'Proporción de puntos de regalo de compra',
|
||||
'form_item_give_integral_tips' => [
|
||||
'1. distribución de acuerdo con la proporción de la cantidad de la mercancía multiplicada por la proporción de la cantidad',
|
||||
@ -2362,6 +2387,7 @@ return [
|
||||
'pay_log_insert_fail_tips' => 'Falló la adición del pedido de pago',
|
||||
'pay_log_id_empty_tips' => 'El ID de registro es incorrecto',
|
||||
'pay_log_update_fail_tips' => 'Falló la actualización del pedido de registro',
|
||||
'pay_log_value_no_data_tips' => 'No hay datos de Negocios de pago',
|
||||
],
|
||||
// 支付方式
|
||||
'payment' => [
|
||||
@ -3434,6 +3460,11 @@ return [
|
||||
'desc' => 'Se recomienda usar el formato png, se recomienda 300*300px',
|
||||
'tips' => 'Por favor, suba el logotipo cuadrado',
|
||||
],
|
||||
'home_site_title_icon' => [
|
||||
'name' => 'Icono del título del navegador',
|
||||
'desc' => 'Con el formato ico, se recomienda 128 * 128px',
|
||||
'tips' => 'Por favor, suba el icono del título del navegador',
|
||||
],
|
||||
'home_user_reg_type' => [
|
||||
'name' => 'Método de registro',
|
||||
'desc' => 'No seleccionado, el sitio frontal no se podrá registrar, se puede elegir [sms, buzón, nombre de usuario]',
|
||||
@ -3883,7 +3914,7 @@ return [
|
||||
],
|
||||
'home_is_enable_userregister_agreement' => [
|
||||
'name' => 'Protocolo de registro de usuarios',
|
||||
'desc' => 'Se cierra por defecto, y el registro del usuario requiere un Protocolo de consentimiento para registrarse después de abrirlo.',
|
||||
'desc' => 'Se cierra por defecto. después de abrir, el registro del usuario requiere un Protocolo de consentimiento para registrarse. solo es válido para el lado Web.',
|
||||
'tips' => 'Por favor, elija Si habilita el Protocolo de registro de usuarios',
|
||||
],
|
||||
'home_order_aftersale_return_goods_contacts_name' => [
|
||||
@ -4054,16 +4085,17 @@ return [
|
||||
],
|
||||
'common_is_exhibition_mode_btn_text' => [
|
||||
'name' => 'Nombre de la operación de exhibición',
|
||||
'desc' => 'Consulta inmediata por defecto',
|
||||
'desc' => 'Consulta inmediata por defecto, nombre de ocupación del botón [compra inmediata] de la página del producto en modo de exhibición',
|
||||
'tips' => 'Por favor, rellene el nombre de la operación de exhibición.',
|
||||
],
|
||||
'common_site_fictitious_return_title' => [
|
||||
'name' => 'Título de la información virtual',
|
||||
'desc' => 'Información clave predeterminada',
|
||||
'desc' => 'Información clave predeterminada, el título de la información virtual que el usuario muestra en los detalles del pedido después de comprar el producto virtual',
|
||||
'tips' => 'Por favor, rellene el título de la información virtual',
|
||||
],
|
||||
'common_site_fictitious_return_tips' => [
|
||||
'name' => 'Mensaje de recordatorio',
|
||||
'desc' => 'Información de recordatorio que el usuario muestra al usuario en los detalles del pedido después de comprar el producto virtual',
|
||||
'tips' => 'Por favor, rellene la información de recordatorio.',
|
||||
],
|
||||
'common_app_mini_alipay_tnt_inst_id' => [
|
||||
@ -4109,7 +4141,7 @@ return [
|
||||
],
|
||||
'common_is_mobile_concise_model' => [
|
||||
'name' => 'Modo simple del teléfono móvil',
|
||||
'desc' => 'Predeterminado No',
|
||||
'desc' => 'No por defecto, después de abrir, el menú inferior del lado web y el enlace de amistad no se muestran',
|
||||
'tips' => 'Por favor, elija si el teléfono es simple.',
|
||||
],
|
||||
'common_app_weixin_liveplayer' => [
|
||||
@ -4320,9 +4352,9 @@ return [
|
||||
'desc' => 'Verify Code variable identifier (...)',
|
||||
],
|
||||
'home_extraction_address_position' => [
|
||||
'name' => 'Recoger y elegir la ubicación geográfica',
|
||||
'desc' => 'Cierre predeterminado',
|
||||
'tips' => 'Por favor, elija recoger para elegir la ubicación geográfica.',
|
||||
'name' => 'Haga un pedido y elija su ubicación geográfica.',
|
||||
'desc' => 'Se cierra por defecto. después de abrir, debe seleccionar la ubicación actual y la dirección del usuario para mostrarla más recientemente antes de hacer un pedido y seleccionar la dirección de recogida.',
|
||||
'tips' => 'Por favor, elija hacer un pedido y recoger su propia ubicación geográfica.',
|
||||
],
|
||||
'home_search_is_keywords_where_and' => [
|
||||
'name' => 'Buscar varias palabras clave y relaciones',
|
||||
@ -4549,12 +4581,12 @@ return [
|
||||
],
|
||||
'common_buy_datetime_info' => [
|
||||
'name' => 'Hora especificada para hacer el pedido',
|
||||
'desc' => '',
|
||||
'desc' => 'Solo es válido en la misma ciudad y en el modo de autopedido.',
|
||||
'tips' => 'Por favor, elija la hora especificada para hacer el pedido.',
|
||||
],
|
||||
'common_buy_extraction_contact_info' => [
|
||||
'name' => 'Información de contacto para hacer un pedido',
|
||||
'desc' => '',
|
||||
'desc' => 'Solo válido en el modo de pedido de recogida propia',
|
||||
'tips' => 'Por favor, elija la información de contacto para hacer un pedido.',
|
||||
],
|
||||
'home_search_history_record' => [
|
||||
|
||||
@ -76,6 +76,9 @@ return [
|
||||
'upload_images_max_tips' => '最多上传{value}张图片',
|
||||
'upload_video_max_tips' => '最多上传{value}个视频',
|
||||
'upload_annex_max_tips' => '最多上传{value}个附件',
|
||||
'upload_images_suffix_tips' => '第{value}张图片格式有误',
|
||||
'upload_video_suffix_tips' => '第{value}个视频格式有误',
|
||||
'upload_annex_suffix_tips' => '第{value}个附件格式有误',
|
||||
'form_config_type_params_tips' => '表单[类型]参数配置有误',
|
||||
'form_config_value_params_tips' => '表单[类型]参数配置有误',
|
||||
'form_call_fun_not_exist_tips' => '表单定义的方法未定义',
|
||||
@ -339,6 +342,7 @@ return [
|
||||
'upd_time_title' => '更新时间',
|
||||
'price_min_title' => '最低价格',
|
||||
'price_max_title' => '最高价格',
|
||||
'shop_order' => '商城订单',
|
||||
'back_home_title' => '回到首页',
|
||||
'shop_home_title' => '商城首页',
|
||||
'home_title' => '首页',
|
||||
@ -452,6 +456,7 @@ return [
|
||||
'refuse_title' => '拒绝',
|
||||
'pass_title' => '通过',
|
||||
'agree_title' => '同意',
|
||||
'expire_title' => '过期',
|
||||
'order_title' => '订单',
|
||||
'install_title' => '安装',
|
||||
'uninstall_title' => '卸载',
|
||||
@ -581,6 +586,7 @@ return [
|
||||
'custom_title' => '自定义',
|
||||
'customer_title' => '客户',
|
||||
'customer_info_title' => '客户信息',
|
||||
'region_title' => '地区',
|
||||
// 商品基础相关
|
||||
'goods_name' => '商品名称',
|
||||
'goods_add_name' => '商品添加',
|
||||
@ -1164,6 +1170,23 @@ return [
|
||||
3 => '价格',
|
||||
4 => '最新',
|
||||
],
|
||||
// 用户商品收藏排序类型
|
||||
'common_goods_favor_order_by_type_list' => [
|
||||
0 => '综合',
|
||||
1 => '销量',
|
||||
2 => '热度',
|
||||
3 => '价格',
|
||||
4 => '最新',
|
||||
],
|
||||
// 用户商品浏览排序类型
|
||||
'common_goods_browse_order_by_type_list' => [
|
||||
0 => '综合',
|
||||
1 => '销量',
|
||||
2 => '热度',
|
||||
3 => '价格',
|
||||
4 => '最新',
|
||||
5 => '用户浏览',
|
||||
],
|
||||
// 数据排序规则
|
||||
'common_data_order_by_rule_list' => [
|
||||
0 => '降序(desc)',
|
||||
@ -1648,6 +1671,8 @@ return [
|
||||
],
|
||||
// 配置信息
|
||||
'config' => [
|
||||
'site_title_icon_power_tips' => '浏览器标题图标无权限',
|
||||
'site_title_icon_fail_tips' => '浏览器标题图标保存失败',
|
||||
'route_dir_no_power_tips' => '路由目录没有操作权限',
|
||||
'route_file_no_power_tips' => '路由配置文件没有操作权限',
|
||||
'route_file_config_no_exist_tips' => '路由规则文件不存在',
|
||||
@ -1733,7 +1758,7 @@ return [
|
||||
'upload_config_file_error_tips' => '配置信息为空或有误',
|
||||
'upload_config_file_handle_fail_tips' => '配置文件处理失败',
|
||||
'upload_invalid_packet_tips' => '无效数据包',
|
||||
'preview_url_tips' => '请在后台[ 手机->基础配置 ]先配置手机端h5地址(h5端需要使用uniapp版本打包)',
|
||||
'preview_url_tips' => '如需h5预览效果,请在后台[ 手机->基础配置 ]先配置手机端h5地址(h5端需要使用uniapp版本打包)',
|
||||
'form_item_desc' => '描述',
|
||||
'form_item_desc_message' => '描述内容格式2~60个字符',
|
||||
'form_item_apply_version' => '适用系统版本',
|
||||
@ -1877,8 +1902,8 @@ return [
|
||||
'form_item_brand_message' => '请选择品牌',
|
||||
'form_item_place_origin' => '生产地',
|
||||
'form_item_place_origin_message' => '请选择生产地',
|
||||
'form_item_inventory_unit' => '库存单位',
|
||||
'form_item_inventory_unit_message' => '库存单位格式1~6个字符',
|
||||
'form_item_inventory_unit' => '计量单位',
|
||||
'form_item_inventory_unit_message' => '计量单位格式1~6个字符',
|
||||
'form_item_give_integral' => '购买赠送积分比例',
|
||||
'form_item_give_integral_tips' => [
|
||||
'1. 按照商品金额比例乘以数量的比例进行发放',
|
||||
@ -2364,6 +2389,7 @@ return [
|
||||
'pay_log_insert_fail_tips' => '支付订单添加失败',
|
||||
'pay_log_id_empty_tips' => '日志id有误',
|
||||
'pay_log_update_fail_tips' => '日志订单更新失败',
|
||||
'pay_log_value_no_data_tips' => '无支付业务数据',
|
||||
],
|
||||
// 支付方式
|
||||
'payment' => [
|
||||
@ -3463,6 +3489,11 @@ return [
|
||||
'desc' => '使用png格式,建议300*300px',
|
||||
'tips' => '请上传正方形logo',
|
||||
],
|
||||
'home_site_title_icon' => [
|
||||
'name' => '浏览器标题图标',
|
||||
'desc' => '使用ico格式,建议128*128px',
|
||||
'tips' => '请上传浏览器标题图标',
|
||||
],
|
||||
'home_user_reg_type' => [
|
||||
'name' => '注册方式',
|
||||
'desc' => '未选择、前端站点将无法注册,可选择 [ 短信, 邮箱, 用户名 ]',
|
||||
@ -3912,7 +3943,7 @@ return [
|
||||
],
|
||||
'home_is_enable_userregister_agreement' => [
|
||||
'name' => '用户注册协议',
|
||||
'desc' => '默认关闭,开启后用户注册需要同意协议才可以注册',
|
||||
'desc' => '默认关闭,开启后用户注册需要同意协议才可以注册,仅对web端有效',
|
||||
'tips' => '请选择是否启用用户注册协议',
|
||||
],
|
||||
'home_order_aftersale_return_goods_contacts_name' => [
|
||||
@ -4083,16 +4114,17 @@ return [
|
||||
],
|
||||
'common_is_exhibition_mode_btn_text' => [
|
||||
'name' => '展示型操作名称',
|
||||
'desc' => '默认 立即咨询',
|
||||
'desc' => '默认 立即咨询,展示模式下商品页面的【立即购买】按钮占位名称',
|
||||
'tips' => '请填写展示型操作名称',
|
||||
],
|
||||
'common_site_fictitious_return_title' => [
|
||||
'name' => '虚拟信息标题',
|
||||
'desc' => '默认密钥信息',
|
||||
'desc' => '默认 密钥信息,用户购买虚拟商品后、在订单详情里面展示虚拟信息的标题',
|
||||
'tips' => '请填写虚拟信息标题',
|
||||
],
|
||||
'common_site_fictitious_return_tips' => [
|
||||
'name' => '提示信息',
|
||||
'desc' => '用户购买虚拟商品后、在订单详情里面展示给用户的提示信息',
|
||||
'tips' => '请填写提示信息',
|
||||
],
|
||||
'common_app_mini_alipay_tnt_inst_id' => [
|
||||
@ -4138,7 +4170,7 @@ return [
|
||||
],
|
||||
'common_is_mobile_concise_model' => [
|
||||
'name' => '手机简洁模式',
|
||||
'desc' => '默认否',
|
||||
'desc' => '默认否,开启后web端底部菜单、友情链接不显示',
|
||||
'tips' => '请选择是否手机简洁模式',
|
||||
],
|
||||
'common_app_weixin_liveplayer' => [
|
||||
@ -4349,9 +4381,9 @@ return [
|
||||
'desc' => '验证码变量标识符 [ #code# ]',
|
||||
],
|
||||
'home_extraction_address_position' => [
|
||||
'name' => '自提选择地理位置',
|
||||
'desc' => '默认关闭',
|
||||
'tips' => '请选择自提选择地理位置',
|
||||
'name' => '下单自提选择地理位置',
|
||||
'desc' => '默认关闭,开启后下单选择自提地址之前需要先选择用户当前位置、地址以最近展示',
|
||||
'tips' => '请选择下单自提选择地理位置',
|
||||
],
|
||||
'home_search_is_keywords_where_and' => [
|
||||
'name' => '搜索多个关键字并且关系',
|
||||
@ -4578,12 +4610,12 @@ return [
|
||||
],
|
||||
'common_buy_datetime_info' => [
|
||||
'name' => '下单指定时间',
|
||||
'desc' => '',
|
||||
'desc' => '仅同城、自提订单模式下有效',
|
||||
'tips' => '请选择下单指定时间',
|
||||
],
|
||||
'common_buy_extraction_contact_info' => [
|
||||
'name' => '下单联系信息',
|
||||
'desc' => '',
|
||||
'desc' => '仅自提订单模式下有效',
|
||||
'tips' => '请选择下单联系信息',
|
||||
],
|
||||
'home_search_history_record' => [
|
||||
|
||||
@ -18,6 +18,8 @@ use app\service\DiyApiService;
|
||||
use app\service\UserService;
|
||||
use app\service\MessageService;
|
||||
use app\service\GoodsCartService;
|
||||
use app\service\GoodsFavorService;
|
||||
use app\service\GoodsBrowseService;
|
||||
|
||||
/**
|
||||
* DIY装修处理服务层
|
||||
@ -341,6 +343,25 @@ class DiyModule
|
||||
}
|
||||
break;
|
||||
|
||||
// 商品魔方
|
||||
case 'goods-magic' :
|
||||
if(!empty($v['com_data']['content']['data_source']) && !empty($v['com_data']['content']['data_source_content']) && isset($v['com_data']['content']['data_source_content']['data_type']) && $v['com_data']['content']['data_source_content']['data_type'] == 1)
|
||||
{
|
||||
switch($v['com_data']['content']['data_source'])
|
||||
{
|
||||
// 用户商品收藏
|
||||
case 'user-goods-favor' :
|
||||
$v['com_data']['content']['data_source_content']['data_auto_list'] = GoodsFavorService::AutoGoodsFavorList($v['com_data']['content']['data_source_content']);
|
||||
break;
|
||||
|
||||
// 用户商品浏览
|
||||
case 'user-goods-browse' :
|
||||
$v['com_data']['content']['data_source_content']['data_auto_list'] = GoodsBrowseService::AutoGoodsBrowseList($v['com_data']['content']['data_source_content']);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// 文章列表
|
||||
case 'article-list' :
|
||||
$v['com_data']['content'] = self::ConfigViewArticleHandle($v['com_data']['content'], $article_data);
|
||||
@ -409,11 +430,7 @@ class DiyModule
|
||||
// 固定数据、用户信息
|
||||
if($tabs_data_config['content']['data_source'] == 'user-info')
|
||||
{
|
||||
$ret = DiyApiService::UserHeadData();
|
||||
$ret['data']['user_avatar'] = empty($ret['data']['user']) ? UserDefaultAvatar() : $ret['data']['user']['avatar'];
|
||||
$ret['data']['user_name_view'] = empty($ret['data']['user']) ? '用户名称' : $ret['data']['user']['user_name_view'];
|
||||
unset($ret['data']['user']);
|
||||
$tabs_data_config['content']['data_source_content']['data_list'][] = $ret['data'];
|
||||
$tabs_data_config['content']['data_source_content']['data_list'][] = self::UserHeadDataHandle();
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -476,11 +493,7 @@ class DiyModule
|
||||
// 固定数据、用户信息
|
||||
if($dmv['data_content']['data_source'] == 'user-info')
|
||||
{
|
||||
$ret = DiyApiService::UserHeadData();
|
||||
$ret['data']['user_avatar'] = empty($ret['data']['user']) ? UserDefaultAvatar() : $ret['data']['user']['avatar'];
|
||||
$ret['data']['user_name_view'] = empty($ret['data']['user']) ? '用户名称' : $ret['data']['user']['user_name_view'];
|
||||
unset($ret['data']['user']);
|
||||
$dmv['data_content']['data_source_content']['data_list'][] = $ret['data'];
|
||||
$dmv['data_content']['data_source_content']['data_list'][] = self::UserHeadDataHandle();
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -519,11 +532,7 @@ class DiyModule
|
||||
// 固定数据、用户信息
|
||||
if($v['com_data']['content']['data_source'] == 'user-info')
|
||||
{
|
||||
$ret = DiyApiService::UserHeadData();
|
||||
$ret['data']['user_avatar'] = empty($ret['data']['user']) ? UserDefaultAvatar() : $ret['data']['user']['avatar'];
|
||||
$ret['data']['user_name_view'] = empty($ret['data']['user']) ? '用户名称' : $ret['data']['user']['user_name_view'];
|
||||
unset($ret['data']['user']);
|
||||
$v['com_data']['content']['data_source_content']['data_list'][] = $ret['data'];
|
||||
$v['com_data']['content']['data_source_content']['data_list'][] = self::UserHeadDataHandle();
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -532,9 +541,7 @@ class DiyModule
|
||||
case 'user-info' :
|
||||
if(!empty($v['com_data']['content']))
|
||||
{
|
||||
$business_type = empty($v['com_data']['content']['config']) ? [] : $v['com_data']['content']['config'];
|
||||
$ret = DiyApiService::UserHeadData();
|
||||
$v['com_data']['content']['data'] = $ret['data'];
|
||||
$v['com_data']['content']['data'] = self::UserHeadDataHandle();
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -568,6 +575,20 @@ class DiyModule
|
||||
return $config;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户头信息处理
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2025-03-25
|
||||
* @desc description
|
||||
*/
|
||||
public static function UserHeadDataHandle()
|
||||
{
|
||||
$ret = DiyApiService::UserHeadData();
|
||||
return $ret['data'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 有效时间验证
|
||||
* @author Devil
|
||||
|
||||
@ -5,8 +5,8 @@
|
||||
<link rel="shortcut icon" type="image/x-icon" href="{{$public_host}}favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{:MyLang('common_service.diy.base_nav_title')}}</title>
|
||||
<script type="module" crossorigin src="{{$public_host}}static/diy/js/entry/index-299c6bce.js"></script>
|
||||
<link rel="stylesheet" href="{{$public_host}}static/diy/css/index-47987fe1.css">
|
||||
<script type="module" crossorigin src="{{$public_host}}static/diy/js/entry/index-c834ac63.js"></script>
|
||||
<link rel="stylesheet" href="{{$public_host}}static/diy/css/index-011987cc.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
{{/php}}
|
||||
|
||||
<!-- content start -->
|
||||
<div class="am-form-table-data-container am-form-table-data-detail am-min-height bk-am-color-white {{if isset($form_table['base']['is_detail_nav_operate']) and $form_table['base']['is_detail_nav_operate'] eq 1}}form-table-navigation-present-operate{{/if}}">
|
||||
<div class="am-form-table-data-container am-form-table-data-detail am-min-height am-background-white {{if isset($form_table['base']['is_detail_nav_operate']) and $form_table['base']['is_detail_nav_operate'] eq 1}}form-table-navigation-present-operate{{/if}}">
|
||||
<!-- content inside top hook -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||
<div class="plugins-tag">
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{{if !empty($goods_category_list)}}
|
||||
{{if !empty($module_data)}}
|
||||
<div class="goods-category-choice-content am-nbfc am-padding-lg">
|
||||
<ul class="goods-category-select-1 am-scrollable-vertical am-list am-list-border am-fl am-radius" data-level="1">
|
||||
{{foreach $goods_category_list as $k=>$v}}
|
||||
{{foreach $module_data as $k=>$v}}
|
||||
<li>
|
||||
<a href="javascript:;" data-index="{{$k}}" data-value="{{$v.id}}">
|
||||
<span class="data-name">{{$v.name}}</span>
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
<form class="am-form am-form-popup-fixed">
|
||||
<div class="layout-category-choice">
|
||||
<div class="goods-category-choice am-padding-sm form-container-category">
|
||||
{{:ModuleInclude('../../../module/view/layout/public/common/goods_category_choice')}}
|
||||
{{:ModuleInclude('../../../module/view/layout/public/common/goods_category_choice', $goods_category_list)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
<div data-tab-panel-0 class="am-tab-panel am-padding-0 am-active">
|
||||
<div class="layout-category-choice">
|
||||
<div class="goods-category-choice am-padding-sm form-container-category">
|
||||
{{:ModuleInclude('../../../module/view/layout/public/common/goods_category_choice')}}
|
||||
{{:ModuleInclude('../../../module/view/layout/public/common/goods_category_choice', $goods_category_list)}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -122,10 +122,10 @@ class AppMiniUserService
|
||||
if($ret['code'] == 0)
|
||||
{
|
||||
// 先从数据库获取用户信息
|
||||
$user = self::UserOpenOrUnionidData('alipay_openid', $ret['data']['user_id']);
|
||||
$user = self::UserOpenOrUnionidData('alipay_openid', $ret['data']['open_id']);
|
||||
if(empty($user))
|
||||
{
|
||||
$ret = DataReturn(MyLang('common_service.appminiuser.auth_login_success_tips'), 0, ['is_user_exist'=>0, 'openid'=>$ret['data']['user_id']]);
|
||||
$ret = DataReturn(MyLang('common_service.appminiuser.auth_login_success_tips'), 0, ['is_user_exist'=>0, 'openid'=>$ret['data']['open_id']]);
|
||||
} else {
|
||||
// 用户状态
|
||||
$ret = UserService::UserStatusCheck($user['id']);
|
||||
|
||||
@ -305,7 +305,7 @@ class ArticleService
|
||||
$attachment = ResourcesService::AttachmentParams($params, ['cover', 'share_images']);
|
||||
|
||||
// 编辑器内容
|
||||
$content = empty($params['content']) ? '' : ResourcesService::ContentStaticReplace(htmlspecialchars_decode($params['content']), 'add');
|
||||
$content = empty($params['content']) ? '' : str_replace("\n", '', ResourcesService::ContentStaticReplace(htmlspecialchars_decode($params['content']), 'add'));
|
||||
|
||||
// 详情图片
|
||||
$images = ResourcesService::RichTextMatchContentAttachment($content, 'article', 'images');
|
||||
|
||||
@ -69,6 +69,7 @@ class ConfigService
|
||||
'home_site_logo_wap',
|
||||
'home_site_logo_app',
|
||||
'home_site_logo_square',
|
||||
'home_site_title_icon',
|
||||
'common_customer_store_qrcode',
|
||||
'home_site_user_register_bg_images',
|
||||
'home_site_user_login_ad1_images',
|
||||
@ -310,6 +311,13 @@ class ConfigService
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// 浏览器图标
|
||||
$ret = self::SiteTitleIconHandle($params);
|
||||
if($ret['code'] != 0)
|
||||
{
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// 站点默认首页配置
|
||||
$ret = self::SiteDefaultIndexHandle($params);
|
||||
if($ret['code'] != 0)
|
||||
@ -524,6 +532,36 @@ class ConfigService
|
||||
return DataReturn(MyLang('handle_noneed'), 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 浏览器图标处理
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2017-01-02T23:08:19+0800
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function SiteTitleIconHandle($params = [])
|
||||
{
|
||||
if(!empty($params['home_site_title_icon']))
|
||||
{
|
||||
$file = RequestGet($params['home_site_title_icon']);
|
||||
if(!empty($file))
|
||||
{
|
||||
$ico_file = ROOT.'public'.DS.'favicon.ico';
|
||||
if(!is_writable($ico_file))
|
||||
{
|
||||
return DataReturn(MyLang('common_service.config.site_title_icon_power_tips').'['.$ico_file.']', -1);
|
||||
}
|
||||
if(file_put_contents($ico_file, $file) === false)
|
||||
{
|
||||
return DataReturn(MyLang('common_service.config.site_title_icon_fail_tips').'['.$ico_file.']', -1);
|
||||
}
|
||||
return DataReturn(MyLang('handle_success'), 0);
|
||||
}
|
||||
}
|
||||
return DataReturn(MyLang('handle_noneed'), 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 路由规则处理
|
||||
* @author Devil
|
||||
|
||||
@ -142,6 +142,7 @@ class ConstService
|
||||
'6.3.0' => ['value' => '6.3.0', 'name' => 'v6.3.0'],
|
||||
'6.4.0' => ['value' => '6.4.0', 'name' => 'v6.4.0'],
|
||||
'6.5.0' => ['value' => '6.5.0', 'name' => 'v6.5.0'],
|
||||
'6.6.0' => ['value' => '6.6.0', 'name' => 'v6.6.0'],
|
||||
],
|
||||
|
||||
// 搜索排序方式
|
||||
@ -360,7 +361,7 @@ class ConstService
|
||||
],
|
||||
// 站点类型
|
||||
'common_site_type_list' => [
|
||||
0 => ['value' => 0, 'name' => MyLang('common_site_type_list.0')],
|
||||
0 => ['value' => 0, 'name' => MyLang('common_site_type_list.0'), 'checked'=>true],
|
||||
1 => ['value' => 1, 'name' => MyLang('common_site_type_list.1')],
|
||||
2 => ['value' => 2, 'name' => MyLang('common_site_type_list.2')],
|
||||
3 => ['value' => 3, 'name' => MyLang('common_site_type_list.3')],
|
||||
@ -425,6 +426,23 @@ class ConstService
|
||||
3 => ['index' => 3, 'value' => 'g.min_price', 'name' => MyLang('common_goods_order_by_type_list.3')],
|
||||
4 => ['index' => 4, 'value' => 'g.id', 'name' => MyLang('common_goods_order_by_type_list.4')],
|
||||
],
|
||||
// 用户商品收藏排序类型
|
||||
'common_goods_favor_order_by_type_list' => [
|
||||
0 => ['index' => 0, 'value' => 'g.access_count,g.sales_count,f.id', 'name' => MyLang('common_goods_favor_order_by_type_list.0'), 'checked' => true],
|
||||
1 => ['index' => 1, 'value' => 'g.sales_count', 'name' => MyLang('common_goods_favor_order_by_type_list.1')],
|
||||
2 => ['index' => 2, 'value' => 'g.access_count', 'name' => MyLang('common_goods_favor_order_by_type_list.2')],
|
||||
3 => ['index' => 3, 'value' => 'g.min_price', 'name' => MyLang('common_goods_favor_order_by_type_list.3')],
|
||||
4 => ['index' => 4, 'value' => 'f.id', 'name' => MyLang('common_goods_favor_order_by_type_list.4')],
|
||||
],
|
||||
// 用户商品浏览排序类型
|
||||
'common_goods_browse_order_by_type_list' => [
|
||||
0 => ['index' => 0, 'value' => 'b.access_count,g.access_count,g.sales_count,b.id', 'name' => MyLang('common_goods_browse_order_by_type_list.0'), 'checked' => true],
|
||||
1 => ['index' => 1, 'value' => 'g.sales_count', 'name' => MyLang('common_goods_browse_order_by_type_list.1')],
|
||||
2 => ['index' => 2, 'value' => 'g.access_count', 'name' => MyLang('common_goods_browse_order_by_type_list.2')],
|
||||
3 => ['index' => 3, 'value' => 'g.min_price', 'name' => MyLang('common_goods_browse_order_by_type_list.3')],
|
||||
4 => ['index' => 4, 'value' => 'b.id', 'name' => MyLang('common_goods_browse_order_by_type_list.4')],
|
||||
5 => ['index' => 5, 'value' => 'b.access_count', 'name' => MyLang('common_goods_browse_order_by_type_list.5')],
|
||||
],
|
||||
// 数据排序规则
|
||||
'common_data_order_by_rule_list' => [
|
||||
0 => ['index' => 0, 'value' => 'desc', 'name' => MyLang('common_data_order_by_rule_list.0'), 'checked' => true],
|
||||
|
||||
@ -24,6 +24,7 @@ use app\service\GoodsService;
|
||||
use app\service\UserService;
|
||||
use app\service\OrderService;
|
||||
use app\service\GoodsFavorService;
|
||||
use app\service\GoodsBrowseService;
|
||||
use app\service\MessageService;
|
||||
use app\service\IntegralService;
|
||||
use app\service\DiyService;
|
||||
@ -167,6 +168,7 @@ class DiyApiService
|
||||
['key' => 'article-tabs', 'name' => '文章选项卡'],
|
||||
['key' => 'goods-list', 'name' => '商品列表'],
|
||||
['key' => 'goods-tabs', 'name' => '商品选项卡'],
|
||||
['key' => 'goods-magic', 'name' => '商品魔方'],
|
||||
['key' => 'img-magic', 'name' => '图片魔方'],
|
||||
['key' => 'data-magic', 'name' => '数据魔方'],
|
||||
['key' => 'data-tabs', 'name' => '数据选项卡'],
|
||||
@ -854,12 +856,14 @@ class DiyApiService
|
||||
*/
|
||||
public static function UserHeadData($params = [])
|
||||
{
|
||||
static $diy_user_info_data = null;
|
||||
if($diy_user_info_data === null)
|
||||
static $diyapi_user_info_data = null;
|
||||
if($diyapi_user_info_data === null)
|
||||
{
|
||||
$user = UserService::LoginUserInfo();
|
||||
$diy_user_info_data = [
|
||||
'user' => $user,
|
||||
$data = [
|
||||
'user_avatar' => empty($user) ? UserDefaultAvatar() : $user['avatar'],
|
||||
'user_name_view' => empty($user) ? '用户名称' : $user['user_name_view'],
|
||||
'user_number_code' => empty($user) ? '' : $user['number_code'],
|
||||
'order_count' => 0,
|
||||
'goods_favor_count' => 0,
|
||||
'goods_browse_count' => 0,
|
||||
@ -874,30 +878,73 @@ class DiyApiService
|
||||
];
|
||||
|
||||
// 订单总数
|
||||
$diy_user_info_data['order_count'] = OrderService::OrderTotal(array_merge($base_where, [
|
||||
$data['order_count'] = OrderService::OrderTotal(array_merge($base_where, [
|
||||
['is_delete_time', '=', 0],
|
||||
['user_is_delete_time', '=', 0],
|
||||
]));
|
||||
|
||||
// 商品收藏总数
|
||||
$diy_user_info_data['goods_favor_count'] = GoodsFavorService::GoodsFavorTotal($base_where);
|
||||
$data['goods_favor_count'] = GoodsFavorService::GoodsFavorTotal($base_where);
|
||||
|
||||
// 商品浏览总数
|
||||
$diy_user_info_data['goods_browse_count'] = GoodsBrowseService::GoodsBrowseTotal($base_where);
|
||||
$data['goods_browse_count'] = GoodsBrowseService::GoodsBrowseTotal($base_where);
|
||||
|
||||
// 用户积分
|
||||
$integral = IntegralService::UserIntegral($user['id']);
|
||||
$diy_user_info_data['integral_number'] = (!empty($integral) && !empty($integral['integral'])) ? $integral['integral'] : 0;
|
||||
$data['integral_number'] = (!empty($integral) && !empty($integral['integral'])) ? $integral['integral'] : 0;
|
||||
|
||||
// 未读消息总数
|
||||
$diy_user_info_data['message_unread_count'] = MessageService::UserMessageTotal([
|
||||
$data['message_unread_count'] = MessageService::UserMessageTotal([
|
||||
'user' => $user,
|
||||
'is_more' => 1,
|
||||
'is_read' => 0,
|
||||
]);
|
||||
}
|
||||
|
||||
// diy用户头数据钩子
|
||||
$hook_name = 'plugins_service_diyapi_user_head_data';
|
||||
MyEventTrigger($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'data' => &$data,
|
||||
'user' => $user,
|
||||
'params' => $params,
|
||||
]);
|
||||
|
||||
// 赋值常亮变量
|
||||
$diyapi_user_info_data = $data;
|
||||
}
|
||||
return DataReturn('success', 0, $diy_user_info_data);
|
||||
return DataReturn('success', 0, $diyapi_user_info_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品收藏自动数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2024-07-19
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function GoodsFavorAutoData($params = [])
|
||||
{
|
||||
$result = GoodsFavorService::AutoGoodsFavorList($params);
|
||||
return DataReturn('success', 0, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品浏览自动数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2024-07-19
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function GoodsBrowseAutoData($params = [])
|
||||
{
|
||||
$result = GoodsBrowseService::AutoGoodsBrowseList($params);
|
||||
return DataReturn('success', 0, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -921,6 +968,7 @@ class DiyApiService
|
||||
'appoint_data' => [
|
||||
'user_avatar' => UserDefaultAvatar(),
|
||||
'user_name_view' => '用户名称',
|
||||
'user_number_code' => '用户会员码',
|
||||
'order_count' => 0,
|
||||
'goods_favor_count' => 0,
|
||||
'goods_browse_count' => 0,
|
||||
@ -930,6 +978,7 @@ class DiyApiService
|
||||
'data' => [
|
||||
['name'=>'用户头像', 'field'=>'user_avatar', 'type'=>'images'],
|
||||
['name'=>'用户名称', 'field'=>'user_name_view', 'type'=>'text'],
|
||||
['name'=>'用户会员码', 'field'=>'user_number_code', 'type'=>'text'],
|
||||
['name'=>'订单总数', 'field'=>'order_count', 'type'=>'text'],
|
||||
['name'=>'商品收藏', 'field'=>'goods_favor_count', 'type'=>'text'],
|
||||
['name'=>'我的足迹', 'field'=>'goods_browse_count', 'type'=>'text'],
|
||||
@ -949,9 +998,10 @@ class DiyApiService
|
||||
['name'=>'简述', 'field' =>'simple_desc', 'type'=>'text'],
|
||||
['name'=>'型号', 'field' =>'model', 'type'=>'text'],
|
||||
['name'=>'品牌', 'field' =>'brand_name', 'type'=>'text'],
|
||||
['name'=>'品牌商品URL', 'field' =>'brand_goods_url', 'type'=>'link'],
|
||||
['name'=>'生产地', 'field' =>'place_origin_name', 'type'=>'text'],
|
||||
['name'=>'库存', 'field' =>'inventory', 'type'=>'text'],
|
||||
['name'=>'库存单位', 'field' =>'inventory_unit', 'type'=>'text'],
|
||||
['name'=>'计量单位', 'field' =>'inventory_unit', 'type'=>'text'],
|
||||
['name'=>'封面图片', 'field' =>'images', 'type'=>'images'],
|
||||
['name'=>'原价', 'field' =>'original_price', 'type'=>'text'],
|
||||
['name'=>'最低原价', 'field' =>'min_original_price', 'type'=>'text'],
|
||||
@ -1367,5 +1417,140 @@ class DiyApiService
|
||||
]);
|
||||
return DataReturn('success', 0, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品魔方初始化
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2024-07-19
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function GoodsMagicInit($params = [])
|
||||
{
|
||||
// 返回数据
|
||||
$data = [
|
||||
// 数据源
|
||||
'data_source' => [
|
||||
[
|
||||
'name' => '用户商品收藏',
|
||||
'type' => 'user-goods-favor',
|
||||
'custom_config' => [
|
||||
'data_type' => [1],
|
||||
'is_type_show' => 0,
|
||||
'filter_config' => [
|
||||
'data_url' => MyUrl('admin/diyapi/goodsfavorautodata'),
|
||||
'filter_form_config' => [
|
||||
[
|
||||
'type' => 'input',
|
||||
'config' => [
|
||||
'placeholder' => '请输入关键字',
|
||||
'type' => 'text',
|
||||
],
|
||||
'title' => '关键字',
|
||||
'form_name' => 'goods_keywords',
|
||||
],
|
||||
[
|
||||
'type' => 'input',
|
||||
'config' => [
|
||||
'default' => 4,
|
||||
'type' => 'number',
|
||||
],
|
||||
'title' => '显示数量',
|
||||
'form_name' => 'goods_number',
|
||||
],
|
||||
[
|
||||
'type' => 'radio',
|
||||
'title' => '排序类型',
|
||||
'form_name' => 'goods_order_by_type',
|
||||
'data' => MyConst('common_goods_favor_order_by_type_list'),
|
||||
'data_key' => 'index',
|
||||
'data_name' => 'name',
|
||||
'config' => [
|
||||
'default' => 0,
|
||||
]
|
||||
],
|
||||
[
|
||||
'type' => 'radio',
|
||||
'title' => '排序规则',
|
||||
'form_name' => 'goods_order_by_rule',
|
||||
'data' => MyConst('common_data_order_by_rule_list'),
|
||||
'data_key' => 'index',
|
||||
'data_name' => 'name',
|
||||
'config' => [
|
||||
'default' => 0,
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'name' => '用户商品浏览',
|
||||
'type' => 'user-goods-browse',
|
||||
'custom_config' => [
|
||||
'data_type' => [1],
|
||||
'is_type_show' => 0,
|
||||
'filter_config' => [
|
||||
'data_url' => MyUrl('admin/diyapi/goodsbrowseautodata'),
|
||||
'filter_form_config' => [
|
||||
[
|
||||
'type' => 'input',
|
||||
'config' => [
|
||||
'placeholder' => '请输入关键字',
|
||||
'type' => 'text',
|
||||
],
|
||||
'title' => '关键字',
|
||||
'form_name' => 'goods_keywords',
|
||||
],
|
||||
[
|
||||
'type' => 'input',
|
||||
'config' => [
|
||||
'default' => 4,
|
||||
'type' => 'number',
|
||||
],
|
||||
'title' => '显示数量',
|
||||
'form_name' => 'goods_number',
|
||||
],
|
||||
[
|
||||
'type' => 'radio',
|
||||
'title' => '排序类型',
|
||||
'form_name' => 'goods_order_by_type',
|
||||
'data' => MyConst('common_goods_browse_order_by_type_list'),
|
||||
'data_key' => 'index',
|
||||
'data_name' => 'name',
|
||||
'config' => [
|
||||
'default' => 0,
|
||||
]
|
||||
],
|
||||
[
|
||||
'type' => 'radio',
|
||||
'title' => '排序规则',
|
||||
'form_name' => 'goods_order_by_rule',
|
||||
'data' => MyConst('common_data_order_by_rule_list'),
|
||||
'data_key' => 'index',
|
||||
'data_name' => 'name',
|
||||
'config' => [
|
||||
'default' => 0,
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
// diy商品魔方初始化钩子
|
||||
$hook_name = 'plugins_service_diyapi_goods_magic_init';
|
||||
MyEventTrigger($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'data' => &$data,
|
||||
'params' => $params,
|
||||
]);
|
||||
return DataReturn('success', 0, $data);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -924,6 +924,11 @@ class DiyService
|
||||
// 地址信息
|
||||
$page = 'pages/diy/diy';
|
||||
$query = 'id='.$data['id'];
|
||||
// h5地址拼接
|
||||
if(!empty($h5_url))
|
||||
{
|
||||
$h5_url .= $page.'?'.$query;
|
||||
}
|
||||
foreach($platform as $v)
|
||||
{
|
||||
// 存储信息
|
||||
@ -944,7 +949,7 @@ class DiyService
|
||||
case 'h5' :
|
||||
if(!empty($h5_url))
|
||||
{
|
||||
$ret = (new \base\Qrcode())->Create(array_merge($dir_params, ['content'=>$h5_url.$page.'?'.$query]));
|
||||
$ret = (new \base\Qrcode())->Create(array_merge($dir_params, ['content'=>$h5_url]));
|
||||
if($ret['code'] == 0)
|
||||
{
|
||||
$status = true;
|
||||
@ -1076,12 +1081,15 @@ class DiyService
|
||||
}
|
||||
if($status)
|
||||
{
|
||||
$qrcode[] = [
|
||||
'name' => $v['name'],
|
||||
'type' => $v['value'],
|
||||
'url' => ($v['value'] == 'h5') ? $h5_url .= $page.'?'.$query : '',
|
||||
'qrcode' => ResourcesService::AttachmentPathViewHandle($dir_params['path'].$dir_params['filename']),
|
||||
];
|
||||
if(($v['value'] == 'h5' && !empty($h5_url)) || $v['value'] != 'h5')
|
||||
{
|
||||
$qrcode[] = [
|
||||
'name' => $v['name'],
|
||||
'type' => $v['value'],
|
||||
'url' => ($v['value'] == 'h5') ? $h5_url : '',
|
||||
'qrcode' => ResourcesService::AttachmentPathViewHandle($dir_params['path'].$dir_params['filename']),
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -57,16 +57,17 @@ class GoodsBrowseService
|
||||
|
||||
$where = ['goods_id'=>intval($params['goods_id']), 'user_id'=>$params['user']['id']];
|
||||
$temp = Db::name('GoodsBrowse')->where($where)->find();
|
||||
|
||||
$data = [
|
||||
'goods_id' => intval($params['goods_id']),
|
||||
'user_id' => $params['user']['id'],
|
||||
];
|
||||
if(empty($temp))
|
||||
{
|
||||
$data['access_count'] = 1;
|
||||
$data['add_time'] = time();
|
||||
$status = Db::name('GoodsBrowse')->insertGetId($data) > 0;
|
||||
} else {
|
||||
$data['access_count'] = $temp['access_count']+1;
|
||||
$data['upd_time'] = time();
|
||||
$status = Db::name('GoodsBrowse')->where($where)->update($data) !== false;
|
||||
}
|
||||
@ -225,5 +226,56 @@ class GoodsBrowseService
|
||||
}
|
||||
return DataReturn(MyLang('delete_fail'), -100);
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动读取商品浏览列表
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-09-29
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function AutoGoodsBrowseList($params = [])
|
||||
{
|
||||
$data = [];
|
||||
$user = UserService::LoginUserInfo();
|
||||
if(!empty($user))
|
||||
{
|
||||
// 基础条件
|
||||
$where = [
|
||||
['g.is_delete_time', '=', 0],
|
||||
['g.is_shelves', '=', 1],
|
||||
['b.user_id', '=', $user['id']],
|
||||
];
|
||||
|
||||
// 商品关键字
|
||||
if(!empty($params['goods_keywords']))
|
||||
{
|
||||
$where[] = ['g.title|g.simple_desc', 'like', '%'.$params['goods_keywords'].'%'];
|
||||
}
|
||||
|
||||
// 排序
|
||||
$order_by_type_list = MyConst('common_goods_browse_order_by_type_list');
|
||||
$order_by_rule_list = MyConst('common_data_order_by_rule_list');
|
||||
// 排序类型
|
||||
$order_by_type = !isset($params['goods_order_by_type']) || !array_key_exists($params['goods_order_by_type'], $order_by_type_list) ? $order_by_type_list[0]['value'] : $order_by_type_list[$params['goods_order_by_type']]['value'];
|
||||
// 排序值
|
||||
$order_by_rule = !isset($params['goods_order_by_rule']) || !array_key_exists($params['goods_order_by_rule'], $order_by_rule_list) ? $order_by_rule_list[0]['value'] : $order_by_rule_list[$params['goods_order_by_rule']]['value'];
|
||||
// 拼接排序
|
||||
$order_by = $order_by_type.' '.$order_by_rule;
|
||||
|
||||
// 获取数据
|
||||
$ret = self::GoodsBrowseList([
|
||||
'where' => $where,
|
||||
'm' => 0,
|
||||
'n' => empty($params['goods_number']) ? 10 : intval($params['goods_number']),
|
||||
'order_by' => $order_by,
|
||||
'field' => 'g.*,b.id,b.goods_id',
|
||||
]);
|
||||
$data = empty($ret['data']) ? [] : $ret['data'];
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -92,11 +92,11 @@ class GoodsCartService
|
||||
return (isset($spec['type']) && isset($spec['value'])) ? $spec['type'].':'.$spec['value'] : '';
|
||||
}, $v['spec'])));
|
||||
|
||||
// 获取商品基础信息
|
||||
// 获取商品基础信息、如果有请求参数指定数量则使用指定的数量
|
||||
$spec_params = array_merge($params, [
|
||||
'id' => $v['goods_id'],
|
||||
'spec' => $v['spec'],
|
||||
'stock' => $v['stock'],
|
||||
'stock' => empty($params['stock']) ? $v['stock'] : intval($params['stock']),
|
||||
]);
|
||||
$goods_base = GoodsService::GoodsSpecDetail($spec_params);
|
||||
$v['is_invalid'] = 0;
|
||||
@ -104,7 +104,7 @@ class GoodsCartService
|
||||
{
|
||||
$v['inventory'] = $goods_base['data']['spec_base']['inventory'];
|
||||
$v['price'] = $goods_base['data']['spec_base']['price'];
|
||||
$v['total_price'] = PriceNumberFormat($v['stock']* $v['price']);
|
||||
$v['total_price'] = PriceNumberFormat($v['stock']*floatval($v['price']));
|
||||
$v['original_price'] = $goods_base['data']['spec_base']['original_price'];
|
||||
$v['spec_base_id'] = $goods_base['data']['spec_base']['id'];
|
||||
$v['spec_buy_min_number'] = $goods_base['data']['spec_base']['buy_min_number'];
|
||||
|
||||
@ -333,5 +333,56 @@ class GoodsFavorService
|
||||
}
|
||||
return DataReturn(MyLang('delete_fail'), -100);
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动读取商品收藏列表
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-09-29
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function AutoGoodsFavorList($params = [])
|
||||
{
|
||||
$data = [];
|
||||
$user = UserService::LoginUserInfo();
|
||||
if(!empty($user))
|
||||
{
|
||||
// 基础条件
|
||||
$where = [
|
||||
['g.is_delete_time', '=', 0],
|
||||
['g.is_shelves', '=', 1],
|
||||
['f.user_id', '=', $user['id']],
|
||||
];
|
||||
|
||||
// 商品关键字
|
||||
if(!empty($params['goods_keywords']))
|
||||
{
|
||||
$where[] = ['g.title|g.simple_desc', 'like', '%'.$params['goods_keywords'].'%'];
|
||||
}
|
||||
|
||||
// 排序
|
||||
$order_by_type_list = MyConst('common_goods_favor_order_by_type_list');
|
||||
$order_by_rule_list = MyConst('common_data_order_by_rule_list');
|
||||
// 排序类型
|
||||
$order_by_type = !isset($params['goods_order_by_type']) || !array_key_exists($params['goods_order_by_type'], $order_by_type_list) ? $order_by_type_list[0]['value'] : $order_by_type_list[$params['goods_order_by_type']]['value'];
|
||||
// 排序值
|
||||
$order_by_rule = !isset($params['goods_order_by_rule']) || !array_key_exists($params['goods_order_by_rule'], $order_by_rule_list) ? $order_by_rule_list[0]['value'] : $order_by_rule_list[$params['goods_order_by_rule']]['value'];
|
||||
// 拼接排序
|
||||
$order_by = $order_by_type.' '.$order_by_rule;
|
||||
|
||||
// 获取数据
|
||||
$ret = self::GoodsFavorList([
|
||||
'where' => $where,
|
||||
'm' => 0,
|
||||
'n' => empty($params['goods_number']) ? 10 : intval($params['goods_number']),
|
||||
'order_by' => $order_by,
|
||||
'field' => 'g.*,f.id,f.goods_id',
|
||||
]);
|
||||
$data = empty($ret['data']) ? [] : $ret['data'];
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -48,7 +48,7 @@ class GoodsParamsService
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 获取分类下所有分类id
|
||||
// 获取分类所有分类上级id
|
||||
$data = [];
|
||||
$ids = GoodsCategoryService::GoodsCategoryParentIds($params['category_ids']);
|
||||
if(!empty($ids))
|
||||
|
||||
@ -424,7 +424,7 @@ class GoodsService
|
||||
// 数据主键id
|
||||
$data_id = isset($v[$data_key_field]) ? $v[$data_key_field] : 0;
|
||||
|
||||
// 当前库存单位
|
||||
// 当前计量单位
|
||||
$inventory_unit = empty($v['inventory_unit']) ? '' : ' / '.$v['inventory_unit'];
|
||||
// 原价基础字段数据
|
||||
// 原价标题名称
|
||||
@ -565,6 +565,7 @@ class GoodsService
|
||||
if(isset($v['brand_id']))
|
||||
{
|
||||
$v['brand_name'] = (!empty($brand_list) && is_array($brand_list) && array_key_exists($v['brand_id'], $brand_list)) ? $brand_list[$v['brand_id']] : '';
|
||||
$v['brand_goods_url'] = (APPLICATION == 'app') ? '/pages/goods-search/goods-search?brand='.$v['brand_id'] : MyUrl('index/search/index', ['brand'=>$v['brand_id']]);
|
||||
}
|
||||
|
||||
// 时间
|
||||
@ -1301,8 +1302,8 @@ class GoodsService
|
||||
}
|
||||
|
||||
// 编辑器内容
|
||||
$content_web = empty($params['content_web']) ? '' : ResourcesService::ContentStaticReplace(htmlspecialchars_decode($params['content_web']), 'add');
|
||||
$fictitious_goods_value = empty($params['fictitious_goods_value']) ? '' : ResourcesService::ContentStaticReplace(htmlspecialchars_decode($params['fictitious_goods_value']), 'add');
|
||||
$content_web = empty($params['content_web']) ? '' : str_replace("\n", '', ResourcesService::ContentStaticReplace(htmlspecialchars_decode($params['content_web']), 'add'));
|
||||
$fictitious_goods_value = empty($params['fictitious_goods_value']) ? '' : str_replace("\n", '', ResourcesService::ContentStaticReplace(htmlspecialchars_decode($params['fictitious_goods_value']), 'add'));
|
||||
|
||||
// 封面图片、默认相册第一张
|
||||
$images = empty($attachment['data']['images']) ? (isset($photo['data'][0]) ? $photo['data'][0] : '') : $attachment['data']['images'];
|
||||
@ -1550,9 +1551,10 @@ class GoodsService
|
||||
* @version 1.0.0
|
||||
* @date 2018-07-09
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
* @param [array] $params [输入参数]
|
||||
* @param [array] $base_count [教程参数个数,默认9]
|
||||
*/
|
||||
public static function GetFormGoodsSpecificationsParams($params = [])
|
||||
public static function GetFormGoodsSpecificationsParams($params = [], $base_count = 9)
|
||||
{
|
||||
$data = [];
|
||||
$title = [];
|
||||
@ -1560,7 +1562,6 @@ class GoodsService
|
||||
|
||||
// 基础字段数据字段长度
|
||||
// 销售价、原价、起购数、限购数、重量、体积、编码、条形码、扩展
|
||||
$base_count = 9;
|
||||
|
||||
// 规格值
|
||||
foreach($params as $k=>$v)
|
||||
|
||||
@ -48,7 +48,7 @@ class GoodsSpecService
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 获取分类下所有分类id
|
||||
// 获取分类所有分类上级id
|
||||
$data = [];
|
||||
$ids = GoodsCategoryService::GoodsCategoryParentIds($params['category_ids']);
|
||||
if(!empty($ids))
|
||||
|
||||
@ -34,22 +34,21 @@ class LinkService
|
||||
*/
|
||||
public static function HomeLinkList($params = [])
|
||||
{
|
||||
// 从缓存获取
|
||||
$key = SystemService::CacheKey('shopxo.cache_home_link_list_key');
|
||||
$data = MyCache($key);
|
||||
if($data == null || MyEnv('app_debug'))
|
||||
$data = [];
|
||||
$is_mobile = IsMobile();
|
||||
if(!$is_mobile || ($is_mobile && MyC('home_index_friendship_link_status') == 1))
|
||||
{
|
||||
$is_mobile = IsMobile();
|
||||
if(!$is_mobile || ($is_mobile && MyC('home_index_friendship_link_status') == 1))
|
||||
// 从缓存获取
|
||||
$key = SystemService::CacheKey('shopxo.cache_home_link_list_key');
|
||||
$data = MyCache($key);
|
||||
if($data == null || MyEnv('app_debug'))
|
||||
{
|
||||
$ret = self::LinkList(['where'=>['is_enable'=>1]]);
|
||||
$data = empty($ret['data']) ? [] : $ret['data'];
|
||||
} else {
|
||||
$data = [];
|
||||
}
|
||||
|
||||
// 存储缓存
|
||||
MyCache($key, $data, 180);
|
||||
// 存储缓存
|
||||
MyCache($key, $data, 180);
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
@ -53,6 +53,10 @@ class NavigationService
|
||||
// 获取导航数据
|
||||
$header = self::NavDataAll('header');
|
||||
}
|
||||
if(empty($header))
|
||||
{
|
||||
$header = [];
|
||||
}
|
||||
|
||||
// 底部导航
|
||||
if($footer === null || $is_query)
|
||||
@ -60,6 +64,10 @@ class NavigationService
|
||||
// 获取导航数据
|
||||
$footer = self::NavDataAll('footer');
|
||||
}
|
||||
if(empty($footer))
|
||||
{
|
||||
$footer = [];
|
||||
}
|
||||
|
||||
// 中间大导航添加首页导航
|
||||
array_unshift($header, [
|
||||
|
||||
@ -1811,6 +1811,30 @@ class OrderAftersaleService
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单售后选择类型列表
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2025-04-16
|
||||
* @desc description
|
||||
* @param [int] $order_id [订单id]
|
||||
*/
|
||||
public static function OrderAftersaleChoiceTypeList($order_id)
|
||||
{
|
||||
$aftersale_type_list = MyConst('common_order_aftersale_type_list');
|
||||
if(!empty($aftersale_type_list))
|
||||
{
|
||||
// 非(3已发货/待收货, 4已完成)则移除退货退款的类型
|
||||
$status = Db::name('Order')->where(['id'=>$order_id])->value('status');
|
||||
if(!in_array($status, [3,4]))
|
||||
{
|
||||
unset($aftersale_type_list[1]);
|
||||
}
|
||||
}
|
||||
return $aftersale_type_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单售后进度
|
||||
* @author Devil
|
||||
|
||||
@ -2467,13 +2467,10 @@ class OrderService
|
||||
self::OrderHistoryAdd($order['id'], $upd_data['status'], $order['status'], MyLang('delivery_title'), $creator, $creator_name);
|
||||
|
||||
// 同步微信发货
|
||||
if(isset($order['client_type']) && $order['client_type'] == 'weixin')
|
||||
$ret = self::OrderDeliverySyncWeixin($order, $params);
|
||||
if(!empty($ret) && isset($ret['code']) && $ret['code'] != 0)
|
||||
{
|
||||
$ret = self::OrderDeliverySyncWeixin($order, $params);
|
||||
if(!empty($ret) && isset($ret['code']) && $ret['code'] != 0)
|
||||
{
|
||||
return $ret;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// 完成
|
||||
|
||||
@ -268,7 +268,7 @@ class OrderSplitService
|
||||
['w.is_enable', '=', 1],
|
||||
['w.is_delete_time', '=', 0],
|
||||
];
|
||||
$field = 'distinct w.id,w.name,w.alias,w.lng,w.lat,w.province,w.city,w.county,w.address,wgs.inventory,w.is_default,w.level';
|
||||
$field = 'w.*,wgs.inventory';
|
||||
$warehouse = Db::name('WarehouseGoodsSpec')->alias('wgs')->join('warehouse_goods wg', 'wgs.warehouse_id=wg.warehouse_id')->join('warehouse w', 'wg.warehouse_id=w.id')->where($where)->field($field)->order('w.level desc,w.is_default desc,wgs.inventory desc')->select()->toArray();
|
||||
|
||||
// 商品仓库分配仓库组合钩子
|
||||
@ -300,7 +300,7 @@ class OrderSplitService
|
||||
}
|
||||
|
||||
// 总价计算
|
||||
$temp_v['total_price'] = PriceBeautify(PriceNumberFormat($temp_v['price']*$temp_v['stock']));
|
||||
$temp_v['total_price'] = PriceBeautify(PriceNumberFormat(floatval($temp_v['price'])*$temp_v['stock']));
|
||||
|
||||
// 减除数量
|
||||
$v['stock'] -= $w['inventory'];
|
||||
@ -309,6 +309,7 @@ class OrderSplitService
|
||||
if(!array_key_exists($w['id'], $result))
|
||||
{
|
||||
// 仓库
|
||||
unset($w['is_enable'], $w['is_delete_time'], $w['contacts_name'], $w['contacts_tel'], $w['add_time'], $w['upd_time']);
|
||||
$warehouse_handle = WarehouseService::WarehouseListHandle([$w]);
|
||||
$result[$w['id']] = $warehouse_handle[0];
|
||||
$result[$w['id']]['goods_items'] = [];
|
||||
|
||||
@ -61,8 +61,8 @@ class OtherHandleService
|
||||
|
||||
// 发货快递信息
|
||||
$express_id = isset($params['express_id']) ? intval($params['express_id']) : 0;
|
||||
$express_number = isset($params['express_number']) ? intval($params['express_number']) : '';
|
||||
$receiver_tel = isset($params['receiver_tel']) ? intval($params['receiver_tel']) : '';
|
||||
$express_number = isset($params['express_number']) ? $params['express_number'] : '';
|
||||
$receiver_tel = isset($params['receiver_tel']) ? $params['receiver_tel'] : '';
|
||||
|
||||
// 调用微信发货同步
|
||||
return (new \base\Wechat(AppMiniUserService::AppMiniConfig('common_app_mini_weixin_appid'), AppMiniUserService::AppMiniConfig('common_app_mini_weixin_appsecret')))->MiniUploadShippingInfo([
|
||||
|
||||
@ -347,5 +347,103 @@ class PayLogService
|
||||
}
|
||||
return DataReturn(MyLang('close_fail'), -100);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付订单页面列表数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2025-03-28
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function PayLogPagesListData($params = [])
|
||||
{
|
||||
// 数据
|
||||
$data = [
|
||||
// 商城订单
|
||||
[
|
||||
'name' => MyLang('shop_order'),
|
||||
'url' => (APPLICATION_CLIENT_TYPE == 'pc') ? MyUrl('index/order/index') : '/pages/user-order/user-order',
|
||||
]
|
||||
];
|
||||
// 支付日志页面列表数据
|
||||
$hook_name = 'plugins_service_paylog_pages_list_data';
|
||||
MyEventTrigger($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'params' => $params,
|
||||
'data' => &$data,
|
||||
]);
|
||||
|
||||
return DataReturn('success', 0, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付订单页面详情数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2025-03-28
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function PayLogPagesDetailData($params = [])
|
||||
{
|
||||
// 支付数据
|
||||
$where = [
|
||||
['user_id', '=', $params['user_id']],
|
||||
['status', '=', 1],
|
||||
];
|
||||
if(!empty($params['id']))
|
||||
{
|
||||
$where[] = ['id', '=', intval($params['id'])];
|
||||
}
|
||||
if(!empty($params['orderno']))
|
||||
{
|
||||
$where[] = ['log_no', '=', trim($params['orderno'])];
|
||||
}
|
||||
$pay_log = Db::name('PayLog')->where($where)->find();
|
||||
if(empty($pay_log))
|
||||
{
|
||||
return DataReturn(MyLang('no_data'), -1);
|
||||
}
|
||||
|
||||
// 获取业务数据
|
||||
$pay_log_business = Db::name('PayLogValue')->where(['pay_log_id'=>$pay_log['id']])->select()->toArray();
|
||||
if(empty($pay_log_business))
|
||||
{
|
||||
return DataReturn(MyLang('common_service.paylog.pay_log_value_no_data_tips'), -1);
|
||||
}
|
||||
$data = [];
|
||||
foreach($pay_log_business as $v)
|
||||
{
|
||||
// 系统订单
|
||||
if($pay_log['business_type'] == 'order')
|
||||
{
|
||||
$data[] = [
|
||||
'url' => (APPLICATION_CLIENT_TYPE == 'pc') ? MyUrl('index/order/detail', ['id'=>$v['business_id']]) : '/pages/user-order-detail/user-order-detail?id='.$v['business_id'],
|
||||
'order_no' => $v['business_no'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
// 支付日志页面详情数据
|
||||
$hook_name = 'plugins_service_paylog_pages_detail_data';
|
||||
MyEventTrigger($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'params' => $params,
|
||||
'data' => &$data,
|
||||
'pay_log' => $pay_log,
|
||||
'pay_log_business' => $pay_log_business,
|
||||
]);
|
||||
|
||||
if(empty($data))
|
||||
{
|
||||
return DataReturn(MyLang('common_service.paylog.pay_log_value_no_data_tips'), -1);
|
||||
}
|
||||
return DataReturn('success', 0, $data);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -426,7 +426,7 @@ class RegionService
|
||||
MyCache($key, $data, 60);
|
||||
}
|
||||
}
|
||||
return DataReturn('success', 0, $data);
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -990,7 +990,6 @@ class StatisticalService
|
||||
$goods_hot = self::GoodsHotTotal($params);
|
||||
$pay_type = self::PayTypeTotal($params);
|
||||
$order_whole_country = self::OrderWholeCountryTotal($params);
|
||||
$renew_usert = self::NewUserTotal($params);
|
||||
$buy_user = self::BuyUserTotal($params);
|
||||
$new_user = self::NewUserTotal($params);
|
||||
$ret = DataReturn('success', 0, [
|
||||
@ -999,7 +998,6 @@ class StatisticalService
|
||||
'goods_hot' => $goods_hot['data'],
|
||||
'pay_type' => $pay_type['data'],
|
||||
'order_whole_country' => $order_whole_country['data'],
|
||||
'renew_usert' => $renew_usert['data'],
|
||||
'buy_user' => $buy_user['data'],
|
||||
'new_user' => $new_user['data'],
|
||||
]);
|
||||
|
||||
@ -506,33 +506,39 @@ class UeditorService
|
||||
$list = [];
|
||||
if(!empty(self::$params[$field_name]))
|
||||
{
|
||||
// 当前站点域名或者附件域名不下载
|
||||
$attachment_host = GetUrlHost(SystemBaseService::AttachmentHost());
|
||||
// 源文件
|
||||
$source = is_array(self::$params[$field_name]) ? self::$params[$field_name] : [self::$params[$field_name]];
|
||||
foreach($source as $url)
|
||||
{
|
||||
$up = new \base\Uploader($url, $temp_config, 'remote');
|
||||
/**
|
||||
* 得到上传文件所对应的各个参数,数组结构
|
||||
* array(
|
||||
* "state" => "", //上传状态,上传成功时必须返回"SUCCESS"
|
||||
* "url" => "", //返回的地址
|
||||
* "path" => "", //绝对地址
|
||||
* "title" => "", //新文件名
|
||||
* "original" => "", //原始文件名
|
||||
* "type" => "" //文件类型
|
||||
* "size" => "", //文件大小
|
||||
* "hash" => "", //sha256值
|
||||
* )
|
||||
*/
|
||||
$data = $up->getFileInfo();
|
||||
if(isset($data['state']) && $data['state'] == 'SUCCESS')
|
||||
if(GetUrlHost($url) != $attachment_host)
|
||||
{
|
||||
$data['type'] = $attachment_type;
|
||||
$data['category_id'] = self::$category_id;
|
||||
$ret = AttachmentService::AttachmentAdd($data);
|
||||
if($ret['code'] == 0)
|
||||
$up = new \base\Uploader($url, $temp_config, 'remote');
|
||||
/**
|
||||
* 得到上传文件所对应的各个参数,数组结构
|
||||
* array(
|
||||
* "state" => "", //上传状态,上传成功时必须返回"SUCCESS"
|
||||
* "url" => "", //返回的地址
|
||||
* "path" => "", //绝对地址
|
||||
* "title" => "", //新文件名
|
||||
* "original" => "", //原始文件名
|
||||
* "type" => "" //文件类型
|
||||
* "size" => "", //文件大小
|
||||
* "hash" => "", //sha256值
|
||||
* )
|
||||
*/
|
||||
$data = $up->getFileInfo();
|
||||
if(isset($data['state']) && $data['state'] == 'SUCCESS')
|
||||
{
|
||||
$ret['data']['source'] = htmlspecialchars($url);
|
||||
array_push($list, $ret['data']);
|
||||
$data['type'] = $attachment_type;
|
||||
$data['category_id'] = self::$category_id;
|
||||
$ret = AttachmentService::AttachmentAdd($data);
|
||||
if($ret['code'] == 0)
|
||||
{
|
||||
$ret['data']['source'] = htmlspecialchars($url);
|
||||
array_push($list, $ret['data']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -382,30 +382,36 @@ class UserAddressService
|
||||
'is_default' => $is_default,
|
||||
];
|
||||
// 坐标
|
||||
if(array_key_exists('lng', $params))
|
||||
if(MyC('home_user_address_map_status') == 1)
|
||||
{
|
||||
$data['lng'] = isset($params['lng']) ? floatval($params['lng']) : 0;
|
||||
}
|
||||
if(array_key_exists('lat', $params))
|
||||
{
|
||||
$data['lat'] = isset($params['lat']) ? floatval($params['lat']) : 0;
|
||||
if(array_key_exists('lng', $params))
|
||||
{
|
||||
$data['lng'] = isset($params['lng']) ? floatval($params['lng']) : 0;
|
||||
}
|
||||
if(array_key_exists('lat', $params))
|
||||
{
|
||||
$data['lat'] = isset($params['lat']) ? floatval($params['lat']) : 0;
|
||||
}
|
||||
}
|
||||
// 身份证信息
|
||||
if(array_key_exists('idcard_name', $params))
|
||||
if(MyC('home_user_address_idcard_status') == 1)
|
||||
{
|
||||
$data['idcard_name'] = empty($params['idcard_name']) ? '' : $params['idcard_name'];
|
||||
}
|
||||
if(array_key_exists('idcard_number', $params))
|
||||
{
|
||||
$data['idcard_number'] = empty($params['idcard_number']) ? '' : $params['idcard_number'];
|
||||
}
|
||||
if(array_key_exists('idcard_front', $params))
|
||||
{
|
||||
$data['idcard_front'] = $attachment['data']['idcard_front'];
|
||||
}
|
||||
if(array_key_exists('idcard_back', $params))
|
||||
{
|
||||
$data['idcard_back'] = $attachment['data']['idcard_back'];
|
||||
if(array_key_exists('idcard_name', $params))
|
||||
{
|
||||
$data['idcard_name'] = empty($params['idcard_name']) ? '' : $params['idcard_name'];
|
||||
}
|
||||
if(array_key_exists('idcard_number', $params))
|
||||
{
|
||||
$data['idcard_number'] = empty($params['idcard_number']) ? '' : $params['idcard_number'];
|
||||
}
|
||||
if(array_key_exists('idcard_front', $params))
|
||||
{
|
||||
$data['idcard_front'] = $attachment['data']['idcard_front'];
|
||||
}
|
||||
if(array_key_exists('idcard_back', $params))
|
||||
{
|
||||
$data['idcard_back'] = $attachment['data']['idcard_back'];
|
||||
}
|
||||
}
|
||||
|
||||
// 用户地址保存前钩子
|
||||
|
||||
@ -311,6 +311,11 @@ class UserService
|
||||
if(!empty($token))
|
||||
{
|
||||
$user_cache_login_info = self::CacheUserTokenData($token);
|
||||
// 存在token用户信息则记录session
|
||||
if(!empty($user_cache_login_info))
|
||||
{
|
||||
self::UserLoginRecord(0, $user_cache_login_info);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -1053,11 +1058,15 @@ class UserService
|
||||
// 图像类库
|
||||
$images_obj = \base\Images::Instance(['is_new_name'=>false]);
|
||||
|
||||
// 文件上传校验
|
||||
$error = FileUploadError($params['img_field']);
|
||||
if($error !== true)
|
||||
// 文件上传校验、仅表单$_FILES的方式验证
|
||||
$is_file_url = !empty($params[$params['img_field']]) && substr($params[$params['img_field']], 0, 4) == 'http';
|
||||
if(!$is_file_url)
|
||||
{
|
||||
return DataReturn($error, -2);
|
||||
$error = FileUploadError($params['img_field']);
|
||||
if($error !== true)
|
||||
{
|
||||
return DataReturn($error, -2);
|
||||
}
|
||||
}
|
||||
|
||||
// 头像处理前钩子
|
||||
@ -1080,11 +1089,17 @@ class UserService
|
||||
|
||||
// 是否指定裁剪信息
|
||||
$original_dir = $root_path.$img_path.'original'.$date;
|
||||
if(!empty($params['img_width']) && !empty($params['img_height']) && isset($params['img_x']) && isset($params['img_y']))
|
||||
// 是否url链接地址
|
||||
if($is_file_url)
|
||||
{
|
||||
$original = $images_obj->GetCompressCut($_FILES[$params['img_field']], $original_dir, 800, 800, $params['img_x'], $params['img_y'], $params['img_width'], $params['img_height']);
|
||||
$original = $images_obj->DownloadImageSave($params[$params['img_field']], $original_dir);
|
||||
} else {
|
||||
$original = $images_obj->GetOriginal($_FILES[$params['img_field']], $original_dir);
|
||||
if(!empty($params['img_width']) && !empty($params['img_height']) && isset($params['img_x']) && isset($params['img_y']))
|
||||
{
|
||||
$original = $images_obj->GetCompressCut($_FILES[$params['img_field']], $original_dir, 800, 800, $params['img_x'], $params['img_y'], $params['img_width'], $params['img_height']);
|
||||
} else {
|
||||
$original = $images_obj->GetOriginal($_FILES[$params['img_field']], $original_dir);
|
||||
}
|
||||
}
|
||||
if(!empty($original))
|
||||
{
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user