maguohua 8 роки тому
батько
коміт
23e03d8abb
5 змінених файлів з 100 додано та 24 видалено
  1. 65 15
      controller/admin/admin.js
  2. 23 2
      middlewares/check.js
  3. 3 0
      models/admin/admin.js
  4. 2 0
      routes/admin.js
  5. 7 7
      routes/shopping.js

+ 65 - 15
controller/admin/admin.js

@@ -4,6 +4,7 @@ import AdminModel from '../../models/admin/admin'
 import BaseComponent from '../../prototype/baseComponent'
 import crypto from 'crypto'
 import formidable from 'formidable'
+import dtime from 'time-formater'
 
 class Admin extends BaseComponent {
 	constructor(){
@@ -23,7 +24,7 @@ class Admin extends BaseComponent {
 				})
 				return
 			}
-			const {user_name, password} = fields;
+			const {user_name, password, status = 1} = fields;
 			try{
 				if (!user_name) {
 					throw new Error('用户名错误')
@@ -43,20 +44,28 @@ class Admin extends BaseComponent {
 			try{
 				const admin = await AdminModel.findOne({user_name})
 				if (!admin) {
-					console.log('该用户不存在');
-					req.session.admin_id = 100000;
+					const adminTip = status == 1 ? '普通管理员' : '超级管理员'
+					const admin_id = await this.getId('admin_id');
+					const newAdmin = {
+						user_name, 
+						password: newpassword, 
+						id: admin_id,
+						create_time: dtime().format('YYYY-MM-DD'),
+						admin: adminTip,
+						status,
+					}
+					await AdminModel.create(newAdmin)
+					req.session.admin_id = admin_id;
 					res.send({
-						status: 0,
-						type: 'USER_DID_NOT_EXIST',
-						message: '该用户不存在',
+						status: 1,
+						success: '注册管理员成功',
 					})
 				}else if(newpassword.toString() != admin.password.toString()){
 					console.log('密码错误');
-					req.session.admin_id = 100000;
 					res.send({
 						status: 0,
 						type: 'ERROR_PASSWORD',
-						message: '密码错误',
+						message: '密码输入错误',
 					})
 				}else{
 					req.session.admin_id = admin.id;
@@ -66,11 +75,11 @@ class Admin extends BaseComponent {
 					})
 				}
 			}catch(err){
-				console.log('登录超级管理员失败', err);
+				console.log('登录管理员失败', err);
 				res.send({
 					status: 0,
 					type: 'LOGIN_ADMIN_FAILED',
-					message: '登录超级管理员失败',
+					message: '登录管理员失败',
 				})
 			}
 		})
@@ -86,7 +95,7 @@ class Admin extends BaseComponent {
 				})
 				return
 			}
-			const {user_name, password} = fields;
+			const {user_name, password, status = 1} = fields;
 			try{
 				if (!user_name) {
 					throw new Error('用户名错误')
@@ -112,22 +121,30 @@ class Admin extends BaseComponent {
 						message: '该用户已经存在',
 					})
 				}else{
+					const adminTip = status == 1 ? '普通管理员' : '超级管理员'
 					const admin_id = await this.getId('admin_id');
 					const newpassword = this.encryption(password);
-					const newAdmin = {user_name, password: newpassword, id: admin_id}
+					const newAdmin = {
+						user_name, 
+						password: newpassword, 
+						id: admin_id,
+						create_time: dtime().format('YYYY-MM-DD'),
+						admin: adminTip,
+						status,
+					}
 					await AdminModel.create(newAdmin)
 					req.session.admin_id = admin_id;
 					res.send({
 						status: 1,
-						message: '注册超级管理员成功',
+						message: '注册管理员成功',
 					})
 				}
 			}catch(err){
-				console.log('注册超级管理员失败', err);
+				console.log('注册管理员失败', err);
 				res.send({
 					status: 0,
 					type: 'REGISTER_ADMIN_FAILED',
-					message: '注册超级管理员失败',
+					message: '注册管理员失败',
 				})
 			}
 		})
@@ -155,6 +172,39 @@ class Admin extends BaseComponent {
 			})
 		}
 	}
+	async getAllAdmin(req, res, next){
+		const {limit = 20, offset = 0} = req.query;
+		try{
+			const allAdmin = await AdminModel.find({}, '-_id -password').skip(Number(offset)).limit(Number(limit))
+			res.send({
+				status: 1,
+				data: allAdmin,
+			})
+		}catch(err){
+			console.log('获取超级管理列表失败', err);
+			res.send({
+				status: 0,
+				type: 'ERROR_GET_ADMIN_LIST',
+				message: '获取超级管理列表失败'
+			})
+		}
+	}
+	async getAdminCount(req, res, next){
+		try{
+			const count = await AdminModel.count()
+			res.send({
+				status: 1,
+				count,
+			})
+		}catch(err){
+			console.log('获取管理员数量失败', err);
+			res.send({
+				status: 0,
+				type: 'ERROR_GET_ADMIN_COUNT',
+				message: '获取管理员数量失败'
+			})
+		}
+	}
 }
 
 export default new Admin()

+ 23 - 2
middlewares/check.js

@@ -20,7 +20,29 @@ class Check {
 			if (!admin) {
 				res.send({
 					status: 0,
-					type: 'HAVE_NO_ACCESS',
+					type: 'HAS_NO_ACCESS',
+					message: '权限不足,请联系管理员提升权限',
+				})
+				return
+			}
+		}
+		next()
+	}
+	async checkSuperAdmin(req, res, next){
+		const admin_id = req.session.admin_id;
+		if (!admin_id || !Number(admin_id)) {
+			res.send({
+				status: 0,
+				type: 'ERROR_SESSION',
+				message: '亲,您还没有登录',
+			})
+			return
+		}else{
+			const admin = await AdminModel.findOne({id: admin_id});
+			if (!admin || admin.status != 2) {
+				res.send({
+					status: 0,
+					type: 'HAS_NO_ACCESS',
 					message: '权限不足,请联系管理员提升权限',
 				})
 				return
@@ -28,7 +50,6 @@ class Check {
 		}
 		next()
 	}
-	
 }
 
 export default new Check()

+ 3 - 0
models/admin/admin.js

@@ -8,6 +8,9 @@ const adminSchema = new Schema({
 	user_name: String,
 	password: String,
 	id: Number,
+	create_time: String,
+	admin: {type: String, default: '普通管理员'},
+	status: Number,  //1:普通管理、 2:超级管理员
 })
 
 adminSchema.index({id: 1});

+ 2 - 0
routes/admin.js

@@ -7,5 +7,7 @@ const router = express.Router()
 router.post('/login', Admin.login);
 router.post('/register', Admin.register);
 router.get('/singout', Admin.singout);
+router.get('/all', Admin.getAllAdmin);
+router.get('/count', Admin.getAdminCount);
 
 export default router

+ 7 - 7
routes/shopping.js

@@ -8,21 +8,21 @@ import Check from '../middlewares/check'
 
 const router = express.Router();
 
-router.post('/addshop', Shop.addShop);
+router.post('/addshop', Check.checkAdmin, Shop.addShop);
 router.get('/restaurants', Shop.getRestaurants);
 router.get('/restaurants/count', Shop.getShopCount);
-router.post('/updateshop', Shop.updateshop);
-router.delete('/restaurant/:restaurant_id', Check.checkAdmin, Shop.deleteResturant);
+router.post('/updateshop', Check.checkAdmin, Shop.updateshop);
+router.delete('/restaurant/:restaurant_id', Check.checkSuperAdmin, Shop.deleteResturant);
 router.get('/restaurant/:restaurant_id', Shop.getRestaurantDetail);
-router.post('/addfood', Food.addFood);
+router.post('/addfood', Check.checkAdmin, Food.addFood);
 router.get('/getcategory/:restaurant_id', Food.getCategory);
-router.post('/addcategory', Food.addCategory);
+router.post('/addcategory', Check.checkAdmin, Food.addCategory);
 router.get('/v2/menu', Food.getMenu);
 router.get('/v2/menu/:category_id', Food.getMenuDetail);
 router.get('/v2/foods', Food.getFoods);
 router.get('/v2/foods/count', Food.getFoodsCount);
-router.post('/v2/updatefood', Food.updateFood);
-router.delete('/v2/food/:food_id', Check.checkAdmin, Food.deleteFood);
+router.post('/v2/updatefood', Check.checkAdmin, Food.updateFood);
+router.delete('/v2/food/:food_id', Check.checkSuperAdmin, Food.deleteFood);
 router.get('/v2/restaurant/category', Category.getCategories);
 router.get('/v1/restaurants/delivery_modes', Category.getDelivery);
 router.get('/v1/restaurants/activity_attributes', Category.getActivity);