提交 6a6d7718 编写于 作者: D Devil

api接口新增插件配置、发票功能优化

上级 76878f30
<!-- 操作栏 -->
<a class="am-btn am-btn-success am-btn-xs am-radius am-btn-block" href="{{$module_data.url}}">
<i class="am-icon-download"></i>
<span>下载</span>
</a>
{{if !empty($module_data['url'])}}
<a class="am-btn am-btn-success am-btn-xs am-radius am-btn-block" href="{{$module_data.url}}">
<i class="am-icon-download"></i>
<span>下载</span>
</a>
{{/if}}
<button type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-delete" data-url="{{:MyUrl('admin/appmini/delete', ['nav_type'=>$nav_type])}}" data-id="{{$module_data.name}}" data-key="ids">
<i class="am-icon-trash-o"></i>
<span>删除</span>
......
......@@ -35,8 +35,7 @@ class Base extends Common
// 参数
$params = $this->data_post;
$params['user'] = $this->user;
$data = BaseService::Common($params);
return DataReturn('success', 0, $data);
return DataReturn('success', 0, BaseService::Common($params));
}
}
?>
\ No newline at end of file
......@@ -14,6 +14,7 @@ use think\Db;
use think\facade\Hook;
use app\service\ResourcesService;
use app\service\QuickNavService;
use app\service\PluginsService;
/**
* 基础公共信息服务层
......@@ -93,6 +94,9 @@ class BaseService
// 快捷入口信息
'quick_nav' => QuickNavService::QuickNav(),
// 插件配置信息
'plugins_base' => PluginsService::PluginsBaseList(),
];
// 公共配置信息钩子
......
......@@ -28,10 +28,10 @@ class PluginsAdminService
public static $plugins_exclude_verification = ['view', 'shopxo', 'www'];
// 排除的文件后缀
private static $exclude_ext = ['php'];
public static $exclude_ext = ['php'];
// 读取插件排序方式(自定义排序 -> 最早安装)
private static $plugins_order_by = 'sort asc,id asc';
public static $plugins_order_by = 'sort asc,id asc';
/**
* 列表
......
......@@ -12,6 +12,7 @@ namespace app\service;
use think\Db;
use app\service\ResourcesService;
use app\service\PluginsAdminService;
/**
* 应用服务层
......@@ -45,51 +46,73 @@ class PluginsService
$ret = self::PluginsField($plugins, 'data');
if(!empty($ret['data']))
{
$data = json_decode($ret['data'], true);
if(!empty($data) && is_array($data))
// 数据处理
$data = self::PluginsDataHandle($ret['data'], $attachment_field);
// 存储缓存
self::PluginsCacheStorage($plugins, $data);
}
}
return DataReturn('处理成功', 0, $data);
}
/**
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-01-06
* @desc description
* @param [array|json] $data [应用配置数据]
* @param [array] $attachment_field [附件字段]
*/
public static function PluginsDataHandle($data, $attachment_field = [])
{
// 有数据并且非数组则解析json
if(!empty($data) && !is_array($data))
{
$data = json_decode($data, true);
}
// 处理配置数据
if(!empty($data) && is_array($data))
{
// 是否有自定义附件需要处理
if(!empty($attachment_field) && is_array($attachment_field))
{
foreach($attachment_field as $field)
{
// 是否有自定义附件需要处理
if(!empty($attachment_field) && is_array($attachment_field))
if(isset($data[$field]))
{
foreach($attachment_field as $field)
{
if(isset($data[$field]))
{
$data[$field.'_old'] = $data[$field];
$data[$field] = ResourcesService::AttachmentPathViewHandle($data[$field]);
}
}
} else {
// 所有附件后缀名称
$attachment_ext = config('ueditor.fileManagerAllowFiles');
$data[$field.'_old'] = $data[$field];
$data[$field] = ResourcesService::AttachmentPathViewHandle($data[$field]);
}
}
} else {
// 所有附件后缀名称
$attachment_ext = config('ueditor.fileManagerAllowFiles');
// 未自定义附件则自动根据内容判断处理附件,建议自定义附件字段名称处理更高效
if(!empty($attachment_ext) && is_array($attachment_ext))
// 未自定义附件则自动根据内容判断处理附件,建议自定义附件字段名称处理更高效
if(!empty($attachment_ext) && is_array($attachment_ext))
{
foreach($data as $k=>$v)
{
if(!empty($v) && !is_array($v) && !is_object($v))
{
foreach($data as $k=>$v)
$ext = strrchr(substr($v, -6), '.');
if($ext !== false)
{
if(!empty($v) && !is_array($v) && !is_object($v))
if(in_array($ext, $attachment_ext))
{
$ext = strrchr(substr($v, -6), '.');
if($ext !== false)
{
if(in_array($ext, $attachment_ext))
{
$data[$k.'_old'] = $v;
$data[$k] = ResourcesService::AttachmentPathViewHandle($v);
}
}
$data[$k.'_old'] = $v;
$data[$k] = ResourcesService::AttachmentPathViewHandle($v);
}
}
}
}
}
// 存储缓存
self::PluginsCacheStorage($plugins, $data);
}
}
return DataReturn('处理成功', 0, $data);
return empty($data) ? null : $data;
}
/**
......@@ -261,7 +284,7 @@ class PluginsService
* @param [string] $group [应用组(admin, index, api)]
* @param [array] $params [输入参数]
*/
public static function PluginsControlCall($plugins, $control, $action, $group = 'index', $params = [], $is_return_data = 0)
public static function PluginsControlCall($plugins, $control, $action, $group = 'index', $params = [])
{
// 应用校验
$ret = self::PluginsCheck($plugins);
......@@ -293,5 +316,29 @@ class PluginsService
}
return DataReturn('调用成功', 0, $obj->$action($params));
}
/**
* 所有有效插件配置列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-01-06
* @desc description
* @param [array] $params [输入参数]
*/
public static function PluginsBaseList($params = [])
{
$data = Db::name('Plugins')->where(['is_enable'=>1])->order(PluginsAdminService::$plugins_order_by)->field('id,plugins,data')->select();
if(!empty($data))
{
foreach($data as &$v)
{
$v['data'] = self::PluginsDataHandle($v['data']);
}
} else {
$data = null;
}
return $data;
}
}
?>
\ No newline at end of file
......@@ -32,23 +32,75 @@ return array (
'log_write' =>
array (
),
'plugins_service_quick_navigation_pc' =>
array (
0 => 'app\\plugins\\invoice\\Hook',
1 => 'app\\plugins\\signin\\Hook',
2 => 'app\\plugins\\exchangerate\\Hook',
3 => 'app\\plugins\\points\\Hook',
),
'plugins_service_quick_navigation_h5' =>
array (
0 => 'app\\plugins\\invoice\\Hook',
1 => 'app\\plugins\\signin\\Hook',
2 => 'app\\plugins\\exchangerate\\Hook',
3 => 'app\\plugins\\points\\Hook',
),
'plugins_service_quick_navigation_weixin' =>
array (
0 => 'app\\plugins\\invoice\\Hook',
1 => 'app\\plugins\\signin\\Hook',
2 => 'app\\plugins\\exchangerate\\Hook',
3 => 'app\\plugins\\points\\Hook',
),
'plugins_service_quick_navigation_alipay' =>
array (
0 => 'app\\plugins\\invoice\\Hook',
1 => 'app\\plugins\\signin\\Hook',
2 => 'app\\plugins\\exchangerate\\Hook',
3 => 'app\\plugins\\points\\Hook',
),
'plugins_service_quick_navigation_baidu' =>
array (
0 => 'app\\plugins\\invoice\\Hook',
1 => 'app\\plugins\\signin\\Hook',
2 => 'app\\plugins\\exchangerate\\Hook',
3 => 'app\\plugins\\points\\Hook',
),
'plugins_service_quick_navigation_qq' =>
array (
0 => 'app\\plugins\\invoice\\Hook',
1 => 'app\\plugins\\signin\\Hook',
2 => 'app\\plugins\\exchangerate\\Hook',
3 => 'app\\plugins\\points\\Hook',
),
'plugins_service_quick_navigation_toutiao' =>
array (
0 => 'app\\plugins\\invoice\\Hook',
1 => 'app\\plugins\\signin\\Hook',
2 => 'app\\plugins\\exchangerate\\Hook',
3 => 'app\\plugins\\points\\Hook',
),
'plugins_service_users_center_left_menu_handle' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
1 => 'app\\plugins\\membershiplevelvip\\Hook',
2 => 'app\\plugins\\signin\\Hook',
0 => 'app\\plugins\\invoice\\Hook',
1 => 'app\\plugins\\distribution\\Hook',
2 => 'app\\plugins\\membershiplevelvip\\Hook',
3 => 'app\\plugins\\signin\\Hook',
),
'plugins_service_header_navigation_top_right_handle' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
1 => 'app\\plugins\\membershiplevelvip\\Hook',
2 => 'app\\plugins\\signin\\Hook',
3 => 'app\\plugins\\exchangerate\\Hook',
0 => 'app\\plugins\\invoice\\Hook',
1 => 'app\\plugins\\distribution\\Hook',
2 => 'app\\plugins\\membershiplevelvip\\Hook',
3 => 'app\\plugins\\signin\\Hook',
4 => 'app\\plugins\\exchangerate\\Hook',
),
'plugins_service_order_status_change_history_success_handle' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
1 => 'app\\plugins\\points\\Hook',
0 => 'app\\plugins\\invoice\\Hook',
1 => 'app\\plugins\\distribution\\Hook',
2 => 'app\\plugins\\points\\Hook',
),
'plugins_service_order_aftersale_audit_handle_end' =>
array (
......@@ -99,10 +151,12 @@ return array (
'plugins_module_form_admin_user_index' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
1 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_module_form_admin_user_detail' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
1 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_css' =>
array (
......@@ -160,48 +214,6 @@ return array (
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_quick_navigation_pc' =>
array (
0 => 'app\\plugins\\signin\\Hook',
1 => 'app\\plugins\\exchangerate\\Hook',
2 => 'app\\plugins\\points\\Hook',
),
'plugins_service_quick_navigation_h5' =>
array (
0 => 'app\\plugins\\signin\\Hook',
1 => 'app\\plugins\\exchangerate\\Hook',
2 => 'app\\plugins\\points\\Hook',
),
'plugins_service_quick_navigation_weixin' =>
array (
0 => 'app\\plugins\\signin\\Hook',
1 => 'app\\plugins\\exchangerate\\Hook',
2 => 'app\\plugins\\points\\Hook',
),
'plugins_service_quick_navigation_alipay' =>
array (
0 => 'app\\plugins\\signin\\Hook',
1 => 'app\\plugins\\exchangerate\\Hook',
2 => 'app\\plugins\\points\\Hook',
),
'plugins_service_quick_navigation_baidu' =>
array (
0 => 'app\\plugins\\signin\\Hook',
1 => 'app\\plugins\\exchangerate\\Hook',
2 => 'app\\plugins\\points\\Hook',
),
'plugins_service_quick_navigation_qq' =>
array (
0 => 'app\\plugins\\signin\\Hook',
1 => 'app\\plugins\\exchangerate\\Hook',
2 => 'app\\plugins\\points\\Hook',
),
'plugins_service_quick_navigation_toutiao' =>
array (
0 => 'app\\plugins\\signin\\Hook',
1 => 'app\\plugins\\exchangerate\\Hook',
2 => 'app\\plugins\\points\\Hook',
),
'plugins_service_currency_data' =>
array (
0 => 'app\\plugins\\exchangerate\\Hook',
......
......@@ -17,8 +17,9 @@ web端
3. 插件缓存数据优化、重新安装保留配置信息
4. 友情链接新增手机端显隐控制
5. 公共动态数据表单参数优化
6. 动态数据列表组件条件新增气泡式弹出层
6. 动态数据列表组件条件新增气泡式弹出层、模块引入参数优化
7. 后台插件管理新增排序功能、自定义显示顺序+插件调用顺序
8. 公共接口新增插件配置返回
小程序
......@@ -26,6 +27,11 @@ web端
2. 微信小程序登录授权循环bug修复
插件
1. 新增签到插件
2. 新增积分商城插件
3. 分销插件取货点与向上返佣支持同步进行、可控制,用户列表新增分销等级展示
4. 会员等级插件优化用户列表新增会员等级展示
5. 发票插件支持下单开票
......
......@@ -38,8 +38,8 @@
</view>
</view>
</navigator>
<view a:if="{{item.status == 0 || item.status == 3}}" class="operation tr br-t-dashed">
<button class="cr-666 br" type="default" size="mini" onTap="edit_event" data-value="{{item.id}}" hover-class="none">编辑</button>
<view a:if="{{item.status == 0 || item.status == 3 || item.status == 4}}" class="operation tr br-t-dashed">
<button a:if="{{item.status == 0 || item.status == 3}}" class="cr-666 br" type="default" size="mini" onTap="edit_event" data-value="{{item.id}}" hover-class="none">编辑</button>
<button class="submit-delete" type="default" size="mini" onTap="delete_event" data-value="{{item.id}}" data-index="{{index}}" hover-class="none">删除</button>
</view>
</view>
......
......@@ -38,8 +38,8 @@
</view>
</view>
</navigator>
<view s-if="item.status == 0 || item.status == 3" class="operation tr br-t-dashed">
<button class="cr-666 br" type="default" size="mini" bindtap="edit_event" data-value="{{item.id}}" hover-class="none">编辑</button>
<view s-if="item.status == 0 || item.status == 3 || item.status == 4" class="operation tr br-t-dashed">
<button s-if="item.status == 0 || item.status == 3" class="cr-666 br" type="default" size="mini" bindtap="edit_event" data-value="{{item.id}}" hover-class="none">编辑</button>
<button class="submit-delete" type="default" size="mini" bindtap="delete_event" data-value="{{item.id}}" data-index="{{index}}" hover-class="none">删除</button>
</view>
</view>
......
......@@ -38,8 +38,8 @@
</view>
</view>
</navigator>
<view qq:if="{{item.status == 0 || item.status == 3}}" class="operation tr br-t-dashed">
<button class="cr-666 br" type="default" size="mini" bindtap="edit_event" data-value="{{item.id}}" hover-class="none">编辑</button>
<view qq:if="{{item.status == 0 || item.status == 3 || item.status == 4}}" class="operation tr br-t-dashed">
<button qq:if="{{item.status == 0 || item.status == 3}}" class="cr-666 br" type="default" size="mini" bindtap="edit_event" data-value="{{item.id}}" hover-class="none">编辑</button>
<button class="submit-delete" type="default" size="mini" bindtap="delete_event" data-value="{{item.id}}" data-index="{{index}}" hover-class="none">删除</button>
</view>
</view>
......
......@@ -38,8 +38,8 @@
</view>
</view>
</navigator>
<view tt:if="{{item.status == 0 || item.status == 3}}" class="operation tr br-t-dashed">
<button class="cr-666 br" type="default" size="mini" bindtap="edit_event" data-value="{{item.id}}" hover-class="none">编辑</button>
<view tt:if="{{item.status == 0 || item.status == 3 || item.status == 4}}" class="operation tr br-t-dashed">
<button tt:if="{{item.status == 0 || item.status == 3}}" class="cr-666 br" type="default" size="mini" bindtap="edit_event" data-value="{{item.id}}" hover-class="none">编辑</button>
<button class="submit-delete" type="default" size="mini" bindtap="delete_event" data-value="{{item.id}}" data-index="{{index}}" hover-class="none">删除</button>
</view>
</view>
......
......@@ -38,8 +38,8 @@
</view>
</view>
</navigator>
<view wx:if="{{item.status == 0 || item.status == 3}}" class="operation tr br-t-dashed">
<button class="cr-666 br" type="default" size="mini" bindtap="edit_event" data-value="{{item.id}}" hover-class="none">编辑</button>
<view wx:if="{{item.status == 0 || item.status == 3 || item.status == 4}}" class="operation tr br-t-dashed">
<button wx:if="{{item.status == 0 || item.status == 3}}" class="cr-666 br" type="default" size="mini" bindtap="edit_event" data-value="{{item.id}}" hover-class="none">编辑</button>
<button class="submit-delete" type="default" size="mini" bindtap="delete_event" data-value="{{item.id}}" data-index="{{index}}" hover-class="none">删除</button>
</view>
</view>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册