|
|
// 云函数入口文件
|
|
|
const cloud = require('wx-server-sdk')
|
|
|
|
|
|
cloud.init({ env: 'yz-7g23c92hf3223f1d' }) // 使用当前云环境
|
|
|
|
|
|
//引入node-xlsx文件
|
|
|
var xlsx = require('node-xlsx');
|
|
|
const db = cloud.database()
|
|
|
// 云函数入口函数
|
|
|
exports.main = async (event, context) => {
|
|
|
console.log("filename : " + event.filename);
|
|
|
let fileID = event.fileID;
|
|
|
let filename = event.filename;
|
|
|
//通过fileID下载云存储里的excel文件
|
|
|
const res = await cloud.downloadFile({
|
|
|
fileID: fileID,
|
|
|
})
|
|
|
console.log('下载的文件', res);
|
|
|
const file_xlsx = res.fileContent
|
|
|
//解析excel文件
|
|
|
var files = xlsx.parse(file_xlsx); //获取到已经解析的对象数组
|
|
|
var arr = files[0].data;
|
|
|
for (let i = 0; i < arr.length; i++) {
|
|
|
arr[i][0] = String(arr[i][0]); // 或者 arr[i][0] = arr[i][0].toString();
|
|
|
}
|
|
|
console.log('获得内容表格数组', arr);
|
|
|
var row = 0;
|
|
|
// console.log(arr[row][0].length + " " + arr[row][0][0]);
|
|
|
function judgeID(s) {
|
|
|
var len = s.length;
|
|
|
if(len == 0) return false;
|
|
|
var flag = true;
|
|
|
for(var i = 0; i < arr[row][0].length; ++i)
|
|
|
if(!(s[i] >= '0' && s[i] <= '9'))
|
|
|
flag = false;
|
|
|
return flag;
|
|
|
}
|
|
|
while (row <= arr.length) {
|
|
|
if(arr[row].length == 0) {
|
|
|
row++;
|
|
|
continue ;
|
|
|
}
|
|
|
if(judgeID(arr[row][0])) break;
|
|
|
row++;
|
|
|
}
|
|
|
// console.log("数据从第" + row + "行开始");
|
|
|
if(row == arr.length) {
|
|
|
return "error";
|
|
|
//返回错误
|
|
|
}
|
|
|
// var namelist = "namelist" + filename;
|
|
|
// console.log("namelist = " + namelist);
|
|
|
while(row <= arr.length - 1 && arr[row].length > 0 && judgeID(arr[row][0])) {
|
|
|
var _student_ID = arr[row][0].toString();
|
|
|
while(_student_ID.length < 9) _student_ID = '0' + _student_ID;
|
|
|
var _name = arr[row][1];
|
|
|
var _attendance_count = arr[row][2]; // 提取被点名次数
|
|
|
if (_attendance_count === undefined || _attendance_count === "") {
|
|
|
_attendance_count = 0; // 如果为空白,默认设置为0
|
|
|
}
|
|
|
var _score = arr[row][3]; // 提取积分
|
|
|
if (_score === undefined || _score === "") {
|
|
|
_score = 0; // 如果为空白,默认设置为0
|
|
|
}
|
|
|
// console.log(_student_ID + " " + _name);
|
|
|
db.collection("namelist").add({
|
|
|
data: {
|
|
|
student_ID: _student_ID,
|
|
|
name: _name,
|
|
|
attendance_count: _attendance_count,
|
|
|
score: _score,
|
|
|
filename : filename,
|
|
|
state : "present"
|
|
|
}
|
|
|
})
|
|
|
row++;
|
|
|
}
|
|
|
console.log("数据上传完成");
|
|
|
console.log(fileID);
|
|
|
cloud.deleteFile({
|
|
|
fileList: [fileID],
|
|
|
success(res) {
|
|
|
console.log(res, '文件删除成功')
|
|
|
},
|
|
|
fail(res) {
|
|
|
console.log(res, "文件删除失败")
|
|
|
}
|
|
|
})
|
|
|
return "success";
|
|
|
} |