+
{{ !{LCASE_CLASS_NAME}Table.loading ? t('emptyData') : '' }}
-
{LISTS_VIEW}
-
{{ t('edit') }}
@@ -53,6 +52,9 @@ import { get{UCASE_NAME}List, delete{UCASE_NAME} } from '@/api/{MODULE_NAME}'
import { img } from '@/utils/common'
import { ElMessageBox } from 'element-plus'
{EDIT_PATH}
+import { useRoute } from 'vue-router'
+const route = useRoute()
+const pageName = route.meta.title;
let {LCASE_CLASS_NAME}Table = reactive({
page: 1,
diff --git a/niucloud/app/service/admin/install/InstallDiyService.php b/niucloud/app/service/admin/install/InstallDiyService.php
deleted file mode 100644
index 0364d6614..000000000
--- a/niucloud/app/service/admin/install/InstallDiyService.php
+++ /dev/null
@@ -1,329 +0,0 @@
-installDiy($params);
- return true;
- }
-
- /**
- * 安装自定义数据
- */
- public function installDiy(array $params = [])
- {
- $diy = new Diy();
-
- $page_data = [
- [
- "site_id" => $params[ 'site_id' ],
- "title" => "首页",
- "name" => "DIY_INDEX",
- "type" => "DIY_INDEX",
- 'is_default' => 1,
- 'create_time' => time(),
- 'update_time' => time(),
- "value" => json_encode([
- "global" => [
- "title" => "首页",
- "pageBgColor" => "#F8F8F8",
- "tabbarSwitch" => true
- ],
- "value" => [
- [
- "path" => "edit-image-ads",
- "id" => "4640ld4k1pu0",
- "componentName" => "ImageAds",
- "componentTitle" => "图片广告",
- "maxCount" => 0,
- "list" => [
- [
- "link" => [
- "name" => ""
- ],
- "imageUrl" => "static/resource/images/diy/banner.png",
- "imgWidth" => 750,
- "imgHeight" => 320,
- "id" => "2xuytp7622w0"
- ]
- ]
- ],
- [
- "path" => "edit-graphic-nav",
- "id" => "282cpxba4534",
- "componentName" => "GraphicNav",
- "componentTitle" => "图文导航",
- "maxCount" => 0,
- "layout" => "horizontal",
- "navTitle" => "",
- "mode" => "graphic",
- "showStyle" => "fixed",
- "rowCount" => 4,
- "pageCount" => 2,
- "carousel" => [
- "type" => "circle",
- "color" => "#FFFFFF"
- ],
- "imageSize" => 40,
- "aroundRadius" => 25,
- "font" => [
- "size" => 14,
- "weight" => "normal",
- "color" => "#303133"
- ],
- "list" => [
- [
- "title" => "文章资讯",
- "link" => [
- "parent" => "SYSTEM_LINK",
- "name" => "ARTICLE_LIST",
- "title" => "文章资讯",
- "url" => "/pages/article/list"
- ],
- "imageUrl" => "static/resource/images/diy/article_list.png",
- "label" => [
- "control" => false,
- "text" => "热门",
- "textColor" => "#FFFFFF",
- "bgColorStart" => "#F83287",
- "bgColorEnd" => "#FE3423"
- ],
- "id" => "66rwqy8vxog0",
- "imgWidth" => 176,
- "imgHeight" => 176
- ],
- [
- "title" => "个人资料",
- "link" => [
- "parent" => "MEMBER_LINK",
- "name" => "MEMBER_PERSONAL",
- "title" => "个人资料",
- "url" => "/pages/member/personal"
- ],
- "imageUrl" => "static/resource/images/diy/my_personal.png",
- "label" => [
- "control" => false,
- "text" => "热门",
- "textColor" => "#FFFFFF",
- "bgColorStart" => "#F83287",
- "bgColorEnd" => "#FE3423"
- ],
- "id" => "30cdezm3f6e0",
- "imgWidth" => 176,
- "imgHeight" => 176
- ],
- [
- "title" => "我的余额",
- "link" => [
- "parent" => "MEMBER_LINK",
- "name" => "MEMBER_BALANCE",
- "title" => "我的余额",
- "url" => "/pages/member/balance"
- ],
- "imageUrl" => "static/resource/images/diy/my_balance.png",
- "label" => [
- "control" => false,
- "text" => "热门",
- "textColor" => "#FFFFFF",
- "bgColorStart" => "#F83287",
- "bgColorEnd" => "#FE3423"
- ],
- "id" => "20l5hypbzvfk",
- "imgWidth" => 176,
- "imgHeight" => 176
- ],
- [
- "title" => "我的积分",
- "link" => [
- "parent" => "MEMBER_LINK",
- "name" => "MEMBER_POINT",
- "title" => "我的积分",
- "url" => "/pages/member/point"
- ],
- "imageUrl" => "static/resource/images/diy/my_point.png",
- "label" => [
- "control" => false,
- "text" => "热门",
- "textColor" => "#FFFFFF",
- "bgColorStart" => "#F83287",
- "bgColorEnd" => "#FE3423"
- ],
- "id" => "7bdb8wyt3g00",
- "imgWidth" => 176,
- "imgHeight" => 176
- ]
- ]
- ],
- [
- "path" => "edit-article",
- "id" => "524jcssmp8c0",
- "componentName" => "Article",
- "componentTitle" => "文章",
- "maxCount" => 0,
- "sources" => "initial",
- "count" => 8,
- "articleIds" => []
- ]
- ]
- ])
- ],
- [
- "site_id" => $params[ 'site_id' ],
- "title" => "个人中心",
- "name" => "DIY_MEMBER_INDEX",
- "type" => "DIY_MEMBER_INDEX",
- 'is_default' => 1,
- 'create_time' => time(),
- 'update_time' => time(),
- "value" => json_encode([
- "global" => [
- "title" => "个人中心",
- "pageBgColor" => "#F8F8F8",
- "tabbarSwitch" => true
- ],
- "value" => [
- [
- "path" => "edit-member-info",
- "id" => "67qv49qgxp00",
- "componentName" => "MemberInfo",
- "componentTitle" => "会员信息",
- "maxCount" => 0,
- "height" => 20
- ],
- [
- "path" => "edit-graphic-nav",
- "id" => "62b7d7hl4ok",
- "componentName" => "GraphicNav",
- "componentTitle" => "图文导航",
- "maxCount" => 0,
- "layout" => "vertical",
- "navTitle" => "我的服务",
- "mode" => "graphic",
- "showStyle" => "fixed",
- "rowCount" => 4,
- "pageCount" => 2,
- "carousel" => [
- "type" => "circle",
- "color" => "#FFFFFF"
- ],
- "imageSize" => 40,
- "aroundRadius" => 25,
- "font" => [
- "size" => 14,
- "weight" => "normal",
- "color" => "#303133"
- ],
- "list" => [
- [
- "title" => "个人资料",
- "link" => [
- "parent" => "MEMBER_LINK",
- "name" => "MEMBER_PERSONAL",
- "title" => "个人资料",
- "url" => "/pages/member/personal"
- ],
- "imageUrl" => "static/resource/images/diy/my_personal.png",
- "label" => [
- "control" => false,
- "text" => "热门",
- "textColor" => "#FFFFFF",
- "bgColorStart" => "#F83287",
- "bgColorEnd" => "#FE3423"
- ],
- "id" => "xvlauaflc6o",
- "imgWidth" => 176,
- "imgHeight" => 176
- ],
- [
- "title" => "我的余额",
- "link" => [
- "parent" => "MEMBER_LINK",
- "name" => "MEMBER_BALANCE",
- "title" => "我的余额",
- "url" => "/pages/member/balance"
- ],
- "imageUrl" => "static/resource/images/diy/my_balance.png",
- "label" => [
- "control" => false,
- "text" => "热门",
- "textColor" => "#FFFFFF",
- "bgColorStart" => "#F83287",
- "bgColorEnd" => "#FE3423"
- ],
- "id" => "63bjscck5n40",
- "imgWidth" => 176,
- "imgHeight" => 176
- ],
- [
- "title" => "我的积分",
- "link" => [
- "parent" => "MEMBER_LINK",
- "name" => "MEMBER_POINT",
- "title" => "我的积分",
- "url" => "/pages/member/point"
- ],
- "imageUrl" => "static/resource/images/diy/my_point.png",
- "label" => [
- "control" => false,
- "text" => "热门",
- "textColor" => "#FFFFFF",
- "bgColorStart" => "#F83287",
- "bgColorEnd" => "#FE3423"
- ],
- "id" => "4qiczw54t8g0",
- "imgWidth" => 176,
- "imgHeight" => 176
- ],
- [
- "title" => "联系客服",
- "link" => [
- "name" => ""
- ],
- "imageUrl" => "static/resource/images/diy/my_service.png",
- "label" => [
- "control" => false,
- "text" => "热门",
- "textColor" => "#FFFFFF",
- "bgColorStart" => "#F83287",
- "bgColorEnd" => "#FE3423"
- ],
- "id" => "2eqwfkdphpgk",
- "imgWidth" => 176,
- "imgHeight" => 176
- ]
- ]
- ]
- ]
- ])
- ]
- ];
-// $diy->where([ [ 'name', 'in', [ 'DIY_INDEX', 'DIY_MEMBER_INDEX' ] ] ])->update([ 'is_default' => 0 ]);
- $diy->insertAll($page_data);
- return true;
- }
-
-}
\ No newline at end of file
diff --git a/niucloud/app/service/admin/install/InstallSystemService.php b/niucloud/app/service/admin/install/InstallSystemService.php
index ae2104216..ff8d9ce5a 100644
--- a/niucloud/app/service/admin/install/InstallSystemService.php
+++ b/niucloud/app/service/admin/install/InstallSystemService.php
@@ -11,7 +11,7 @@
namespace app\service\admin\install;
-use app\enum\sys\AppTypeEnum;
+use app\dict\sys\AppTypeDict;
use app\model\sys\SysMenu;
use app\service\admin\sys\MenuService;
use app\service\core\menu\CoreMenuService;
@@ -45,8 +45,8 @@ class InstallSystemService extends BaseAdminService
$sys_menu = new SysMenu();
//系统菜单
- $admin_menus = $this->loadMenu(AppTypeEnum::ADMIN);
- $site_menus = $this->loadMenu(AppTypeEnum::SITE);
+ $admin_menus = $this->loadMenu(AppTypeDict::ADMIN);
+ $site_menus = $this->loadMenu(AppTypeDict::SITE);
$menus = array_merge($admin_menus, $site_menus);
$sys_menu->where([ [ 'id', '>', 0 ] ])->delete();
$sys_menu->replace()->insertAll($menus);
@@ -64,7 +64,7 @@ class InstallSystemService extends BaseAdminService
public function loadMenu($app_type)
{
//加载系统
- $system_tree = include root_path() . str_replace('/', DIRECTORY_SEPARATOR, "app/enum/menu/" . $app_type . ".php");
+ $system_tree = include root_path() . str_replace('/', DIRECTORY_SEPARATOR, "app/dict/menu/" . $app_type . ".php");
$this->menuTreeToList($system_tree, '', $app_type);
$menu_list = $this->menu_list;
$this->menu_list = [];
@@ -77,7 +77,7 @@ class InstallSystemService extends BaseAdminService
* @param string $parent_key
* @param string $app_type
*/
- private function menuTreeToList(array $tree, string $parent_key = '', string $app_type = AppTypeEnum::ADMIN)
+ private function menuTreeToList(array $tree, string $parent_key = '', string $app_type = AppTypeDict::ADMIN)
{
if (is_array($tree)) {
foreach ($tree as $key => $value) {
@@ -94,8 +94,7 @@ class InstallSystemService extends BaseAdminService
'methods' => $value[ 'methods' ] ?? '',
'sort' => $value[ 'sort' ] ?? '',
'status' => 1,
- 'is_show' => $value[ 'is_show' ] ?? 1,
- 'en_menu_name' => $value[ 'en_menu_name' ] ?? '',
+ 'is_show' => $value[ 'is_show' ] ?? 1
];
$refer = $value;
if (isset($refer[ 'children' ])) {
diff --git a/niucloud/app/service/admin/member/MemberAccountService.php b/niucloud/app/service/admin/member/MemberAccountService.php
index 35f2474ed..1f4245387 100644
--- a/niucloud/app/service/admin/member/MemberAccountService.php
+++ b/niucloud/app/service/admin/member/MemberAccountService.php
@@ -11,7 +11,8 @@
namespace app\service\admin\member;
-use app\enum\member\MemberAccountEnum;
+use app\dict\member\MemberAccountChangeTypeDict;
+use app\dict\member\MemberAccountTypeDict;
use app\model\member\Member;
use app\model\member\MemberAccountLog;
use app\service\core\member\CoreMemberAccountService;
@@ -39,8 +40,16 @@ class MemberAccountService extends BaseAdminService
public function getPage(array $where = [])
{
- $field = 'id, member_id, site_id, account_type, account_data, from_type, related_id, create_time, memo';
- $search_model = $this->model->where([['site_id', '=', $this->site_id]])->withSearch(['member_id','account_type', 'from_type', 'create_time'],$where)->with('memberInfo')->field($field)->order('create_time desc')->append(['from_type_name', 'account_type_name']);
+ $field = 'member_account_log.id, member_account_log.member_id, member_account_log.site_id, member_account_log.account_type, member_account_log.account_data,member_account_log.account_sum, member_account_log.from_type, member_account_log.related_id, member_account_log.create_time, member_account_log.memo';
+ $member_where = [];
+ if(!empty($where['keywords']))
+ {
+ $member_where[] = ["member.member_no|member.nickname|member.mobile", '=', $where['keywords']];
+ }
+ $search_model = $this->model->where([['member_account_log.site_id', '=', $this->site_id]])->withSearch(['member_id','account_type', 'from_type', 'create_time'],$where)->withJoin(['member' => function($query){
+ $query->field("member.nickname, member.headimg, member.mobile, member.member_id, member.member_no");
+ }
+ ])->where($member_where)->field($field)->order('create_time desc')->append(['from_type_name', 'account_type_name']);
$list = $this->pageQuery($search_model);
return $list;
}
@@ -80,7 +89,7 @@ class MemberAccountService extends BaseAdminService
public function adjustMoney(array $data)
{
- $res = (new CoreMemberAccountService())->addLog($this->site_id, $data['member_id'], MemberAccountEnum::MONEY, $data['account_data'], 'adjust', $data['memo'], 0);
+ $res = (new CoreMemberAccountService())->addLog($this->site_id, $data['member_id'], MemberAccountTypeDict::MONEY, $data['account_data'], 'adjust', $data['memo'], 0);
return $res;
}
/**
@@ -90,8 +99,8 @@ class MemberAccountService extends BaseAdminService
*/
public function getFromType($account_type)
{
- if(!array_key_exists($account_type, MemberAccountEnum::getType())) throw new AdminException('MEMBER_TYPE_NOT_EXIST');
- $res = MemberAccountEnum::getFromType($account_type);
+ if(!array_key_exists($account_type, MemberAccountTypeDict::getType())) throw new AdminException('MEMBER_TYPE_NOT_EXIST');
+ $res = MemberAccountChangeTypeDict::getType($account_type);
return $res;
}
@@ -115,7 +124,38 @@ class MemberAccountService extends BaseAdminService
return (new Member())->where([['member_id', '=', $member_id], ['site_id', '=', $this->site_id]])->field($field)->findOrEmpty()->toArray();
}
+ /**
+ * 已提现佣金
+ * @return float
+ */
+ public function getWithdrawnCommission(int $member_id = 0)
+ {
+ $condition = [
+ ['site_id', '=', $this->site_id],
+ ['account_type', '=', MemberAccountTypeDict::COMMISSION],
+ ['from_type', '=', 'cash_out']
+ ];
+ if(!empty($member_id)) $condition[] = ['member_id', '=', $member_id];
+ $sum = $this->model->where($condition)->sum('account_data');
+ return $sum;
+ }
+ /**
+ * 账户支出总额
+ * @return float
+ */
+ public function getExpensesSumAccount(string $account_type, int $member_id = 0)
+ {
+ $condition = [
+ ['site_id', '=', $this->site_id],
+ ['account_type', '=', $account_type],
+ ['account_data', '<', '0']
+ ];
+ if(!empty($member_id)) $condition[] = ['member_id', '=', $member_id];
+
+ $sum = $this->model->where($condition)->sum('account_data');
+ return $sum;
+ }
}
\ No newline at end of file
diff --git a/niucloud/app/service/admin/member/MemberCashOutService.php b/niucloud/app/service/admin/member/MemberCashOutService.php
index 05b8e276c..b752df956 100644
--- a/niucloud/app/service/admin/member/MemberCashOutService.php
+++ b/niucloud/app/service/admin/member/MemberCashOutService.php
@@ -11,6 +11,7 @@
namespace app\service\admin\member;
+use app\dict\member\MemberCashOutDict;
use app\model\member\MemberCashOut;
use app\service\core\member\CoreMemberCashOutService;
use core\base\BaseAdminService;
@@ -34,8 +35,15 @@ class MemberCashOutService extends BaseAdminService
public function getPage(array $where = [])
{
- $field = 'id,site_id,cash_out_no,member_id,account_type,transfer_type,transfer_realname,transfer_mobile,transfer_bank,transfer_account,transfer_fail_reason,transfer_status,transfer_time,apply_money,rate,service_money,money,audit_time,status,remark,create_time,refuse_reason,transfer_no';
- $search_model = $this->model->where([['site_id', '=', $this->site_id]])->withSearch(['member_id','status', 'create_time'],$where)->with(['memberInfo', 'transfer'])->field($field)->order('create_time desc')->append(['status_name', 'transfer_status_name', 'transfer_type_name', 'account_type_name']);
+ $field = 'id,member_cash_out.site_id,cash_out_no,member_cash_out.member_id,account_type,transfer_type,transfer_realname,transfer_mobile,transfer_bank,transfer_account,transfer_fail_reason,transfer_status,transfer_time,apply_money,rate,service_money,member_cash_out.money,audit_time,member_cash_out.status,remark,member_cash_out.create_time,refuse_reason,transfer_no';
+ $member_where = [];
+ if(!empty($where['keywords']))
+ {
+ $member_where = [['member.member_no|member.nickname|member.mobile', '=', $where['keywords']]];
+ }
+ $search_model = $this->model->where([['member_cash_out.site_id', '=', $this->site_id]])->withSearch(['member_id','status', 'create_time', 'audit_time', 'transfer_time', 'transfer_type', 'cash_out_no'],$where)->with(['transfer'])->withJoin(["member" => function($query){
+ $query->field("member.nickname, member.headimg, member.mobile, member.member_id, member.member_no");
+ }])->where($member_where)->field($field)->order('create_time desc')->append(['status_name', 'transfer_status_name', 'transfer_type_name', 'account_type_name']);
$list = $this->pageQuery($search_model);
return $list;
}
@@ -73,4 +81,20 @@ class MemberCashOutService extends BaseAdminService
return $core_member_cash_out_service->transfer($this->site_id, $id, $data);
}
+ /**
+ * 统计数据
+ * @return array
+ */
+ public function stat()
+ {
+ $stat = [];
+ //已提现
+ $stat['transfered'] = $this->model->where([['status', '=', MemberCashOutDict::TRANSFERED], ['site_id', '=', $this->site_id]])->sum("apply_money");
+ //所有金额(包括提现中,已提现)
+ $all_money = $this->model->where([['status', '>=', 0], ['site_id', '=', $this->site_id]])->sum("apply_money");
+
+ $stat['cash_outing'] = $all_money - $stat['transfered'];
+ return $stat;
+ }
+
}
\ No newline at end of file
diff --git a/niucloud/app/service/admin/member/MemberConfigService.php b/niucloud/app/service/admin/member/MemberConfigService.php
index 4ff58ea49..caa2d0a2f 100644
--- a/niucloud/app/service/admin/member/MemberConfigService.php
+++ b/niucloud/app/service/admin/member/MemberConfigService.php
@@ -51,4 +51,19 @@ class MemberConfigService extends BaseAdminService
public function setCashOutConfig(array $data){
return (new CoreMemberConfigService())->setCashOutConfig($this->site_id, $data);
}
+
+ /**
+ * 获取会员设置
+ */
+ public function getMemberConfig(){
+ return (new CoreMemberConfigService())->getMemberConfig($this->site_id);
+ }
+
+ /**
+ * 会员设置
+ * @param $data
+ */
+ public function setMemberConfig(array $data){
+ return (new CoreMemberConfigService())->setMemberConfig($this->site_id, $data);
+ }
}
\ No newline at end of file
diff --git a/niucloud/app/service/admin/member/MemberLabelService.php b/niucloud/app/service/admin/member/MemberLabelService.php
index dd2715ae6..a455fe3ca 100644
--- a/niucloud/app/service/admin/member/MemberLabelService.php
+++ b/niucloud/app/service/admin/member/MemberLabelService.php
@@ -35,14 +35,9 @@ class MemberLabelService extends BaseAdminService
*/
public function getPage(array $where = [], string $order = 'create_time desc')
{
- $condition[] = ['site_id', '=', $this->site_id];
- if($where['label_name'])
- {
- $condition[] = ['label_name', 'like', '%'.$where['label_name'].'%'];
- }
$field = 'label_id, site_id, label_name, memo, sort, create_time, update_time';
-
- $list = $this->getPageList($this->model, $condition, $field, $order, []);
+ $search_model = $this->model->where([ [ 'site_id', '=', $this->site_id ] ])->withSearch([ 'label_name'], $where)->field($field)->append(["member_num"])->order($order);
+ $list = $this->pageQuery($search_model);
return $list;
}
diff --git a/niucloud/app/service/admin/member/MemberService.php b/niucloud/app/service/admin/member/MemberService.php
index 6ce30f987..0f6cbbbbc 100644
--- a/niucloud/app/service/admin/member/MemberService.php
+++ b/niucloud/app/service/admin/member/MemberService.php
@@ -11,8 +11,8 @@
namespace app\service\admin\member;
-use app\enum\member\MemberRegisterChannelEnum;
-use app\enum\member\MemberRegisterTypeEnum;
+use app\dict\member\MemberRegisterChannelDict;
+use app\dict\member\MemberRegisterTypeDict;
use app\model\member\Member;
use app\service\core\member\CoreMemberService;
use core\base\BaseAdminService;
@@ -40,7 +40,7 @@ class MemberService extends BaseAdminService
public function getPage(array $where = [])
{
- $field = 'member_id, site_id, username, mobile, password, register_channel, register_type, nickname, headimg, member_level, member_label, wx_openid, weapp_openid, wx_unionid, ali_openid, douyin_openid, login_ip, login_type, login_channel, login_count, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, point_get, balance, balance_get, growth, growth_get, is_member, member_time, is_del, province_id, city_id, district_id, address, location, delete_time, money, money_get, commission, commission_get, commission_cash_outing';
+ $field = 'member_id, member_no, site_id, username, mobile, password, register_channel, register_type, nickname, headimg, member_level, member_label, wx_openid, weapp_openid, wx_unionid, ali_openid, douyin_openid, login_ip, login_type, login_channel, login_count, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, point_get, balance, balance_get, growth, growth_get, is_member, member_time, is_del, province_id, city_id, district_id, address, location, delete_time, money, money_get, commission, commission_get, commission_cash_outing';
$search_model = $this->model->where([['site_id', '=', $this->site_id]])->withSearch(['keyword','register_type', 'create_time', 'is_del', 'member_label', 'register_channel'],$where)->field($field)->order('member_id desc')->append(['register_channel_name', 'register_type_name', 'sex_name', 'login_channel_name', 'login_type_name', 'status_name']);
$data = $this->pageQuery($search_model, function ($item, $key) {
$item = $this->makeUp($item);
@@ -68,7 +68,7 @@ class MemberService extends BaseAdminService
*/
public function getInfo(int $member_id)
{
- $field = 'member_id, site_id, username, mobile, password, register_channel, register_type, nickname, headimg, member_level, member_label, wx_openid, weapp_openid, wx_unionid, ali_openid, douyin_openid, login_ip, login_type, login_channel, login_count, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, point_get, balance, balance_get, growth, growth_get, is_member, member_time, is_del, province_id, city_id, district_id, address, location, delete_time, money, money_get, commission, commission_get, commission_cash_outing';
+ $field = 'member_id,member_no, site_id, username, mobile, password, register_channel, register_type, nickname, headimg, member_level, member_label, wx_openid, weapp_openid, wx_unionid, ali_openid, douyin_openid, login_ip, login_type, login_channel, login_count, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, point_get, balance, balance_get, growth, growth_get, is_member, member_time, is_del, province_id, city_id, district_id, address, location, delete_time, money, money_get, commission, commission_get, commission_cash_outing';
return $this->makeUp($this->model->where([['member_id', '=', $member_id], ['site_id', '=', $this->site_id]])->field($field)->append(['register_channel_name', 'register_type_name', 'sex_name', 'login_channel_name', 'login_type_name', 'status_name'])->findOrEmpty()->toArray());
}
@@ -79,11 +79,22 @@ class MemberService extends BaseAdminService
*/
public function add(array $data)
{
+
//检测手机是否重复
if(!empty($data['mobile'])){
if(!$this->model->where([['site_id', '=', $this->site_id], ['mobile', '=', $data['mobile']]])->findOrEmpty()->isEmpty())
- throw new AdminException('MOBILE_IS_EXIST');
+ throw new AdminException('MOBILE_IS_EXIST');
}
+ if($data['init_member_no'] != $data['member_no']){
+ if(!$this->model->where([['site_id', '=', $this->site_id], ['member_no', '=', $data['member_no']]])->findOrEmpty()->isEmpty())
+ throw new AdminException('MEMBER_NO_IS_EXIST');
+ }else{
+ if(!$this->model->where([['site_id', '=', $this->site_id], ['member_no', '=', $data['member_no']]])->findOrEmpty()->isEmpty()){
+ $data['member_no'] = $this->getMemberNo($this->site_id);
+ }
+ }
+
+ $data['username'] = $data['member_no'];
if(!empty($data['username'])){
if(!$this->model->where([['site_id', '=', $this->site_id], ['username', '=', $data['username']]])->findOrEmpty()->isEmpty())
throw new AdminException('MEMBER_IS_EXIST');
@@ -91,8 +102,9 @@ class MemberService extends BaseAdminService
$data['site_id'] = $this->site_id;
$password_hash = create_password($data['password']);
$data['password'] = $password_hash;
- $data['register_type'] = MemberRegisterTypeEnum::MANUAL;
- $data['register_channel'] = MemberRegisterChannelEnum::MANUAL;//todo 公共化渠道
+ $data['register_type'] = MemberRegisterTypeDict::MANUAL;
+ $data['register_channel'] = MemberRegisterChannelDict::MANUAL;//todo 公共化渠道
+
$member = $this->model->create($data);
$data['member_id'] = $member->member_id;
event("memberRegister", $data);
@@ -171,4 +183,37 @@ class MemberService extends BaseAdminService
$this->model->where($where)->update($data);
return true;
}
+
+ /**
+ * 会员数据
+ * @param $field
+ * @return float
+ */
+ public function getSum($field)
+ {
+ $sum = $this->model->where([['site_id', '=', $this->site_id] ])->sum($field);
+ return $sum;
+ }
+
+ /**
+ * 创建会员编码
+ * @return string|void
+ */
+ public function getMemberNo()
+ {
+ return (new CoreMemberService())->createMemberNo($this->site_id);
+ }
+
+ /**
+ * 删除会员
+ * @param int $member_id
+ */
+ public function deleteMember(int $member_id)
+ {
+ $this->model->destroy(function($query) use($member_id){
+ $query->where([['member_id', '=', $member_id], ['site_id', '=', $this->site_id]]);
+ });
+ return true;
+ }
+
}
\ No newline at end of file
diff --git a/niucloud/app/service/admin/notice/NoticeService.php b/niucloud/app/service/admin/notice/NoticeService.php
index e76a54715..a39cb361c 100644
--- a/niucloud/app/service/admin/notice/NoticeService.php
+++ b/niucloud/app/service/admin/notice/NoticeService.php
@@ -11,8 +11,8 @@
namespace app\service\admin\notice;
-use app\enum\notice\NoticeEnum;
-use app\enum\notice\NoticeTypeEnum;
+use app\dict\notice\NoticeDict;
+use app\dict\notice\NoticeTypeDict;
use app\model\sys\SysNotice;
use app\service\core\notice\CoreNoticeService;
use core\base\BaseAdminService;
@@ -70,8 +70,8 @@ class NoticeService extends BaseAdminService
*/
public function editMessageStatus(string $key, string $type, int $status)
{
- if(!array_key_exists($type, NoticeTypeEnum::getType())) throw new AdminException('NOTICE_TYPE_NOT_EXIST');
- if(!array_key_exists($key, NoticeEnum::getNotice())) return fail('NOTICE_TYPE_NOT_EXIST');
+ if(!array_key_exists($type, NoticeTypeDict::getType())) throw new AdminException('NOTICE_TYPE_NOT_EXIST');
+ if(!array_key_exists($key, NoticeDict::getNotice())) return fail('NOTICE_TYPE_NOT_EXIST');
return (new CoreNoticeService())->edit($this->site_id, $key, ['is_'.$type => $status]);
}
@@ -84,19 +84,19 @@ class NoticeService extends BaseAdminService
*/
public function edit(string $key, string $type, array $data)
{
- if(!array_key_exists($type, NoticeTypeEnum::getType())) throw new AdminException('NOTICE_TYPE_NOT_EXIST');
- if(!array_key_exists($key, NoticeEnum::getNotice())) return fail('NOTICE_TYPE_NOT_EXIST');
+ if(!array_key_exists($type, NoticeTypeDict::getType())) throw new AdminException('NOTICE_TYPE_NOT_EXIST');
+ if(!array_key_exists($key, NoticeDict::getNotice())) return fail('NOTICE_TYPE_NOT_EXIST');
$save_data = ['is_'.$type => $data['status']];
switch ($type)
{
- case NoticeTypeEnum::SMS:
+ case NoticeTypeDict::SMS:
$save_data['sms_id'] = $data['sms_id'] ?? '';
break;
- case NoticeTypeEnum::WECHAT:
+ case NoticeTypeDict::WECHAT:
$save_data['wechat_first'] = $data['wechat_first'] ?? '';
$save_data['wechat_remark'] = $data['wechat_remark'] ?? '';
break;
- case NoticeTypeEnum::WEAPP:
+ case NoticeTypeDict::WEAPP:
break;
}
return (new CoreNoticeService())->edit($this->site_id, $key, $save_data);
diff --git a/niucloud/app/service/admin/notice/SmsService.php b/niucloud/app/service/admin/notice/SmsService.php
index 0ef864e85..dd806cae8 100644
--- a/niucloud/app/service/admin/notice/SmsService.php
+++ b/niucloud/app/service/admin/notice/SmsService.php
@@ -11,7 +11,7 @@
namespace app\service\admin\notice;
-use app\enum\sys\SmsEnum;
+use app\dict\sys\SmsDict;
use app\service\core\sys\CoreConfigService;
use app\service\core\sys\CoreMessage;
use core\base\BaseAdminService;
@@ -33,7 +33,7 @@ class SmsService extends BaseAdminService
*/
public function getList()
{
- $sms_type_list = SmsEnum::getType();
+ $sms_type_list = SmsDict::getType();
$info = (new CoreConfigService())->getConfig($this->site_id, 'SMS');
if(empty($info))
{
@@ -67,7 +67,7 @@ class SmsService extends BaseAdminService
*/
public function getConfig(string $sms_type)
{
- $sms_type_list = SmsEnum::getType();
+ $sms_type_list = SmsDict::getType();
if(!array_key_exists($sms_type, $sms_type_list)) throw new AdminException('SMS_TYPE_NOT_EXIST');
$info = (new CoreConfigService())->getConfig($this->site_id, 'SMS');
if(empty($info))
@@ -100,7 +100,7 @@ class SmsService extends BaseAdminService
*/
public function setConfig(string $sms_type, array $data)
{
- $sms_type_list = SmsEnum::getType();
+ $sms_type_list = SmsDict::getType();
if(!array_key_exists($sms_type, $sms_type_list)) throw new AdminException('SMS_TYPE_NOT_EXIST');
$info = (new CoreConfigService())->getConfig($this->site_id, 'SMS');
if(empty($info))
diff --git a/niucloud/app/service/admin/order/RechargeOrderService.php b/niucloud/app/service/admin/order/RechargeOrderService.php
index cbfaa7f61..8ccc92f4c 100644
--- a/niucloud/app/service/admin/order/RechargeOrderService.php
+++ b/niucloud/app/service/admin/order/RechargeOrderService.php
@@ -11,7 +11,7 @@
namespace app\service\admin\order;
-use app\enum\order\RechargeOrderEnum;
+use app\dict\order\RechargeOrderDict;
use app\model\order\Order;
use core\base\BaseAdminService;
@@ -38,11 +38,11 @@ class RechargeOrderService extends BaseAdminService
$field = 'order_id, site_id, order_no, order_from, order_type, out_trade_no, order_status, refund_status, member_id, ip, member_message, order_item_money, order_discount_money, order_money, create_time, pay_time, close_time, is_delete, is_enable_refund, remark, invoice_id, close_reason';
$order = 'create_time desc';
$where['order_type'] = 'recharge';
- $search_model = $this->model->where([['site_id', '=', $this->site_id]])->withSearch(['order_from', 'order_status', 'order_type', 'member_id', 'out_trade_no', 'create_time'], $where)->field($field)->with(['item' => function($query) {
+ $search_model = $this->model->where([['site_id', '=', $this->site_id]])->withSearch(['order_no', 'order_money', 'order_from', 'order_status', 'order_type', 'member_id', 'out_trade_no', 'create_time', 'pay_time'], $where)->field($field)->with(['item' => function($query) {
$query->field('order_item_id, order_id, member_id, item_id, item_type, item_name, item_image, price, num, item_money, is_refund, refund_no, refund_status, create_time');
}, 'member' => function($query) {
$query->field('member_id, nickname, mobile, headimg');
- }])->order($order)->append(['order_status_info', 'order_from_name']);
+ }])->order($order)->append(['order_status_info', 'order_from_name', 'refund_status_name']);
return $this->pageQuery($search_model);
}
@@ -68,7 +68,37 @@ class RechargeOrderService extends BaseAdminService
*/
public function getStatus()
{
- return RechargeOrderEnum::getStatus();
+ return RechargeOrderDict::getStatus();
+ }
+
+
+ /**
+ * 充值订单
+ * @return array|array[]|string
+ */
+ public function stat(array $data = [])
+ {
+ $res = [
+ 'recharge_money' => 0,
+ 'recharge_refund_money' => 0
+ ];
+ $where = [
+ ['site_id', '=', $this->site_id],
+ ['order_type', '=', 'recharge'],
+ ['order_status', '=', RechargeOrderDict::FINISH],
+ ];
+ if(!empty($data['member_id'])) $where[] = ['member_id', '=', $data['member_id']];
+
+ $res['recharge_money'] = $this->model->where($where)->sum('order_money');
+
+ $where = [
+ ['site_id', '=', $this->site_id],
+ ['order_type', '=', 'recharge'],
+ ['refund_status', '=', RechargeOrderDict::REFUND_COMPLETED],
+ ];
+ if(!empty($data['member_id'])) $where[] = ['member_id', '=', $data['member_id']];
+ $res['recharge_refund_money'] = $this->model->where($where)->sum('order_money');
+ return $res;
}
diff --git a/niucloud/app/service/admin/order/RefundService.php b/niucloud/app/service/admin/order/RefundService.php
index 84e3dc6d0..4bff2f85c 100644
--- a/niucloud/app/service/admin/order/RefundService.php
+++ b/niucloud/app/service/admin/order/RefundService.php
@@ -11,6 +11,8 @@
namespace app\service\admin\order;
+use app\dict\order\OrderRefundDict;
+use app\dict\pay\OnlineRefundDict;
use app\model\order\OrderItemRefund;
use core\base\BaseAdminService;
@@ -33,15 +35,20 @@ class RefundService extends BaseAdminService
* @return mixed
*/
public function getPage(array $where) {
- $field = 'refund_id,num,money,refund_no,status,create_time,audit_time,transfer_time,item_type,order_item_id, order_id,member_id';
- $order = 'create_time desc';
- $search_model = $this->model->where([['site_id', '=', $this->site_id]])->withSearch(['status', 'member_id', 'refund_no', 'create_time'], $where)->field($field)->with(['item' => function($query) {
- $query->field('order_item_id, item_name, item_image');
- }, 'member' => function($query) {
- $query->field('member_id, nickname, mobile, headimg');
- }, 'payrefund' => function($query) {
- $query->field('refund_no');
- }])->order($order)->append(['status_name', 'payrefund.type_name']);
+
+ $field = 'order_item_refund.refund_id,order_item_refund.num,order_item_refund.money,order_item_refund.refund_no,order_item_refund.status,order_item_refund.create_time,order_item_refund.audit_time,order_item_refund.transfer_time,order_item_refund.item_type,order_item_refund.order_item_id, order_item_refund.order_id,order_item_refund.member_id,order_item_refund.order_no';
+ $member_where = [];
+ if(!empty($where['keywords']))
+ {
+ $member_where[] = ["member.member_id|member.nickname|member.mobile", '=', $where['keywords']];
+ }
+ $search_model = $this->model->where([['order_item_refund.site_id', '=', $this->site_id]])->with(['item' => function($query) {
+ $query->with('orderNo')->field('order_id, order_item_id, item_name, item_image');
+ }])->withSearch(['order_no', 'status', 'member_id', 'refund_no', 'create_time'],$where)->withJoin(['member' => function($query){
+ $query->field("member.nickname, member.headimg, member.mobile, member.member_id");
+ }
+ ])->where($member_where)->field($field)->order('create_time desc')->append(['status_name', 'payrefund.type_name']);
+
return $this->pageQuery($search_model);
}
@@ -67,8 +74,42 @@ class RefundService extends BaseAdminService
* @return void
*/
public function getStatus($type){
- $class = "\\app\\enum\\order\\" . ucfirst($type). "OrderEnum";
- if (!class_exists($class)) return [];
- return $class::getRefundStatus();
+ $status = OrderRefundDict::getStatus();
+ return $status;
+ }
+
+ /**
+ * 退款统计数据(根据状态查询)
+ */
+ public function stat()
+ {
+ $status = OrderRefundDict::getStatus();
+ $all = 0;
+ $have = 0;
+ foreach ($status as $k => $v)
+ {
+ $money = $this->model->where([['status', '=', $v['key']], ['site_id', '=', $this->site_id]])->sum("money");
+ if($money == null)
+ {
+ $money = 0;
+ }
+ if($k == 1 || $k == 2){
+ $have = $have + $money;
+ }
+ $status[$k]['money'] = number_format($money, 2);
+ $all = $all + $money;
+ }
+ $status['all'] = [
+ 'name' => get_lang('dict_refund.all'),
+ 'key' => 'all',
+ 'money' => number_format($all, 2)
+ ];
+ $status['have'] = [
+ 'name' => get_lang('dict_refund.have'),
+ 'key' => 'all',
+ 'money' => number_format($have, 2)
+ ];
+ return $status;
+
}
}
diff --git a/niucloud/app/service/admin/pay/PayChannelService.php b/niucloud/app/service/admin/pay/PayChannelService.php
index f09669f74..e2a5253a3 100644
--- a/niucloud/app/service/admin/pay/PayChannelService.php
+++ b/niucloud/app/service/admin/pay/PayChannelService.php
@@ -11,9 +11,9 @@
namespace app\service\admin\pay;
-use app\enum\common\ChannelEnum;
-use app\enum\pay\PayChannelEnum;
-use app\enum\pay\PayEnum;
+use app\dict\common\ChannelDict;
+use app\dict\pay\PayChannelDict;
+use app\dict\pay\PayDict;
use app\model\pay\PayChannel;
use app\service\core\pay\CorePayChannelService;
use app\service\core\pay\CorePayConfigTemplateService;
@@ -47,9 +47,9 @@ class PayChannelService extends BaseAdminService
'type' => $type,
'channel' => $channel
);
- if (!in_array($type, array_keys(PayEnum::getPayType()))) throw new PayException('PATMENT_METHOD_INVALID');
+ if (!in_array($type, array_keys(PayDict::getPayType()))) throw new PayException('PATMENT_METHOD_INVALID');
if ($channel != 'transfer') {
- if (!in_array($channel, array_keys(ChannelEnum::getType()))) throw new PayException('CHANNEL_MARK_INVALID');
+ if (!in_array($channel, array_keys(ChannelDict::getType()))) throw new PayException('CHANNEL_MARK_INVALID');
}
$pay_channel = $this->core_pay_channel_service->find($this->site_id, $where);
if ($pay_channel->isEmpty()) {
@@ -71,7 +71,7 @@ class PayChannelService extends BaseAdminService
*/
public function getChannelList()
{
- $channel_list = PayChannelEnum::getPayChannel();
+ $channel_list = PayChannelDict::getPayChannel();
$where = array(
'site_id' => $this->site_id,
);
@@ -125,7 +125,7 @@ class PayChannelService extends BaseAdminService
{
$config = [];
switch ($type) {
- case PayEnum::WECHATPAY:
+ case PayDict::WECHATPAY:
$config = [
'mch_id' => $data['mch_id'] ?? '',//商户号
'mch_secret_key' => $data['mch_secret_key'] ?? '',//商户秘钥 现在默认认为是v3版
@@ -133,7 +133,7 @@ class PayChannelService extends BaseAdminService
'mch_public_cert_path' => $data['mch_public_cert_path'] ?? '',//商户公钥证书路径
];
break;
- case PayEnum::ALIPAY:
+ case PayDict::ALIPAY:
$config = [
'app_id' => $data['app_id'] ?? '',// 必填-支付宝分配的 app_id
'app_secret_cert' => $data['app_secret_cert'] ?? '',// 必填-应用私钥 字符串或路径
@@ -156,11 +156,11 @@ class PayChannelService extends BaseAdminService
{
$wechatpay_config = $data['wechatpay_config'];
$alipay_config = $data['alipay_config'];
- $this->set('transfer', PayEnum::WECHATPAY, [
+ $this->set('transfer', PayDict::WECHATPAY, [
'config' => $wechatpay_config,
'status' => 1,
]);
- $this->set('transfer', PayEnum::ALIPAY, [
+ $this->set('transfer', PayDict::ALIPAY, [
'config' => $alipay_config,
'status' => 1,
]);
diff --git a/niucloud/app/service/admin/site/SiteGroupService.php b/niucloud/app/service/admin/site/SiteGroupService.php
index f15df1e50..45912a021 100644
--- a/niucloud/app/service/admin/site/SiteGroupService.php
+++ b/niucloud/app/service/admin/site/SiteGroupService.php
@@ -13,6 +13,7 @@ namespace app\service\admin\site;
use app\model\site\Site;
use app\model\site\SiteGroup;
+use app\model\sys\SysMenu;
use app\service\admin\sys\MenuService;
use core\base\BaseAdminService;
use core\exception\AdminException;
@@ -120,8 +121,29 @@ class SiteGroupService extends BaseAdminService
*/
public function getMenuIdsByGroupId($group_id){
$cache_name = self::$cache_name . $group_id;
- return Cache::tag([MenuService::$cache_tag_name,self::$cache_tag_name])->remember($cache_name, function () use ($group_id) {
- return $this->model->findOrEmpty($group_id)?->group_roles ?? [];
- });
+ return cache_remember(
+ $cache_name,
+ function () use ($group_id) {
+ return $this->model->findOrEmpty($group_id)?->group_roles ?? [];
+ },
+ [MenuService::$cache_tag_name,self::$cache_tag_name]
+ );
+// return Cache::tag([MenuService::$cache_tag_name,self::$cache_tag_name])->remember($cache_name, function () use ($group_id) {
+// return $this->model->findOrEmpty($group_id)?->group_roles ?? [];
+// });
+ }
+
+ /**
+ * 创建所有权限的菜单
+ */
+ public function addAllMenuGroup()
+ {
+ $menus = (new SysMenu())->where([['app_type', '=', 'site']])->column("menu_key");
+ $data = [
+ 'group_name' => "默认套餐",
+ 'group_desc' => '',
+ 'group_roles' => json_encode($menus),
+ ];
+ return $this->add($data);
}
}
\ No newline at end of file
diff --git a/niucloud/app/service/admin/site/SiteService.php b/niucloud/app/service/admin/site/SiteService.php
index d07597810..facdb2d7e 100644
--- a/niucloud/app/service/admin/site/SiteService.php
+++ b/niucloud/app/service/admin/site/SiteService.php
@@ -11,7 +11,7 @@
namespace app\service\admin\site;
-use app\enum\sys\AppTypeEnum;
+use app\dict\sys\AppTypeDict;
use app\model\site\Site;
use app\service\admin\install\InstallArticleService;
use app\service\admin\install\InstallDiyService;
@@ -46,9 +46,10 @@ class SiteService extends BaseAdminService
*/
public function getPage(array $where = [])
{
- $field = 'site_id, site_name, app_type, keywords, logo, `desc`, status, latitude, longitude, province_id, city_id,
+
+ $field = 'site_id, site_name, front_end_name, front_end_logo, app_type, keywords, logo, icon, `desc`, status, latitude, longitude, province_id, city_id,
district_id, address, full_address, phone, business_hours, create_time, expire_time, group_id';
- $search_model = $this->model->where([ [ 'app_type', '<>', 'admin' ] ])->withSearch([ 'keywords', 'status', 'group_id' ], $where)->with('groupName')->field($field)->append([ 'status_name' ])->order('create_time desc');
+ $search_model = $this->model->where([ [ 'app_type', '<>', 'admin' ] ])->withSearch([ 'create_time', 'expire_time', 'keywords', 'status', 'group_id' ], $where)->with('groupName')->field($field)->append([ 'status_name' ])->order('create_time desc');
$list = $this->pageQuery($search_model);
return $list;
}
@@ -60,7 +61,7 @@ class SiteService extends BaseAdminService
*/
public function getInfo(int $site_id)
{
- $field = 'site_id, site_name, app_type, keywords, logo, `desc`, status, latitude, longitude, province_id, city_id,
+ $field = 'site_id, site_name, front_end_name, front_end_logo, app_type, keywords, logo, icon, `desc`, status, latitude, longitude, province_id, city_id,
district_id, address, full_address, phone, business_hours, create_time, expire_time, group_id';
return $this->model->where([ [ 'site_id', '=', $site_id ] ])->with('groupName')->field($field)->append([ 'status_name' ])->findOrEmpty()->toArray();
@@ -101,11 +102,9 @@ class SiteService extends BaseAdminService
];
( new UserService() )->addSiteUser($data_user, $site_id);
- // 初始化自定义页面数据
- ( new InstallDiyService() )->install([ 'site_id' => $site_id ]);
+ //添加站点成功事件
+ event("addSiteAfter", [ 'site_id' => $site_id ]);
- // 初始化文章数据
- ( new InstallArticleService() )->install([ 'site_id' => $site_id ]);
Db::commit();
return $site_id;
} catch (Exception $e) {
@@ -123,7 +122,7 @@ class SiteService extends BaseAdminService
public function edit(int $site_id, array $data)
{
$this->model->update($data, [ [ 'site_id', '=', $site_id ] ]);
- Cache::tag(self::$cache_tag_name)->clear();
+ Cache::tag(self::$cache_tag_name . $site_id)->clear();
return true;
}
@@ -146,16 +145,30 @@ class SiteService extends BaseAdminService
public function getSiteCache(int $site_id)
{
$cache_name = 'site_info_cache';
- return Cache::tag(self::$cache_tag_name . $site_id)->remember($cache_name . $site_id, function() use ($site_id) {
- $where = [
- [ 'site_id', '=', $site_id ],
- ];
- $site = $this->model->where($where)->field('app_type,site_name,logo,group_id, status, expire_time')->findOrEmpty();
- if (!$site->isEmpty()) {
- $site->append([ 'status_name' ]);
- }
- return $site->toArray();
- });
+ return cache_remember(
+ $cache_name . $site_id,
+ function() use ($site_id) {
+ $where = [
+ [ 'site_id', '=', $site_id ],
+ ];
+ $site = $this->model->where($where)->field('app_type,site_name,front_end_name,front_end_logo,logo,icon,group_id, status, expire_time')->findOrEmpty();
+ if (!$site->isEmpty()) {
+ $site->append([ 'status_name' ]);
+ }
+ return $site->toArray();
+ },
+ self::$cache_tag_name . $site_id
+ );
+// return Cache::tag(self::$cache_tag_name . $site_id)->remember($cache_name . $site_id, function() use ($site_id) {
+// $where = [
+// [ 'site_id', '=', $site_id ],
+// ];
+// $site = $this->model->where($where)->field('app_type,site_name,logo,group_id, status, expire_time')->findOrEmpty();
+// if (!$site->isEmpty()) {
+// $site->append([ 'status_name' ]);
+// }
+// return $site->toArray();
+// });
}
@@ -170,7 +183,7 @@ class SiteService extends BaseAdminService
if (empty($site_info))
return [];
$app_type = $site_info[ 'app_type' ];
- if ($app_type == AppTypeEnum::ADMIN) {
+ if ($app_type == AppTypeDict::ADMIN) {
return ( new MenuService() )->getAllMenuList($app_type, $status, $is_tree, 1);
} else {
$group_id = $site_info[ 'group_id' ] ?? 0;
@@ -185,6 +198,31 @@ class SiteService extends BaseAdminService
}
+ /**
+ * 通过站点id获取站点菜单极限
+ * @param int $site_id
+ * @param $is_tree
+ * @param $status
+ * @return array|mixed|string|null
+ */
+ public function getMenuIdsBySiteId(int $site_id, $is_tree, $status)
+ {
+ $site_info = $this->getSiteCache($site_id);
+ if (empty($site_info))
+ return [];
+ $app_type = $site_info[ 'app_type' ];
+ if ($app_type == AppTypeDict::ADMIN) {
+ return ( new MenuService() )->getAllMenuIdsByAppType($app_type, $status);
+ } else {
+ $group_id = $site_info[ 'group_id' ] ?? 0;
+ if ($group_id > 0) {
+ return ( new SiteGroupService() )->getMenuIdsByGroupId($group_id);
+ } else {
+ return [];
+ }
+ }
+ }
+
/**
* 通过站点id获取菜单列表
* @param int $site_id
@@ -196,7 +234,7 @@ class SiteService extends BaseAdminService
if (empty($site_info))
return [];
$app_type = $site_info[ 'app_type' ];
- if ($app_type == AppTypeEnum::ADMIN) {
+ if ($app_type == AppTypeDict::ADMIN) {
return ( new MenuService() )->getAllApiList($app_type, $status);
} else {
$group_id = $site_info[ 'group_id' ] ?? 0;
diff --git a/niucloud/app/service/admin/site/SiteUserService.php b/niucloud/app/service/admin/site/SiteUserService.php
index 7a2a5eea3..a8aba6250 100644
--- a/niucloud/app/service/admin/site/SiteUserService.php
+++ b/niucloud/app/service/admin/site/SiteUserService.php
@@ -11,7 +11,7 @@
namespace app\service\admin\site;
-use app\enum\sys\UserEnum;
+use app\dict\sys\UserDict;
use app\model\sys\SysUser;
use app\model\sys\SysUserRole;
use app\service\admin\user\UserRoleService;
@@ -148,7 +148,7 @@ class SiteUserService extends BaseAdminService
* @return bool|true
*/
public function lock(int $uid){
- return (new UserService())->edit($uid, ['status' => UserEnum::OFF]);
+ return (new UserService())->edit($uid, ['status' => UserDict::OFF]);
}
/**
@@ -157,6 +157,6 @@ class SiteUserService extends BaseAdminService
* @return bool|true
*/
public function unlock(int $uid){
- return (new UserService())->edit($uid, ['status' => UserEnum::ON]);
+ return (new UserService())->edit($uid, ['status' => UserDict::ON]);
}
}
\ No newline at end of file
diff --git a/niucloud/app/service/admin/stat/SiteStatService.php b/niucloud/app/service/admin/stat/SiteStatService.php
index bfe9dc111..259df6ac8 100644
--- a/niucloud/app/service/admin/stat/SiteStatService.php
+++ b/niucloud/app/service/admin/stat/SiteStatService.php
@@ -11,6 +11,7 @@
namespace app\service\admin\stat;
+use app\dict\order\RechargeOrderDict;
use app\model\order\Order;
use app\service\admin\member\MemberService;
use app\service\admin\site\SiteService;
@@ -47,6 +48,7 @@ class SiteStatService extends BaseAdminService
'total_member_count' => 0,
'total_order_money' => 13851.12,
'total_visit_count' => 6580,
+ 'total_order_count' => 29
],
'system' => [],
'version' => [],
@@ -74,8 +76,15 @@ class SiteStatService extends BaseAdminService
];
$data['today_data']['total_member_count'] = (new MemberService())->getCount([['create_time', '>=', Carbon::today()->timestamp]]);
$data['today_data']['total_order_money'] = $this->orderMoney(Carbon::today()->timestamp, time());
+ $data['today_data']['total_order_count'] = $this->orderCount(Carbon::today()->timestamp, time());
$data['today_data']['total_visit_count'] = (new MemberService())->getCount([['last_visit_time', '>=', Carbon::today()->timestamp]]);
$data['today_data']['today_member_visit_count'] = (new CoreMemberService())->getCount(['site_id' => $this->site_id,'last_visit_time' => get_start_and_end_time_by_day()]);
+
+ $data['total_data']['total_member_count'] = (new MemberService())->getCount();
+ $data['total_data']['total_order_money'] = number_format($this->orderMoney(0, time()), 2);
+ $data['total_data']['total_order_count'] = $this->orderCount(0, time());
+ $data['total_data']['total_visit_count'] = (new MemberService())->getCount();
+
$data['system'] = (new SystemService())->getInfo();
$data['version'] = $data['system']['version'] ?? [];
$time = time();
@@ -98,14 +107,30 @@ class SiteStatService extends BaseAdminService
{
$where[] = [
['site_id', '=', $this->site_id],
- ['order_status', '=', 10],
+ ['order_status', '>', 0],
['create_time', 'between', [$start_time, $end_time]]
];
$money = (new Order())->where($where)->sum('order_money');
return $money;
}
-
+ /**
+ * 订单数量
+ * @param $start_time
+ * @param $end_time
+ */
+ public function orderCount($start_time, $end_time)
+ {
+ $where[] = [
+ ['site_id', '=', $this->site_id],
+ ['order_status', '>', 0],
+ ['create_time', 'between', [$start_time, $end_time]]
+ ];
+ $money = (new Order())->where($where)->count('order_id');
+ return $money;
+ }
+
+
diff --git a/niucloud/app/service/admin/stat/StatService.php b/niucloud/app/service/admin/stat/StatService.php
index 63fbabe1d..4cd689b2c 100644
--- a/niucloud/app/service/admin/stat/StatService.php
+++ b/niucloud/app/service/admin/stat/StatService.php
@@ -86,6 +86,8 @@ class StatService extends BaseAdminService
$data['today_data']['today_member_count'] = (new CoreMemberService())->getCount(['create_time' => get_start_and_end_time_by_day()]);
$data['today_data']['total_site_count'] = (new SiteService())->getCount();
$data['today_data']['today_site_count'] = (new SiteService())->getCount(['create_time' => [$day_start_time, $day_end_time]]);
+ $data['today_data']['norma_site_count'] = (new SiteService())->getCount(['status' => [1],'app_type' => ['site']]);
+ $data['today_data']['expire_site_count'] = (new SiteService())->getCount(['status' => [2]]);
$data['system'] = (new SystemService())->getInfo();
$data['version'] = $data['system']['version'] ?? [];
@@ -107,9 +109,12 @@ class StatService extends BaseAdminService
$data['site_group_stat']['value'][] = (new SiteService())->getCount(['group_id' => $v['group_id']]);
}
}
+ $app_count = (new CoreAddonService())->getLocalAddonCount();
+ $app_installed_count = (new CoreAddonService())->getCount();
$app = [
- 'app_count' => (new CoreAddonService())->getLocalAddonCount(),
- 'app_installed_count' => (new CoreAddonService())->getCount(),
+ 'app_count' => $app_count,
+ 'app_no_installed_count' => $app_count-$app_installed_count,
+ 'app_installed_count' => $app_installed_count,
];
$data['app'] = $app;
return $data;
diff --git a/niucloud/app/service/admin/sys/AgreementService.php b/niucloud/app/service/admin/sys/AgreementService.php
index 96a2b5d7a..8442a5e52 100644
--- a/niucloud/app/service/admin/sys/AgreementService.php
+++ b/niucloud/app/service/admin/sys/AgreementService.php
@@ -12,7 +12,7 @@
namespace app\service\admin\sys;
-use app\enum\sys\AgreementEnum;
+use app\dict\sys\AgreementDict;
use app\service\core\sys\CoreAgreementService;
use core\base\BaseAdminService;
@@ -30,7 +30,7 @@ class AgreementService extends BaseAdminService
*/
public function getList()
{
- $type = AgreementEnum::getType();
+ $type = AgreementDict::getType();
$list = [];
foreach ($type as $k => $v)
{
diff --git a/niucloud/app/service/admin/sys/AppService.php b/niucloud/app/service/admin/sys/AppService.php
index 2c858148f..d721a752c 100644
--- a/niucloud/app/service/admin/sys/AppService.php
+++ b/niucloud/app/service/admin/sys/AppService.php
@@ -39,14 +39,17 @@ class AppService extends BaseAdminService
if(isset($v['category']))
{
$category_list = empty($category_list) ? $v['category'] : array_merge($category_list, $v['category']);
+
unset($v['category']);
}
$list = empty($list) ? $v : array_merge($list, $v);
}
+
foreach ($category_list as $k_category => $category)
{
+ $category_list[$k_category]['sort'] = $category['sort'] ?? 100;
$category_list[$k_category]['app_list'] = [];
foreach ($list as $k => $app)
{
@@ -60,6 +63,9 @@ class AppService extends BaseAdminService
}
}
+ $sort = array_column($category_list, 'sort');
+ array_multisort($category_list, $sort);
+
return $category_list;
}
diff --git a/niucloud/app/service/admin/sys/AreaService.php b/niucloud/app/service/admin/sys/AreaService.php
index a0a9506e7..f05aca81f 100644
--- a/niucloud/app/service/admin/sys/AreaService.php
+++ b/niucloud/app/service/admin/sys/AreaService.php
@@ -38,10 +38,18 @@ class AreaService extends BaseAdminService
{
$cache_name = self::$cache_tag_name.'_pid_'.$pid;
- return Cache::tag([self::$cache_tag_name])->remember($cache_name, function() use($pid) {
- $list = $this->model->where([['pid', '=', $pid]])->field('id, pid, name, shortname, longitude, latitude, level, sort, status')->select()->toArray();
- return $list;
- });
+ return cache_remember(
+ $cache_name,
+ function() use($pid) {
+ $list = $this->model->where([['pid', '=', $pid]])->field('id, pid, name, shortname, longitude, latitude, level, sort, status')->select()->toArray();
+ return $list;
+ },
+ [self::$cache_tag_name]
+ );
+// return Cache::tag([self::$cache_tag_name])->remember($cache_name, function() use($pid) {
+// $list = $this->model->where([['pid', '=', $pid]])->field('id, pid, name, shortname, longitude, latitude, level, sort, status')->select()->toArray();
+// return $list;
+// });
}
@@ -53,11 +61,20 @@ class AreaService extends BaseAdminService
public function getAreaTree(int $level = 3)
{
$cache_name = self::$cache_tag_name.'_tree_'.$level;
- return Cache::tag([self::$cache_tag_name])->remember($cache_name, function() use($level) {
- $list = $this->model->where([['level', '<=', $level]])->field('id, pid, name, shortname, longitude, latitude, level, sort, status')->select()->toArray();
- $tree = list_to_tree($list, 'id', 'pid');
- return $tree;
- });
+ return cache_remember(
+ $cache_name,
+ function() use($level) {
+ $list = $this->model->where([['level', '<=', $level]])->field('id, pid, name, shortname, longitude, latitude, level, sort, status')->select()->toArray();
+ $tree = list_to_tree($list, 'id', 'pid');
+ return $tree;
+ },
+ [self::$cache_tag_name]
+ );
+// return Cache::tag([self::$cache_tag_name])->remember($cache_name, function() use($level) {
+// $list = $this->model->where([['level', '<=', $level]])->field('id, pid, name, shortname, longitude, latitude, level, sort, status')->select()->toArray();
+// $tree = list_to_tree($list, 'id', 'pid');
+// return $tree;
+// });
}
diff --git a/niucloud/app/service/admin/sys/ConfigService.php b/niucloud/app/service/admin/sys/ConfigService.php
index 437010de8..f530c09ec 100644
--- a/niucloud/app/service/admin/sys/ConfigService.php
+++ b/niucloud/app/service/admin/sys/ConfigService.php
@@ -88,4 +88,39 @@ class ConfigService extends BaseAdminService
public function getSceneDomain(){
return (new CoreSysConfigService())->getSceneDomain($this->site_id);
}
+
+ /**
+ * 获取服务信息
+ * @return array|mixed
+ */
+ public function getService()
+ {
+ $info = (new CoreConfigService())->getConfig(0, 'SERVICE_INFO');
+ if(empty($info))
+ {
+ $info = [];
+ $info['value'] = [
+ 'wechat_code' => '',
+ 'enterprise_wechat' => '',
+ 'tel' => '',
+ ];
+ }
+ return $info['value'];
+ }
+
+ /**
+ * 设置服务信息
+ * @param array $value
+ * @return bool
+ */
+ public function setService (array $value)
+ {
+ $data = [
+ "wechat_code" => $value['wechat_code'],
+ "enterprise_wechat" => $value['enterprise_wechat'],
+ "tel" => $value['tel']
+ ];
+ $res = $this->core_config_service->setConfig(0,'SERVICE_INFO', $data);
+ return $res;
+ }
}
\ No newline at end of file
diff --git a/niucloud/app/service/admin/sys/MenuService.php b/niucloud/app/service/admin/sys/MenuService.php
index 1c1ea1aed..efc129304 100644
--- a/niucloud/app/service/admin/sys/MenuService.php
+++ b/niucloud/app/service/admin/sys/MenuService.php
@@ -11,7 +11,7 @@
namespace app\service\admin\sys;
-use app\enum\sys\MenuTypeEnum;
+use app\dict\sys\MenuTypeDict;
use app\model\sys\SysMenu;
use core\base\BaseAdminService;
use core\exception\AdminException;
@@ -117,18 +117,34 @@ class MenuService extends BaseAdminService
{
sort($menu_keys);
$cache_name = 'menu' . md5(implode("_", $menu_keys)) . $is_tree;
- return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () use ($menu_keys, $app_type, $is_tree) {
- $where = [
- ['menu_key', 'in', $menu_keys],
+ return cache_remember(
+ $cache_name,
+ function () use ($menu_keys, $app_type, $is_tree) {
+ $where = [
+ ['menu_key', 'in', $menu_keys],
// ['menu_type', 'in', [0,1]]
- ];
- if(!empty($app_type)){
- $where[] = ['app_type', '=', $app_type];
- }
- $menu_list = $this->model->where($where)->order('sort', 'desc')->select()->toArray();
- return $is_tree ? $this->menuToTree($menu_list, 'menu_key', 'parent_key', 'children', 'auth', '', 1) : $menu_list;
+ ];
+ if(!empty($app_type)){
+ $where[] = ['app_type', '=', $app_type];
+ }
+ $menu_list = $this->model->where($where)->order('sort', 'desc')->select()->toArray();
+ return $is_tree ? $this->menuToTree($menu_list, 'menu_key', 'parent_key', 'children', 'auth', '', 1) : $menu_list;
- });
+ },
+ self::$cache_tag_name
+ );
+// return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () use ($menu_keys, $app_type, $is_tree) {
+// $where = [
+// ['menu_key', 'in', $menu_keys],
+//// ['menu_type', 'in', [0,1]]
+// ];
+// if(!empty($app_type)){
+// $where[] = ['app_type', '=', $app_type];
+// }
+// $menu_list = $this->model->where($where)->order('sort', 'desc')->select()->toArray();
+// return $is_tree ? $this->menuToTree($menu_list, 'menu_key', 'parent_key', 'children', 'auth', '', 1) : $menu_list;
+//
+// });
}
/**
@@ -139,19 +155,36 @@ class MenuService extends BaseAdminService
{
sort($menu_keys);
$cache_name = 'api' . md5(implode("_", $menu_keys));
- return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () use ($menu_keys, $app_type) {
- $where = [
- ['menu_key', 'in', $menu_keys]
- ];
- if(!empty($app_type)){
- $where[] = ['app_type', '=', $app_type];
- }
- $menu_list = (new SysMenu())->where($where)->order('sort', 'desc')->column('api_url,methods');
- foreach ($menu_list as $v) {
- $auth_menu_list[$v['methods']][] = $v['api_url'];
- }
- return $auth_menu_list ?? [];
- });
+ return cache_remember(
+ $cache_name,
+ function () use ($menu_keys, $app_type) {
+ $where = [
+ ['menu_key', 'in', $menu_keys]
+ ];
+ if(!empty($app_type)){
+ $where[] = ['app_type', '=', $app_type];
+ }
+ $menu_list = (new SysMenu())->where($where)->order('sort', 'desc')->column('api_url,methods');
+ foreach ($menu_list as $v) {
+ $auth_menu_list[$v['methods']][] = $v['api_url'];
+ }
+ return $auth_menu_list ?? [];
+ },
+ self::$cache_tag_name
+ );
+// return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () use ($menu_keys, $app_type) {
+// $where = [
+// ['menu_key', 'in', $menu_keys]
+// ];
+// if(!empty($app_type)){
+// $where[] = ['app_type', '=', $app_type];
+// }
+// $menu_list = (new SysMenu())->where($where)->order('sort', 'desc')->column('api_url,methods');
+// foreach ($menu_list as $v) {
+// $auth_menu_list[$v['methods']][] = $v['api_url'];
+// }
+// return $auth_menu_list ?? [];
+// });
}
@@ -165,18 +198,33 @@ class MenuService extends BaseAdminService
{
sort($menu_keys);
$cache_name = 'button' . md5(implode("_", $menu_keys));
- return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () use ($menu_keys, $app_type) {
- $where = [
- ['menu_key', 'in', $menu_keys],
- ['menu_type', '=', MenuTypeEnum::BUTTON]
- ];
- if(!empty($app_type)){
- $where[] = ['app_type', '=', $app_type];
- }
- $menu_list = $this->model->where($where)->order('sort', 'desc')->column('menu_key');
- return $menu_list;
-
- });
+ return cache_remember(
+ $cache_name,
+ function () use ($menu_keys, $app_type) {
+ $where = [
+ ['menu_key', 'in', $menu_keys],
+ ['menu_type', '=', MenuTypeDict::BUTTON]
+ ];
+ if(!empty($app_type)){
+ $where[] = ['app_type', '=', $app_type];
+ }
+ $menu_list = $this->model->where($where)->order('sort', 'desc')->column('menu_key');
+ return $menu_list;
+ },
+ self::$cache_tag_name
+ );
+// return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () use ($menu_keys, $app_type) {
+// $where = [
+// ['menu_key', 'in', $menu_keys],
+// ['menu_type', '=', MenuTypeDict::BUTTON]
+// ];
+// if(!empty($app_type)){
+// $where[] = ['app_type', '=', $app_type];
+// }
+// $menu_list = $this->model->where($where)->order('sort', 'desc')->column('menu_key');
+// return $menu_list;
+//
+// });
}
/**
@@ -188,40 +236,97 @@ class MenuService extends BaseAdminService
public function getAllApiList($app_type = '', $status = 'all')
{
$cache_name = 'all_api' .$app_type.'_'. $status;
- return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () use ($status, $app_type) {
- $where = [
- ['api_url', '<>', ''],
- ['app_type', '=', $app_type],
- ];
- if ($status != 'all') {
- $where[] = ['status', '=', $status];
- }
- $menu_list = $this->model->where($where)->order('sort', 'desc')->column('methods, api_url');
- $auth_menu_list = [];
- foreach ($menu_list as $v) {
- $auth_menu_list[$v['methods']][] = $v['api_url'];
- }
- return $auth_menu_list;
- });
+ return cache_remember(
+ $cache_name,
+ function () use ($status, $app_type) {
+ $where = [
+ ['api_url', '<>', ''],
+ ['app_type', '=', $app_type],
+ ];
+ if ($status != 'all') {
+ $where[] = ['status', '=', $status];
+ }
+ $menu_list = $this->model->where($where)->order('sort', 'desc')->column('methods, api_url');
+ $auth_menu_list = [];
+ foreach ($menu_list as $v) {
+ $auth_menu_list[$v['methods']][] = $v['api_url'];
+ }
+ return $auth_menu_list;
+ },
+ self::$cache_tag_name
+ );
+// return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () use ($status, $app_type) {
+// $where = [
+// ['api_url', '<>', ''],
+// ['app_type', '=', $app_type],
+// ];
+// if ($status != 'all') {
+// $where[] = ['status', '=', $status];
+// }
+// $menu_list = $this->model->where($where)->order('sort', 'desc')->column('methods, api_url');
+// $auth_menu_list = [];
+// foreach ($menu_list as $v) {
+// $auth_menu_list[$v['methods']][] = $v['api_url'];
+// }
+// return $auth_menu_list;
+// });
}
+ /**
+ * 通过站点端口获取菜单id
+ * @param string $app_type
+ * @param $status
+ * @return mixed|string
+ */
+ public function getAllMenuIdsByAppType(string $app_type, $status = 'all'){
+ $cache_name = 'menu_id_by_app_type_' .$app_type;
+ return cache_remember(
+ $cache_name,
+ function () use ($app_type, $status) {
+ $where = [
+//
+ ['app_type', '=', $app_type],
+ ];
+ if ($status != 'all') {
+ $where[] = ['status', '=', $status];
+ }
+ return $this->model->where($where)->order('sort desc')->column('menu_key');
+ },
+ self::$cache_tag_name
+ );
+ }
/**
* 获取所有接口菜单
*/
public function getAllMenuList($app_type = '', $status = 'all', $is_tree = 0, $is_button = 0)
{
$cache_name = 'menu_api_' .$app_type.'_'. $status . '_' . $is_tree . '_' . $is_button;
- return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () use ($status, $is_tree, $is_button, $app_type) {
- $where = [
+ return cache_remember(
+ $cache_name,
+ function () use ($status, $is_tree, $is_button, $app_type) {
+ $where = [
// ['menu_type', 'in', [0,1]]
- ['app_type', '=', $app_type],
- ];
- if ($status != 'all') {
- $where[] = ['status', '=', $status];
- }
- $menu_list = $this->model->where($where)->order('sort desc')->select()->toArray();
- return $is_tree ? $this->menuToTree($menu_list, 'menu_key', 'parent_key', 'children', 'auth', '', $is_button) : $menu_list;
- });
+ ['app_type', '=', $app_type],
+ ];
+ if ($status != 'all') {
+ $where[] = ['status', '=', $status];
+ }
+ $menu_list = $this->model->where($where)->order('sort desc')->select()->toArray();
+ return $is_tree ? $this->menuToTree($menu_list, 'menu_key', 'parent_key', 'children', 'auth', '', $is_button) : $menu_list;
+ },
+ self::$cache_tag_name
+ );
+// return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () use ($status, $is_tree, $is_button, $app_type) {
+// $where = [
+//// ['menu_type', 'in', [0,1]]
+// ['app_type', '=', $app_type],
+// ];
+// if ($status != 'all') {
+// $where[] = ['status', '=', $status];
+// }
+// $menu_list = $this->model->where($where)->order('sort desc')->select()->toArray();
+// return $is_tree ? $this->menuToTree($menu_list, 'menu_key', 'parent_key', 'children', 'auth', '', $is_button) : $menu_list;
+// });
}
@@ -233,17 +338,32 @@ class MenuService extends BaseAdminService
public function getAllButtonList($app_type = '', $status = 'all', $is_tree = 0)
{
$cache_name = 'menu_api_' .$app_type.'_' . $status . '_' . $is_tree;
- return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () use ($status, $is_tree, $app_type) {
- $where = [
- ['menu_type', '=', MenuTypeEnum::BUTTON],
- ['app_type', '=', $app_type],
- ];
- if ($status != 'all') {
- $where[] = ['status', '=', $status];
- }
- $menu_list = $this->model->where($where)->order('sort', 'desc')->column('menu_key');
- return $menu_list;
- });
+ return cache_remember(
+ $cache_name,
+ function () use ($status, $is_tree, $app_type) {
+ $where = [
+ ['menu_type', '=', MenuTypeDict::BUTTON],
+ ['app_type', '=', $app_type],
+ ];
+ if ($status != 'all') {
+ $where[] = ['status', '=', $status];
+ }
+ $menu_list = $this->model->where($where)->order('sort', 'desc')->column('menu_key');
+ return $menu_list;
+ },
+ self::$cache_tag_name
+ );
+// return Cache::tag(self::$cache_tag_name)->remember($cache_name, function () use ($status, $is_tree, $app_type) {
+// $where = [
+// ['menu_type', '=', MenuTypeDict::BUTTON],
+// ['app_type', '=', $app_type],
+// ];
+// if ($status != 'all') {
+// $where[] = ['status', '=', $status];
+// }
+// $menu_list = $this->model->where($where)->order('sort', 'desc')->column('menu_key');
+// return $menu_list;
+// });
}
/**
diff --git a/niucloud/app/service/admin/sys/RoleService.php b/niucloud/app/service/admin/sys/RoleService.php
index 61a5ab3da..672252108 100644
--- a/niucloud/app/service/admin/sys/RoleService.php
+++ b/niucloud/app/service/admin/sys/RoleService.php
@@ -11,9 +11,11 @@
namespace app\service\admin\sys;
-use app\enum\sys\RoleStatusEnum;
+use app\dict\sys\RoleStatusDict;
use app\model\sys\SysRole;
use app\model\sys\SysUserRole;
+use app\service\admin\site\SiteGroupService;
+use app\service\admin\site\SiteService;
use core\base\BaseAdminService;
use core\exception\AdminException;
use think\facade\Cache;
@@ -137,12 +139,22 @@ class RoleService extends BaseAdminService
*/
public function getColumn(int $site_id){
$cache_name = 'role_column_'.$site_id;
- return Cache::tag([MenuService::$cache_tag_name, self::$cache_tag_name.$this->site_id])->remember($cache_name, function() use($site_id) {
- $where = [
- ['site_id', '=', $site_id]
- ];
- return $this->model->where($where)->column('role_name', 'role_id');
- });
+ return cache_remember(
+ $cache_name,
+ function() use($site_id) {
+ $where = [
+ ['site_id', '=', $site_id]
+ ];
+ return $this->model->where($where)->column('role_name', 'role_id');
+ },
+ [MenuService::$cache_tag_name, self::$cache_tag_name.$this->site_id]
+ );
+// return Cache::tag([MenuService::$cache_tag_name, self::$cache_tag_name.$this->site_id])->remember($cache_name, function() use($site_id) {
+// $where = [
+// ['site_id', '=', $site_id]
+// ];
+// return $this->model->where($where)->column('role_name', 'role_id');
+// });
}
@@ -152,18 +164,25 @@ class RoleService extends BaseAdminService
* @return array
*/
public function getMenuIdsByRoleIds(int $site_id, array $role_ids){
- sort($role_ids);
- $cache_name = 'user_role_'.$site_id.'_'.md5(implode('_', $role_ids));
- return Cache::tag([MenuService::$cache_tag_name, self::$cache_tag_name.$site_id])->remember($cache_name, function() use($role_ids) {
- $rules = $this->model::where([['role_id', 'IN', $role_ids], ['status', '=', RoleStatusEnum::ON]])->field('rules')->select()->toArray();
- if(!empty($rules)){
- $temp = [];
- foreach($rules as $k => $v){
- $temp = array_merge($temp, $v['rules']);
+ $menu_keys = (new SiteService())->getMenuIdsBySiteId($site_id, true, 1);
+ $allow_role_ids = array_intersect($role_ids, $menu_keys);
+ sort($allow_role_ids);
+ $cache_name = 'user_role_'.$site_id.'_'.md5(implode('_', $allow_role_ids));
+ return cache_remember(
+ $cache_name,
+ function() use($role_ids) {
+ $rules = $this->model::where([['role_id', 'IN', $role_ids], ['status', '=', RoleStatusDict::ON]])->field('rules')->select()->toArray();
+ if(!empty($rules)){
+ $temp = [];
+ foreach($rules as $k => $v){
+ $temp = array_merge($temp, $v['rules']);
+ }
+ return array_unique($temp);
}
- return array_unique($temp);
- }
- return [];
- });
+ return [];
+ },
+ [MenuService::$cache_tag_name, self::$cache_tag_name.$site_id]
+ );
+
}
}
\ No newline at end of file
diff --git a/niucloud/app/service/admin/sys/SystemService.php b/niucloud/app/service/admin/sys/SystemService.php
index 06318a8b0..46389ea2a 100644
--- a/niucloud/app/service/admin/sys/SystemService.php
+++ b/niucloud/app/service/admin/sys/SystemService.php
@@ -11,7 +11,10 @@
namespace app\service\admin\sys;
+use app\job\sys\CheckJob;
+use app\service\admin\install\InstallSystemService;
use core\base\BaseAdminService;
+use core\exception\CommonException;
use think\facade\Db;
/**
@@ -46,7 +49,7 @@ class SystemService extends BaseAdminService
*/
public function getUrl()
{
- $site_tag = $this->site_id == 30 ? '' : '/s' . $this->site_id;
+ $site_tag = $this->site_id == 1 ? '' : '/s' . $this->site_id;
$data = [
'wap_url' => ( !empty(env("system.wap_domain")) ? env("system.wap_domain") : request()->domain() ) . "/wap" . $site_tag,
'web_url' => ( !empty(env("system.web_domain")) ? env("system.web_domain") : request()->domain() ) . "/web" . $site_tag,
@@ -60,51 +63,104 @@ class SystemService extends BaseAdminService
*/
public function getSystemInfo(){
$server = [];
- $server[] = [ "name" => "服务器操作系统", "server" => PHP_OS ];
- $server[] = [ "name" => "服务器web环境", "server" => PHP_SAPI ];
- $server[] = [ "name" => "PHP版本", "server" => phpversion() ];
+ $server[] = [ "name" => get_lang('dict_setting.server_system'), "server" => PHP_OS ];
+ $server[] = [ "name" => get_lang('dict_setting.server_setting'), "server" => PHP_SAPI ];
+ $server[] = [ "name" => get_lang('dict_setting.php_version'), "server" => phpversion() ];
//环境权限
$system_variables = [];
//pdo
$pdo = extension_loaded('pdo') && extension_loaded('pdo_mysql');
- $system_variables[] = [ "name" => "pdo", "need" => "开启", "status" => $pdo ];
+ $system_variables[] = [ "name" => "pdo", "need" => get_lang('dict_setting.php_authority_ask'), "status" => $pdo ];
//curl
$curl = extension_loaded('curl') && function_exists('curl_init');
- $system_variables[] = [ "name" => "curl", "need" => "开启", "status" => $curl ];
+ $system_variables[] = [ "name" => "curl", "need" => get_lang('dict_setting.php_authority_ask'), "status" => $curl ];
//openssl
$openssl = extension_loaded('openssl');
- $system_variables[] = [ "name" => "openssl", "need" => "开启", "status" => $openssl ];
+ $system_variables[] = [ "name" => "openssl", "need" => get_lang('dict_setting.php_authority_ask'), "status" => $openssl ];
//gd
$gd = extension_loaded('gd');
- $system_variables[] = [ "name" => "GD库", "need" => "开启", "status" => $gd ];
+ $system_variables[] = [ "name" => "GD库", "need" => get_lang('dict_setting.php_authority_ask'), "status" => $gd ];
//fileinfo
$fileinfo = extension_loaded('fileinfo');
- $system_variables[] = [ "name" => "fileinfo", "need" => "开启", "status" => $fileinfo ];
+ $system_variables[] = [ "name" => "fileinfo", "need" => get_lang('dict_setting.php_authority_ask'), "status" => $fileinfo ];
//目录权限
$root_path = str_replace("\\", DIRECTORY_SEPARATOR, dirname(dirname(dirname(dirname(dirname(__FILE__))))));
$root_path = str_replace("../", DIRECTORY_SEPARATOR, $root_path);
+
$dirs_list = [
- [ "path" => $root_path . DIRECTORY_SEPARATOR . 'runtime'.DIRECTORY_SEPARATOR, "demand" => "可读可写", "path_name" => "/runtime", "name" => "runtime" ],
- [ "path" => $root_path . DIRECTORY_SEPARATOR . 'public'.DIRECTORY_SEPARATOR.'upload'.DIRECTORY_SEPARATOR, "demand" => "可读可写", "path_name" => "/public/upload", "name" => "upload" ],
+ [ "path" => $root_path . DIRECTORY_SEPARATOR . 'runtime'.DIRECTORY_SEPARATOR, "need" => get_lang('dict_setting.file_authority_ask'), "path_name" => "/runtime", "name" => "runtime" ],
+ [ "path" => $root_path . DIRECTORY_SEPARATOR . 'public'.DIRECTORY_SEPARATOR.'upload'.DIRECTORY_SEPARATOR, "need" => get_lang('dict_setting.file_authority_ask'), "path_name" => "/public/upload", "name" => "upload" ],
];
//目录 可读 可写检测
foreach ($dirs_list as $k => $v) {
$is_readable = is_readable($v[ "path" ]);
$is_write = is_write($v[ "path" ]);
- $dirs_list[ $k ][ "is_readable" ] = $is_readable;
- $dirs_list[ $k ][ "is_write" ] = $is_write;
+ if($is_readable && $is_write){
+ $dirs_list[ $k ][ "status" ] = true;
+ }else{
+ $dirs_list[ $k ][ "status" ] = false;
+ }
}
+ $system_variables = array_merge($system_variables, $dirs_list);
//获取环境版本
$server_version = [];
$row = (array)Db::query("select VERSION() as verson");
- $server_version[] = [ "name" => "PHP版本", "demand" => "大于等于8.0.0", "server" => phpversion() ];
- $server_version[] = [ "name" => "mysql版本", "demand" => "大于等于5.7", "server" => $row[0]['verson']];
+ $server_version[] = [ "name" => get_lang('dict_setting.php_version'), "demand" => get_lang('dict_setting.php_ask'), "server" => phpversion() ];
+ $server_version[] = [ "name" => get_lang('dict_setting.mysql_version'), "demand" => get_lang('dict_setting.mysql_ask'), "server" => $row[0]['verson']];
- $data = ["server" => $server, "dirs_list" => $dirs_list, 'system_variables' => $system_variables, 'server_version' => $server_version];
+ // 进程
+ $process[] = [ "name" => "php think queue:listen", "need" => get_lang('dict_setting.php_authority_ask'), "status" => ( new SystemService() )->checkJob() ];
+
+ $data = ["server" => $server, "dirs_list" => $dirs_list, 'system_variables' => $system_variables, 'server_version' => $server_version, 'process' => $process ];
return $data;
}
+ /**
+ * 清理缓存
+ */
+ public function schemaCache(){
+ if (is_dir(dirname($_SERVER['DOCUMENT_ROOT']) . '/runtime/schema')) {
+ rmdirs(dirname($_SERVER['DOCUMENT_ROOT']) . '/runtime/schema');
+ return 'CLEAR_MYSQL_CACHE_SUCCESS';
+ }
+ return;
+ }
+
+ /**
+ *校验消息队列是否正常运行
+ * @return void
+ */
+ public function checkJob(){
+ $secret = uniqid();
+ $file = root_path('runtime').$secret.'.job';
+ try{
+ CheckJob::invoke(['file' => $file]);
+ }catch(\Throwable $e){
+ return false;
+ }
+ sleep(3);
+ if(file_exists($file)){
+ @unlink($file);
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 校验计划任务是否正常运行
+ * @return bool
+ */
+ public function checkSchedule(){
+ $file = root_path('runtime').'.schedule';
+ if(file_exists($file)){
+ $time = file_get_contents($file);
+ if (!empty($time) && abs($time - time()) < 90 ) {
+ return true;
+ }
+ }
+ return false;
+ }
}
\ No newline at end of file
diff --git a/niucloud/app/service/admin/user/UserRoleService.php b/niucloud/app/service/admin/user/UserRoleService.php
index d00a69613..6ab4b294a 100644
--- a/niucloud/app/service/admin/user/UserRoleService.php
+++ b/niucloud/app/service/admin/user/UserRoleService.php
@@ -12,11 +12,15 @@
namespace app\service\admin\user;
+use app\dict\site\SiteDict;
+use app\dict\sys\AppTypeDict;
use app\model\sys\SysRole;
use app\model\sys\SysUserRole;
+use app\service\admin\site\SiteService;
use app\service\admin\sys\RoleService;
use core\base\BaseAdminService;
use core\exception\AdminException;
+use core\exception\AuthException;
use think\facade\Cache;
/**
@@ -90,14 +94,26 @@ class UserRoleService extends BaseAdminService
*/
public function getUserRole(int $site_id, int $uid){
$cache_name = 'user_role_'.$uid.'_'.$site_id;
- return Cache::tag([self::$role_cache_name, RoleService::$cache_tag_name.$this->site_id])->remember($cache_name, function() use($uid, $site_id) {
- $user_role_model = new SysUserRole();
- $where = array(
- ['uid', '=', $uid],
- ['site_id', '=', $site_id]
- );
- return $user_role_model::where($where)->findOrEmpty()->toArray();
- });
+ return cache_remember(
+ $cache_name,
+ function() use($uid, $site_id) {
+ $user_role_model = new SysUserRole();
+ $where = array(
+ ['uid', '=', $uid],
+ ['site_id', '=', $site_id]
+ );
+ return $user_role_model::where($where)->findOrEmpty()->toArray();
+ },
+ [self::$role_cache_name, RoleService::$cache_tag_name.$this->site_id]
+ );
+// return Cache::tag([self::$role_cache_name, RoleService::$cache_tag_name.$this->site_id])->remember($cache_name, function() use($uid, $site_id) {
+// $user_role_model = new SysUserRole();
+// $where = array(
+// ['uid', '=', $uid],
+// ['site_id', '=', $site_id]
+// );
+// return $user_role_model::where($where)->findOrEmpty()->toArray();
+// });
}
/**
@@ -120,12 +136,43 @@ class UserRoleService extends BaseAdminService
public function getRoleByUserRoleIds(array $role_ids, int $site_id){
sort($role_ids);
$cache_name = 'role_by_ids_'.md5(implode(',', $role_ids)).'_'.$site_id;
- return Cache::tag([self::$role_cache_name, RoleService::$cache_tag_name.$this->site_id])->remember($cache_name, function() use($role_ids, $site_id) {
- $where = array(
- ['role_id', 'in', $role_ids],
- ['site_id', '=', $site_id]
- );
- return SysRole::where($where)->column('role_name');
- });
+ return cache_remember(
+ $cache_name,
+ function() use($role_ids, $site_id) {
+ $where = array(
+ ['role_id', 'in', $role_ids],
+ ['site_id', '=', $site_id]
+ );
+ return SysRole::where($where)->column('role_name');
+ },
+ [self::$role_cache_name, RoleService::$cache_tag_name.$this->site_id]
+ );
+// return Cache::tag([self::$role_cache_name, RoleService::$cache_tag_name.$this->site_id])->remember($cache_name, function() use($role_ids, $site_id) {
+// $where = array(
+// ['role_id', 'in', $role_ids],
+// ['site_id', '=', $site_id]
+// );
+// return SysRole::where($where)->column('role_name');
+// });
}
+
+// public function getFirstMenuByUser(int $site_id, int $uid){
+// $role_service = (new RoleService())->getMenuIdsByRoleIds();
+// $userrole = $this->getUserRole($site_id, $uid);
+// $site_info = (new SiteService())->getSiteCache($site_id);
+// if(empty($userrole)) throw new AuthException('SITE_USER_CAN_NOT_LOGIN_IN_ADMIN');
+// if($userrole->is_admin){
+// if($site_info->app_type == AppTypeDict::SITE){
+//
+// }else if($site_info->app_type == AppTypeDict::ADMIN){
+//
+// }
+// }else{
+// $user_role_ids = $userrole->role_ids;
+// $menu_keys = (new RoleService())->getMenuIdsByRoleIds($site_id, $user_role_ids);
+// if(in_array('siteindex', $menu_keys)){
+//
+// }
+// }
+// }
}
\ No newline at end of file
diff --git a/niucloud/app/service/admin/user/UserService.php b/niucloud/app/service/admin/user/UserService.php
index 22ad39675..c2cea50b4 100644
--- a/niucloud/app/service/admin/user/UserService.php
+++ b/niucloud/app/service/admin/user/UserService.php
@@ -12,7 +12,7 @@
namespace app\service\admin\user;
-use app\enum\sys\UserEnum;
+use app\dict\sys\UserDict;
use app\model\sys\SysUser;
use app\service\admin\auth\LoginService;
use core\base\BaseAdminService;
@@ -201,7 +201,7 @@ class UserService extends BaseAdminService
$is_off_status = false;
if(isset($data['status'])){
$user_data['status'] = $data['status'];
- if($data['status'] == UserEnum::OFF)
+ if($data['status'] == UserDict::OFF)
$is_off_status = true;
}
if(isset($data['head_img'])){
diff --git a/niucloud/app/service/admin/weapp/WeappTemplateService.php b/niucloud/app/service/admin/weapp/WeappTemplateService.php
index 53e6073bd..03f202f70 100644
--- a/niucloud/app/service/admin/weapp/WeappTemplateService.php
+++ b/niucloud/app/service/admin/weapp/WeappTemplateService.php
@@ -11,7 +11,7 @@
namespace app\service\admin\weapp;
-use app\enum\notice\NoticeTypeEnum;
+use app\dict\notice\NoticeTypeDict;
use app\service\admin\notice\NoticeService;
use app\service\core\notice\CoreNoticeService;
use core\base\BaseAdminService;
@@ -38,7 +38,7 @@ class WeappTemplateService extends BaseAdminService
$list = $core_notice_service->getList($site_id);
$template = [];
foreach ($list as $k => $v){
- if(in_array(NoticeTypeEnum::WEAPP, $v['support_type'])) $template[] = $v;
+ if(in_array(NoticeTypeDict::WEAPP, $v['support_type'])) $template[] = $v;
}
return $template;
}
@@ -67,21 +67,21 @@ class WeappTemplateService extends BaseAdminService
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function syncItem($item){
- $key = $item['key'];
- $weapp_json = $item['wechat_json'];
- $temp_key = $weapp_json['temp_key'] ?? '';
+ $key = $item['key'] ?? '';
+ $weapp = $item['weapp'] ?? [];
+ $temp_key = $weapp['temp_key'] ?? '';
if(empty($temp_key)) $error = 'WECHAT_TEMPLATE_NEED_NO';
$weapp_template_id = $item['weapp_template_id'];
//删除原来的消息模板
- $template_loader = (new TemplateLoader(NoticeTypeEnum::WEAPP, ['site_id' => $this->site_id]));
+ $template_loader = (new TemplateLoader(NoticeTypeDict::WEAPP, ['site_id' => $this->site_id]));
$template_loader->delete(['template_id' => $weapp_template_id ]);
// (new CoreWeappTemplateService())->deleteTemplate($this->site_id, $weapp_template_id);
//新的消息模板
- $tid = $weapp_json['tid'] ?? '';
- $kid_list = $weapp_json['kid_list'] ?? [];
- $scene_desc = $weapp_json['scene_desc'] ?? '';
+ $tid = $weapp['tid'] ?? '';
+ $kid_list = $weapp['kid_list'] ?? [];
+ $scene_desc = $weapp['scene_desc'] ?? '';
// $res = (new CoreWeappTemplateService())->addTemplate($this->site_id, $tid, $kid_list, $scene_desc);
- $res = $template_loader->add(['tid' => $tid, 'kid_list' => $kid_list, 'scene_desc' => $scene_desc ]);
+ $res = $template_loader->addTemplate(['tid' => $tid, 'kid_list' => $kid_list, 'scene_desc' => $scene_desc ]);
$notice_service = new NoticeService();
if (isset($res[ 'errcode' ]) && $res[ 'errcode' ] == 0) {
//修改
diff --git a/niucloud/app/service/admin/wechat/WechatEventService.php b/niucloud/app/service/admin/wechat/WechatEventService.php
index 871a4a967..2e495eb52 100644
--- a/niucloud/app/service/admin/wechat/WechatEventService.php
+++ b/niucloud/app/service/admin/wechat/WechatEventService.php
@@ -11,7 +11,7 @@
namespace app\service\admin\wechat;
-use app\enum\channel\WechatEnum;
+use app\dict\channel\WechatDict;
use Closure;
use core\base\BaseAdminService;
@@ -28,7 +28,7 @@ class WechatEventService extends BaseAdminService
*/
public function event($message, Closure $next){
switch($message->MsgType){
- case WechatEnum::EVENT_SUBSCRIBE :
+ case WechatDict::EVENT_SUBSCRIBE :
$message->FromUserName;
break;
}
diff --git a/niucloud/app/service/admin/wechat/WechatTemplateService.php b/niucloud/app/service/admin/wechat/WechatTemplateService.php
index 6da5b3fda..7db29bf2e 100644
--- a/niucloud/app/service/admin/wechat/WechatTemplateService.php
+++ b/niucloud/app/service/admin/wechat/WechatTemplateService.php
@@ -11,7 +11,7 @@
namespace app\service\admin\wechat;
-use app\enum\notice\NoticeTypeEnum;
+use app\dict\notice\NoticeTypeDict;
use app\service\admin\notice\NoticeService;
use app\service\core\notice\CoreNoticeService;
use app\service\core\wechat\CoreWechatTemplateService;
@@ -39,7 +39,6 @@ class WechatTemplateService extends BaseAdminService
$core_notice_service = new CoreNoticeService();
$list = $core_notice_service->getList($site_id, $keys);
if(empty($list)) throw new NoticeException('NOTICE_TEMPLATE_NOT_EXIST');
-
foreach($list as $v){
$this->syncItem($v);
}
@@ -54,9 +53,9 @@ class WechatTemplateService extends BaseAdminService
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function syncItem($item){
- $key = $item['key'];
- $wechat_json = $item['wechat_json'];
- $temp_key = $wechat_json['temp_key'] ?? '';
+ $key = $item['key'] ?? '';
+ $wechat = $item['wechat'] ?? '';
+ $temp_key = $wechat['temp_key'] ?? '';
if(empty($temp_key)) $error = 'WECHAT_TEMPLATE_NEED_NO';
$wechat_template_id = $item['wechat_template_id'];
//删除原来的消息模板
@@ -65,7 +64,7 @@ class WechatTemplateService extends BaseAdminService
$template_loader->delete(['templateId' => $wechat_template_id]);
//新的消息模板
// $res = (new CoreWechatTemplateService())->addTemplate($this->site_id, $temp_key);
- $res = $template_loader->add(['shortId' => $temp_key]);
+ $res = $template_loader->addTemplate(['shortId' => $temp_key]);
$notice_service = new NoticeService();
if (isset($res[ 'errcode' ]) && $res[ 'errcode' ] == 0) {
//修改
@@ -87,7 +86,7 @@ class WechatTemplateService extends BaseAdminService
$list = $core_notice_service->getList($site_id);
$template = [];
foreach ($list as $k => $v){
- if(in_array(NoticeTypeEnum::WECHAT, $v['support_type'])) $template[] = $v;
+ if(in_array(NoticeTypeDict::WECHAT, $v['support_type'])) $template[] = $v;
}
return $template;
}
diff --git a/niucloud/app/service/api/diy/DiyService.php b/niucloud/app/service/api/diy/DiyService.php
index a03e91f92..129e8da53 100644
--- a/niucloud/app/service/api/diy/DiyService.php
+++ b/niucloud/app/service/api/diy/DiyService.php
@@ -11,6 +11,7 @@
namespace app\service\api\diy;
+use app\dict\diy\PagesDict;
use app\model\diy\Diy;
use core\base\BaseApiService;
@@ -44,10 +45,45 @@ class DiyService extends BaseApiService
$condition[] = [ 'name', '=', $params[ 'name' ] ];
$condition[] = [ 'is_default', '=', 1 ];
}
+
$field = 'id,site_id,title,name,type,value,is_default,share,visit_count';
$info = $this->model->field($field)->where($condition)->findOrEmpty()->toArray();
+ if (empty($info)) {
+ // 查询默认页面数据
+ if (!empty($params[ 'name' ])) {
+ $page_data = $this->getFirstPageData($params[ 'name' ]);
+ if (!empty($page_data)) {
+ $info = [
+ 'site_id' => $this->site_id,
+ 'title' => $page_data[ 'title' ],
+ 'name' => $page_data[ 'template' ],
+ 'type' => $page_data[ 'template' ],
+ 'value' => json_encode($page_data[ 'data' ], JSON_UNESCAPED_UNICODE),
+ 'is_default' => 1,
+ 'share' => '',
+ 'visit_count' => 0
+ ];
+ }
+ }
+ }
return $info;
}
+ /**
+ * 获取默认页面数据
+ * @param $template
+ * @return array|mixed
+ */
+ public function getFirstPageData($template)
+ {
+ $pages = PagesDict::getPages($template);
+ if (!empty($pages)) {
+ $page = array_shift($pages);
+ $page[ 'template' ] = $template;
+ return $page;
+ }
+ return [];
+ }
+
}
\ No newline at end of file
diff --git a/niucloud/app/service/api/login/AuthService.php b/niucloud/app/service/api/login/AuthService.php
index b835695e8..8593329ae 100644
--- a/niucloud/app/service/api/login/AuthService.php
+++ b/niucloud/app/service/api/login/AuthService.php
@@ -11,6 +11,7 @@
namespace app\service\api\login;
+use app\dict\site\SiteDict;
use app\model\member\Member;
use app\Request;
use app\service\api\member\MemberService;
@@ -33,20 +34,32 @@ class AuthService extends BaseApiService
}
public function checkSiteAuth(Request $request){
- $site_id = $request->apiSiteId();//todo 可以是依赖传值,也可以通过domain域名来获取site_id
- if(empty((new CoreSiteService())->getSiteCache($site_id))) throw new AuthException('SITE_NOT_EXIST');
//如果登录信息非法就报错
if($this->member_id > 0){
$member_service = new MemberService();
- $member_info = $member_service->findMemberInfo(['member_id' => $this->member_id, 'site_id' => $site_id]);
+ $member_info = $member_service->findMemberInfo(['member_id' => $this->member_id, 'site_id' => $this->site_id]);
if($member_info->isEmpty())
throw new AuthException('MEMBER_NOT_EXIST');
}
- $request->siteId($site_id);
-
return true;
}
+ /**
+ * 检测站点的合法性
+ * @param Request $request
+ * @return true
+ */
+ public function checkSite(Request $request){
+ $site_id = $request->apiSiteId();//todo 可以是依赖传值,也可以通过domain域名来获取site_id
+ $site_info = (new CoreSiteService())->getSiteCache($site_id);
+ if(empty($site_info)) throw new AuthException('SITE_NOT_EXIST');
+ if($site_info['status'] == SiteDict::CLOSE){
+ $rule = trim(strtolower($request->rule()->getRule()));
+ if($rule != 'site') throw new AuthException('SITE_CLOSE_NOT_ALLOW');
+ }
+ $request->siteId($site_id);
+ return true;
+ }
/**
* 绑定手机号
* @param string|int $mobile
diff --git a/niucloud/app/service/api/login/LoginService.php b/niucloud/app/service/api/login/LoginService.php
index 902f9d206..40404f43a 100644
--- a/niucloud/app/service/api/login/LoginService.php
+++ b/niucloud/app/service/api/login/LoginService.php
@@ -11,9 +11,9 @@
namespace app\service\api\login;
-use app\enum\member\MemberLoginTypeEnum;
-use app\enum\sys\AppTypeEnum;
-use app\enum\sys\SmsEnum;
+use app\dict\member\MemberLoginTypeDict;
+use app\dict\sys\AppTypeDict;
+use app\dict\sys\SmsDict;
use app\model\member\Member;
use app\service\api\captcha\CaptchaService;
use app\service\api\member\MemberConfigService;
@@ -91,7 +91,7 @@ class LoginService extends BaseApiService
$member_info = $member_service->findMemberInfo(['username' => $username, 'site_id' => $this->site_id]);
if ($member_info->isEmpty()) throw new AuthException('MEMBER_NOT_EXIST');//账号不存在
if (!check_password($password, $member_info->password)) return false;//密码与账号不匹配
- return $this->login($member_info, MemberLoginTypeEnum::USERNAME);
+ return $this->login($member_info, MemberLoginTypeDict::USERNAME);
}
@@ -111,7 +111,7 @@ class LoginService extends BaseApiService
$member_info = $member_service->findMemberInfo(['mobile' => $mobile, 'site_id' => $this->site_id]);
if ($member_info->isEmpty()) throw new AuthException('MEMBER_NOT_EXIST');//账号不存在
- return $this->login($member_info, MemberLoginTypeEnum::MOBILE);
+ return $this->login($member_info, MemberLoginTypeDict::MOBILE);
}
/**
* 生成token
@@ -121,7 +121,7 @@ class LoginService extends BaseApiService
public function createToken($member_info): ?array
{
$expire_time = env('system.api_token_expire_time') ?? 3600;//todo 不一定和管理端合用这个token时限
- $token_info = TokenAuth::createToken($member_info->member_id, AppTypeEnum::API, ['member_id' => $member_info->member_id, 'username' => $member_info->username, 'site_id' => $member_info->site_id], $expire_time);
+ $token_info = TokenAuth::createToken($member_info->member_id, AppTypeDict::API, ['member_id' => $member_info->member_id, 'username' => $member_info->username, 'site_id' => $member_info->site_id], $expire_time);
return $token_info;
}
@@ -140,7 +140,7 @@ class LoginService extends BaseApiService
*/
public static function clearToken(int $member_id, ?string $token = ''): ?bool
{
- TokenAuth::clearToken($member_id, AppTypeEnum::API, $token);
+ TokenAuth::clearToken($member_id, AppTypeDict::API, $token);
return true;
}
@@ -159,7 +159,7 @@ class LoginService extends BaseApiService
}
try {
- $token_info = TokenAuth::parseToken($token, AppTypeEnum::API);
+ $token_info = TokenAuth::parseToken($token, AppTypeDict::API);
} catch ( \Throwable $e ) {
// if(env('app_debug', false)){
// throw new AuthException($e->getMessage(), 401);
@@ -186,7 +186,7 @@ class LoginService extends BaseApiService
(new CaptchaService())->check();
if(empty($mobile)) throw new AuthException('MOBILE_NEEDED');
//发送
- if(!in_array($type, SmsEnum::SCENE_TYPE)) throw new AuthException('MEMBER_MOBILE_CAPTCHA_ERROR');
+ if(!in_array($type, SmsDict::SCENE_TYPE)) throw new AuthException('MEMBER_MOBILE_CAPTCHA_ERROR');
$code = str_pad(random_int(1, 9999), 4, 0, STR_PAD_LEFT);// 生成4位随机数,左侧补0
(new NoticeService())->send('member_verify_code', ['code' => $code, 'mobile' => $mobile]);
//将验证码存入缓存
diff --git a/niucloud/app/service/api/login/RegisterService.php b/niucloud/app/service/api/login/RegisterService.php
index f8a0acc96..e477c0453 100644
--- a/niucloud/app/service/api/login/RegisterService.php
+++ b/niucloud/app/service/api/login/RegisterService.php
@@ -11,12 +11,13 @@
namespace app\service\api\login;
-use app\enum\member\MemberLoginTypeEnum;
-use app\enum\member\MemberRegisterTypeEnum;
+use app\dict\member\MemberLoginTypeDict;
+use app\dict\member\MemberRegisterTypeDict;
use app\model\member\Member;
use app\service\api\captcha\CaptchaService;
use app\service\api\member\MemberConfigService;
use app\service\api\member\MemberService;
+use app\service\core\member\CoreMemberService;
use core\base\BaseApiService;
use core\exception\AuthException;
@@ -41,7 +42,7 @@ class RegisterService extends BaseApiService
public function register(string|int $mobile, $data, string $type, bool $is_verify_mobile = true)
{
//校验注册方式
- if(empty(MemberRegisterTypeEnum::getType()[$type]))
+ if(empty(MemberRegisterTypeDict::getType()[$type]))
throw new AuthException('REG_CHANNEL_NOT_EXIST');
$data = $this->bindByMobile($mobile, $data, $type, $is_verify_mobile);
$member_service = new MemberService();
@@ -62,6 +63,7 @@ class RegisterService extends BaseApiService
$member_id = (new MemberService())->add($data);
$data['member_id'] = $member_id;
event('memberRegister', $data);
+ CoreMemberService::setMemberNo($this->site_id, $member_id);
}
$member_info = $member_service->findMemberInfo(['member_id' => $member_id, 'site_id' => $this->site_id]);
if ($member_info->isEmpty()) throw new AuthException('MEMBER_NOT_EXIST');//账号已存在
@@ -109,7 +111,7 @@ class RegisterService extends BaseApiService
'username' => $username,
'password' => $password_hash,
);
- $result = $this->register($mobile, $data, MemberRegisterTypeEnum::USERNAME);
+ $result = $this->register($mobile, $data, MemberRegisterTypeDict::USERNAME);
return $result;
}
@@ -131,7 +133,7 @@ class RegisterService extends BaseApiService
$data = array(
'mobile' => $mobile,
);
- $result = $this->register($mobile, $data, MemberRegisterTypeEnum::MOBILE);
+ $result = $this->register($mobile, $data, MemberRegisterTypeDict::MOBILE);
return $result;
}
@@ -159,12 +161,12 @@ class RegisterService extends BaseApiService
$is_bind_mobile = $config['is_bind_mobile'];
$with_field = match($type){
- MemberLoginTypeEnum::USERNAME => 'username',
- MemberLoginTypeEnum::MOBILE => 'mobile',
- MemberLoginTypeEnum::WECHAT => 'wx_openid',
- MemberLoginTypeEnum::WEAPP => 'weapp_openid',
+ MemberLoginTypeDict::USERNAME => 'username',
+ MemberLoginTypeDict::MOBILE => 'mobile',
+ MemberLoginTypeDict::WECHAT => 'wx_openid',
+ MemberLoginTypeDict::WEAPP => 'weapp_openid',
};
- if($type == MemberLoginTypeEnum::MOBILE || $is_bind_mobile == 1){
+ if($type == MemberLoginTypeDict::MOBILE || $is_bind_mobile == 1){
if(empty($mobile)) throw new AuthException('MOBILE_NEEDED');//必须填写
//todo 校验手机号验证码
if($is_verify){
@@ -174,7 +176,7 @@ class RegisterService extends BaseApiService
$member_service = new MemberService();
$member = $member_service->findMemberInfo(['mobile' => $mobile, 'site_id' => $this->site_id]);
if(!$member->isEmpty()){
- if($type == MemberLoginTypeEnum::MOBILE){
+ if($type == MemberLoginTypeDict::MOBILE){
throw new AuthException('MOBILE_IS_EXIST');//手机号注册时发现手机号已存在账号
} else{
if($member->$with_field != '') throw new AuthException('MOBILE_IS_EXIST');//手机号已存在
diff --git a/niucloud/app/service/api/member/MemberCashOutService.php b/niucloud/app/service/api/member/MemberCashOutService.php
index 9a1c72bfd..ac2536fa3 100644
--- a/niucloud/app/service/api/member/MemberCashOutService.php
+++ b/niucloud/app/service/api/member/MemberCashOutService.php
@@ -11,7 +11,7 @@
namespace app\service\api\member;
-use app\enum\member\MemberCashOutEnum;
+use app\dict\member\MemberCashOutDict;
use app\model\member\MemberCashOut;
use app\service\core\member\CoreMemberCashOutService;
use app\service\core\member\CoreMemberConfigService;
@@ -84,12 +84,12 @@ class MemberCashOutService extends BaseApiService
])->findOrEmpty();
if($cash_out->isEmpty()) throw new ApiException('RECHARGE_LOG_NOT_EXIST');
- if($cash_out['status'] != MemberCashOutEnum::WAIT_AUDIT) throw new CommonException('CASHOUT_STATUS_NOT_IN_WAIT_AUDIT');
+ if($cash_out['status'] != MemberCashOutDict::WAIT_AUDIT) throw new CommonException('CASHOUT_STATUS_NOT_IN_WAIT_AUDIT');
$cash_out->save(
[
'cancel_time' => time(),
- 'status' => MemberCashOutEnum::CANCEL
+ 'status' => MemberCashOutDict::CANCEL
]
);
(new CoreMemberConfigService())->returnMember($this->site_id, $cash_out);
diff --git a/niucloud/app/service/api/member/MemberService.php b/niucloud/app/service/api/member/MemberService.php
index 927ea2a73..1bc904dda 100644
--- a/niucloud/app/service/api/member/MemberService.php
+++ b/niucloud/app/service/api/member/MemberService.php
@@ -66,7 +66,7 @@ class MemberService extends BaseApiService
*/
public function getInfo()
{
- $field = 'member_id, site_id, username, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, balance, growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, wx_openid, weapp_openid, commission, commission_get, commission_cash_outing';
+ $field = 'member_id, site_id, username, member_no, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, balance, growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, wx_openid, weapp_openid, commission, commission_get, commission_cash_outing';
return $this->model->where([['member_id', '=', $this->member_id]])->field($field)->findOrEmpty()->append(['sex_name'])->toArray();
}
@@ -75,7 +75,7 @@ class MemberService extends BaseApiService
*/
public function center()
{
- $field = 'member_id, site_id, username, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, balance, growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, commission, commission_get, commission_cash_outing';
+ $field = 'member_id, site_id, username, member_no, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, balance, growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, commission, commission_get, commission_cash_outing';
return $this->model->where([['member_id', '=', $this->member_id]])->field($field)->findOrEmpty()->append(['sex_name'])->toArray();
}
diff --git a/niucloud/app/service/api/order/RechargeOrderService.php b/niucloud/app/service/api/order/RechargeOrderService.php
index 679e0a5cb..34483d969 100644
--- a/niucloud/app/service/api/order/RechargeOrderService.php
+++ b/niucloud/app/service/api/order/RechargeOrderService.php
@@ -11,7 +11,7 @@
namespace app\service\api\order;
-use app\enum\order\RechargeOrderEnum;
+use app\dict\order\RechargeOrderDict;
use app\model\order\Order;
use app\service\core\order\recharge\CoreRechargeOrderService;
use core\base\BaseApiService;
@@ -78,6 +78,6 @@ class RechargeOrderService extends BaseApiService
*/
public function getStatus()
{
- return RechargeOrderEnum::getStatus();
+ return RechargeOrderDict::getStatus();
}
}
\ No newline at end of file
diff --git a/niucloud/app/service/api/pay/PayService.php b/niucloud/app/service/api/pay/PayService.php
index 81d12b088..e9ae9d473 100644
--- a/niucloud/app/service/api/pay/PayService.php
+++ b/niucloud/app/service/api/pay/PayService.php
@@ -11,7 +11,7 @@
namespace app\service\api\pay;
-use app\enum\common\ChannelEnum;
+use app\dict\common\ChannelDict;
use app\service\core\member\CoreMemberService;
use app\service\core\pay\CorePayService;
use core\base\BaseApiService;
@@ -51,11 +51,11 @@ class PayService extends BaseApiService
$member = (new CoreMemberService())->getInfoByMemberId($this->site_id, $this->member_id);
switch ($this->channel) {
- case ChannelEnum::WECHAT://公众号
+ case ChannelDict::WECHAT://公众号
$openid = $member['wx_openid'] ?? '';
break;
- case ChannelEnum::WEAPP://微信小程序
+ case ChannelDict::WEAPP://微信小程序
$openid = $member['weapp_openid'] ?? '';
break;
}
diff --git a/niucloud/app/service/api/weapp/WeappAuthService.php b/niucloud/app/service/api/weapp/WeappAuthService.php
index d0aac20de..88a5ad23b 100644
--- a/niucloud/app/service/api/weapp/WeappAuthService.php
+++ b/niucloud/app/service/api/weapp/WeappAuthService.php
@@ -1,18 +1,18 @@
+// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\service\api\weapp;
-use app\enum\member\MemberLoginTypeEnum;
-use app\enum\member\MemberRegisterTypeEnum;
+use app\dict\member\MemberLoginTypeDict;
+use app\dict\member\MemberRegisterTypeDict;
use app\service\api\login\LoginService;
use app\service\api\login\RegisterService;
use app\service\api\member\MemberConfigService;
@@ -100,7 +100,7 @@ class WeappAuthService extends BaseApiService
}else{
//可能会更新用户和粉丝表
$login_service = new LoginService();
- return $login_service->login($member_info, MemberLoginTypeEnum::WEAPP);
+ return $login_service->login($member_info, MemberLoginTypeDict::WEAPP);
}
//todo 业务落地
@@ -140,7 +140,7 @@ class WeappAuthService extends BaseApiService
[
'weapp_openid' => $openid
],
- MemberRegisterTypeEnum::WEAPP,
+ MemberRegisterTypeDict::WEAPP,
$is_verify_mobile ?? false
);
return $result;
diff --git a/niucloud/app/service/api/wechat/WechatAuthService.php b/niucloud/app/service/api/wechat/WechatAuthService.php
index c9d94b387..5dce091bc 100644
--- a/niucloud/app/service/api/wechat/WechatAuthService.php
+++ b/niucloud/app/service/api/wechat/WechatAuthService.php
@@ -12,9 +12,9 @@
namespace app\service\api\wechat;
-use app\enum\member\MemberLoginTypeEnum;
-use app\enum\member\MemberRegisterTypeEnum;
-use app\enum\scan\ScanEnum;
+use app\dict\member\MemberLoginTypeDict;
+use app\dict\member\MemberRegisterTypeDict;
+use app\dict\scan\ScanDict;
use app\service\api\login\LoginService;
use app\service\api\login\RegisterService;
use app\service\api\member\MemberConfigService;
@@ -116,7 +116,7 @@ class WechatAuthService extends BaseApiService
} else {
//可能会更新用户和粉丝表
$login_service = new LoginService();
- return $login_service->login($member_info, MemberLoginTypeEnum::WECHAT);
+ return $login_service->login($member_info, MemberLoginTypeDict::WECHAT);
}
}
@@ -156,7 +156,7 @@ class WechatAuthService extends BaseApiService
[
'wx_openid' => $openid,
],
- MemberRegisterTypeEnum::WECHAT
+ MemberRegisterTypeDict::WECHAT
);
return $result;
@@ -183,7 +183,7 @@ class WechatAuthService extends BaseApiService
'channel' => $this->channel,
);
- $key = (new CoreScanService())->scan($this->site_id, ScanEnum::WECHAT_LOGIN, $data, 300);
+ $key = (new CoreScanService())->scan($this->site_id, ScanDict::WECHAT_LOGIN, $data, 300);
$url = $this->core_wechat_serve_service->scan($this->site_id, $key, 300);
return [
'url' => $url,
diff --git a/niucloud/app/service/core/addon/CoreAddonBaseService.php b/niucloud/app/service/core/addon/CoreAddonBaseService.php
index 24a51a14c..67c84abec 100644
--- a/niucloud/app/service/core/addon/CoreAddonBaseService.php
+++ b/niucloud/app/service/core/addon/CoreAddonBaseService.php
@@ -42,11 +42,13 @@ class CoreAddonBaseService extends BaseCoreService
public function getAddonConfig(string $addon)
{
$path = $this->addon_path . $addon . DIRECTORY_SEPARATOR . 'info.json';
+ $resource_path = $this->addon_path . $addon . DIRECTORY_SEPARATOR.'resource'.DIRECTORY_SEPARATOR;
if (is_file($path)) {
$json_string = file_get_contents($path);
// 用参数true把JSON字符串强制转成PHP数组
$info = json_decode($json_string, true);
- $info['icon'] = '';
+ $info['icon'] = $resource_path.'icon.png';
+ $info['cover'] = $resource_path.'cover.png';
}
return $info ?? [];
}
@@ -61,6 +63,16 @@ class CoreAddonBaseService extends BaseCoreService
return $this->addon_path . $addon . DIRECTORY_SEPARATOR . 'config'. DIRECTORY_SEPARATOR;
}
+ /**
+ * 获取插件定义的package目录
+ * @param string $addon
+ * @return string
+ */
+ public function geAddonPackagePath(string $addon)
+ {
+ return $this->addon_path . $addon . DIRECTORY_SEPARATOR . 'package'. DIRECTORY_SEPARATOR;
+ }
+
/**
* 读取json文件转化成数组返回
* @param $json_file_path //json文件目录
diff --git a/niucloud/app/service/core/addon/CoreAddonConfigService.php b/niucloud/app/service/core/addon/CoreAddonConfigService.php
deleted file mode 100644
index 1b196aa21..000000000
--- a/niucloud/app/service/core/addon/CoreAddonConfigService.php
+++ /dev/null
@@ -1,340 +0,0 @@
-remember($cache_name, function () {
- $list = Db::name("addon")->column("key");
- return $list;
- });
- }
-
- /**
- * 加载语言包
- * @param $lang_type
- */
- public function loadAddonLang($lang_type)
- {
-
- $addons = $this->getLocalAddons();
- $lang_files = [];
-
- foreach ($addons as $k => $v)
- {
- $lang_path = $this->getAddonConfigPath($v)."lang". DIRECTORY_SEPARATOR. $lang_type.DIRECTORY_SEPARATOR;
-
- $api_path = $lang_path."api.php";
- $enum_path = $lang_path."enum.php";
- $validate_path = $lang_path."validate.php";
- if(is_file($api_path))
- {
- $lang_files[] = $api_path;
-
- }
- if(is_file($enum_path))
- {
- $lang_files[] = $enum_path;
- }
- if(is_file($validate_path))
- {
- $lang_files[] = $validate_path;
- }
- }
- $files_data = $this->loadFiles($lang_files);
- $lang = [];
- foreach ($files_data as $data) {
- $lang = array_merge($lang, $data);
- }
- return $lang;
- }
-
- /**
- * 加载插件事件
- * @return array|mixed
- */
- public function loadAddonEvent($system_event)
- {
-
- $addons = $this->getLocalAddons();
- $event_files = [];
-
- foreach ($addons as $k => $v)
- {
- $event_path = $this->getAddonConfigPath($v)."event.php";
- if(is_file($event_path))
- {
- $event_files[] = $event_path;
- }
- }
- $files_data = $this->loadFiles($event_files);
-
- $files_data[1] = $system_event;
-
- $events = [];
- foreach ($files_data as $data) {
- $events = empty($events) ? $data : array_merge2($events, $data);
- }
- return $events;
-
- }
-
- /**
- * 加载插件路由
- * @param $app_type
- */
- public function loadAddonRoute($app_type)
- {
- $addons = $this->getLocalAddons();
-
- foreach ($addons as $k => $v)
- {
- $route_path = $this->getAddonConfigPath($v)."route".DIRECTORY_SEPARATOR. $app_type. ".php";
- if(is_file($route_path))
- {
- include $route_path;
- }
- }
- return true;
- }
-
- /**
- * 加载整合插件components数据
- * @param array $system_components //系统components数据
- * @return array
- */
- public function loadAddonUniappComponent($system_components = [])
- {
- $addons = $this->getLocalAddons();
- $components_files = [];
- foreach ($addons as $k => $v)
- {
- $components_path = $this->getAddonConfigPath($v). "diy". DIRECTORY_SEPARATOR. "components.php";
- if(is_file($components_path))
- {
- $components_files[] = $components_path;
- }
- }
- $components_files_data = $this->loadFiles($components_files);
- $components = $system_components;
- foreach ($components_files_data as $file_data)
- {
- $components = empty($components) ? $file_data : array_merge2($components, $file_data);
- }
- return $components;
- }
-
- /**
- * 加载整合插件uniapp link数据
- * @param array $system_links //系统link数据
- * return array
- */
- public function loadAddonUniappLink($system_links = [])
- {
- $addons = $this->getLocalAddons();
- $link_files = [];
- foreach ($addons as $k => $v)
- {
- $link_path = $this->getAddonConfigPath($v). "diy". DIRECTORY_SEPARATOR. "links.php";
- if(is_file($link_path))
- {
- $link_files[] = $link_path;
- }
- }
- $link_files_data = $this->loadFiles($link_files);
- $links = $system_links;
- foreach ($link_files_data as $file_data)
- {
- if(empty($links))
- {
- $links = $file_data;
- }else
- $links = array_merge($links, $file_data);
- }
- return $links;
- }
-
- /**
- * 加载整合插件uniapp pages数据
- * @param array $system_pages //系统page数据
- * return array
- */
- public function loadAddonUniappPages($system_pages = [])
- {
- $addons = $this->getLocalAddons();
- $page_files = [];
- foreach ($addons as $k => $v)
- {
- $page_path = $this->getAddonConfigPath($v). "diy". DIRECTORY_SEPARATOR. "pages.php";
- if(is_file($page_path))
- {
- $page_files[] = $page_path;
- }
- }
- $page_files_data = $this->loadFiles($page_files);
- $pages = $system_pages;
- foreach ($page_files_data as $file_data)
- {
- if(empty($pages))
- {
- $pages = $file_data;
- }else
- $pages = array_merge($pages, $file_data);
- }
- return $pages;
- }
- /**
- * 加载插件菜单返回数组
- * @param $addon
- * @param $app_type
- * @return array|mixed
- */
- private function loadAddonMenu($addon, $app_type)
- {
- $menu_path = $this->getAddonConfigPath($addon)."menu".DIRECTORY_SEPARATOR. $app_type. ".php";
- if(is_file($menu_path))
- {
- return include $menu_path;
- }
- return [];
- }
-
- /**
- * 安装或者刷新插件菜单
- * @param $addon
- * @return bool
- */
- public function refreshAddonMenu($addon)
- {
- $addon_admin_tree = $this->loadAddonMenu($addon, "admin");
- $menu = [];
- $menu_service = new CoreMenuService();
- if(!empty($addon_admin_tree))
- {
- $menu = $menu_service->loadMenu($addon_admin_tree, "admin", $addon);
- }
- $addon_site_tree = $this->loadAddonMenu($addon, "site");
- if(!empty($addon_site_tree))
- {
- $site_menu = $menu_service->loadMenu($addon_site_tree, "site", $addon);
- $menu = array_merge($menu, $site_menu);
- }
- $menu_service->deleteByAddon($addon);
- $menu_service->install($menu);
- return true;
-
- }
-
- /**
- * 刷新所有插件菜单
- */
- public function refreshAllAddonMenu()
- {
-
- $addons = $this->getLocalAddons();
- foreach ($addons as $k => $v)
- {
- $this->refreshAddonMenu($v);
- }
- return true;
- }
-
- /**
- * 加载整体消息模板
- * @param $type //模板类型 template weapp, wechat,sms
- * @return array|mixed
- */
- public function loadNotice($type)
- {
- $template_files = [];
- $system_path = root_path(). "app". DIRECTORY_SEPARATOR. "enum". DIRECTORY_SEPARATOR. "notice". DIRECTORY_SEPARATOR. $type. ".php";
- if(is_file($system_path))
- {
- $template_files[] = $system_path;
- }
- $addons = $this->getLocalAddons();
- foreach ($addons as $k => $v)
- {
- $template_path = $this->getAddonConfigPath($v). "notice". DIRECTORY_SEPARATOR. $type. ".php";
- if(is_file($template_path))
- {
- $template_files[] = $template_path;
- }
- }
-
- $template_files_data = $this->loadFiles($template_files);
-
- $template_data_array = [];
- foreach ($template_files_data as $file_data)
- {
- if(empty($template_data_array))
- {
- $template_data_array = $file_data;
- }else
- $template_data_array = array_merge($template_data_array, $file_data);
- }
- return $template_data_array;
-
- }
-
- /**
- * 加载文件数据
- * @param $files
- * @return array
- */
- private function loadFiles($files)
- {
- $default_sort = 100000;
- $files_data = [];
- if (!empty($files)) {
- foreach ($files as $file) {
- $config = include $file;
- if (!empty($config)) {
- if (isset($config[ 'file_sort' ])) {
- $sort = $config[ 'file_sort' ];
- unset($config[ 'file_sort' ]);
- $sort = $sort * 10;
- while (array_key_exists($sort, $files_data)) {
- $sort++;
- }
- $files_data[ $sort ] = $config;
- } else {
- $files_data[ $default_sort ] = $config;
- $default_sort++;
- }
- }
- }
- }
- ksort($files_data);
- return $files_data;
- }
-}
\ No newline at end of file
diff --git a/niucloud/app/service/core/addon/CoreAddonInstallService.php b/niucloud/app/service/core/addon/CoreAddonInstallService.php
index 082499e0e..adb99593a 100644
--- a/niucloud/app/service/core/addon/CoreAddonInstallService.php
+++ b/niucloud/app/service/core/addon/CoreAddonInstallService.php
@@ -11,13 +11,19 @@
namespace app\service\core\addon;
-use app\enum\sys\AppTypeEnum;
+use app\dict\addon\AddonDict;
+use app\dict\sys\AppTypeDict;
+use app\job\sys\AddonInstall;
use app\service\admin\sys\MenuService;
+use app\service\admin\sys\SystemService;
use app\service\core\menu\CoreMenuService;
use core\exception\AddonException;
+use core\exception\CommonException;
+use core\util\Terminal;
use think\db\exception\PDOException;
use think\facade\Cache;
use think\facade\Db;
+use think\facade\Log;
use think\helper\Str;
/**
@@ -43,11 +49,22 @@ class CoreAddonInstallService extends CoreAddonBaseService
'diy',
''
];
+
+ /**
+ * 需要迁移的文件,用于检测是否冲突
+ * @var array[]
+ */
+ public $install_files = [
+ 'admin' => [],
+ 'web' => [],
+ 'wap' => [],
+ ];
+
private $addon;
private $install_addon_path;//待安装的插件目录
//对象实例
- protected static $instance;
+ public static $instance;
//状态关键字
const WAIT_INSTALL = 'wait_install';
@@ -65,6 +82,12 @@ class CoreAddonInstallService extends CoreAddonBaseService
const INSTALL_FAIL = 'install_fail';
private $state;
+
+ // 安装任务
+ private $task = [];
+
+ private $cache_key = '';
+
/**
* 初始化实例
* @param string $uid
@@ -83,8 +106,130 @@ class CoreAddonInstallService extends CoreAddonBaseService
{
parent::__construct();
$this->addon = $addon;
- $this->install_addon_path = $this->addon_path. $addon. DIRECTORY_SEPARATOR;
+ $this->install_addon_path = $this->addon_path . $addon . DIRECTORY_SEPARATOR;
+
+ $this->cache_key = "install_{$addon}";
+ $this->task = Cache::get($this->cache_key, []);
}
+
+ /**
+ * 安装前检测
+ * @return void
+ */
+ public function installCheck()
+ {
+ $from_admin_dir = $this->install_addon_path . "admin" . DIRECTORY_SEPARATOR;
+ $from_web_dir = $this->install_addon_path . "web" . DIRECTORY_SEPARATOR;
+ $from_wap_dir = $this->install_addon_path . "uni-app" . DIRECTORY_SEPARATOR;
+ $from_resource_dir = $this->install_addon_path . "resource" . DIRECTORY_SEPARATOR;
+ // 放入的文件
+ $to_admin_dir = $this->root_path . "admin" . DIRECTORY_SEPARATOR;
+ $to_web_dir = $this->root_path . "web" . DIRECTORY_SEPARATOR;
+ $to_wap_dir = $this->root_path . "uni-app" . DIRECTORY_SEPARATOR;
+ $to_resource_dir = public_path() . "addon" . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
+ // 配置文件
+ $package_path = $this->install_addon_path . 'package' . DIRECTORY_SEPARATOR;
+ $package_file = [];
+ search_dir($package_path, $package_file);
+ $package_file = array_map(function($file) use ($package_path) {
+ return str_replace($package_path . DIRECTORY_SEPARATOR, '', $file);
+ }, $package_file);
+
+ $data = [
+ // 目录检测
+ 'dir' => [
+ // 要求可读权限
+ 'is_readable' => [],
+ // 要求可写权限
+ 'is_write' => []
+ ],
+ // 运行环境检测
+ 'runtime' => [],
+ 'job_normal' => ( new SystemService() )->checkJob(),
+ 'conflict_files' => $this->dirCheck()
+ ];
+
+ if (is_dir($from_admin_dir)) array_push($data[ 'dir' ][ 'is_readable' ], [ 'dir' => str_replace(project_path(), '', $from_admin_dir), 'status' => is_readable($from_admin_dir) ]);
+ if (is_dir($from_web_dir)) array_push($data[ 'dir' ][ 'is_readable' ], [ 'dir' => str_replace(project_path(), '', $from_web_dir), 'status' => is_readable($from_web_dir) ]);
+ if (is_dir($from_wap_dir)) array_push($data[ 'dir' ][ 'is_readable' ], [ 'dir' => str_replace(project_path(), '', $from_wap_dir), 'status' => is_readable($from_wap_dir) ]);
+ if (is_dir($from_resource_dir)) array_push($data[ 'dir' ][ 'is_readable' ], [ 'dir' => str_replace(project_path(), '', $from_resource_dir), 'status' => is_readable($from_resource_dir) ]);
+
+ if (is_dir($to_admin_dir)) array_push($data[ 'dir' ][ 'is_write' ], [ 'dir' => str_replace(project_path(), '', $to_admin_dir), 'status' => is_write($to_admin_dir) ]);
+ if (is_dir($to_web_dir)) array_push($data[ 'dir' ][ 'is_write' ], [ 'dir' => str_replace(project_path(), '', $to_web_dir), 'status' => is_write($to_web_dir) ]);
+ if (is_dir($to_wap_dir)) array_push($data[ 'dir' ][ 'is_write' ], [ 'dir' => str_replace(project_path(), '', $to_wap_dir), 'status' => is_write($to_wap_dir) ]);
+ if (is_dir($to_resource_dir)) array_push($data[ 'dir' ][ 'is_write' ], [ 'dir' => str_replace(project_path(), '', $to_resource_dir), 'status' => is_write($to_resource_dir) ]);
+
+ if (in_array('composer.json', $package_file)) {
+ array_push($data[ 'runtime' ], [ 'name' => 'composer', 'status' => Terminal::execute(root_path(), 'composer -V') === true ]);
+ }
+ if (in_array('admin-package.json', $package_file) || in_array('web-package.json', $package_file) || in_array('uni-app-package.json', $package_file)) {
+ array_push($data[ 'runtime' ], [ 'name' => 'npm', 'status' => Terminal::execute(root_path(), 'npm -v') === true ]);
+ }
+
+ $check_res = array_merge(
+ array_column($data[ 'dir' ][ 'is_readable' ], 'status'),
+ array_column($data[ 'dir' ][ 'is_write' ], 'status'),
+ array_column($data[ 'runtime' ], 'status'),
+ [ $data[ 'job_normal' ] ]
+ );
+ if (count($data['conflict_files'])) array_push($check_res, false);
+
+ // 是否通过校验
+ $data[ 'is_pass' ] = !in_array(false, $check_res);
+ Cache::set($this->cache_key . '_install_check', $data[ 'is_pass' ], 120);
+ return $data;
+ }
+
+ /**
+ * 安装前检测冲突文件
+ * @return array //返回冲突文件,空数组表示无冲突
+ */
+ public function dirCheck()
+ {
+ $from_admin_dir = $this->install_addon_path . "admin";
+ $from_web_dir = $this->install_addon_path . "web";
+ $from_wap_dir = $this->install_addon_path . "uni-app";
+ // 放入的文件
+ $to_admin_dir = $this->root_path . "admin";
+ $to_web_dir = $this->root_path . "web";
+ $to_wap_dir = $this->root_path . "uni-app";
+
+ $conflict_files = [];
+
+ //检测admin文件
+ if (is_dir($from_admin_dir)) {
+ search_dir($from_admin_dir, $this->install_files[ "admin" ]);
+ foreach ($this->install_files[ 'admin' ] as $admin_file) {
+ $file_path = str_replace($from_admin_dir, "", $admin_file);
+ if (is_file($to_admin_dir . $file_path))
+ $conflict_files[] = str_replace(project_path(), '', $admin_file);
+ }
+ }
+
+ //检测web端文件
+ if (is_dir($from_web_dir)) {
+ search_dir($from_web_dir, $this->install_files[ "web" ]);
+ foreach ($this->install_files[ 'web' ] as $web_file) {
+ $file_path = str_replace($from_web_dir, "", $web_file);
+ if (is_file($to_web_dir . $file_path))
+ $conflict_files[] = str_replace(project_path(), '', $web_file);
+ }
+ }
+
+
+ //检测wap的uniapp文件
+ if (is_dir($from_wap_dir)) {
+ search_dir($from_wap_dir, $this->install_files[ "wap" ]);
+ foreach ($this->install_files[ 'wap' ] as $wap_file) {
+ $file_path = str_replace($from_wap_dir, "", $wap_file);
+ if (is_file($to_wap_dir . $file_path))
+ $conflict_files[] = str_replace(project_path(), '', $wap_file);
+ }
+ }
+
+ return $conflict_files;
+ }
+
/**
* 插件安装
* @return true
@@ -93,44 +238,189 @@ class CoreAddonInstallService extends CoreAddonBaseService
{
$core_addon_service = new CoreAddonService();
if (!empty($core_addon_service->getInfoByKey($this->addon))) throw new AddonException('REPEAT_INSTALL');
- $dir = $this->addon_path . $this->addon . DIRECTORY_SEPARATOR;
- //安装文件
- if (!$this->installDir()) throw new AddonException();
- if (!$this->installSql()) throw new AddonException();
- // 安装菜单
- $this->installMenu();
+ if (!empty($this->task)) return $this->task;
- // 安装wap
- $this->installWap();
+ // 配置文件
+ $package_path = $this->install_addon_path . 'package' . DIRECTORY_SEPARATOR;
+ $package_file = [];
+ search_dir($package_path, $package_file);
+ $package_file = array_map(function($file) use ($package_path) {
+ return str_replace($package_path . DIRECTORY_SEPARATOR, '', $file);
+ }, $package_file);
- $install_data = $this->getAddonConfig($this->addon);
- $install_data[ 'icon' ] = $dir . 'icon.png';
- $core_addon_service->set($install_data);
- //清理缓存
- Cache::tag(self::$cache_tag_name)->clear();
- //执行命令
- //执行插件安装方法
- $class = "addon\\".$this->addon."\\".Str::studly($this->addon);
- if(class_exists($class))
- {
- (new $class())->install();
+ $this->task = [
+ 'installDir' => [
+ 'addon' => $this->addon,
+ 'step' => 'installDir',
+ 'command' => "php think addon:install {$this->addon} --step installDir",
+ 'desc' => '复制插件文件',
+ 'state' => AddonDict::INSTALL_UNEXECUTED
+ ],
+ 'installSql' => [
+ 'addon' => $this->addon,
+ 'step' => 'installSql',
+ 'command' => "php think addon:install {$this->addon} --step installSql",
+ 'desc' => '执行插件sql',
+ 'state' => AddonDict::INSTALL_UNEXECUTED
+ ],
+ 'installMenu' => [
+ 'addon' => $this->addon,
+ 'step' => 'installMenu',
+ 'command' => "php think addon:install {$this->addon} --step installMenu",
+ 'desc' => '安装插件菜单',
+ 'state' => AddonDict::INSTALL_UNEXECUTED
+ ],
+ 'installWap' => [
+ 'addon' => $this->addon,
+ 'step' => 'installWap',
+ 'command' => "php think addon:install {$this->addon} --step installWap",
+ 'desc' => '安装插件手机端',
+ 'state' => AddonDict::INSTALL_UNEXECUTED
+ ],
+ 'handleAddonInstall' => [
+ 'addon' => $this->addon,
+ 'step' => 'handleAddonInstall',
+ 'command' => "php think addon:install {$this->addon} --step handleAddonInstall",
+ 'desc' => '执行插件安装方法',
+ 'state' => AddonDict::INSTALL_UNEXECUTED
+ ],
+ 'installDepend' => [
+ 'addon' => $this->addon,
+ 'step' => 'installDepend',
+ 'command' => "php think addon:install {$this->addon} --step installDepend",
+ 'desc' => '合并依赖文件',
+ 'state' => AddonDict::INSTALL_UNEXECUTED
+ ]
+ ];
+
+ if (in_array('composer.json', $package_file)) {
+ $this->task[ 'updateComposer' ] = [
+ 'addon' => $this->addon,
+ 'step' => 'updateComposer',
+ 'command' => "php think addon:install {$this->addon} --step updateComposer",
+ 'desc' => '更新composer依赖',
+ 'state' => AddonDict::INSTALL_UNEXECUTED
+ ];
+ }
+ if (in_array('admin-package.json', $package_file)) {
+ $this->task[ 'updateAdminDependencies' ] = [
+ 'addon' => $this->addon,
+ 'step' => 'updateAdminDependencies',
+ 'command' => "php think addon:install {$this->addon} --step updateAdminDependencies",
+ 'desc' => '更新admin端依赖',
+ 'state' => AddonDict::INSTALL_UNEXECUTED
+ ];
+ }
+ if (in_array('uni-app-package.json', $package_file)) {
+ $this->task[ 'updateWapDependencies' ] = [
+ 'addon' => $this->addon,
+ 'step' => 'updateWapDependencies',
+ 'command' => "php think addon:install {$this->addon} --step updateWapDependencies",
+ 'desc' => '更新wap端依赖',
+ 'state' => AddonDict::INSTALL_UNEXECUTED
+ ];
+ }
+ if (in_array('web-package.json', $package_file)) {
+ $this->task[ 'updateWebDependencies' ] = [
+ 'addon' => $this->addon,
+ 'step' => 'updateWebDependencies',
+ 'command' => "php think addon:install {$this->addon} --step updateWebDependencies",
+ 'desc' => '更新web端依赖',
+ 'state' => AddonDict::INSTALL_UNEXECUTED
+ ];
}
- //组装依赖文件
- (new CoreDependService())->installDepend($this->addon);
- $this->state = self::WAIT_DEPEND;
- //执行命令行
- //命令行实例
- //4条命令行
+ $this->task[ 'installComplete' ] = [
+ 'addon' => $this->addon,
+ 'step' => 'installComplete',
+ 'command' => "php think addon:install {$this->addon} --step installComplete",
+ 'desc' => '安装完成',
+ 'state' => AddonDict::INSTALL_UNEXECUTED
+ ];
+ Cache::set($this->cache_key, $this->task);
+ return $this->task;
+ }
+ /**
+ *
+ * @return true
+ */
+ public function executeInstall()
+ {
+ if (empty($this->task)) throw new CommonException('ADDON_INSTALL_NOT_EXIST');
+
+ $check_res = Cache::get($this->cache_key . '_install_check');
+ if (!$check_res) throw new CommonException('INSTALL_CHECK_NOT_PASS');
+
+ if ($this->task[ 'installDir' ][ 'state' ] == AddonDict::INSTALL_UNEXECUTED) AddonInstall::invoke([ 'addon' => $this->addon, 'task' => 'installDir' ]);
return true;
}
- public function getInstallState()
+ /**
+ * 执行任务
+ * @param $task
+ * @return \think\Response
+ */
+ public function executeTask(string $task)
{
- return $this->state;
+ if (empty($this->task) || !isset($this->task[ $task ])) throw new CommonException('ADDON_INSTALL_NOT_EXIST');
+ if ($this->task[ $task ][ 'state' ] != AddonDict::INSTALL_UNEXECUTED) throw new CommonException('ADDON_INSTALL_EXECUTED');
+
+ $this->setTaskState($task, AddonDict::INPROGRESS);
+
+ $result = Terminal::execute(root_path(), $this->task[ $task ][ 'command' ]);
+
+ // 变更任务状态
+ if ($result === true) {
+ if ($task != 'installComplete') {
+ $this->setTaskState($task, AddonDict::INSTALL_SUCCESS);
+ $task_key = array_keys($this->task);
+ AddonInstall::invoke([ 'addon' => $this->addon, 'task' => $task_key[ array_search($task, $task_key) + 1 ] ]);
+ } else {
+ // 设置任务缓存30秒后失效
+ $this->setTaskState($task, AddonDict::INSTALL_SUCCESS, '', 30);
+ }
+ } else {
+ // 设置任务缓存30秒后失效
+ $this->setTaskState($task, AddonDict::INSTALL_FAIL, $result, 30);
+ }
+ return $result;
+ }
+
+ /**
+ * 设置任务执行状态
+ * @param string $task
+ * @param string $state
+ * @param $error
+ * @param int|null $ttl
+ * @return void
+ */
+ public function setTaskState(string $task, string $state, $error = '', $ttl = null)
+ {
+ $this->task[ $task ][ 'state' ] = $state;
+ if (!empty($error)) $this->task[ $task ][ 'error' ] = $error;
+ Cache::set($this->cache_key, $this->task, $ttl);
+ }
+
+ /**
+ * 获取安装任务
+ * @return array
+ */
+ public function getTask()
+ {
+ return $this->task;
+ }
+
+ /**
+ * 获取任务执行状态
+ * @param string $key
+ * @return array|mixed
+ */
+ public function getInstallState(string $key)
+ {
+ return $this->task[ $key ] ?? [];
}
/**
@@ -140,37 +430,33 @@ class CoreAddonInstallService extends CoreAddonBaseService
*/
public function installDir()
{
- $from_admin_dir = $this->install_addon_path."admin". DIRECTORY_SEPARATOR;
- $from_web_dir = $this->install_addon_path."web". DIRECTORY_SEPARATOR;
- $from_wap_dir = $this->install_addon_path."uni-app". DIRECTORY_SEPARATOR;
- $from_resource_dir = $this->install_addon_path."resource". DIRECTORY_SEPARATOR;
+ $from_admin_dir = $this->install_addon_path . "admin" . DIRECTORY_SEPARATOR;
+ $from_web_dir = $this->install_addon_path . "web" . DIRECTORY_SEPARATOR;
+ $from_wap_dir = $this->install_addon_path . "uni-app" . DIRECTORY_SEPARATOR;
+ $from_resource_dir = $this->install_addon_path . "resource" . DIRECTORY_SEPARATOR;
// 放入的文件
- $to_admin_dir = $this->root_path ."admin". DIRECTORY_SEPARATOR;
- $to_web_dir = $this->root_path ."web". DIRECTORY_SEPARATOR;
- $to_wap_dir = $this->root_path . "uni-app". DIRECTORY_SEPARATOR;
- $to_resource_dir = public_path() . "addon". DIRECTORY_SEPARATOR. $this->addon. DIRECTORY_SEPARATOR;
+ $to_admin_dir = $this->root_path . "admin" . DIRECTORY_SEPARATOR;
+ $to_web_dir = $this->root_path . "web" . DIRECTORY_SEPARATOR;
+ $to_wap_dir = $this->root_path . "uni-app" . DIRECTORY_SEPARATOR;
+ $to_resource_dir = public_path() . "addon" . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
// 安装admin管理端
- if(file_exists($from_admin_dir))
- {
+ if (file_exists($from_admin_dir)) {
dir_copy($from_admin_dir, $to_admin_dir, $this->files[ 'admin' ]);
}
// 安装电脑端
- if(file_exists($from_web_dir))
- {
+ if (file_exists($from_web_dir)) {
dir_copy($from_web_dir, $to_web_dir, $this->files[ 'web' ]);
}
// 安装手机端
- if(file_exists($from_wap_dir))
- {
+ if (file_exists($from_wap_dir)) {
dir_copy($from_wap_dir, $to_wap_dir, $this->files[ 'wap' ]);
}
//安装资源文件
- if(file_exists($from_resource_dir))
- {
+ if (file_exists($from_resource_dir)) {
dir_copy($from_resource_dir, $to_resource_dir, $this->files[ 'resource' ]);
}
$this->state = self::DIR_INSTALLED;
@@ -220,6 +506,36 @@ class CoreAddonInstallService extends CoreAddonBaseService
return true;
}
+ /**
+ * 执行插件install方法
+ * @return void
+ */
+ public function handleAddonInstall()
+ {
+ $core_addon_service = new CoreAddonService();
+ $install_data = $this->getAddonConfig($this->addon);
+ $install_data[ 'icon' ] = $this->addon . 'icon.png';
+ $core_addon_service->set($install_data);
+ //清理缓存
+ Cache::tag(self::$cache_tag_name)->clear();
+ //执行命令
+ //执行插件安装方法
+ $class = "addon\\" . $this->addon . "\\" . Str::studly($this->addon);
+ if (class_exists($class)) {
+ ( new $class() )->install();
+ }
+ return true;
+ }
+
+ /**
+ * 合并依赖
+ * @return void
+ */
+ public function installDepend()
+ {
+ ( new CoreDependService() )->installDepend($this->addon);
+ }
+
/**
* 卸载插件
* @return true
@@ -227,10 +543,9 @@ class CoreAddonInstallService extends CoreAddonBaseService
public function uninstall()
{
//执行插件卸载方法
- $class = "addon\\".$this->addon."\\".Str::studly($this->addon);
- if(class_exists($class))
- {
- (new $class())->uninstall();
+ $class = "addon\\" . $this->addon . "\\" . Str::studly($this->addon);
+ if (class_exists($class)) {
+ ( new $class() )->uninstall();
}
$core_addon_service = new CoreAddonService();
if (empty($core_addon_service->getInfoByKey($this->addon))) throw new AddonException('NOT_UNINSTALL');
@@ -257,44 +572,40 @@ class CoreAddonInstallService extends CoreAddonBaseService
*/
public function uninstallDir()
{
- $from_admin_dir = $this->install_addon_path."admin". DIRECTORY_SEPARATOR;
- $from_web_dir = $this->install_addon_path."web". DIRECTORY_SEPARATOR;
- $from_wap_dir = $this->install_addon_path."uni-app". DIRECTORY_SEPARATOR;
- $from_resource_dir = $this->install_addon_path."resource". DIRECTORY_SEPARATOR;
+ $from_admin_dir = $this->install_addon_path . "admin" . DIRECTORY_SEPARATOR;
+ $from_web_dir = $this->install_addon_path . "web" . DIRECTORY_SEPARATOR;
+ $from_wap_dir = $this->install_addon_path . "uni-app" . DIRECTORY_SEPARATOR;
search_dir($from_admin_dir, $from_admin_dirs, $from_admin_dir);
search_dir($from_web_dir, $from_web_dirs, $from_web_dir);
search_dir($from_wap_dir, $from_wap_dirs, $from_wap_dir);
- search_dir($from_resource_dir, $from_resource_dirs, $from_resource_dir);
+
// 将要删除的根目录
- $to_admin_dir = $this->root_path ."admin". DIRECTORY_SEPARATOR;
- $to_web_dir = $this->root_path ."web". DIRECTORY_SEPARATOR;
- $to_wap_dir = $this->root_path . "uni-app". DIRECTORY_SEPARATOR;
- $to_resource_dir = public_path() . "addon". DIRECTORY_SEPARATOR. $this->addon. DIRECTORY_SEPARATOR;
+ $to_admin_dir = $this->root_path . "admin" . DIRECTORY_SEPARATOR;
+ $to_web_dir = $this->root_path . "web" . DIRECTORY_SEPARATOR;
+ $to_wap_dir = $this->root_path . "uni-app" . DIRECTORY_SEPARATOR;
+ $to_resource_dir = public_path() . "addon" . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
// 卸载admin管理端
- if(file_exists($from_admin_dir))
- {
+ if (file_exists($from_admin_dir)) {
dir_remove($to_admin_dir, $from_admin_dirs ?? []);
}
// 卸载pc端
- if(file_exists($from_web_dir))
- {
+ if (file_exists($from_web_dir)) {
dir_remove($to_web_dir, $from_web_dirs ?? []);
}
// 卸载手机端
- if(file_exists($from_wap_dir))
- {
+ if (file_exists($from_wap_dir)) {
dir_remove($to_wap_dir, $from_wap_dirs ?? []);
}
//删除资源文件
- if(file_exists($from_resource_dir))
- {
+ if (file_exists($to_resource_dir)) {
+ search_dir($to_resource_dir, $from_resource_dirs, $to_resource_dir);
dir_remove($to_resource_dir, $from_resource_dirs ?? []);
rmdir($to_resource_dir);
}
@@ -321,7 +632,7 @@ class CoreAddonInstallService extends CoreAddonBaseService
*/
public function installMenu()
{
- (new CoreMenuService)->refreshAddonMenu($this->addon);
+ ( new CoreMenuService )->refreshAddonMenu($this->addon);
Cache::tag(MenuService::$cache_tag_name)->clear();
$this->state = self::MENU_INSTALLED;
@@ -340,27 +651,19 @@ class CoreAddonInstallService extends CoreAddonBaseService
return true;
}
- /**
- * 添加uniapp pages
- */
- public function installUniappPages()
- {
- $addon_pages_array = $this->jsonFileToArray($this->getAddonConfigPath($this->addon). 'uni-app-pages.json');
- $pages_array = $this->jsonFileToArray($this->root_path . "uni-app". DIRECTORY_SEPARATOR. "pages.json");
- $pages_array['pages'] = array_merge($pages_array['pages'], $addon_pages_array['pages']);
- return $this->writeArrayToJsonFile($pages_array, $this->root_path . "uni-app". DIRECTORY_SEPARATOR. "pages.json");
- }
/**
* 安装手机端
* @return void
*/
public function installWap()
{
+
// 编译 diy-group 自定义组件代码文件
- $this->compileDiyComponentsCode($this->install_addon_path. "uni-app". DIRECTORY_SEPARATOR);
+ $this->compileDiyComponentsCode($this->root_path . "uni-app" . DIRECTORY_SEPARATOR);
// 编译 pages.json 页面路由代码文件
- $this->compileRoutesCode($this->install_addon_path . "uni-app". DIRECTORY_SEPARATOR);
+ $this->installPageCode($this->root_path . "uni-app" . DIRECTORY_SEPARATOR);
+
}
/**
@@ -370,10 +673,10 @@ class CoreAddonInstallService extends CoreAddonBaseService
public function uninstallWap()
{
// 编译 diy-group 自定义组件代码文件
- $this->compileDiyComponentsCode($this->root_path . "uni-app". DIRECTORY_SEPARATOR);
+ $this->compileDiyComponentsCode($this->root_path . "uni-app" . DIRECTORY_SEPARATOR);
// 编译 pages.json 页面路由代码文件
- $this->compileRoutesCode($this->root_path . "uni-app". DIRECTORY_SEPARATOR);
+ $this->uninstallPageCode($this->root_path . "uni-app" . DIRECTORY_SEPARATOR);
}
public function download()
@@ -386,4 +689,65 @@ class CoreAddonInstallService extends CoreAddonBaseService
}
+ /**
+ * 更新composer依赖
+ * @return void
+ */
+ public function updateComposer()
+ {
+ $result = Terminal::execute(root_path(), 'composer update');
+ if ($result !== true) {
+ throw new CommonException($result);
+ }
+ return $result;
+ }
+
+ /**
+ * 更新admin端依赖
+ * @return void
+ */
+ public function updateAdminDependencies()
+ {
+ $result = Terminal::execute(root_path() . '../admin/', 'npm install');
+ if ($result !== true) {
+ throw new CommonException($result);
+ }
+ return $result;
+ }
+
+ /**
+ * 更新手机端依赖
+ * @return void
+ */
+ public function updateWapDependencies()
+ {
+ $result = Terminal::execute(root_path() . '../uni-app/', 'npm install');
+ if ($result !== true) {
+ throw new CommonException($result);
+ }
+ return $result;
+ }
+
+ /**
+ * 更新web端依赖
+ * @return void
+ */
+ public function updateWebDependencies()
+ {
+ $result = Terminal::execute(root_path() . '../web/', 'npm install');
+ if ($result !== true) {
+ throw new CommonException($result);
+ }
+ return $result;
+ }
+
+ /**
+ * 安装完成 销毁插件实例
+ * @return void
+ */
+ public function installComplete()
+ {
+ return true;
+ }
+
}
\ No newline at end of file
diff --git a/niucloud/app/service/core/addon/CoreAddonService.php b/niucloud/app/service/core/addon/CoreAddonService.php
index 1de4c06d4..6fc3f9f9e 100644
--- a/niucloud/app/service/core/addon/CoreAddonService.php
+++ b/niucloud/app/service/core/addon/CoreAddonService.php
@@ -36,9 +36,13 @@ class CoreAddonService extends CoreAddonBaseService
$files = get_files_by_dir($this->addon_path);
$list = [];
if(!empty($files)){
- $install_addon_list = $this->model->append(['status_name'])->column('title, icon, key, desc, status, author, version, install_time, update_time', 'key');
+ $install_addon_list = $this->model->append(['status_name'])->column('title, icon, key, desc, status, author, version, install_time, update_time, cover', 'key');
foreach($files as $path) {
$data = $this->getAddonConfig($path);
+ $icon = addon_resource($data['key'], "icon.png");
+ $data['icon'] = is_file($icon) ? $icon : '';
+ $cover = addon_resource($data['key'], "cover.png");
+ $data['cover'] = is_file($cover) ? $cover : '';
$key = $data['key'];
$data['install_info'] = $install_addon_list[$key] ?? [];
$list[] = $data;
diff --git a/niucloud/app/service/core/addon/CoreDependService.php b/niucloud/app/service/core/addon/CoreDependService.php
index ffa3f31b5..49a03795d 100644
--- a/niucloud/app/service/core/addon/CoreDependService.php
+++ b/niucloud/app/service/core/addon/CoreDependService.php
@@ -110,7 +110,7 @@ class CoreDependService extends CoreAddonBaseService
*/
public function getAddonComposerContent(string $addon)
{
- $composer_path = $this->getAddonConfigPath($addon). 'composer.json';
+ $composer_path = $this->geAddonPackagePath($addon). 'composer.json';
return $this->jsonFileToArray($composer_path);
}
@@ -152,12 +152,12 @@ class CoreDependService extends CoreAddonBaseService
{
if($type == 'admin')
{
- $file_path = $this->getAddonConfigPath($addon).'admin-package.json';
+ $file_path = $this->geAddonPackagePath($addon).'admin-package.json';
}elseif($type == 'web')
{
- $file_path = $this->getAddonConfigPath($addon).'web-package.json';
+ $file_path = $this->geAddonPackagePath($addon).'web-package.json';
}else{
- $file_path = $this->getAddonConfigPath($addon).'uni-app-package.json';
+ $file_path = $this->geAddonPackagePath($addon).'uni-app-package.json';
}
return $this->jsonFileToArray($file_path);
}
diff --git a/niucloud/app/service/core/addon/WapTrait.php b/niucloud/app/service/core/addon/WapTrait.php
index cfd31e25f..e5252c3c9 100644
--- a/niucloud/app/service/core/addon/WapTrait.php
+++ b/niucloud/app/service/core/addon/WapTrait.php
@@ -31,18 +31,23 @@ trait WapTrait
public function compileDiyComponentsCode($compile_path)
{
$content = "\n";
- $content .= " \n";
- $content .= " \n";
+ $content .= " \n";
+ $content .= " \n";
- $root_path = $compile_path . str_replace('/', DIRECTORY_SEPARATOR,'/components/diy/extend'); // 扩展组件根目录
+ $root_path = $compile_path . str_replace('/', DIRECTORY_SEPARATOR, 'components/diy'); // 扩展组件根目录
$file_arr = getFileMap($root_path);
if (!empty($file_arr)) {
foreach ($file_arr as $ck => $cv) {
if (strpos($cv, 'index.vue') !== false) {
- $path = str_replace($root_path . DIRECTORY_SEPARATOR, '', $ck);
- $path = str_replace(DIRECTORY_SEPARATOR.'index.vue', '', $path);
+ $path = str_replace($root_path . '/', '', $ck);
+ $path = str_replace('/index.vue', '', $path);
+ if ($path == 'group') {
+ continue;
+ }
// 获取自定义组件 key 关键词
$name_arr = explode('-', $path);
@@ -51,178 +56,165 @@ trait WapTrait
$name_arr[ $k ] = strtoupper(substr($v, 0, 1)) . substr($v, 1);
}
$name = implode('', $name_arr);
- $file_name = 'diy-core-' . $path;
+ $file_name = 'diy-' . $path;
- $content .= " \n";
- $content .= " <$file_name :component=\"props.component\" :index=\"props.index\">{$file_name}>\n";
+ $content .= " \n";
+ $content .= " <$file_name :component=\"component\" :index=\"index\">$file_name>\n";
$content .= " \n";
}
}
}
+ $content .= " \n";
+ $content .= " \n";
+ $content .= " \n";
+ $content .= " \n";
+ $content .= " \n";
$content .= " \n";
$content .= "\n";
- $content .= "\n";
- $content .= "\n";
+ $content .= "\n";
+
+ $content .= "\n";
+
+ $res = file_put_contents($compile_path . str_replace('/', DIRECTORY_SEPARATOR, 'components/diy/group/index.vue'), $content);
return $res;
}
/**
* 编译 pages.json 页面路由代码文件
* @param $compile_path
- * @return bool|int
+ * @return bool|int|void
*/
- public function compileRoutesCode($compile_path)
+ public function installPageCode($compile_path)
{
+ $uniapp_pages = require $this->geAddonPackagePath($this->addon) . 'uni-app-pages.php';
- $package = [ 'pages' ]; // 主包
-
- // 特殊页面,隐藏导航栏
- $special_page = [
- 'pages/index/index',
- 'pages/member/index',
- 'pages/pay/result',
- 'pages/pay/browser'
- ];
-
- // 需要登录的页面
- $need_login_page = [
- 'pages/member/info',
- 'pages/setting/index',
- 'pages/member/personal',
- 'pages/member/point',
- 'pages/member/balance'
- ];
-
- $route_arr = []; // 路由集合
-
- foreach ($package as $k => $v) {
- $file_arr = getFileMap($compile_path . DIRECTORY_SEPARATOR . $v);
- if (!empty($file_arr)) {
- foreach ($file_arr as $ck => $cv) {
- if (strpos($cv, '.vue') !== false) {
- $route = str_replace($compile_path . DIRECTORY_SEPARATOR, '', $ck);
- $route = str_replace('.vue', '', $route);
- $route_arr[ $v ][] = $route;
- }
- }
- }
+ if (empty($uniapp_pages[ 'pages' ])) {
+ return;
}
- // 排序
- foreach ($package as $k => $v) {
- sort($route_arr[ $v ], SORT_STRING);
+ $addon = strtoupper($this->addon);
+
+ $content = @file_get_contents($compile_path . "pages.json");
+
+ $page_begin = $addon . '_PAGE_BEGIN';
+ $page_end = $addon . '_PAGE_END';
+
+ // 清除插件页面路由代码块
+ $pattern = "/\s+\/\/ {$page_begin}[\S\s]+\/\/ {$page_end}(\n,)?/";
+ $content = preg_replace($pattern, '', $content);
+
+ $uniapp_pages[ 'pages' ] = str_replace('PAGE_BEGIN', $page_begin, $uniapp_pages[ 'pages' ]);
+ $uniapp_pages[ 'pages' ] = str_replace('PAGE_END', $page_end, $uniapp_pages[ 'pages' ]);
+
+ $replacement = ",// {{PAGE}}\n";
+ $replacement .= $uniapp_pages[ 'pages' ] . "\n,";
+
+ $page_begin_matches_count = preg_match_all('/PAGE_BEGIN/', $content . $replacement, $page_begin_matches);
+
+ // 如果存在多个插件,要在插件前面加上逗号分割
+ if ($page_begin_matches_count > 0) {
+ $content = str_replace(',// {{PAGE}}', '// {{PAGE}}', $content);
}
- // 获取首页下标
- $index_page = array_search('pages/index/index', $route_arr[ 'pages' ]);
- $index_route = $route_arr[ 'pages' ][ $index_page ];
+ $content = str_replace('// {{PAGE}}', $replacement, $content);
- // 将首页设为启动页
- $route_arr[ 'pages' ][ $index_page ] = $route_arr[ 'pages' ][ 0 ];
- $route_arr[ 'pages' ][ 0 ] = $index_route;
-
- $content = "{\n";
-
- // 主包
- $content .= " \"pages\" : [ // pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages\n";
- foreach ($route_arr[ 'pages' ] as $k => $v) {
- $content .= " {\n";
- $content .= " \"path\": \"{$v}\",\n";
- $content .= " \"style\": {\n";
-
- if (in_array($v, $special_page)) {
- $content .= " \"navigationStyle\": \"custom\",\n";
- } else {
- $content .= " // #ifdef H5\n";
- $content .= " \"navigationStyle\": \"custom\",\n";
- $content .= " // #endif\n";
- }
-
- $content .= " \"navigationBarTitleText\": \"%" . str_replace('/', '.', $v) . "%\"\n";
-
- // 控制登录的页面
- if (in_array($v, $need_login_page)) {
- $content .= " },\n";
- $content .= " \"needLogin\": true\n";
- } else {
- $content .= " }\n";
- }
-
- // 最后一个不能加逗号,
- if (( count($route_arr[ 'pages' ]) - 1 ) == $k) {
- $content .= " }\n";
- } else {
- $content .= " },\n";
- }
-
- }
- $content .= " ],\n";
-
- // globalStyle
- $content .= " \"globalStyle\": {\n";
- $content .= " \"navigationBarTextStyle\": \"black\",\n";
- $content .= " \"navigationBarTitleText\": \"\",\n";
- $content .= " \"navigationBarBackgroundColor\": \"#ffffff\",\n";
- $content .= " \"backgroundColor\": \"#F8F8F8\",\n";
- $content .= " \"backgroundColorTop\": \"#F8F8F8\",\n";
- $content .= " \"backgroundColorBottom\": \"#F8F8F8\"\n";
- $content .= " },\n";
-
- // tabBar
- $content .= " \"tabBar\": {\n";
- $content .= " \"list\": [\n";
-
- $content .= " {\n";
- $content .= " \"pagePath\": \"pages/index/index\"\n";
- $content .= " },\n";
-
- $content .= " {\n";
- $content .= " \"pagePath\": \"pages/article/list\"\n";
- $content .= " },\n";
-
- $content .= " {\n";
- $content .= " \"pagePath\": \"pages/member/index\"\n";
- $content .= " }\n";
-
- $content .= " ]\n";
-
- $content .= " },\n";
-
- $content .= " \"uniIdRouter\": {},\n";
-
- // easycom
- $content .= " \"easycom\": {\n";
- $content .= " \"custom\": {\n";
- $content .= " \"^u-(.*)\": \"uview-plus/components/u-$1/u-$1.vue\",\n";
- $content .= " \"diy-system-(\W.*)\": \"@/components/diy/system/$1/index.vue\",\n";
- $content .= " \"diy-core-(\W.*)\": \"@/components/diy/core/$1/index.vue\",\n";
- $content .= " \"diy-(\\W.*)\": \"@/components/diy/$1/index.vue\"\n";
- $content .= " }\n";
- $content .= " }\n";
-
- $content .= "}\n";
+ // 清除最后一个逗号
+ $content = preg_replace('/PAGE_END\n,\s+\],/', "PAGE_END\n],", $content);
// 找到页面路由文件 pages.json,写入内容
- $res = file_put_contents($compile_path . DIRECTORY_SEPARATOR. 'pages.json', $content);
+ $res = file_put_contents($compile_path . "pages.json", $content);
return $res;
}
+ /**
+ * 编译 pages.json 页面路由代码文件
+ * @param $compile_path
+ * @return bool|int|void
+ */
+ public function uninstallPageCode($compile_path)
+ {
+ $uniapp_pages = require $this->geAddonPackagePath($this->addon) . 'uni-app-pages.php';
+
+ if (empty($uniapp_pages[ 'pages' ])) {
+ return;
+ }
+
+ $addon = strtoupper($this->addon);
+
+ $content = @file_get_contents($compile_path . "pages.json");
+
+ $page_begin = $addon . '_PAGE_BEGIN';
+ $page_end = $addon . '_PAGE_END';
+
+ $uniapp_pages[ 'pages' ] = str_replace('PAGE_BEGIN', $page_begin, $uniapp_pages[ 'pages' ]);
+ $uniapp_pages[ 'pages' ] = str_replace('PAGE_END', $page_end, $uniapp_pages[ 'pages' ]);
+
+ // 清除插件页面路由代码块
+ $pattern = "/\s+\/\/ {$page_begin}[\S\s]+\/\/ {$page_end}(\n,)?/";
+ $content = preg_replace($pattern, '', $content);
+
+ $page_begin_matches_count = preg_match_all('/PAGE_BEGIN/', $content, $page_begin_matches);
+
+ // 如果没有页面,清除最后一个逗号
+ if ($page_begin_matches_count == 0) {
+ $content = str_replace(',// {{PAGE}}', '// {{PAGE}}', $content);
+ }
+
+ // 清除最后一个逗号
+ $content = preg_replace('/PAGE_END\n,\s+\],/', "PAGE_END\n],", $content);
+
+ $res = file_put_contents($compile_path . "pages.json", $content);
+ return $res;
+
+ }
+
}
\ No newline at end of file
diff --git a/niucloud/app/service/core/aliapp/CoreAliappConfigService.php b/niucloud/app/service/core/aliapp/CoreAliappConfigService.php
index 2a94a21cc..cd1674cf2 100644
--- a/niucloud/app/service/core/aliapp/CoreAliappConfigService.php
+++ b/niucloud/app/service/core/aliapp/CoreAliappConfigService.php
@@ -11,7 +11,7 @@
namespace app\service\core\aliapp;
-use app\enum\sys\ConfigKeyEnum;
+use app\dict\sys\ConfigKeyDict;
use app\model\sys\SysConfig;
use app\service\core\sys\CoreConfigService;
use core\base\BaseCoreService;
@@ -30,7 +30,7 @@ class CoreAliappConfigService extends BaseCoreService
* @return array
*/
public function getAliappConfig(int $site_id){
- $info = (new CoreConfigService())->getConfig($site_id, ConfigKeyEnum::ALIAPP)['value'] ?? [];
+ $info = (new CoreConfigService())->getConfig($site_id, ConfigKeyDict::ALIAPP)['value'] ?? [];
$config = [
'name' => $info['name'] ?? '',
'app_id' => $info['app_id'] ?? '',
@@ -62,7 +62,7 @@ class CoreAliappConfigService extends BaseCoreService
'alipay_with_crt' => $data['alipay_with_crt'] ?? '',
'qrcode' => $data['qrcode'] ?? ''
];
- return (new CoreConfigService())->setConfig($site_id, ConfigKeyEnum::ALIAPP, $config);
+ return (new CoreConfigService())->setConfig($site_id, ConfigKeyDict::ALIAPP, $config);
}
diff --git a/niucloud/app/service/core/captcha/CoreCaptchaService.php b/niucloud/app/service/core/captcha/CoreCaptchaService.php
index 465779bd9..de41984f7 100644
--- a/niucloud/app/service/core/captcha/CoreCaptchaService.php
+++ b/niucloud/app/service/core/captcha/CoreCaptchaService.php
@@ -38,6 +38,7 @@ class CoreCaptchaService extends BaseCoreService
*/
public function create(int $site_id = 0, ?array $data = []){
$captcha_data = Captcha::create(null, true);
+
$captcha_key = md5(uniqid(null, true));
// 验证码10分钟有效
Cache::set($captcha_key, $captcha_data['code'], 600);
diff --git a/niucloud/app/service/core/channel/CoreH5Service.php b/niucloud/app/service/core/channel/CoreH5Service.php
index 3f4580564..5ab6f5d5f 100644
--- a/niucloud/app/service/core/channel/CoreH5Service.php
+++ b/niucloud/app/service/core/channel/CoreH5Service.php
@@ -11,7 +11,7 @@
namespace app\service\core\channel;
-use app\enum\sys\ConfigKeyEnum;
+use app\dict\sys\ConfigKeyDict;
use app\model\sys\SysAttachment;
use app\service\core\sys\CoreConfigService;
use core\base\BaseCoreService;
@@ -37,7 +37,7 @@ class CoreH5Service extends BaseCoreService
*/
public function getH5(int $site_id)
{
- $info = (new CoreConfigService())->getConfig($site_id, ConfigKeyEnum::H5)['value'] ?? [];
+ $info = (new CoreConfigService())->getConfig($site_id, ConfigKeyDict::H5)['value'] ?? [];
if(empty($info))
{
$info = [
diff --git a/niucloud/app/service/core/diy/CoreDiyConfigService.php b/niucloud/app/service/core/diy/CoreDiyConfigService.php
index fc7c9cb96..65bdc6244 100644
--- a/niucloud/app/service/core/diy/CoreDiyConfigService.php
+++ b/niucloud/app/service/core/diy/CoreDiyConfigService.php
@@ -11,7 +11,7 @@
namespace app\service\core\diy;
-use app\enum\sys\ConfigKeyEnum;
+use app\dict\sys\ConfigKeyDict;
use app\model\sys\SysConfig;
use app\service\core\sys\CoreConfigService;
use core\base\BaseCoreService;
@@ -31,7 +31,7 @@ class CoreDiyConfigService extends BaseCoreService
*/
public function getBottomConfig(int $site_id)
{
- $info = ( new CoreConfigService() )->getConfig($site_id, ConfigKeyEnum::DIY_BOTTOM)[ 'value' ] ?? [];
+ $info = ( new CoreConfigService() )->getConfig($site_id, ConfigKeyDict::DIY_BOTTOM)[ 'value' ] ?? [];
if (empty($info)) {
$info = [
@@ -87,7 +87,7 @@ class CoreDiyConfigService extends BaseCoreService
*/
public function setBottomConfig(int $site_id, array $data)
{
- return ( new CoreConfigService() )->setConfig($site_id, ConfigKeyEnum::DIY_BOTTOM, $data);
+ return ( new CoreConfigService() )->setConfig($site_id, ConfigKeyDict::DIY_BOTTOM, $data);
}
}
\ No newline at end of file
diff --git a/niucloud/app/service/core/member/CoreMemberAccountService.php b/niucloud/app/service/core/member/CoreMemberAccountService.php
index 1b4c5333d..3dccdc36d 100644
--- a/niucloud/app/service/core/member/CoreMemberAccountService.php
+++ b/niucloud/app/service/core/member/CoreMemberAccountService.php
@@ -46,6 +46,7 @@ class CoreMemberAccountService extends BaseCoreService
'member_id' => $member_id,
'account_type' => $account_type,
'account_data' => $account_data,
+ "account_sum" => $account_new_data,
'from_type' => $from_type,
'create_time' => time(),
'nickname' => $member_info[ 'nickname' ],
diff --git a/niucloud/app/service/core/member/CoreMemberCashOutService.php b/niucloud/app/service/core/member/CoreMemberCashOutService.php
index e8ae698fd..10c5a1b00 100644
--- a/niucloud/app/service/core/member/CoreMemberCashOutService.php
+++ b/niucloud/app/service/core/member/CoreMemberCashOutService.php
@@ -11,15 +11,16 @@
namespace app\service\core\member;
-use app\enum\cash_out\CashOutTypeEnum;
-use app\enum\member\MemberAccountEnum;
-use app\enum\member\MemberCashOutEnum;
-use app\enum\pay\PayEnum;
-use app\enum\pay\TransferEnum;
+use app\dict\cash_out\CashOutTypeDict;
+use app\dict\member\MemberAccountTypeDict;
+use app\dict\member\MemberCashOutDict;
+use app\dict\pay\PayDict;
+use app\dict\pay\TransferDict;
use app\model\member\MemberCashOut;
use app\service\core\pay\CoreTransferService;
use core\base\BaseCoreService;
use core\exception\CommonException;
+use think\facade\Cache;
use think\facade\Db;
/**
@@ -58,7 +59,7 @@ class CoreMemberCashOutService extends BaseCoreService
$cash_out = $this->find($site_id, $id);
if($cash_out->isEmpty()) throw new CommonException('CASHOUT_LOG_NOT_EXIST');
- if($cash_out['status'] != MemberCashOutEnum::WAIT_AUDIT) throw new CommonException('CASHOUT_STATUS_NOT_IN_WAIT_AUDIT');
+ if($cash_out['status'] != MemberCashOutDict::WAIT_AUDIT) throw new CommonException('CASHOUT_STATUS_NOT_IN_WAIT_AUDIT');
switch($action){
case 'agree'://同意
$this->agree($site_id, $cash_out, $data);
@@ -79,7 +80,7 @@ class CoreMemberCashOutService extends BaseCoreService
public function agree(int $site_id, MemberCashOut $cash_out, array $data = []){
$cash_out->save([
'audit_time' => time(),
- 'status' => MemberCashOutEnum::WAIT_TRANSFER
+ 'status' => MemberCashOutDict::WAIT_TRANSFER
]);
$config = (new CoreMemberConfigService())->getCashOutConfig($site_id);
if($config['is_auto_transfer']){
@@ -101,7 +102,7 @@ class CoreMemberCashOutService extends BaseCoreService
public function refuse(int $site_id, MemberCashOut $cash_out, array $data){
$cash_out->save([
'audit_time' => time(),
- 'status' => MemberCashOutEnum::REFUSE,
+ 'status' => MemberCashOutDict::REFUSE,
'refuse_reason' => $data['refuse_reason']
]);
$this->returnMember($site_id, $cash_out);
@@ -120,10 +121,10 @@ class CoreMemberCashOutService extends BaseCoreService
$cash_out = $this->find($site_id, $id);
if($cash_out->isEmpty()) throw new CommonException('RECHARGE_LOG_NOT_EXIST');
- if($cash_out['status'] != MemberCashOutEnum::WAIT_TRANSFER) throw new CommonException('CASHOUT_STATUS_NOT_IN_WAIT_TRANSFER');
+ if($cash_out['status'] != MemberCashOutDict::WAIT_TRANSFER) throw new CommonException('CASHOUT_STATUS_NOT_IN_WAIT_TRANSFER');
$transfer_no = $cash_out['transfer_no'];
if(!$transfer_no){
- $transfer_no = (new CoreTransferService())->create($site_id, PayEnum::MEMBER, $cash_out['member_id'], $cash_out['money'], CashOutTypeEnum::MEMBER_CASH_OUT, get_lang('MEMBER_CASHOUT_TRANSFER'));
+ $transfer_no = (new CoreTransferService())->create($site_id, PayDict::MEMBER, $cash_out['member_id'], $cash_out['money'], CashOutTypeDict::MEMBER_CASH_OUT, get_lang('MEMBER_CASHOUT_TRANSFER'));
$cash_out->save(
[
'transfer_no' => $transfer_no
@@ -131,19 +132,21 @@ class CoreMemberCashOutService extends BaseCoreService
);
}
- if($transfer_type != TransferEnum::OFFLINE){
+ if($transfer_type != TransferDict::OFFLINE){
$data['transfer_type'] = $cash_out['transfer_type'];
$data['transfer_realname'] = $cash_out['transfer_realname'];
$data['transfer_mobile'] = $cash_out['transfer_mobile'];
$data['transfer_bank'] = $cash_out['transfer_bank'];
$data['transfer_account'] = $cash_out['transfer_account'];
- if($transfer_type == TransferEnum::WECHAT){
+ $transfer_type = $cash_out['transfer_type'];
+ if($transfer_type == TransferDict::WECHAT){
$member = (new CoreMemberService())->find($site_id, $cash_out['member_id']);
$data['openid'] = $member['wx_openid'];
}
}else{
$transfer_type = $cash_out['transfer_type'];
}
+
$result = (new CoreTransferService())->transfer($site_id, $transfer_no, $transfer_type, $data);
return true;
@@ -165,9 +168,9 @@ class CoreMemberCashOutService extends BaseCoreService
)->findOrEmpty();
if($cash_out->isEmpty()) throw new CommonException('RECHARGE_LOG_NOT_EXIST');
- if($cash_out['status'] != MemberCashOutEnum::WAIT_TRANSFER) throw new CommonException('CASHOUT_STATUS_NOT_IN_WAIT_TRANSFER');
+ if($cash_out['status'] != MemberCashOutDict::WAIT_TRANSFER) throw new CommonException('CASHOUT_STATUS_NOT_IN_WAIT_TRANSFER');
$cash_out->save([
- 'status' => MemberCashOutEnum::TRANSFERED,
+ 'status' => MemberCashOutDict::TRANSFERED,
'transfer_time' => time()
]);
return true;
@@ -195,10 +198,10 @@ class CoreMemberCashOutService extends BaseCoreService
if($apply_money < $min) throw new CommonException('CASHOUT_MONEY_TOO_LITTLE');
// $apply_money, $transfer_type, $transfer_realname, $transfer_mobile, $transfer_bank, $transfer_account
$money = $apply_money - $service_money;
- $account_type = $data['account_type'] ?? MemberAccountEnum::MONEY;
+ $account_type = $data['account_type'] ?? MemberAccountTypeDict::MONEY;
$cash_out_account = [];
- if ($transfer_type != TransferEnum::WECHAT) {
+ if ($transfer_type != TransferDict::WECHAT) {
$cash_out_account = (new CoreMemberCashOutAccountService())->getInfo($data['account_id'], $site_id, $member_id);
if (empty($cash_out_account)) throw new CommonException('CASH_OUT_ACCOUNT_NOT_EXIST');
}
@@ -208,7 +211,8 @@ class CoreMemberCashOutService extends BaseCoreService
$data = array(
'member_id' => $member_id,
'site_id' => $site_id,
- 'status' => MemberCashOutEnum::WAIT_AUDIT,
+ 'cash_out_no' => $this->createCashOutNo($site_id),
+ 'status' => MemberCashOutDict::WAIT_AUDIT,
'account_type' => $account_type,
'apply_money' => $apply_money,
'service_money' => $service_money,
@@ -249,7 +253,7 @@ class CoreMemberCashOutService extends BaseCoreService
*/
public function getTransferType($site_id){
$config = (new CoreMemberConfigService())->getCashOutConfig($site_id);
- return TransferEnum::getTransferType($config['transfer_type'], false);
+ return TransferDict::getTransferType($config['transfer_type'], false);
}
@@ -274,4 +278,23 @@ class CoreMemberCashOutService extends BaseCoreService
);
return true;
}
+ /**
+ * 创建订单编号
+ * @param int $site_id
+ * @return string
+ */
+ public function createCashOutNo(int $site_id)
+ {
+ $time_str = date('YmdHi');
+ $max_no = Cache::get("cash_out_no_" . $site_id . "_" . $time_str);
+
+ if (!isset($max_no) || empty($max_no)) {
+ $max_no = 1;
+ } else {
+ $max_no = $max_no + 1;
+ }
+ $cash_out_no = $time_str . $site_id . sprintf('%03d', $max_no);
+ Cache::set("cash_out_no_" . $site_id . "_" . $time_str, $max_no);
+ return $cash_out_no;
+ }
}
\ No newline at end of file
diff --git a/niucloud/app/service/core/member/CoreMemberConfigService.php b/niucloud/app/service/core/member/CoreMemberConfigService.php
index 1e471a044..2624808ed 100644
--- a/niucloud/app/service/core/member/CoreMemberConfigService.php
+++ b/niucloud/app/service/core/member/CoreMemberConfigService.php
@@ -11,8 +11,8 @@
namespace app\service\core\member;
-use app\enum\pay\TransferEnum;
-use app\enum\sys\ConfigKeyEnum;
+use app\dict\pay\TransferDict;
+use app\dict\sys\ConfigKeyDict;
use app\model\sys\SysConfig;
use app\service\core\sys\CoreConfigService;
use core\base\BaseCoreService;
@@ -37,6 +37,7 @@ class CoreMemberConfigService extends BaseCoreService
'is_mobile' => $info['is_mobile'] ?? 0,//是否手机验证码登录
'is_auth_register' => $info['is_auth_register'] ?? 1,//是否第三方自动注册
'is_bind_mobile' => $info['is_bind_mobile'] ?? 0,//是否强制绑定手机
+ 'agreement_show' => $info['agreement_show'] ?? 0 // 政策协议是否展示
];
return $config;
}
@@ -53,11 +54,39 @@ class CoreMemberConfigService extends BaseCoreService
'is_mobile' => $data['is_mobile'] ?? 0,//是否手机验证码登录
'is_auth_register' => $data['is_auth_register'] ?? 1,//是否第三方自动注册
'is_bind_mobile' => $data['is_bind_mobile'] ?? 0,//是否强制绑定手机
+ 'agreement_show' => $data['agreement_show'] ?? 0 // 政策协议是否展示
];
(new CoreConfigService())->setConfig($site_id, 'LOGIN', $config);
return true;
}
+ /**
+ * 获取会员设置
+ * @param $site_id
+ */
+ public function getMemberConfig(int $site_id){
+ $info = (new CoreConfigService())->getConfig($site_id, 'MEMBER')['value'] ?? [];
+ $config = [
+ 'prefix' => $info['prefix'] ?? '',// 会员编码前缀
+ 'length' => $info['length'] ?? 4, // 会员编码长度
+ ];
+ return $config;
+ }
+
+ /**
+ * 会员设置
+ * @param $site_id
+ * @param $data
+ * @return SysConfig|bool|Model
+ */
+ public function setMemberConfig(int $site_id, array $data){
+ $config = [
+ 'prefix' => $data['prefix'] ?? '',// 会员编码前缀
+ 'length' => $data['length'] ?? 4,// 会员编码长度
+ ];
+ (new CoreConfigService())->setConfig($site_id, 'MEMBER', $config);
+ return true;
+ }
/**
@@ -66,7 +95,7 @@ class CoreMemberConfigService extends BaseCoreService
* @return array
*/
public function getCashOutConfig(int $site_id){
- $config = (new CoreConfigService())->getConfig($site_id, ConfigKeyEnum::MEMBER_CASH_OUT)['value'] ?? [];
+ $config = (new CoreConfigService())->getConfig($site_id, ConfigKeyDict::MEMBER_CASH_OUT)['value'] ?? [];
return [
'is_open' => $config['is_open'] ?? '0',//是否启用提现
'transfer_type' => $config['transfer_type'] ?? [],//提现方式
@@ -86,7 +115,7 @@ class CoreMemberConfigService extends BaseCoreService
*/
public function setCashOutConfig(int $site_id, array $data){
//校验转账方式是否合法
- $transfer_type_list = array_keys(TransferEnum::getTransferType());
+ $transfer_type_list = array_keys(TransferDict::getTransferType());
if(array_diff(array_diff($data['transfer_type'], $transfer_type_list), $transfer_type_list)) throw new CommonException('TRANSFER_TYPE_NOT_EXIST');
$config = [
'is_open' => $data['is_open'],//是否启用提现
@@ -97,7 +126,7 @@ class CoreMemberConfigService extends BaseCoreService
// 'max' => $data['max'] ?? '',//最高提现金额
'rate' => $data['rate'] ?? '',//手续费比率
];
- (new CoreConfigService())->setConfig($site_id, ConfigKeyEnum::MEMBER_CASH_OUT, $config);
+ (new CoreConfigService())->setConfig($site_id, ConfigKeyDict::MEMBER_CASH_OUT, $config);
return true;
}
diff --git a/niucloud/app/service/core/member/CoreMemberLabelService.php b/niucloud/app/service/core/member/CoreMemberLabelService.php
index 8303e4ccd..e730f2615 100644
--- a/niucloud/app/service/core/member/CoreMemberLabelService.php
+++ b/niucloud/app/service/core/member/CoreMemberLabelService.php
@@ -41,9 +41,16 @@ class CoreMemberLabelService extends BaseCoreService
public function getMemberLabelListByLabelIds(int $site_id, array $label_ids){
sort($label_ids);
$cache_name = __METHOD__ . md5(implode("_", $label_ids));
- return Cache::tag(self::$cache_tag_name.$site_id)->remember($cache_name, function () use ($site_id, $label_ids) {
- return array_keys_search($this->getAll($site_id), $label_ids, 'label_id');
- });
+ return cache_remember(
+ $cache_name,
+ function () use ($site_id, $label_ids) {
+ return array_keys_search($this->getAll($site_id), $label_ids, 'label_id');
+ },
+ self::$cache_tag_name.$site_id
+ );
+// return Cache::tag(self::$cache_tag_name.$site_id)->remember($cache_name, function () use ($site_id, $label_ids) {
+// return array_keys_search($this->getAll($site_id), $label_ids, 'label_id');
+// });
}
/**
@@ -56,11 +63,20 @@ class CoreMemberLabelService extends BaseCoreService
*/
public function getAll(int $site_id){
$cache_name = __METHOD__ . $site_id;
- return Cache::tag(self::$cache_tag_name.$site_id)->remember($cache_name, function () use ($site_id) {
- $field = 'label_id, label_name';
- return $this->model->where([['site_id', '=', $site_id]])->field($field)->select()->toArray();
+ return cache_remember(
+ $cache_name,
+ function () use ($site_id) {
+ $field = 'label_id, label_name';
+ return $this->model->where([['site_id', '=', $site_id]])->field($field)->select()->toArray();
- });
+ },
+ self::$cache_tag_name.$site_id
+ );
+// return Cache::tag(self::$cache_tag_name.$site_id)->remember($cache_name, function () use ($site_id) {
+// $field = 'label_id, label_name';
+// return $this->model->where([['site_id', '=', $site_id]])->field($field)->select()->toArray();
+//
+// });
}
/**
diff --git a/niucloud/app/service/core/member/CoreMemberService.php b/niucloud/app/service/core/member/CoreMemberService.php
index 61f46986c..2a81210ef 100644
--- a/niucloud/app/service/core/member/CoreMemberService.php
+++ b/niucloud/app/service/core/member/CoreMemberService.php
@@ -12,6 +12,7 @@
namespace app\service\core\member;
use app\model\member\Member;
+use app\model\site\Site;
use core\base\BaseCoreService;
use think\db\exception\DbException;
@@ -101,4 +102,51 @@ class CoreMemberService extends BaseCoreService
}
return $this->model->where($condition)->count();
}
+
+ /**
+ * 生成会员编码
+ * @param int $site_id
+ * @return void
+ */
+ public static function createMemberNo(int $site_id) {
+ $site = (new Site())->where([ ['site_id', '=', $site_id] ])->find();
+ $config = (new CoreMemberConfigService())->getMemberConfig($site_id);
+
+ $no = $site->member_no + 1;
+ $member_no = $config['prefix'] . ( strlen($config['prefix']) > $config['length'] ? $no : str_pad($no, ($config['length'] - strlen($config['prefix'])), "0", STR_PAD_LEFT) );
+
+ $member = (new Member())->where([ ['site_id', '=', $site_id], ['member_no', '=', $member_no] ])->findOrEmpty();
+
+ if ($member->isEmpty()) {
+ return $member_no;
+ } else {
+ // 变更站点最大会员码值
+ $site->save(['member_no' => $no ]);
+ return self::createMemberNo($site_id);
+ }
+ }
+
+ /**
+ * 设置会员会员码
+ * @param int $site_id
+ * @return void
+ */
+ public static function setMemberNo(int $site_id, int $member_id) {
+ $site = (new Site())->where([ ['site_id', '=', $site_id] ])->find();
+ $config = (new CoreMemberConfigService())->getMemberConfig($site_id);
+
+ $no = $site->member_no + 1;
+ $member_no = $config['prefix'] . ( strlen($config['prefix']) > $config['length'] ? $no : str_pad($no, ($config['length'] - strlen($config['prefix'])), "0", STR_PAD_LEFT) );
+
+ $member = (new Member())->where([ ['site_id', '=', $site_id], ['member_no', '=', $member_no] ])->findOrEmpty();
+
+ // 变更站点最大会员码值
+ $site->save(['member_no' => $no ]);
+
+ if ($member->isEmpty()) {
+ (new Member())->update([ 'member_no' => $member_no ], [ ['site_id', '=', $site_id], ['member_id', '=', $member_id] ]);
+ } else {
+ self::setMemberNo($site_id, $member_id);
+ }
+ }
}
\ No newline at end of file
diff --git a/niucloud/app/service/core/menu/CoreMenuService.php b/niucloud/app/service/core/menu/CoreMenuService.php
index bdbf30c88..0ecec25d9 100644
--- a/niucloud/app/service/core/menu/CoreMenuService.php
+++ b/niucloud/app/service/core/menu/CoreMenuService.php
@@ -11,11 +11,11 @@
namespace app\service\core\menu;
-use app\enum\sys\AppTypeEnum;
+use app\dict\sys\AppTypeDict;
use app\model\addon\Addon;
use app\model\sys\SysMenu;
use app\service\admin\sys\MenuService;
-use core\addon\AddonLoader;
+use core\dict\DictLoader;
use core\base\BaseCoreService;
use think\facade\Cache;
@@ -61,7 +61,7 @@ class CoreMenuService extends BaseCoreService
* @param string $parent_key
* @param string $app_type
*/
- private function menuTreeToList(array $tree, string $parent_key = '', string $app_type = AppTypeEnum::ADMIN, string $addon = '', array &$menu_list= [])
+ private function menuTreeToList(array $tree, string $parent_key = '', string $app_type = AppTypeDict::ADMIN, string $addon = '', array &$menu_list= [])
{
if (is_array($tree)) {
foreach ($tree as $key => $value) {
@@ -79,15 +79,14 @@ class CoreMenuService extends BaseCoreService
'methods' => $value['methods'] ?? '',
'sort' => $value['sort'] ?? '',
'status' => 1,
- 'is_show' => $value['is_show'] ?? 1,
- 'en_menu_name' => $value['en_menu_name'] ?? '',
+ 'is_show' => $value['is_show'] ?? 1
];
$refer = $value;
if (isset($refer[ 'children' ])) {
unset($refer[ 'children' ]);
array_push($menu_list, $item);
$p_key = $refer[ 'menu_key' ];
- $this->menuTreeToList($value[ 'children' ],$p_key, $app_type, $menu_list);
+ $this->menuTreeToList($value[ 'children' ],$p_key, $app_type,$addon, $menu_list);
} else {
array_push($menu_list, $item);
}
@@ -101,6 +100,7 @@ class CoreMenuService extends BaseCoreService
* @return true
*/
public function deleteByAddon(string $addon){
+
$this->model->where([['addon', '=', $addon]])->delete();
return true;
}
@@ -112,14 +112,32 @@ class CoreMenuService extends BaseCoreService
*/
public function refreshAddonMenu($addon)
{
- $addon_loader = new AddonLoader("Menu");
+ $addon_loader = new DictLoader("Menu");
+
+ //获取插件删除替换的菜单key
$addon_admin_tree = $addon_loader->load(["addon" => $addon, "app_type" => "admin"]);
+
+ if(isset($addon_admin_tree["delete"]))
+ {
+ //软删除数据
+ $this->model->where([["menu_key", "in", $addon_admin_tree["delete"]], ["app_type", "=", "admin"]])->useSoftDelete('delete_time',time())->delete();
+ unset($addon_admin_tree["delete"]);
+ }
$menu = [];
if(!empty($addon_admin_tree))
{
$menu = $this->loadMenu($addon_admin_tree, "admin", $addon);
}
+
$addon_site_tree = $addon_loader->load(["addon" => $addon, "app_type" => "site"]);
+
+ if(isset($addon_site_tree["delete"]))
+ {
+ //软删除数据
+ $this->model->where([["menu_key", "in", $addon_site_tree["delete"]], ["app_type", "=", "site"]])->useSoftDelete('delete_time',time())->delete();
+ unset($addon_site_tree["delete"]);
+ }
+
if(!empty($addon_site_tree))
{
$site_menu = $this->loadMenu($addon_site_tree, "site", $addon);
@@ -131,16 +149,47 @@ class CoreMenuService extends BaseCoreService
}
+ /**
+ * 插件卸载
+ * @param $addon
+ * @return bool
+ */
+ public function uninstallAddonMenu($addon)
+ {
+ $addon_loader = new DictLoader("Menu");
+
+ //获取插件删除替换的菜单key
+ $addon_admin_tree = $addon_loader->load(["addon" => $addon, "app_type" => "admin"]);
+
+ if(isset($addon_admin_tree["delete"]))
+ {
+ //软删除数据
+ $this->model->where([["menu_key", "in", $addon_admin_tree["delete"]], ["app_type", "=", "admin"]])->update(["delete_time" => 0]);
+ }
+
+ $addon_site_tree = $addon_loader->load(["addon" => $addon, "app_type" => "site"]);
+
+ if(isset($addon_site_tree["delete"]))
+ {
+ //软删除数据
+ $this->model->where([["menu_key", "in", $addon_site_tree["delete"]], ["app_type", "=", "site"]])->update(["delete_time" => 0]);
+ }
+ $this->deleteByAddon($addon);
+ // 清除缓存
+ Cache::tag(MenuService::$cache_tag_name)->clear();
+ return true;
+ }
+
/**
* 刷新所有插件菜单
*/
public function refreshAllAddonMenu()
{
- $addons = (new Addon())->field("title")->select()->toArray();
+ $addons = (new Addon())->field("key")->select()->toArray();
foreach ($addons as $k => $v)
{
- $this->refreshAddonMenu($v["title"]);
+ $this->refreshAddonMenu($v["key"]);
}
return true;
}
diff --git a/niucloud/app/service/core/notice/CoreNoticeService.php b/niucloud/app/service/core/notice/CoreNoticeService.php
index a45ac7cea..60e833c12 100644
--- a/niucloud/app/service/core/notice/CoreNoticeService.php
+++ b/niucloud/app/service/core/notice/CoreNoticeService.php
@@ -12,7 +12,7 @@
namespace app\service\core\notice;
-use app\enum\notice\NoticeEnum;
+use app\dict\notice\NoticeDict;
use app\job\notice\Message;
use app\model\sys\SysNotice;
use core\base\BaseCoreService;
@@ -47,7 +47,7 @@ class CoreNoticeService extends BaseCoreService
$list_key = array_column($list, 'key');
$list = array_combine($list_key, $list);
}
- $notice = NoticeEnum::getNotice();
+ $notice = NoticeDict::getNotice();
foreach ($notice as $k => $v)
{
if(!empty($keys) && !in_array($v['key'], $keys)){
@@ -82,11 +82,11 @@ class CoreNoticeService extends BaseCoreService
*/
public function getInfo(int $site_id, string $key)
{
- if(!array_key_exists($key, NoticeEnum::getNotice())) throw new NoticeException('NOTICE_TYPE_NOT_EXIST');
+ if(!array_key_exists($key, NoticeDict::getNotice())) throw new NoticeException('NOTICE_TYPE_NOT_EXIST');
$info = $this->model->where([['site_id', '=', $site_id], ['key', '=', $key]])->findOrEmpty()->toArray();
if(!empty($info))
{
- $notice = array_merge(NoticeEnum::getNotice($key), $info);
+ $notice = array_merge(NoticeDict::getNotice($key), $info);
}else{
$data = [
'site_id' => $site_id,
@@ -100,7 +100,7 @@ class CoreNoticeService extends BaseCoreService
'wechat_first' => '',
'wechat_remark' => ''
];
- $notice = array_merge(NoticeEnum::getNotice($key), $data);
+ $notice = array_merge(NoticeDict::getNotice($key), $data);
}
return $notice;
@@ -122,14 +122,14 @@ class CoreNoticeService extends BaseCoreService
{
$notice = $this->find($site_id, $key);
if($notice->isEmpty()){
- $notice_template = NoticeEnum::getNotice($key);
- $wechat_json = $notice_template['wechat_json'] ?? [];
+ $notice_template = NoticeDict::getNotice($key);
+ $wechat = $notice_template['wechat'] ?? [];
$this->model->create(array_merge([
'site_id' => $site_id,
'key' => $key,
'sms_content' => $notice_template['sms_default_content'] ?? '',
- 'wechat_first' => $data['wechat_first'] ?? ($wechat_json['first'] ?? ''),
- 'wechat_remark' => $data['wechat_remark'] ?? ($wechat_json['remark'] ?? ''),
+ 'wechat_first' => $data['wechat_first'] ?? ($wechat['first'] ?? ''),
+ 'wechat_remark' => $data['wechat_remark'] ?? ($wechat['remark'] ?? ''),
], $data));
}else{
$notice->save($data);
diff --git a/niucloud/app/service/core/notice/CoreSmsService.php b/niucloud/app/service/core/notice/CoreSmsService.php
index 495bffb38..0a21726f4 100644
--- a/niucloud/app/service/core/notice/CoreSmsService.php
+++ b/niucloud/app/service/core/notice/CoreSmsService.php
@@ -11,7 +11,7 @@
namespace app\service\core\notice;
-use app\enum\sys\SmsEnum;
+use app\dict\sys\SmsDict;
use app\service\core\sys\CoreConfigService;
use core\base\BaseCoreService;
use core\sms\SmsDriver;
@@ -45,7 +45,7 @@ class CoreSmsService extends BaseCoreService
'content' => $content,
'template_id' => $template_id,
'params' => $params,
- 'status' => SmsEnum::SENDING
+ 'status' => SmsDict::SENDING
]);
$sms_driver = new SmsLoader($sms_type, $config);
@@ -56,14 +56,14 @@ class CoreSmsService extends BaseCoreService
//失败修改短信记录
$error = $sms_driver->getError();
$core_notice_sms_log_service->edit($site_id, $log_id, [
- 'status' => SmsEnum::FAIL,
+ 'status' => SmsDict::FAIL,
'result' => $sms_driver->getError()
]);
throw new NoticeException($error);
}
//成功修改短信记录
$core_notice_sms_log_service->edit($site_id, $log_id, [
- 'status' => SmsEnum::SUCCESS,
+ 'status' => SmsDict::SUCCESS,
'result' => $result
]);
return true;
@@ -71,7 +71,7 @@ class CoreSmsService extends BaseCoreService
public function makeUp($params, $content, $sms_type){
- if($sms_type != SmsEnum::TENCENTSMS) return $params;
+ if($sms_type != SmsDict::TENCENTSMS) return $params;
if(empty($params)) return [];
$temp_array = [];
foreach($params as $k => $v){
diff --git a/niucloud/app/service/core/notice/NoticeService.php b/niucloud/app/service/core/notice/NoticeService.php
index 37bf9901c..d78f88bff 100644
--- a/niucloud/app/service/core/notice/NoticeService.php
+++ b/niucloud/app/service/core/notice/NoticeService.php
@@ -12,7 +12,7 @@
namespace app\service\core\notice;
-use app\enum\pay\PayEnum;
+use app\dict\pay\PayDict;
use app\job\notice\Message;
use app\job\notice\Notice;
use app\model\pay\PayChannel;
diff --git a/niucloud/app/service/core/order/CoreOrderCreateService.php b/niucloud/app/service/core/order/CoreOrderCreateService.php
index 3301a17ea..59a84b568 100644
--- a/niucloud/app/service/core/order/CoreOrderCreateService.php
+++ b/niucloud/app/service/core/order/CoreOrderCreateService.php
@@ -11,7 +11,7 @@
namespace app\service\core\order;
-use app\enum\pay\PayEnum;
+use app\dict\pay\PayDict;
use app\model\order\Order;
use app\model\order\OrderItem;
use app\service\core\pay\CorePayService;
@@ -40,7 +40,7 @@ class CoreOrderCreateService extends BaseCoreService
Db::startTrans();
try{
//添加订单支付表
- $order_data['out_trade_no'] = (new CorePayService())->create($site_id, PayEnum::MEMBER, $order_data['member_id'], $order_data['order_money'], $order_data['order_type'], get_lang("enum_order.trade_type_recharge"));
+ $order_data['out_trade_no'] = (new CorePayService())->create($site_id, PayDict::MEMBER, $order_data['member_id'], $order_data['order_money'], $order_data['order_type'], get_lang("dict_order.trade_type_recharge"));
//添加订单表
$order_data['order_no'] = $this->createOrderNo($site_id);
$create_order = (new Order())->create($order_data);
@@ -55,7 +55,7 @@ class CoreOrderCreateService extends BaseCoreService
//订单创建执行事件
event("orderCreateAfter");
if($order_data['order_money'] == 0){
- (new CorePayService())->finish($site_id, $order_data['out_trade_no'], PayEnum::BALANCEPAY);
+ (new CorePayService())->finish($site_id, $order_data['out_trade_no'], PayDict::BALANCEPAY);
}
Db::commit();
//返回订单信息
diff --git a/niucloud/app/service/core/order/CoreOrderRefundService.php b/niucloud/app/service/core/order/CoreOrderRefundService.php
index d8be9e490..6081ab6c9 100644
--- a/niucloud/app/service/core/order/CoreOrderRefundService.php
+++ b/niucloud/app/service/core/order/CoreOrderRefundService.php
@@ -11,8 +11,8 @@
namespace app\service\core\order;
-use app\enum\order\OrderRefundEnum;
-use app\enum\pay\PayEnum;
+use app\dict\order\OrderRefundDict;
+use app\dict\pay\PayDict;
use app\model\order\Order;
use app\model\order\OrderItem;
use app\model\order\OrderItemRefund;
diff --git a/niucloud/app/service/core/order/CoreOrderService.php b/niucloud/app/service/core/order/CoreOrderService.php
index d4feb639a..6d01b1c65 100644
--- a/niucloud/app/service/core/order/CoreOrderService.php
+++ b/niucloud/app/service/core/order/CoreOrderService.php
@@ -11,8 +11,8 @@
namespace app\service\core\order;
-use app\enum\order\OrderRefundEnum;
-use app\enum\pay\PayEnum;
+use app\dict\order\OrderRefundDict;
+use app\dict\pay\PayDict;
use app\model\order\Order;
use app\model\order\OrderItem;
use app\model\order\OrderItemRefund;
diff --git a/niucloud/app/service/core/order/recharge/CoreRechargeOrderService.php b/niucloud/app/service/core/order/recharge/CoreRechargeOrderService.php
index 1926949bc..e1b2cf3a8 100644
--- a/niucloud/app/service/core/order/recharge/CoreRechargeOrderService.php
+++ b/niucloud/app/service/core/order/recharge/CoreRechargeOrderService.php
@@ -11,7 +11,7 @@
namespace app\service\core\order\recharge;
-use app\enum\order\RechargeOrderEnum;
+use app\dict\order\RechargeOrderDict;
use app\model\order\Order;
use app\service\core\member\CoreMemberAccountService;
use app\service\core\order\CoreOrderCreateService;
@@ -39,7 +39,7 @@ class CoreRechargeOrderService extends BaseCoreService
'site_id' => $data['site_id'],
'order_from' => $data['order_from'] ?? 'h5',
'order_type' => 'recharge',
- 'order_status' => RechargeOrderEnum::WAIT_PAY,
+ 'order_status' => RechargeOrderDict::WAIT_PAY,
'member_id' => $data['member_id'],
'ip' => request()->ip() ?? '',
'member_message' => $data['member_message'] ?? '',
@@ -78,7 +78,7 @@ class CoreRechargeOrderService extends BaseCoreService
throw new CommonException('ORDER_NOT_EXIST');
$order_data = [
'pay_time' => time(),
- 'order_status' => RechargeOrderEnum::FINISH,
+ 'order_status' => RechargeOrderDict::FINISH,
'is_enable_refund' => 1 // 是否允许退款
];
$order_model->where([['site_id', '=', $pay_info['site_id']], ['out_trade_no', '=', $pay_info['out_trade_no']]])->update($order_data);
@@ -99,9 +99,9 @@ class CoreRechargeOrderService extends BaseCoreService
public function close(int $site_id, int $order_id){
$order = (new Order())->where([ ['site_id', '=', $site_id ],['order_id', '=', $order_id ], ])->find();
if ($order->isEmpty()) throw new CommonException('ORDER_NOT_EXIST');
- if ($order->order_status == RechargeOrderEnum::CLOSE) throw new CommonException('ORDER_CLOSED');
+ if ($order->order_status == RechargeOrderDict::CLOSE) throw new CommonException('ORDER_CLOSED');
- $order->save(['order_status' => RechargeOrderEnum::CLOSE]);
+ $order->save(['order_status' => RechargeOrderDict::CLOSE]);
return true;
}
}
diff --git a/niucloud/app/service/core/order/recharge/CoreRechargeRefundService.php b/niucloud/app/service/core/order/recharge/CoreRechargeRefundService.php
index a490379bb..3aadec291 100644
--- a/niucloud/app/service/core/order/recharge/CoreRechargeRefundService.php
+++ b/niucloud/app/service/core/order/recharge/CoreRechargeRefundService.php
@@ -11,7 +11,7 @@
namespace app\service\core\order\recharge;
-use app\enum\order\RechargeOrderEnum;
+use app\dict\order\RechargeOrderDict;
use app\model\member\Member;
use app\model\order\Order;
use app\model\order\OrderItem;
@@ -39,14 +39,16 @@ class CoreRechargeRefundService extends BaseCoreService
* @return void
*/
public function create(int $site_id, int $order_id) {
+ $order_model = (new OrderItem())->where([ ['site_id', '=', $site_id], ['order_id', '=', $order_id], ['item_type', '=', $this->order_type ] ])->with('ordermain')->find();
+ $order = $order_model->toArray();
+ $order_info = (new Order())->where([ ['site_id', '=', $site_id], ['order_id', '=', $order_id] ])->field("order_no")->find();
+ if (empty($order)) throw new CommonException('ORDER_NOT_EXIST');
+ if (!$order['ordermain']['is_enable_refund']) throw new CommonException('NOT_ALLOW_APPLY_REFUND');
+ if (!in_array($order['ordermain']['order_status'], [RechargeOrderDict::PAY, RechargeOrderDict::FINISH])) throw new CommonException('ORDER_UNPAID_NOT_ALLOW_APPLY_REFUND');
+ if ($order['refund_status'] != RechargeOrderDict::NOT_APPLAY) throw new CommonException('REFUND_HAD_APPLIED');
+
Db::startTrans();
try {
- $order_model = (new OrderItem())->where([ ['site_id', '=', $site_id], ['order_id', '=', $order_id], ['item_type', '=', $this->order_type ] ])->with('ordermain')->find();
- $order = $order_model->toArray();
-
- if (empty($order)) throw new CommonException('ORDER_NOT_EXIST');
- if (!$order['ordermain']['is_enable_refund'] || $order['ordermain']['order_status'] != RechargeOrderEnum::FINISH || $order['refund_status'] != RechargeOrderEnum::NOT_APPLAY) throw new CommonException('NOT_ALLOW_APPLY_REFUND');
-
// 查询会员账户余额
$member_info = (new Member())->where([
[ 'member_id', '=', $order['member_id'] ],
@@ -57,18 +59,18 @@ class CoreRechargeRefundService extends BaseCoreService
$order['out_trade_no'] = $order['ordermain']['out_trade_no'];
$order['money'] = $order['item_money'] > $member_info['balance'] ? $member_info['balance'] : $order['item_money'];
-
+ $order['order_no'] = $order_info['order_no'];
$creat_res = (new CoreOrderRefundService())->create($order);
$order_model->save([
'refund_no' => $creat_res['refund_no'],
- 'refund_status' => RechargeOrderEnum::REFUNDING
+ 'refund_status' => RechargeOrderDict::REFUNDING
]);
$order_model->ordermain->save([
- 'refund_status' => RechargeOrderEnum::REFUNDING
+ 'refund_status' => RechargeOrderDict::REFUNDING
]);
- (new OrderItemRefund())->update(['status' => RechargeOrderEnum::REFUNDING], [ ['refund_no', '=', $creat_res['refund_no'] ] ]);
+ (new OrderItemRefund())->update(['status' => RechargeOrderDict::REFUNDING], [ ['refund_no', '=', $creat_res['refund_no'] ] ]);
// 执行退款
$this->refund($order, $creat_res['refund_no']);
@@ -101,13 +103,13 @@ class CoreRechargeRefundService extends BaseCoreService
public function refundComplete($refund_no){
$model = (new OrderItemRefund())->where([ ['refund_no', '=', $refund_no ] ])->find();
if ($model->isEmpty()) throw new CommonException('ORDER_NOT_EXIST');
- if ($model->status != RechargeOrderEnum::REFUNDING) throw new CommonException('REFUND_STATUS_ABNORMAL');
+ if ($model->status != RechargeOrderDict::REFUNDING) throw new CommonException('REFUND_STATUS_ABNORMAL');
Db::startTrans();
try {
- $model->save(['status' => RechargeOrderEnum::REFUND_COMPLETED]);
- $model->item()->save([ 'refund_status' => RechargeOrderEnum::REFUND_COMPLETED ]);
- (new Order())->update(['refund_status' => RechargeOrderEnum::REFUND_COMPLETED], [ ['order_id', '=', $model->order_id ] ]);
+ $model->save(['status' => RechargeOrderDict::REFUND_COMPLETED]);
+ $model->item()->save([ 'refund_status' => RechargeOrderDict::REFUND_COMPLETED ]);
+ (new Order())->update(['refund_status' => RechargeOrderDict::REFUND_COMPLETED], [ ['order_id', '=', $model->order_id ] ]);
(new CoreRechargeOrderService())->close($model->site_id, $model->order_id);
Db::commit();
return true;
diff --git a/niucloud/app/service/core/pay/CorePayChannelService.php b/niucloud/app/service/core/pay/CorePayChannelService.php
index a7c6507c2..bc859a013 100644
--- a/niucloud/app/service/core/pay/CorePayChannelService.php
+++ b/niucloud/app/service/core/pay/CorePayChannelService.php
@@ -12,7 +12,7 @@
namespace app\service\core\pay;
-use app\enum\pay\PayEnum;
+use app\dict\pay\PayDict;
use app\model\pay\PayChannel;
use core\base\BaseCoreService;
use think\Model;
@@ -54,7 +54,7 @@ class CorePayChannelService extends BaseCoreService
if(!empty($channel_pay_list)){
$temp_channel_pay_list = array_column($channel_pay_list, 'type');
if($pay_type_limit_list) $temp_channel_pay_list = array_intersect($temp_channel_pay_list, $pay_type_limit_list);
- $pay_type_list = PayEnum::getPayType($temp_channel_pay_list);
+ $pay_type_list = PayDict::getPayType($temp_channel_pay_list);
$allow_pay_type_list = [];
foreach($channel_pay_list as $v){
$allow_pay_type_list[] = $pay_type_list[$v['type']];
diff --git a/niucloud/app/service/core/pay/CorePayConfigService.php b/niucloud/app/service/core/pay/CorePayConfigService.php
index 190bc23c5..3f370deb1 100644
--- a/niucloud/app/service/core/pay/CorePayConfigService.php
+++ b/niucloud/app/service/core/pay/CorePayConfigService.php
@@ -11,8 +11,8 @@
namespace app\service\core\pay;
-use app\enum\pay\PayEnum;
-use app\enum\sys\ConfigKeyEnum;
+use app\dict\pay\PayDict;
+use app\dict\sys\ConfigKeyDict;
use app\model\sys\SysConfig;
use app\service\core\sys\CoreConfigService;
use app\service\core\weapp\CoreWeappConfigService;
@@ -38,19 +38,19 @@ class CorePayConfigService extends BaseCoreService
public function getPayList(int $site_id, array $allow_type = [])
{
$pay_list = [];
- foreach(PayEnum::getPayType($allow_type) as $k => $v){
+ foreach(PayDict::getPayType($allow_type) as $k => $v){
switch($k){
- case PayEnum::WECHATPAY:
+ case PayDict::WECHATPAY:
$config = $this->getWechatpayConfig($site_id);
break;
- case PayEnum::ALIPAY:
+ case PayDict::ALIPAY:
$config = $this->getAlipayConfig($site_id);
break;
- case PayEnum::OFFLINEPAY:
+ case PayDict::OFFLINEPAY:
$config = $this->getOfflinepayConfig($site_id);
break;
}
- if($config['status'] == PayEnum::ON){
+ if($config['status'] == PayDict::ON){
$pay_list[] = [
'key' => $k,
'name' => $v['name'],
@@ -69,15 +69,15 @@ class CorePayConfigService extends BaseCoreService
public function getPayConfigList(int $site_id)
{
$pay_config_list = [];
- foreach(PayEnum::getPayType() as $k => $v){
+ foreach(PayDict::getPayType() as $k => $v){
switch($k){
- case PayEnum::WECHATPAY:
+ case PayDict::WECHATPAY:
$config = self::getWechatpayConfig($site_id);
break;
- case PayEnum::ALIPAY:
+ case PayDict::ALIPAY:
$config = self::getAlipayConfig($site_id);
break;
- case PayEnum::OFFLINEPAY:
+ case PayDict::OFFLINEPAY:
$config = self::getOfflinepayConfig($site_id);
break;
}
@@ -97,11 +97,11 @@ class CorePayConfigService extends BaseCoreService
* @return array|mixed|string[]
*/
public function getWechatpayConfig(int $site_id){
- $config = (new CoreConfigService())->getConfig($site_id, ConfigKeyEnum::WECHAT_PAY)['value'] ?? [];
+ $config = (new CoreConfigService())->getConfig($site_id, ConfigKeyDict::WECHAT_PAY)['value'] ?? [];
if(empty($config)){
$config = array(
- 'status' => PayEnum::OFF,
- 'icon' => path_to_url(PayEnum::WECHATPAY_ICON),
+ 'status' => PayDict::OFF,
+ 'icon' => path_to_url(PayDict::WECHATPAY_ICON),
'mch_id' => '',//商户号
'mch_secret_key' => '',//商户秘钥 现在默认认为是v3版
'mch_secret_cert' => '',//商户私钥 字符串或路径
@@ -117,11 +117,11 @@ class CorePayConfigService extends BaseCoreService
* @return array|mixed|string[]
*/
public function getAlipayConfig(int $site_id){
- $config = (new CoreConfigService())->getConfig($site_id, ConfigKeyEnum::ALIPAY)['value'] ?? [];
+ $config = (new CoreConfigService())->getConfig($site_id, ConfigKeyDict::ALIPAY)['value'] ?? [];
if(empty($config)){
$config = array(
- 'status' => PayEnum::OFF,
- 'app_id' => path_to_url(PayEnum::ALIPAY_ICON),// 必填-支付宝分配的 app_id
+ 'status' => PayDict::OFF,
+ 'app_id' => path_to_url(PayDict::ALIPAY_ICON),// 必填-支付宝分配的 app_id
'app_secret_cert' => '',// 必填-应用私钥 字符串或路径
'app_public_cert_path' => '',//必填-应用公钥证书 路径
'alipay_public_cert_path' => '',//必填-支付宝公钥证书 路径
@@ -137,10 +137,10 @@ class CorePayConfigService extends BaseCoreService
* @return array|mixed|string[]
*/
public function getOfflinepayConfig(int $site_id){
- $config = (new CoreConfigService())->getConfig($site_id, ConfigKeyEnum::OFFLINE_PAY)['value'] ?? [];
+ $config = (new CoreConfigService())->getConfig($site_id, ConfigKeyDict::OFFLINE_PAY)['value'] ?? [];
if(empty($config)){
$config = array(
- 'status' => PayEnum::OFF,
+ 'status' => PayDict::OFF,
);
}
return $config;
@@ -154,18 +154,18 @@ class CorePayConfigService extends BaseCoreService
*/
public function getPayConfigByType(int $site_id, string $type){
switch($type){
- case PayEnum::WECHATPAY:
+ case PayDict::WECHATPAY:
$config = self::getWechatpayConfig($site_id);
$config = array_merge($config, $this->getWechatPayFullConfig($site_id));//一般来说,微信支付商户号不能完整的进行支付活动,需要我们主动完善支付信息, 例如公众号appid
break;
- case PayEnum::ALIPAY:
+ case PayDict::ALIPAY:
$config = self::getAlipayConfig($site_id);
break;
- case PayEnum::OFFLINEPAY:
+ case PayDict::OFFLINEPAY:
$config = self::getOfflinepayConfig($site_id);
break;
}
- if($config['status'] != PayEnum::ON)
+ if($config['status'] != PayDict::ON)
throw new CommonException('PAYMENT_METHOD_NOT_EXIST');
return $config;
@@ -179,13 +179,13 @@ class CorePayConfigService extends BaseCoreService
*/
public function getConfigByType(int $site_id, string $type){
switch($type){
- case PayEnum::WECHATPAY:
+ case PayDict::WECHATPAY:
$config = self::getWechatpayConfig($site_id);
break;
- case PayEnum::ALIPAY:
+ case PayDict::ALIPAY:
$config = self::getAlipayConfig($site_id);
break;
- case PayEnum::OFFLINEPAY:
+ case PayDict::OFFLINEPAY:
$config = self::getOfflinepayConfig($site_id);
break;
}
@@ -225,7 +225,7 @@ class CorePayConfigService extends BaseCoreService
$config = [
'status' => $data['status'],
];
- return (new CoreConfigService())->setConfig($site_id, ConfigKeyEnum::OFFLINE_PAY, $config);
+ return (new CoreConfigService())->setConfig($site_id, ConfigKeyDict::OFFLINE_PAY, $config);
}
/**
* 设置线下支付
@@ -242,7 +242,7 @@ class CorePayConfigService extends BaseCoreService
'mch_secret_cert' => $data['mch_secret_cert'],//商户私钥 字符串或路径
'mch_public_cert_path' => $data['mch_public_cert_path'],//商户公钥证书路径
];
- return (new CoreConfigService())->setConfig($site_id, ConfigKeyEnum::WECHAT_PAY, $config);
+ return (new CoreConfigService())->setConfig($site_id, ConfigKeyDict::WECHAT_PAY, $config);
}
/**
* 设置线下支付
@@ -260,7 +260,7 @@ class CorePayConfigService extends BaseCoreService
'alipay_public_cert_path' => $data['alipay_public_cert_path'],//必填-支付宝公钥证书 路径
'alipay_root_cert_path' => $data['alipay_root_cert_path'],// 必填-支付宝根证书 路径
];
- return (new CoreConfigService())->setConfig($site_id, ConfigKeyEnum::ALIPAY, $config);
+ return (new CoreConfigService())->setConfig($site_id, ConfigKeyDict::ALIPAY, $config);
}
/**
@@ -272,13 +272,13 @@ class CorePayConfigService extends BaseCoreService
*/
public function setConfigByType(int $site_id, string $type, array $data){
switch($type){
- case PayEnum::WECHATPAY:
+ case PayDict::WECHATPAY:
$result = $this->setWechatpayConfig($site_id, $data);
break;
- case PayEnum::ALIPAY:
+ case PayDict::ALIPAY:
$result = $this->setAlipayConfig($site_id, $data);
break;
- case PayEnum::OFFLINEPAY:
+ case PayDict::OFFLINEPAY:
$result = $this->setOfflinepayConfig($site_id, $data);
break;
}
diff --git a/niucloud/app/service/core/pay/CorePayEventService.php b/niucloud/app/service/core/pay/CorePayEventService.php
index d15de8d56..d43a59412 100644
--- a/niucloud/app/service/core/pay/CorePayEventService.php
+++ b/niucloud/app/service/core/pay/CorePayEventService.php
@@ -11,9 +11,9 @@
namespace app\service\core\pay;
-use app\enum\common\ChannelEnum;
-use app\enum\pay\PayEnum;
-use app\enum\pay\TransferEnum;
+use app\dict\common\ChannelDict;
+use app\dict\pay\PayDict;
+use app\dict\pay\TransferDict;
use core\base\BaseCoreService;
use core\exception\PayException;
use core\pay\PayDriver;
@@ -62,6 +62,7 @@ class CorePayEventService extends BaseCoreService
{
$notify_url = (string)url("/api/pay/notify/$this->site_id/$this->channel/$this->type/$action", [], '', true);//异步回调通知地址
$this->config['notify_url'] = $notify_url;
+ $this->config['site_id'] = $this->site_id;
return new PayLoader($this->type, $this->config);
}
@@ -91,42 +92,42 @@ class CorePayEventService extends BaseCoreService
'openid' => $openid
);
switch($this->type){
- case PayEnum::WECHATPAY:
+ case PayDict::WECHATPAY:
$params['money'] = $params['money'] * 100;
switch ($this->channel) {
- case ChannelEnum::H5://h5
+ case ChannelDict::H5://h5
$pay_fun = 'wap';
break;
- case ChannelEnum::WECHAT://公众号
+ case ChannelDict::WECHAT://公众号
$pay_fun = 'mp';
break;
- case ChannelEnum::WEAPP://微信小程序
+ case ChannelDict::WEAPP://微信小程序
$pay_fun = 'mini';
break;
- case ChannelEnum::PC://pc
+ case ChannelDict::PC://pc
$pay_fun = 'scan';//扫码支付
break;
- case ChannelEnum::APP://app
+ case ChannelDict::APP://app
$pay_fun = 'app';
break;
}
break;
- case PayEnum::ALIPAY:
+ case PayDict::ALIPAY:
switch ($this->channel) {
- case ChannelEnum::H5://h5
+ case ChannelDict::H5://h5
$pay_fun = 'wap';
break;
- case ChannelEnum::PC://pc
+ case ChannelDict::PC://pc
$pay_fun = 'web';
break;
- case ChannelEnum::APP://app
+ case ChannelDict::APP://app
$pay_fun = 'app';
break;
- case ChannelEnum::WECHAT://wap
+ case ChannelDict::WECHAT://wap
$pay_fun = 'wap';
break;
}
@@ -149,12 +150,12 @@ class CorePayEventService extends BaseCoreService
*/
public function transfer(float $money, string $transfer_no,string $to_no, string $to_name, string $remark, array $transfer_list = [], string $to_type = '', string $product_code = '', string $scene = '')
{
- $transfer_type = TransferEnum::getPayTypeByTransfer($this->type);
+ $transfer_type = TransferDict::getPayTypeByTransfer($this->type);
switch($transfer_type){
- case PayEnum::WECHATPAY:
+ case PayDict::WECHATPAY:
$money = $money * 100;
break;
- case PayEnum::ALIPAY:
+ case PayDict::ALIPAY:
}
return $this->app('transfer')->transfer([
@@ -201,9 +202,9 @@ class CorePayEventService extends BaseCoreService
* 支付异步通知
* @return void
*/
- public function notify(Callable $callback)
+ public function notify(string $action, Callable $callback)
{
- return $this->app()->notify($callback);
+ return $this->app()->notify($action, $callback);
}
/**
diff --git a/niucloud/app/service/core/pay/CorePayService.php b/niucloud/app/service/core/pay/CorePayService.php
index 96e4b52fc..891e00c3a 100644
--- a/niucloud/app/service/core/pay/CorePayService.php
+++ b/niucloud/app/service/core/pay/CorePayService.php
@@ -11,9 +11,9 @@
namespace app\service\core\pay;
-use app\enum\order\OrderTypeEnum;
-use app\enum\pay\OnlinePayEnum;
-use app\enum\pay\PayEnum;
+use app\dict\order\OrderTypeDict;
+use app\dict\pay\OnlinePayDict;
+use app\dict\pay\PayDict;
use app\job\pay\PayReturnTo;
use app\model\pay\Pay;
use core\base\BaseCoreService;
@@ -105,23 +105,32 @@ class CorePayService extends BaseCoreService
public function pay($site_id, $out_trade_no, $type, $channel, string $openid, string $return_url = '', string $quit_url = '', string $buyer_id = ''){
$pay = $this->findPayInfoByOutTradeNo($site_id, $out_trade_no);
if($pay->isEmpty()) throw new PayException('ALIPAY_TRANSACTION_NO_NOT_EXIST');
- if($pay['status'] == PayEnum::STATUS_ING) throw new PayException('PAYMENT_LOCK');
- if($pay['status'] == PayEnum::STATUS_ED) throw new PayException('PAY_SUCCESS');
- if($pay['status'] == PayEnum::STATUS_CALCLE) throw new PayException('PAY_IS_REMOVE');
+ if($pay['status'] == PayDict::STATUS_ING) throw new PayException('PAYMENT_LOCK');
+ if($pay['status'] == PayDict::STATUS_ED) throw new PayException('PAY_SUCCESS');
+ if($pay['status'] == PayDict::STATUS_CALCLE) throw new PayException('PAY_IS_REMOVE');
$money = $pay['money'];
$body = $pay['body'];
$trade_type = $pay['trade_type'];
- $allow_type = OrderTypeEnum::getAllowPayType($trade_type);//当前支付允许使用的支付方式
+ $allow_type = OrderTypeDict::getAllowPayType($trade_type);//当前支付允许使用的支付方式
if(!in_array($type, $allow_type)){
throw new PayException('PAYMENT_METHOD_NOT_SUPPORT');//业务不支持
}
if(!in_array($type, array_keys((new CorePayChannelService())->getAllowPayTypeByCahnnel($site_id, $channel)))) throw new PayException('PAYMENT_METHOD_NOT_SCENE');//场景不支持
$pay_result = $this->pay_event->init($site_id, $channel, $type)->pay($out_trade_no, $money, $body, $return_url, $quit_url, $buyer_id, $openid ?? '');
-// 将支付设置为支付中
+ //todo 特殊支付方式会直接返回支付状态,状态如果为已支付会直接支付
+ if(!empty($pay_result['status']) && $pay_result['status'] == PayDict::STATUS_ED){
+ $this->paySuccess($site_id, [
+ 'status' => PayDict::STATUS_ED,
+ 'type' => $type,
+ 'out_trade_no' => $out_trade_no
+ ]);
+ return true;
+ }
+ //将支付设置为支付中
$pay->save(
[
'type' => $type,
- 'status' => PayEnum::STATUS_ING,
+ 'status' => PayDict::STATUS_ING,
'channel' => $channel
]
);
@@ -143,7 +152,7 @@ class CorePayService extends BaseCoreService
$pay = $this->findPayInfoByOutTradeNo($site_id, $out_trade_no);
}
if($pay->isEmpty()) return true;
- if($pay['status'] != PayEnum::STATUS_ING) return true;
+ if($pay['status'] != PayDict::STATUS_ING) return true;
if(empty($pay->type)) return true;
//尝试取消或关闭第三方支付
try{
@@ -151,14 +160,16 @@ class CorePayService extends BaseCoreService
}catch(\Throwable $e){
$close = false;
}
- if($close){
- $data = array(
- 'status' => PayEnum::STATUS_WAIT,
- 'type' => '',
- 'channel' => ''
- );
- $pay->save($data);
- }
+
+ //todo 交易流水号在同渠道已经不能用了
+// if($close){
+// $data = array(
+// 'status' => PayDict::STATUS_WAIT,
+// 'type' => '',
+// 'channel' => ''
+// );
+// $pay->save($data);
+// }
return $close;
}
@@ -172,46 +183,30 @@ class CorePayService extends BaseCoreService
public function close(int $site_id, string $out_trade_no){
$pay = $this->findPayInfoByOutTradeNo($site_id, $out_trade_no);
if($pay->isEmpty()) throw new PayException('ALIPAY_TRANSACTION_NO_NOT_EXIST');
- if($pay['status'] != PayEnum::STATUS_ING) throw new PayException('TREAT_PAYMENT_IS_OPEN');
+ if($pay['status'] != PayDict::STATUS_ING) throw new PayException('TREAT_PAYMENT_IS_OPEN');
if(empty($pay->type)) throw new PayException('TREAT_PAYMENT_IS_OPEN');
//尝试取消或关闭第三方支付
-
$close = $this->pay_event->init($site_id, $pay->channel, $pay->type)->close($out_trade_no);
if(!$close){//有问题查询第三方订单详情
$order = $this->pay_event->init($site_id, $pay->channel, $pay->type)->getOrder($out_trade_no);
- if(empty($order))
- return true;
- if(!empty($order) && $order['status'] == OnlinePayEnum::SUCCESS){//如果已支付,就将支付调整为已支付
- $this->finish($site_id, $out_trade_no, $pay->type);
- return false;
+ if(!empty($order)){
+ if($order['status'] == OnlinePayDict::SUCCESS){//如果已支付,就将支付调整为已支付
+ $this->paySuccess($site_id, [
+ 'out_trade_no' => $out_trade_no,
+ 'type' => $pay->type
+ ]);
+ return false;
+ }
}
- return true;
}
+ //支付关闭
+ $this->payClose($site_id,[
+ 'out_trade_no' => $out_trade_no
+ ]);
return true;
}
- /**
- * 退款
- * @param $site_id
- * @param $out_trade_no
- * @param float $money
- * @return void
- */
- public function refundCreate($site_id, $main, $out_trade_no, float $money){
- $refund_no = create_no('pay', $main);
- $data = array(
- 'site_id' => $site_id,
- 'money' => $money,
- 'trade_type' => $trade_type,
- 'body' => $body,
- 'out_trade_no' => $out_trade_no
- );
- $this->model->create($data);
- return $refund_no;
- }
- public function refund($site_id, $refund_no){
- }
/**
* 支付完成
@@ -220,40 +215,64 @@ class CorePayService extends BaseCoreService
* @param $trade_no
* @return void
*/
- public function finish(int $site_id, $out_trade_no, string $type, array $params = []){
+ public function payNotify(int $site_id, string $out_trade_no, string $type, array $params = []){
$pay = $this->findPayInfoByOutTradeNo($site_id, $out_trade_no);
if($pay->isEmpty()) throw new PayException('ALIPAY_TRANSACTION_NO_NOT_EXIST');
- if($pay['status'] == PayEnum::STATUS_ED) throw new PayException('PAY_SUCCESS');
- if($pay['status'] == PayEnum::STATUS_CALCLE) throw new PayException('PAY_IS_REMOVE');
- $trade_type = $pay->trade_type;
- $data = array(
- 'pay_time' => time(),
- 'status' => PayEnum::STATUS_ED,
- 'type' => $type,
- 'trade_no' => $params['trade_no'] ?? '',
- 'voucher' => $params['voucher'] ?? '',
- 'mch_id' => $params['mch_id'] ?? '',
- );
- //允许修改的值
- $allow_field = array('trade_no', 'voucher', 'status', 'pay_time', 'type', 'mch_id');
- // 启动事务
- Db::startTrans();
- try {
- $pay->allowField($allow_field)->save($data);
+ if($pay['status'] == PayDict::STATUS_ED) throw new PayException('PAY_SUCCESS');
+ if($pay['status'] == PayDict::STATUS_CALCLE) throw new PayException('PAY_IS_REMOVE');
+ $status = $params['status'];
+ switch($status){
+ case OnlinePayDict::SUCCESS://支付成功
+ $this->paySuccess($site_id,[
+ 'out_trade_no' => $out_trade_no,
+ 'type' => $type
+ ]);
+ break;
+ case OnlinePayDict::CLOSED://支付关闭
+ $this->payClose($site_id,[
+ 'out_trade_no' => $out_trade_no,
+ 'type' => $type
+ ]);
+ break;
+ case OnlinePayDict::NOTPAY://未支付
+ //todo 主动去校验支付状态
+ $this->check($site_id,[
+ 'out_trade_no' => $out_trade_no,
+ 'type' => $type
+ ]);
+ break;
- $result = event('PaySuccess', ['out_trade_no' => $out_trade_no, 'trade_type' => $trade_type, 'site_id' => $site_id]);
- if(!check_event_result($result)){
- return false;
- }
- // 提交事务
- Db::commit();
- return true;
- } catch (\Throwable $e) {
- // 回滚事务
- Db::rollback();
- throw new PayException($e->getMessage());
}
+ return true;
+// $trade_type = $pay->trade_type;
+// $data = array(
+// 'pay_time' => time(),
+// 'status' => PayDict::STATUS_ED,
+// 'type' => $type,
+// 'trade_no' => $params['trade_no'] ?? '',
+// 'voucher' => $params['voucher'] ?? '',
+// 'mch_id' => $params['mch_id'] ?? '',
+// );
+// //允许修改的值
+// $allow_field = array('trade_no', 'voucher', 'status', 'pay_time', 'type', 'mch_id');
+// // 启动事务
+// Db::startTrans();
+// try {
+// $pay->allowField($allow_field)->save($data);
+//
+// $result = event('PaySuccess', ['out_trade_no' => $out_trade_no, 'trade_type' => $trade_type, 'site_id' => $site_id]);
+// if(!check_event_result($result)){
+// return false;
+// }
+// // 提交事务
+// Db::commit();
+// return true;
+// } catch (\Throwable $e) {
+// // 回滚事务
+// Db::rollback();
+// throw new PayException($e->getMessage());
+// }
}
@@ -270,10 +289,10 @@ class CorePayService extends BaseCoreService
try {
switch($action){
case 'pay'://支付结果通知
- return $this->finish($site_id, $out_trade_no, $type, $params);
+ return $this->payNotify($site_id, $out_trade_no, $type, $params);
break;
case 'refund':
-
+ return (new CoreRefundService())->refundNotify($site_id, $out_trade_no, $type, $params);
break;
}
@@ -282,7 +301,7 @@ class CorePayService extends BaseCoreService
return false;
}
};
- return $this->pay_event->init($site_id, $channel, $type)->init($site_id, $channel, $type)->notify($callback);
+ return $this->pay_event->init($site_id, $channel, $type)->init($site_id, $channel, $type)->notify($action, $callback);
// return true;
}
@@ -294,43 +313,149 @@ class CorePayService extends BaseCoreService
* @param string $out_trade_no
* @return void
*/
- public function cancel(int $site_id, string $out_trade_no){
- $pay = $this->findPayInfoByOutTradeNo($site_id, $out_trade_no);
- if($pay->isEmpty()) throw new PayException('ALIPAY_TRANSACTION_NO_NOT_EXIST');
- if($pay['status'] == PayEnum::STATUS_ED) throw new PayException('PAY_SUCCESS');//已支付不能取消
- if($pay['status'] == PayEnum::STATUS_CALCLE) throw new PayException('PAY_IS_REMOVE');//已取消不能重复取消
- $type = $pay->type;
- if($pay['status'] == PayEnum::STATUS_ING){
- //尝试关闭相关支付
- $result = $this->pay_event->init($site_id, $pay->channel, $type)->close($out_trade_no);
- if($result){
+// public function cancel(int $site_id, string $out_trade_no){
+// $pay = $this->findPayInfoByOutTradeNo($site_id, $out_trade_no);
+// if($pay->isEmpty()) throw new PayException('ALIPAY_TRANSACTION_NO_NOT_EXIST');
+// if($pay['status'] == PayDict::STATUS_ED) throw new PayException('PAY_SUCCESS');//已支付不能取消
+// if($pay['status'] == PayDict::STATUS_CALCLE) throw new PayException('PAY_IS_REMOVE');//已取消不能重复取消
+// $type = $pay->type;
+// if($pay['status'] == PayDict::STATUS_ING){
+// //尝试关闭相关支付
+// $result = $this->pay_event->init($site_id, $pay->channel, $type)->close($out_trade_no);
+// if($result){
+//
+// }else{//根据返回值来进行下一步操作 支付已完成就将支付完成
+//
+// }
+//
+// }
+// }
- }else{//根据返回值来进行下一步操作 支付已完成就将支付完成
-
- }
-
- }
- }
-
- public function reset(int $site_id, string $out_trade_no, float $money){
+ /**
+ * 重置支付,更换新的交易流水号
+ * @param int $site_id
+ * @param string $out_trade_no
+ * @param float $money
+ * @return string|null
+ */
+ public function reset(int $site_id, string $out_trade_no, float $money = null){
$pay = $this->findPayInfoByOutTradeNo($site_id, $out_trade_no);
if($pay->isEmpty()) throw new PayException('ALIPAY_TRANSACTION_NO_NOT_EXIST');
if(!in_array($pay['status'], [
- PayEnum::STATUS_WAIT,
- PayEnum::STATUS_ING
+ PayDict::STATUS_WAIT,
+ PayDict::STATUS_ING
])) throw new PayException('IS_PAY_REMOVE_NOT_RESETTING');//只有待支付可以重置支付
- if($pay['status'] == PayEnum::STATUS_ING){
- if(!$this->returnTo($site_id, $pay)){
+ if($pay['status'] == PayDict::STATUS_ING){
+ if(!$this->close($site_id, $pay)){
throw new PayException('DOCUMENT_IS_PAY_REMOVE');
}
}
- $out_trade_no = create_no('pay', $pay['main_id']);
- $data = array(
- 'out_trade_no' => $out_trade_no,
- 'money' => $money
- );
- $pay->save($data);
+ if(!$money){
+ $money = $pay->money;
+ }
+ $new_out_trade_no = $this->create($site_id, $pay->main_type, $pay->main_id, $money, $pay->trade_type, $pay->body);
//todo 需要考虑是业务调用重置支付,还是支付重置反馈业务
- return $out_trade_no;
+ return $new_out_trade_no;
+ }
+
+ /**
+ * 校验支付订单的状态
+ * @param int $site_id
+ * @param array $data
+ * @return void
+ */
+ public function check(int $site_id, array $data){
+ $out_trade_no = $data['out_trade_no'];
+ $pay = $this->findPayInfoByOutTradeNo($site_id, $out_trade_no);
+ if($pay->isEmpty()) throw new PayException('ALIPAY_TRANSACTION_NO_NOT_EXIST');
+ if($pay['status'] == PayDict::STATUS_ED) throw new PayException('PAY_SUCCESS');//单据已支付
+ if($pay['status'] == PayDict::STATUS_CALCLE) throw new PayException('PAY_IS_REMOVE');//单据已取消
+ //查询第三方支付单据
+ $pay_info = $this->pay_event->init($site_id, $pay->channel, $pay->type)->getOrder($out_trade_no);
+ $type = $pay['type'];
+ if(empty($pay_info))
+ return $pay_info;
+ $status = $pay_info['status'];
+ switch($status){
+ case OnlinePayDict::SUCCESS://支付成功
+ $this->paySuccess($site_id,[
+ 'out_trade_no' => $out_trade_no,
+ 'type' => $type
+ ]);
+ break;
+ case OnlinePayDict::CLOSED://支付关闭
+ $this->payClose($site_id,[
+ 'out_trade_no' => $out_trade_no,
+ 'type' => $type
+ ]);
+ break;
+ case OnlinePayDict::NOTPAY://未支付
+ //todo 主动去校验支付状态
+ $this->check($site_id,[
+ 'out_trade_no' => $out_trade_no,
+ 'type' => $type
+ ]);
+ break;
+ }
+ return true;
+ }
+
+ /**
+ * 支付成功
+ * @param $site_id
+ * @param $params
+ * @return bool
+ */
+ public function paySuccess($site_id, $params){
+ $out_trade_no = $params['out_trade_no'];
+ $pay = $this->findPayInfoByOutTradeNo($site_id, $out_trade_no);
+ $type = $params['type'];
+ $trade_type = $pay->trade_type;
+ $data = array(
+ 'pay_time' => time(),
+ 'status' => PayDict::STATUS_ED,
+ 'type' => $type,
+ 'trade_no' => $params['trade_no'] ?? '',
+ 'voucher' => $params['voucher'] ?? '',
+ 'mch_id' => $params['mch_id'] ?? '',
+ );
+ //允许修改的值
+ $allow_field = array('trade_no', 'voucher', 'status', 'pay_time', 'type', 'mch_id');
+ // 启动事务
+ Db::startTrans();
+ try {
+ $pay->allowField($allow_field)->save($data);
+ $result = event('PaySuccess', ['out_trade_no' => $out_trade_no, 'trade_type' => $trade_type, 'site_id' => $site_id]);
+ if(!check_event_result($result)){
+ return false;
+ }
+ // 提交事务
+ Db::commit();
+ return true;
+ } catch (\Throwable $e) {
+ // 回滚事务
+ Db::rollback();
+ throw new PayException($e->getMessage());
+ }
+ return true;
+ }
+
+ /**
+ * 单据关闭
+ * @param $site_id
+ * @param $data
+ * @return true
+ */
+ public function payClose($site_id, $data){
+ $out_trade_no = $data['out_trade_no'];
+ $this->model->where([
+ ['site_id', '=', $site_id],
+ ['out_trade_no', '=', $out_trade_no]
+ ])->update([
+ 'status' => PayDict::STATUS_CALCLE
+ ]);
+ //todo 可能操作相关的订单关闭
+// event();
+ return true;
}
}
\ No newline at end of file
diff --git a/niucloud/app/service/core/pay/CoreRefundService.php b/niucloud/app/service/core/pay/CoreRefundService.php
index 2ed3aa873..ff00bd5e5 100644
--- a/niucloud/app/service/core/pay/CoreRefundService.php
+++ b/niucloud/app/service/core/pay/CoreRefundService.php
@@ -11,9 +11,12 @@
namespace app\service\core\pay;
+use app\dict\pay\PayDict;
+use app\dict\pay\RefundDict;
use app\model\pay\Refund;
use core\base\BaseCoreService;
use core\exception\PayException;
+use think\facade\Db;
/**
* 退款服务层
@@ -70,9 +73,14 @@ class CoreRefundService extends BaseCoreService
if($refund->isEmpty()) throw new PayException();
$out_trade_no = $refund->out_trade_no;
$money = $refund->money;
- $this->pay_event->init($site_id, $refund->channel, $refund->type)->refund($out_trade_no, $money, $refund_no);
-
- //判断成功的话,可以直接调用退款成功
+ try{
+ //判断成功的话,可以直接调用退款成功
+ $pay_result = $this->pay_event->init($site_id, $refund->channel, $refund->type)->refund($out_trade_no, $money, $refund_no);
+ $this->refundNotify($site_id, $out_trade_no, $refund->type, $pay_result);
+ }catch (\Throwable $e) {
+ throw new PayException($e->getMessage());
+ }
+ return true;
}
/**
@@ -88,11 +96,150 @@ class CoreRefundService extends BaseCoreService
])->findOrEmpty();
}
+
+
+ public function refundNotify(int $site_id, $out_trade_no, string $type, array $params = []){
+ $refund_no = $params['refund_no'];
+
+ $refund = $this->findByRefundNo($site_id, $refund_no);
+
+ if($refund->isEmpty()) throw new PayException('REFUND_NOT_EXIST');
+ if(!in_array($refund['status'], [RefundDict::WAIT, RefundDict::DEALING])) throw new PayException();//只有待退款和退款中的退款单据可以
+
+ $status = $params['status'];//第三方支付的状态,根据状态进行下一步业务
+ // 启动事务
+ Db::startTrans();
+ try {
+ switch($status){
+ case RefundDict::SUCCESS://退款成功
+ $this->refundSuccess($site_id, [
+ 'out_trade_no' => $out_trade_no,
+ 'refund_no' => $refund_no,
+ ]);
+ break;
+ case RefundDict::DEALING://退款处理中
+ //检测一下当前退款订单完成情况
+ $this->check($site_id, [
+ 'out_trade_no' => $out_trade_no,
+ 'refund_no' => $refund_no,
+ ]);
+ break;
+ case RefundDict::FAIL://退款失败
+ $this->refundFail($site_id, [
+ 'out_trade_no' => $out_trade_no,
+ 'refund_no' => $refund_no,
+ 'fail_reason' => $params['fail_reason']
+ ]);
+ break;
+ }
+ // 提交事务
+ Db::commit();
+ return true;
+ } catch (\Throwable $e) {
+ // 回滚事务
+ Db::rollback();
+ throw new PayException($e->getMessage());
+ }
+ }
+
+ /**
+ * 主动校验退款
+ * @param $site_id
+ * @param $data
+ * @return true
+ */
+ public function check($site_id, $data){
+ $out_trade_no = $data['out_trade_no'];
+ $refund_no = $data['refund_no'];
+ $refund = $this->findByRefundNo($site_id, $refund_no);
+ if($refund->isEmpty()) throw new PayException('REFUND_NOT_EXIST');
+ if(!in_array($refund['status'], [RefundDict::WAIT, RefundDict::DEALING])) throw new PayException();//只有待退款和退款中的退款单据可以
+ //查询第三方退款单据
+ $refund_info = $this->pay_event->init($site_id, $refund->channel, $refund->type)->getRefund($out_trade_no, $refund_no);
+ //这儿的refund_info 已经统一整理成公共的数据格式
+ $status = $refund_info['status'];
+ switch($status){
+ case RefundDict::SUCCESS://退款成功
+ $this->refundSuccess($site_id, [
+ 'out_trade_no' => $out_trade_no,
+ 'refund_no' => $refund_no,
+ ]);
+ break;
+ case RefundDict::DEALING://退款处理中
+ $this->refundDealing($site_id, [
+ 'out_trade_no' => $out_trade_no,
+ 'refund_no' => $refund_no,
+ ]);
+ case RefundDict::FAIL://退款失败
+ $this->refundFail($site_id, [
+ 'out_trade_no' => $out_trade_no,
+ 'refund_no' => $refund_no,
+ 'fail_reason' => $refund_info['fail_reason']
+ ]);
+ break;
+ }
+ return true;
+ }
+
/**
* 退款完成
+ * @param int $site_id
+ * @param array $data
* @return void
*/
- public function refundSuccess(){
+ public function refundSuccess(int $site_id, array $data){
+ $out_trade_no = $data['out_trade_no'];
+ $refund_no = $data['refund_no'];
+ $this->model->where([
+ ['site_id', '=', $site_id],
+ ['refund_no', '=', $refund_no]
+ ])->update([
+ 'status' => RefundDict::SUCCESS
+ ]);
+ $pay = (new CorePayService())->getInfoByOutTradeNo($out_trade_no);
+ $result = event('RefundSuccess', ['refund_no' => $refund_no, 'trade_type' => $pay->trade_type, 'site_id' => $site_id]);
+ if(!check_event_result($result)){
+ return false;
+ }
+ return true;
}
+
+ /**
+ * 退款失败
+ * @param int $site_id
+ * @param array $data
+ * @return void
+ */
+ public function refundFail(int $site_id, array $data){
+ $out_trade_no = $data['out_trade_no'];
+ $refund_no = $data['refund_no'];
+ $this->model->where([
+ ['site_id', '=', $site_id],
+ ['refund_no', '=', $refund_no]
+ ])->update([
+ 'status' => RefundDict::SUCCESS,
+ 'fail_reason' => $data['reason']
+ ]);
+ return true;
+ }
+
+ /**
+ * 退款处理中
+ * @param int $site_id
+ * @param array $data
+ * @return void
+ */
+ public function refundDealing(int $site_id, array $data){
+ $out_trade_no = $data['out_trade_no'];
+ $refund_no = $data['refund_no'];
+ $this->model->where([
+ ['site_id', '=', $site_id],
+ ['refund_no', '=', $refund_no]
+ ])->update([
+ 'status' => RefundDict::DEALING
+ ]);
+ return true;
+ }
+
}
\ No newline at end of file
diff --git a/niucloud/app/service/core/pay/CoreTransferService.php b/niucloud/app/service/core/pay/CoreTransferService.php
index b62ae1cc0..4b188ba8e 100644
--- a/niucloud/app/service/core/pay/CoreTransferService.php
+++ b/niucloud/app/service/core/pay/CoreTransferService.php
@@ -11,7 +11,7 @@
namespace app\service\core\pay;
-use app\enum\pay\TransferEnum;
+use app\dict\pay\TransferDict;
use app\model\pay\Pay;
use app\model\pay\Transfer;
use core\base\BaseCoreService;
@@ -52,7 +52,7 @@ class CoreTransferService extends BaseCoreService
'transfer_no' => $transfer_no,
'main_id' => $main_id,
'main_type' => $main_type,
- 'transfer_status' => TransferEnum::WAIT,
+ 'transfer_status' => TransferDict::WAIT,
'remark' => $remark,
);
$this->model->create($transfer_data);
@@ -71,11 +71,10 @@ class CoreTransferService extends BaseCoreService
$transfer = $this->findTransferByTransferNo($site_id, $transfer_no);
if($transfer->isEmpty()) throw new PayException('TRANSFER_ORDER_INVALID');
- if(!in_array($transfer['transfer_status'], [TransferEnum::WAIT, TransferEnum::FAIL])) throw new PayException('TRANFER_STATUS_NOT_IN_WAIT_TANSFER');
+ if(!in_array($transfer['transfer_status'], [TransferDict::WAIT, TransferDict::FAIL])) throw new PayException('TRANFER_STATUS_NOT_IN_WAIT_TANSFER');
$transfer_account = $data['transfer_account'] ?? '';
$transfer_realname = $data['transfer_realname'] ?? '';
-
$transfer_data = array(
'transfer_type' => $transfer_type,//转账方式
'transfer_realname' => $transfer_realname,//名称
@@ -87,26 +86,26 @@ class CoreTransferService extends BaseCoreService
'transfer_remark' => $data['transfer_remark'] ?? '',
);
$transfer->save($transfer_data);
-
switch($transfer_type){
- case TransferEnum::WECHAT:
+ case TransferDict::WECHAT:
$transfer_account = $data['openid'];
break;
}
$params = [];
- if(TransferEnum::getTransferType()[$transfer_type]['is_online']){
+ if(TransferDict::getTransferType()[$transfer_type]['is_online']){
try {
$result = $this->pay_event->init($site_id, 'transfer', $transfer_type)->transfer($transfer['money'], $transfer_no, $transfer_account, $transfer_realname, $transfer['remark']);
- $params['batch_id'] = $result['batch_id'];
- $params['out_batch_no'] = $result['out_batch_no'];
+// $params['batch_id'] = $result['batch_id'];
+// $params['out_batch_no'] = $result['out_batch_no'];
+ //将返回的数据交给转账通知
+ $this->transferNotify($site_id, $transfer_no, $result);
+ return true;
}catch(\Throwable $e){
$this->fail($site_id, $transfer_no, $transfer_type, ['reason' => get_lang($e->getMessage())]);
throw new PayException($e->getMessage());
}
}
-
$this->success($site_id, $transfer_no, $transfer_type, $params);
-
return true;
}
/**
@@ -123,6 +122,25 @@ class CoreTransferService extends BaseCoreService
return $this->model->where($where)->findOrEmpty();
}
+ public function transferNotify(int $site_id, string $transfer_no, $params){
+ $transfer = $this->findTransferByTransferNo($site_id, $transfer_no);
+
+ if($transfer->isEmpty()) throw new PayException('TRANSFER_ORDER_INVALID');
+ if(!in_array($transfer['transfer_status'], [TransferDict::WAIT, TransferDict::DEALING])) throw new PayException('TRANFER_STATUS_NOT_IN_WAIT_TANSFER');
+ $status = $params['status'] ?? TransferDict::DEALING;
+ switch($status){
+ case TransferDict::SUCCESS:
+ $this->success($site_id, $transfer_no, $transfer->type);
+ break;
+ case TransferDict::DEALING:
+ $this->dealing($site_id, $transfer_no, $transfer->type);
+ break;
+ case TransferDict::FAIL:
+ $this->fail($site_id, $transfer_no, $transfer->type);
+ break;
+ }
+ return true;
+ }
/**
* 转账完成
* @param int $site_id
@@ -135,12 +153,12 @@ class CoreTransferService extends BaseCoreService
$transfer = $this->findTransferByTransferNo($site_id, $transfer_no);
if($transfer->isEmpty()) throw new PayException('TRANSFER_ORDER_INVALID');
- if(!in_array($transfer['transfer_status'], [TransferEnum::WAIT, TransferEnum::FAIL])) throw new PayException('TRANFER_STATUS_NOT_IN_WAIT_TANSFER');
+ if(!in_array($transfer['transfer_status'], [TransferDict::WAIT, TransferDict::DEALING])) throw new PayException('TRANFER_STATUS_NOT_IN_WAIT_TANSFER');
$trade_type = $transfer->trade_type;
$data = array(
'transfer_time' => time(),
- 'transfer_status' => TransferEnum::SUCCESS,
+ 'transfer_status' => TransferDict::SUCCESS,
'batch_id' => $params['batch_id'] ?? '',
'out_batch_no' => $params['out_batch_no'] ?? '',
// 'transfer_type' => $transfer_type,
@@ -176,10 +194,10 @@ class CoreTransferService extends BaseCoreService
$transfer = $this->findTransferByTransferNo($site_id, $transfer_no);
if($transfer->isEmpty()) throw new PayException('TRANSFER_ORDER_INVALID');
- if(!in_array($transfer['transfer_status'], [TransferEnum::WAIT, TransferEnum::FAIL])) throw new PayException('TRANFER_STATUS_NOT_IN_WAIT_TANSFER');
+ if(!in_array($transfer['transfer_status'], [TransferDict::WAIT, TransferDict::DEALING])) throw new PayException('TRANFER_STATUS_NOT_IN_WAIT_TANSFER');
$data = array(
'transfer_time' => time(),
- 'transfer_status' => TransferEnum::FAIL,
+ 'transfer_status' => TransferDict::FAIL,
'transfer_fail_reason' => $params['reason']
// 'transfer_type' => $transfer_type,
);
@@ -189,4 +207,48 @@ class CoreTransferService extends BaseCoreService
return true;
}
+
+ public function check(int $site_id, array $data){
+ $transfer_no = $data['transfer_no'];
+ $transfer = $this->findTransferByTransferNo($site_id, $transfer_no);
+ if($transfer->isEmpty()) throw new PayException('');
+ if(!in_array($transfer['status'], [TransferDict::DEALING, TransferDict::WAIT]) ) throw new PayException('');//只有待转账和转账中的订单可以校验
+
+ //查询第三方支付单据
+ $transfer_info = $this->pay_event->init($site_id, $transfer->channel, $transfer->type)->getTransfer($transfer_no);
+ if(empty($transfer_info)) throw new PayException();//查询不到转账信息
+ $status = $transfer_info['status'];
+ switch($status){
+ case TransferDict::SUCCESS:
+ $this->success($site_id, $transfer_no, $transfer->type);
+ break;
+ case TransferDict::DEALING:
+ $this->dealing($site_id, $transfer_no, $transfer->type);
+ break;
+ case TransferDict::FAIL:
+ $this->fail($site_id, $transfer_no, $transfer->type);
+ break;
+ }
+ return true;
+ }
+
+ /**
+ * 处理中
+ * @param int $site_id
+ * @param $transfer_no
+ * @param $type
+ * @return true
+ */
+ public function dealing(int $site_id, $transfer_no, $type){
+ $this->model->where([
+ ['site_id', '=', $site_id],
+ ['transfer_no', '=', $transfer_no]
+ ])->update(
+ [
+ 'status' => TransferDict::DEALING,
+ 'type' => $type
+ ]
+ );
+ return true;
+ }
}
\ No newline at end of file
diff --git a/niucloud/app/service/core/paytype/CoreBalanceService.php b/niucloud/app/service/core/paytype/CoreBalanceService.php
index 61336d1ec..900eb6f7f 100644
--- a/niucloud/app/service/core/paytype/CoreBalanceService.php
+++ b/niucloud/app/service/core/paytype/CoreBalanceService.php
@@ -11,7 +11,12 @@
namespace app\service\core\paytype;
+use app\dict\member\MemberAccountChangeTypeDict;
+use app\dict\member\MemberAccountTypeDict;
+use app\dict\pay\PayDict;
+use app\service\core\member\CoreMemberAccountService;
use app\service\core\member\CoreMemberService;
+use app\service\core\pay\CorePayService;
use core\base\BaseCoreService;
/**
@@ -34,13 +39,32 @@ class CoreBalanceService extends BaseCoreService
public function pay($params){
- $password = $params['password'];
- if(empty($password)){
+// $password = $params['password'];
+// if(empty($password)){
+//
+// }
+ $site_id = $params['site_id'];
+ $main_id = $params['main_id'];
+ $main_type = $params['main_type'];
+ $money = $params['money'];
+ $out_trade_no = $params['out_trade_no'];//交易流水号
+ switch($main_type){
+ case 'member':
+ //余额不足会抛出异常
+ (new CoreMemberAccountService())->addLog($site_id, $main_id, MemberAccountTypeDict::BALANCE,
+ -$money, 'order', MemberAccountChangeTypeDict::getType('order')['name'] ?? '', $out_trade_no);
+
+ break;
+ case 'user':
+
+
+ break;
}
- $member_id = $params['main_id'];
- $core_member_service = new CoreMemberService();
-// $core_member_service->
+ return [
+ 'status' => PayDict::STATUS_ED,
+ 'out_trade_no' => $out_trade_no,
+ ];
//业务主体id
//查询一下余额是否足够
//生成账户变动记录,
@@ -51,4 +75,36 @@ class CoreBalanceService extends BaseCoreService
}
+ /**
+ * 订单退款
+ * @param array $params
+ * @return true
+ */
+ public function refund(array $params){
+ $out_trade_no = $params['out_trade_no'];
+ $money = $params['money'];
+ $site_id = $params['site_id'];
+ $refund_no = $params['refund_no'];
+ $core_pay_service = new CorePayService();
+ $pay = $core_pay_service->getInfoByOutTradeNo($out_trade_no);
+
+ $main_id = $pay['main_id'];
+ $main_type = $pay['main_type'];
+
+ switch($main_type){
+ case 'member':
+ //余额不足会抛出异常
+ (new CoreMemberAccountService())->addLog($site_id, $main_id, MemberAccountTypeDict::BALANCE,
+ $money, 'order_refund', MemberAccountChangeTypeDict::getType('order_refund')['name'] ?? '', $refund_no);
+
+ break;
+ case 'user':
+
+
+ break;
+ }
+ return true;
+
+ }
+
}
\ No newline at end of file
diff --git a/niucloud/app/service/core/scan/CoreScanService.php b/niucloud/app/service/core/scan/CoreScanService.php
index 5ce22ea1d..ba75d884c 100644
--- a/niucloud/app/service/core/scan/CoreScanService.php
+++ b/niucloud/app/service/core/scan/CoreScanService.php
@@ -11,7 +11,7 @@
namespace app\service\core\scan;
-use app\enum\scan\ScanEnum;
+use app\dict\scan\ScanDict;
use core\base\BaseCoreService;
use core\exception\CommonException;
use think\facade\Cache;
@@ -41,7 +41,7 @@ class CoreScanService extends BaseCoreService
public function scan(int $site_id, string $action, array $data, int $expire = null){
$key = str_replace('==','', md5(uniqid(null, true)));
$cache_name = self::$cache_name.$key;
- $data['status'] = ScanEnum::WAIT;
+ $data['status'] = ScanDict::WAIT;
$data['is_scan'] = false;//是否被扫描
$data['action'] = $action;
$data['expire'] = $expire ? time() + $expire : 0;
diff --git a/niucloud/app/service/core/cron/CoreCronService.php b/niucloud/app/service/core/schedule/CoreCronService.php
similarity index 75%
rename from niucloud/app/service/core/cron/CoreCronService.php
rename to niucloud/app/service/core/schedule/CoreCronService.php
index c5d1e5262..acdf91505 100644
--- a/niucloud/app/service/core/cron/CoreCronService.php
+++ b/niucloud/app/service/core/schedule/CoreCronService.php
@@ -9,7 +9,7 @@
// | Author: Niucloud Team
// +----------------------------------------------------------------------
-namespace app\service\core\cron;
+namespace app\service\core\schedule;
use app\model\sys\SysCronTask;
use core\base\BaseCoreService;
@@ -61,24 +61,32 @@ class CoreCronService extends BaseCoreService
public function del(int $site_id, int $id){
}
+
+ /**
+ * 发布计划任务
+ * @return true
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\DbException
+ * @throws \think\db\exception\ModelNotFoundException
+ */
public static function execute(){
$now = time();
- $between = $now + 60;
+// $between = $now + 60;
//查询未执行的任务
$where = array(
['status', '=', 1],
- ['next_time', '<', $between]
+// ['next_time', '<', $between]
);
$list = self::$model->where($where)->select()->toArray();
if(!empty($list)){
- $job_handler_classname = 'app\job\sys\Cronexecute';
-
+// $job_handler_classname = 'app\job\sys\Cronexecute';
foreach($list as $k => $v){
$next_time = $v['next_time'];
if($next_time < $now){
- create_job($job_handler_classname, $v ?? []);
+
+// create_job($job_handler_classname, $v ?? []);
}else{
- create_job($job_handler_classname, $v ?? [], $next_time - time());
+// create_job($job_handler_classname, $v ?? [], $next_time - time());
}
}
}
@@ -100,6 +108,8 @@ class CoreCronService extends BaseCoreService
'last_time' => $next_time,
'update_time' => $now
);
+
+ //查询任务
if($type == 'crond'){
$crond_length = $data['crond_length'];
@@ -130,7 +140,38 @@ class CoreCronService extends BaseCoreService
}
+ /**
+ * 消息队列
+ * @param $data
+ * @return false|float|int
+ */
+ public function getNextTime($data){
+ $crond_length = $data['crond_length'];
+ $next_time = $data['next_time'];
+ $now = time();
+ if($now > $next_time){
+ $next_time = $now;
+ }
+ //计算下次执行的时间
+ switch ( $data[ 'crond_type' ] ) {
+ case 'minute'://分
+ $execute_time = $next_time + $crond_length * 60;
+ break;
+ case 1://天
+ $execute_time = strtotime('+' . $crond_length . 'day', $next_time);
+ break;
+ case 2://周
+
+ $execute_time = strtotime('+' . $crond_length . 'week', $next_time);
+ break;
+ case 3://月
+
+ $execute_time = strtotime('+' . $crond_length . 'month', $next_time);
+ break;
+ }
+ return $execute_time;
+ }
/**
* 获取自动任务列表
* @param array $where
diff --git a/niucloud/app/service/core/schedule/CoreScheduleService.php b/niucloud/app/service/core/schedule/CoreScheduleService.php
new file mode 100644
index 000000000..7ae3512fc
--- /dev/null
+++ b/niucloud/app/service/core/schedule/CoreScheduleService.php
@@ -0,0 +1,47 @@
+model = new SysCronTask();
+ }
+
+
+ /**
+ * 获取自动任务列表
+ * @param array $where
+ * @return mixed
+ */
+ public function getList()
+ {
+ $addon_load = new DictLoader('Schedule');
+ $list = $addon_load->load([]);
+ return $list;
+ }
+
+
+}
\ No newline at end of file
diff --git a/niucloud/app/service/core/site/CoreSiteService.php b/niucloud/app/service/core/site/CoreSiteService.php
index b852583f7..bbe3ec8af 100644
--- a/niucloud/app/service/core/site/CoreSiteService.php
+++ b/niucloud/app/service/core/site/CoreSiteService.php
@@ -11,9 +11,11 @@
namespace app\service\core\site;
+use app\dict\site\SiteDict;
use app\model\site\Site;
use app\service\api\login\BaseApiService;
use core\base\BaseCoreService;
+use core\exception\CommonException;
use think\facade\Cache;
/**
@@ -38,16 +40,67 @@ class CoreSiteService extends BaseCoreService
*/
public function getSiteCache(int $site_id){
$cache_name = 'site_info_cache';
- return Cache::tag(self::$cache_tag_name.$site_id)->remember($cache_name.$site_id, function () use ($site_id) {
- $where = [
- ['site_id', '=', $site_id],
- ];
- $site = $this->model->where($where)->field('app_type,site_name,logo,group_id, status, expire_time')->findOrEmpty();
- if(!$site->isEmpty()){
- $site->append(['status_name']);
- }
- return $site->toArray();
- });
+ return cache_remember(
+ $cache_name.$site_id,
+ function () use ($site_id) {
+ $where = [
+ ['site_id', '=', $site_id],
+ ];
+ $site = $this->model->where($where)->field('app_type,site_name,logo,front_end_name,front_end_logo,group_id, status, expire_time')->findOrEmpty();
+ if(!$site->isEmpty()){
+ $site->append(['status_name']);
+ }
+ return $site->toArray();
+ },
+ self::$cache_tag_name.$site_id
+ );
+// return Cache::tag(self::$cache_tag_name.$site_id)->remember($cache_name.$site_id, function () use ($site_id) {
+// $where = [
+// ['site_id', '=', $site_id],
+// ];
+// $site = $this->model->where($where)->field('app_type,site_name,logo,group_id, status, expire_time')->findOrEmpty();
+// if(!$site->isEmpty()){
+// $site->append(['status_name']);
+// }
+// return $site->toArray();
+// });
+ }
+
+ /**
+ * 模型实例
+ * @param int $site_id
+ * @return Site|array|mixed|\think\Model
+ */
+ public function find(int $site_id){
+ return $this->model->findOrEmpty($site_id);
+ }
+ /**
+ * 获取过期的站点
+ * @return void
+ */
+ public function getExpireSiteList(){
+ return $this->model->where([
+ ['status', '<>', SiteDict::EXPIRE],
+ ['expire_time', 'between', [1,time()]],
+ ])->field('site_id,status,site_name')->select()->toArray();
+ }
+ /**
+ * 站点到期(计划任务专用,切勿调用)
+ * @param int $site_id
+ * @return void
+ */
+ public function expire(int $site_id){
+ $site = $this->find($site_id);
+ if($site->isEmpty())throw new CommonException('SITE_NOT_EXIST');
+ if($site->status == SiteDict::EXPIRE) throw new CommonException('SITE_EXPIRE');
+ $this->model->where([[
+ 'site_id', '=', $site_id
+ ]])->update(
+ [
+ 'status' => SiteDict::EXPIRE,
+ ]
+ );
+ return true;
}
}
\ No newline at end of file
diff --git a/niucloud/app/service/core/sys/CoreAgreementService.php b/niucloud/app/service/core/sys/CoreAgreementService.php
index 7e0bc9206..7a440fbd2 100644
--- a/niucloud/app/service/core/sys/CoreAgreementService.php
+++ b/niucloud/app/service/core/sys/CoreAgreementService.php
@@ -11,7 +11,7 @@
namespace app\service\core\sys;
-use app\enum\sys\AgreementEnum;
+use app\dict\sys\AgreementDict;
use app\model\sys\SysAgreement;
use core\base\BaseCoreService;
use core\exception\CommonException;
@@ -37,7 +37,7 @@ class CoreAgreementService extends BaseCoreService
*/
public function getAgreement(int $site_id, string $key)
{
- if(!array_key_exists($key, AgreementEnum::getType())) throw new CommonException('AGREEMENT_TYPE_NOT_EXIST');
+ if(!array_key_exists($key, AgreementDict::getType())) throw new CommonException('AGREEMENT_TYPE_NOT_EXIST');
$where = array(
['agreement_key', '=', $key],
['site_id', '=', $site_id]
@@ -48,7 +48,7 @@ class CoreAgreementService extends BaseCoreService
$info = [
'site_id' => $site_id,
'agreement_key' => $key,
- 'agreement_key_name' => AgreementEnum::getType()[$key] ?? '',
+ 'agreement_key_name' => AgreementDict::getType()[$key] ?? '',
'title' => '',
'content' => '',
'create_time' => '',
@@ -60,7 +60,7 @@ class CoreAgreementService extends BaseCoreService
public function find(int $site_id, string $key)
{
- if(!array_key_exists($key, AgreementEnum::getType())) throw new CommonException('AGREEMENT_TYPE_NOT_EXIST');
+ if(!array_key_exists($key, AgreementDict::getType())) throw new CommonException('AGREEMENT_TYPE_NOT_EXIST');
$where = array(
['agreement_key', '=', $key],
['site_id', '=', $site_id]
@@ -78,7 +78,7 @@ class CoreAgreementService extends BaseCoreService
*/
public function setAgreement(int $site_id, string $key, string $title, string $content)
{
- if(!array_key_exists($key, AgreementEnum::getType())) throw new CommonException('AGREEMENT_TYPE_NOT_EXIST');
+ if(!array_key_exists($key, AgreementDict::getType())) throw new CommonException('AGREEMENT_TYPE_NOT_EXIST');
$where = array(
['agreement_key', '=', $key],
['site_id', '=', $site_id]
diff --git a/niucloud/app/service/core/sys/CoreAttachmentService.php b/niucloud/app/service/core/sys/CoreAttachmentService.php
index 394a9ef4f..ef222f46f 100644
--- a/niucloud/app/service/core/sys/CoreAttachmentService.php
+++ b/niucloud/app/service/core/sys/CoreAttachmentService.php
@@ -12,6 +12,7 @@
namespace app\service\core\sys;
use app\model\sys\SysAttachment;
+use app\service\core\upload\CoreFileService;
use app\service\core\upload\CoreStorageService;
use core\base\BaseCoreService;
use core\exception\AdminException;
@@ -116,10 +117,7 @@ class CoreAttachmentService extends BaseCoreService
* @return void
*/
public function delAll(int $site_id, array $att_ids){
- $core_storage_service = new CoreStorageService();
- $storage_config = $core_storage_service->getDefaultStorage($site_id);
- $storage_type = $storage_config['storage_type'];
- $file_driver = new FileDriver($storage_config, $storage_type);
+ $file_driver = (new CoreFileService())->driver($site_id);
$core_attachment_service = new CoreAttachmentService();
$list = $core_attachment_service->getList($site_id, compact('att_ids'));
if(empty($list))
diff --git a/niucloud/app/service/core/upload/CoreFileService.php b/niucloud/app/service/core/upload/CoreFileService.php
index 7a97cdb19..265459bdf 100644
--- a/niucloud/app/service/core/upload/CoreFileService.php
+++ b/niucloud/app/service/core/upload/CoreFileService.php
@@ -11,7 +11,7 @@
namespace app\service\core\upload;
-use app\enum\sys\FileEnum;
+use app\dict\sys\FileDict;
use core\base\BaseCoreService;
use core\upload\FileDriver;
use core\upload\UploadLoader;
@@ -44,7 +44,7 @@ class CoreFileService extends BaseCoreService
*/
public function driver(int $site_id, bool $is_local = false){
if($is_local){
- self::$storage_type = FileEnum::LOCAL;
+ self::$storage_type = FileDict::LOCAL;
}else{
$core_storage_service = new CoreStorageService();
$storage_config = $core_storage_service->getDefaultStorage($this->request->defaultSiteId());
diff --git a/niucloud/app/service/core/upload/CoreStorageService.php b/niucloud/app/service/core/upload/CoreStorageService.php
index 702050674..3eae7c841 100644
--- a/niucloud/app/service/core/upload/CoreStorageService.php
+++ b/niucloud/app/service/core/upload/CoreStorageService.php
@@ -11,7 +11,7 @@
namespace app\service\core\upload;
-use app\enum\sys\StorageEnum;
+use app\dict\sys\StorageDict;
use app\service\core\sys\CoreConfigService;
use core\base\BaseCoreService;
@@ -30,7 +30,7 @@ class CoreStorageService extends BaseCoreService
{
$storage_list = $this->getStorageList($site_id);
foreach($storage_list as $k => $v){
- if($v['is_use'] == StorageEnum::ON){
+ if($v['is_use'] == StorageDict::ON){
$item_storage = $v['params'] ?? [];
$item_storage['storage_type'] = $v['storage_type'];
return $item_storage;
@@ -46,7 +46,7 @@ class CoreStorageService extends BaseCoreService
public function getStorageConfig(int $site_id){
$info = (new CoreConfigService())->getConfig($site_id, 'STORAGE')['value'] ?? [];
if(empty($info))
- $info = ['default' => StorageEnum::LOCAL];
+ $info = ['default' => StorageDict::LOCAL];
return $info;
@@ -59,12 +59,12 @@ class CoreStorageService extends BaseCoreService
public function getStorageList(int $site_id = 0)
{
$config_type = $this->getStorageConfig($site_id);
- $storage_type_list = StorageEnum::getType();
+ $storage_type_list = StorageDict::getType();
$list = [];
foreach ($storage_type_list as $k => $v) {
$data = [];
$data['storage_type'] = $k;
- $data['is_use'] = $k == $config_type['default'] ? StorageEnum::ON : StorageEnum::OFF;
+ $data['is_use'] = $k == $config_type['default'] ? StorageDict::ON : StorageDict::OFF;
$data['name'] = $v['name'];
foreach ($v['params'] as $k_param => $v_param) {
$data['params'][$k_param] = [
diff --git a/niucloud/app/service/core/upload/CoreUploadConfigService.php b/niucloud/app/service/core/upload/CoreUploadConfigService.php
index 2fb901630..55efdfd02 100644
--- a/niucloud/app/service/core/upload/CoreUploadConfigService.php
+++ b/niucloud/app/service/core/upload/CoreUploadConfigService.php
@@ -11,7 +11,7 @@
namespace app\service\core\upload;
-use app\enum\sys\ConfigKeyEnum;
+use app\dict\sys\ConfigKeyDict;
use app\model\sys\SysConfig;
use app\service\core\sys\CoreConfigService;
use core\base\BaseCoreService;
@@ -32,7 +32,7 @@ class CoreUploadConfigService extends BaseCoreService
*/
public function getUploadConfig(int $site_id)
{
- $info = (new CoreConfigService())->getConfig($site_id, ConfigKeyEnum::UPLOAD)['value'] ?? [];
+ $info = (new CoreConfigService())->getConfig($site_id, ConfigKeyDict::UPLOAD)['value'] ?? [];
if (empty($info)) {
$info = [
'image_ext' => [
@@ -60,7 +60,7 @@ class CoreUploadConfigService extends BaseCoreService
*/
public function setUploadConfig(int $site_id, array $data)
{
- return (new CoreConfigService())->setConfig($site_id, ConfigKeyEnum::UPLOAD, $data);
+ return (new CoreConfigService())->setConfig($site_id, ConfigKeyDict::UPLOAD, $data);
}
diff --git a/niucloud/app/service/core/upload/CoreUploadService.php b/niucloud/app/service/core/upload/CoreUploadService.php
index ffb9329ba..da9cd7b15 100644
--- a/niucloud/app/service/core/upload/CoreUploadService.php
+++ b/niucloud/app/service/core/upload/CoreUploadService.php
@@ -11,7 +11,7 @@
namespace app\service\core\upload;
-use app\enum\sys\FileEnum;
+use app\dict\sys\FileDict;
use app\service\core\sys\CoreAttachmentService;
use core\exception\UploadFileException;
@@ -39,12 +39,12 @@ class CoreUploadService extends CoreFileService
public function image(string $file, int $site_id, string $file_dir, int $cate_id = 0)
{
//校验上传设置
-// $this->checkFile($site_id, $file, FileEnum::IMAGE);
+// $this->checkFile($site_id, $file, FileDict::IMAGE);
//实例化上传引擎
$this->upload_driver = $this->driver($site_id);
//读取上传附件的信息用于后续得校验和数据写入
$this->upload_driver->read($file);
- return $this->after($site_id, $file_dir, FileEnum::IMAGE, $cate_id);
+ return $this->after($site_id, $file_dir, FileDict::IMAGE, $cate_id);
}
/**
@@ -59,12 +59,12 @@ class CoreUploadService extends CoreFileService
{
//校验上传设置
-// $this->checkFile($site_id, $file, FileEnum::VIDEO);
+// $this->checkFile($site_id, $file, FileDict::VIDEO);
//实例化上传引擎
$this->upload_driver = $this->driver($site_id);
//读取上传附件的信息用于后续得校验和数据写入
$this->upload_driver->read($file);
- return $this->after($site_id, $file_dir, FileEnum::VIDEO, $cate_id);
+ return $this->after($site_id, $file_dir, FileDict::VIDEO, $cate_id);
}
@@ -81,7 +81,7 @@ class CoreUploadService extends CoreFileService
public function document(string $file, int $site_id, string $type, string $file_dir, bool $is_local = false, bool $is_rename = true)
{
//校验上传设置(todo 文件暂时不校验,后补安全性校验)
-// $this->checkFile($site_id, $file, $type ?: FileEnum::DOCUMENT);
+// $this->checkFile($site_id, $file, $type ?: FileDict::DOCUMENT);
//实例化上传引擎
$this->upload_driver = $this->driver($site_id, $is_local);
diff --git a/niucloud/app/service/core/weapp/CoreWeappConfigService.php b/niucloud/app/service/core/weapp/CoreWeappConfigService.php
index 33a548ac0..c7b47d05a 100644
--- a/niucloud/app/service/core/weapp/CoreWeappConfigService.php
+++ b/niucloud/app/service/core/weapp/CoreWeappConfigService.php
@@ -11,7 +11,7 @@
namespace app\service\core\weapp;
-use app\enum\sys\ConfigKeyEnum;
+use app\dict\sys\ConfigKeyDict;
use app\model\sys\SysConfig;
use app\service\core\sys\CoreConfigService;
use core\base\BaseCoreService;
@@ -30,7 +30,7 @@ class CoreWeappConfigService extends BaseCoreService
* @return array
*/
public function getWeappConfig(int $site_id){
- $info = (new CoreConfigService())->getConfig($site_id, ConfigKeyEnum::WEAPP)['value'] ?? [];
+ $info = (new CoreConfigService())->getConfig($site_id, ConfigKeyDict::WEAPP)['value'] ?? [];
$config = [
'weapp_name' => $info['weapp_name'] ?? '',//小程序名称
'weapp_original' => $info['weapp_original'] ?? '',//原始ID
@@ -61,7 +61,7 @@ class CoreWeappConfigService extends BaseCoreService
'encoding_aes_key' => $data['encoding_aes_key'] ?? '',
'encryption_type' => $data['encryption_type'] ?? 'not_encrypt',//加解密模式 not_encrypt 明文 compatible 兼容 safe 安全
];
- return (new CoreConfigService())->setConfig($site_id, ConfigKeyEnum::WEAPP, $config);
+ return (new CoreConfigService())->setConfig($site_id, ConfigKeyDict::WEAPP, $config);
}
diff --git a/niucloud/app/service/core/weapp/CoreWeappService.php b/niucloud/app/service/core/weapp/CoreWeappService.php
index b14da6a0b..0a3ef3796 100644
--- a/niucloud/app/service/core/weapp/CoreWeappService.php
+++ b/niucloud/app/service/core/weapp/CoreWeappService.php
@@ -1,12 +1,12 @@
+// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\service\core\weapp;
diff --git a/niucloud/app/service/core/wechat/CoreWechatConfigService.php b/niucloud/app/service/core/wechat/CoreWechatConfigService.php
index 0e86d0160..1acb41b97 100644
--- a/niucloud/app/service/core/wechat/CoreWechatConfigService.php
+++ b/niucloud/app/service/core/wechat/CoreWechatConfigService.php
@@ -11,8 +11,8 @@
namespace app\service\core\wechat;
-use app\enum\channel\WechatEnum;
-use app\enum\sys\ConfigKeyEnum;
+use app\dict\channel\WechatDict;
+use app\dict\sys\ConfigKeyDict;
use app\model\sys\SysConfig;
use app\service\core\sys\CoreConfigService;
use app\service\core\sys\CoreSysConfigService;
@@ -31,7 +31,7 @@ class CoreWechatConfigService extends BaseCoreService
* @param $site_id
*/
public function getWechatConfig(int $site_id){
- $info = (new CoreConfigService())->getConfig($site_id, ConfigKeyEnum::WECHAT)['value'] ?? [];
+ $info = (new CoreConfigService())->getConfig($site_id, ConfigKeyDict::WECHAT)['value'] ?? [];
$config = [
'wechat_name' => $info['wechat_name'] ?? '',//公众号名称
'wechat_original' => $info['wechat_original'] ?? '',//原始ID
@@ -62,7 +62,7 @@ class CoreWechatConfigService extends BaseCoreService
'encoding_aes_key' => $data['encoding_aes_key'] ?? '',
'encryption_type' => $data['encryption_type'] ?? '',
];
- return (new CoreConfigService())->setConfig($site_id, ConfigKeyEnum::WECHAT, $config);
+ return (new CoreConfigService())->setConfig($site_id, ConfigKeyDict::WECHAT, $config);
}
@@ -82,7 +82,7 @@ class CoreWechatConfigService extends BaseCoreService
'business_domain' => $wap_domain,
'js_secure_domain' => $wap_domain,
'web_auth_domain' => $wap_domain,
- 'encryption_type' => WechatEnum::getEncryptionType()
+ 'encryption_type' => WechatDict::getEncryptionType()
];
}
}
\ No newline at end of file
diff --git a/niucloud/app/service/core/wechat/CoreWechatMessageService.php b/niucloud/app/service/core/wechat/CoreWechatMessageService.php
index bb0a92362..7be285d51 100644
--- a/niucloud/app/service/core/wechat/CoreWechatMessageService.php
+++ b/niucloud/app/service/core/wechat/CoreWechatMessageService.php
@@ -11,7 +11,7 @@
namespace app\service\core\wechat;
-use app\enum\channel\WechatEnum;
+use app\dict\channel\WechatDict;
use app\service\core\scan\CoreScanService;
use Closure;
use core\base\BaseCoreService;
@@ -34,31 +34,31 @@ class CoreWechatMessageService extends BaseCoreService
public function message(int $site_id, $message)
{
switch ($message['MsgType']) {
- case WechatEnum::MESSAGE_TYPE_EVENT:
+ case WechatDict::MESSAGE_TYPE_EVENT:
return $this->event($site_id, $message);
return '收到事件消息';
break;
- case WechatEnum::MESSAGE_TYPE_TEXT:
+ case WechatDict::MESSAGE_TYPE_TEXT:
//调用文本回复
return $this->text($site_id, $message);
return '收到文字消息';
break;
- case WechatEnum::MESSAGE_TYPE_IMAGE:
+ case WechatDict::MESSAGE_TYPE_IMAGE:
return '收到图片消息';
break;
- case WechatEnum::MESSAGE_TYPE_VOICE:
+ case WechatDict::MESSAGE_TYPE_VOICE:
return '收到语音消息';
break;
- case WechatEnum::MESSAGE_TYPE_VIDEO:
+ case WechatDict::MESSAGE_TYPE_VIDEO:
return '收到视频消息';
break;
- case WechatEnum::MESSAGE_TYPE_LOCATION:
+ case WechatDict::MESSAGE_TYPE_LOCATION:
return '收到坐标消息';
break;
- case WechatEnum::MESSAGE_TYPE_LINK:
+ case WechatDict::MESSAGE_TYPE_LINK:
return '收到链接消息';
break;
- case WechatEnum::MESSAGE_TYPE_FILE:
+ case WechatDict::MESSAGE_TYPE_FILE:
return '收到文件消息';
// ... 其它消息
default:
@@ -74,10 +74,10 @@ class CoreWechatMessageService extends BaseCoreService
public function event(int $site_id, $message)
{
switch ($message['Event'] ) {
- case WechatEnum::EVENT_SUBSCRIBE:
+ case WechatDict::EVENT_SUBSCRIBE:
return $this->subscribe($site_id, $message);
break;
- case WechatEnum::EVENT_SCAN:
+ case WechatDict::EVENT_SCAN:
return $this->scan($site_id, $message);
break;
}
@@ -114,7 +114,7 @@ class CoreWechatMessageService extends BaseCoreService
}
//如果配置了关注回复,返回关注消息
$core_wechat_reply_service = new CoreWechatReplyService();
- return $core_wechat_reply_service->reply($site_id, WechatEnum::REPLY_SUBSCRIBE) ?? false;
+ return $core_wechat_reply_service->reply($site_id, WechatDict::REPLY_SUBSCRIBE) ?? false;
}
@@ -138,6 +138,6 @@ class CoreWechatMessageService extends BaseCoreService
function text(int $site_id, $message)
{
$core_wechat_reply_service = new CoreWechatReplyService();
- return $core_wechat_reply_service->reply($site_id, WechatEnum::REPLY_KEYWORD, $message['Content']) ?? false;
+ return $core_wechat_reply_service->reply($site_id, WechatDict::REPLY_KEYWORD, $message['Content']) ?? false;
}
}
\ No newline at end of file
diff --git a/niucloud/app/service/core/wechat/CoreWechatReplyService.php b/niucloud/app/service/core/wechat/CoreWechatReplyService.php
index 325e41270..6c462f8dc 100644
--- a/niucloud/app/service/core/wechat/CoreWechatReplyService.php
+++ b/niucloud/app/service/core/wechat/CoreWechatReplyService.php
@@ -11,8 +11,8 @@
namespace app\service\core\wechat;
-use app\enum\channel\ReplyEnum;
-use app\enum\channel\WechatEnum;
+use app\dict\channel\ReplyDict;
+use app\dict\channel\WechatDict;
use app\model\wechat\WechatReply;
use core\base\BaseCoreService;
use core\exception\AdminException;
@@ -42,7 +42,7 @@ class CoreWechatReplyService extends BaseCoreService
{
$where = [
['site_id', '=', $site_id],
- ['reply_type', '=', WechatEnum::REPLY_KEYWORD]
+ ['reply_type', '=', WechatDict::REPLY_KEYWORD]
];
if (!empty($data['keyword'])) {
$where[] = ['keyword', 'like', '%' . $data['keyword'] . '%'];
@@ -64,7 +64,7 @@ class CoreWechatReplyService extends BaseCoreService
return $this->model->where([
['site_id', '=', $site_id],
['id', '=', $id],
- ['reply_type', '=', WechatEnum::REPLY_KEYWORD]]
+ ['reply_type', '=', WechatDict::REPLY_KEYWORD]]
)->findOrEmpty()->toArray();
}
@@ -79,17 +79,17 @@ class CoreWechatReplyService extends BaseCoreService
$list = $this->model->where([
['site_id', '=', $site_id],
['keyword', 'like', '%' . $keyword . '%'],
- ['reply_type', '=', WechatEnum::REPLY_KEYWORD]],
- ['status', '=', ReplyEnum::STATUS_ON]
+ ['reply_type', '=', WechatDict::REPLY_KEYWORD]],
+ ['status', '=', ReplyDict::STATUS_ON]
)->order('sort asc')->select()->toArray();
if (!empty($list)) {
foreach ($list as $v) {
$item_keyword = $v['keyword'];
switch ($v['matching_type']) {
- case ReplyEnum::MATCHING_TYPE_FULL://全匹配
+ case ReplyDict::MATCHING_TYPE_FULL://全匹配
$item_keyword === $keyword && $reply_content = $item_keyword;
break;
- case ReplyEnum::MATCHING_TYPE_LIKE://模糊匹配
+ case ReplyDict::MATCHING_TYPE_LIKE://模糊匹配
stripos($keyword, $item_keyword) !== false && $reply_content = $item_keyword;
break;
}
@@ -112,7 +112,7 @@ class CoreWechatReplyService extends BaseCoreService
public function addKeyword(int $site_id,string $data)
{
$data['site_id'] = $site_id;
- $data['reply_type'] = WechatEnum::REPLY_KEYWORD;
+ $data['reply_type'] = WechatDict::REPLY_KEYWORD;
$this->model->create($data);
return true;
}
@@ -128,7 +128,7 @@ class CoreWechatReplyService extends BaseCoreService
$where = [
['site_id', '=', $site_id],
['id', '=', $id],
- ['reply_type', '=', WechatEnum::REPLY_KEYWORD]
+ ['reply_type', '=', WechatDict::REPLY_KEYWORD]
];
return $this->model->where($where)->update($data);
}
@@ -142,7 +142,7 @@ class CoreWechatReplyService extends BaseCoreService
$where = array(
['site_id', '=', $site_id],
['id', '=', $id],
- ['reply_type', '=', WechatEnum::REPLY_KEYWORD]
+ ['reply_type', '=', WechatDict::REPLY_KEYWORD]
);
$reply = $this->find($where);
if ($reply->isEmpty())
@@ -172,7 +172,7 @@ class CoreWechatReplyService extends BaseCoreService
{
return $this->model->where([
['site_id', '=', $site_id],
- ['reply_type', '=', WechatEnum::REPLY_DEFAULT]
+ ['reply_type', '=', WechatDict::REPLY_DEFAULT]
]
)->findOrEmpty()->toArray();
}
@@ -187,12 +187,12 @@ class CoreWechatReplyService extends BaseCoreService
{
$where = [
['site_id', '=', $site_id],
- ['reply_type', '=', WechatEnum::REPLY_DEFAULT]
+ ['reply_type', '=', WechatDict::REPLY_DEFAULT]
];
$reply = $this->find($where);
//如果不存在,则创建一条默认回复记录
if ($reply->isEmpty()) {
- $data['reply_type'] = WechatEnum::REPLY_DEFAULT;
+ $data['reply_type'] = WechatDict::REPLY_DEFAULT;
$data['site_id'] = $site_id;
return $this->model->create($data);
} else {
@@ -210,7 +210,7 @@ class CoreWechatReplyService extends BaseCoreService
{
return $this->model->where([
['site_id', '=', $site_id],
- ['reply_type', '=', WechatEnum::REPLY_DEFAULT]
+ ['reply_type', '=', WechatDict::REPLY_DEFAULT]
]
)->findOrEmpty()->toArray();
}
@@ -225,12 +225,12 @@ class CoreWechatReplyService extends BaseCoreService
{
$where = [
['site_id', '=', $site_id],
- ['reply_type', '=', WechatEnum::REPLY_SUBSCRIBE]
+ ['reply_type', '=', WechatDict::REPLY_SUBSCRIBE]
];
$reply = $this->find($where);
//如果不存在,则创建一条关注回复记录
if ($reply->isEmpty()) {
- $data['reply_type'] = WechatEnum::REPLY_SUBSCRIBE;
+ $data['reply_type'] = WechatDict::REPLY_SUBSCRIBE;
$data['site_id'] = $site_id;
return $this->model->create($data);
} else {
@@ -250,10 +250,10 @@ class CoreWechatReplyService extends BaseCoreService
public function reply(int $site_id, string $event = '', string $content = '')
{
switch ($event) {
- case WechatEnum::REPLY_SUBSCRIBE://关注回复
+ case WechatDict::REPLY_SUBSCRIBE://关注回复
$info = $this->getSubscribe($site_id);
break;
- case WechatEnum::REPLY_KEYWORD://关键词回复
+ case WechatDict::REPLY_KEYWORD://关键词回复
$info = $this->getKeywordInfoByKeyword($site_id, $content);
break;
}
@@ -263,12 +263,12 @@ class CoreWechatReplyService extends BaseCoreService
}
if(!empty($info)){
//查询状态
- if ($info['status'] == ReplyEnum::STATUS_ON) {
+ if ($info['status'] == ReplyDict::STATUS_ON) {
switch($info['content_type']) {
- case ReplyEnum::CONTENT_TYPE_TEXT://文本
+ case ReplyDict::CONTENT_TYPE_TEXT://文本
$text = new Text($info['content']);
return $text;
- case ReplyEnum::CONTENT_TYPE_NEW://图文
+ case ReplyDict::CONTENT_TYPE_NEW://图文
//todo 转化为临时素材或永久素材
$items = [
new NewsItem($info['content']),
diff --git a/niucloud/app/validate/diy/Diy.php b/niucloud/app/validate/diy/Diy.php
index 7a25bc92d..6a61eacab 100644
--- a/niucloud/app/validate/diy/Diy.php
+++ b/niucloud/app/validate/diy/Diy.php
@@ -11,7 +11,7 @@
namespace app\validate\diy;
-use app\enum\diy\PageEnum;
+use app\dict\diy\TemplateDict;
/**
* 自定义页面验证器
@@ -45,7 +45,7 @@ class Diy extends \think\Validate
*/
protected function checkType($value, $rule, $data = [])
{
- return isset(PageEnum::getPageType()[ $value ]) ? true : get_lang("validate_diy.type_not_exist");
+ return isset(TemplateDict::getTemplate()[ $value ]) ? true : get_lang("validate_diy.type_not_exist");
}
}
\ No newline at end of file
diff --git a/niucloud/app/validate/member/CashOut.php b/niucloud/app/validate/member/CashOut.php
index ced6980b7..bf6c17a41 100644
--- a/niucloud/app/validate/member/CashOut.php
+++ b/niucloud/app/validate/member/CashOut.php
@@ -11,8 +11,8 @@
namespace app\validate\member;
-use app\enum\member\MemberAccountEnum;
-use app\enum\pay\TransferEnum;
+use app\dict\member\MemberAccountTypeDict;
+use app\dict\pay\TransferDict;
use think\Validate;
/**
@@ -36,7 +36,7 @@ class CashOut extends Validate
];
protected function checkAccountId($value, $rule, $data = []) {
- if ($data['transfer_type'] == TransferEnum::WECHAT) {
+ if ($data['transfer_type'] == TransferDict::WECHAT) {
return true;
} else {
return !empty($value) ? true : 'validate_member_cash_out.account_id_require';
@@ -44,12 +44,12 @@ class CashOut extends Validate
}
protected function checkTransferType($value){
- $transfer_type = array_keys(TransferEnum::getTransferType());
+ $transfer_type = array_keys(TransferDict::getTransferType());
return in_array($value, $transfer_type) ? true : 'validate_member_cash_out.not_support_transfer_type';
}
protected function checkAccountType($value) {
- $account_type = [ MemberAccountEnum::MONEY, MemberAccountEnum::COMMISSION ];
+ $account_type = [ MemberAccountTypeDict::MONEY, MemberAccountTypeDict::COMMISSION ];
return in_array($value, $account_type) ? true : 'validate_member_cash_out.not_support_account_type';
}
}
\ No newline at end of file
diff --git a/niucloud/app/validate/member/CashOutAccount.php b/niucloud/app/validate/member/CashOutAccount.php
index b0f927df8..3af033670 100644
--- a/niucloud/app/validate/member/CashOutAccount.php
+++ b/niucloud/app/validate/member/CashOutAccount.php
@@ -11,7 +11,7 @@
namespace app\validate\member;
-use app\enum\pay\TransferEnum;
+use app\dict\pay\TransferDict;
use think\Validate;
/**
@@ -42,7 +42,7 @@ class CashOutAccount extends Validate
}
protected function checkAccountType($value){
- $transfer_type = array_keys(TransferEnum::getTransferType());
+ $transfer_type = array_keys(TransferDict::getTransferType());
return in_array($value, $transfer_type) ? true : 'validate_member_cash_out_account.not_support_transfer_type';
}
}
\ No newline at end of file
diff --git a/niucloud/app/validate/member/Member.php b/niucloud/app/validate/member/Member.php
index 775f968f0..c115a0a34 100644
--- a/niucloud/app/validate/member/Member.php
+++ b/niucloud/app/validate/member/Member.php
@@ -11,8 +11,8 @@
namespace app\validate\member;
-use app\enum\common\CommonEnum;
-use app\enum\member\MemberEnum;
+use app\dict\common\CommonDict;
+use app\dict\member\MemberDict;
use think\Validate;
/**
@@ -50,9 +50,9 @@ class Member extends Validate
];
protected $scene = [
- 'add' => ['nickname', 'birthday', 'username', 'password'],
- 'edit' => ['nickname', 'sex', 'birthday'],
- 'modify' => ['nickname', 'sex', 'birthday'],
+ 'add' => ['birthday', 'mobile', 'password'],
+ 'edit' => ['sex', 'birthday'],
+ 'modify' => ['sex', 'birthday'],
'account_register' => ['username', 'password', 'mobile'],
'reset_password' => ['password', 'mobile'],
'set_status' => ['status']
@@ -67,11 +67,11 @@ class Member extends Validate
*/
protected function checkSex($value, $rule, $data = [])
{
- return isset(CommonEnum::getSexType()[$value]) ? true : get_lang("validate_member.sex_bot_exist");
+ return isset(CommonDict::getSexType()[$value]) ? true : get_lang("validate_member.sex_bot_exist");
}
protected function checkStatus($value, $rule, $data = [])
{
- return isset(MemberEnum::getStatus()[$value]) ? true : get_lang("validate_member.not_exit_status");
+ return isset(MemberDict::getStatus()[$value]) ? true : get_lang("validate_member.not_exit_status");
}
}
\ No newline at end of file
diff --git a/niucloud/app/validate/member/MemberConfig.php b/niucloud/app/validate/member/MemberConfig.php
new file mode 100644
index 000000000..76246512e
--- /dev/null
+++ b/niucloud/app/validate/member/MemberConfig.php
@@ -0,0 +1,36 @@
+ 'number|min:10,max:20'
+ ];
+
+ protected $message = [
+ 'length.number' => 'validate_member_config.length_number',
+ 'length.min' => 'validate_member_config.length_min',
+ 'max.20' => 'validate_member_config.length_max'
+ ];
+
+ protected $scene = [
+ 'set' => ['length'],
+ ];
+}
\ No newline at end of file
diff --git a/niucloud/app/validate/message/AliSms.php b/niucloud/app/validate/message/AliSms.php
index 5e6c6a433..02e1ee02b 100644
--- a/niucloud/app/validate/message/AliSms.php
+++ b/niucloud/app/validate/message/AliSms.php
@@ -9,7 +9,7 @@
// | Author: Niucloud Team
// +----------------------------------------------------------------------
-namespace app\validate\sys;
+namespace app\validate\notice;
use think\Validate;
diff --git a/niucloud/app/validate/pay/Pay.php b/niucloud/app/validate/pay/Pay.php
index 6382a9d0d..97f35c59a 100644
--- a/niucloud/app/validate/pay/Pay.php
+++ b/niucloud/app/validate/pay/Pay.php
@@ -11,7 +11,7 @@
namespace app\validate\pay;
-use app\enum\pay\PayEnum;
+use app\dict\pay\PayDict;
use think\Validate;
/**
@@ -26,17 +26,17 @@ class Pay extends Validate
//用户名或密码的规范可能是从数据库中获取的
protected $rule = [
//支付宝
- 'app_id' => 'requireIf:type,'.PayEnum::ALIPAY,
- 'app_secret_cert' => 'requireIf:type,'.PayEnum::ALIPAY,
- 'app_public_cert_path' => 'requireIf:type,'.PayEnum::ALIPAY,
- 'alipay_public_cert_path' => 'requireIf:type,'.PayEnum::ALIPAY,
- 'alipay_root_cert_path' => 'requireIf:type,'.PayEnum::ALIPAY,
+ 'app_id' => 'requireIf:type,'.PayDict::ALIPAY,
+ 'app_secret_cert' => 'requireIf:type,'.PayDict::ALIPAY,
+ 'app_public_cert_path' => 'requireIf:type,'.PayDict::ALIPAY,
+ 'alipay_public_cert_path' => 'requireIf:type,'.PayDict::ALIPAY,
+ 'alipay_root_cert_path' => 'requireIf:type,'.PayDict::ALIPAY,
//微信
- 'mch_id' => 'requireIf:type,'.PayEnum::WECHATPAY,
- 'mch_secret_key' => 'requireIf:type,'.PayEnum::WECHATPAY,
- 'mch_secret_cert' => 'requireIf:type,'.PayEnum::WECHATPAY,
- 'mch_public_cert_path' => 'requireIf:type,'.PayEnum::WECHATPAY,
+ 'mch_id' => 'requireIf:type,'.PayDict::WECHATPAY,
+ 'mch_secret_key' => 'requireIf:type,'.PayDict::WECHATPAY,
+ 'mch_secret_cert' => 'requireIf:type,'.PayDict::WECHATPAY,
+ 'mch_public_cert_path' => 'requireIf:type,'.PayDict::WECHATPAY,
//支付方式
'type' => 'require|checkPayType',
@@ -73,7 +73,7 @@ class Pay extends Validate
*/
protected function checkPayType($value, $rule, $data = [])
{
- return isset( PayEnum::getPayType()[$value]) ? true : get_lang("validate_pay.not_exit_pay_type");
+ return isset( PayDict::getPayType()[$value]) ? true : get_lang("validate_pay.not_exit_pay_type");
}
}
\ No newline at end of file
diff --git a/niucloud/app/validate/pay/PayTemplate.php b/niucloud/app/validate/pay/PayTemplate.php
index ce4bef959..a6f1d9410 100644
--- a/niucloud/app/validate/pay/PayTemplate.php
+++ b/niucloud/app/validate/pay/PayTemplate.php
@@ -11,7 +11,7 @@
namespace app\validate\pay;
-use app\enum\pay\PayEnum;
+use app\dict\pay\PayDict;
use think\Validate;
/**
@@ -27,17 +27,17 @@ class PayTemplate extends Validate
protected $rule = [
'name' => 'require',
//支付宝
- 'app_id' => 'requireIf:type,'.PayEnum::ALIPAY,
- 'app_secret_cert' => 'requireIf:type,'.PayEnum::ALIPAY,
- 'app_public_cert_path' => 'requireIf:type,'.PayEnum::ALIPAY,
- 'alipay_public_cert_path' => 'requireIf:type,'.PayEnum::ALIPAY,
- 'alipay_root_cert_path' => 'requireIf:type,'.PayEnum::ALIPAY,
+ 'app_id' => 'requireIf:type,'.PayDict::ALIPAY,
+ 'app_secret_cert' => 'requireIf:type,'.PayDict::ALIPAY,
+ 'app_public_cert_path' => 'requireIf:type,'.PayDict::ALIPAY,
+ 'alipay_public_cert_path' => 'requireIf:type,'.PayDict::ALIPAY,
+ 'alipay_root_cert_path' => 'requireIf:type,'.PayDict::ALIPAY,
//微信
- 'mch_id' => 'requireIf:type,'.PayEnum::WECHATPAY,
- 'mch_secret_key' => 'requireIf:type,'.PayEnum::WECHATPAY,
- 'mch_secret_cert' => 'requireIf:type,'.PayEnum::WECHATPAY,
- 'mch_public_cert_path' => 'requireIf:type,'.PayEnum::WECHATPAY,
+ 'mch_id' => 'requireIf:type,'.PayDict::WECHATPAY,
+ 'mch_secret_key' => 'requireIf:type,'.PayDict::WECHATPAY,
+ 'mch_secret_cert' => 'requireIf:type,'.PayDict::WECHATPAY,
+ 'mch_public_cert_path' => 'requireIf:type,'.PayDict::WECHATPAY,
//支付方式
'type' => 'require|checkPayType',
@@ -80,7 +80,7 @@ class PayTemplate extends Validate
*/
protected function checkPayType($value, $rule, $data = [])
{
- return isset( PayEnum::getPayType()[$value]) ? true : get_lang('validate_pay.not_exit_pay_type');
+ return isset( PayDict::getPayType()[$value]) ? true : get_lang('validate_pay.not_exit_pay_type');
}
}
\ No newline at end of file
diff --git a/niucloud/app/validate/site/Site.php b/niucloud/app/validate/site/Site.php
index ac83ec13f..79dae362c 100644
--- a/niucloud/app/validate/site/Site.php
+++ b/niucloud/app/validate/site/Site.php
@@ -26,7 +26,6 @@ class Site extends Validate
'site_name' => 'require|max:20',
'group_id' => 'require|number',
'expire_time' => 'date',
-
];
protected $message = [
@@ -35,7 +34,6 @@ class Site extends Validate
'group_id.require' => 'validate_site.group_id_require',
'group_id.number' => 'validate_site.group_id_number',
'expire_time.number' => 'validate_site.expire_time_number',
-
];
protected $scene = [
diff --git a/niucloud/app/validate/sys/AttachmentCategory.php b/niucloud/app/validate/sys/AttachmentCategory.php
index b16acf9ba..ff0e90cd1 100644
--- a/niucloud/app/validate/sys/AttachmentCategory.php
+++ b/niucloud/app/validate/sys/AttachmentCategory.php
@@ -11,7 +11,7 @@
namespace app\validate\sys;
-use app\enum\sys\FileEnum;
+use app\dict\sys\FileDict;
use think\Validate;
/**
@@ -46,7 +46,7 @@ class AttachmentCategory extends Validate
*/
protected function checkMenuType($value, $rule, $data = [])
{
- return isset(FileEnum::getType()[$value]) ? true : get_lang("validate_attachment.not_exit_type");
+ return isset(FileDict::getType()[$value]) ? true : get_lang("validate_attachment.not_exit_type");
}
diff --git a/niucloud/app/validate/sys/Menu.php b/niucloud/app/validate/sys/Menu.php
index 3e175f431..ae255a26b 100644
--- a/niucloud/app/validate/sys/Menu.php
+++ b/niucloud/app/validate/sys/Menu.php
@@ -11,8 +11,8 @@
namespace app\validate\sys;
-use app\enum\sys\MenuTypeEnum;
-use app\enum\sys\MethodEnum;
+use app\dict\sys\MenuTypeDict;
+use app\dict\sys\MethodDict;
use think\Validate;
/**
@@ -57,7 +57,7 @@ class Menu extends Validate
*/
protected function checkMenuType($value, $rule, $data = [])
{
- return isset(MenuTypeEnum::getMenuType()[$value]) ? true : get_lang("validate_menu.not_exit_menu_type");
+ return isset(MenuTypeDict::getMenuType()[$value]) ? true : get_lang("validate_menu.not_exit_menu_type");
}
/**
@@ -69,7 +69,7 @@ class Menu extends Validate
*/
protected function checkMethodType($value, $rule, $data = [])
{
- return isset(MethodEnum::getMethodType()[$value]) ? true : get_lang("validate_menu.not_exit_request_type");
+ return isset(MethodDict::getMethodType()[$value]) ? true : get_lang("validate_menu.not_exit_request_type");
}
}
\ No newline at end of file