update niucloud

This commit is contained in:
全栈小学生 2024-07-26 10:19:52 +08:00
parent 71defadfff
commit 77d9446299
186 changed files with 4592 additions and 1519 deletions

View File

@ -60,7 +60,7 @@ class Request extends \think\Request
$filter_rule = [
"/<(\\/?)(script|i?frame|style|html|body|title|link|metaf|alert|font|object|\\?|\\%)([^>]*?)>/isU",
"/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",
"/select|join|where|drop|like|modify|rename|insert|update|table|database|alter|truncate|\'|\/\*|\.\.\/|\.\/|union|into|load_file|outfile/is"
"/\\b(select|join|where|drop|like|modify|rename|insert|update|table|database|alter|truncate|\'|\/\*|\.\.\/|\.\/|union|into|load_file|outfile)\\b/is"
];
return preg_replace($filter_rule, '', $param);
}

View File

@ -13,7 +13,6 @@ namespace app\adminapi\controller\addon;
use app\dict\addon\AddonDict;
use app\service\admin\addon\AddonDevelopService;
use app\service\admin\niucloud\AppService;
use core\base\BaseAdminController;
use think\Response;
@ -26,16 +25,16 @@ class AddonDevelop extends BaseAdminController
public function lists()
{
$data = $this->request->params([
['search', '']
[ 'search', '' ]
]);
return success((new AddonDevelopService())->getList($data['search']));
return success(( new AddonDevelopService() )->getList($data[ 'search' ]));
}
public function info($key)
{
return success((new AddonDevelopService())->getInfo($key));
return success(( new AddonDevelopService() )->getInfo($key));
}
/**
* 开发插件新增
* @return Response
@ -43,19 +42,19 @@ class AddonDevelop extends BaseAdminController
public function add(string $key)
{
$data = $this->request->params([
['title', ''],
['desc', ''],
['icon', ''],
['cover', ''],
['key', ''],
['author', ''],
['version', ''],
['type', ''],
['support_app', ''],
[ 'title', '' ],
[ 'desc', '' ],
[ 'icon', '' ],
[ 'cover', '' ],
[ 'key', '' ],
[ 'author', '' ],
[ 'version', '' ],
[ 'type', '' ],
[ 'support_app', '' ],
], false);
$data['key'] = $key;
$data[ 'key' ] = $key;
$this->validate($data, 'app\validate\addon\AddonDevelop.add');
(new AddonDevelopService())->add($key, $data);
( new AddonDevelopService() )->add($key, $data);
return success('ADD_SUCCESS');
}
@ -67,19 +66,19 @@ class AddonDevelop extends BaseAdminController
public function edit(string $key)
{
$data = $this->request->params([
['title', ''],
['desc', ''],
['icon', ''],
['cover', ''],
['key', ''],
['author', ''],
['version', ''],
['type', ''],
['support_app', ''],
[ 'title', '' ],
[ 'desc', '' ],
[ 'icon', '' ],
[ 'cover', '' ],
[ 'key', '' ],
[ 'author', '' ],
[ 'version', '' ],
[ 'type', '' ],
[ 'support_app', '' ],
], false);
$data['key'] = $key;
$data[ 'key' ] = $key;
$this->validate($data, 'app\validate\addon\AddonDevelop.edit');
(new AddonDevelopService())->edit($key, $data);
( new AddonDevelopService() )->edit($key, $data);
return success('EDIT_SUCCESS');
}
@ -91,7 +90,7 @@ class AddonDevelop extends BaseAdminController
*/
public function del(string $key)
{
(new AddonDevelopService())->del($key);
( new AddonDevelopService() )->del($key);
return success('DELETE_SUCCESS');
}
@ -100,8 +99,9 @@ class AddonDevelop extends BaseAdminController
* @param $key
* @return void
*/
public function checkKey($key){
return success(data:(new AddonDevelopService())->checkKey($key));
public function checkKey($key)
{
return success(data:( new AddonDevelopService() )->checkKey($key));
}
/**
@ -109,8 +109,9 @@ class AddonDevelop extends BaseAdminController
* @param $key
* @return Response
*/
public function build($key){
(new AddonDevelopService())->build($key);
public function build($key)
{
( new AddonDevelopService() )->build($key);
return success();
}
@ -119,16 +120,18 @@ class AddonDevelop extends BaseAdminController
* @param $key
* @return Response
*/
public function download($key){
public function download($key)
{
return success(data:(new AddonDevelopService())->download($key));
return success(data:( new AddonDevelopService() )->download($key));
}
/**
*
* @return Response
*/
public function keyBlackList() {
public function keyBlackList()
{
return success(AddonDict::ADDON_KEY_BLACK_LIST);
}
}

View File

@ -22,8 +22,9 @@ class Upgrade extends BaseAdminController
* @param $app_key
* @return Response
*/
public function upgrade($addon = ''){
return success(data:(new UpgradeService())->upgrade($addon));
public function upgrade($addon = '')
{
return success(data:( new UpgradeService() )->upgrade($addon));
}
/**
@ -31,8 +32,9 @@ class Upgrade extends BaseAdminController
* @param $app_key
* @return Response
*/
public function execute($addon = ''){
return success(data:(new UpgradeService())->execute());
public function execute($addon = '')
{
return success(data:( new UpgradeService() )->execute());
}
/**
@ -40,16 +42,18 @@ class Upgrade extends BaseAdminController
* @param $addon
* @return Response
*/
public function getUpgradeContent($addon = '') {
return success(data:(new UpgradeService())->getUpgradeContent($addon));
public function getUpgradeContent($addon = '')
{
return success(data:( new UpgradeService() )->getUpgradeContent($addon));
}
/**
* 获取正在进行的升级任务
* @return Response
*/
public function getUpgradeTask() {
return success(data:(new UpgradeService())->getUpgradeTask());
public function getUpgradeTask()
{
return success(data:( new UpgradeService() )->getUpgradeTask());
}
/**
@ -57,15 +61,17 @@ class Upgrade extends BaseAdminController
* @param $addon
* @return Response
*/
public function upgradePreCheck($addon = '') {
return success(data:(new UpgradeService())->upgradePreCheck($addon));
public function upgradePreCheck($addon = '')
{
return success(data:( new UpgradeService() )->upgradePreCheck($addon));
}
/**
* 清除
* @return Response
*/
public function clearUpgradeTask() {
return success(data:(new UpgradeService())->clearUpgradeTask());
public function clearUpgradeTask()
{
return success(data:( new UpgradeService() )->clearUpgradeTask());
}
}

View File

@ -29,9 +29,9 @@ class Auth extends BaseAdminController
public function authMenuList()
{
$data = $this->request->params([
['addon', 'all'],
[ 'addon', 'all' ],
]);
return success((new AuthService())->getAuthMenuList(1, $data['addon']));
return success(( new AuthService() )->getAuthMenuList(1, $data[ 'addon' ]));
}
/**
@ -41,19 +41,20 @@ class Auth extends BaseAdminController
* @throws DbException
* @throws ModelNotFoundException
*/
public function getAuthAddonList(){
return success((new AuthSiteService())->getAuthAddonList());
public function getAuthAddonList()
{
return success(( new AuthSiteService() )->getAuthAddonList());
}
/**
* 获取登录用户信息
* @return Response
*/
public function get()
{
return success((new AuthService())->getAuthInfo());
return success(( new AuthService() )->getAuthInfo());
}
/**
* 修改登录用户信息
* @param $field
@ -62,27 +63,26 @@ class Auth extends BaseAdminController
public function modify($field)
{
$data = $this->request->params([
['value', ''],
['field', $field]
[ 'value', '' ],
[ 'field', $field ]
]);
// $this->validate($data, 'app\validate\sys\User.modify');
(new AuthService())->modifyAuth($field, $data['value']);
( new AuthService() )->modifyAuth($field, $data[ 'value' ]);
return success('MODIFY_SUCCESS');
}
/**
* 更新用户
*/
public function edit()
{
$data = $this->request->params([
['real_name', ''],
['head_img', ''],
['password', ''],
['original_password', '']
[ 'real_name', '' ],
[ 'head_img', '' ],
[ 'password', '' ],
[ 'original_password', '' ]
]);
(new AuthService())->editAuth($data);
( new AuthService() )->editAuth($data);
return success('MODIFY_SUCCESS');
}
@ -92,7 +92,7 @@ class Auth extends BaseAdminController
*/
public function site()
{
return success((new AuthSiteService())->getSiteInfo());
return success(( new AuthSiteService() )->getSiteInfo());
}
/**
@ -104,6 +104,6 @@ class Auth extends BaseAdminController
*/
public function getShowMenuList()
{
return success((new AuthSiteService())->getShowMenuList());
return success(( new AuthSiteService() )->getShowMenuList());
}
}

View File

@ -19,7 +19,6 @@ use think\Response;
class Config extends BaseAdminController
{
/**
* 获取登录设置
* @return Response

View File

@ -11,18 +11,11 @@
namespace app\adminapi\controller\login;
use addon\vipcard\app\service\core\CoreOrderRefundService;
use app\dict\member\MemberAccountTypeDict;
use app\service\admin\auth\ConfigService;
use app\service\admin\auth\LoginService;
use app\service\admin\member\MemberService;
use app\service\admin\upgrade\UpgradeService;
use app\service\core\addon\CoreAddonDevelopBuildService;
use app\service\core\addon\WapTrait;
use app\service\core\menu\CoreMenuService;
use app\service\core\upload\CoreFileService;
use core\base\BaseAdminController;
use think\facade\Db;
use think\Response;
class Login extends BaseAdminController
@ -37,12 +30,12 @@ class Login extends BaseAdminController
{
$data = $this->request->params([
['username', ''],
['password', ''],
[ 'username', '' ],
[ 'password', '' ],
]);
//参数验证
//验证码验证
$result = (new LoginService())->login($data['username'], $data['password'], $app_type);
$result = ( new LoginService() )->login($data[ 'username' ], $data[ 'password' ], $app_type);
if (!$result) {
//账号密码错误...., 重置验证码
return fail('USER_ERROR');
@ -57,26 +50,26 @@ class Login extends BaseAdminController
*/
public function logout()
{
(new LoginService)->logout();
( new LoginService )->logout();
return success('LOGOUT');
}
/**
* 获取登录设置
* @return Response
*/
public function getConfig()
{
return success((new ConfigService())->getConfig());
return success(( new ConfigService() )->getConfig());
}
public function test(){
(new UpgradeService())->executeSql(root_path().'app/upgrade/v011/upgrade.sql');
public function test()
{
( new UpgradeService() )->executeSql(root_path() . 'app/upgrade/v011/upgrade.sql');
}
public function geAddonPackagePath(string $addon)
{
return root_path() . 'addon' .DIRECTORY_SEPARATOR . $addon . DIRECTORY_SEPARATOR . 'package' . DIRECTORY_SEPARATOR;
return root_path() . 'addon' . DIRECTORY_SEPARATOR . $addon . DIRECTORY_SEPARATOR . 'package' . DIRECTORY_SEPARATOR;
}
}

View File

@ -26,13 +26,13 @@ class Account extends BaseAdminController
public function point()
{
$data = $this->request->params([
['member_id', ''],
['from_type', ''],
['create_time', []],
['keywords', ''],
[ 'member_id', '' ],
[ 'from_type', '' ],
[ 'create_time', [] ],
[ 'keywords', '' ],
]);
$data['account_type'] = 'point';
return success((new MemberAccountService())->getPage($data));
$data[ 'account_type' ] = 'point';
return success(( new MemberAccountService() )->getPage($data));
}
/**
@ -41,22 +41,22 @@ class Account extends BaseAdminController
public function sumPoint()
{
$data = $this->request->params([
['member_id', ''],
[ 'member_id', '' ],
]);
$member_account_service = new MemberAccountService();
$member_service = new MemberService();
if (empty($data['member_id'])) {
if (empty($data[ 'member_id' ])) {
$commission_data = [
'point_get' => $member_service->getSum('point_get'),//累计
'point_use' => abs($member_account_service->getExpensesSumAccount(MemberAccountTypeDict::POINT)),
];
return success($commission_data);
} else {
$info = $member_account_service->getMemberAccountInfo($data['member_id']);
$info = $member_account_service->getMemberAccountInfo($data[ 'member_id' ]);
$commission_data = [
'point_get' => $info['point_get'],
'point_use' => abs($member_account_service->getExpensesSumAccount(MemberAccountTypeDict::POINT, $data['member_id'])),
'point_get' => $info[ 'point_get' ],
'point_use' => abs($member_account_service->getExpensesSumAccount(MemberAccountTypeDict::POINT, $data[ 'member_id' ])),
];
return success($commission_data);
}
@ -69,13 +69,13 @@ class Account extends BaseAdminController
public function balance()
{
$data = $this->request->params([
['member_id', ''],
['from_type', ''],
['create_time', []],
['keywords', ''],
[ 'member_id', '' ],
[ 'from_type', '' ],
[ 'create_time', [] ],
[ 'keywords', '' ],
]);
$data['account_type'] = 'balance';
return success((new MemberAccountService())->getPage($data));
$data[ 'account_type' ] = 'balance';
return success(( new MemberAccountService() )->getPage($data));
}
/**
@ -85,28 +85,29 @@ class Account extends BaseAdminController
public function money()
{
$data = $this->request->params([
['member_id', ''],
['from_type', ''],
['create_time', []],
['keywords', ''],
[ 'member_id', '' ],
[ 'from_type', '' ],
[ 'create_time', [] ],
[ 'keywords', '' ],
]);
$data['account_type'] = 'money';
return success((new MemberAccountService())->getPage($data));
$data[ 'account_type' ] = 'money';
return success(( new MemberAccountService() )->getPage($data));
}
/**
* 查询成长值
* @return Response
*/
public function growth() {
public function growth()
{
$data = $this->request->params([
['member_id', ''],
['from_type', ''],
['create_time', []],
['keywords', ''],
[ 'member_id', '' ],
[ 'from_type', '' ],
[ 'create_time', [] ],
[ 'keywords', '' ],
]);
$data['account_type'] = 'growth';
return success((new MemberAccountService())->getPage($data));
$data[ 'account_type' ] = 'growth';
return success(( new MemberAccountService() )->getPage($data));
}
/**
@ -115,12 +116,12 @@ class Account extends BaseAdminController
public function adjustPoint()
{
$data = $this->request->params([
['member_id', ''],
['account_data', 0],
['memo', ''],
[ 'member_id', '' ],
[ 'account_data', 0 ],
[ 'memo', '' ],
]);
$res = (new MemberAccountService())->adjustPoint($data);
return success('SUCCESS', ['id' => $res]);
$res = ( new MemberAccountService() )->adjustPoint($data);
return success('SUCCESS', [ 'id' => $res ]);
}
/**
@ -129,12 +130,12 @@ class Account extends BaseAdminController
public function adjustBalance()
{
$data = $this->request->params([
['member_id', ''],
['account_data', 0],
['memo', ''],
[ 'member_id', '' ],
[ 'account_data', 0 ],
[ 'memo', '' ],
]);
$res = (new MemberAccountService())->adjustBalance($data);
return success('SUCCESS', ['id' => $res]);
$res = ( new MemberAccountService() )->adjustBalance($data);
return success('SUCCESS', [ 'id' => $res ]);
}
/**
@ -144,12 +145,12 @@ class Account extends BaseAdminController
public function adjustMoney()
{
$data = $this->request->params([
['member_id', ''],
['account_data', 0],
['memo', ''],
[ 'member_id', '' ],
[ 'account_data', 0 ],
[ 'memo', '' ],
]);
$res = (new MemberAccountService())->adjustMoney($data);
return success('SUCCESS', ['id' => $res]);
$res = ( new MemberAccountService() )->adjustMoney($data);
return success('SUCCESS', [ 'id' => $res ]);
}
/**
@ -159,13 +160,13 @@ class Account extends BaseAdminController
public function commission()
{
$data = $this->request->params([
['member_id', ''],
['from_type', ''],
['create_time', []],
['keywords', ''],
[ 'member_id', '' ],
[ 'from_type', '' ],
[ 'create_time', [] ],
[ 'keywords', '' ],
]);
$data['account_type'] = 'commission';
return success((new MemberAccountService())->getPage($data));
$data[ 'account_type' ] = 'commission';
return success(( new MemberAccountService() )->getPage($data));
}
/**
@ -174,12 +175,12 @@ class Account extends BaseAdminController
public function sumCommission()
{
$data = $this->request->params([
['member_id', ''],
[ 'member_id', '' ],
]);
$member_account_service = new MemberAccountService();
$member_service = new MemberService();
if (empty($data['member_id'])) {
if (empty($data[ 'member_id' ])) {
$commission_data = [
'total_commission' => $member_service->getSum('commission_get'),//累计
'commission' => $member_service->getSum('commission'),//未提现
@ -188,12 +189,12 @@ class Account extends BaseAdminController
];
return success($commission_data);
} else {
$info = $member_account_service->getMemberAccountInfo($data['member_id']);
$info = $member_account_service->getMemberAccountInfo($data[ 'member_id' ]);
$commission_data = [
'commission' => $info['commission'],
'commission_cash_outing' => $info['commission_cash_outing'],
'withdrawn_commission' => $member_account_service->getWithdrawnCommission($data['member_id']),//已提现
'total_commission' => $info['commission_get'],
'commission' => $info[ 'commission' ],
'commission_cash_outing' => $info[ 'commission_cash_outing' ],
'withdrawn_commission' => $member_account_service->getWithdrawnCommission($data[ 'member_id' ]),//已提现
'total_commission' => $info[ 'commission_get' ],
];
return success($commission_data);
}
@ -205,10 +206,10 @@ class Account extends BaseAdminController
public function sumBalance()
{
$data = $this->request->params([
['member_id', ''],
[ 'member_id', '' ],
]);
$member_account_service = new MemberAccountService();
if (empty($data['member_id'])) {
if (empty($data[ 'member_id' ])) {
$balance_data = [
MemberAccountTypeDict::BALANCE => number_format($member_account_service->getSumAccount(MemberAccountTypeDict::BALANCE), 2, '.', ''),
@ -216,7 +217,7 @@ class Account extends BaseAdminController
];
return success($balance_data);
} else {
return success($member_account_service->getMemberAccountInfo($data['member_id']));
return success($member_account_service->getMemberAccountInfo($data[ 'member_id' ]));
}
}
@ -227,7 +228,7 @@ class Account extends BaseAdminController
*/
public function changeType(string $account_type)
{
$res = (new MemberAccountService())->getFromType($account_type);
$res = ( new MemberAccountService() )->getFromType($account_type);
return success($res);
}
@ -239,5 +240,4 @@ class Account extends BaseAdminController
return success(MemberAccountTypeDict::getType());
}
}

View File

@ -15,7 +15,6 @@ use app\dict\member\MemberDict;
use app\dict\member\MemberRegisterChannelDict;
use app\dict\member\MemberRegisterTypeDict;
use app\service\admin\member\MemberService;
use app\service\core\sys\CoreExportService;
use core\base\BaseAdminController;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;

View File

@ -32,18 +32,6 @@ class MemberLevel extends BaseAdminController
return success(( new MemberLevelService() )->getPage($data));
}
/**
* 会员等级列表
* @return Response
*/
public function lists()
{
$data = $this->request->params([
[ 'level_name', '' ],
]);
return success(( new MemberLevelService() )->getList($data));
}
/**
* 会员等级详情
* @param int $id

View File

@ -11,7 +11,6 @@
namespace app\adminapi\controller\pay;
use app\dict\pay\PayDict;
use app\service\admin\pay\PayService;
use core\base\BaseAdminController;

View File

@ -62,7 +62,6 @@ class PayChannel extends BaseAdminController
return success((new PayChannelService())->getListByChannel($channel));
}
/**
* 支付设置
* @return Response

View File

@ -87,7 +87,6 @@ class SiteGroup extends BaseAdminController
*/
public function del($group_id)
{
(new SiteGroupService())->del($group_id);
return success('DELETE_SUCCESS');
}

View File

@ -32,7 +32,6 @@ class User extends BaseAdminController
]);
$list = (new SiteUserService())->getPage($data);
return success($list);
}
/**
@ -66,7 +65,6 @@ class User extends BaseAdminController
return success('ADD_SUCCESS', ['uid' => $uid]);
}
/**
* 更新用户
*/

View File

@ -59,5 +59,4 @@ class Agreement extends BaseAdminController
return success('EDIT_SUCCESS');
}
}

View File

@ -29,5 +29,4 @@ class App extends BaseAdminController
return success((new AppService())->getAppList());
}
}

View File

@ -38,5 +38,4 @@ class Common extends BaseAdminController
return success((new DateDict())->getWeek());
}
}

View File

@ -46,8 +46,6 @@ class Config extends BaseAdminController
[ "full_address", "" ],
[ "phone", "" ],
[ "business_hours", "" ],
[ "site_name", "" ],
[ "logo", "" ],
[ "front_end_name", "" ],
[ "front_end_logo", "" ],
[ "front_end_icon", "" ],
@ -135,26 +133,6 @@ class Config extends BaseAdminController
return success(( new ConfigService() )->getMap());
}
/**
* 设置快捷菜单
*/
public function setShortcutMenu()
{
$data = $this->request->params([
[ 'menu', [] ],
]);
( new ConfigService() )->setShortcutMenu($data[ 'menu' ]);
return success();
}
/**
* 获取站点快捷菜单
*/
public function getShortcutMenu()
{
return success(data: ( new ConfigService() )->getShortcutMenu());
}
/**
* 获取开发者key
* @return Response

View File

@ -28,8 +28,7 @@ class Menu extends BaseAdminController
*/
public function lists($app_type)
{
return success((new MenuService())->getAllMenuList($app_type, 'all', 1));
return success(( new MenuService() )->getAllMenuList($app_type, 'all', 1));
}
/**
@ -39,7 +38,7 @@ class Menu extends BaseAdminController
*/
public function info($app_type, $menu_key)
{
return success((new MenuService())->get($app_type, $menu_key));
return success(( new MenuService() )->get($app_type, $menu_key));
}
/**
@ -49,24 +48,24 @@ class Menu extends BaseAdminController
public function add()
{
$data = $this->request->params([
['app_type', ''],
['menu_name', ''],
['menu_type', 0],
['menu_key', ''],
['parent_key', ''],
['icon', ''],
['api_url', ''],
['view_path', ''],
['router_path', ''],
['methods', ''],
['sort', 0],
['status', MenuDict::ON],
['is_show', 0],
['addon', ''],
['menu_short_name','']
[ 'app_type', '' ],
[ 'menu_name', '' ],
[ 'menu_type', 0 ],
[ 'menu_key', '' ],
[ 'parent_key', '' ],
[ 'icon', '' ],
[ 'api_url', '' ],
[ 'view_path', '' ],
[ 'router_path', '' ],
[ 'methods', '' ],
[ 'sort', 0 ],
[ 'status', MenuDict::ON ],
[ 'is_show', 0 ],
[ 'addon', '' ],
[ 'menu_short_name', '' ]
]);
$this->validate($data, 'app\validate\sys\Menu.add');
(new MenuService())->add($data);
( new MenuService() )->add($data);
return success('ADD_SUCCESS');
}
@ -76,22 +75,22 @@ class Menu extends BaseAdminController
public function edit($app_type, $menu_key)
{
$data = $this->request->params([
['menu_name', ''],
['parent_key', ''],
['menu_type', 0],
['icon', ''],
['api_url', ''],
['router_path', ''],
['view_path', ''],
['methods', ''],
['sort', 0],
['status', MenuDict::ON],
['is_show', 0],
['addon', ''],
['menu_short_name','']
[ 'menu_name', '' ],
[ 'parent_key', '' ],
[ 'menu_type', 0 ],
[ 'icon', '' ],
[ 'api_url', '' ],
[ 'router_path', '' ],
[ 'view_path', '' ],
[ 'methods', '' ],
[ 'sort', 0 ],
[ 'status', MenuDict::ON ],
[ 'is_show', 0 ],
[ 'addon', '' ],
[ 'menu_short_name', '' ]
]);
$this->validate($data, 'app\validate\sys\Menu.edit');
(new MenuService())->edit($app_type, $menu_key, $data);
( new MenuService() )->edit($app_type, $menu_key, $data);
return success('EDIT_SUCCESS');
}
@ -121,13 +120,13 @@ class Menu extends BaseAdminController
*/
public function del($app_type, $menu_key)
{
(new MenuService())->del($app_type, $menu_key);
( new MenuService() )->del($app_type, $menu_key);
return success('DELETE_SUCCESS');
}
public function refreshMenu()
{
(new InstallSystemService())->install();
( new InstallSystemService() )->install();
return success('SUCCESS');
}
@ -136,7 +135,7 @@ class Menu extends BaseAdminController
*/
public function getSystem()
{
return success( (new MenuService())->getSystemMenu('all', 1));
return success(( new MenuService() )->getSystemMenu('all', 1));
}
/**
@ -144,7 +143,7 @@ class Menu extends BaseAdminController
*/
public function getAddonMenu($app_key)
{
return success( (new MenuService())->getAddonMenu($app_key,'all', 1));
return success(( new MenuService() )->getAddonMenu($app_key, 'all', 1));
}
/**
@ -152,7 +151,8 @@ class Menu extends BaseAdminController
* @param $addon
* @return Response
*/
public function getMenuByTypeDir($addon = 'system') {
return success( (new MenuService())->getMenuByTypeDir($addon));
public function getMenuByTypeDir($addon = 'system')
{
return success(( new MenuService() )->getMenuByTypeDir($addon));
}
}

View File

@ -0,0 +1,279 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\adminapi\controller\sys;
use app\service\admin\sys\PrinterService;
use app\service\admin\sys\PrinterTemplateService;
use core\base\BaseAdminController;
/**
* 小票打印机控制器
* Class Printer
* @package app\adminapi\controller\sys
*/
class Printer extends BaseAdminController
{
/**
* 获取小票打印机分页列表
* @return \think\Response
*/
public function pages()
{
$data = $this->request->params([
[ "printer_name", "" ],
]);
return success(( new PrinterService() )->getPage($data));
}
/**
* 获取小票打印机列表
* @return \think\Response
*/
public function lists()
{
$data = $this->request->params([
[ "printer_name", "" ],
]);
return success(( new PrinterService() )->getList($data));
}
/**
* 小票打印机详情
* @param int $id
* @return \think\Response
*/
public function info(int $id)
{
return success(( new PrinterService() )->getInfo($id));
}
/**
* 添加小票打印机
* @return \think\Response
*/
public function add()
{
$data = $this->request->params([
[ "brand", "" ],
[ "printer_name", "" ],
[ "printer_code", "" ],
[ "printer_key", "" ],
[ "open_id", "" ],
[ "apikey", "" ],
[ 'template_type', '' ],
[ 'trigger', '' ],
[ "value", "" ],
[ "print_width", "" ],
[ "status", 0 ],
]);
$this->validate($data, 'app\validate\sys\Printer.add');
$id = ( new PrinterService() )->add($data);
return success('ADD_SUCCESS', [ 'id' => $id ]);
}
/**
* 小票打印机编辑
* @param $id 小票打印机id
* @return \think\Response
*/
public function edit(int $id)
{
$data = $this->request->params([
[ "brand", "" ],
[ "printer_name", "" ],
[ "printer_code", "" ],
[ "printer_key", "" ],
[ "open_id", "" ],
[ "apikey", "" ],
[ 'template_type', '' ],
[ 'trigger', '' ],
[ "value", "" ],
[ "print_width", "" ],
[ "status", 0 ],
]);
$this->validate($data, 'app\validate\sys\Printer.edit');
( new PrinterService() )->edit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 修改小票打印机状态
* @return \think\Response
*/
public function modifyStatus()
{
$data = $this->request->params([
[ "printer_id", 0 ],
[ "status", 0 ],
]);
( new PrinterService() )->modifyStatus($data);
return success('SUCCESS');
}
/**
* 小票打印机删除
* @param $id 小票打印机id
* @return \think\Response
*/
public function del(int $id)
{
( new PrinterService() )->del($id);
return success('DELETE_SUCCESS');
}
/**
* 获取小票打印模板分页列表
* @return \think\Response
*/
public function templatePageLists()
{
$data = $this->request->params([
[ "template_type", "" ],
[ "template_name", "" ],
]);
return success(( new PrinterTemplateService() )->getPage($data));
}
/**
* 获取小票打印模板列表
* @return \think\Response
* @throws \think\db\exception\DbException
*/
public function templateLists()
{
$data = $this->request->params([
[ "template_type", "" ],
[ "template_name", "" ],
]);
return success(( new PrinterTemplateService() )->getList($data));
}
/**
* 小票打印模板详情
* @param int $id
* @return \think\Response
*/
public function templateInfo(int $id)
{
return success(( new PrinterTemplateService() )->getInfo($id));
}
/**
* 添加小票打印模板
* @return \think\Response
*/
public function templateAdd()
{
$data = $this->request->params([
[ "template_type", "" ],
[ "template_name", "" ],
[ "value", "" ],
]);
$this->validate($data, 'app\validate\sys\PrinterTemplate.add');
$id = ( new PrinterTemplateService() )->add($data);
return success('ADD_SUCCESS', [ 'id' => $id ]);
}
/**
* 小票打印模板编辑
* @param $id 小票打印模板id
* @return \think\Response
*/
public function templateEdit(int $id)
{
$data = $this->request->params([
[ "template_type", "" ],
[ "template_name", "" ],
[ "value", "" ],
]);
$this->validate($data, 'app\validate\sys\PrinterTemplate.edit');
( new PrinterTemplateService() )->edit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 小票打印模板删除
* @param $id 小票打印模板id
* @return \think\Response
*/
public function templateDel(int $id)
{
( new PrinterTemplateService() )->del($id);
return success('DELETE_SUCCESS');
}
/**
* 获取小票打印模板类型
* @return array|\think\Response
*/
public function getType()
{
return success(( new PrinterService() )->getType());
}
/**
* 获取小票打印机设备品牌
* @return array|\think\Response
*/
public function getBrand()
{
$data = $this->request->params([
[ "brand", "" ],
]);
return success(( new PrinterService() )->getBrand($data[ 'brand' ]));
}
/**
* 测试打印
* @param int $id
* @return \think\Response
*/
public function testPrint(int $id)
{
( new PrinterService() )->testPrint($id);
return success('SUCCESS');
}
/**
* 刷新打印机token
* @param int $id
* @return \think\Response
*/
public function refreshToken(int $id)
{
( new PrinterService() )->refreshToken($id);
return success('SUCCESS');
}
/**
* 打印小票内容
* @return \think\Response
*/
public function printTicket()
{
$data = $this->request->params([
[ "type", "" ], // 小票模板类型
[ "trigger", "" ], // 触发时机
[ 'business', [] ] // 业务参数,根据自身业务传值
]);
$res = ( new PrinterService() )->printTicket($data);
if ($res[ 'code' ] == 0) {
return success('SUCCESS');
} else {
return fail($res[ 'message' ]);
}
}
}

View File

@ -51,6 +51,15 @@ class User extends BaseAdminController
return success($list);
}
public function getUserSelect()
{
$data = $this->request->params([
['username', '']
]);
$list = (new UserService())->getUserSelect($data);
return success($list);
}
public function checkUserIsExist() {
$data = $this->request->params([
['username', ''],

View File

@ -48,5 +48,4 @@ class Config extends BaseAdminController
return success('SET_SUCCESS');
}
}

View File

@ -13,7 +13,6 @@ namespace app\adminapi\controller\weapp;
use app\service\admin\weapp\WeappDeliveryService;
use core\base\BaseAdminController;
use think\Response;
/**
* 小程序发货信息管理服务

View File

@ -31,7 +31,6 @@ class Template extends BaseAdminController
return success($wechat_template_service->getList());
}
/**
* 菜单信息
* @return Response

View File

@ -13,7 +13,6 @@ namespace app\adminapi\controller\weapp;
use app\service\admin\weapp\WeappVersionService;
use core\base\BaseAdminController;
use Exception;
use think\Response;
/**

View File

@ -34,8 +34,8 @@ class Reply extends BaseAdminController
public function getKeywordLists()
{
$data = $this->request->params([
['keyword', ''],
['name', '']
[ 'keyword', '' ],
[ 'name', '' ]
]);
$wechat_reply_service = new WechatReplyService();
return success($wechat_reply_service->getKeywordPage($data));
@ -49,12 +49,12 @@ class Reply extends BaseAdminController
{
$wechat_reply_service = new WechatReplyService();
$data = $this->request->params([
['name', ''],
['keyword', ''],
['matching_type', '', false],
['reply_method', ''],
['content', ''],
['sort', ''],
[ 'name', '' ],
[ 'keyword', '' ],
[ 'matching_type', '', false ],
[ 'reply_method', '' ],
[ 'content', '' ],
[ 'sort', '' ],
]);
$wechat_reply_service->addKeyword($data);
return success('ADD_SUCCESS');
@ -68,12 +68,12 @@ class Reply extends BaseAdminController
{
$wechat_reply_service = new WechatReplyService();
$data = $this->request->params([
['name', ''],
['keyword', ''],
['matching_type', '', false],
['reply_method', ''],
['content', ''],
['sort', ''],
[ 'name', '' ],
[ 'keyword', '' ],
[ 'matching_type', '', false ],
[ 'reply_method', '' ],
[ 'content', '' ],
[ 'sort', '' ],
]);
$wechat_reply_service->editKeyword($id, $data);
return success('EDIT_SUCCESS');
@ -107,7 +107,7 @@ class Reply extends BaseAdminController
public function editDefault()
{
$data = $this->request->params([
['content', ''],
[ 'content', '' ],
]);
$wechat_reply_service = new WechatReplyService();
$wechat_reply_service->editDefault($data);
@ -131,12 +131,11 @@ class Reply extends BaseAdminController
public function editSubscribe()
{
$data = $this->request->params([
['content', ''],
[ 'content', '' ],
]);
$wechat_reply_service = new WechatReplyService();
$wechat_reply_service->editSubscribe($data);
return success('SET_SUCCESS');
}
}

View File

@ -28,10 +28,10 @@ class Template extends BaseAdminController
public function sync()
{
$data = $this->request->params([
['keys', []]
[ 'keys', [] ]
]);
$wechat_template_service = new WechatTemplateService();
return success(data:$wechat_template_service->syncAll($data['keys']));
return success(data:$wechat_template_service->syncAll($data[ 'keys' ]));
}
/**
@ -44,5 +44,4 @@ class Template extends BaseAdminController
return success($wechat_template_service->getList());
}
}

View File

@ -11,7 +11,6 @@
namespace app\adminapi\controller\wxoplatform;
use app\service\admin\wechat\WechatConfigService;
use app\service\admin\wxoplatform\OplatformConfigService;
use core\base\BaseAdminController;
use think\Response;

View File

@ -54,7 +54,7 @@ Route::group('diy', function() {
Route::get('link', 'diy.Diy/getLink');
// 设为使用
Route::put('use', 'diy.Diy/setUse');
Route::put('use/:id', 'diy.Diy/setUse');
// 获取页面模板
Route::get('template', 'diy.Diy/getTemplate');

View File

@ -46,6 +46,14 @@ Route::group('member', function () {
Route::get('status/list', 'member.Member/getStatusList');
//会员设置状态
Route::put('setstatus/:status', 'member.Member/setStatus');
// 获取会员权益字典
Route::get('dict/benefits', 'member.Member/getMemberBenefitsDict');
// 获取会员礼包字典
Route::get('dict/gift', 'member.Member/getMemberGiftDict');
// 获取成长值规则字典
Route::get('dict/growth_rule', 'member.Member/getGrowthRuleDict');
// 获取积分规则字典
Route::get('dict/point_rule', 'member.Member/getPointRuleDict');
/***************************************************** 会员标签 ****************************************************/
//会员标签列表
Route::get('label', 'member.MemberLabel/lists');
@ -101,6 +109,10 @@ Route::group('member', function () {
Route::get('config/point_rule', 'member.Config/getPointRuleConfig');
//设置积分规则
Route::post('config/point_rule', 'member.Config/setPointRuleConfig');
//获取注册与登录设置
Route::get('config/member', 'member.Config/getMemberConfig');
//更新注册与登录设置
Route::post('config/member', 'member.Config/setMemberConfig');
/***************************************************** 会员体现**************************************************/
//会员提现列表
Route::get('cash_out', 'member.CashOut/lists');
@ -116,23 +128,9 @@ Route::group('member', function () {
Route::get('cash_out/status', 'member.CashOut/getStatusList');
//提现统计信息
Route::get('cash_out/stat', 'member.CashOut/stat');
//获取注册与登录设置
Route::get('config/member', 'member.Config/getMemberConfig');
//更新注册与登录设置
Route::post('config/member', 'member.Config/setMemberConfig');
// 获取会员权益字典
Route::get('dict/benefits', 'member.Member/getMemberBenefitsDict');
// 获取会员礼包字典
Route::get('dict/gift', 'member.Member/getMemberGiftDict');
// 获取成长值规则字典
Route::get('dict/growth_rule', 'member.Member/getGrowthRuleDict');
// 获取积分规则字典
Route::get('dict/point_rule', 'member.Member/getPointRuleDict');
/***************************************************** 会员等级 ****************************************************/
//会员等级分页列表
Route::get('level', 'member.MemberLevel/pages');
//会员等级列表
Route::get('level/list', 'member.MemberLevel/lists');
//会员等级详情
Route::get('level/:id', 'member.MemberLevel/info');
//会员等级添加

View File

@ -78,24 +78,6 @@ Route::group('sys', function() {
//地图设置
Route::get('config/map', 'sys.Config/getMap');
//首页加载设置
Route::put('config/site_index', 'sys.Config/setSiteIndex');
//获取首页加载
Route::get('config/site_index', 'sys.Config/getSiteIndexList');
//平台首页加载设置
Route::put('config/admin_index', 'sys.Config/setAdminIndex');
//获取平台首页加载
Route::get('config/admin_index', 'sys.Config/getAdminIndexList');
// 获取手机端首页加载
Route::get('config/wap_index', 'sys.Config/getWapIndexList');
//快捷菜单设置
Route::put('config/shortcut_menu', 'sys.Config/setShortcutMenu');
//获取快捷菜单
Route::get('config/shortcut_menu', 'sys.Config/getShortcutMenu');
//登录注册设置
Route::get('config/login', 'login.Config/getConfig');
//登录注册设置
@ -273,6 +255,62 @@ Route::group('sys', function() {
// 百度编辑器文件上传
Route::post('ueditor', 'sys.Ueditor/upload');
/***************************************************** 小票打印管理 ****************************************************/
// 小票打印机分页列表
Route::get('printer', 'sys.Printer/pages');
// 小票打印机列表
Route::get('printer/list', 'sys.Printer/lists');
// 小票打印机详情
Route::get('printer/:id', 'sys.Printer/info');
// 添加小票打印机
Route::post('printer', 'sys.Printer/add');
// 编辑小票打印机
Route::put('printer/:id', 'sys.Printer/edit');
// 修改小票打印机状态
Route::put('printer/status', 'sys.Printer/modifyStatus');
// 删除小票打印机
Route::delete('printer/:id', 'sys.Printer/del');
// 小票打印模板分页列表
Route::get('printer/template', 'sys.Printer/templatePageLists');
// 小票打印模板列表
Route::get('printer/template/list', 'sys.Printer/templateLists');
// 小票打印模板详情
Route::get('printer/template/:id', 'sys.Printer/templateInfo');
// 添加小票打印模板
Route::post('printer/template', 'sys.Printer/templateAdd');
// 编辑小票打印模板
Route::put('printer/template/:id', 'sys.Printer/templateEdit');
// 删除小票打印模板
Route::delete('printer/template/:id', 'sys.Printer/templateDel');
// 获取小票打印模板类型
Route::get('printer/type', 'sys.Printer/getType');
// 获取小票打印机设备品牌
Route::get('printer/brand', 'sys.Printer/getBrand');
// 刷新易联云打印机token
Route::put('printer/refreshtoken/:id', 'sys.Printer/refreshToken');
// 测试易联云打印
Route::put('printer/testprint/:id', 'sys.Printer/testPrint');
// 打印小票内容
Route::post('printer/printticket', 'sys.Printer/printTicket');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,

View File

@ -24,6 +24,8 @@ Route::group('user', function () {
Route::get('user', 'user.User/lists');
//全部用户列表
Route::get('user_all', 'user.User/getUserAll');
//添加站点可选用户列表
Route::get('user_select', 'user.User/getUserSelect');
//用户详情
Route::get('user/:uid', 'user.User/info');
// 查询账号是否存在

View File

@ -16,7 +16,7 @@ use core\base\BaseApiController;
/**
* 协议控制器
* Class Article
* Class Agreement
* @package app\api\controller\agreement
*/
class Agreement extends BaseApiController

View File

@ -1,57 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的saas管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\api\controller\article;
use app\service\api\article\ArticleService;
use core\base\BaseApiController;
use think\Response;
/**
* 文章控制器
* Class Article
* @package app\api\controller\article
*/
class Article extends BaseApiController
{
/**
* 文章列表
* @return Response
*/
public function lists(){
$data = $this->request->params([
['title', ''],
['category_id', ''],
]);
return success((new ArticleService())->getPage($data));
}
public function all(){
$data = $this->request->params([
['title', ''],
['category_id', ''],
['ids', []],
['limit', 0]
]);
return success((new ArticleService())->getAll($data, $data['limit']));
}
/**
* 文章详情
* @param int $id
* @return Response
*/
public function info(int $id){
return success((new ArticleService())->getInfo($id));
}
}

View File

@ -1,47 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的saas管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\api\controller\article;
use app\service\api\article\ArticleCategoryService;
use core\base\BaseApiController;
use think\Response;
/**
* 文章分类
* Class ArticleCategory
* @package app\api\controller\article
*/
class ArticleCategory extends BaseApiController
{
/**
* 文章分类列表
* @return Response
*/
public function lists(){
$data = $this->request->params([
['name', ''],
]);
return success((new ArticleCategoryService())->getPage($data));
}
/**
* 文章分类详情
* @param int $id
* @return Response
*/
public function info(int $id){
return success((new ArticleCategoryService())->getInfo($id));
}
}

View File

@ -23,9 +23,7 @@ class Config extends BaseController
*/
public function getLoginConfig()
{
return success((new MemberConfigService())->getLoginConfig());
return success(( new MemberConfigService() )->getLoginConfig());
}
}

View File

@ -11,7 +11,9 @@
namespace app\api\controller\login;
use app\dict\member\MemberLoginTypeDict;
use app\service\api\captcha\CaptchaService;
use app\service\api\login\ConfigService;
use app\service\api\login\LoginService;
use core\base\BaseController;
use Exception;
@ -25,20 +27,20 @@ class Login extends BaseController
*/
public function login()
{
$data = $this->request->params([
['username', ''],
['password', ''],
[ 'username', '' ],
[ 'password', '' ],
]);
//校验登录注册配置
( new ConfigService() )->checkLoginConfig(MemberLoginTypeDict::USERNAME);
//参数验证
//验证码验证
$result = (new LoginService())->account($data['username'], $data['password']);
$result = ( new LoginService() )->account($data[ 'username' ], $data[ 'password' ]);
if (!$result) {
//账号密码错误, 重置验证码
return fail('ACCOUNT_OR_PASSWORD_ERROR');
}
return success($result);
}
/**
@ -47,7 +49,7 @@ class Login extends BaseController
*/
public function logout()
{
(new LoginService)->logout();
( new LoginService )->logout();
return success('MEMBER_LOGOUT');
}
@ -57,7 +59,7 @@ class Login extends BaseController
*/
public function captcha()
{
return success((new CaptchaService())->create());
return success(( new CaptchaService() )->create());
}
/**
@ -69,9 +71,9 @@ class Login extends BaseController
public function sendMobileCode($type)
{
$data = $this->request->params([
['mobile', ''],
[ 'mobile', '' ],
]);
return success((new LoginService())->sendMobileCode($data['mobile'], $type));
return success(( new LoginService() )->sendMobileCode($data[ 'mobile' ], $type));
}
/**
@ -81,9 +83,11 @@ class Login extends BaseController
public function mobile()
{
$data = $this->request->params([
['mobile', ''],
[ 'mobile', '' ],
]);
return success((new LoginService())->mobile($data['mobile']));
//校验登录注册配置
( new ConfigService() )->checkLoginConfig(MemberLoginTypeDict::MOBILE);
return success(( new LoginService() )->mobile($data[ 'mobile' ]));
}
/**
@ -93,12 +97,12 @@ class Login extends BaseController
public function resetPassword()
{
$data = $this->request->params([
['mobile', ''],
['password', '']
[ 'mobile', '' ],
[ 'password', '' ]
]);
//参数验证
$this->validate($data, 'app\validate\member\Member.reset_password');
(new LoginService())->resetPassword($data['mobile'], $data['password']);
( new LoginService() )->resetPassword($data[ 'mobile' ], $data[ 'password' ]);
return success('PASSWORD_RESET_SUCCESS');
}
}

View File

@ -11,6 +11,8 @@
namespace app\api\controller\login;
use app\dict\member\MemberLoginTypeDict;
use app\service\api\login\ConfigService;
use app\service\api\login\RegisterService;
use core\base\BaseController;
use think\Response;
@ -26,14 +28,16 @@ class Register extends BaseController
{
$data = $this->request->params([
['username', ''],
['password', ''],
['mobile', ''],
[ 'username', '' ],
[ 'password', '' ],
[ 'mobile', '' ],
]);
//校验登录注册配置
( new ConfigService() )->checkLoginConfig(MemberLoginTypeDict::USERNAME);
//参数验证
$this->validate($data, 'app\validate\member\Member.account_register');
//验证码验证
$result = (new RegisterService())->account($data['username'], $data['password'], $data['mobile']);
$result = ( new RegisterService() )->account($data[ 'username' ], $data[ 'password' ], $data[ 'mobile' ]);
return success($result);
}
@ -44,16 +48,17 @@ class Register extends BaseController
public function mobile()
{
$data = $this->request->params([
['mobile', ''],
[ 'mobile', '' ],
]);
//校验登录注册配置
( new ConfigService() )->checkLoginConfig(MemberLoginTypeDict::MOBILE);
//参数验证
$this->validate($data, [
'mobile' => 'require|mobile'
]);
//验证码验证
$result = (new RegisterService())->mobile($data['mobile']);
$result = ( new RegisterService() )->mobile($data[ 'mobile' ]);
return success($result);
}
}

View File

@ -33,10 +33,12 @@ class Account extends BaseApiController
public function point(): Response
{
$data = $this->request->params([
['from_type', '']
['from_type', ''],
['amount_type', 'all'],//全部all 收入income 支出disburse
['create_time', []],
]);
$data['account_type'] = MemberAccountTypeDict::POINT;
return success((new MemberAccountService())->getPage($data));
return success((new MemberAccountService())->getPointPage($data));
}
/**
@ -59,9 +61,10 @@ class Account extends BaseApiController
public function balanceList(): Response
{
$data = $this->request->params([
['from_type', '']
['from_type', ''],
['create_time', []]
]);
return success((new MemberAccountService())->getPages($data));
return success((new MemberAccountService())->getBalancePage($data));
}
/**
@ -98,9 +101,11 @@ class Account extends BaseApiController
public function commission(): Response
{
$data = $this->request->params([
['keyword', ''],
['from_type', ''],
['account_data_gt', ''],
['account_data_lt', ''],
['create_time', []],
]);
$data['account_type'] = MemberAccountTypeDict::COMMISSION;
return success((new MemberAccountService())->getPage($data));

View File

@ -15,9 +15,6 @@ use app\service\api\login\AuthService;
use app\service\api\member\MemberLogService;
use app\service\api\member\MemberService;
use core\base\BaseApiController;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;
use think\db\exception\ModelNotFoundException;
use think\Response;
class Member extends BaseApiController

View File

@ -11,7 +11,6 @@
namespace app\api\controller\sys;
use app\service\api\scan\ScanService;
use app\service\api\verify\VerifyService;
use core\base\BaseApiController;
use think\Response;
@ -64,6 +63,7 @@ class Verify extends BaseApiController
['relate_tag', 0],
['type', ''],
['code', ''],
['keyword', ''],
['create_time', []]
]);
return success(data:(new VerifyService())->getRecordsPageByVerifier($data));

View File

@ -48,7 +48,6 @@ class Weapp extends BaseApiController
return success($weapp_auth_service->register($data[ 'openid' ], $data[ 'mobile' ], $data[ 'mobile_code' ], $data[ 'unionid' ]));
}
public function subscribeMessage()
{
$data = $this->request->params([ [ 'keys', '' ] ]);
@ -68,7 +67,6 @@ class Weapp extends BaseApiController
if ($result) {
return success([ 'is_trade_managed' => true ]);
}
} catch (\Exception $e) {
}
return success([ 'is_trade_managed' => false ]);
@ -86,7 +84,17 @@ class Weapp extends BaseApiController
$wechat_template_service = new WeappDeliveryService();
$result = $wechat_template_service->getMsgJumpPath($data[ 'out_trade_no' ]);
return success([ 'path' => $result ]);
}
/**
* 更新openid
* @return Response
*/
public function updateOpenid()
{
$data = $this->request->params([ [ 'code', '' ] ]);
$weapp_auth_service = new WeappAuthService();
return success($weapp_auth_service->updateOpenid($data[ 'code' ]));
}
}

View File

@ -13,7 +13,6 @@ namespace app\api\controller\wechat;
use app\service\api\wechat\WechatAuthService;
use core\base\BaseController;
use EasyWeChat\Kernel\Exceptions\InvalidArgumentException;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;
use think\db\exception\ModelNotFoundException;
@ -27,38 +26,41 @@ class Wechat extends BaseController
* 获取跳转获取code
* @return Response
*/
public function getCodeUrl(){
public function getCodeUrl()
{
$data = $this->request->params([
['url', ''],
['scopes', '']
[ 'url', '' ],
[ 'scopes', '' ]
]);
$wechat_auth_service = new WechatAuthService();
return success($wechat_auth_service->authorization($data['url'], $data['scopes']));
return success($wechat_auth_service->authorization($data[ 'url' ], $data[ 'scopes' ]));
}
/**
* code获取微信信息
* @return Response
*/
public function getWechatUser(){
public function getWechatUser()
{
$data = $this->request->params([
['code', ''],
[ 'code', '' ],
]);
$wechat_auth_service = new WechatAuthService();
$data = $wechat_auth_service->userFromCode($data['code']);
return success(['data'=> json_encode($data)]);
$data = $wechat_auth_service->userFromCode($data[ 'code' ]);
return success([ 'data' => json_encode($data) ]);
}
/**
* 授权信息登录
* @return Response
*/
public function wechatLogin(){
public function wechatLogin()
{
$data = $this->request->params([
['data', ''],
[ 'data', '' ],
]);
$wechat_auth_service = new WechatAuthService();
[$avatar, $nickname, $openid, $unionid] = json_decode($data['data'], true);
[ $avatar, $nickname, $openid, $unionid ] = json_decode($data[ 'data' ], true);
return success($wechat_auth_service->login($openid, $nickname, $avatar, $unionid));
}
@ -69,63 +71,78 @@ class Wechat extends BaseController
* @throws DbException
* @throws ModelNotFoundException
*/
public function login(){
public function login()
{
$data = $this->request->params([
['code', ''],
[ 'code', '' ],
]);
$wechat_auth_service = new WechatAuthService();
return success($wechat_auth_service->loginByCode($data['code']));
return success($wechat_auth_service->loginByCode($data[ 'code' ]));
}
/**
* 注册
* @return Response
*/
public function register(){
public function register()
{
$data = $this->request->params([
['openid', ''],
['unionid', ''],
['mobile', ''],
[ 'openid', '' ],
[ 'unionid', '' ],
[ 'mobile', '' ],
]);
//参数验证
$this->validate($data, [
'mobile' => 'mobile'
]);
$wechat_auth_service = new WechatAuthService();
return success($wechat_auth_service->register($data['openid'], $data['mobile'], wx_unionid: $data['unionid']));
return success($wechat_auth_service->register($data[ 'openid' ], $data[ 'mobile' ], wx_unionid: $data[ 'unionid' ]));
}
/**
* 同步
* @return Response
*/
public function sync(){
public function sync()
{
$data = $this->request->params([
['code', ''],
[ 'code', '' ],
]);
$wechat_auth_service = new WechatAuthService();
return success($wechat_auth_service->sync($data['code']));
return success($wechat_auth_service->sync($data[ 'code' ]));
}
/**
* 获取jssdk config
* @return Response
*/
public function jssdkConfig(){
public function jssdkConfig()
{
$data = $this->request->params([
['url', ''],
[ 'url', '' ],
]);
$wechat_auth_service = new WechatAuthService();
return success($wechat_auth_service->jssdkConfig($data['url']));
return success($wechat_auth_service->jssdkConfig($data[ 'url' ]));
}
/**
* 扫码登录
* @return Response
*/
public function scanLogin(){
public function scanLogin()
{
$wechat_auth_service = new WechatAuthService();
return success($wechat_auth_service->scanLogin());
}
/**
* 更新openid
* @return Response
*/
public function updateOpenid()
{
$data = $this->request->params([ [ 'code', '' ] ]);
$wechat_auth_service = new WechatAuthService();
return success($wechat_auth_service->updateOpenid($data[ 'code' ]));
}
}

View File

@ -1,38 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的saas管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
use app\api\middleware\ApiChannel;
use app\api\middleware\ApiCheckToken;
use app\api\middleware\ApiLog;
use think\facade\Route;
/**
* 文章管理
*/
Route::group('article', function () {
/***************************************************** 文章管理 ****************************************************/
//文章列表
Route::get('article', 'article.Article/lists');
//文章详情
Route::get('article/:id', 'article.Article/info');
//文章
Route::get('article/all', 'article.Article/all');
/***************************************************** 文章分类管理 ****************************************************/
//文章分类列表
Route::get('category', 'article.ArticleCategory/lists');
//文章分类详情
Route::get('category/:id', 'article.ArticleCategory/info');
})->middleware(ApiChannel::class)
->middleware(ApiCheckToken::class, false)
->middleware(ApiLog::class);

View File

@ -91,9 +91,6 @@ Route::group('member', function () {
//删除会员收货地址
Route::delete('address/:id', 'member.Address/del');
/***************************************************** 会员等级 **************************************************/
Route::get('level', 'member.Level/lists');
/***************************************************** 会员签到 **************************************************/
//会员签到记录
Route::get('sign', 'member.MemberSign/lists');
@ -118,6 +115,9 @@ Route::group('member', function () {
/***************************************************** 会员管理 ****************************************************/
//会员日志
Route::post('log', 'member.Member/log');
/***************************************************** 会员等级 **************************************************/
Route::get('level', 'member.Level/lists');
})->middleware(ApiChannel::class)
->middleware(ApiCheckToken::class)
->middleware(ApiLog::class);

View File

@ -144,5 +144,15 @@ Route::group(function() {
})->middleware(ApiChannel::class)
->middleware(ApiCheckToken::class)
->middleware(ApiLog::class);
Route::group(function() {
//公众号更新用户openid
Route::put('wechat/update_openid', 'wechat.Wechat/updateOpenid');
//小程序更新用户openid
Route::put('weapp/update_openid', 'weapp.Weapp/updateOpenid');
})->middleware(ApiChannel::class)
->middleware(ApiCheckToken::class, true)
->middleware(ApiLog::class);
//加载插件路由
( new DictLoader("Route") )->load([ 'app_type' => 'api' ]);

View File

@ -7,7 +7,6 @@ use app\service\admin\install\InstallSystemService;
use app\service\core\menu\CoreMenuService;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;

View File

@ -11,11 +11,8 @@
namespace app\command;
use core\exception\CommonException;
use core\job\Dispatch;
use think\console\Input;
use think\console\Output;
use think\queue\Job;
/**
* worker 兼容think自定义指令

View File

@ -18,17 +18,16 @@ use Workerman\Worker;
class Queue extends Command
{
use WorkerCommand;
public function configure()
{
// 指令配置
// 指令配置
$this->setName('queue:listen')
->addArgument('action', Argument::OPTIONAL, "start|stop|restart|reload|status|connections", 'start')
->addOption('mode', 'm', Option::VALUE_OPTIONAL, 'Run the workerman server in daemon mode.')
->setDescription('基于Redis的消息队列支持消息延迟处理。');
}
/**
* 执行任务
* @return void
@ -36,16 +35,15 @@ class Queue extends Command
protected function execute(Input $input, Output $output)
{
$this->resetCli($input, $output);
Worker::$pidFile = runtime_path() .'workerman_queue.pid';
Worker::$logFile = runtime_path().'workerman.log';
Worker::$pidFile = runtime_path() . 'workerman_queue.pid';
Worker::$logFile = runtime_path() . 'workerman.log';
$worker = new Worker();
$worker->name = 'queue_work';
// $worker->count = 3;
$worker->onWorkerStart = function () use($output){
$worker->onWorkerStart = function() use ($output) {
// 定时每10秒一次
Timer::add(30, function()use($output)
{
(new SysSchedule())->select();
Timer::add(30, function() use ($output) {
( new SysSchedule() )->select();
});
$redis_option = [
'connect_timeout' => 10,
@ -53,31 +51,31 @@ class Queue extends Command
'retry_seconds' => 5,
'prefix' => md5(root_path())
];
if(!empty(env('redis.redis_password'))){
$redis_option['auth'] = env('redis.redis_password');
if (!empty(env('redis.redis_password'))) {
$redis_option[ 'auth' ] = env('redis.redis_password');
}
$redis_option['db'] = env('redis.select');
$client = new Client('redis://'.env('redis.redis_hostname').':'.env('redis.port'), $redis_option);
$redis_option[ 'db' ] = env('redis.select');
$client = new Client('redis://' . env('redis.redis_hostname') . ':' . env('redis.port'), $redis_option);
$queue_list = $this->getAllQueue();
foreach ($queue_list as $queue_class_name){
foreach ($queue_list as $queue_class_name) {
$queue_class_name = str_replace('.php', '', $queue_class_name);
// 订阅
$client->subscribe($queue_class_name, function($data) use($queue_class_name, $output){
echo "\n".'['.date('Y-m-d H:i:s').']'." Processing:" . $queue_class_name;
try{
$class_name = '\\' .$queue_class_name;
$client->subscribe($queue_class_name, function($data) use ($queue_class_name, $output) {
echo "\n" . '[' . date('Y-m-d H:i:s') . ']' . " Processing:" . $queue_class_name;
try {
$class_name = '\\' . $queue_class_name;
$class = new $class_name();
$class->fire($data);
} catch (\Throwable $e) {
Log::write(date('Y-m-d H:i:s').',队列有错误:'.$queue_class_name.'_'.$e->getMessage().'_'.$e->getFile().'_'.$e->getLine());
Log::write(date('Y-m-d H:i:s') . ',队列有错误:' . $queue_class_name . '_' . $e->getMessage() . '_' . $e->getFile() . '_' . $e->getLine());
}
echo "\n".'['.date('Y-m-d H:i:s').']'." Processed:" . $queue_class_name;
echo "\n" . '[' . date('Y-m-d H:i:s') . ']' . " Processed:" . $queue_class_name;
});
}
// 消费失败触发的回调(可选)
$client->onConsumeFailure(function (\Throwable $exception, $package) use($output){
echo "\n"."队列 " . $package['queue'] . " 消费失败,".$exception->getMessage();
$client->onConsumeFailure(function(\Throwable $exception, $package) use ($output) {
echo "\n" . "队列 " . $package[ 'queue' ] . " 消费失败," . $exception->getMessage();
});
};
Worker::runAll();
@ -87,26 +85,27 @@ class Queue extends Command
* 捕获所有队列任务
* @return array
*/
public function getAllQueue(){
public function getAllQueue()
{
$class_list = [];
$system_dir = root_path() . 'app' . DIRECTORY_SEPARATOR . 'job';
$addon_dir = root_path() . 'addon' . DIRECTORY_SEPARATOR;
if(is_dir($system_dir)){
if (is_dir($system_dir)) {
search_dir($system_dir, $app_data, root_path());
$class_list = array_merge($class_list, $app_data);
}
$addons = (new CoreAddonService())->getInstallAddonList();
$addons = ( new CoreAddonService() )->getInstallAddonList();
foreach ($addons as $v) {
$addon_path = $addon_dir .$v['key']. DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR. 'job';
$addon_path = $addon_dir . $v[ 'key' ] . DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'job';
if (is_dir($addon_path)) {
search_dir($addon_path, $addon_data, root_path());
$class_list = array_merge($class_list, $addon_data);
}
}
foreach($class_list as &$v){
foreach ($class_list as &$v) {
$v = str_replace('.php', '', $v);
$v = str_replace('/', '\\', $v);
}

View File

@ -16,6 +16,7 @@ use Workerman\Worker;
class Schedule extends Command
{
use WorkerCommand;
public function configure()
{
// 指令配置
@ -25,8 +26,6 @@ class Schedule extends Command
->setDescription('定时任务类似linux的crontab。支持秒级别定时。');
}
/**
* 执行任务
* @return void
@ -34,27 +33,27 @@ class Schedule extends Command
protected function execute(Input $input, Output $output)
{
$this->resetCli($input, $output);
Worker::$pidFile = runtime_path() .'workerman_schedule.pid';
Worker::$pidFile = runtime_path() . 'workerman_schedule.pid';
$worker = new Worker();
$worker->name = 'schedule_work';
$worker->count = 1;
$output->writeln('['.date('Y-m-d H:i:s').']'." Schedule Starting...");
$output->writeln('[' . date('Y-m-d H:i:s') . ']' . " Schedule Starting...");
// 设置时区,避免运行结果与预期不一致
date_default_timezone_set('PRC');
$worker->onWorkerStart = function () use($output){
$worker->onWorkerStart = function() use ($output) {
// // 每分钟的第1秒执行.用于计划任务是否仍在执行
new Crontab('*/10 * * * * *', function(){
$file = root_path('runtime').'.schedule';
new Crontab('*/10 * * * * *', function() {
$file = root_path('runtime') . '.schedule';
file_put_contents($file, time());
});
$core_schedule_service = new CoreScheduleService();
//查询所有的计划任务
$task_list = $core_schedule_service->getList(['status' => ScheduleDict::ON]);
$output->writeln('['.date('Y-m-d H:i:s').']'." Schedule Started.");
$task_list = $core_schedule_service->getList([ 'status' => ScheduleDict::ON ]);
$output->writeln('[' . date('Y-m-d H:i:s') . ']' . " Schedule Started.");
foreach ($task_list as $item) {
//获取定时任务时间字符串
new Crontab($this->getCrontab($item['time']), function () use ($core_schedule_service, $item, $output) {
if(!empty($item['class'])){
new Crontab($this->getCrontab($item[ 'time' ]), function() use ($core_schedule_service, $item, $output) {
if (!empty($item[ 'class' ])) {
$core_schedule_service->execute($item, $output);
}
@ -77,14 +76,14 @@ class Schedule extends Command
* @param $data
* @return string
*/
protected function getCrontab($data): string
protected function getCrontab($data) : string
{
$sec = $data['sec'] ?? '*';
$min = $data['min'] ?? '*';
$hour = $data['hour'] ?? '*';
$day = $data['day'] ?? '*';
$week = $data['week'] ?? '*';
$type = $data['type'] ?? '';
$sec = $data[ 'sec' ] ?? '*';
$min = $data[ 'min' ] ?? '*';
$hour = $data[ 'hour' ] ?? '*';
$day = $data[ 'day' ] ?? '*';
$week = $data[ 'week' ] ?? '*';
$type = $data[ 'type' ] ?? '';
switch ($type) {
case 'sec':// 每隔几秒
$crontab = '*/' . $sec . ' * * * * *';
@ -99,10 +98,10 @@ class Schedule extends Command
$crontab = '0 ' . $min . ' ' . $hour . ' */' . $day . ' * *';
break;
case 'week':// 每周一次,周几具体时间执行
$crontab = '0 ' .$min . ' ' . $hour . ' * * ' . $week;
$crontab = '0 ' . $min . ' ' . $hour . ' * * ' . $week;
break;
case 'month':// 每月一次,某日具体时间执行
$crontab = '0 ' .$min . ' ' . $hour . ' ' . $day . ' * *';
$crontab = '0 ' . $min . ' ' . $hour . ' ' . $day . ' * *';
break;
}
return $crontab ?? '0 */1 * * * *';

View File

@ -21,6 +21,7 @@ use Workerman\Worker;
class Workerman extends Command
{
use WorkerCommand;
public function configure()
{
// 指令配置
@ -30,8 +31,6 @@ class Workerman extends Command
->setDescription('Workerman高性能PHP应用容器');
}
/**
* 执行任务
* @return void
@ -40,48 +39,47 @@ class Workerman extends Command
{
$this->resetCli($input, $output);
//计划任务
Worker::$pidFile = runtime_path() .'workerman_schedule.pid';
Worker::$pidFile = runtime_path() . 'workerman_schedule.pid';
$worker = new Worker();
$worker->name = 'schedule_work';
$worker->count = 1;
// 设置时区,避免运行结果与预期不一致
date_default_timezone_set('PRC');
$worker->onWorkerStart = function () use($output){
$output->writeln('['.date('Y-m-d H:i:s').']'." Schedule Starting...");
$worker->onWorkerStart = function() use ($output) {
$output->writeln('[' . date('Y-m-d H:i:s') . ']' . " Schedule Starting...");
// // 每分钟的第1秒执行.用于计划任务是否仍在执行
new Crontab('*/10 * * * * *', function(){
$file = root_path('runtime').'.schedule';
new Crontab('*/10 * * * * *', function() {
$file = root_path('runtime') . '.schedule';
file_put_contents($file, time());
});
$core_schedule_service = new CoreScheduleService();
//查询所有的计划任务
$task_list = $core_schedule_service->getList(['status' => ScheduleDict::ON]);
$task_list = $core_schedule_service->getList([ 'status' => ScheduleDict::ON ]);
foreach ($task_list as $item) {
//获取定时任务时间字符串
new Crontab($this->getCrontab($item['time']), function () use ($core_schedule_service, $item, $output) {
if(!empty($item['class'])){
new Crontab($this->getCrontab($item[ 'time' ]), function() use ($core_schedule_service, $item, $output) {
if (!empty($item[ 'class' ])) {
$core_schedule_service->execute($item, $output);
}
});
}
$output->writeln('['.date('Y-m-d H:i:s').']'." Schedule Started.");
$output->writeln('[' . date('Y-m-d H:i:s') . ']' . " Schedule Started.");
};
//消息队列
Worker::$pidFile = runtime_path() .'workerman_queue.pid';
Worker::$logFile = runtime_path().'workerman.log';
Worker::$pidFile = runtime_path() . 'workerman_queue.pid';
Worker::$logFile = runtime_path() . 'workerman.log';
$worker = new Worker();
$worker->name = 'queue_work';
// $worker->count = 3;
$worker->onWorkerStart = function () use($output){
$output->writeln('['.date('Y-m-d H:i:s').']'." Queue Starting...");
$worker->onWorkerStart = function() use ($output) {
$output->writeln('[' . date('Y-m-d H:i:s') . ']' . " Queue Starting...");
// 定时每10秒一次
Timer::add(30, function()use($output)
{
(new SysSchedule())->select();
Timer::add(30, function() use ($output) {
( new SysSchedule() )->select();
});
$redis_option = [
'connect_timeout' => 10,
@ -89,33 +87,33 @@ class Workerman extends Command
'retry_seconds' => 5,
'prefix' => md5(root_path())
];
if(!empty(env('redis.redis_password'))){
$redis_option['auth'] = env('redis.redis_password');
if (!empty(env('redis.redis_password'))) {
$redis_option[ 'auth' ] = env('redis.redis_password');
}
$redis_option['db'] = env('redis.select');
$client = new Client('redis://'.env('redis.redis_hostname').':'.env('redis.port'), $redis_option);
$redis_option[ 'db' ] = env('redis.select');
$client = new Client('redis://' . env('redis.redis_hostname') . ':' . env('redis.port'), $redis_option);
$queue_list = $this->getAllQueue();
foreach ($queue_list as $queue_class_name){
foreach ($queue_list as $queue_class_name) {
$queue_class_name = str_replace('.php', '', $queue_class_name);
// 订阅
$client->subscribe($queue_class_name, function($data) use($queue_class_name, $output){
$output->writeln('[queue]['.date('Y-m-d H:i:s').']'." Processing:" . $queue_class_name);
try{
$class_name = '\\' .$queue_class_name;
$client->subscribe($queue_class_name, function($data) use ($queue_class_name, $output) {
$output->writeln('[queue][' . date('Y-m-d H:i:s') . ']' . " Processing:" . $queue_class_name);
try {
$class_name = '\\' . $queue_class_name;
$class = new $class_name();
$class->fire($data);
} catch (\Throwable $e) {
Log::write(date('Y-m-d H:i:s').',队列有错误:'.$queue_class_name.'_'.$e->getMessage().'_'.$e->getFile().'_'.$e->getLine());
Log::write(date('Y-m-d H:i:s') . ',队列有错误:' . $queue_class_name . '_' . $e->getMessage() . '_' . $e->getFile() . '_' . $e->getLine());
}
$output->writeln('[queue]['.date('Y-m-d H:i:s').']'." Processed:" . $queue_class_name);
$output->writeln('[queue][' . date('Y-m-d H:i:s') . ']' . " Processed:" . $queue_class_name);
});
}
// 消费失败触发的回调(可选)
$client->onConsumeFailure(function (\Throwable $exception, $package) use($output){
$output->writeln('[queue]队列 ' . $package['queue'] . " 消费失败,".$exception->getMessage());
$client->onConsumeFailure(function(\Throwable $exception, $package) use ($output) {
$output->writeln('[queue]队列 ' . $package[ 'queue' ] . " 消费失败," . $exception->getMessage());
});
$output->writeln('['.date('Y-m-d H:i:s').']'." Queue Started.");
$output->writeln('[' . date('Y-m-d H:i:s') . ']' . " Queue Started.");
};
Worker::runAll();
}
@ -133,14 +131,14 @@ class Workerman extends Command
* @param $data
* @return string
*/
protected function getCrontab($data): string
protected function getCrontab($data) : string
{
$sec = $data['sec'] ?? '*';
$min = $data['min'] ?? '*';
$hour = $data['hour'] ?? '*';
$day = $data['day'] ?? '*';
$week = $data['week'] ?? '*';
$type = $data['type'] ?? '';
$sec = $data[ 'sec' ] ?? '*';
$min = $data[ 'min' ] ?? '*';
$hour = $data[ 'hour' ] ?? '*';
$day = $data[ 'day' ] ?? '*';
$week = $data[ 'week' ] ?? '*';
$type = $data[ 'type' ] ?? '';
switch ($type) {
case 'sec':// 每隔几秒
$crontab = '*/' . $sec . ' * * * * *';
@ -155,10 +153,10 @@ class Workerman extends Command
$crontab = '0 ' . $min . ' ' . $hour . ' */' . $day . ' * *';
break;
case 'week':// 每周一次,周几具体时间执行
$crontab = '0 ' .$min . ' ' . $hour . ' * * ' . $week;
$crontab = '0 ' . $min . ' ' . $hour . ' * * ' . $week;
break;
case 'month':// 每月一次,某日具体时间执行
$crontab = '0 ' .$min . ' ' . $hour . ' ' . $day . ' * *';
$crontab = '0 ' . $min . ' ' . $hour . ' ' . $day . ' * *';
break;
}
return $crontab ?? '0 */1 * * * *';
@ -168,26 +166,27 @@ class Workerman extends Command
* 捕获所有队列任务
* @return array
*/
public function getAllQueue(){
public function getAllQueue()
{
$class_list = [];
$system_dir = root_path() . 'app' . DIRECTORY_SEPARATOR . 'job';
$addon_dir = root_path() . 'addon' . DIRECTORY_SEPARATOR;
if(is_dir($system_dir)){
if (is_dir($system_dir)) {
search_dir($system_dir, $app_data, root_path());
$class_list = array_merge($class_list, $app_data);
}
$addons = (new CoreAddonService())->getInstallAddonList();
$addons = ( new CoreAddonService() )->getInstallAddonList();
foreach ($addons as $v) {
$addon_path = $addon_dir .$v['key']. DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR. 'job';
$addon_path = $addon_dir . $v[ 'key' ] . DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'job';
if (is_dir($addon_path)) {
search_dir($addon_path, $addon_data, root_path());
$class_list = array_merge($class_list, $addon_data);
}
}
foreach($class_list as &$v){
foreach ($class_list as &$v) {
$v = str_replace('.php', '', $v);
$v = str_replace('/', '\\', $v);
}

View File

@ -36,7 +36,7 @@ class AddonDict
// 插件关键字黑名单
const ADDON_KEY_BLACK_LIST = [
'addon', 'aliapp', 'app', 'applet', 'auht', 'channel', 'dict', 'diy', 'generator', 'home', 'member', 'niucloud',
'addon', 'aliapp', 'app', 'applet', 'auth', 'channel', 'dict', 'diy', 'generator', 'home', 'member', 'niucloud',
'notice', 'pay', 'site', 'sys', 'upload', 'home', 'user', 'weapp', 'wechat'
];

View File

@ -550,8 +550,10 @@ class ComponentDict
'sort' => 10014,
'position' => 'fixed',
'value' => [
"imageSize" => 40,
"imageSize" => 80,
"aroundRadius" => 0,
'style' => 'style-1',
"styleName" => "风格一",
"bottomPosition" => "lowerRight", // 左上upperLeft右上upperRight左下lowerLeft右下lowerRight
"list" => [
[

View File

@ -114,7 +114,14 @@ class LinkDict
'url' => '/app/pages/verify/index',
'is_share' => 1,
'action' => ''
]
],
[
'name' => 'MEMBER_CONTACT',
'title' => get_lang('dict_diy.member_contact'),
'url' => '/app/pages/member/contact',
'is_share' => 1,
'action' => ''
],
]
],
'DIY_PAGE' => [

View File

@ -62,7 +62,7 @@ class PagesDict
"margin" => [
"top" => 10,
"bottom" => 10,
"both" => 16
"both" => 10
],
"ignore" => [],
"list" => []
@ -152,10 +152,11 @@ class PagesDict
'topStatusBar' => [
'isShow' => true,
'bgColor' => "#ffffff",
'isTransparent' => false,
'rollBgColor' => "#ffffff",
'style' => 'style-1',
'styleName' => '风格1',
'textColor' => "#333333",
'rollTextColor' => "#333333",
'textAlign' => 'center',
'inputPlaceholder' => '请输入搜索关键词',
'imgUrl' => '',
@ -217,16 +218,17 @@ class PagesDict
"margin" => [
"top" => 0,
"bottom" => 0,
"both" => 12
"both" => 10
]
],
'topStatusBar' => [
"topStatusBar" => [
'isShow' => true,
'bgColor' => "#ffffff",
'isTransparent' => false,
'rollBgColor' => "#ffffff",
'style' => 'style-1',
'styleName' => '风格1',
'textColor' => "#333333",
'rollTextColor' => "#333333",
'textAlign' => 'center',
'inputPlaceholder' => '请输入搜索关键词',
'imgUrl' => '',
@ -269,7 +271,7 @@ class PagesDict
"margin" => [
"top" => 12,
"bottom" => 6,
"both" => 16
"both" => 10
],
"style" => "style-1",
"styleName" => "风格1",
@ -306,7 +308,7 @@ class PagesDict
"margin" => [
"top" => 6,
"bottom" => 0,
"both" => 16
"both" => 10
]
],
[
@ -359,7 +361,7 @@ class PagesDict
"margin" => [
"top" => 0,
"bottom" => 0,
"both" => 16
"both" => 10
]
],
[
@ -400,7 +402,7 @@ class PagesDict
"margin" => [
"top" => 0,
"bottom" => 6,
"both" => 16
"both" => 10
],
"ignore" => [],
"list" => [
@ -467,7 +469,11 @@ class PagesDict
[
"title" => "联系客服",
"link" => [
"name" => ""
"name" => "MEMBER_CONTACT",
"parent" => "MEMBER_LINK",
"title" => "客服",
"url" => "/app/pages/member/contact",
"action" => ""
],
"imageUrl" => "static/resource/images/diy/horz_m_service.png",
"label" => [
@ -570,7 +576,11 @@ class PagesDict
[
"title" => "联系客服",
"link" => [
"name" => ""
"name" => "MEMBER_CONTACT",
"parent" => "MEMBER_LINK",
"title" => "客服",
"url" => "/app/pages/member/contact",
"action" => ""
],
"imageUrl" => "static/resource/images/diy/vert_m_service.png",
"label" => [
@ -618,7 +628,7 @@ class PagesDict
"margin" => [
"top" => 6,
"bottom" => 12,
"both" => 16
"both" => 10
]
]
]
@ -660,7 +670,7 @@ class PagesDict
"margin" => [
"top" => 0,
"bottom" => 0,
"both" => 12
"both" => 10
]
],
'topStatusBar' => [
@ -749,7 +759,7 @@ class PagesDict
"margin" => [
"top" => 0,
"bottom" => 0,
"both" => 16
"both" => 10
]
],
[
@ -802,7 +812,7 @@ class PagesDict
"margin" => [
"top" => 0,
"bottom" => 0,
"both" => 16
"both" => 10
]
],
[
@ -843,7 +853,7 @@ class PagesDict
"margin" => [
"top" => 0,
"bottom" => 6,
"both" => 16
"both" => 10
],
"ignore" => [],
"list" => [
@ -910,7 +920,11 @@ class PagesDict
[
"title" => "联系客服",
"link" => [
"name" => ""
"name" => "MEMBER_CONTACT",
"parent" => "MEMBER_LINK",
"title" => "客服",
"url" => "/app/pages/member/contact",
"action" => ""
],
"imageUrl" => "static/resource/images/diy/horz_m_service.png",
"label" => [
@ -1013,7 +1027,11 @@ class PagesDict
[
"title" => "联系客服",
"link" => [
"name" => ""
"name" => "MEMBER_CONTACT",
"parent" => "MEMBER_LINK",
"title" => "客服",
"url" => "/app/pages/member/contact",
"action" => ""
],
"imageUrl" => "static/resource/images/diy/vert_m_service.png",
"label" => [
@ -1061,7 +1079,7 @@ class PagesDict
"margin" => [
"top" => 6,
"bottom" => 12,
"both" => 16
"both" => 10
]
]

View File

@ -24,49 +24,49 @@ class MemberLevelDict
{
return [
// 'level_1' => [
// 'bg_color' => '#414852',
// 'level_color' => '#666666',
// 'progress' => ['#999999','#666666'],
// 'gift'=> '#ECEBEB',
// ],
'level_1' => [
'bg_color' => '#414852',
'level_color' => '#666666',
'progress' => ['#999999','#666666'],
'gift'=> '#ECEBEB',
],
'level_2' => [
'bg_color' => '#354B54',
'level_color' => '#116787',
'progress' => ['#4BA5C7','#116787'],
'gift'=> '#F1FDFF',
],
'level_3' => [
'level_2' => [
'bg_color' => '#203B54',
'level_color' => '#286BAA',
'progress' => ['#529BDF','#286BAA'],
'gift'=> '#E3F2FF',
],
'level_4' => [
'level_3' => [
'bg_color' => '#403E32',
'level_color' => '#967600',
'progress' => ['#D1A400','#967600'],
'gift'=> '#FFFAE3',
],
'level_5' => [
'level_4' => [
'bg_color' => '#36354B',
'level_color' => '#4B3EF9',
'progress' => ['#8F87FF','#4B3EF9'],
'gift'=> '#E7EEFF',
],
'level_6' => [
'level_5' => [
'bg_color' => '#362F28',
'level_color' => '#9F5300',
'progress' => ['#EFA244','#9F5300'],
'gift'=> '#FFF5DC',
],
'level_7' => [
'level_6' => [
'bg_color' => '#322432',
'level_color' => '#DE43D6',
'progress' => ['#FFA0FA','#DE43D6'],
'gift'=> '#FFEAFF',
],
'level_8' => [
'level_7' => [
'bg_color' => '#301C1E',
'level_color' => '#DE000B',
'progress' => ['#FF8B36','#DE000B'],

View File

@ -24,7 +24,6 @@ class MemberRegisterChannelDict extends ChannelDict
public static function getType($type = '')
{
$data = ChannelDict::getType($type);
$data[self::MANUAL] = get_lang('dict_member.register_manual');//手动添加
if (empty($type)) {

View File

@ -112,6 +112,8 @@ return [
'inc' => 1,
//是否减少
'dec' => 0,
//是否累增
'is_change_get' => 0,
],
//会员升级礼包
'level_upgrade' => [
@ -160,6 +162,8 @@ return [
'inc' => 0,
//是否减少
'dec' => 1,
//是否累增
'is_change_get' => 0,
],
],
//会员佣金
@ -182,6 +186,8 @@ return [
'inc' => 0,
//是否减少
'dec' => 1,
//是否累增
'is_change_get' => 0,
],
]
];

View File

@ -2172,7 +2172,7 @@ return [
'router_path' => 'setting/agreement',
'view_path' => 'setting/agreement',
'methods' => 'get',
'sort' => '80',
'sort' => '100',
'status' => '1',
'is_show' => '1',
],
@ -2260,7 +2260,7 @@ return [
'router_path' => 'setting/storage',
'view_path' => 'setting/storage',
'methods' => 'get',
'sort' => '30',
'sort' => '98',
'status' => '1',
'is_show' => '1',
'children' => [
@ -2304,7 +2304,7 @@ return [
'router_path' => 'setting/export',
'view_path' => 'setting/export',
'methods' => 'get',
'sort' => '30',
'sort' => '98',
'status' => '1',
'is_show' => '1',
'children' => [
@ -2323,7 +2323,123 @@ return [
'is_show' => '1',
]
]
]
],
[
'menu_name' => '小票打印',
'menu_key' => 'printer_management',
'menu_short_name' => '小票打印',
'menu_type' => '1',
'icon' => 'element FolderChecked',
'api_url' => 'printer',
'router_path' => 'printer/list',
'view_path' => 'printer/list',
'methods' => 'get',
'sort' => '97',
'status' => '1',
'is_show' => '1',
'children' => [
[
'menu_name' => '删除打印机',
'menu_key' => 'delete_printer',
'menu_short_name' => '删除打印机',
'menu_type' => '2',
'icon' => '',
'api_url' => 'printer/<id>',
'router_path' => '',
'view_path' => '',
'methods' => 'delete',
'sort' => '100',
'status' => '1',
'is_show' => '1',
]
]
],
[
'menu_name' => '添加打印机',
'menu_key' => 'printer_add',
'menu_short_name' => '添加打印机',
'menu_type' => '1',
'icon' => '',
'api_url' => 'printer',
'router_path' => 'printer/add',
'view_path' => 'printer/edit',
'methods' => 'post',
'sort' => '0',
'status' => '1',
'is_show' => '0',
],
[
'menu_name' => '编辑打印机',
'menu_key' => 'printer_edit',
'menu_short_name' => '添加打印机',
'menu_type' => '1',
'icon' => '',
'api_url' => 'printer/<id>',
'router_path' => 'printer/edit',
'view_path' => 'printer/edit',
'methods' => 'put',
'sort' => '0',
'status' => '1',
'is_show' => '0',
],
[
'menu_name' => '小票打印模板',
'menu_key' => 'printer_template_management',
'menu_short_name' => '小票打印模板',
'menu_type' => '1',
'icon' => 'element FolderChecked',
'api_url' => 'printer/template',
'router_path' => 'printer/template/list',
'view_path' => 'printer/template_list',
'methods' => 'get',
'sort' => '96',
'status' => '1',
'is_show' => '0',
'children' => [
[
'menu_name' => '删除打印模板',
'menu_key' => 'delete_printer_template',
'menu_short_name' => '删除打印模板',
'menu_type' => '2',
'icon' => '',
'api_url' => 'printer/template/<id>',
'router_path' => '',
'view_path' => '',
'methods' => 'delete',
'sort' => '100',
'status' => '1',
'is_show' => '1',
]
]
],
[
'menu_name' => '添加打印模板',
'menu_key' => 'printer_template_add',
'menu_short_name' => '添加打印模板',
'menu_type' => '1',
'icon' => '',
'api_url' => 'printer/template',
'router_path' => 'printer/template/add',
'view_path' => 'printer/template_edit',
'methods' => 'post',
'sort' => '0',
'status' => '1',
'is_show' => '0',
],
[
'menu_name' => '编辑打印模板',
'menu_key' => 'printer_template_edit',
'menu_short_name' => '编辑打印模板',
'menu_type' => '1',
'icon' => '',
'api_url' => 'printer/template/<id>',
'router_path' => 'printer/template/edit',
'view_path' => 'printer/template_edit',
'methods' => 'put',
'sort' => '0',
'status' => '1',
'is_show' => '0',
],
]
],

View File

@ -37,6 +37,10 @@ class ComponentDict
'sort' => 10000,
'relate' => '', // 关联字段,空为不处理// 组件属性
'value' => '文本内容',
'template' => [
"width" => 165, // 宽度
'height' => 53 // 高度
]
],
'Image' => [
'title' => "图片",
@ -68,10 +72,11 @@ class ComponentDict
'relate' => 'headimg', // 关联字段,空为不处理
'value' => '',
'template' => [
"width" => 50, // 宽度
'height' => 50, // 高度
'minWidth' => 30, // 最小宽度
'minHeight' => 30, // 最小高度
"width" => 100, // 宽度
'height' => 100, // 高度
'minWidth' => 60, // 最小宽度
'minHeight' => 60, // 最小高度
'shape' => 'circle'
],
],
'NickName' => [
@ -84,10 +89,10 @@ class ComponentDict
'relate' => 'nickname', // 关联字段,空为不处理
'value' => '',
'template' => [
"width" => 50, // 宽度
'height' => 50, // 高度
'minWidth' => 30, // 最小宽度
'minHeight' => 30, // 最小高度
"width" => 164, // 宽度
'height' => 55, // 高度
'minWidth' => 120, // 最小宽度
'minHeight' => 50, // 最小高度
],
],
'Draw' => [
@ -100,10 +105,10 @@ class ComponentDict
'relate' => '', // 关联字段,空为不处理
'value' => '',
'template' => [
"width" => 100, // 宽度
'height' => 100, // 高度
'minWidth' => 30, // 最小宽度
'minHeight' => 30, // 最小高度
"width" => 200, // 宽度
'height' => 200, // 高度
'minWidth' => 60, // 最小宽度
'minHeight' => 60, // 最小高度
'drawType' => 'Polygon',
'bgColor' => '#eeeeee',
'points' => [], // [x,y]:左上,右上,右下,左下

View File

@ -30,6 +30,8 @@ class FileDict
public const MID = 'mid';//小程序上传
public const SMALL = 'small';
public const EXCEL = 'excel';//excel导入
/**
* 附件类型
* @return array
@ -68,6 +70,7 @@ class FileDict
self::IMAGE,//图片上传
self::VIDEO,//视频上传
self::APPLET,//小程序包上传
self::EXCEL,//excel导入
];
}

View File

@ -0,0 +1,62 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的saas管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\dict\sys;
use core\dict\DictLoader;
class PrinterDict
{
public const YI_LIAN_YUN = 'yilianyun'; // 易联云打印机
/**
* 打印机品牌
* @param string $brand
* @return array|mixed|string
*/
public static function getBrandName($brand = '')
{
$list = [
self::YI_LIAN_YUN => get_lang('dict_printer.yilianyun'), // 易联云打印机
];
if ($brand == '') return $list;
return $list[ $brand ] ?? '';
}
/**
* 获取打印机模板类型
* @param string $type
* @return array|null
*/
public static function getType($type = '')
{
$system_type = [];
$type_list = ( new DictLoader("Printer") )->load($system_type);
if ($type == '') {
return $type_list;
} else {
$data = [];
foreach ($type_list as $k => $v) {
if ($v[ 'key' ] == $type) {
$data = $v;
break;
}
}
return $data;
}
}
}

View File

@ -152,16 +152,24 @@ class Index extends BaseInstall
];
} else {
if (@mysqli_select_db($conn, $dbname)) {
$result = [
"status" => 2,
"message" => "数据库存在,系统将覆盖数据库"
];
} else {
try {
if (@mysqli_select_db($conn, $dbname)) {
$result = [
"status" => 2,
"message" => "数据库存在,系统将覆盖数据库"
];
} else {
$result = [
"status" => 1,
"message" => "数据库不存在,系统将自动创建"
];
}
} catch ( Exception $e) {
$result = [
"status" => 1,
"message" => "数据库不存在,系统将自动创建"
];
return fail($result);
}
}
@mysqli_close($conn);

View File

@ -22,6 +22,7 @@ CREATE TABLE `addon` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '插件表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `addon_log`;
CREATE TABLE `addon_log` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
@ -33,6 +34,7 @@ CREATE TABLE `addon_log` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '插件日志表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `applet_site_version`;
CREATE TABLE `applet_site_version` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
@ -44,6 +46,7 @@ CREATE TABLE `applet_site_version` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '站点小程序版本表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `applet_version`;
CREATE TABLE `applet_version` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
@ -63,6 +66,7 @@ CREATE TABLE `applet_version` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '小程序版本表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `diy_page`;
CREATE TABLE `diy_page` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -81,7 +85,8 @@ CREATE TABLE `diy_page` (
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci COMMENT='自定义页面' ROW_FORMAT=DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '自定义页面' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `diy_route`;
CREATE TABLE `diy_route` (
@ -96,6 +101,7 @@ CREATE TABLE `diy_route` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '自定义路由' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `generate_column`;
CREATE TABLE `generate_column` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
@ -125,6 +131,7 @@ CREATE TABLE `generate_column` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '代码生成表字段信息表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `generate_table`;
CREATE TABLE `generate_table` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
@ -142,6 +149,7 @@ CREATE TABLE `generate_table` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '代码生成表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `jobs`;
CREATE TABLE `jobs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -154,6 +162,7 @@ CREATE TABLE `jobs` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息队列任务表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `jobs_failed`;
CREATE TABLE `jobs_failed` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -165,6 +174,7 @@ CREATE TABLE `jobs_failed` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息队列任务失败记录表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `member`;
CREATE TABLE `member` (
`member_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
@ -174,7 +184,7 @@ CREATE TABLE `member` (
`username` varchar(255) NOT NULL DEFAULT '' COMMENT '会员用户名',
`mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机号',
`password` varchar(255) NOT NULL DEFAULT '' COMMENT '会员密码',
`nickname` varchar(50) NOT NULL DEFAULT '' COMMENT '会员昵称',
`nickname` varchar(255) NOT NULL DEFAULT '' COMMENT '会员昵称',
`headimg` varchar(1000) NOT NULL DEFAULT '' COMMENT '会员头像',
`member_level` int(11) NOT NULL DEFAULT 0 COMMENT '会员等级',
`member_label` varchar(255) NOT NULL DEFAULT '' COMMENT '会员标签',
@ -221,6 +231,7 @@ CREATE TABLE `member` (
PRIMARY KEY (`member_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `member_account_log`;
CREATE TABLE `member_account_log` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
@ -236,31 +247,29 @@ CREATE TABLE `member_account_log` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员账单表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `member_address`;
CREATE TABLE `member_address` (
id int UNSIGNED NOT NULL AUTO_INCREMENT,
member_id int NOT NULL DEFAULT 0 COMMENT '会员id',
site_id int NOT NULL DEFAULT 0 COMMENT '站点id',
name varchar(255) NOT NULL DEFAULT '' COMMENT '用户姓名',
mobile varchar(255) NOT NULL DEFAULT '' COMMENT '手机',
province_id int NOT NULL DEFAULT 0 COMMENT '省id',
city_id int NOT NULL DEFAULT 0 COMMENT '市id',
district_id int NOT NULL DEFAULT 0 COMMENT '区县id',
address varchar(255) NOT NULL DEFAULT '' COMMENT '地址信息',
address_name varchar(255) NOT NULL DEFAULT '',
full_address varchar(255) NOT NULL DEFAULT '' COMMENT '详细地址信息',
lng varchar(255) NOT NULL DEFAULT '' COMMENT '经度',
lat varchar(255) NOT NULL DEFAULT '' COMMENT '纬度',
is_default tinyint NOT NULL DEFAULT 0 COMMENT '是否是默认地址',
PRIMARY KEY (id)
)
ENGINE = INNODB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_general_ci,
COMMENT = '会员收货地址';
`id` int UNSIGNED NOT NULL AUTO_INCREMENT,
`member_id` int NOT NULL DEFAULT 0 COMMENT '会员id',
`site_id` int NOT NULL DEFAULT 0 COMMENT '站点id',
`name` varchar(255) NOT NULL DEFAULT '' COMMENT '用户姓名',
`mobile` varchar(255) NOT NULL DEFAULT '' COMMENT '手机',
`province_id` int NOT NULL DEFAULT 0 COMMENT '省id',
`city_id` int NOT NULL DEFAULT 0 COMMENT '市id',
`district_id` int NOT NULL DEFAULT 0 COMMENT '区县id',
`address` varchar(255) NOT NULL DEFAULT '' COMMENT '地址信息',
`address_name` varchar(255) NOT NULL DEFAULT '',
`full_address` varchar(255) NOT NULL DEFAULT '' COMMENT '详细地址信息',
`lng` varchar(255) NOT NULL DEFAULT '' COMMENT '经度',
`lat` varchar(255) NOT NULL DEFAULT '' COMMENT '纬度',
`is_default` tinyint NOT NULL DEFAULT 0 COMMENT '是否是默认地址',
PRIMARY KEY (`id`)
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员收货地址' ROW_FORMAT = Dynamic;
ALTER TABLE `member_address`ADD INDEX IDX_member_address (member_id);
DROP TABLE IF EXISTS `member_cash_out`;
CREATE TABLE `member_cash_out` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -282,9 +291,9 @@ CREATE TABLE `member_cash_out` (
`money` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '提现到账金额',
`audit_time` int(11) NOT NULL DEFAULT 0 COMMENT '审核时间',
`status` int(11) NOT NULL DEFAULT 0 COMMENT '状态1待审核2.待转账3已转账 -1拒绝 -2 已取消',
`remark` varchar(100) NOT NULL DEFAULT '' COMMENT '备注',
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
`create_time` int(11) NOT NULL DEFAULT 0 COMMENT '申请时间',
`refuse_reason` varchar(100) NOT NULL DEFAULT '' COMMENT '拒绝理由',
`refuse_reason` varchar(255) NOT NULL DEFAULT '' COMMENT '拒绝理由',
`update_time` int(11) NOT NULL DEFAULT 0,
`transfer_no` varchar(50) NOT NULL DEFAULT '' COMMENT '转账单号',
`cancel_time` int(11) NOT NULL DEFAULT 0 COMMENT '取消时间',
@ -292,6 +301,7 @@ CREATE TABLE `member_cash_out` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员提现表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `member_cash_out_account`;
CREATE TABLE `member_cash_out_account` (
`account_id` int(11) NOT NULL AUTO_INCREMENT,
@ -306,6 +316,7 @@ CREATE TABLE `member_cash_out_account` (
PRIMARY KEY (`account_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员提现账户' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `member_label`;
CREATE TABLE `member_label` (
`label_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '标签id',
@ -319,6 +330,7 @@ CREATE TABLE `member_label` (
INDEX `label_id`(`label_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员标签' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `member_level`;
CREATE TABLE `member_level` (
`level_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '会员等级',
@ -332,7 +344,8 @@ CREATE TABLE `member_level` (
`level_benefits` text COMMENT '等级权益',
`level_gifts` text COMMENT '等级礼包',
PRIMARY KEY (`level_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci COMMENT='会员等级' ROW_FORMAT=DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员等级' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `member_sign`;
CREATE TABLE `member_sign` (
@ -347,7 +360,8 @@ CREATE TABLE `member_sign` (
`start_time` int(11) NOT NULL DEFAULT '0' COMMENT '签到周期开始时间',
`is_sign` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否签到0未签到 1已签到',
PRIMARY KEY (`sign_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci COMMENT='会员签到表' ROW_FORMAT=DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员签到表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `pay`;
CREATE TABLE `pay` (
@ -374,6 +388,7 @@ CREATE TABLE `pay` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付记录表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `pay_channel`;
CREATE TABLE `pay_channel` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
@ -388,6 +403,7 @@ CREATE TABLE `pay_channel` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付渠道配置表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `pay_refund`;
CREATE TABLE `pay_refund` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
@ -411,7 +427,8 @@ CREATE TABLE `pay_refund` (
`main_id` int NOT NULL DEFAULT 0 COMMENT '操作人',
`pay_refund_no` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '外部支付方式的退款单号',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付记录表' ROW_FORMAT = Dynamic;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '退款记录表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `pay_transfer`;
CREATE TABLE `pay_transfer` (
@ -440,6 +457,7 @@ CREATE TABLE `pay_transfer` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '转账表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `recharge_order`;
CREATE TABLE `recharge_order` (
`order_id` int(11) NOT NULL AUTO_INCREMENT,
@ -467,6 +485,7 @@ CREATE TABLE `recharge_order` (
PRIMARY KEY (`order_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `recharge_order_item`;
CREATE TABLE `recharge_order_item` (
`order_item_id` int(11) NOT NULL AUTO_INCREMENT,
@ -487,6 +506,7 @@ CREATE TABLE `recharge_order_item` (
PRIMARY KEY (`order_item_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单商品表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `recharge_order_item_refund`;
CREATE TABLE `recharge_order_item_refund` (
`refund_id` int(11) NOT NULL AUTO_INCREMENT,
@ -506,6 +526,7 @@ CREATE TABLE `recharge_order_item_refund` (
PRIMARY KEY (`refund_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单退款表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `recharge_order_log`;
CREATE TABLE `recharge_order_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -521,6 +542,7 @@ CREATE TABLE `recharge_order_log` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单操作记录表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `site`;
CREATE TABLE `site` (
`site_id` int(11) NOT NULL AUTO_INCREMENT,
@ -547,13 +569,14 @@ CREATE TABLE `site` (
`front_end_icon` varchar(255) NOT NULL DEFAULT '' COMMENT '前台icon',
`icon` varchar(255) NOT NULL DEFAULT '' COMMENT '网站图标',
`member_no` varchar(255) NOT NULL DEFAULT '0' COMMENT '最大会员码值',
`app` text NOT NULL COMMENT '站点应用',
`app` text NOT NULL COMMENT '站点应用',
`addons` text NOT NULL COMMENT '站点包含的插件',
`initalled_addon` text DEFAULT NULL COMMENT '站点已执行初始化方法的插件',
`site_domain` varchar(255) NOT NULL DEFAULT '' COMMENT '站点域名',
PRIMARY KEY (`site_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 10000 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '站点表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `site_account_log`;
CREATE TABLE `site_account_log` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
@ -565,6 +588,7 @@ CREATE TABLE `site_account_log` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '站点账单记录' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `site_group`;
CREATE TABLE `site_group` (
`group_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '分组ID',
@ -577,6 +601,7 @@ CREATE TABLE `site_group` (
PRIMARY KEY (`group_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '店铺分组(分组权限)' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `stat_hour`;
CREATE TABLE `stat_hour` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
@ -614,7 +639,7 @@ CREATE TABLE `stat_hour` (
`hour_22` decimal(10,2) NOT NULL DEFAULT '0.00',
`hour_23` decimal(10,2) NOT NULL DEFAULT '0.00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci COMMENT='小时统计表' ROW_FORMAT=DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '小时统计表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_agreement`;
CREATE TABLE `sys_agreement` (
@ -628,6 +653,7 @@ CREATE TABLE `sys_agreement` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '协议表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_area`;
CREATE TABLE `sys_area` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
@ -642,6 +668,7 @@ CREATE TABLE `sys_area` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '地址表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_attachment`;
CREATE TABLE `sys_attachment` (
`att_id` int(11) NOT NULL AUTO_INCREMENT,
@ -660,6 +687,7 @@ CREATE TABLE `sys_attachment` (
PRIMARY KEY (`att_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '附件管理表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_attachment_category`;
CREATE TABLE `sys_attachment_category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -673,6 +701,7 @@ CREATE TABLE `sys_attachment_category` (
UNIQUE INDEX `id`(`id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '附件分类表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_config`;
CREATE TABLE `sys_config` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
@ -686,6 +715,7 @@ CREATE TABLE `sys_config` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统配置表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_cron_task`;
CREATE TABLE `sys_cron_task` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -708,6 +738,7 @@ CREATE TABLE `sys_cron_task` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = ' 系统任务' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_dict`;
CREATE TABLE `sys_dict` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
@ -718,7 +749,8 @@ CREATE TABLE `sys_dict` (
`create_time` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_time` int(11) NOT NULL DEFAULT 0 COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据字典表' ROW_FORMAT = Dynamic;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据字典表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_export`;
CREATE TABLE `sys_export` (
@ -732,7 +764,8 @@ CREATE TABLE `sys_export` (
`fail_reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '失败原因',
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '导出时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci COMMENT='导出报表' ROW_FORMAT=DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '导出报表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `verifier`;
CREATE TABLE `verifier` (
@ -743,7 +776,8 @@ CREATE TABLE `verifier` (
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
`verify_type` varchar(255) NOT NULL DEFAULT '' COMMENT '核销类型',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci COMMENT='核销员表' ROW_FORMAT=DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '核销员表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `verify`;
CREATE TABLE `verify` (
@ -758,7 +792,8 @@ CREATE TABLE `verify` (
`body` varchar(500) NOT NULL DEFAULT '' COMMENT '描述',
`relate_tag` varchar(255) NOT NULL DEFAULT '' COMMENT '业务标识',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci COMMENT='核销记录' ROW_FORMAT=DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '核销记录' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu` (
@ -785,6 +820,7 @@ CREATE TABLE `sys_menu` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_notice`;
CREATE TABLE `sys_notice` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -803,6 +839,7 @@ CREATE TABLE `sys_notice` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '通知模型' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_notice_log`;
CREATE TABLE `sys_notice_log` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '通知记录ID',
@ -823,6 +860,7 @@ CREATE TABLE `sys_notice_log` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '通知记录表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_notice_sms_log`;
CREATE TABLE `sys_notice_sms_log` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
@ -842,6 +880,7 @@ CREATE TABLE `sys_notice_sms_log` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '短信发送表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
`role_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '角色id',
@ -854,6 +893,7 @@ CREATE TABLE `sys_role` (
PRIMARY KEY (`role_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_poster`;
CREATE TABLE `sys_poster` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
@ -868,7 +908,42 @@ CREATE TABLE `sys_poster` (
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci COMMENT='海报表' ROW_FORMAT=DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '海报表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_printer`;
CREATE TABLE `sys_printer` (
`printer_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`site_id` INT(11) NOT NULL DEFAULT 0 COMMENT '站点id',
`printer_name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '打印机名称',
`brand` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '设备品牌易联云365飞鹅',
`printer_code` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '打印机编号',
`printer_key` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '打印机秘钥',
`open_id` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '开发者id',
`apikey` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '开发者密钥',
`template_type` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '小票打印模板类型,多个逗号隔开',
`trigger` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '触发打印时机',
`value` LONGTEXT DEFAULT NULL COMMENT '打印模板数据json格式',
`print_width` VARCHAR(255) NOT NULL DEFAULT '58mm' COMMENT '纸张宽度',
`status` TINYINT(4) NOT NULL DEFAULT 1 COMMENT '状态0关闭1开启',
`create_time` INT(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_time` INT(11) NOT NULL DEFAULT 0 COMMENT '修改时间',
PRIMARY KEY (`printer_id`)
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '小票打印机' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_printer_template`;
CREATE TABLE `sys_printer_template` (
`template_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`site_id` INT(11) NOT NULL DEFAULT 0 COMMENT '站点id',
`template_name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '模板名称',
`template_type` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '模板类型',
`value` LONGTEXT DEFAULT NULL COMMENT '模板数据json格式',
`create_time` INT(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_time` INT(11) NOT NULL DEFAULT 0 COMMENT '修改时间',
PRIMARY KEY (`template_id`)
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '小票打印模板' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_schedule`;
CREATE TABLE `sys_schedule` (
@ -888,6 +963,7 @@ CREATE TABLE `sys_schedule` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统任务' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`uid` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '系统用户ID',
@ -907,6 +983,7 @@ CREATE TABLE `sys_user` (
INDEX `uid`(`uid` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '后台管理员表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_user_log`;
CREATE TABLE `sys_user_log` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '管理员操作记录ID',
@ -921,6 +998,7 @@ CREATE TABLE `sys_user_log` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '管理员操作记录表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -933,6 +1011,7 @@ CREATE TABLE `sys_user_role` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户权限表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `weapp_version`;
CREATE TABLE `weapp_version` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -948,7 +1027,8 @@ CREATE TABLE `weapp_version` (
`from_type` VARCHAR(255) NOT NULL DEFAULT 'cloud_build',
`auditid` VARCHAR(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '小程序版本' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `wechat_fans`;
CREATE TABLE `wechat_fans` (
@ -975,6 +1055,7 @@ CREATE TABLE `wechat_fans` (
PRIMARY KEY (`fans_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信粉丝列表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `wechat_media`;
CREATE TABLE `wechat_media` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -987,6 +1068,7 @@ CREATE TABLE `wechat_media` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信素材表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `wechat_reply`;
CREATE TABLE `wechat_reply` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT,
@ -1004,6 +1086,7 @@ CREATE TABLE `wechat_reply` (
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '公众号消息回调表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `wx_oplatfrom_weapp_version`;
CREATE TABLE `wx_oplatfrom_weapp_version` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
@ -1018,10 +1101,8 @@ CREATE TABLE `wx_oplatfrom_weapp_version` (
`create_time` INT(11) NOT NULL DEFAULT 0,
`update_time` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
)
ENGINE = INNODB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_general_ci;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信小程序开发平台版本表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `user_create_site_limit`;
CREATE TABLE `user_create_site_limit` (
@ -1031,17 +1112,14 @@ CREATE TABLE `user_create_site_limit` (
`num` INT(11) NOT NULL DEFAULT 0,
`month` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
)
ENGINE = INNODB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_general_ci;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户站点创建限制表' ROW_FORMAT = Dynamic;
INSERT INTO `site`(site_id, site_name, group_id, keywords, app_type, logo, `desc`, status, latitude, longitude, province_id, city_id, district_id, address, full_address, phone, business_hours, create_time, expire_time, front_end_name, front_end_logo, front_end_icon, icon, member_no, app, addons, initalled_addon, site_domain) VALUES
(1, 'niucloud-admin', 0, '', 'admin', '', '', 1, '', '', 0, 0, 0, '', '', '', '', 0, 0, '', '', '', '', '0', '', '', '', '');
UPDATE `site` SET site_id = 0 WHERE site_id = 1;
INSERT INTO `sys_user` VALUES ('1', '', '', '', '', '', '0', '0', '0', '1', '0', '0', '0');
-- INSERT INTO `sys_user` VALUES ('1', '', '', '', '', '', '0', '0', '0', '1', '0', '0', '0');
INSERT INTO `sys_user_role` VALUES ('1', '1', '0', '', '0', '1', '1');

View File

@ -0,0 +1,27 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的saas管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\job\member;
use app\service\core\member\CoreMemberService;
use core\base\BaseJob;
/**
* 队列设置会员会员码
*/
class SetMemberNoJob extends BaseJob
{
public function doJob($site_id, $member_id)
{
CoreMemberService::setMemberNo($site_id, $member_id);
return true;
}
}

View File

@ -91,7 +91,7 @@ return [
'USER_NOT_EXIST' => '用户不存在',
'NO_SITE_USER_ROLE' => '用户不存在关联权限',
'ADMIN_NOT_ALLOW_EDIT_ROLE' => '超级管理员不允许改动权限',
'USERNAME_REPEAT' => '用户名重复',
'USERNAME_REPEAT' => '账号重复',
'SITE_USER_EXIST' => '该用户已存在',
//角色管理
@ -137,6 +137,7 @@ return [
'ACCOUNT_OR_PASSWORD_ERROR' => '账号或密码错误',
'MEMBER_LOCK' => '账号被锁定',
'MEMBER_NOT_EXIST' => '账号不存在',
'MEMBER_OPENID_EXIST' => 'openid已存在',
'MEMBER_LOGOUT' => '账号退出',
'MEMBER_TYPE_NOT_EXIST' => '账户类型不存在',
'MEMBER_IS_EXIST' => '账号已存在',
@ -204,7 +205,7 @@ return [
'PAY_SUCCESS' => '当前支付已完成',
'PAY_IS_REMOVE' => '当前支付已取消',
'PAYMENT_METHOD_NOT_EXIST' => '你选择的支付方式未启用',
'PAYMENT_METHOD_NOT_SCENE'=> '你选择的支付方式不适用于当前场景',
'PAYMENT_METHOD_NOT_SCENE' => '你选择的支付方式不适用于当前场景',
'TREAT_PAYMENT_IS_OPEN' => '只有待支付时可以关闭',
'TRANFER_STATUS_NOT_IN_WAIT_TANSFER' => '当前转账未处于待转账状态',
'TRANSFER_ORDER_INVALID' => '无效的转账单据',
@ -277,7 +278,9 @@ return [
'CONTINUE_SIGN' => '连签',
'DAYS' => '天!',
'SIGN_SUCCESS' => '签到成功',
'SIGN_AWARD' => '签到奖励',
'GET_AWARD' => '恭喜您获得以下奖励',
'WILL_GET_AWARD' => '您将获得以下奖励',
//导出相关
'EXPORT_SUCCESS' => '导出成功',
@ -290,5 +293,7 @@ return [
'WECHAT_OPLATFORM_NOT_EXIST' => '未配置微信开放平台',
'WEAPP_EXIST' => '该小程序已经授权给其他站点',
'WECHAT_EXIST' => '该公众号已经授权给其他站点',
'PLEASE_ADD_FIRST_SITE_GROUP' => '请先添加站点套餐'
'PLEASE_ADD_FIRST_SITE_GROUP' => '请先添加站点套餐',
'PRINTER_NOT_EXIST' => '打印机不存在'
];

View File

@ -232,6 +232,7 @@ return [
'member_my_level' => '会员等级',
'member_my_sign_in' => '我的签到',
'member_verify_index' => '核销台',
'member_contact' => '客服',
'diy_page' => '自定义页面',
'diy_link' => '自定义链接',
@ -239,7 +240,7 @@ return [
'diy_make_phone_call' => '拨打电话'
],
// 自定义海报
'dict_diy_poster'=>[
'dict_diy_poster' => [
'component_type_basic' => '基础组件',
],
//短信相关
@ -379,4 +380,8 @@ return [
'status_not_sign' => '未签到',
'status_signed' => '已签到'
],
// 打印机品牌
'dict_printer' => [
'yilianyun' => '易联云打印机'
]
];

View File

@ -30,11 +30,11 @@ return [
'limit_between' => 'limit必须是正整数并且不能超过120',
],
'validate_user' => [
'username_require' => '用户名必须填写',
'username_unique' => '用户名必须是惟一的',
'username_max' => '用户名最多不能超过15个字符',
'username_require' => '账号必须填写',
'username_unique' => '账号必须是唯一的',
'username_max' => '账号最多不能超过15个字符',
'real_name_require' => '实际姓名必须填写',
'password_require' => '用户密码必须填写',
'password_require' => '账号密码必须填写',
],
//站点
'validate_site' => [

View File

@ -15,7 +15,7 @@ use app\service\core\member\CoreMemberService;
/**
* 会员注册成功事件
* Class MemberRegister
* Class MemberRegisterListener
* @package app\listener\member
*/
class MemberRegisterListener

View File

@ -40,7 +40,7 @@ class Poster
$headimg = $member_info[ 'headimg' ];
if (empty($headimg)) {
$headimg = 'static/resource/images/default_headimg.jpg';
$headimg = 'static/resource/images/default_headimg.png';
}
$return_data = [
'nickname' => $nickname,

View File

@ -76,7 +76,7 @@ class Addon extends BaseModel
*/
public function searchTitleAttr($query, $value, $data)
{
if ($value) {
if ($value != '') {
$query->whereLike('title', '%' . $value . '%');
}
}

View File

@ -54,7 +54,7 @@ class Dict extends BaseModel
*/
public function searchNameAttr($query, $value, $data)
{
if ($value) {
if ($value != '') {
$query->where("name", $value);
}
}
@ -66,7 +66,7 @@ class Dict extends BaseModel
*/
public function searchKeyAttr($query, $value, $data)
{
if ($value) {
if ($value != '') {
$query->where("key", $value);
}
}

View File

@ -174,8 +174,8 @@ class Diy extends BaseModel
*/
public function searchTitleAttr($query, $value, $data)
{
if ($value) {
$query->where("title|page_title", 'like', '%' . $value . '%');
if ($value != '') {
$query->where("title|page_title", 'like', '%' . $this->handelSpecialCharacter($value) . '%');
}
}

View File

@ -55,7 +55,7 @@ class DiyRoute extends BaseModel
*/
public function searchTitleAttr($query, $value, $data)
{
if ($value) {
if ($value != '') {
$query->where("title", 'like', '%' . $value . '%');
}
}

View File

@ -44,7 +44,7 @@ class GenerateTable extends BaseModel
*/
public function searchTableNameAttr($query, $value, $data)
{
if ($value) {
if ($value != '') {
$query->where('table_name', 'like', '%' . $value . '%');
}
}
@ -57,7 +57,7 @@ class GenerateTable extends BaseModel
*/
public function searchTableContentAttr($query, $value, $data)
{
if ($value) {
if ($value != '') {
$query->where('table_content', 'like', '%' . $value . '%');
}
}
@ -70,7 +70,7 @@ class GenerateTable extends BaseModel
*/
public function searchAddonNameAttr($query, $value, $data)
{
if ($value) {
if ($value != '') {
if($value == 2)
{
$query->where('addon_name','=','');

View File

@ -62,7 +62,7 @@ class Member extends BaseModel
protected $defaultSoftDelete = 0;
// 设置json类型字段
protected $json = ['member_label'];
protected $json = [ 'member_label' ];
// 设置JSON数据返回数组
protected $jsonAssoc = true;
@ -74,9 +74,9 @@ class Member extends BaseModel
*/
public function getStatusNameAttr($value, $data)
{
if (empty($data['status']))
if (empty($data[ 'status' ]))
return '';
return MemberDict::getStatus()[$data['status']] ?? '';
return MemberDict::getStatus()[ $data[ 'status' ] ] ?? '';
}
/**
@ -87,9 +87,9 @@ class Member extends BaseModel
*/
public function getRegisterChannelNameAttr($value, $data)
{
if (empty($data['register_channel']))
if (empty($data[ 'register_channel' ]))
return '';
return MemberRegisterChannelDict::getType()[$data['register_channel']] ?? '';
return MemberRegisterChannelDict::getType()[ $data[ 'register_channel' ] ] ?? '';
}
/**
@ -100,9 +100,9 @@ class Member extends BaseModel
*/
public function getRegisterTypeNameAttr($value, $data)
{
if (empty($data['register_type']))
if (empty($data[ 'register_type' ]))
return '';
return MemberRegisterTypeDict::getType()[$data['register_type']] ?? '';
return MemberRegisterTypeDict::getType()[ $data[ 'register_type' ] ] ?? '';
}
/**
@ -113,9 +113,9 @@ class Member extends BaseModel
*/
public function getLoginChannelNameAttr($value, $data)
{
if (empty($data['login_channel']))
if (empty($data[ 'login_channel' ]))
return '';
return ChannelDict::getType()[$data['login_channel']] ?? '';
return ChannelDict::getType()[ $data[ 'login_channel' ] ] ?? '';
}
/**
@ -126,9 +126,9 @@ class Member extends BaseModel
*/
public function getLoginTypeNameAttr($value, $data)
{
if (empty($data['login_type']))
if (empty($data[ 'login_type' ]))
return '';
return MemberLoginTypeDict::getType()[$data['login_type']] ?? '';
return MemberLoginTypeDict::getType()[ $data[ 'login_type' ] ] ?? '';
}
/**
@ -139,9 +139,9 @@ class Member extends BaseModel
*/
public function getSexNameAttr($value, $data)
{
if (empty($data['sex']))
if (empty($data[ 'sex' ]))
return '';
return CommonDict::getSexType()[$data['sex']] ?? '';
return CommonDict::getSexType()[ $data[ 'sex' ] ] ?? '';
}
/**
@ -161,8 +161,8 @@ class Member extends BaseModel
*/
public function searchKeywordAttr($query, $value, $data)
{
if ($value) {
$query->where('member_no|username|nickname|mobile', 'like', '%' . $value . '%');
if ($value != '') {
$query->where('member_no|username|nickname|mobile', 'like', '%' . $this->handelSpecialCharacter($value) . '%');
}
}
@ -217,7 +217,7 @@ class Member extends BaseModel
public function searchMemberLevelAttr(Query $query, $value, $data)
{
if ($value) {
$query->where('member_level', '=', $value);
$query->where('member_level', '=', $value);
}
}
@ -229,14 +229,14 @@ class Member extends BaseModel
*/
public function searchCreateTimeAttr(Query $query, $value, $data)
{
$start_time = empty($value[0]) ? 0 : strtotime($value[0]);
$end_time = empty($value[1]) ? 0 : strtotime($value[1]);
$start_time = empty($value[ 0 ]) ? 0 : strtotime($value[ 0 ]);
$end_time = empty($value[ 1 ]) ? 0 : strtotime($value[ 1 ]);
if ($start_time > 0 && $end_time > 0) {
$query->whereBetweenTime('create_time', $start_time, $end_time);
} else if ($start_time > 0 && $end_time == 0) {
$query->where([['create_time', '>=', $start_time]]);
$query->where([ [ 'create_time', '>=', $start_time ] ]);
} else if ($start_time == 0 && $end_time > 0) {
$query->where([['create_time', '<=', $end_time]]);
$query->where([ [ 'create_time', '<=', $end_time ] ]);
}
}
@ -248,22 +248,24 @@ class Member extends BaseModel
*/
public function searchJoinCreateTimeAttr(Query $query, $value, $data)
{
$start_time = empty($value[0]) ? 0 : strtotime($value[0]);
$end_time = empty($value[1]) ? 0 : strtotime($value[1]);
$start_time = empty($value[ 0 ]) ? 0 : strtotime($value[ 0 ]);
$end_time = empty($value[ 1 ]) ? 0 : strtotime($value[ 1 ]);
if ($start_time > 0 && $end_time > 0) {
$query->whereBetweenTime('member.create_time', $start_time, $end_time);
} else if ($start_time > 0 && $end_time == 0) {
$query->where([['member.create_time', '>=', $start_time]]);
$query->where([ [ 'member.create_time', '>=', $start_time ] ]);
} else if ($start_time == 0 && $end_time > 0) {
$query->where([['member.create_time', '<=', $end_time]]);
$query->where([ [ 'member.create_time', '<=', $end_time ] ]);
}
}
public function memberLevelData() {
public function memberLevelData()
{
return $this->hasOne(MemberLevel::class, 'level_id', 'member_level');
}
public function memberLevelNameBind() {
return $this->hasOne(MemberLevel::class, 'level_id', 'member_level')->bind(['member_level_name' => 'level_name']);
public function memberLevelNameBind()
{
return $this->hasOne(MemberLevel::class, 'level_id', 'member_level')->bind([ 'member_level_name' => 'level_name' ]);
}
}

View File

@ -14,6 +14,7 @@ namespace app\model\member;
use app\dict\member\MemberAccountChangeTypeDict;
use app\dict\member\MemberAccountTypeDict;
use core\base\BaseModel;
use think\db\Query;
use think\model\relation\HasOne;
/**
@ -125,6 +126,19 @@ class MemberAccountLog extends BaseModel
}
}
/**
* 关键词搜索
* @param $query
* @param $value
* @param $data
*/
public function searchKeywordAttr(Query $query, $value, $data)
{
if ($value != '') {
$query->whereLike('memo', '%'.$value.'%');
}
}
/**
* 金额大于
* @param $query

View File

@ -157,7 +157,7 @@ class MemberCashOut extends BaseModel
*/
public function searchCashOutNoAttr($query, $value, $data)
{
if ($value) {
if ($value != '') {
$query->where('cash_out_no', $value);
}
}

View File

@ -62,8 +62,8 @@ class MemberLabel extends BaseModel
*/
public function searchLabelNameAttr($query, $value, $data)
{
if ($value) {
$query->where('label_name', 'like', '%' . $value . '%');
if ($value != '') {
$query->where('label_name', 'like', '%' . $this->handelSpecialCharacter($value) . '%');
}
}

View File

@ -63,7 +63,7 @@ class MemberLevel extends BaseModel
public function searchLevelNameAttr($query, $value, $data)
{
if ($value != '') {
$query->where('level_name', 'like', '%'.$value.'%');
$query->where('level_name', 'like', '%' . $this->handelSpecialCharacter($value) . '%');
}
}
}

View File

@ -72,8 +72,8 @@ class Site extends BaseModel
*/
public function searchKeywordsAttr($query, $value, $data)
{
if ($value) {
$query->where('site_name|keywords', 'like', '%' . $value . '%');
if ($value != '') {
$query->where('site_name|keywords', 'like', '%' . $this->handelSpecialCharacter($value) . '%');
}
}
@ -86,8 +86,8 @@ class Site extends BaseModel
*/
public function searchSiteDomainAttr($query, $value, $data)
{
if ($value) {
$query->where('site_domain', 'like', '%' . $value . '%');
if ($value != '') {
$query->where('site_domain', 'like', '%' . $this->handelSpecialCharacter($value) . '%');
}
}
@ -99,7 +99,7 @@ class Site extends BaseModel
*/
public function searchAppAttr($query, $value, $data)
{
if ($value) {
if ($value != '') {
$query->where('app', 'like', '%"' . $value . '"%');
}
}

View File

@ -97,7 +97,7 @@ class SiteAccountLog extends BaseModel
public function searchTradeNoAttr($query, $value, $data)
{
if ($value) {
if ($value != '') {
$query->where('trade_no', 'like', "%$value%");
}
}

View File

@ -77,8 +77,8 @@ class SiteGroup extends BaseModel
*/
public function searchKeywordsAttr($query, $value, $data)
{
if ($value) {
$query->where('group_name', 'like', '%' . $value . '%');
if ($value != '') {
$query->where('group_name', 'like', '%' . $this->handelSpecialCharacter($value) . '%');
}
}

View File

@ -66,8 +66,8 @@ class Poster extends BaseModel
*/
public function searchNameAttr($query, $value, $data)
{
if ($value) {
$query->where("name", 'like', '%' . $value . '%');
if ($value != '') {
$query->where("name", 'like', '%' . $this->handelSpecialCharacter($value) . '%');
}
}

View File

@ -70,7 +70,7 @@ class SysExport extends BaseModel
public function searchExportKeyAttr(Query $query, $value, $data)
{
if ($value) {
$query->whereLike('export_key', '%' . $value . '%');
$query->where('export_key', $value);
}
}

View File

@ -112,7 +112,7 @@ class SysNoticeLog extends BaseModel
*/
public function searchReceiverAttr($query, $value)
{
if ($value) {
if ($value != '') {
$query->where('receiver', $value);
}
}

View File

@ -143,7 +143,7 @@ class SysNoticeSmsLog extends BaseModel
*/
public function searchMobileAttr($query, $value)
{
if ($value) {
if ($value != '') {
$query->where('mobile', $value);
}
}

View File

@ -0,0 +1,106 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\model\sys;
use app\dict\sys\PrinterDict;
use core\base\BaseModel;
/**
* 小票打印机模型
* Class SysPrinter
* @package app\model\sys
*/
class SysPrinter extends BaseModel
{
/**
* 数据表主键
* @var string
*/
protected $pk = 'printer_id';
/**
* 模型名称
* @var string
*/
protected $name = 'sys_printer';
// 设置json类型字段
protected $json = [ 'template_type', 'trigger', 'value' ];
// 设置JSON数据返回数组
protected $jsonAssoc = true;
/**
* 状态字段转化
* @param $value
* @param $data
* @return mixed
*/
public function getBrandNameAttr($value, $data)
{
if (!empty($data[ 'brand' ])) {
return PrinterDict::getBrandName($data[ 'brand' ]) ?? '';
}
return '';
}
/**
* 搜索器:小票打印机
* @param $value
* @param $data
*/
public function searchPrinterIdAttr($query, $value, $data)
{
if ($value) {
$query->where("printer_id", $value);
}
}
/**
* 搜索器:小票打印机设备品牌易联云365飞鹅
* @param $value
* @param $data
*/
public function searchBrandAttr($query, $value, $data)
{
if ($value) {
$query->where("brand", $value);
}
}
/**
* 搜索器:小票打印机打印机名称
* @param $value
* @param $data
*/
public function searchPrinterNameAttr($query, $value, $data)
{
if ($value != '') {
$query->where("printer_name", 'like', '%' . $value . '%');
}
}
/**
* 搜索器:小票打印机状态0关闭1开启
* @param $value
* @param $data
*/
public function searchStatusAttr($query, $value, $data)
{
if ($value !== '') {
$query->where("status", $value);
}
}
}

View File

@ -0,0 +1,97 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\model\sys;
use app\dict\sys\PrinterDict;
use core\base\BaseModel;
use think\model\concern\SoftDelete;
use think\model\relation\HasMany;
use think\model\relation\HasOne;
/**
* 小票打印模板模型
* Class SysPrinterTemplate
* @package app\model\sys
*/
class SysPrinterTemplate extends BaseModel
{
/**
* 数据表主键
* @var string
*/
protected $pk = 'template_id';
/**
* 模型名称
* @var string
*/
protected $name = 'sys_printer_template';
// 设置json类型字段
protected $json = [ 'value' ];
// 设置JSON数据返回数组
protected $jsonAssoc = true;
/**
* 状态字段转化
* @param $value
* @param $data
* @return mixed
*/
public function getTemplateTypeNameAttr($value, $data)
{
if (!empty($data[ 'template_type' ])) {
return PrinterDict::getType($data[ 'template_type' ])[ 'title' ] ?? '';
}
return '';
}
/**
* 搜索器:小票打印模板
* @param $value
* @param $data
*/
public function searchTemplateIdAttr($query, $value, $data)
{
if ($value) {
$query->where("template_id", $value);
}
}
/**
* 搜索器:小票打印模板模板类型
* @param $value
* @param $data
*/
public function searchTemplateTypeAttr($query, $value, $data)
{
if ($value) {
$query->where("template_type", $value);
}
}
/**
* 搜索器:小票打印模板模板名称
* @param $value
* @param $data
*/
public function searchTemplateNameAttr($query, $value, $data)
{
if ($value != '') {
$query->where("template_name", 'like', '%' . $value . '%');
}
}
}

View File

@ -80,8 +80,8 @@ class SysUser extends BaseModel
*/
public function searchUsernameAttr($query, $value)
{
if ($value) {
$query->whereLike('username', '%' . $value . '%');
if ($value != '') {
$query->whereLike('username', '%' . $this->handelSpecialCharacter($value) . '%');
}
}
@ -93,7 +93,7 @@ class SysUser extends BaseModel
*/
public function searchRealnameAttr($query, $value)
{
if ($value) {
if ($value != '') {
$query->whereLike('real_name', '%' . $value . '%');
}

View File

@ -61,7 +61,7 @@ class SysUserLog extends BaseModel
*/
public function searchUsernameAttr(Query $query, $value, $data)
{
if ($value) {
if ($value != '') {
$query->whereLike('username', '%' . $value . '%');
}
}
@ -87,7 +87,7 @@ class SysUserLog extends BaseModel
*/
public function searchUrlAttr(Query $query, $value, $data)
{
if ($value) {
if ($value != '') {
$query->whereLike('url', '%' . $value . '%');
}
}
@ -100,7 +100,7 @@ class SysUserLog extends BaseModel
*/
public function searchIpAttr(Query $query, $value, $data)
{
if ($value) {
if ($value != '') {
$query->whereLike('ip', '%' . $value . '%');
}
}

View File

@ -45,7 +45,7 @@ class WxOplatfromWeappVersion extends BaseModel
*/
public function getStatusNameAttr($value, $data)
{
if (!isset($data['status']) || empty($data['status'])) return '';
if (!isset($data['status'])) return '';
return CloudDict::getAppletUploadSatus($data['status']);
}
}

View File

@ -54,8 +54,21 @@ class Verify extends BaseModel
*/
public function searchCodeAttr(Query $query, $value, $data)
{
if ($value) {
$query->whereLike('code', '%'.$value.'%');
if ($value != '') {
$query->whereLike('code', '%' . $this->handelSpecialCharacter($value) . '%');
}
}
/**
* 关键词搜索
* @param $query
* @param $value
* @param $data
*/
public function searchKeywordAttr(Query $query, $value, $data)
{
if ($value != '') {
$query->whereLike('code|body', '%' . $this->handelSpecialCharacter($value) . '%');
}
}

View File

@ -11,7 +11,6 @@
namespace app\model\wechat;
use app\dict\channel\ReplyDict;
use core\base\BaseModel;
/**

View File

@ -13,10 +13,8 @@ namespace app\service\admin\addon;
use app\service\core\addon\CoreAddonDevelopBuildService;
use app\service\core\addon\CoreAddonDevelopDownloadService;
use app\service\core\addon\CoreAddonDevelopService;
use app\service\core\addon\CoreAddonService;
use app\service\core\niucloud\CoreAppService;
use app\service\core\niucloud\CoreModuleService;
use core\base\BaseAdminService;

View File

@ -37,7 +37,7 @@ class DiyConfigService extends BaseAdminService
$site_addon = ( new CoreSiteService() )->getSiteCache($this->site_id);
// 单应用,排除 系统 底部导航设置
if (count($site_addon[ 'apps' ]) == 1) {
if (count($list) > 1 && count($site_addon[ 'apps' ]) == 1) {
foreach ($list as $k => $v) {
if ($v[ 'key' ] = 'app') {
unset($list[ $k ]);

View File

@ -50,7 +50,7 @@ class DiyRouteService extends BaseAdminService
if (!empty($cv[ 'url' ])) {
$is_add = true;
if (!empty($where[ 'title' ]) && !str_contains($cv[ 'title' ], $where[ 'title' ])) {
if (isset($where[ 'title' ]) && $where[ 'title' ] !='' && !str_contains($cv[ 'title' ], $where[ 'title' ])) {
$is_add = false;
}

View File

@ -38,7 +38,7 @@ class {UCASE_NAME}Service extends BaseAdminService
$field = '{FIELDS}';
$order = '{ORDER}';
$search_model = {SEARCH_MODEL};
$search_model = {SEARCH_MODEL}
$list = $this->pageQuery($search_model);
return $list;
}
@ -52,7 +52,7 @@ class {UCASE_NAME}Service extends BaseAdminService
{
$field = '{FIELDS}';
$info = {INFO_SEARCH_MODEL};
$info = {INFO_SEARCH_MODEL}
return $info;
}

View File

@ -1,81 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的saas管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\service\admin\install;
use app\model\article\Article;
use app\model\article\ArticleCategory;
use core\base\BaseAdminService;
/**
* 系统安装
* Class InstallArticleService
* @package app\service\admin\install
*/
class InstallArticleService extends BaseAdminService
{
/**
* 安装
*/
public function install(array $params = [])
{
$this->installArticle($params);
return true;
}
/**
* 安装数据
*/
public function installArticle(array $params = [])
{
$article_category = new ArticleCategory();
$category = [
'site_id' => $params[ 'site_id' ],
'name' => '资讯',
'is_show' => 1,
'create_time' => time()
];
$category_id = $article_category->insert($category);
$article = new Article();
$article_list = [
[
'category_id' => $category_id,
'site_id' => $params[ 'site_id' ],
'title' => 'NiuCloud-admin介绍',
'intro' => '',
'summary' => '',
'image' => 'static/resource/images/article/niucloud_admin_frame.png',
'author' => 'NiuCloud',
'content' => '<p>Niucloud-admin特点介绍</p><p><br></p><p>1.采用的技术栈</p><p>1.1 后台php采用thinkphp6+php8+mysql,支持composer快速安装扩展支持redis缓存以及消息队列支持多语言设计开发同时开发采用严格的restful的api设计开发。</p><p>1.2 后台前后端分离采用element-plus、vue3.0、typescript、vite、pina等前端技术,同时使用i18n支持国际化多语言开发。</p><p>1.3 手机端采用uniapp前后端分离同时使用uview、vue3.0、typescript、vite、pina等前端技术同时使用i18n支持国际化多语言开发可以灵活编译成h5,微信小程序,支付宝小程序,抖音小程序等使用场景。</p><p><br></p><p>2.技术特点</p><p>2.1niucloud-admin采用多租户的saas系统设计能够提供企业级软件服务运营 ,同时满足用户多站点,多商户,多门店等系统开发需求。</p><p>2.2niucloud-admin结合当前市面上很多框架结构不规范导致基础结构不稳定等情况严格定义了分层设计的开发规范同时api接口严格采用restful的开发规范能够满足大型业务系统或者微服务的开发需求。</p><p>2.3 niucloud-admin前端以及后端采用严格的多语言开发规范包括前端展示api接口返回数据验证错误返回等全部使用多语言设计规范使开发者能够真生意义上实现多语言的开发需求。</p><p>2.4 Niucloud-admin已经搭建好常规系统的开发底层具体的底层功能包括管理员管理权限管理网站设置计划任务管理素材管理会员管理会员账户管理微信公众号以及小程序管理支付管理第三方登录管理消息管理短信管理文章管理前端装修等全面的基础功能这样开发者不需要开发基础的结构而专心开发业务。</p><p>2.5 niucloud-admin系统内置支持微信/支付宝支付,微信公众号/小程序/短信消息管理,阿里云/腾讯云短信,七牛云/阿里云存储等基础的功能扩展,后续会根据实际业务不断扩展基础组件。</p><p>2.6 niucloud-admin结合系统结构特点专门开发了代码生成器这样开发者根据数据表就可以一键生成基础的业务代码包括后台php业务代码以及对应的前端vue代码。</p><p>2.7 前端采用标准的element-plus开发者不需要详细了解前端只需要用标准的element组件就可以。</p><p>2.8 &nbsp;手机端设计开发了自定义装修,同时提供了基础的开发组件,方便开发者设计开发手机自定义页面装修的开发需求。</p><p>2.9 &nbsp;手机端使用uniapp 同时使用uview页面展示可以开发出丰富的手机样式同时不需要专门学习小程序app等开发语言只需要通过uniapp编译就可以。</p>',
'is_show' => 1,
'create_time' => time()
],
[
'category_id' => $category_id,
'site_id' => $params[ 'site_id' ],
'title' => 'NiuCloud-admin 开发者联盟',
'intro' => 'Niucloud-admin 开发者联盟招募',
'summary' => '',
'image' => 'static/resource/images/article/niucloud_admin_developer.png',
'author' => 'NiuCloud',
'content' => '<p><span style="font-family: 宋体;">Niucloud-admin 开发者联盟招募</span></p><p style="text-indent: 21pt; text-align: justify;"><span style="font-family: 宋体;">近几年,我们看到很多企业都在做自己的研发,有的是企业和内部使用,有的是帮助别人定制开发,也有的已经成功走向商业化,对软件开发的学习和钻研成为了行业圈内发展很有前景的方向。同时我们也看到,大家的开发之路都多多少少遇到了各自的瓶颈。或者是接触不到真实项目需求、只能闭门造车;或者是产品研发出来,没有变现的销路;或者技术遇到了瓶颈,没办法走的更深入;或者几个人自己钻研,水平提升很慢。无论属于哪种,亲爱的开发者,如果你也正在为自己怀才不遇无处施展,或者感觉优质的技术内容没有让更多的人知道而苦恼,那么现在,机会来啦~~niucloud-admin框架为你提供优质平台公开招募开发爱好者。今天大牛哥把一大波福利搬来希望可以在学习、交流和市场拓展等方面帮助大家。在针对那些想提高技术水平的个人或团队想要基于niucloud-admin框架开发自己的产品的伙伴 ,联盟会免费提供一些列的培训或辅导答疑。针对那些渴望交流、认识同路人的小伙伴,会有线上交流会让大家互通想法、互相引荐高人。</span></p><p style="text-indent: 21pt; text-align: justify;"><span style="font-family: 宋体;">说了这么多那么niucloud-admin到底是什么呢且听小编来介绍~</span></p><p style="text-indent: 21pt; text-align: justify;"><span style="font-family: 宋体;">Niucloud-admin是一款快速开发通用管理后台框架前端采用最新的技术栈Vite+TypeScript+Vue3+ElementPlus最流行技术架构后台结合PHP8、Java SDK、Python等主流后端语言搭建内置集成用户权限、代码生成器、表单设计、云存储、短信发送、素材中心、微信及公众号、Api模块一系列开箱即用功能是一款快速可以开发企业级应用的软件系统。</span></p><p style="text-indent: 21pt; text-align: justify;"><span style="font-family: 宋体;">听完介绍是不是都有点马上可以从小白变成大牛的感觉了,“开箱即用”,那不是小白都可以开发出属于自己的插件了吗?对,你没听错~ 具体怎么生成那就赶快加入niucloud-admin开发者联盟来亲身体验下吧~~</span></p><p style="text-indent: 21pt; text-align: justify;"><span style="font-family: 宋体;">有态度有深度niucloud-admin咱们下次见~</span></p>',
'is_show' => 1,
'create_time' => time()
]
];
$article->insertAll($article_list);
return true;
}
}

View File

@ -42,8 +42,8 @@ class MemberAccountService extends BaseAdminService
$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", 'like', '%' . $where[ 'keywords' ] . '%' ];
if (isset($where[ 'keywords' ]) && $where[ 'keywords' ] != '') {
$member_where[] = [ "member.member_no|member.nickname|member.mobile", 'like', '%' . $this->model->handelSpecialCharacter($where[ 'keywords' ]) . '%' ];
}
$search_model = $this->model->where([ [ 'member_account_log.site_id', '=', $this->site_id ] ])->withSearch([ 'join_member_id' => 'member_id', 'account_type', 'from_type', 'join_create_time' => 'create_time' ], $where)
->withJoin(

View File

@ -1,38 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的saas管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\service\admin\member;
use app\model\member\MemberCashOut;
use app\service\core\member\CoreMemberCashOutConfigService;
use core\base\BaseAdminService;
/**
* 会员提现设置服务层
*/
class MemberCashOutConfigService extends BaseAdminService
{
public function __construct()
{
parent::__construct();
$this->model = new MemberCashOut();
}
public function getConfig(){
return (new CoreMemberCashOutConfigService())->getMemberCashOutConfig($this->site_id);
}
public function setConfig(array $data){
(new CoreMemberCashOutConfigService())->setMemberCashOutConfig($this->site_id, $data);
return true;
}
}

Some files were not shown because too many files have changed in this diff Show More