|
@@ -1,144 +1,148 @@
|
|
|
'use strict';
|
|
|
-//基类服务
|
|
|
+// 基类服务
|
|
|
const BaseService = require('./base.js');
|
|
|
/**
|
|
|
* [exports 后台管理经理基类服务]
|
|
|
* @type {[type]}
|
|
|
*/
|
|
|
module.exports = class ManagerService extends BaseService {
|
|
|
- /*==================================session相关=====================================*/
|
|
|
- /**
|
|
|
- * [ActionAdminUserId 当前后台操作的管理员ID]
|
|
|
- * @author szjcomo
|
|
|
- * @date 2020-11-02
|
|
|
- */
|
|
|
- ActionAdminUserId() {
|
|
|
- let that = this;
|
|
|
- let token = that.ctx.request.header.authorization;
|
|
|
- let user = that.app.jwt.verify(token,that.app.config.jwt.secret);
|
|
|
- return user.admin_id;
|
|
|
- }
|
|
|
- /**
|
|
|
- * [ActionAdminUser 获取当前管理员]
|
|
|
- * @author szjcomo
|
|
|
- * @date 2021-02-27
|
|
|
- */
|
|
|
- ActionAdminUser() {
|
|
|
- let that = this;
|
|
|
- let token = that.ctx.request.header.authorization;
|
|
|
- let user = that.app.jwt.verify(token,that.app.config.jwt.secret);
|
|
|
- return user;
|
|
|
- }
|
|
|
- /**
|
|
|
- * [getRoleAuth 获取角色权限]
|
|
|
- * @author szjcomo
|
|
|
- * @date 2020-11-02
|
|
|
- * @param {[type]} role_id [description]
|
|
|
- * @param {Boolean} is_checked [description]
|
|
|
- * @param {Number} mobile [是否手机端访问]
|
|
|
- * @return {[type]} [description]
|
|
|
- */
|
|
|
- async getRoleAuth(role_id,is_checked = false,mobile = 0) {
|
|
|
- let that = this;
|
|
|
- let seq = that.app.Sequelize;
|
|
|
- let idxs = [];
|
|
|
- let result = [];
|
|
|
- let options = {
|
|
|
- attributes:['access_id','access_name','access_icon','pid','is_nav','router_name','router_path','vuecomponent','mobile_show'],
|
|
|
- raw:true,where:{access_status:1},order:[['access_sort','asc'],['access_id','asc']]
|
|
|
- };
|
|
|
- if(mobile) options.where.mobile_show = 1;
|
|
|
- let access = await that.app.model.Accesss.findAll(options);
|
|
|
- if(role_id > 0) {
|
|
|
- let tmpOptions = {where:{role_id:role_id},attributes:['access_id'],raw:true};
|
|
|
- let tmpAccess = await that.app.model.AccessRole.findOne(tmpOptions);
|
|
|
- if(tmpAccess) idxs = (tmpAccess.access_id.split(','));
|
|
|
- } else {
|
|
|
- result = access;
|
|
|
- }
|
|
|
- if(result.length == 0) {
|
|
|
- access.forEach(item => {
|
|
|
- if(that.app.szjcomo.inArray(idxs,`${item.access_id}`)) {
|
|
|
- item.checked = true;
|
|
|
- } else {
|
|
|
- item.checked = false;
|
|
|
- }
|
|
|
- if(is_checked == false) {
|
|
|
- result.push(item);
|
|
|
- } else {
|
|
|
- if(item.checked) result.push(item);
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- let finalResult = that.app.szjcomo.arrayRecursion(result,0,'pid','access_id','child');
|
|
|
- return finalResult;
|
|
|
- }
|
|
|
- /**
|
|
|
- * [getLevel 获取分类节点等级]
|
|
|
- * @author szjcomo
|
|
|
- * @date 2020-10-26
|
|
|
- * @param {Number} pid [description]
|
|
|
- * @param {[type]} actionModel [description]
|
|
|
- * @param {Object} options [description]
|
|
|
- * @return {[type]} [description]
|
|
|
- */
|
|
|
- async getLevel(pid = 0,actionModel = null,options = {}) {
|
|
|
- if(pid == 0) return 1;
|
|
|
- let result = await actionModel.findOne(options);
|
|
|
- return (result.level + 1);
|
|
|
- }
|
|
|
+ /* ==================================session相关=====================================*/
|
|
|
+ /**
|
|
|
+ * [ActionAdminUserId 当前后台操作的管理员ID]
|
|
|
+ * @author szjcomo
|
|
|
+ * @date 2020-11-02
|
|
|
+ */
|
|
|
+ ActionAdminUserId() {
|
|
|
+ const that = this;
|
|
|
+ const token = that.ctx.request.header.authorization;
|
|
|
+ const user = that.app.jwt.verify(token, that.app.config.jwt.secret);
|
|
|
+ return user.admin_id;
|
|
|
+ }
|
|
|
|
|
|
- /*==================================临时方法=====================================*/
|
|
|
- /**
|
|
|
- * [console 控制台数据]
|
|
|
- * @author szjcomo
|
|
|
- * @date 2020-11-02
|
|
|
- * @return {[type]} [description]
|
|
|
- */
|
|
|
- async console() {
|
|
|
- let that = this;
|
|
|
- let cacheKey = `${process.env.APP_CUSTOME}_console_data`;
|
|
|
- let result = await that.service.redis.get(cacheKey);
|
|
|
- if(!result) {
|
|
|
- result = {
|
|
|
- /**
|
|
|
- * [quick_data 快捷处理]
|
|
|
- * @type {Array}
|
|
|
- */
|
|
|
- quick_data:[
|
|
|
- {icon:'',title:'控制台',router_name:'system_dashboard'},
|
|
|
- {icon:'',title:'管理员列表',router_name:'admin_user'},
|
|
|
- {icon:'',title:'订单列表',router_name:'select_orders'},
|
|
|
- {icon:'',title:'商品列表',router_name:'select_products'},
|
|
|
- {icon:'',title:'配置设置',router_name:'config_setting'},
|
|
|
- {icon:'',title:'用户列表',router_name:'select_users'},
|
|
|
- {icon:'',title:'支付配置',router_name:'select_pays_config'},
|
|
|
- {icon:'',title:'商品分类',router_name:'select_product_category'}
|
|
|
- ],
|
|
|
- baseData:await that.service.order.orderDataCount(),
|
|
|
- saleData:await that.service.order.saleDataCount()
|
|
|
- };
|
|
|
- await that.service.redis.set(cacheKey,result,10*60);
|
|
|
- }
|
|
|
- return result;
|
|
|
- }
|
|
|
- /**
|
|
|
- * [adminConfig 后台管理配置]
|
|
|
- * @author szjcomo
|
|
|
- * @date 2021-08-08
|
|
|
- * @return {[type]} [description]
|
|
|
- */
|
|
|
- async adminConfig(){
|
|
|
- let that = this;
|
|
|
- let configs = await that.app.model.Configs.findAll({
|
|
|
- where:{field_index:{[that.app.Sequelize.Op.in]:['website_title','files_upload_uri','image_ocr_uri','editor_templates_uri']}},
|
|
|
- attributes:['field_value','field_index'],raw:true
|
|
|
- });
|
|
|
- let result = {};
|
|
|
- configs.forEach(item => {
|
|
|
- result[item.field_index] = item.field_value;
|
|
|
- })
|
|
|
- return result;
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * [ActionAdminUser 获取当前管理员]
|
|
|
+ * @author szjcomo
|
|
|
+ * @date 2021-02-27
|
|
|
+ */
|
|
|
+ ActionAdminUser() {
|
|
|
+ const that = this;
|
|
|
+ const token = that.ctx.request.header.authorization;
|
|
|
+ const user = that.app.jwt.verify(token, that.app.config.jwt.secret);
|
|
|
+ return user;
|
|
|
+ }
|
|
|
|
|
|
-}
|
|
|
+ /**
|
|
|
+ * [getRoleAuth 获取角色权限]
|
|
|
+ * @author szjcomo
|
|
|
+ * @date 2020-11-02
|
|
|
+ * @param {[type]} role_id [description]
|
|
|
+ * @param {Boolean} is_checked [description]
|
|
|
+ * @param {Number} mobile [是否手机端访问]
|
|
|
+ * @return {[type]} [description]
|
|
|
+ */
|
|
|
+ async getRoleAuth(role_id, is_checked = false, mobile = 0) {
|
|
|
+ const that = this;
|
|
|
+ // const seq = that.app.Sequelize;
|
|
|
+ let idxs = [];
|
|
|
+ let result = [];
|
|
|
+ const options = {
|
|
|
+ attributes: [ 'access_id', 'access_name', 'access_icon', 'pid', 'is_nav', 'router_name', 'router_path', 'vuecomponent', 'mobile_show' ],
|
|
|
+ raw: true, where: { access_status: 1 }, order: [[ 'access_sort', 'asc' ], [ 'access_id', 'asc' ]],
|
|
|
+ };
|
|
|
+ if (mobile) options.where.mobile_show = 1;
|
|
|
+ const access = await that.app.model.Accesss.findAll(options);
|
|
|
+ if (role_id > 0) {
|
|
|
+ const tmpOptions = { where: { role_id }, attributes: [ 'access_id' ], raw: true };
|
|
|
+ const tmpAccess = await that.app.model.AccessRole.findOne(tmpOptions);
|
|
|
+ if (tmpAccess) idxs = (tmpAccess.access_id.split(','));
|
|
|
+ } else {
|
|
|
+ result = access;
|
|
|
+ }
|
|
|
+ if (result.length == 0) {
|
|
|
+ access.forEach(item => {
|
|
|
+ if (that.app.szjcomo.inArray(idxs, `${item.access_id}`)) {
|
|
|
+ item.checked = true;
|
|
|
+ } else {
|
|
|
+ item.checked = false;
|
|
|
+ }
|
|
|
+ if (is_checked == false) {
|
|
|
+ result.push(item);
|
|
|
+ } else {
|
|
|
+ if (item.checked) result.push(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ const finalResult = that.app.szjcomo.arrayRecursion(result, 0, 'pid', 'access_id', 'child');
|
|
|
+ return finalResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * [getLevel 获取分类节点等级]
|
|
|
+ * @author szjcomo
|
|
|
+ * @date 2020-10-26
|
|
|
+ * @param {Number} pid [description]
|
|
|
+ * @param {[type]} actionModel [description]
|
|
|
+ * @param {Object} options [description]
|
|
|
+ * @return {[type]} [description]
|
|
|
+ */
|
|
|
+ async getLevel(pid = 0, actionModel = null, options = {}) {
|
|
|
+ if (pid == 0) return 1;
|
|
|
+ const result = await actionModel.findOne(options);
|
|
|
+ return (result.level + 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ /* ==================================临时方法=====================================*/
|
|
|
+ /**
|
|
|
+ * [console 控制台数据]
|
|
|
+ * @author szjcomo
|
|
|
+ * @date 2020-11-02
|
|
|
+ * @return {[type]} [description]
|
|
|
+ */
|
|
|
+ async console() {
|
|
|
+ const that = this;
|
|
|
+ const cacheKey = `${process.env.APP_CUSTOME}_console_data`;
|
|
|
+ let result = await that.service.redis.get(cacheKey);
|
|
|
+ if (!result) {
|
|
|
+ result = {
|
|
|
+ /**
|
|
|
+ * [quick_data 快捷处理]
|
|
|
+ * @type {Array}
|
|
|
+ */
|
|
|
+ quick_data: [
|
|
|
+ { icon: '', title: '控制台', router_name: 'system_dashboard' },
|
|
|
+ { icon: '', title: '管理员列表', router_name: 'admin_user' },
|
|
|
+ { icon: '', title: '订单列表', router_name: 'select_orders' },
|
|
|
+ { icon: '', title: '商品列表', router_name: 'select_products' },
|
|
|
+ { icon: '', title: '配置设置', router_name: 'config_setting' },
|
|
|
+ { icon: '', title: '用户列表', router_name: 'select_users' },
|
|
|
+ { icon: '', title: '支付配置', router_name: 'select_pays_config' },
|
|
|
+ { icon: '', title: '商品分类', router_name: 'select_product_category' },
|
|
|
+ ],
|
|
|
+ baseData: await that.service.order.orderDataCount(),
|
|
|
+ saleData: await that.service.order.saleDataCount(),
|
|
|
+ };
|
|
|
+ await that.service.redis.set(cacheKey, result, 10 * 60);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * [adminConfig 后台管理配置]
|
|
|
+ * @author szjcomo
|
|
|
+ * @date 2021-08-08
|
|
|
+ * @return {[type]} [description]
|
|
|
+ */
|
|
|
+ async adminConfig() {
|
|
|
+ const that = this;
|
|
|
+ const configs = await that.app.model.Configs.findAll({
|
|
|
+ where: { field_index: { [that.app.Sequelize.Op.in]: [ 'website_title', 'files_upload_uri', 'image_ocr_uri', 'editor_templates_uri' ] } },
|
|
|
+ attributes: [ 'field_value', 'field_index' ], raw: true,
|
|
|
+ });
|
|
|
+ const result = {};
|
|
|
+ configs.forEach(item => {
|
|
|
+ result[item.field_index] = item.field_value;
|
|
|
+ });
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+};
|