nodeserver,network_login

zhangrenshu
LRC 3 years ago
parent 6d2ad8182b
commit 9abe619843

@ -1,39 +1,41 @@
import 'dart:async';
import 'dart:async';
import 'dart:convert';
import 'dart:io';
import '../entity/Course.dart';
import '../entity/Team.dart';
import '../entity/User.dart';
import '../entity/Work.dart';
class NetWorkController{
final httpClient = HttpClient();
final Uri baseUri=Uri(scheme: "http", host: "www.tianqiapi.com",path:'/api/' , queryParameters: {
"version":"v1",
"appid":"97799796",
"appsecret":"mN3u09pY",
});
Future<int> login(User user) async {
return Future(() => 1);
import 'package:http/http.dart' as http;
class NetWorkController {
Future<http.Response> login(User user) {
return http.post(
Uri.parse('http://192.168.33.140:3000/login'),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(user.toMap()),
);
}
Future<int> register(User user) async {
return Future(() => 1);
}
Future<List<Work>> getSameFreeWork(int teamid){
Future<List<Work>> getSameFreeWork(int teamid) {
List<Work> workList = [];
return Future(() => workList);
}
Future<List<Work>> getTeamWorkList (int teamid){
Future<List<Work>> getTeamWorkList(int teamid) {
List<Work> workList = [];
return Future(() => workList);
}
Future<List<Team>> getTeamList(int userid){
Future<List<Team>> getTeamList(int userid) {
List<Team> teamList = [];
return Future(() => teamList);
}
@ -55,11 +57,11 @@ class NetWorkController{
return userList;
}
Future<bool> insertTeamUser(int teamid,int userid) async {
Future<bool> insertTeamUser(int teamid, int userid) async {
return true;
}
Future<bool> deleteTeamUser(int teamid,int userid) async {
Future<bool> deleteTeamUser(int teamid, int userid) async {
return true;
}
//todo
@ -67,7 +69,6 @@ class NetWorkController{
// return true;
// }
//app,
Future<bool> updateCourse(List<Course> courseList) async {
return true;
@ -77,9 +78,9 @@ class NetWorkController{
return true;
}
Future<String> getUserCoursejson(int stuid,String passwd,int year, int term){
Future<String> getUserCoursejson(
int stuid, String passwd, int year, int term) {
String res = "";
return Future(() => res);
}
}
}

@ -20,9 +20,11 @@ class MyApp extends StatelessWidget {
}
}
*/
import 'package:flutter/material.dart';
import 'package:sqflite/sqflite.dart';
import 'package:timemanagerapp/controller/CourseController.dart';
import 'package:timemanagerapp/controller/NetWorkController.dart';
import 'package:timemanagerapp/controller/UserController.dart';
import 'package:timemanagerapp/entity/Course.dart';
import 'package:timemanagerapp/entity/User.dart';
@ -34,7 +36,6 @@ import '../entity/Task.dart';
import '../setting/Setting.dart';
import '../util/dataUtil.dart';
class TestWidget extends StatefulWidget {
const TestWidget({Key? key}) : super(key: key);
@ -66,20 +67,20 @@ class _TestWidgetState extends State<TestWidget> {
children: [
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('当前用户信息'),
content: SingleChildScrollView(
child: ListTile(
title: Text(Setting.user!.username),
subtitle: Text(Setting.user.toString()),
),
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('当前用户信息'),
content: SingleChildScrollView(
child: ListTile(
title: Text(Setting.user!.username),
subtitle: Text(Setting.user.toString()),
),
);
},
);
),
);
},
);
},
child: Text('当前用户信息'),
),
@ -87,6 +88,7 @@ class _TestWidgetState extends State<TestWidget> {
onPressed: courseController.deleteAllCourses,
child: Text('删除所有课程'),
),
ElevatedButton(
onPressed: taskController.deleteAllTasks,
child: Text('删除所有个人计划'),
@ -157,9 +159,9 @@ class _TestWidgetState extends State<TestWidget> {
mainAxisSize: MainAxisSize.min,
children: tasks
.map((task) => ListTile(
title: Text(task.getName),
subtitle: Text(task.toString()),
))
title: Text(task.getName),
subtitle: Text(task.toString()),
))
.toList(),
),
),
@ -170,6 +172,25 @@ class _TestWidgetState extends State<TestWidget> {
},
child: Text('显示个人计划列表'),
),
ElevatedButton(
onPressed: () {
NetWorkController()
.login(User(username: 'test', password: '123', role: 1))
.then((resUser) {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text(''),
content: SingleChildScrollView(
child: Text(resUser.body)),
);
},
);
});
},
child: Text('录0'),
),
AddCourseButton(onCourseAdded: (jsonstr) {
// addCourse()
courseController.test_autoImportCours(jsonstr);

@ -0,0 +1,7 @@
.DS_Store
.idea
npm-debug.log
yarn-error.log
node_modules
log
#config.js 这个文件我这里就不加进来了,我把它上传到 github

@ -0,0 +1,41 @@
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;

@ -0,0 +1,90 @@
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('workserver:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}

@ -0,0 +1,18 @@
const configs = {
mysql: {
host: '118.195.213.51',
port: '3306',
user: 'root',
password: '123456', // 自己设置的密码
database: 'expressFrame' // 数据库的名字
},
// 打印错误
log: {
error (message) {
console.log('[knex error]', message)
}
}
}
module.exports = configs

@ -0,0 +1,104 @@
// 引用团队模版数据
const Team = require('../model/team');
const teamController = {
// showTeam 获取团队数据并返回到页面
showTeam: async function(req,res,next){
try{
let teamData;
if(req.body.id){
console.log(req.body.id)
teamData= await Team.getById('id',req.body.id)
}else{
teamData = await Team.all()
}
res.json({
code: 200,
message: "操作成功",
data: teamData
})
}catch(e){
res.json({ code: 0, message: "操作失败", data: e })
}
},
// 新增团队
addTeam: async function(req, res, next) {
try {
const teamData = req.body; // 从请求中获取团队数据
const result = await Team.insert(teamData);
res.json({
code: 200,
message: "团队添加成功",
data: result
});
} catch (e) {
res.json({
code: 0,
message: "团队添加失败",
data: e
});
}
},
// 修改团队
updateTeam: async function(req, res, next) {
try {
const teamId = req.body.id; // Assuming the team ID is passed as a parameter
const teamData = req.body; // Updated team data
console.log(teamId + " & " + JSON.stringify(teamData));
const result = await Team.update(teamId, teamData); // Use an appropriate function to update the team
if (result) {
res.json({
code: 200,
message: "团队修改成功",
data: result
});
} else {
res.json({
code: 404,
message: "团队不存在",
data: null
});
}
} catch (e) {
res.json({
code: 0,
message: "团队修改失败",
data: e
});
}
},
// 删除团队
deleteTeam: async function(req, res, next) {
try {
const teamId = req.body.id; // Assuming the team ID is passed as a parameter
const result = await Team.delete(teamId); // Use an appropriate function to delete the team
if (result) {
res.json({
code: 200,
message: "团队删除成功",
data: result
});
} else {
res.json({
code: 404,
message: "团队不存在",
data: null
});
}
} catch (e) {
res.json({
code: 0,
message: "团队删除失败",
data: e
});
}
}
}
module.exports = teamController;

@ -0,0 +1,150 @@
// 引用用户模版数据
const User = require('../model/user');
const userController = {
// showUser 获取用户数据并返回到页面
showUser: async function(req,res,next){
try{
let userData;
if(req.body.id){
console.log(req.body.id)
userData= await User.getById('id',req.body.id)
}else{
userData = await User.all()
}
res.json({
code: 200,
message: "操作成功",
data: userData
})
}catch(e){
res.json({ code: 0, message: "操作失败", data: e })
}
},
// 新增用户
addUser: async function(req, res, next) {
try {
const userData = req.body; // 从请求中获取用户数据
const result = await User.insert(userData);
res.json({
code: 200,
message: "用户添加成功",
data: result
});
} catch (e) {
res.json({
code: 0,
message: "用户添加失败",
data: e
});
}
},
// 修改用户
updateUser: async function(req, res, next) {
try {
const userId = req.body.id; // Assuming the user ID is passed as a parameter
const userData = req.body; // Updated user data
console.log(userId + " & " + JSON.stringify(userData));
const result = await User.update(userId, userData); // Use an appropriate function to update the user
if (result) {
res.json({
code: 200,
message: "用户修改成功",
data: result
});
} else {
res.json({
code: 404,
message: "用户不存在",
data: null
});
}
} catch (e) {
res.json({
code: 0,
message: "用户修改失败",
data: e
});
}
},
// 删除用户
deleteUser: async function(req, res, next) {
try {
const userId = req.body.id; // Assuming the user ID is passed as a parameter
const result = await User.delete(userId); // Use an appropriate function to delete the user
if (result) {
res.json({
code: 200,
message: "用户删除成功",
data: result
});
} else {
res.json({
code: 404,
message: "用户不存在",
data: null
});
}
} catch (e) {
res.json({
code: 0,
message: "用户删除失败",
data: e
});
}
},
// 注册用户
register: async function(req, res, next) {
try {
const userData = req.body; // 从请求中获取用户数据
const newUser = await User.insert(userData); // 创建新用户,使用合适的方法
res.json({
code: 200,
message: "注册成功",
data: newUser
});
} catch (e) {
res.json({
code: 0,
message: "注册失败",
data: e
});
}
},
// 用户登录
login: async function(req, res, next) {
try {
console.log(req.body);
const user = await User.getById('username',req.body.username); // 根据邮箱和密码查找用户,使用合适的方法
if (!req.body.password==user.password) {
res.json({
code: 401,
message: "登录失败,用户名或密码不正确",
data: null
});
} else {
// 在此处可以生成并返回一个 JSON Web Token (JWT) 作为用户的身份认证标识
const token = User.generateAuthToken();
res.json({
code: 200,
message: "登录成功",
data: { user, token }
});
}
} catch (e) {
res.json({
code: 0,
message: "登录失败",
data: e
});
}
}
}
module.exports = userController;

@ -0,0 +1,104 @@
const Work = require('../model/work');
const workController = {
// showWork 获取工作数据并返回到页面
showWork: async function(req,res,next){
try{
let workData;
if(req.body.id){
console.log(req.body.id)
workData= await Work.getById('id',req.body.id)
}else{
workData = await Work.all()
}
res.json({
code: 200,
message: "操作成功",
data: workData
})
}catch(e){
res.json({ code: 0, message: "操作失败", data: e })
}
},
// 新增工作
addWork: async function(req, res, next) {
try {
const workData = req.body; // 从请求中获取工作数据
const result = await Work.insert(workData);
res.json({
code: 200,
message: "工作添加成功",
data: result
});
} catch (e) {
res.json({
code: 0,
message: "工作添加失败",
data: e
});
}
},
// 修改工作
updateWork: async function(req, res, next) {
try {
const workId = req.body.id; // Assuming the work ID is passed as a parameter
const workData = req.body; // Updated work data
console.log(workId + " & " + JSON.stringify(workData));
const result = await Work.update(workId, workData); // Use an appropriate function to update the work
if (result) {
res.json({
code: 200,
message: "工作修改成功",
data: result
});
} else {
res.json({
code: 404,
message: "工作不存在",
data: null
});
}
} catch (e) {
res.json({
code: 0,
message: "工作修改失败",
data: e
});
}
},
// 删除工作
deleteWork: async function(req, res, next) {
try {
const workId = req.body.id; // Assuming the work ID is passed as a parameter
const result = await Work.delete(workId); // Use an appropriate function to delete the work
if (result) {
res.json({
code: 200,
message: "工作删除成功",
data: result
});
} else {
res.json({
code: 404,
message: "工作不存在",
data: null
});
}
} catch (e) {
res.json({
code: 0,
message: "工作删除失败",
data: e
});
}
}
}
module.exports = workController;

@ -0,0 +1,44 @@
const knex = require('../model/kenx');
const jwt = require('jsonwebtoken');
class Base{
constructor(props){
this.table = props;
}
// 查找
all (){
return knex(this.table).select();
}
// 新增
insert (params){
return knex(this.table).insert(params);
}
// 更改
update (id, params){
return knex(this.table).where('id', '=', id).update(params);
}
// 删除
delete (id){
return knex(this.table).where('id', '=', id).del();
}
getById(field,id){
console.log(field+id);
return knex(this.table).select('*').where(field,'=',id);
}
generateAuthToken(){
// 这里你可以使用jsonwebtoken或其他合适的库来生成令牌
const token = jwt.sign({ /* 在令牌中包含的用户信息 */ }, 'ruanggong ', {
expiresIn: '1h' // 令牌的过期时间
});
return token;
}
}
module.exports = Base;

@ -0,0 +1,20 @@
// 引用配置文件
const configs = require('../config');
// 把配置文件中的信息,设置在初始化配置中
module.exports = require('knex')({
client: 'mysql',
connection: {
host: configs.mysql.host,
port: configs.mysql.port,
user: configs.mysql.user,
password: configs.mysql.password,
database: configs.mysql.database
},
// 打印错误
log: {
error (message) {
console.log('[knex error]', message)
}
}
})

@ -0,0 +1,10 @@
const Base = require('./base');
class Team extends Base {
// 定义参数默认值为 team 表
constructor(props = 'teams'){
super(props);
}
}
module.exports = new Team();

@ -0,0 +1,12 @@
const Base = require('./base');
class User extends Base {
// 定义参数默认值为 user 表
constructor(props = 'users'){
super(props);
}
}
module.exports = new User();

@ -0,0 +1,10 @@
const Base = require('./base');
class Work extends Base {
// 定义参数默认值为 team 表
constructor(props = 'works'){
super(props);
}
}
module.exports = new Work();

File diff suppressed because it is too large Load Diff

@ -0,0 +1,21 @@
{
"name": "workserver",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www",
"dev": "nodemon ./bin/www"
},
"dependencies": {
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"express": "~4.16.1",
"http-errors": "~1.6.3",
"jade": "~1.11.0",
"jsonwebtoken": "^9.0.2",
"knex": "^3.0.1",
"morgan": "~1.9.1",
"mysql": "^2.18.1",
"winston": "^3.11.0"
}
}

@ -0,0 +1,8 @@
body {
padding: 50px;
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
}
a {
color: #00B7FF;
}

@ -0,0 +1,38 @@
var express = require('express');
var router = express.Router();
const userController = require('../controllers/user');
const teamController = require('../controllers/team');
const workController = require('../controllers/work');
// 获取用户信息
router.get('/get_user', userController.showUser);
router.post('/add_user', userController.addUser);
router.post('/update_user', userController.updateUser);
router.post('/delete_user', userController.deleteUser);
//团队
router.get('/get_team', teamController.showTeam);
router.post('/add_team', teamController.addTeam);
router.post('/update_team', teamController.updateTeam);
router.post('/delete_team', teamController.deleteTeam);
//工作
router.get('/get_work', workController.showWork);
router.post('/add_work', workController.addWork);
router.post('/update_work', workController.updateWork);
router.post('/delete_work', workController.deleteWork);
// 注册用户
router.post('/register', userController.register);
// 用户登录
router.post('/login', userController.login);
module.exports = router;

@ -0,0 +1,9 @@
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = router;

@ -0,0 +1,6 @@
extends layout
block content
h1= message
h2= error.status
pre #{error.stack}

@ -0,0 +1,5 @@
extends layout
block content
h1= title
p Welcome to #{title}

@ -0,0 +1,7 @@
doctype html
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
body
block content
Loading…
Cancel
Save