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

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

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