diff --git a/niucloud/app/adminapi/controller/diy/Diy.php b/niucloud/app/adminapi/controller/diy/Diy.php index f2e8f639e..b8b4e6e5e 100644 --- a/niucloud/app/adminapi/controller/diy/Diy.php +++ b/niucloud/app/adminapi/controller/diy/Diy.php @@ -205,17 +205,4 @@ class Diy extends BaseAdminController return success(( new DiyService() )->changeTemplate($data)); } - /** - * 获取页面预览数据 - */ - public function getPreviewData() - { - $data = $this->request->params([ - [ "id", "" ], - [ 'name', '' ] - ]); - $res = ( new DiyService() )->getPreviewData($data); - return success($res); - } - } diff --git a/niucloud/app/adminapi/controller/pay/PayRefund.php b/niucloud/app/adminapi/controller/pay/PayRefund.php new file mode 100644 index 000000000..2f96de55c --- /dev/null +++ b/niucloud/app/adminapi/controller/pay/PayRefund.php @@ -0,0 +1,65 @@ +request->params([ + ['refund_no', ''], + ['create_time', []], + ['status', ''] + ]); + return success(data: (new RefundService())->getPage($data)); + } + + /** + * 退款详情 + * @param $refund_no + * @return \think\Response + */ + public function detail($refund_no) + { + return success(data: (new RefundService())->getDetail($refund_no)); + } + + /** + * 获取退款方式 + */ + public function getRefundType() + { + return success(data:(new RefundDict())->getType()); + } + + /** + * 转账 + * @return \think\Response + */ + public function transfer() + { + $data = $this->request->params([ + ['refund_no', ''], + ['refund_type', []], + ['voucher', ''] + ]); + return success(data:(new RefundService())->refund($data)); + } +} \ No newline at end of file diff --git a/niucloud/app/adminapi/controller/sys/System.php b/niucloud/app/adminapi/controller/sys/System.php index 563fee910..32fa71500 100644 --- a/niucloud/app/adminapi/controller/sys/System.php +++ b/niucloud/app/adminapi/controller/sys/System.php @@ -99,4 +99,13 @@ class System extends BaseAdminController $key = input('key', ''); return success(data: ( new SystemService() )->setLayout($key)); } + + /** + * 环境变量查询 + * @return Response + */ + public function getEnvInfo() + { + return success(['app_debug' => env('app_debug', false)]); + } } diff --git a/niucloud/app/adminapi/route/auth.php b/niucloud/app/adminapi/route/auth.php index 01543bf1a..997875263 100644 --- a/niucloud/app/adminapi/route/auth.php +++ b/niucloud/app/adminapi/route/auth.php @@ -18,7 +18,7 @@ use think\facade\Route; /** * 路由 */ -Route::group('auth', function () { +Route::group('auth', function() { /***************************************************** 授权信息 ****************************************************/ Route::put('logout', 'login.Login/logout'); /***************************************************** 授权信息 ****************************************************/ diff --git a/niucloud/app/adminapi/route/diy.php b/niucloud/app/adminapi/route/diy.php index 998a94810..9c8cc654f 100644 --- a/niucloud/app/adminapi/route/diy.php +++ b/niucloud/app/adminapi/route/diy.php @@ -68,9 +68,6 @@ Route::group('diy', function() { // 编辑自定义页面分享内容 Route::put('diy/share', 'diy.Diy/modifyShare'); - // 获取页面预览数据 - Route::put('preview', 'diy.Diy/getPreviewData'); - /***************************************************** 配置相关 *****************************************************/ // 底部导航查询 diff --git a/niucloud/app/adminapi/route/pay.php b/niucloud/app/adminapi/route/pay.php index ca873aa5d..8bfdc635c 100644 --- a/niucloud/app/adminapi/route/pay.php +++ b/niucloud/app/adminapi/route/pay.php @@ -48,6 +48,15 @@ Route::group('pay', function () { Route::get('account/stat', 'pay.Account/stat'); //账单类型 Route::get('account/type', 'pay.Account/accountType'); + /***************************************************** 退款 *************************************************/ + //退款列表 + Route::get('refund', 'pay.PayRefund/pages'); + //退款详情 + Route::get('refund/:refund_no', 'pay.PayRefund/detail'); + //退款方式 + Route::get('refund/type', 'pay.PayRefund/getRefundType'); + //退款转账 + Route::post('refund/transfer', 'pay.PayRefund/transfer'); })->middleware([ AdminCheckToken::class, AdminCheckRole::class, diff --git a/niucloud/app/adminapi/route/sys.php b/niucloud/app/adminapi/route/sys.php index d1ae776a3..6155ce880 100644 --- a/niucloud/app/adminapi/route/sys.php +++ b/niucloud/app/adminapi/route/sys.php @@ -158,8 +158,8 @@ Route::group('sys', function () { Route::get('job', 'sys.System/checkJob'); //校验计划任务 Route::get('schedule', 'sys.System/checkSchedule'); - - + //环境变量 + Route::get('env', 'sys.System/getEnvInfo'); /***************************************************** 计划任务 ****************************************************/ //计划任务列表 Route::get('schedule/list', 'sys.Schedule/lists'); diff --git a/niucloud/app/api/controller/member/Address.php b/niucloud/app/api/controller/member/Address.php index 0b748ad03..03a0c6f5f 100644 --- a/niucloud/app/api/controller/member/Address.php +++ b/niucloud/app/api/controller/member/Address.php @@ -54,6 +54,7 @@ class Address extends BaseApiController ["city_id",0], ["district_id",0], ["address",""], + ["address_name", ""], ["full_address",""], ["lng",""], ["lat",""], @@ -78,6 +79,7 @@ class Address extends BaseApiController ["city_id",0], ["district_id",0], ["address",""], + ["address_name", ""], ["full_address",""], ["lng",""], ["lat",""], diff --git a/niucloud/app/dict/diy/ComponentDict.php b/niucloud/app/dict/diy/ComponentDict.php index 9afbb8493..9f5d12bd0 100644 --- a/niucloud/app/dict/diy/ComponentDict.php +++ b/niucloud/app/dict/diy/ComponentDict.php @@ -256,24 +256,13 @@ class ComponentDict 'list' => [] ], ], - 'GoodsList' => [ - 'title' => '商品列表', - 'icon' => 'iconfont-iconshangpinliebiao', - 'path' => 'edit-goods-list', - 'support_page' => [], - 'uses' => 0, - 'sort' => 10009, - 'value' => [ - 'list' => [] - ], - ], 'Notice' => [ 'title' => '公告', 'icon' => 'iconfont-icongonggao', 'path' => 'edit-notice', 'support_page' => [], 'uses' => 0, - 'sort' => 10009, + 'sort' => 10010, 'value' => [ "list" => [ "link" => [ @@ -284,7 +273,7 @@ class ComponentDict "iconType" => "system", "systemIcon" => "style_01", "showType" => "popup", - "imageUrld" => "" + "imageUrl" => "" ], ] ], diff --git a/niucloud/app/dict/diy/LinkDict.php b/niucloud/app/dict/diy/LinkDict.php index 72a04ac4f..076c37c69 100644 --- a/niucloud/app/dict/diy/LinkDict.php +++ b/niucloud/app/dict/diy/LinkDict.php @@ -33,7 +33,7 @@ class LinkDict 'title' => get_lang('dict_diy.system_link_index'), 'url' => '/app/pages/index/index', 'is_share' => 1, - 'action' => '' // 默认空,decorate 表示支持装修 + 'action' => 'decorate' // 默认空,decorate 表示支持装修 ], ] ], @@ -47,7 +47,7 @@ class LinkDict 'title' => get_lang('dict_diy.member_index'), 'url' => '/app/pages/member/index', 'is_share' => 1, - 'action' => '' + 'action' => 'decorate' ], [ 'name' => 'MEMBER_PERSONAL', @@ -76,6 +76,13 @@ class LinkDict 'url' => '/app/pages/member/commission', 'is_share' => 1, 'action' => '' + ], + [ + 'name' => 'MEMBER_ADDRESS', + 'title' => get_lang('dict_diy.member_my_address'), + 'url' => '/app/pages/member/address', + 'is_share' => 1, + 'action' => '' ] ] ], diff --git a/niucloud/app/dict/diy/PagesDict.php b/niucloud/app/dict/diy/PagesDict.php index 44b57c3de..8e12859a1 100644 --- a/niucloud/app/dict/diy/PagesDict.php +++ b/niucloud/app/dict/diy/PagesDict.php @@ -223,8 +223,12 @@ class PagesDict "bottom" => 6, "both" => 16 ], + "style" => "style-1", + "styleName" => "风格1", "textColor" => "#FFFFFF", - "bgUrl" => "static/resource/images/diy/member_style1_bg.png" + "bgUrl" => "static/resource/images/diy/member_style1_bg.png", + "bgColorStart" => "", + "bgColorEnd" => "" ], [ "path" => "edit-graphic-nav", @@ -558,7 +562,11 @@ class PagesDict "both" => 0 ], "textColor" => "#FFFFFF", - "bgUrl" => "" + "bgUrl" => "", + "style" => "style-1", + "styleName" => "风格1", + "bgColorStart" => "", + "bgColorEnd" => "" ], [ "path" => "edit-graphic-nav", @@ -822,18 +830,7 @@ class PagesDict ] ] - ], -// 'recharge' => [ -// "title" => "旅游", // 页面名称 -// 'cover' => 'static/resource/images/diy/template/tourism_member_index_cover.png', // 页面封面图 -// 'preview' => '', // 页面预览图 -// 'desc' => '酒店旅游住宿门票景点', // 页面描述 -// 'mode' => 'fixed', // 页面模式:diy:自定义,fixed:固定 -// 'data' => [ -// 'component' => 'recharge-member', // 模板组件名称 -// 'link' => '' // 装修链接 -// ] -// ] + ] ] ]; diff --git a/niucloud/app/dict/diy/TemplateDict.php b/niucloud/app/dict/diy/TemplateDict.php index acaf93a26..2c9ff6e12 100644 --- a/niucloud/app/dict/diy/TemplateDict.php +++ b/niucloud/app/dict/diy/TemplateDict.php @@ -26,17 +26,17 @@ class TemplateDict $system_pages = [ 'DIY_INDEX' => [ 'title' => get_lang('dict_diy.page_index'), - 'page' => 'app/pages/index/index', + 'page' => '/app/pages/index/index', 'action' => 'decorate' // 页面是否装修标识,为空标识不装修,decorate:装修 ], 'DIY_MEMBER_INDEX' => [ 'title' => get_lang('dict_diy.page_member_index'), - 'page' => 'app/pages/member/index', + 'page' => '/app/pages/member/index', 'action' => 'decorate' ], 'DIY_PAGE' => [ 'title' => get_lang('dict_diy.page_diy'), - 'page' => 'app/pages/index/diy', + 'page' => '/app/pages/index/diy', 'action' => '' ] ]; diff --git a/niucloud/app/dict/menu/admin.php b/niucloud/app/dict/menu/admin.php index f8090f7ce..98f9f061e 100644 --- a/niucloud/app/dict/menu/admin.php +++ b/niucloud/app/dict/menu/admin.php @@ -1,1491 +1,1562 @@ '概况', - 'menu_key' => 'overview', - 'menu_type' => 1, - 'icon' => 'element-Monitor', - 'api_url' => '', - 'router_path' => 'overview', - 'view_path' => 'index/overview', - 'methods' => '', - 'sort' => 100, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '应用中心', - 'menu_short_name' => '应用', - 'menu_key' => 'app_center', - 'menu_type' => 0, - 'icon' => 'iconfont-icona-shouyediannao', - 'api_url' => '', - 'router_path' => 'apps', - 'view_path' => '', - 'methods' => '', - 'sort' => 60, - 'status' => 1, - 'is_show' => 1, - 'menu_attr' => 'system', - 'children' => [ - [ - 'menu_name' => '应用管理', - 'menu_key' => 'app_index', - 'menu_type' => 1, - 'icon' => 'iconfont-iconyingyongshichang', - 'api_url' => '', - 'router_path' => 'index', - 'view_path' => 'index/index', - 'methods' => '', - 'sort' => 100, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '我的星标', - 'menu_key' => 'app_star', - 'menu_type' => 1, - 'icon' => 'iconfont-iconwodexingbiao', - 'api_url' => '', - 'router_path' => 'concern', - 'view_path' => 'index/concern', - 'methods' => '', - 'sort' => 100, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '历史查看', - 'menu_key' => 'app_record', - 'menu_type' => 1, - 'icon' => 'iconfont-iconchakanlishi', - 'api_url' => '', - 'router_path' => 'history', - 'view_path' => 'index/history', - 'methods' => '', - 'sort' => 100, - 'status' => 1, - 'is_show' => 0, - ] - - ] - ], - [ - 'menu_name' => '装修发布', - 'menu_short_name' => '装修', - 'menu_key' => 'website', - 'menu_type' => 0, - 'icon' => 'iconfont-iconicon_huojian', - 'api_url' => '', - 'router_path' => 'website', - 'view_path' => '', - 'methods' => '', - 'sort' => 90, - 'status' => 1, - 'is_show' => 1, - 'menu_attr' => 'common', - 'children' => [ - [ - 'menu_name' => '装修管理', - 'menu_key' => 'diy', - 'menu_type' => 0, - 'icon' => 'iconfont-iconzhuangxiu2', - 'api_url' => '', - 'router_path' => 'diy', - 'view_path' => '', - 'methods' => '', - 'sort' => 99, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '页面装修', - 'menu_key' => 'diy_page_decorate', - 'menu_type' => 1, - 'icon' => 'element-House', - 'api_url' => '', - 'router_path' => 'index', - 'view_path' => 'diy/index', - 'methods' => '', - 'sort' => 100, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '保存', - 'menu_key' => 'diy_page_update', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'diy/diy', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'post', - 'sort' => 95, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '微页面', - 'menu_key' => 'diy_page_list', - 'menu_type' => 1, - 'icon' => 'iconfont-icondianpuzhuangxiu', - 'api_url' => 'diy/diy', - 'router_path' => 'list', - 'view_path' => 'diy/list', - 'methods' => 'get', - 'sort' => 90, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '页面路径', - 'menu_key' => 'diy_page_route', - 'menu_type' => 1, - 'icon' => 'iconfont-icondianpuzhuangxiu', - 'api_url' => 'diy/diy', - 'router_path' => 'route', - 'view_path' => 'diy/route', - 'methods' => 'get', - 'sort' => 85, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '底部导航', - 'menu_key' => 'diy_bottom', - 'menu_type' => 1, - 'icon' => 'iconfont-icondibudaohang', - 'api_url' => 'diy/bottom', - 'router_path' => 'tabbar', - 'view_path' => 'diy/tabbar', - 'methods' => 'get', - 'sort' => 80, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '保存', - 'menu_key' => 'diy_tabbar_update', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'diy/bottom', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'post', - 'sort' => 100, - 'status' => 1, - 'is_show' => 1, - ], - ], - ] - ] - ], - [ - 'menu_name' => '渠道管理', - 'menu_short_name' => '渠道', - 'menu_key' => 'channel', - 'menu_type' => 0, - 'icon' => 'iconfont-iconicon_huojian', - 'api_url' => '', - 'router_path' => 'channel', - 'view_path' => '', - 'methods' => '', - 'sort' => 44, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '电脑端', - 'menu_key' => 'pc_config', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => '', - 'router_path' => 'pc/config', - 'view_path' => 'channel/pc/config', - 'methods' => '', - 'sort' => 100, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => 'H5端', - 'menu_key' => 'h5_config', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'channel/h5/config', - 'router_path' => 'h5/config', - 'view_path' => 'channel/h5/config', - 'methods' => 'put', - 'sort' => 90, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '微信公众号', - 'menu_key' => 'channel_wechat', - 'menu_type' => 1, - 'icon' => 'iconfont-iconweixingongzhonghao1', - 'api_url' => 'wechat/access', - 'router_path' => 'wechat', - 'view_path' => 'channel/wechat/access', - 'methods' => '', - 'sort' => 80, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '发布教程', - 'menu_key' => 'wechat_course', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'wechat/course', - 'router_path' => 'wechat/course', - 'view_path' => 'channel/wechat/course', - 'methods' => 'get', - 'sort' => 100, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '公众号配置', - 'menu_key' => 'wechat_config', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'wechat/config', - 'router_path' => 'wechat/config', - 'view_path' => 'channel/wechat/config', - 'methods' => 'get', - 'sort' => 90, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '自定义菜单', - 'menu_key' => 'wechat_menu', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'wechat/menu', - 'router_path' => 'wechat/menu', - 'view_path' => 'channel/wechat/menu', - 'methods' => 'get', - 'sort' => 80, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '模板消息', - 'menu_key' => 'wechat_template_message', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'wechat/template', - 'router_path' => 'wechat/message', - 'view_path' => 'channel/wechat/template', - 'methods' => 'get', - 'sort' => 70, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '微信小程序', - 'menu_key' => 'weapp_access', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'weapp/access', - 'router_path' => 'weapp', - 'view_path' => 'channel/weapp/access', - 'methods' => 'get', - 'sort' => 70, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '配置教程', - 'menu_key' => 'weapp_course', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'weapp/course', - 'router_path' => 'weapp/course', - 'view_path' => 'channel/weapp/course', - 'methods' => 'get', - 'sort' => 100, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '小程序配置', - 'menu_key' => 'weapp_config', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'weapp/config', - 'router_path' => 'weapp/config', - 'view_path' => 'channel/weapp/config', - 'methods' => 'get', - 'sort' => 90, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '订阅消息', - 'menu_key' => 'weapp_template_message', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'weapp/template', - 'router_path' => 'weapp/message', - 'view_path' => 'channel/weapp/template', - 'methods' => 'get', - 'sort' => 80, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '小程序发布', - 'menu_key' => 'weapp_code', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'weapp/code', - 'router_path' => 'weapp/code', - 'view_path' => 'channel/weapp/code', - 'methods' => 'get', - 'sort' => 70, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '支付宝小程序', - 'menu_key' => 'aliapp_weapp_access', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'aliapp/access', - 'router_path' => 'aliapp', - 'view_path' => 'channel/aliapp/access', - 'methods' => 'get', - 'sort' => 50, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '支付宝配置', - 'menu_key' => 'aliapp_config', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'aliapp/config', - 'router_path' => 'aliapp/config', - 'view_path' => 'channel/aliapp/config', - 'methods' => 'put', - 'sort' => 90, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '配置教程', - 'menu_key' => 'aliapp_course', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'aliapp/course', - 'router_path' => 'aliapp/course', - 'view_path' => 'channel/aliapp/course', - 'methods' => 'get', - 'sort' => 100, - 'status' => 1, - 'is_show' => 0, - ], - ] - ], - [ - 'menu_name' => '素材管理', - 'menu_key' => 'attachment', - 'menu_type' => 1, - 'icon' => 'iconfont-iconsucaiguanli', - 'api_url' => 'sys/attachment', - 'router_path' => 'attachment', - 'view_path' => 'tools/attachment', - 'methods' => 'get', - 'sort' => 97, - 'status' => 1, - 'is_show' => 1, - ], - ] - ], - [ - 'menu_name' => '会员管理', - 'menu_short_name' => '会员', - 'menu_key' => 'member', - 'menu_type' => 0, - 'icon' => 'iconfont-iconhuiyuan2', - 'api_url' => '', - 'router_path' => 'member', - 'view_path' => '', - 'methods' => '', - 'sort' => 70, - 'status' => 1, - 'is_show' => 1, - 'menu_attr' => 'system', - 'children' => [ - [ - 'menu_name' => '会员列表', - 'menu_key' => 'member_list', - 'menu_type' => 1, - 'icon' => 'iconfont-iconhuiyuanliebiao', - 'api_url' => 'member/member', - 'router_path' => 'member', - 'view_path' => 'member/member', - 'methods' => 'get', - 'sort' => 100, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - - 'menu_name' => '编辑', - 'menu_key' => 'member_update', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'member/modify//', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'put', - 'sort' => 0, - 'status' => 1, - 'is_show' => 1, - ], - ] - ], - [ - 'menu_name' => '会员详情', - 'menu_key' => 'member_info', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'member/member/', - 'router_path' => 'detail', - 'view_path' => 'member/member_detail', - 'methods' => 'get', - 'sort' => 90, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '会员标签', - 'menu_key' => 'member_label', - 'menu_type' => 1, - 'icon' => 'iconfont-iconhuiyuanbiaoqian', - 'api_url' => 'member/label', - 'router_path' => 'label', - 'view_path' => 'member/label', - 'methods' => 'get', - 'sort' => 80, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - - 'menu_name' => '编辑标签', - 'menu_key' => 'member_label_update', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'member/label/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'put', - 'sort' => 0, - 'status' => 1, - 'is_show' => 1, - ], - [ - - 'menu_name' => '添加标签', - 'menu_key' => 'member_label_add', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'member/label', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'post', - 'sort' => 0, - 'status' => 1, - 'is_show' => 1, - ], - [ - - 'menu_name' => '删除标签', - 'menu_key' => 'member_label_delete', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'member/label/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'delete', - 'sort' => 0, - 'status' => 1, - 'is_show' => 1, - ], - ] - ], - [ - 'menu_name' => '会员积分', - 'menu_key' => 'member_point', - 'menu_type' => 1, - 'icon' => 'iconfont-iconhuiyuanjifen', - 'api_url' => 'member/account/point', - 'router_path' => 'point', - 'view_path' => 'member/point', - 'methods' => 'get', - 'sort' => 70, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '会员余额', - 'menu_key' => 'member_balance', - 'menu_type' => 1, - 'icon' => 'iconfont-iconhuiyuanyue', - 'api_url' => 'member/account/balance', - 'router_path' => 'balance', - 'view_path' => 'member/balance', - 'methods' => 'get', - 'sort' => 60, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '会员佣金', - 'menu_key' => 'member_commission', - 'menu_type' => 1, - 'icon' => 'iconfont-iconhuiyuanyongjin', - 'api_url' => 'member/account/commission', - 'router_path' => 'commission', - 'view_path' => 'member/commission', - 'methods' => 'get', - 'sort' => 50, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '财务流水', - 'menu_key' => 'site_account_list', - 'menu_type' => 1, - 'icon' => 'iconfont-iconcaiwuliushui', - 'api_url' => 'finance/account', - 'router_path' => 'account', - 'view_path' => 'finance/account', - 'methods' => 'get', - 'sort' => 40, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '线下支付', - 'menu_key' => 'site_pay_offlinepay', - 'menu_type' => 1, - 'icon' => 'iconfont-iconxianxiazhifu2', - 'api_url' => 'pay/offlinepay', - 'router_path' => 'pay/offlinepay', - 'view_path' => 'finance/offlinepay', - 'methods' => 'get', - 'sort' => 30, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '通过', - 'menu_key' => 'site_pay_audit_pass', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'pay/pass/:out_trade_no', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'put', - 'sort' => 99, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '拒绝', - 'menu_key' => 'site_pay_audit_refuse', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'pay/refuse/:out_trade_no', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'put', - 'sort' => 99, - 'status' => 1, - 'is_show' => 1, - ], - ] - ], - [ - 'menu_name' => '支付单据详情', - 'menu_key' => 'site_pay_detail', - 'menu_type' => 1, - 'icon' => 'element-Postcard', - 'api_url' => 'pay/detail', - 'router_path' => 'pay/detail', - 'view_path' => 'finance/pay_detail', - 'methods' => 'get', - 'sort' => 20, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '会员提现', - 'menu_key' => 'cash_out_list', - 'menu_type' => 1, - 'icon' => 'iconfont-iconhuiyuantixian', - 'api_url' => 'member/cash_out', - 'router_path' => 'cash_out', - 'view_path' => 'finance/cash_out', - 'methods' => 'get', - 'sort' => 10, - 'status' => 1, - 'is_show' => 1, - ], + 'menu_name' => '应用管理', + 'menu_key' => 'app_manage', + 'menu_type' => 1, + 'icon' => 'element-Monitor', + 'api_url' => '', + 'router_path' => 'app_manage', + 'view_path' => '', + 'methods' => '', + 'sort' => 99, + 'status' => 1, + 'is_show' => 0, + 'children' => [ + [ + 'menu_name' => '应用管理', + 'menu_key' => 'app_manage_index', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => '', + 'router_path' => '', + 'view_path' => 'index/app_manage', + 'methods' => 'get', + 'status' => 1, ], - ], - [ - 'menu_name' => '系统设置', - 'menu_short_name' => '系统', - 'menu_key' => 'setting', - 'menu_type' => 0, - 'icon' => 'iconfont-iconshezhi1', - 'api_url' => '', - 'router_path' => 'setting', - 'view_path' => '', - 'methods' => '', - 'sort' => 40, - 'status' => 1, - 'is_show' => 1, - 'menu_attr' => 'common', - 'children' => [ - [ - 'menu_name' => '基础设置', - 'menu_key' => 'basis', - 'menu_type' => 0, - 'icon' => 'element-Setting', - 'api_url' => '', - 'router_path' => 'basis', - 'view_path' => '', - 'methods' => '', - 'sort' => 49, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '网站设置', - 'menu_key' => 'setting_system', - 'menu_type' => 1, - 'icon' => 'element-Basketball', - 'api_url' => 'sys/config/website', - 'router_path' => 'system', - 'view_path' => 'setting/system', - 'methods' => 'get', - 'sort' => 100, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '版权设置', - 'menu_key' => 'setting_copyright', - 'menu_type' => 1, - 'icon' => 'iconfont-iconbanquan1', - 'api_url' => 'sys/config/copyright', - 'router_path' => 'copyright', - 'view_path' => 'setting/copyright', - 'methods' => 'get', - 'sort' => 90, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '后台登录', - 'menu_key' => 'setting_login', - 'menu_type' => 1, - 'icon' => 'iconfont-iconzhuceshezhi', - 'api_url' => 'sys/config/login', - 'router_path' => 'adminlogin', - 'view_path' => 'setting/adminlogin', - 'methods' => 'get', - 'sort' => 80, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '会员设置', - 'menu_key' => 'setting_member', - 'menu_type' => 1, - 'icon' => 'iconfont-iconjiaoseyonghu', - 'api_url' => 'member/config/member', - 'router_path' => 'member', - 'view_path' => 'setting/member', - 'methods' => 'get', - 'sort' => 70, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '注册登录', - 'menu_key' => 'setting_login_register', - 'menu_type' => 1, - 'icon' => 'iconfont-icondenglu', - 'api_url' => 'member/config/login', - 'router_path' => 'login', - 'view_path' => 'setting/login', - 'methods' => 'get', - 'sort' => 60, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '协议管理', - 'menu_key' => 'system_agreement', - 'menu_type' => 1, - 'icon' => 'element-Notebook', - 'api_url' => 'sys/agreement', - 'router_path' => 'agreement', - 'view_path' => 'setting/agreement', - 'methods' => 'get', - 'sort' => 50, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '协议编辑', - 'menu_key' => 'system_agreement_edit', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'sys/agreement/', - 'router_path' => 'agreement/edit', - 'view_path' => 'setting/agreement_edit', - 'methods' => 'put', - 'sort' => 100, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '地图设置', - 'menu_key' => 'map_setting', - 'menu_type' => 1, - 'icon' => 'element-Message', - 'api_url' => 'sys/config/map', - 'router_path' => 'map', - 'view_path' => 'setting/map', - 'methods' => 'get', - 'sort' => 40, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '存储设置', - 'menu_key' => 'setting_storage', - 'menu_type' => 1, - 'icon' => 'element-FolderChecked', - 'api_url' => 'sys/storage', - 'router_path' => 'storage', - 'view_path' => 'setting/storage', - 'methods' => 'get', - 'sort' => 30, - 'status' => 1, - 'is_show' => 1, - ], - ] - ], - [ - 'menu_name' => '支付管理', - 'menu_key' => 'setting_pay', - 'menu_type' => 1, - 'icon' => 'iconfont-iconzhifuguanli', - 'api_url' => '', - 'router_path' => 'pay', - 'view_path' => '', - 'methods' => 'get', - 'sort' => 48, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '支付设置', - 'menu_key' => 'setting_pay_channel', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'pay/channel/lists', - 'router_path' => 'channel', - 'view_path' => 'setting/pay', - 'methods' => 'get', - 'sort' => 100, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '设置', - 'menu_key' => 'setting_pay_channel_set', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'pay/channel/set//', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'post', - 'sort' => 100, - 'status' => 1, - 'is_show' => 1, - ], - ] - ], - [ - 'menu_name' => '打款设置', - 'menu_key' => 'setting_pay_transfer', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'pay/transfer', - 'router_path' => 'transfer', - 'view_path' => 'setting/transfer', - 'methods' => 'get', - 'sort' => 90, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '设置', - 'menu_key' => 'setting_pay_transfer_set', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'pay/transfer', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'post', - 'sort' => 90, - 'status' => 1, - 'is_show' => 1, - - ], - ] - ], - [ - 'menu_name' => '提现设置', - 'menu_key' => 'cash_out_config', - 'menu_type' => 1, - 'icon' => 'element-Postcard', - 'api_url' => 'member/config/cash_out', - 'router_path' => 'cash_out', - 'view_path' => 'setting/cash_out', - 'methods' => 'post', - 'sort' => 59, - 'status' => 1, - 'is_show' => 1, - ], - ] - ], - [ - 'menu_name' => '消息管理', - 'menu_key' => 'setting_notice', - 'menu_type' => 1, - 'icon' => 'iconfont-iconxiaoxiguanli', - 'api_url' => '', - 'router_path' => 'notice', - 'view_path' => '', - 'methods' => '', - 'sort' => 47, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '消息模板', - 'menu_key' => 'setting_notice_template', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'notice/notice', - 'router_path' => 'template', - 'view_path' => 'setting/notice', - 'methods' => 'get', - 'sort' => 10, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '发送记录', - 'menu_key' => 'setting_notice_records', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'notice/notice/log', - 'router_path' => 'records', - 'view_path' => 'setting/notice_records', - 'methods' => 'get', - 'sort' => 9, - 'status' => 1, - 'is_show' => 1, - ] - ] - ], - [ - 'menu_name' => '短信管理', - 'menu_key' => 'sms_notice', - 'menu_type' => 0, - 'icon' => 'element-Message', - 'api_url' => '', - 'router_path' => 'sms', - 'view_path' => '', - 'methods' => '', - 'sort' => 49, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '短信设置', - 'menu_key' => 'sms_setting', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'notice/sms', - 'router_path' => 'setting', - 'view_path' => 'setting/sms', - 'methods' => 'get', - 'sort' => 12, - 'status' => 1, - 'is_show' => 1, - - ], - [ - 'menu_name' => '发送记录', - 'menu_key' => 'sms_notice_records', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'notice/sms/log', - 'router_path' => 'records', - 'view_path' => 'setting/sms_records', - 'methods' => 'get', - 'sort' => 11, - 'status' => 1, - 'is_show' => 1, - - ] - ] - ], - [ - 'menu_name' => '权限设置', - 'menu_key' => 'auth', - 'menu_type' => 0, - 'icon' => 'iconfont-iconquanxianguanli', - 'api_url' => '', - 'router_path' => 'auth', - 'view_path' => '', - 'methods' => '', - 'sort' => 43, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - - 'menu_name' => '管理员', - 'menu_key' => 'auth_user', - 'menu_type' => 1, - 'icon' => 'iconfont-iconyonghu', - 'api_url' => 'user', - 'router_path' => 'user', - 'view_path' => 'auth/user', - 'methods' => 'get', - 'sort' => 80, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '新增', - 'menu_key' => 'auth_user_add', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'user', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'post', - 'sort' => 1, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '编辑', - 'menu_key' => 'auth_user_update', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'user/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'put', - 'sort' => 1, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '删除', - 'menu_key' => 'auth_user_del', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'user/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'delete', - 'sort' => 1, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '详情', - 'menu_key' => 'auth_user_info', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'user/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'get', - 'sort' => 0, - 'status' => 1, - 'is_show' => 1, - ], - ], - ], - [ - 'menu_name' => '角色管理', - 'menu_key' => 'auth_role', - 'menu_type' => 1, - 'icon' => 'iconfont-iconhuiyuanliebiao', - 'api_url' => 'sys/role', - 'router_path' => 'role', - 'view_path' => 'auth/role', - 'methods' => 'get', - 'sort' => 70, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '新增', - 'menu_key' => 'auth_role_add', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'sys/role', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'post', - 'sort' => 1, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '编辑', - 'menu_key' => 'auth_role_update', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'sys/role/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'put', - 'sort' => 1, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '删除', - 'menu_key' => 'auth_role_del', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'sys/role/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'delete', - 'sort' => 1, - 'status' => 1, - 'is_show' => 1, - ], - ] - ], - [ - 'menu_name' => '操作日志', - 'menu_key' => 'auth_log', - 'menu_type' => 1, - 'icon' => 'element-Document', - 'api_url' => 'sys/log', - 'router_path' => 'log', - 'view_path' => 'auth/log', - 'methods' => 'get', - 'sort' => 60, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '角色添加/编辑', - 'menu_key' => 'role_edit', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'sys/role', - 'router_path' => 'role_edit', - 'view_path' => 'auth/role_edit', - 'methods' => 'post', - 'sort' => 60, - 'status' => 1, - 'is_show' => 0, - ], - ] - ], - ] - ], - [ - 'menu_name' => '页面装修', - 'menu_key' => 'decorate', - 'menu_type' => 0, - 'icon' => '', - 'api_url' => '', - 'router_path' => 'decorate', - 'view_path' => '', - 'methods' => '', - 'sort' => 21, - 'status' => 1, - 'is_show' => 0, - 'children' => [ - [ - 'menu_name' => '装修', - 'menu_key' => 'page_decorate', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => 'diy/diy/', - 'router_path' => 'edit', - 'view_path' => 'diy/edit', - 'methods' => 'put', - 'sort' => 0, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '页面预览', - 'menu_key' => 'page_preview', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => '', - 'router_path' => 'preview', - 'view_path' => 'diy/preview', - 'methods' => '', - 'sort' => 1, - 'status' => 1, - 'is_show' => 0, - ] - ] - ], - [ - 'menu_name' => '开发工具', - 'menu_short_name' => '工具', - 'menu_key' => 'tool', - 'menu_type' => 0, - 'icon' => 'iconfont-iconcode', - 'api_url' => '', - 'router_path' => 'tools', - 'view_path' => '', - 'methods' => '', - 'sort' => 10, - 'status' => 1, - 'is_show' => 1, - 'menu_attr' => 'common', - 'children' => [ - [ - 'menu_name' => '插件开发', - 'menu_key' => 'addon_develop', - 'menu_type' => 1, - 'icon' => 'iconfont-iconchajiankaifa', - 'api_url' => '', - 'router_path' => 'addon', - 'view_path' => 'tools/addon/index', - 'methods' => '', - 'sort' => 110, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '插件添加/编辑', - 'menu_key' => 'addon_edit', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => '', - 'router_path' => 'addon_edit', - 'view_path' => 'tools/addon/edit', - 'methods' => 'get', - 'sort' => 90, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '代码生成', - 'menu_key' => 'code', - 'menu_type' => 1, - 'icon' => 'iconfont-icondaimashengcheng', - 'api_url' => 'generator/generator', - 'router_path' => 'code', - 'view_path' => 'tools/code/index', - 'methods' => 'get', - 'sort' => 100, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '数据字典', - 'menu_key' => 'sys_dict_dict_dict_list', - 'menu_type' => 1, - 'icon' => 'iconfont-iconwenzhangguanli1', - 'api_url' => 'dict/post/post', - 'router_path' => 'list', - 'view_path' => 'dict/list', - 'methods' => 'get', - 'sort' => 90, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '数据字典添加', - 'menu_key' => 'sys_dict_dict_dict_add', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'dict', - 'router_path' => 'edit', - 'view_path' => 'dict/edit', - 'methods' => 'post', - 'sort' => 4, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '编辑', - 'menu_key' => 'sys_dict_dict_dict_edit', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'dict/', - 'router_path' => 'edit', - 'view_path' => 'dict/edit', - 'methods' => 'put', - 'sort' => 3, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '删除', - 'menu_key' => 'sys_dict_dict_dict_delete', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'dict/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'delete', - 'sort' => 2, - 'status' => 1, - 'is_show' => 1, - ], - ] - ], - [ - 'menu_name' => '生成设置', - 'menu_key' => 'code_edit', - 'menu_type' => 1, - 'icon' => '', - 'api_url' => '', - 'router_path' => 'code/edit', - 'view_path' => 'tools/code/edit', - 'methods' => '', - 'sort' => 80, - 'status' => 1, - 'is_show' => 0, - ], - [ - 'menu_name' => '更新缓存', - 'menu_key' => 'tools_Update_cache', - 'menu_type' => 1, - 'icon' => 'iconfont-icongengxinhuancun1', - 'api_url' => '', - 'router_path' => 'update', - 'view_path' => 'tools/updatecache', - 'methods' => '', - 'sort' => 60, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '环境检测', - 'menu_key' => 'tools_check_environment', - 'menu_type' => 1, - 'icon' => 'iconfont-iconhuanjingjiance', - 'api_url' => '', - 'router_path' => 'detection', - 'view_path' => 'tools/detection', - 'methods' => '', - 'sort' => 50, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '计划任务', - 'menu_key' => 'tools_schedule', - 'menu_type' => 1, - 'icon' => 'iconfont-iconjihuarenwu', - 'api_url' => 'sys/schedule/list', - 'router_path' => 'schedule', - 'view_path' => 'tools/schedule', - 'methods' => '', - 'sort' => 40, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '新增', - 'menu_key' => 'schedule_add', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'sys/schedule', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'post', - 'sort' => 4, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '编辑', - 'menu_key' => 'schedule_update', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'sys/schedule/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'put', - 'sort' => 3, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '设置状态', - 'menu_key' => 'schedule_set_status', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'schedule/modify/status/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'put', - 'sort' => 2, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '删除', - 'menu_key' => 'schedule_del', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'sys/schedule/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'delete', - 'sort' => 1, - 'status' => 1, - 'is_show' => 1, - ], - ] - ], - [ - 'menu_name' => '菜单管理', - 'menu_key' => 'auth_menu', - 'menu_type' => 1, - 'icon' => 'iconfont-iconcaidan', - 'api_url' => 'sys/menu', - 'router_path' => 'admin', - 'view_path' => 'auth/menu', - 'methods' => 'get', - 'sort' => 30, - 'status' => 1, - 'is_show' => 1, - 'children' => [ - [ - 'menu_name' => '新增', - 'menu_key' => 'auth_menu_add', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'sys/menu', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'post', - 'sort' => 1, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '编辑', - 'menu_key' => 'auth_menu_update', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'sys/menu/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'put', - 'sort' => 1, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '删除', - 'menu_key' => 'auth_menu_del', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'sys/menu', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'delete', - 'sort' => 1, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '详情', - 'menu_key' => 'auth_menu_info', - 'menu_type' => 2, - 'icon' => '', - 'api_url' => 'sys/menu/', - 'router_path' => '', - 'view_path' => '', - 'methods' => 'get', - 'sort' => 0, - 'status' => 1, - 'is_show' => 1, - ], - ], - ], - [ - 'menu_name' => '插件管理', - 'menu_key' => 'app_store', - 'menu_type' => 1, - 'icon' => 'iconfont-iconchajian1', - 'api_url' => 'addon/local', - 'router_path' => 'app_store', - 'view_path' => 'app/store', - 'methods' => 'get', - 'sort' => 20, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '授权信息', - 'menu_key' => 'app_auth', - 'menu_type' => 1, - 'icon' => 'iconfont-iconshouquanxinxi2', - 'api_url' => 'niucloud/authinfo', - 'router_path' => 'authorize', - 'view_path' => 'app/authorize', - 'methods' => 'get', - 'sort' => 19, - 'status' => 1, - 'is_show' => 1, - ], - [ - 'menu_name' => '官方市场', - 'menu_key' => 'official_market', - 'menu_type' => 1, - 'icon' => 'iconfont-iconguanfangshichang', - 'api_url' => '', - 'router_path' => 'market', - 'view_path' => 'app/market', - 'methods' => 'get', - 'sort' => 18, - 'status' => 1, - 'is_show' => 1, - ] + [ + 'menu_name' => '插件管理', + 'menu_key' => 'app_manage_store', + 'menu_type' => 1, + 'icon' => 'iconfont-iconchajian1', + 'api_url' => 'addon/local', + 'router_path' => 'app_store', + 'view_path' => 'index/store', + 'methods' => 'get', + 'sort' => 20, + 'status' => 1, + 'is_show' => 1 ] ] - ]; + ], + [ + 'menu_name' => '概况', + 'menu_key' => 'overview', + 'menu_type' => 1, + 'icon' => 'element-Monitor', + 'api_url' => '', + 'router_path' => 'overview', + 'view_path' => 'index/overview', + 'methods' => '', + 'sort' => 80, + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '应用中心', + 'menu_short_name' => '应用', + 'menu_key' => 'app_center', + 'menu_type' => 0, + 'icon' => 'iconfont-icona-shouyediannao', + 'api_url' => '', + 'router_path' => 'apps', + 'view_path' => '', + 'methods' => '', + 'sort' => 60, + 'status' => 1, + 'is_show' => 1, + 'menu_attr' => 'system', + 'children' => [ + [ + 'menu_name' => '应用管理', + 'menu_key' => 'app_index', + 'menu_type' => 1, + 'icon' => 'iconfont-iconyingyongshichang', + 'api_url' => '', + 'router_path' => 'index', + 'view_path' => 'index/index', + 'methods' => '', + 'sort' => 100, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '我的星标', + 'menu_key' => 'app_star', + 'menu_type' => 1, + 'icon' => 'iconfont-iconwodexingbiao', + 'api_url' => '', + 'router_path' => 'concern', + 'view_path' => 'index/concern', + 'methods' => '', + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '历史查看', + 'menu_key' => 'app_record', + 'menu_type' => 1, + 'icon' => 'iconfont-iconchakanlishi', + 'api_url' => '', + 'router_path' => 'history', + 'view_path' => 'index/history', + 'methods' => '', + 'status' => 1, + 'is_show' => 0, + ] + ] + ], + [ + 'menu_name' => '装修发布', + 'menu_short_name' => '装修', + 'menu_key' => 'website', + 'menu_type' => 0, + 'icon' => 'iconfont-iconicon_huojian', + 'api_url' => '', + 'router_path' => 'website', + 'view_path' => '', + 'methods' => '', + 'sort' => 90, + 'status' => 1, + 'is_show' => 1, + 'menu_attr' => 'common', + 'children' => [ + [ + 'menu_name' => '装修管理', + 'menu_key' => 'diy', + 'menu_type' => 0, + 'icon' => 'iconfont-iconzhuangxiu2', + 'api_url' => '', + 'router_path' => 'diy', + 'view_path' => '', + 'methods' => '', + 'sort' => 99, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '页面装修', + 'menu_key' => 'diy_page_decorate', + 'menu_type' => 1, + 'icon' => 'element-House', + 'api_url' => '', + 'router_path' => 'index', + 'view_path' => 'diy/index', + 'methods' => '', + 'sort' => 100, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '保存', + 'menu_key' => 'diy_page_update', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'diy/diy', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'post', + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '微页面', + 'menu_key' => 'diy_page_list', + 'menu_type' => 1, + 'icon' => 'iconfont-icondianpuzhuangxiu', + 'api_url' => 'diy/diy', + 'router_path' => 'list', + 'view_path' => 'diy/list', + 'methods' => 'get', + 'sort' => 99, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '页面路径', + 'menu_key' => 'diy_page_route', + 'menu_type' => 1, + 'icon' => 'iconfont-icondianpuzhuangxiu', + 'api_url' => 'diy/diy', + 'router_path' => 'route', + 'view_path' => 'diy/route', + 'methods' => 'get', + 'sort' => 98, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '底部导航', + 'menu_key' => 'diy_bottom', + 'menu_type' => 1, + 'icon' => 'iconfont-icondibudaohang', + 'api_url' => 'diy/bottom', + 'router_path' => 'tabbar', + 'view_path' => 'diy/tabbar', + 'methods' => 'get', + 'sort' => 97, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '保存', + 'menu_key' => 'diy_tabbar_update', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'diy/bottom', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'post', + 'status' => 1, + 'is_show' => 0, + ], + ], + ] + ] + ], + [ + 'menu_name' => '素材管理', + 'menu_key' => 'attachment', + 'menu_type' => 1, + 'icon' => 'iconfont-iconsucaiguanli', + 'api_url' => 'sys/attachment', + 'router_path' => 'attachment', + 'view_path' => 'tools/attachment', + 'methods' => 'get', + 'sort' => 98, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '渠道管理', + 'menu_short_name' => '渠道', + 'menu_key' => 'channel', + 'menu_type' => 0, + 'icon' => 'iconfont-iconicon_huojian', + 'api_url' => '', + 'router_path' => 'channel', + 'view_path' => '', + 'methods' => '', + 'sort' => 97, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '电脑端', + 'menu_key' => 'pc_config', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => '', + 'router_path' => 'pc/config', + 'view_path' => 'channel/pc/config', + 'methods' => '', + 'sort' => 100, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => 'H5端', + 'menu_key' => 'h5_config', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'channel/h5/config', + 'router_path' => 'h5/config', + 'view_path' => 'channel/h5/config', + 'methods' => 'put', + 'sort' => 90, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '微信公众号', + 'menu_key' => 'channel_wechat', + 'menu_type' => 1, + 'icon' => 'iconfont-iconweixingongzhonghao1', + 'api_url' => 'wechat/access', + 'router_path' => 'wechat', + 'view_path' => 'channel/wechat/access', + 'methods' => '', + 'sort' => 80, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '发布教程', + 'menu_key' => 'wechat_course', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'wechat/course', + 'router_path' => 'wechat/course', + 'view_path' => 'channel/wechat/course', + 'methods' => 'get', + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '公众号配置', + 'menu_key' => 'wechat_config', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'wechat/config', + 'router_path' => 'wechat/config', + 'view_path' => 'channel/wechat/config', + 'methods' => 'get', + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '自定义菜单', + 'menu_key' => 'wechat_menu', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'wechat/menu', + 'router_path' => 'wechat/menu', + 'view_path' => 'channel/wechat/menu', + 'methods' => 'get', + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '模板消息', + 'menu_key' => 'wechat_template_message', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'wechat/template', + 'router_path' => 'wechat/message', + 'view_path' => 'channel/wechat/template', + 'methods' => 'get', + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '微信小程序', + 'menu_key' => 'weapp_access', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'weapp/access', + 'router_path' => 'weapp', + 'view_path' => 'channel/weapp/access', + 'methods' => 'get', + 'sort' => 70, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '配置教程', + 'menu_key' => 'weapp_course', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'weapp/course', + 'router_path' => 'weapp/course', + 'view_path' => 'channel/weapp/course', + 'methods' => 'get', + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '小程序配置', + 'menu_key' => 'weapp_config', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'weapp/config', + 'router_path' => 'weapp/config', + 'view_path' => 'channel/weapp/config', + 'methods' => 'get', + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '订阅消息', + 'menu_key' => 'weapp_template_message', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'weapp/template', + 'router_path' => 'weapp/message', + 'view_path' => 'channel/weapp/template', + 'methods' => 'get', + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '小程序发布', + 'menu_key' => 'weapp_code', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'weapp/code', + 'router_path' => 'weapp/code', + 'view_path' => 'channel/weapp/code', + 'methods' => 'get', + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '支付宝小程序', + 'menu_key' => 'aliapp_weapp_access', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'aliapp/access', + 'router_path' => 'aliapp', + 'view_path' => 'channel/aliapp/access', + 'methods' => 'get', + 'sort' => 60, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '支付宝配置', + 'menu_key' => 'aliapp_config', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'aliapp/config', + 'router_path' => 'aliapp/config', + 'view_path' => 'channel/aliapp/config', + 'methods' => 'put', + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '配置教程', + 'menu_key' => 'aliapp_course', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'aliapp/course', + 'router_path' => 'aliapp/course', + 'view_path' => 'channel/aliapp/course', + 'methods' => 'get', + 'status' => 1, + 'is_show' => 0, + ], + ] + ], + ] + ], + [ + 'menu_name' => '会员管理', + 'menu_short_name' => '会员', + 'menu_key' => 'member', + 'menu_type' => 0, + 'icon' => 'iconfont-iconhuiyuan2', + 'api_url' => '', + 'router_path' => 'member', + 'view_path' => '', + 'methods' => '', + 'sort' => 70, + 'status' => 1, + 'is_show' => 1, + 'menu_attr' => 'system', + 'children' => [ + [ + 'menu_name' => '会员列表', + 'menu_key' => 'member_list', + 'menu_type' => 1, + 'icon' => 'iconfont-iconhuiyuanliebiao', + 'api_url' => 'member/member', + 'router_path' => 'member', + 'view_path' => 'member/member', + 'methods' => 'get', + 'sort' => 100, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '编辑', + 'menu_key' => 'member_update', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'member/modify//', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'put', + 'status' => 1, + 'is_show' => 1, + ], + ] + ], + [ + 'menu_name' => '会员详情', + 'menu_key' => 'member_info', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'member/member/', + 'router_path' => 'detail', + 'view_path' => 'member/member_detail', + 'methods' => 'get', + 'sort' => 90, + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '会员标签', + 'menu_key' => 'member_label', + 'menu_type' => 1, + 'icon' => 'iconfont-iconhuiyuanbiaoqian', + 'api_url' => 'member/label', + 'router_path' => 'label', + 'view_path' => 'member/label', + 'methods' => 'get', + 'sort' => 80, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + + 'menu_name' => '编辑标签', + 'menu_key' => 'member_label_update', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'member/label/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'put', + 'status' => 1, + 'is_show' => 1, + ], + [ + + 'menu_name' => '添加标签', + 'menu_key' => 'member_label_add', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'member/label', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'post', + 'status' => 1, + 'is_show' => 1, + ], + [ + + 'menu_name' => '删除标签', + 'menu_key' => 'member_label_delete', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'member/label/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'delete', + 'status' => 1, + 'is_show' => 1, + ], + ] + ], + [ + 'menu_name' => '会员积分', + 'menu_key' => 'member_point', + 'menu_type' => 1, + 'icon' => 'iconfont-iconhuiyuanjifen', + 'api_url' => 'member/account/point', + 'router_path' => 'point', + 'view_path' => 'member/point', + 'methods' => 'get', + 'sort' => 70, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '会员余额', + 'menu_key' => 'member_balance', + 'menu_type' => 1, + 'icon' => 'iconfont-iconhuiyuanyue', + 'api_url' => 'member/account/balance', + 'router_path' => 'balance', + 'view_path' => 'member/balance', + 'methods' => 'get', + 'sort' => 60, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '会员佣金', + 'menu_key' => 'member_commission', + 'menu_type' => 1, + 'icon' => 'iconfont-iconhuiyuanyongjin', + 'api_url' => 'member/account/commission', + 'router_path' => 'commission', + 'view_path' => 'member/commission', + 'methods' => 'get', + 'sort' => 50, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '财务流水', + 'menu_key' => 'site_account_list', + 'menu_type' => 1, + 'icon' => 'iconfont-iconcaiwuliushui', + 'api_url' => 'finance/account', + 'router_path' => 'account', + 'view_path' => 'finance/account', + 'methods' => 'get', + 'sort' => 40, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '线下支付', + 'menu_key' => 'site_pay_offlinepay', + 'menu_type' => 1, + 'icon' => 'iconfont-iconxianxiazhifu2', + 'api_url' => 'pay/offlinepay', + 'router_path' => 'pay/offlinepay', + 'view_path' => 'finance/offlinepay', + 'methods' => 'get', + 'sort' => 30, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '通过', + 'menu_key' => 'site_pay_audit_pass', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'pay/pass/:out_trade_no', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'put', + 'sort' => 99, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '拒绝', + 'menu_key' => 'site_pay_audit_refuse', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'pay/refuse/:out_trade_no', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'put', + 'sort' => 99, + 'status' => 1, + 'is_show' => 1, + ], + ] + ], + [ + 'menu_name' => '支付单据详情', + 'menu_key' => 'site_pay_detail', + 'menu_type' => 1, + 'icon' => 'element-Postcard', + 'api_url' => 'pay/detail', + 'router_path' => 'pay/detail', + 'view_path' => 'finance/pay_detail', + 'methods' => 'get', + 'sort' => 20, + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '会员提现', + 'menu_key' => 'cash_out_list', + 'menu_type' => 1, + 'icon' => 'iconfont-iconhuiyuantixian', + 'api_url' => 'member/cash_out', + 'router_path' => 'cash_out', + 'view_path' => 'finance/cash_out', + 'methods' => 'get', + 'sort' => 10, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '会员退款', + 'menu_key' => 'member_refund_list', + 'menu_type' => 1, + 'icon' => 'iconfont-iconhuiyuantixian', + 'api_url' => 'pay/pay_refund', + 'router_path' => 'refund', + 'view_path' => 'finance/pay_refund', + 'methods' => 'get', + 'sort' => 9, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '退款详情', + 'menu_key' => 'member_refund_detail', + 'menu_type' => 1, + 'icon' => 'iconfont-iconhuiyuantixian', + 'api_url' => 'pay/refund', + 'router_path' => 'refund/detail', + 'view_path' => 'finance/refund_detail', + 'methods' => 'get', + 'sort' => 9, + 'status' => 1, + 'is_show' => 0, + ], + ], + ], + [ + 'menu_name' => '系统设置', + 'menu_short_name' => '设置', + 'menu_key' => 'setting', + 'menu_type' => 0, + 'icon' => 'iconfont-iconshezhi1', + 'api_url' => '', + 'router_path' => 'setting', + 'view_path' => '', + 'methods' => '', + 'sort' => 40, + 'status' => 1, + 'is_show' => 1, + 'menu_attr' => 'common', + 'children' => [ + [ + 'menu_name' => '基础设置', + 'menu_key' => 'basis', + 'menu_type' => 0, + 'icon' => 'element-Setting', + 'api_url' => '', + 'router_path' => 'basis', + 'view_path' => '', + 'methods' => '', + 'sort' => 49, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '网站设置', + 'menu_key' => 'setting_system', + 'menu_type' => 1, + 'icon' => 'element-Basketball', + 'api_url' => 'sys/config/website', + 'router_path' => 'system', + 'view_path' => 'setting/system', + 'methods' => 'get', + 'sort' => 100, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '版权设置', + 'menu_key' => 'setting_copyright', + 'menu_type' => 1, + 'icon' => 'iconfont-iconbanquan1', + 'api_url' => 'sys/config/copyright', + 'router_path' => 'copyright', + 'view_path' => 'setting/copyright', + 'methods' => 'get', + 'sort' => 90, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '后台登录', + 'menu_key' => 'setting_login', + 'menu_type' => 1, + 'icon' => 'iconfont-iconzhuceshezhi', + 'api_url' => 'sys/config/login', + 'router_path' => 'adminlogin', + 'view_path' => 'setting/adminlogin', + 'methods' => 'get', + 'sort' => 80, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '会员设置', + 'menu_key' => 'setting_member', + 'menu_type' => 1, + 'icon' => 'iconfont-iconjiaoseyonghu', + 'api_url' => 'member/config/member', + 'router_path' => 'member', + 'view_path' => 'setting/member', + 'methods' => 'get', + 'sort' => 70, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '注册登录', + 'menu_key' => 'setting_login_register', + 'menu_type' => 1, + 'icon' => 'iconfont-icondenglu', + 'api_url' => 'member/config/login', + 'router_path' => 'login', + 'view_path' => 'setting/login', + 'methods' => 'get', + 'sort' => 60, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '协议管理', + 'menu_key' => 'system_agreement', + 'menu_type' => 1, + 'icon' => 'element-Notebook', + 'api_url' => 'sys/agreement', + 'router_path' => 'agreement', + 'view_path' => 'setting/agreement', + 'methods' => 'get', + 'sort' => 50, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '协议编辑', + 'menu_key' => 'system_agreement_edit', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'sys/agreement/', + 'router_path' => 'agreement/edit', + 'view_path' => 'setting/agreement_edit', + 'methods' => 'put', + 'sort' => 100, + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '地图设置', + 'menu_key' => 'map_setting', + 'menu_type' => 1, + 'icon' => 'element-Message', + 'api_url' => 'sys/config/map', + 'router_path' => 'map', + 'view_path' => 'setting/map', + 'methods' => 'get', + 'sort' => 40, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '存储设置', + 'menu_key' => 'setting_storage', + 'menu_type' => 1, + 'icon' => 'element-FolderChecked', + 'api_url' => 'sys/storage', + 'router_path' => 'storage', + 'view_path' => 'setting/storage', + 'methods' => 'get', + 'sort' => 30, + 'status' => 1, + 'is_show' => 1, + ], + ] + ], + [ + 'menu_name' => '支付管理', + 'menu_key' => 'setting_pay', + 'menu_type' => 1, + 'icon' => 'iconfont-iconzhifuguanli', + 'api_url' => '', + 'router_path' => 'pay', + 'view_path' => '', + 'methods' => 'get', + 'sort' => 48, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '支付设置', + 'menu_key' => 'setting_pay_channel', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'pay/channel/lists', + 'router_path' => 'channel', + 'view_path' => 'setting/pay', + 'methods' => 'get', + 'sort' => 100, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '设置', + 'menu_key' => 'setting_pay_channel_set', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'pay/channel/set//', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'post', + 'sort' => 100, + 'status' => 1, + 'is_show' => 1, + ], + ] + ], + [ + 'menu_name' => '打款设置', + 'menu_key' => 'setting_pay_transfer', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'pay/transfer', + 'router_path' => 'transfer', + 'view_path' => 'setting/transfer', + 'methods' => 'get', + 'sort' => 90, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '设置', + 'menu_key' => 'setting_pay_transfer_set', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'pay/transfer', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'post', + 'sort' => 90, + 'status' => 1, + 'is_show' => 1, + + ], + ] + ], + [ + 'menu_name' => '提现设置', + 'menu_key' => 'cash_out_config', + 'menu_type' => 1, + 'icon' => 'element-Postcard', + 'api_url' => 'member/config/cash_out', + 'router_path' => 'cash_out', + 'view_path' => 'setting/cash_out', + 'methods' => 'post', + 'sort' => 59, + 'status' => 1, + 'is_show' => 1, + ], + ] + ], + [ + 'menu_name' => '消息管理', + 'menu_key' => 'setting_notice', + 'menu_type' => 1, + 'icon' => 'iconfont-iconxiaoxiguanli', + 'api_url' => '', + 'router_path' => 'notice', + 'view_path' => '', + 'methods' => '', + 'sort' => 47, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '消息模板', + 'menu_key' => 'setting_notice_template', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'notice/notice', + 'router_path' => 'template', + 'view_path' => 'setting/notice', + 'methods' => 'get', + 'sort' => 10, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '发送记录', + 'menu_key' => 'setting_notice_records', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'notice/notice/log', + 'router_path' => 'records', + 'view_path' => 'setting/notice_records', + 'methods' => 'get', + 'sort' => 9, + 'status' => 1, + 'is_show' => 1, + ] + ] + ], + [ + 'menu_name' => '短信管理', + 'menu_key' => 'sms_notice', + 'menu_type' => 0, + 'icon' => 'element-Message', + 'api_url' => '', + 'router_path' => 'sms', + 'view_path' => '', + 'methods' => '', + 'sort' => 49, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '短信设置', + 'menu_key' => 'sms_setting', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'notice/sms', + 'router_path' => 'setting', + 'view_path' => 'setting/sms', + 'methods' => 'get', + 'sort' => 12, + 'status' => 1, + 'is_show' => 1, + + ], + [ + 'menu_name' => '发送记录', + 'menu_key' => 'sms_notice_records', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'notice/sms/log', + 'router_path' => 'records', + 'view_path' => 'setting/sms_records', + 'methods' => 'get', + 'sort' => 11, + 'status' => 1, + 'is_show' => 1, + + ] + ] + ], + [ + 'menu_name' => '权限设置', + 'menu_key' => 'auth', + 'menu_type' => 0, + 'icon' => 'iconfont-iconquanxianguanli', + 'api_url' => '', + 'router_path' => 'auth', + 'view_path' => '', + 'methods' => '', + 'sort' => 43, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + + 'menu_name' => '管理员', + 'menu_key' => 'auth_user', + 'menu_type' => 1, + 'icon' => 'iconfont-iconyonghu', + 'api_url' => 'user', + 'router_path' => 'user', + 'view_path' => 'auth/user', + 'methods' => 'get', + 'sort' => 80, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '新增', + 'menu_key' => 'auth_user_add', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'user', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'post', + 'sort' => 1, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '编辑', + 'menu_key' => 'auth_user_update', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'user/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'put', + 'sort' => 1, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '删除', + 'menu_key' => 'auth_user_del', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'user/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'delete', + 'sort' => 1, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '详情', + 'menu_key' => 'auth_user_info', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'user/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'get', + 'sort' => 0, + 'status' => 1, + 'is_show' => 1, + ], + ], + ], + [ + 'menu_name' => '角色管理', + 'menu_key' => 'auth_role', + 'menu_type' => 1, + 'icon' => 'iconfont-iconhuiyuanliebiao', + 'api_url' => 'sys/role', + 'router_path' => 'role', + 'view_path' => 'auth/role', + 'methods' => 'get', + 'sort' => 70, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '新增', + 'menu_key' => 'auth_role_add', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'sys/role', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'post', + 'sort' => 1, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '编辑', + 'menu_key' => 'auth_role_update', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'sys/role/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'put', + 'sort' => 1, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '删除', + 'menu_key' => 'auth_role_del', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'sys/role/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'delete', + 'sort' => 1, + 'status' => 1, + 'is_show' => 1, + ], + ] + ], + [ + 'menu_name' => '操作日志', + 'menu_key' => 'auth_log', + 'menu_type' => 1, + 'icon' => 'element-Document', + 'api_url' => 'sys/log', + 'router_path' => 'log', + 'view_path' => 'auth/log', + 'methods' => 'get', + 'sort' => 60, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '角色添加/编辑', + 'menu_key' => 'role_edit', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'sys/role', + 'router_path' => 'role_edit', + 'view_path' => 'auth/role_edit', + 'methods' => 'post', + 'sort' => 60, + 'status' => 1, + 'is_show' => 0, + ], + ] + ], + ] + ], + [ + 'menu_name' => '页面装修', + 'menu_key' => 'decorate', + 'menu_type' => 0, + 'icon' => '', + 'api_url' => '', + 'router_path' => 'decorate', + 'view_path' => '', + 'methods' => '', + 'sort' => 21, + 'status' => 1, + 'is_show' => 0, + 'children' => [ + [ + 'menu_name' => '装修', + 'menu_key' => 'page_decorate', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => 'diy/diy/', + 'router_path' => 'edit', + 'view_path' => 'diy/edit', + 'methods' => 'put', + 'sort' => 0, + 'status' => 1, + 'is_show' => 0, + ] + ] + ], + [ + 'menu_name' => '页面预览', + 'menu_key' => 'preview', + 'menu_type' => 0, + 'icon' => '', + 'api_url' => '', + 'router_path' => 'preview', + 'view_path' => '', + 'methods' => 'get', + 'status' => 1, + 'is_show' => 0, + 'children' => [ + [ + 'menu_name' => '页面预览', + 'menu_key' => 'page_wap_preview', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => '', + 'router_path' => 'wap', + 'view_path' => 'index/preview', + 'methods' => 'get', + 'sort' => 0, + 'status' => 1, + 'is_show' => 0, + ], + ] + ], + [ + 'menu_name' => '开发工具', + 'menu_short_name' => '工具', + 'menu_key' => 'tool', + 'menu_type' => 0, + 'icon' => 'iconfont-iconcode', + 'api_url' => '', + 'router_path' => 'tools', + 'view_path' => '', + 'methods' => '', + 'sort' => 10, + 'status' => 1, + 'is_show' => 1, + 'menu_attr' => 'tools', + 'children' => [ + [ + 'menu_name' => '工具管理', + 'menu_key' => 'tool_index', + 'menu_type' => 1, + 'icon' => 'iconfont-iconchajiankaifa', + 'api_url' => '', + 'router_path' => 'index', + 'view_path' => 'tools/index', + 'methods' => '', + 'sort' => 120, + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '插件开发', + 'menu_key' => 'addon_develop', + 'menu_type' => 1, + 'icon' => 'iconfont-iconchajiankaifa', + 'api_url' => '', + 'router_path' => 'addon', + 'view_path' => 'tools/addon/index', + 'methods' => '', + 'sort' => 110, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '插件添加/编辑', + 'menu_key' => 'addon_edit', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => '', + 'router_path' => 'addon_edit', + 'view_path' => 'tools/addon/edit', + 'methods' => 'get', + 'sort' => 90, + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '代码生成', + 'menu_key' => 'code', + 'menu_type' => 1, + 'icon' => 'iconfont-icondaimashengcheng', + 'api_url' => 'generator/generator', + 'router_path' => 'code', + 'view_path' => 'tools/code/index', + 'methods' => 'get', + 'sort' => 100, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '数据字典', + 'menu_key' => 'sys_dict_dict_dict_list', + 'menu_type' => 1, + 'icon' => 'iconfont-iconwenzhangguanli1', + 'api_url' => 'dict/post/post', + 'router_path' => 'list', + 'view_path' => 'dict/list', + 'methods' => 'get', + 'sort' => 90, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '数据字典添加', + 'menu_key' => 'sys_dict_dict_dict_add', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'dict', + 'router_path' => 'edit', + 'view_path' => 'dict/edit', + 'methods' => 'post', + 'sort' => 4, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '编辑', + 'menu_key' => 'sys_dict_dict_dict_edit', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'dict/', + 'router_path' => 'edit', + 'view_path' => 'dict/edit', + 'methods' => 'put', + 'sort' => 3, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '删除', + 'menu_key' => 'sys_dict_dict_dict_delete', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'dict/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'delete', + 'sort' => 2, + 'status' => 1, + 'is_show' => 1, + ], + ] + ], + [ + 'menu_name' => '生成设置', + 'menu_key' => 'code_edit', + 'menu_type' => 1, + 'icon' => '', + 'api_url' => '', + 'router_path' => 'code/edit', + 'view_path' => 'tools/code/edit', + 'methods' => '', + 'sort' => 80, + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '更新缓存', + 'menu_key' => 'tools_Update_cache', + 'menu_type' => 1, + 'icon' => 'iconfont-icongengxinhuancun1', + 'api_url' => '', + 'router_path' => 'update', + 'view_path' => 'tools/updatecache', + 'methods' => '', + 'sort' => 60, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '环境检测', + 'menu_key' => 'tools_check_environment', + 'menu_type' => 1, + 'icon' => 'iconfont-iconhuanjingjiance', + 'api_url' => '', + 'router_path' => 'detection', + 'view_path' => 'tools/detection', + 'methods' => '', + 'sort' => 50, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '计划任务', + 'menu_key' => 'tools_schedule', + 'menu_type' => 1, + 'icon' => 'iconfont-iconjihuarenwu', + 'api_url' => 'sys/schedule/list', + 'router_path' => 'schedule', + 'view_path' => 'tools/schedule', + 'methods' => '', + 'sort' => 40, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '新增', + 'menu_key' => 'schedule_add', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'sys/schedule', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'post', + 'sort' => 4, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '编辑', + 'menu_key' => 'schedule_update', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'sys/schedule/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'put', + 'sort' => 3, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '设置状态', + 'menu_key' => 'schedule_set_status', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'schedule/modify/status/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'put', + 'sort' => 2, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '删除', + 'menu_key' => 'schedule_del', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'sys/schedule/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'delete', + 'sort' => 1, + 'status' => 1, + 'is_show' => 1, + ], + ] + ], + [ + 'menu_name' => '菜单管理', + 'menu_key' => 'auth_menu', + 'menu_type' => 1, + 'icon' => 'iconfont-iconcaidan', + 'api_url' => 'sys/menu', + 'router_path' => 'admin', + 'view_path' => 'auth/menu', + 'methods' => 'get', + 'sort' => 30, + 'status' => 1, + 'is_show' => 1, + 'children' => [ + [ + 'menu_name' => '新增', + 'menu_key' => 'auth_menu_add', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'sys/menu', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'post', + 'sort' => 1, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '编辑', + 'menu_key' => 'auth_menu_update', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'sys/menu/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'put', + 'sort' => 1, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '删除', + 'menu_key' => 'auth_menu_del', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'sys/menu', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'delete', + 'sort' => 1, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '详情', + 'menu_key' => 'auth_menu_info', + 'menu_type' => 2, + 'icon' => '', + 'api_url' => 'sys/menu/', + 'router_path' => '', + 'view_path' => '', + 'methods' => 'get', + 'sort' => 0, + 'status' => 1, + 'is_show' => 1, + ], + ], + ], + [ + 'menu_name' => '插件管理', + 'menu_key' => 'app_store', + 'menu_type' => 1, + 'icon' => 'iconfont-iconchajian1', + 'api_url' => 'addon/local', + 'router_path' => 'app_store', + 'view_path' => 'app/store', + 'methods' => 'get', + 'sort' => 20, + 'status' => 1, + 'is_show' => 0, + ], + [ + 'menu_name' => '授权信息', + 'menu_key' => 'app_auth', + 'menu_type' => 1, + 'icon' => 'iconfont-iconshouquanxinxi2', + 'api_url' => 'niucloud/authinfo', + 'router_path' => 'authorize', + 'view_path' => 'app/authorize', + 'methods' => 'get', + 'sort' => 19, + 'status' => 1, + 'is_show' => 1, + ], + [ + 'menu_name' => '官方市场', + 'menu_key' => 'official_market', + 'menu_type' => 1, + 'icon' => 'iconfont-iconguanfangshichang', + 'api_url' => '', + 'router_path' => 'market', + 'view_path' => 'app/market', + 'methods' => 'get', + 'sort' => 18, + 'status' => 1, + 'is_show' => 1, + ] + ] + ] +]; \ No newline at end of file diff --git a/niucloud/app/dict/pay/PayDict.php b/niucloud/app/dict/pay/PayDict.php index 0c557bef1..6ed9627de 100644 --- a/niucloud/app/dict/pay/PayDict.php +++ b/niucloud/app/dict/pay/PayDict.php @@ -19,7 +19,7 @@ class PayDict public const ALIPAY = 'alipay';//支付宝支付 //const UNIPAY = 'unipay';//银联 public const OFFLINEPAY = 'offlinepay';//线下支付 - public const BALANCEPAY = 'balancepay';//线下支付 + public const BALANCEPAY = 'balancepay';//余额支付 public const ON = '1'; @@ -38,13 +38,14 @@ class PayDict //支付状态 public const STATUS_WAIT = '0';//待支付 public const STATUS_ING = '1';//支付中 - public const STATUS_ED = '2';//已支付 + public const STATUS_FINISH = '2';//已支付 public const STATUS_AUDIT = '3';//待审核 public const STATUS_CALCLE = '-1';//已取消 + //操作人类型 public const MEMBER = 'member'; - public const USER = 'user'; + public const STORE = 'store'; /** * 支付类型 @@ -102,7 +103,7 @@ class PayDict return [ self::STATUS_WAIT => get_lang('dict_pay.status_wait'), self::STATUS_ING => get_lang('dict_pay.status_ing'), - self::STATUS_ED => get_lang('dict_pay.status_ed'), + self::STATUS_FINISH => get_lang('dict_pay.status_finish'), self::STATUS_CALCLE => get_lang('dict_pay.status_cancle'), self::STATUS_AUDIT => get_lang('dict_pay.status_audit') ]; diff --git a/niucloud/app/dict/pay/RefundDict.php b/niucloud/app/dict/pay/RefundDict.php index 5c0453681..bb24c2ac4 100644 --- a/niucloud/app/dict/pay/RefundDict.php +++ b/niucloud/app/dict/pay/RefundDict.php @@ -20,11 +20,11 @@ class RefundDict const FAIL = 'fail';//失败 // 退款方式 - const WECHATPAY = 'wechatpay';//微信支付 - const ALIPAY = 'alipay';//支付宝支付 + const WECHATPAY = 'wechatpay';//微信退款 + const ALIPAY = 'alipay';//支付宝退款 const OFFLINE = 'offline';//线下打款 - const BALANCE = 'balance';//线下支付 - + const BALANCE = 'balance';//余额退款 + CONST BACK = 'back';//原路退款 /** * 获取状态 * @return array @@ -32,10 +32,10 @@ class RefundDict public static function getStatus() { return [ - self::WAIT => get_lang('dict_pay_refund.status_wait'), - self::DEALING => get_lang('dict_pay_refund.status_dealing'), - self::SUCCESS => get_lang('dict_pay_refund.status_success'), - self::FAIL => get_lang('dict_pay_refund.status_fail'), + self::WAIT => get_lang('dict_pay_refund.wait'), + self::DEALING => get_lang('dict_pay_refund.dealing'), + self::SUCCESS => get_lang('dict_pay_refund.success'), + self::FAIL => get_lang('dict_pay_refund.fail'), ]; } @@ -46,10 +46,11 @@ class RefundDict public static function getType() { return [ - self::WECHATPAY => get_lang('dict_pay_refund.wechatpay'), - self::ALIPAY => get_lang('dict_pay_refund.alipay'), +// self::WECHATPAY => get_lang('dict_pay_refund.wechatpay'), +// self::ALIPAY => get_lang('dict_pay_refund.alipay'), self::OFFLINE => get_lang('dict_pay_refund.offline'), - self::BALANCE => get_lang('dict_pay_refund.balance') +// self::BALANCE => get_lang('dict_pay_refund.balance'), + self::BACK => get_lang('dict_pay_refund.back'), ]; } } \ No newline at end of file diff --git a/niucloud/app/install/controller/Index.php b/niucloud/app/install/controller/Index.php index f847aa44b..d28d3c1bb 100644 --- a/niucloud/app/install/controller/Index.php +++ b/niucloud/app/install/controller/Index.php @@ -185,7 +185,7 @@ class Index extends BaseInstall public function getSqlQuery($sql_data) { $this->checkLock(); - $sql_data = preg_replace("/TYPE=(InnoDB|MyISAM|MEMORY)( DEFAULT CHARSET=[^; ]+)?/", "ENGINE=\\1 DEFAULT CHARSET=utf8", $sql_data); + $sql_data = preg_replace("/TYPE=(InnoDB|MyISAM|MEMORY)( DEFAULT CHARSET=[^; ]+)?/", "ENGINE=\\1 DEFAULT CHARSET=utf8mb4", $sql_data); $sql_data = str_replace("\r", "\n", $sql_data); $sql_query = []; @@ -246,7 +246,7 @@ class Index extends BaseInstall $this->setSuccessLog([ $res[ 'msg' ], 'error' ]); return fail($res[ 'msg' ]); } - //安装插件 + //安装插件 todo $this->installAddon(); Cache::set('install_status', 1);//成功 @@ -484,7 +484,7 @@ class Index extends BaseInstall if (!empty($addon_files)) { foreach ($addon_files as $addon) { - $service = (new coreAddonInstallService($addon)); + $service = (new CoreAddonInstallService($addon)); $service->installCheck(); $service->install(); } diff --git a/niucloud/app/install/source/database.sql b/niucloud/app/install/source/database.sql index ab9f3eef7..5f71d03b5 100644 --- a/niucloud/app/install/source/database.sql +++ b/niucloud/app/install/source/database.sql @@ -7,7 +7,7 @@ CREATE TABLE `account_log` ( `trade_no` varchar(255) NOT NULL DEFAULT '' COMMENT '对应类型交易单号', `create_time` varchar(255) NOT NULL DEFAULT '' COMMENT '添加时间', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='站点账单记录'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='站点账单记录'; DROP TABLE IF EXISTS `addon`; @@ -30,7 +30,7 @@ CREATE TABLE `addon` ( `compile` VARCHAR(2000) NOT NULL DEFAULT '' COMMENT '编译端口', PRIMARY KEY (`id`), UNIQUE KEY `UK_title` (`title`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='插件表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='插件表'; DROP TABLE IF EXISTS `addon_log`; @@ -42,7 +42,7 @@ CREATE TABLE `addon_log` ( `to_version` varchar(20) NOT NULL DEFAULT '' COMMENT '升级后的版本号', `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='插件日志表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='插件日志表'; DROP TABLE IF EXISTS `diy_page`; @@ -61,7 +61,7 @@ CREATE TABLE `diy_page` ( `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `update_time` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自定义页面'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='自定义页面'; DROP TABLE IF EXISTS `diy_route`; @@ -74,7 +74,7 @@ CREATE TABLE `diy_route` ( `is_share` int(11) NOT NULL DEFAULT '0' COMMENT '是否支持分享', `sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自定义路由'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='自定义路由'; DROP TABLE IF EXISTS `generate_column`; @@ -100,7 +100,7 @@ CREATE TABLE `generate_column` ( `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `update_time` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代码生成表字段信息表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='代码生成表字段信息表'; DROP TABLE IF EXISTS `generate_table`; @@ -118,7 +118,7 @@ CREATE TABLE `generate_table` ( `relations` text DEFAULT NULL COMMENT '关联配置', `synchronous_number` int NOT NULL DEFAULT 0 COMMENT '同步次数', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代码生成表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='代码生成表'; DROP TABLE IF EXISTS `jobs`; @@ -132,7 +132,7 @@ CREATE TABLE `jobs` ( `create_time` int(11) unsigned DEFAULT '0', PRIMARY KEY (`id`), KEY `queue` (`queue`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息队列任务表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='消息队列任务表'; DROP TABLE IF EXISTS `jobs_failed`; @@ -144,7 +144,7 @@ CREATE TABLE `jobs_failed` ( `exception` longtext NOT NULL, `fail_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息队列任务失败记录表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='消息队列任务失败记录表'; DROP TABLE IF EXISTS `member`; @@ -206,7 +206,7 @@ CREATE TABLE `member` ( KEY `weapp_openid` (`weapp_openid`), KEY `wx_openid` (`wx_openid`), KEY `wx_unionid` (`wx_unionid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='会员表'; DROP TABLE IF EXISTS `member_account_log`; @@ -225,7 +225,7 @@ CREATE TABLE `member_account_log` ( KEY `create_time` (`create_time`), KEY `from_type` (`from_type`), KEY `member_id` (`member_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员账单表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='会员账单表'; DROP TABLE IF EXISTS `member_address`; @@ -238,6 +238,7 @@ CREATE TABLE `member_address` ( `city_id` int(11) NOT NULL DEFAULT '0' COMMENT '市id', `district_id` int(11) NOT NULL DEFAULT '0' COMMENT '区县id', `address` varchar(255) NOT NULL DEFAULT '' COMMENT '地址信息', + `address_name` VARCHAR(255) NOT NULL DEFAULT '', `full_address` varchar(255) NOT NULL DEFAULT '' COMMENT '详细地址信息', `lng` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '经度', `lat` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '纬度', @@ -245,7 +246,7 @@ CREATE TABLE `member_address` ( `type` VARCHAR(30) NOT NULL DEFAULT '' COMMENT '地址类型 address 普通地址 location_address 定位地址', PRIMARY KEY (`id`), KEY `IDX_member_address` (`member_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员收货地址'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='会员收货地址'; DROP TABLE IF EXISTS `member_cash_out`; @@ -281,7 +282,7 @@ CREATE TABLE `member_cash_out` ( KEY `member_withdraw_site_id` (`member_id`), KEY `member_withdraw_status` (`status`), KEY `member_withdraw_withdraw_no` (`cash_out_no`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员提现表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='会员提现表'; DROP TABLE IF EXISTS `member_cash_out_account`; @@ -295,7 +296,7 @@ CREATE TABLE `member_cash_out_account` ( `update_time` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', `account_no` varchar(255) NOT NULL DEFAULT '' COMMENT '提现账户', PRIMARY KEY (`account_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员提现账户'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='会员提现账户'; DROP TABLE IF EXISTS `member_collect`; @@ -308,7 +309,7 @@ CREATE TABLE `member_collect` ( PRIMARY KEY (`id`), KEY `IDX_member_collect_goods` (`goods_id`), KEY `IDX_member_collect_member` (`member_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci; DROP TABLE IF EXISTS `member_label`; @@ -322,7 +323,7 @@ CREATE TABLE `member_label` ( PRIMARY KEY (`label_id`), KEY `label_id` (`label_id`), KEY `sort` (`sort`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员标签'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='会员标签'; DROP TABLE IF EXISTS `member_level`; @@ -336,7 +337,7 @@ CREATE TABLE `member_level` ( `update_time` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间', PRIMARY KEY (`level_id`), KEY `status` (`status`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员等级'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='会员等级'; DROP TABLE IF EXISTS `pay`; @@ -362,7 +363,7 @@ CREATE TABLE `pay` ( `fail_reason` varchar(255) NOT NULL DEFAULT '' COMMENT '失败原因', PRIMARY KEY (`id`), UNIQUE KEY `UK_ns_pay_out_trade_no` (`out_trade_no`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付记录表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='支付记录表'; DROP TABLE IF EXISTS `pay_channel`; @@ -376,7 +377,7 @@ CREATE TABLE `pay_channel` ( `status` int(11) NOT NULL DEFAULT '0' COMMENT '是否启用', `sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付渠道配置表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='支付渠道配置表'; DROP TABLE IF EXISTS `pay_refund`; @@ -386,17 +387,22 @@ CREATE TABLE `pay_refund` ( `out_trade_no` varchar(255) NOT NULL DEFAULT '' COMMENT '支付流水号', `type` varchar(255) NOT NULL DEFAULT '' COMMENT '支付方式', `channel` varchar(50) NOT NULL DEFAULT '' COMMENT '支付渠道', - `money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '支付金额', + `money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '退款金额', `reason` varchar(255) NOT NULL DEFAULT '' COMMENT '退款原因', `status` varchar(255) NOT NULL DEFAULT '0' COMMENT '支付状态(0.待退款 1. 退款中 2. 已退款 -1已关闭)', `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `refund_time` int(11) NOT NULL DEFAULT '0' COMMENT '支付时间', `close_time` int(11) NOT NULL DEFAULT '0' COMMENT '关闭时间', `fail_reason` varchar(255) NOT NULL DEFAULT '' COMMENT '失败原因', - `voucher` varchar(255) NOT NULL DEFAULT '' COMMENT '支付凭证', + `voucher` varchar(255) NOT NULL DEFAULT '' COMMENT '退款凭证', + `trade_type` VARCHAR(255) NOT NULL COMMENT '业务类型', + `trade_id` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '业务关联id', + `refund_type` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '退款方式', + `main_type` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '操作人类型', + `main_id` INT(11) NOT NULL DEFAULT 0 COMMENT '操作人', PRIMARY KEY (`id`), UNIQUE KEY `UK_ns_pay_refund_refund_no` (`refund_no`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付记录表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='支付记录表'; DROP TABLE IF EXISTS `pay_transfer`; @@ -428,7 +434,7 @@ CREATE TABLE `pay_transfer` ( KEY `member_withdraw_audit_time` (`transfer_time`), KEY `member_withdraw_site_id` (`main_id`), KEY `member_withdraw_status` (`transfer_status`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='转账表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='转账表'; DROP TABLE IF EXISTS `sys_agreement`; @@ -441,7 +447,7 @@ CREATE TABLE `sys_agreement` ( `update_time` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', PRIMARY KEY (`id`), KEY `agreement_key` (`agreement_key`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='协议表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='协议表'; DROP TABLE IF EXISTS `sys_area`; @@ -4127,7 +4133,7 @@ CREATE TABLE `sys_attachment` ( PRIMARY KEY (`att_id`), KEY `cate_id` (`cate_id`), KEY `create_time` (`create_time`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='附件管理表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='附件管理表'; DROP TABLE IF EXISTS `sys_attachment_category`; @@ -4142,7 +4148,7 @@ CREATE TABLE `sys_attachment_category` ( UNIQUE KEY `id` (`id`), KEY `pid` (`pid`), KEY `sort` (`sort`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='附件分类表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='附件分类表'; DROP TABLE IF EXISTS `sys_config`; @@ -4155,7 +4161,7 @@ CREATE TABLE `sys_config` ( `addon` varchar(255) NOT NULL DEFAULT '' COMMENT '所属插件', PRIMARY KEY (`id`), KEY `config_key` (`config_key`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='系统配置表'; DROP TABLE IF EXISTS `sys_dict`; @@ -4168,7 +4174,7 @@ CREATE TABLE `sys_dict` ( `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `update_time` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据字典表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='数据字典表'; DROP TABLE IF EXISTS `sys_menu`; @@ -4196,7 +4202,7 @@ CREATE TABLE `sys_menu` ( KEY `is_show` (`is_show`), KEY `menu_key` (`menu_key`), KEY `parent_key` (`parent_key`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='菜单表'; DROP TABLE IF EXISTS `sys_notice`; @@ -4215,7 +4221,7 @@ CREATE TABLE `sys_notice` ( `wechat_remark` varchar(255) NOT NULL DEFAULT '' COMMENT '微信说明', PRIMARY KEY (`id`), KEY `message_key` (`key`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知模型'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='通知模型'; DROP TABLE IF EXISTS `sys_notice_log`; @@ -4238,7 +4244,7 @@ CREATE TABLE `sys_notice_log` ( KEY `member_id` (`member_id`), KEY `message_key` (`key`), KEY `uid` (`uid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知记录表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='通知记录表'; DROP TABLE IF EXISTS `sys_notice_sms_log`; @@ -4257,7 +4263,7 @@ CREATE TABLE `sys_notice_sms_log` ( `update_time` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间', `delete_time` int(11) NOT NULL DEFAULT '0' COMMENT '删除时间', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='短信发送表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='短信发送表'; DROP TABLE IF EXISTS `sys_role`; @@ -4271,7 +4277,7 @@ CREATE TABLE `sys_role` ( `update_time` int(11) NOT NULL DEFAULT '0' COMMENT '最后修改时间', PRIMARY KEY (`role_id`), KEY `status` (`status`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='角色表'; DROP TABLE IF EXISTS `sys_schedule`; @@ -4289,7 +4295,7 @@ CREATE TABLE `sys_schedule` ( `update_time` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间', `sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统任务'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='系统任务'; DROP TABLE IF EXISTS `sys_user`; @@ -4316,7 +4322,7 @@ CREATE TABLE `sys_user` ( KEY `password` (`password`), KEY `update_time` (`update_time`), KEY `username` (`username`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='后台管理员表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='后台管理员表'; DROP TABLE IF EXISTS `sys_user_log`; @@ -4332,7 +4338,7 @@ CREATE TABLE `sys_user_log` ( PRIMARY KEY (`id`), KEY `create_time` (`create_time`), KEY `uid` (`uid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员操作记录表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='管理员操作记录表'; DROP TABLE IF EXISTS `weapp_version`; @@ -4347,7 +4353,7 @@ CREATE TABLE `weapp_version` ( `fail_reason` VARCHAR(2000) NOT NULL DEFAULT '', `task_key` varchar(20) NOT NULL DEFAULT '' COMMENT '上传任务key', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci; DROP TABLE IF EXISTS `wechat_fans`; @@ -4374,7 +4380,7 @@ CREATE TABLE `wechat_fans` ( PRIMARY KEY (`fans_id`), KEY `openid` (`openid`), KEY `unionid` (`unionid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信粉丝列表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='微信粉丝列表'; DROP TABLE IF EXISTS `wechat_media`; @@ -4387,7 +4393,7 @@ CREATE TABLE `wechat_media` ( `media_id` varchar(70) NOT NULL DEFAULT '0' COMMENT '微信端返回的素材id', PRIMARY KEY (`id`), KEY `type` (`type`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信素材表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='微信素材表'; DROP TABLE IF EXISTS `wechat_reply`; @@ -4406,4 +4412,4 @@ CREATE TABLE `wechat_reply` ( `delete_time` int(11) NOT NULL DEFAULT '0' COMMENT '删除时间', PRIMARY KEY (`id`), KEY `keyword` (`keyword`,`reply_type`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公众号消息回调表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='公众号消息回调表'; diff --git a/niucloud/app/lang/zh-cn/api.php b/niucloud/app/lang/zh-cn/api.php index a8aabb4ee..061da502e 100644 --- a/niucloud/app/lang/zh-cn/api.php +++ b/niucloud/app/lang/zh-cn/api.php @@ -177,13 +177,14 @@ return [ 'SITE_CLOSE_NOT_ALLOW' => '站点已停止', //支付相关(todo 注意:7段不共享) - 'ALIPAY_TRANSACTION_NO_NOT_EXIST' => '无效的支付交易号', + 'PAY_TRANSACTION_NO_NOT_EXIST' => '无效的支付交易号', 'PAYMENT_METHOD_NOT_SUPPORT' => '您选择到支付方式不受业务支持', 'PAYMENT_LOCK' => '支付中,请稍后再试', 'PAY_SUCCESS' => '当前支付已完成', 'PAY_IS_REMOVE' => '当前支付已取消', + 'PAY_NOT_FOUND_TRADE' => '找不到可支付的交易', 'PAYMENT_METHOD_NOT_EXIST' => '你选择的支付方式未启用', - 'PAYMENT_METHOD_NOT_SCENE'=> '你选择的支付方式不适用于当前场景', + 'PAYMENT_METHOD_NOT_SCENE' => '你选择的支付方式不适用于当前场景', 'TREAT_PAYMENT_IS_OPEN' => '只有待支付时可以关闭', 'TRANFER_STATUS_NOT_IN_WAIT_TANSFER' => '当前转账未处于待转账状态', 'TRANSFER_ORDER_INVALID' => '无效的转账单据', diff --git a/niucloud/app/lang/zh-cn/dict.php b/niucloud/app/lang/zh-cn/dict.php index eb4e90f74..62ba5c7c3 100644 --- a/niucloud/app/lang/zh-cn/dict.php +++ b/niucloud/app/lang/zh-cn/dict.php @@ -158,7 +158,7 @@ return [ 'status_wait' => '待支付', 'status_ing' => '支付中', - 'status_ed' => '已支付', + 'status_finish' => '已支付', 'status_cancle' => '已取消', 'status_audit' => '待审核', 'pay' => '收款', @@ -211,6 +211,7 @@ return [ 'member_my_point' => '我的积分', 'member_my_commission' => '我的佣金', 'member_my_personal' => '个人资料', + 'member_my_address' => '收货地址', 'diy_page' => '自定义页面', 'diy_link' => '自定义链接' @@ -270,6 +271,7 @@ return [ 'unipay' => '银联原路退款', 'offline' => '线下退款', 'balance' => '退款到余额', + 'back' => '原路退款', ], 'dict_order_refund' => [ 'refunding' => '退款中', diff --git a/niucloud/app/model/diy/Diy.php b/niucloud/app/model/diy/Diy.php index 17315b595..84a486280 100644 --- a/niucloud/app/model/diy/Diy.php +++ b/niucloud/app/model/diy/Diy.php @@ -41,6 +41,20 @@ class Diy extends BaseModel */ protected $name = 'diy_page'; + /** + * 状态字段转化 + * @param $value + * @param $data + * @return mixed + */ + public function getTypePageAttr($value, $data) + { + if (!empty($data[ 'type' ])) { + return TemplateDict::getTemplate([ 'type' => [ $data[ 'type' ] ] ])[ $data[ 'type' ] ][ 'page' ] ?? ''; + } + return ''; + } + /** * 状态字段转化 * @param $value diff --git a/niucloud/app/model/pay/AccountLog.php b/niucloud/app/model/pay/AccountLog.php index 16265278f..b3dfbb98b 100644 --- a/niucloud/app/model/pay/AccountLog.php +++ b/niucloud/app/model/pay/AccountLog.php @@ -57,8 +57,8 @@ class AccountLog extends BaseModel { return match ($data['type']) { 'pay' => (new Pay())->where([['out_trade_no', '=', $data['trade_no']]])->append(['type_name'])->findOrEmpty()->toArray(), - 'refund' => (new Refund())->where([['refund_no', '=', $data['trade_no']]])->findOrEmpty()->toArray(), - 'transfer' => (new Transfer())->where([['transfer_no', '=', $data['trade_no']]])->findOrEmpty()->toArray(), + 'refund' => (new Refund())->where([['refund_no', '=', $data['trade_no']]])->append(['type_name'])->findOrEmpty()->toArray(), + 'transfer' => (new Transfer())->where([['transfer_no', '=', $data['trade_no']]])->append(['transfer_type_name'])->findOrEmpty()->toArray(), default => [], }; } diff --git a/niucloud/app/model/pay/Refund.php b/niucloud/app/model/pay/Refund.php index defc826f3..130a026f1 100644 --- a/niucloud/app/model/pay/Refund.php +++ b/niucloud/app/model/pay/Refund.php @@ -11,6 +11,7 @@ namespace app\model\pay; +use app\dict\pay\PayDict; use app\dict\pay\RefundDict; use core\base\BaseModel; @@ -40,7 +41,7 @@ class Refund extends BaseModel ]; /** - * 状态字段转化 + * 支付状态字段转化 * @param $value * @param $data * @return mixed @@ -60,7 +61,76 @@ class Refund extends BaseModel public function getTypeNameAttr($value, $data) { if (empty($data['type'])) return ''; - return RefundDict::getType()[$data['type']] ?? ''; + return PayDict::getPayType()[$data['type']]['name'] ?? ''; } + /** + * 退款方式 + * @param $value + * @param $data + * @return mixed|string + * + */ + public function getRefundTypeNameAttr($value, $data) + { + if (empty($data['refund_type'])) return ''; + return RefundDict::getType()[$data['refund_type']] ?? ''; + } + + + /** + * 创建时间搜索器 + * @param $query + * @param $value + * @param $data + */ + public function searchCreateTimeAttr($query, $value, $data) + { + $start_time = empty($value[0]) ? 0 : strtotime($value[0]); + $end_time = empty($value[1]) ? 0 : strtotime($value[1]); + if ($start_time > 0 && $end_time > 0) { + $query->whereBetweenTime('create_time', $start_time, $end_time); + } else if ($start_time > 0 && $end_time == 0) { + $query->where([['create_time', '>=', $start_time]]); + } else if ($start_time == 0 && $end_time > 0) { + $query->where([['create_time', '<=', $end_time]]); + } + } + + /** + * 查询交易流水号 + * @param $query + * @param $value + * @return void + */ + public function searchOutTradeNoAttr($query, $value) { + if (!empty($value)) { + $query->whereLike([['out_trade_no', '%'.$value.'%']]); + } + } + + /** + * 退款号查询 + * @param $query + * @param $value + * @return void + */ + public function searchRefundNoAttr($query, $value) { + if (!empty($value)) { + $query->whereLike([['refund_no', '%'.$value.'%']]); + } + } + /** + * 查询交易状态 + * @param $query + * @param $value + * @return void + */ + public function searchStatusAttr($query, $value) { + if ($value != '') { + $query->where([['status', '=', $value]]); + } + } + + } diff --git a/niucloud/app/service/admin/diy/DiyService.php b/niucloud/app/service/admin/diy/DiyService.php index ba42f36a1..36c67eafe 100644 --- a/niucloud/app/service/admin/diy/DiyService.php +++ b/niucloud/app/service/admin/diy/DiyService.php @@ -50,7 +50,7 @@ class DiyService extends BaseAdminService { $field = 'id,title,name,template,type,mode,is_default,share,visit_count,create_time,update_time'; $order = "update_time desc"; - $search_model = $this->model->withSearch([ "title", "type", 'mode' ], $where)->field($field)->order($order)->append([ 'type_name' ]); + $search_model = $this->model->withSearch([ "title", "type", 'mode' ], $where)->field($field)->order($order)->append([ 'type_name', 'type_page' ]); return $this->pageQuery($search_model); } @@ -185,7 +185,8 @@ class DiyService extends BaseAdminService $data = $this->getInfoByName($params[ 'name' ]); } elseif (!empty($params[ 'url' ])) { foreach ($template as $k => $v) { - if ($params[ 'url' ] == '/' . $v[ 'page' ]) { + + if ($params[ 'url' ] == $v[ 'page' ]) { $params[ 'name' ] = $k; $params[ 'type' ] = $k; } @@ -197,7 +198,11 @@ class DiyService extends BaseAdminService if (isset($template[ $data[ 'type' ] ])) { $page = $template[ $data[ 'type' ] ]; $data[ 'type_name' ] = $page[ 'title' ]; - $data[ 'page' ] = $page[ 'page' ]; + if ($data[ 'is_default' ] == 1) { + $data[ 'page' ] = $page[ 'page' ]; + } else { + $data[ 'page' ] = $template[ 'DIY_PAGE' ][ 'page' ]; + } } } else { @@ -473,12 +478,12 @@ class DiyService extends BaseAdminService if (!empty($page_data)) { if ($info[ 'is_change' ] == 1) { // 修改过模板,预览实际内容 - $use_template[ 'url' ] = '/' . $v[ 'page' ] . '?id=' . $info[ 'id' ]; + $use_template[ 'url' ] = $v[ 'page' ] . '?id=' . $info[ 'id' ]; } else { $use_template[ 'cover' ] = $page_data[ 'cover' ]; // 默认图 $use_template[ 'desc' ] = $page_data[ 'desc' ]; if (empty($page_data[ 'cover' ])) { - $use_template[ 'url' ] = '/' . $v[ 'page' ] . '?id=' . $info[ 'id' ]; + $use_template[ 'url' ] = $v[ 'page' ] . '?id=' . $info[ 'id' ]; } } } else { @@ -512,7 +517,7 @@ class DiyService extends BaseAdminService // 如果没有预览图,并且没有地址,则赋值 if (empty($use_template[ 'cover' ]) && empty($use_template[ 'url' ])) { - $use_template[ 'url' ] = '/' . $v[ 'page' ]; + $use_template[ 'url' ] = $v[ 'page' ]; } $template[ $k ][ 'use_template' ] = $use_template; @@ -525,7 +530,6 @@ class DiyService extends BaseAdminService * 切换模板 * @param array $params * @return array - * @throws Exception */ public function changeTemplate(array $params = []) { @@ -634,38 +638,4 @@ class DiyService extends BaseAdminService return $info; } - /** - * 获取页面预览数据 - * @param array $params - * @return array - */ - public function getPreviewData(array $params = []) - { - $info = []; - if (!empty($params[ 'id' ])) { - $info = $this->getInfo($params[ 'id' ]); - } elseif (!empty($params[ 'name' ])) { - $info = $this->getInfoByName($params[ 'name' ]); - } - - $res = [ - 'page' => $this->getTemplate([ 'type' => [ 'DIY_PAGE' ] ])[ 'DIY_PAGE' ][ 'page' ] - ]; - - if (!empty($info)) { - if ($info[ 'is_default' ] == 1) { - $template = $this->getTemplate([ 'type' => [ $info[ 'type' ] ] ])[ $info[ 'type' ] ]; - $res[ 'page' ] = $template[ 'page' ] . '?id=' . $info[ 'id' ]; - } else { - $res[ 'page' ] .= '?id=' . $info[ 'id' ]; - } - } elseif ($params[ 'name' ]) { - // 表里没有数据,查询默认页面数据 - $template = $this->getTemplate([ 'type' => [ $params[ 'name' ] ] ])[ $params[ 'name' ] ]; - $res[ 'page' ] = $template[ 'page' ]; - } - - return $res; - } - } \ No newline at end of file diff --git a/niucloud/app/service/admin/generator/core/BaseGenerator.php b/niucloud/app/service/admin/generator/core/BaseGenerator.php index 6272895e9..5a5986446 100644 --- a/niucloud/app/service/admin/generator/core/BaseGenerator.php +++ b/niucloud/app/service/admin/generator/core/BaseGenerator.php @@ -368,9 +368,9 @@ abstract class BaseGenerator } elseif (str_starts_with($type, 'timestamp')) { $result = time(); } elseif (str_starts_with($type, 'datetime')) { - $result = date('Y-m-d H:i:s'); + $result = '"'.date('Y-m-d H:i:s').'"'; } elseif (str_starts_with($type, 'date')) { - $result = date('Y-m-d H:i:s'); + $result = '"'.date('Y-m-d H:i:s').'"'; } else { $result = '""'; } diff --git a/niucloud/app/service/admin/niucloud/NiucloudService.php b/niucloud/app/service/admin/niucloud/NiucloudService.php index fe1fc282d..2a3559796 100644 --- a/niucloud/app/service/admin/niucloud/NiucloudService.php +++ b/niucloud/app/service/admin/niucloud/NiucloudService.php @@ -16,6 +16,7 @@ use app\service\core\niucloud\CoreAuthService; use app\service\core\sys\CoreConfigService; use core\base\BaseAdminService; use core\exception\CommonException; +use core\util\niucloud\BaseNiucloudClient; /** * 消息管理服务层 @@ -44,6 +45,8 @@ class NiucloudService extends BaseAdminService ]; $auth_info = (new CoreAuthService($data['auth_code'], $data['auth_secret']))->getAuthInfo()['data'] ?? []; if (empty($auth_info)) throw new CommonException('AUTH_NOT_EXISTS'); + //清除access_token缓存 + (new BaseNiucloudClient())->clearAccessToken(); return $this->core_config_service->setConfig(ConfigKeyDict::NIUCLOUD_CONFIG, $data); } diff --git a/niucloud/app/service/admin/pay/AccountLogService.php b/niucloud/app/service/admin/pay/AccountLogService.php index 81ed214ab..a759aae70 100644 --- a/niucloud/app/service/admin/pay/AccountLogService.php +++ b/niucloud/app/service/admin/pay/AccountLogService.php @@ -39,7 +39,7 @@ class AccountLogService extends BaseAdminService { $field = 'id, type, money, trade_no, create_time'; - $search_model = $this->model->withSearch([ 'create_time', 'type' ], $where)->field($field)->append([ 'type_name', 'pay_info', 'money' ])->order('create_time desc'); + $search_model = $this->model->withSearch([ 'create_time', 'type' ], $where)->field($field)->append([ 'type_name', 'money', 'pay_info' ])->order('create_time desc'); return $this->pageQuery($search_model); } @@ -51,8 +51,7 @@ class AccountLogService extends BaseAdminService public function getInfo(int $id) { $field = 'id, type, money, trade_no, create_time'; - return $this->model->where([ ['id', '=', $id]])->field($field)->append([ 'type_name', 'pay_info' ])->findOrEmpty()->toArray(); - + return $this->model->where([ [ 'id', '=', $id ] ])->field($field)->append([ 'type_name', 'pay_info' ])->findOrEmpty()->toArray(); } /** @@ -62,9 +61,9 @@ class AccountLogService extends BaseAdminService public function stat() { return [ - 'pay' => $this->model->where([ ['type', '=', 'pay']])->sum("money")*1, - 'refund' => $this->model->where([ ['type', '=', 'refund']])->sum("money")*-1, - 'transfer' => $this->model->where([['type', '=', 'transfer']])->sum("money")*-1, + 'pay' => $this->model->where([ [ 'type', '=', 'pay' ] ])->sum("money") * 1, + 'refund' => $this->model->where([ [ 'type', '=', 'refund' ] ])->sum("money") * -1, + 'transfer' => $this->model->where([ [ 'type', '=', 'transfer' ] ])->sum("money") * -1, ]; } diff --git a/niucloud/app/service/admin/pay/RefundService.php b/niucloud/app/service/admin/pay/RefundService.php new file mode 100644 index 000000000..367631e57 --- /dev/null +++ b/niucloud/app/service/admin/pay/RefundService.php @@ -0,0 +1,67 @@ +model = new Refund(); + } + + /** + * 退款账户记录 + * @param array $where + * @return mixed + */ + public function getPage(array $where){ + $field = 'id,refund_no,out_trade_no,type,channel,money,reason,status,create_time,refund_time,close_time,fail_reason,voucher,trade_type,trade_id,refund_type,main_type,main_id'; + $search_model = $this->model->withSearch([ 'create_time', 'out_trade_no', 'refund_no', 'status' ], $where)->field($field)->append([ 'type_name', 'status_name' ])->order('create_time desc'); + return $this->pageQuery($search_model); + } + + /** + * 获取退款详情 + * @param string $refund_no + * @return void + */ + public function getDetail(string $refund_no){ + $field = 'id,refund_no,out_trade_no,type,channel,money,reason,status,create_time,refund_time,close_time,fail_reason,voucher,trade_type,trade_id,refund_type,main_type,main_id'; + return $this->model->where([ ['refund_no', '=', $refund_no ] ]) + ->field($field) + ->append([ 'type_name', 'status_name', 'refund_type_name' ]) + ->findOrEmpty() + ->toArray(); + } + + /** + * 支付审核通过 + * @param array $data + * @return null + */ + public function refund(array $data) { + return (new CoreRefundService())->refund($data['refund_no'], $data['voucher'], $data['refund_type'], PayDict::STORE, $this->uid); + } + +} diff --git a/niucloud/app/service/admin/sys/MenuService.php b/niucloud/app/service/admin/sys/MenuService.php index 6013fdd21..05c863ac4 100644 --- a/niucloud/app/service/admin/sys/MenuService.php +++ b/niucloud/app/service/admin/sys/MenuService.php @@ -62,9 +62,11 @@ class MenuService extends BaseAdminService */ public function edit(string $menu_key, array $data) { -// $menu = $this->find($menu_key); -// if($menu->isEmpty()) throw new AdminException(); -// if($menu['source'] != MenuDict::CREATE) throw new AdminException(''); +// if($menu_key != $data['menu_key']) +// { +// $menu = $this->find($data['menu_key']); +// if(!$menu->isEmpty()) throw new AdminException('validate_menu.exit_menu_key');//创建失败 +// } $where = array( ['menu_key', '=', $menu_key] ); @@ -107,10 +109,31 @@ class MenuService extends BaseAdminService $menu = $this->find($menu_key); if ($menu->isEmpty()) throw new AdminException('MENU_NOT_EXIST'); - if((new SysMenu())->where([['parent_key', '=', $menu_key]])->count() > 0) - throw new AdminException('MENU_NOT_ALLOW_DELETE'); - $res = $menu->delete(); + if($menu['addon'] != '') + { + $where[] = ['addon','=',$menu['addon']]; + $count = (new SysMenu())->where([['addon','=',$menu['addon']]])->group('parent_key')->count(); + }else{ + $count = (new SysMenu())->where([['addon','=','']])->group('parent_key')->count(); + } + if($count == 0) + { + $menu_where[] = ['menu_key','=',$menu_key]; + }else{ + for ($i = 0; $i<= $count; $i++) + { + $key[$i] = [$menu_key]; + + $where[] = ['parent_key','in',$key[$i]]; + $chilren[$i] = (new SysMenu())->where($where)->field('menu_key')->select()->toArray(); + $chilren_key[$i] = array_column($chilren[$i],'menu_key'); + $key = array_merge($key[$i],$chilren_key[$i]); + $key = array_unique($key); + } + $menu_where[] = ['menu_key','in',$key]; + } + $res = (new SysMenu())->where($menu_where)->delete(); Cache::tag(self::$cache_tag_name)->clear(); return $res; } diff --git a/niucloud/app/service/admin/user/UserService.php b/niucloud/app/service/admin/user/UserService.php index a90083167..4e8b838fb 100644 --- a/niucloud/app/service/admin/user/UserService.php +++ b/niucloud/app/service/admin/user/UserService.php @@ -35,7 +35,6 @@ class UserService extends BaseAdminService public function __construct() { parent::__construct(); - $this->model = new SysUser(); } /** @@ -54,7 +53,7 @@ class UserService extends BaseAdminService if (!empty($where['role'])) { $search['role_ids'] = $where['role']; } - $search_model = $this->model->withSearch(['username', 'realname', 'create_time', 'role_ids'], $search)->field($field)->order('uid desc')->append(['status_name']); + $search_model = (new SysUser())->withSearch(['username', 'realname', 'create_time', 'role_ids'], $search)->field($field)->order('uid desc')->append(['status_name']); return $this->pageQuery($search_model, function ($item, $key) { $role_ids = $item['role_ids'] ?? []; $item->role_data = $this->getRoleByUserRoleIds($role_ids); @@ -72,7 +71,7 @@ class UserService extends BaseAdminService ['uid', '=', $uid], ); $field = 'uid, username, head_img, real_name, last_ip, last_time, create_time, login_count, status, delete_time, update_time, role_ids, is_admin'; - $user = $this->model->where($where)->field($field)->findOrEmpty(); + $user = (new SysUser())->where($where)->field($field)->findOrEmpty(); if ($user->isEmpty()) return []; @@ -103,7 +102,7 @@ class UserService extends BaseAdminService 'is_admin' => $data['is_admin'], 'role_ids' => $data['role_ids'], ]; - $user = $this->model->create($user_data); + $user = (new SysUser())->create($user_data); return $user?->uid; } @@ -188,7 +187,7 @@ class UserService extends BaseAdminService */ public function checkUsername($username) { - $count = $this->model->where([['username', '=', $username]])->count(); + $count = (new SysUser())->where([['username', '=', $username]])->count(); if($count > 0) { return true; @@ -203,7 +202,7 @@ class UserService extends BaseAdminService */ public function find(int $uid){ - $user = $this->model->findOrEmpty($uid); + $user = (new SysUser())->findOrEmpty($uid); if ($user->isEmpty()) throw new AdminException('USER_NOT_EXIST'); return $user; @@ -266,7 +265,7 @@ class UserService extends BaseAdminService $where = [ ['uid', '=', $uid] ]; - $this->model->where($where)->delete(); + (new SysUser())->where($where)->delete(); return true; } @@ -277,7 +276,7 @@ class UserService extends BaseAdminService * @return SysUser|array|mixed|Model */ public function getUserInfoByUsername(string $username){ - return $this->model->where([['username', '=',$username]])->findOrEmpty(); + return (new SysUser())->where([['username', '=',$username]])->findOrEmpty(); } /** @@ -294,7 +293,7 @@ class UserService extends BaseAdminService ['uid', '=', $uid], ); $field = 'uid, username, head_img, real_name, last_ip, last_time, create_time, login_count, status, delete_time, update_time, role_ids, is_admin'; - $user = $this->model->where($where)->field($field)->append(['status_name'])->findOrEmpty(); + $user = (new SysUser())->where($where)->field($field)->append(['status_name'])->findOrEmpty(); return $user->toArray(); }, [self::$cache_tag_name, RoleService::$cache_tag_name] diff --git a/niucloud/app/service/api/diy/DiyService.php b/niucloud/app/service/api/diy/DiyService.php index c321fcece..cdc5aeafb 100644 --- a/niucloud/app/service/api/diy/DiyService.php +++ b/niucloud/app/service/api/diy/DiyService.php @@ -41,7 +41,7 @@ class DiyService extends BaseApiService $diy_config_service = new DiyConfigService(); $start_up_page = $diy_config_service->getStartUpPageConfig($params[ 'name' ]); - if (!empty($start_up_page) && $start_up_page[ 'mode' ] == 'other') { + if (!empty($start_up_page) && $start_up_page[ 'mode' ] == 'other' && $params[ 'name' ] != $start_up_page[ 'type' ]) { $info = $start_up_page; return $info; } else { diff --git a/niucloud/app/service/api/member/AddressService.php b/niucloud/app/service/api/member/AddressService.php index be652b63f..4299ee81d 100644 --- a/niucloud/app/service/api/member/AddressService.php +++ b/niucloud/app/service/api/member/AddressService.php @@ -35,7 +35,7 @@ class AddressService extends BaseApiService */ public function getList(array $where = []) { - $field = 'id,member_id,name,mobile,province_id,city_id,district_id,address,full_address,lng,lat,is_default,type'; + $field = 'id,member_id,name,mobile,address,address_name,full_address,is_default,type'; $order = 'is_default desc, id desc'; $list = $this->model->where([ ['member_id', '=', $this->member_id ] ])->withSearch(["type"], $where)->field($field)->order($order)->select()->toArray(); @@ -49,7 +49,7 @@ class AddressService extends BaseApiService */ public function getInfo(int $id) { - $field = 'id,member_id,name,mobile,province_id,city_id,district_id,address,full_address,lng,lat,is_default,type'; + $field = 'id,member_id,name,mobile,province_id,city_id,district_id,address,address_name,full_address,lng,lat,is_default,type'; $info = $this->model->field($field)->where([ ['id', '=', $id], ['member_id', '=', $this->member_id ] ])->findOrEmpty()->toArray(); return $info; @@ -63,7 +63,7 @@ class AddressService extends BaseApiService public function add(array $data) { if ($data['is_default']) { - $this->model->where([ ['member_id', '=', $this->member_id ] ])->update(['is_default' => 0]); + $this->model->where([ ['member_id', '=', $this->member_id ], ['type', '=', $data['type']] ])->update(['is_default' => 0]); } $data['member_id'] = $this->member_id; $res = $this->model->create($data); @@ -79,7 +79,7 @@ class AddressService extends BaseApiService public function edit(int $id, array $data) { if ($data['is_default']) { - $this->model->where([ ['member_id', '=', $this->member_id ] ])->update(['is_default' => 0]); + $this->model->where([ ['member_id', '=', $this->member_id ], ['type', '=', $data['type']] ])->update(['is_default' => 0]); } $this->model->where([ ['id', '=', $id], ['member_id', '=', $this->member_id ] ])->update($data); return true; diff --git a/niucloud/app/service/api/pay/PayService.php b/niucloud/app/service/api/pay/PayService.php index f85d98129..b80c0e561 100644 --- a/niucloud/app/service/api/pay/PayService.php +++ b/niucloud/app/service/api/pay/PayService.php @@ -90,7 +90,16 @@ class PayService extends BaseApiService return $this->core_pay_service->getInfoByOutTradeNo($out_trade_no, $this->channel); } - public function getInfoByTrade(string $trade_type, int $trade_id){ + /** + * 支付信息 + * @param string $trade_type + * @param int $trade_id + * @return array + * @throws DataNotFoundException + * @throws DbException + * @throws ModelNotFoundException + */ + public function getInfoByTrade(string $trade_type, $trade_id){ return $this->core_pay_service->getInfoByTrade($trade_type, $trade_id, $this->channel); } diff --git a/niucloud/app/service/core/addon/WapTrait.php b/niucloud/app/service/core/addon/WapTrait.php index 21d4bc214..569988014 100644 --- a/niucloud/app/service/core/addon/WapTrait.php +++ b/niucloud/app/service/core/addon/WapTrait.php @@ -59,7 +59,7 @@ trait WapTrait $file_name = 'diy-' . $path; $content .= " \n"; } } @@ -97,7 +97,7 @@ trait WapTrait $file_name = 'diy-' . $path; $content .= " \n"; $addon_import_content .= " import diy{$name} from '@/" . $v . "/components/diy/{$path}/index.vue';\n"; @@ -125,7 +125,7 @@ trait WapTrait $content .= " import Sortable from 'sortablejs';\n"; $content .= " import { range } from 'lodash-es';\n"; - $content .= " const props = defineProps(['data','pullDownRefresh']);\n"; + $content .= " const props = defineProps(['data','pullDownRefreshCount']);\n"; $content .= " const diyStore = useDiyStore();\n\n"; $content .= " const data = computed(() => {\n"; @@ -200,7 +200,7 @@ trait WapTrait $file_name = 'fixed-' . $path; $content .= " \n"; } } @@ -239,7 +239,7 @@ trait WapTrait $file_name = 'fixed-' . $path; $content .= " \n"; $addon_import_content .= " import fixed{$name} from '@/" . $v . "/components/fixed/{$path}/index.vue';\n"; @@ -255,7 +255,7 @@ trait WapTrait if (!empty($addon_import_content)) { $content .= $addon_import_content; } - $content .= " const props = defineProps(['data','pullDownRefresh']);\n"; + $content .= " const props = defineProps(['data','pullDownRefreshCount']);\n"; $content .= "\n"; $content .= "