Commit ea34afcf by lixinming

修bug 2.0功能

parent b7e6c76a
...@@ -1088,6 +1088,11 @@ ...@@ -1088,6 +1088,11 @@
"resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz", "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
"integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew="
}, },
"qcloudsms_js": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/qcloudsms_js/-/qcloudsms_js-0.1.1.tgz",
"integrity": "sha512-ewdlD32XF0BkV5sGNCFHCR9FSf6fi6PijJGX1YkowFziycYUyoCThDWKM0aeZG6kSQ1y8qHHBYFhAl7JTSlhuQ=="
},
"qs": { "qs": {
"version": "6.11.0", "version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
"mysql": "^2.18.1", "mysql": "^2.18.1",
"node-xlsx": "^0.16.1", "node-xlsx": "^0.16.1",
"nodemailer": "^6.1.1", "nodemailer": "^6.1.1",
"qcloudsms_js": "^0.1.1",
"qs": "^6.11.0", "qs": "^6.11.0",
"request": "^2.88.0", "request": "^2.88.0",
"svg-captcha": "^1.3.12", "svg-captcha": "^1.3.12",
......
...@@ -7,8 +7,22 @@ ...@@ -7,8 +7,22 @@
<dataBase>baseDB</dataBase> <dataBase>baseDB</dataBase>
<wtimeoutMS>30000</wtimeoutMS> <wtimeoutMS>30000</wtimeoutMS>
</mongodb> </mongodb>
<!-- 小程序的secret 和 appid -->
<secret>5907d55efdd2f6b3e11e719b8d781111</secret> <secret>5907d55efdd2f6b3e11e719b8d781111</secret>
<appId>wxbfc5695971b3e395</appId> <appId>wxbfc5695971b3e395</appId>
<!-- 获取小程序的openId地址 -->
<getOpenIdUrl>https://api.weixin.qq.com/sns/jscode2session</getOpenIdUrl> <getOpenIdUrl>https://api.weixin.qq.com/sns/jscode2session</getOpenIdUrl>
<!-- 短信相关配置 -->
<sms>
<sdkAppId>1400799515</sdkAppId>
<appKey>a36634bd106ee72eeea4a4bb4e62a03b</appKey>
<smsSign>张江科创服务中心</smsSign>
<!-- 修改密码的模板id -->
<changePwd>1729284</changePwd>
<!-- 填报提示 -->
<pointOut>1729286</pointOut>
<!-- 初始化账号提示 -->
<initPointOut>1729288</initPointOut>
</sms>
</config> </config>
\ No newline at end of file
...@@ -13,6 +13,8 @@ import moment = require("moment"); ...@@ -13,6 +13,8 @@ import moment = require("moment");
import * as monthTableData from "../../../data/fuHuaQi/monthTable"; import * as monthTableData from "../../../data/fuHuaQi/monthTable";
import * as taskData from "../../../data/fuHuaQi/task"; import * as taskData from "../../../data/fuHuaQi/task";
import { logHandle } from "../../../util/log"; import { logHandle } from "../../../util/log";
import * as scoreData from "../../../data/fuHuaQi/score";
import { starCount } from "../../mobileFuHuaQi/fuHuaQi/score";
/** /**
* 获取孵化器基本信息列表 * 获取孵化器基本信息列表
...@@ -274,6 +276,8 @@ export async function addUser(param) { ...@@ -274,6 +276,8 @@ export async function addUser(param) {
await fuhuaqiData.createFuHuaQiUser(param); await fuhuaqiData.createFuHuaQiUser(param);
await scoreData.createFuHuaQiScore(param.uscc, 404);
let addList = [];//任务列表 let addList = [];//任务列表
let monthList = [];//月度填报列表 let monthList = [];//月度填报列表
...@@ -335,3 +339,46 @@ export async function fuHuaQiUserList(operationName:string, page:number) { ...@@ -335,3 +339,46 @@ export async function fuHuaQiUserList(operationName:string, page:number) {
return {count, dataList}; return {count, dataList};
} }
/**
* 查询孵化器评分排名
* @param time
* @param name
* @param pange
*/
export async function fuHuaQiScore(time:number, name:string, page:number) {
let nameMap = await fuhuaqiData.findAllFuHuaQiOperationNameMap();
let param:any = {};
if (name) {
param.uscc = "-1";
for (let key in nameMap) {
if (nameMap[key] == name) param.uscc = key;
}
}
let resultList = [];
if (!time) {
let scoreDataList = await scoreData.findScoreDataByParam({});
let rankList = [];
scoreDataList.forEach((info) => {
let name = nameMap[info.uscc]
if (!name) return;
let score = info.startScore+info.myDataScore+info.baseDataScore+info.myEnterpriseScore+info.taskScore;
let star = starCount(score);
rankList.push({ name, star, score });
});
rankList.sort((a, b) => { return a.score - b.score} );
rankList.forEach((info, index) => {
info.rank = index + 1;
});
resultList = rankList.splice((page-1 * 10), 10);
} else {
}
}
...@@ -86,8 +86,8 @@ export async function initScoreData() { ...@@ -86,8 +86,8 @@ export async function initScoreData() {
await updateScore(uscc, SCOREWAYS.我的信息, false); await updateScore(uscc, SCOREWAYS.我的信息, false);
await updateScore(uscc, SCOREWAYS.我的数据, false); await updateScore(uscc, SCOREWAYS.我的数据, false);
} }
/**初始化任务得分 */
/**初始化任务得分 */
let taskList = await taskData.findTaskListByParam({}); let taskList = await taskData.findTaskListByParam({});
for (let i =0; i < taskList.length; i++) { for (let i =0; i < taskList.length; i++) {
let {fuHuaQiUscc, isSubmit, type} = taskList[i]; let {fuHuaQiUscc, isSubmit, type} = taskList[i];
......
...@@ -65,6 +65,11 @@ export async function updateRegisterEnterprise(uscc:string, param) { ...@@ -65,6 +65,11 @@ export async function updateRegisterEnterprise(uscc:string, param) {
let selectInfo = await enterpriseData.selectOneEnterpriseByParam({uscc:param.uscc, draftId:{"$ne":param.draftId} }); let selectInfo = await enterpriseData.selectOneEnterpriseByParam({uscc:param.uscc, draftId:{"$ne":param.draftId} });
if (selectInfo && selectInfo.uscc) throw new BizError(ERRORENUM.统一社会信用代码重复, `${param.uscc}已经在库中存在 不可以修改为这个统一信用代码`); if (selectInfo && selectInfo.uscc) throw new BizError(ERRORENUM.统一社会信用代码重复, `${param.uscc}已经在库中存在 不可以修改为这个统一信用代码`);
/**如果是本月提交的,可以修改,如果不是,则不可以修改 */
if ( sysTools.getThisMonthMs() > dataBaseInfo.createTime) {
throw new BizError(ERRORENUM.不能修改过期任务数据, `修改新注册企业的表单 ${uscc} 违法操作`);
}
/**修改字段 */ /**修改字段 */
let changeList = checkChange(param, dataBaseInfo); let changeList = checkChange(param, dataBaseInfo);
if ( !changeList.length ) throw new BizError(ERRORENUM.数据无更新, `${param.uscc}数据无更新`); if ( !changeList.length ) throw new BizError(ERRORENUM.数据无更新, `${param.uscc}数据无更新`);
...@@ -128,6 +133,11 @@ export async function updateMoveInEnterprise(uscc:string, param) { ...@@ -128,6 +133,11 @@ export async function updateMoveInEnterprise(uscc:string, param) {
let selectInfo = await enterpriseData.selectOneEnterpriseByParam({uscc:param.uscc, draftId:{"$ne":param.draftId} }); let selectInfo = await enterpriseData.selectOneEnterpriseByParam({uscc:param.uscc, draftId:{"$ne":param.draftId} });
if (selectInfo && selectInfo.uscc) throw new BizError(ERRORENUM.统一社会信用代码重复, `${param.uscc}已经在库中存在 不可以修改为这个统一信用代码`); if (selectInfo && selectInfo.uscc) throw new BizError(ERRORENUM.统一社会信用代码重复, `${param.uscc}已经在库中存在 不可以修改为这个统一信用代码`);
/**如果是本月提交的,可以修改,如果不是,则不可以修改 */
if ( sysTools.getThisMonthMs() > dataBaseInfo.createTime) {
throw new BizError(ERRORENUM.不能修改过期任务数据, `修改新注册企业的表单 ${uscc} 违法操作`);
}
/**修改数据 */ /**修改数据 */
let changeList = checkChange(param, dataBaseInfo); let changeList = checkChange(param, dataBaseInfo);
if ( !changeList.length ) throw new BizError(ERRORENUM.数据无更新, `${param.uscc}数据无更新`); if ( !changeList.length ) throw new BizError(ERRORENUM.数据无更新, `${param.uscc}数据无更新`);
...@@ -193,7 +203,7 @@ export async function myEnterprise(uscc:string, state:number, name:string, page: ...@@ -193,7 +203,7 @@ export async function myEnterprise(uscc:string, state:number, name:string, page:
let result:any = {}; let result:any = {};
let selectParam:any = { fuHuaQiUscc:uscc}; let selectParam:any = { fuHuaQiUscc:uscc};
if (name) selectParam.name = name; if (name) selectParam.name = {"$regex":`${name}`};
if (state == configEnum.INSIDESTATE.全部) { if (state == configEnum.INSIDESTATE.全部) {
selectParam.state = {"$lt":4}; selectParam.state = {"$lt":4};
} else selectParam.state = state; } else selectParam.state = state;
......
...@@ -161,11 +161,13 @@ export async function getFuHuaQiEnterpriseForSelect(uscc:string) { ...@@ -161,11 +161,13 @@ export async function getFuHuaQiEnterpriseForSelect(uscc:string) {
/**拼接返回 */ /**拼接返回 */
let dataList = []; let dataList = [];
enterpriseList.forEach( info => { enterpriseList.forEach( info => {
if (info.state != configEnum.FUHUASTATE.迁出) {
dataList.push({ dataList.push({
name:info.name, name:info.name,
logonAdd:info.logonAdd, logonAdd:info.logonAdd,
operatingAdd:info.operatingAdd operatingAdd:info.operatingAdd
}); });
}
}); });
return dataList; return dataList;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* *
*/ */
import * as eccFormParamConfig from "../../../config/eccFormParamConfig"; import * as eccFormParamConfig from "../../../config/eccFormParamConfig";
import { findEnterpriseCountByFuHuaQiUscc, groupFindEnterpriseCount } from "../../../data/enterprise/enterprise"; import { findEnterpriseCount, findEnterpriseCountByFuHuaQiUscc, groupFindEnterpriseCount } from "../../../data/enterprise/enterprise";
import * as fuhuaqiData from "../../../data/fuHuaQi/fuhuaqi"; import * as fuhuaqiData from "../../../data/fuHuaQi/fuhuaqi";
import * as splitResultConfig from "../../../config/splitResultConfig"; import * as splitResultConfig from "../../../config/splitResultConfig";
import * as configEnum from "../../../config/enum"; import * as configEnum from "../../../config/enum";
...@@ -51,11 +51,14 @@ export async function homeData(uscc:string) { ...@@ -51,11 +51,14 @@ export async function homeData(uscc:string) {
export async function selectFuHuaQiBaseData(uscc:string) { export async function selectFuHuaQiBaseData(uscc:string) {
/** 这里中间件已经验证过uscc的可靠性了,不需要做多余的验证*/ /** 这里中间件已经验证过uscc的可靠性了,不需要做多余的验证*/
let dataBaseInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc); let dataBaseInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
/** 虚拟 */
let virtualEnterpriseNum = await findEnterpriseCount({fuHuaQiUscc:uscc, state:configEnum.FUHUASTATE.虚拟孵化, draftLock:true}) || 0;
/**截取返回 */ /**截取返回 */
let data:any = extractData(splitResultConfig.FuHuaQiBaseDataConfig, dataBaseInfo, false); let data:any = extractData(splitResultConfig.FuHuaQiBaseDataConfig, dataBaseInfo, false);
data.enterpriseTotal = await findEnterpriseCountByFuHuaQiUscc(uscc); //企业总数 data.enterpriseTotal = await findEnterpriseCountByFuHuaQiUscc(uscc); //企业总数
data.numOfEntities = data.enterpriseTotal - dataBaseInfo.virtualEnterpriseNum; //实体企业总数 = 虚拟企业总数 - 虚拟企业数量 data.numOfEntities = data.enterpriseTotal - virtualEnterpriseNum; //实体企业总数 = 虚拟企业总数 - 虚拟企业数量
data.numOfEntities = data.numOfEntities > 0 ? data.numOfEntities : 0;
data.virtualEnterpriseNum = virtualEnterpriseNum;
return data; return data;
} }
...@@ -99,6 +102,7 @@ export async function updateFuHuaQiBaseData(uscc:string, param) { ...@@ -99,6 +102,7 @@ export async function updateFuHuaQiBaseData(uscc:string, param) {
let changeList = checkChange(param, baseDataInfo); let changeList = checkChange(param, baseDataInfo);
for (let i = 0; i < changeList.length; i++) { for (let i = 0; i < changeList.length; i++) {
let key = changeList[i]; let key = changeList[i];
if (key == "virtualEnterpriseNum") continue;
baseDataInfo[key] = param[key]; baseDataInfo[key] = param[key];
} }
baseDataInfo["hatchingGround"] = param.hatchingGround; baseDataInfo["hatchingGround"] = param.hatchingGround;
......
...@@ -18,7 +18,7 @@ import * as sysTools from "../../../tools/system"; ...@@ -18,7 +18,7 @@ import * as sysTools from "../../../tools/system";
import { findAllFuHuaQiOperationNameMap } from "../../../data/fuHuaQi/fuhuaqi"; import { findAllFuHuaQiOperationNameMap } from "../../../data/fuHuaQi/fuhuaqi";
import * as splitResultConfig from "../../../config/splitResultConfig"; import * as splitResultConfig from "../../../config/splitResultConfig";
import { OUTPUTTYPE } from "../../../config/enum"; import { OUTPUTTYPE } from "../../../config/enum";
import moment = require("moment");
/** /**
* 新添加孵化器月度填报 * 新添加孵化器月度填报
...@@ -56,9 +56,15 @@ export async function updateReport(uscc:string, occupancyRate:number) { ...@@ -56,9 +56,15 @@ export async function updateReport(uscc:string, occupancyRate:number) {
const TaskId = sysTools.getTaskId(uscc); const TaskId = sysTools.getTaskId(uscc);
let dataBaseInfo = await monthData.findMonthTableByTaskId(TaskId); let dataBaseInfo = await monthData.findMonthTableByTaskId(TaskId);
const thisTaskMonth = moment().subtract(1, 'months').month() + 1;//数据填报月份
const YearNumber =moment().subtract(1, 'months').year();//数据填报年份
if (dataBaseInfo.month != thisTaskMonth || dataBaseInfo.year != YearNumber) {
if (!dataBaseInfo || !dataBaseInfo.taskId) throw new BizError(ERRORENUM.未找到数据, `未找到${uscc}的月度报表` ); if (!dataBaseInfo || !dataBaseInfo.taskId) throw new BizError(ERRORENUM.未找到数据, `未找到${uscc}的月度报表` );
if ( !dataBaseInfo.isUpdate ) throw new BizError(ERRORENUM.未找到数据, `${uscc}还没有创建数据就修改了${occupancyRate}`); if ( !dataBaseInfo.isUpdate ) throw new BizError(ERRORENUM.未找到数据, `${uscc}还没有创建数据就修改了${occupancyRate}`);
if ( dataBaseInfo.draftLock ) throw new BizError(ERRORENUM.该任务已提交, `${uscc}已经提交了月度报表又 修改 数据${occupancyRate}`); if ( dataBaseInfo.draftLock ) throw new BizError(ERRORENUM.该任务已提交, `${uscc}已经提交了月度报表又 修改 数据${occupancyRate}`);
}
dataBaseInfo.occupancyRate = occupancyRate; dataBaseInfo.occupancyRate = occupancyRate;
await dataBaseInfo.save(); await dataBaseInfo.save();
...@@ -99,9 +105,12 @@ export async function getMonthByUscc(uscc:string) { ...@@ -99,9 +105,12 @@ export async function getMonthByUscc(uscc:string) {
const TaskId = sysTools.getTaskId(uscc); const TaskId = sysTools.getTaskId(uscc);
let dataBaseInfo = await monthData.findMonthTableByTaskId(TaskId); let dataBaseInfo = await monthData.findMonthTableByTaskId(TaskId);
const thisTaskMonth = moment().subtract(1, 'months').month() + 1;//数据填报月份
const YearNumber =moment().subtract(1, 'months').year();//数据填报年份
if (dataBaseInfo.month != thisTaskMonth || dataBaseInfo.year != YearNumber) {
if ( !dataBaseInfo.isUpdate ) throw new BizError(ERRORENUM.未找到数据, `未找到${uscc}的月度报表` ); if ( !dataBaseInfo.isUpdate ) throw new BizError(ERRORENUM.未找到数据, `未找到${uscc}的月度报表` );
if ( dataBaseInfo.draftLock ) throw new BizError(ERRORENUM.该任务已提交, `${uscc}已经提交了月度报表又 回显 数据`); if ( dataBaseInfo.draftLock ) throw new BizError(ERRORENUM.该任务已提交, `${uscc}已经提交了月度报表又 回显 数据`);
}
let data = extractData(splitResultConfig.MonthConfig, dataBaseInfo, false); let data = extractData(splitResultConfig.MonthConfig, dataBaseInfo, false);
return { data }; return { data };
......
...@@ -19,8 +19,8 @@ export async function getFuHuaQiScore(uscc:string) { ...@@ -19,8 +19,8 @@ export async function getFuHuaQiScore(uscc:string) {
/**得分信息 */ /**得分信息 */
let scoreInfo = await scoreData.findFuHuaQiScoreInfo(uscc); let scoreInfo = await scoreData.findFuHuaQiScoreInfo(uscc);
let { startScore, lastYearStar, myDataScore, baseDataScore, myEnterpriseScore, taskScore, lastScore } = scoreInfo; let { startScore, myDataScore, baseDataScore, myEnterpriseScore, taskScore, lastScore } = scoreInfo;
let count = Math.ceil(startScore +lastYearStar +myDataScore +baseDataScore +myEnterpriseScore +taskScore); let count = Math.ceil(startScore +myDataScore +baseDataScore +myEnterpriseScore +taskScore);
let oldStar = starCount(lastScore); let oldStar = starCount(lastScore);
let newStar = starCount(count); let newStar = starCount(count);
...@@ -42,7 +42,7 @@ export async function getFuHuaQiScore(uscc:string) { ...@@ -42,7 +42,7 @@ export async function getFuHuaQiScore(uscc:string) {
* @param socre 分数 * @param socre 分数
* @returns 星数 * @returns 星数
*/ */
function starCount(socre:number) { export function starCount(socre:number) {
let star = 1; let star = 1;
for (let i = 0; i < StarConfig.length; i++) { for (let i = 0; i < StarConfig.length; i++) {
let {name, value, starNum} = StarConfig[i]; let {name, value, starNum} = StarConfig[i];
...@@ -69,7 +69,7 @@ export async function updateScore(uscc:string, type:number, isSubmitTask:boolean ...@@ -69,7 +69,7 @@ export async function updateScore(uscc:string, type:number, isSubmitTask:boolean
let fuHuaQiInfo = await findFuHuaQiByUSCC(uscc); let fuHuaQiInfo = await findFuHuaQiByUSCC(uscc);
let newScore = 0;//新分数 let newScore = 0;//新分数
let oldScore = 0;//老分数 let oldScore = 0;//老分数
let countScore = scoreInfo.startScore +scoreInfo.lastYearStar +scoreInfo.myDataScore +scoreInfo.baseDataScore +scoreInfo.myEnterpriseScore +scoreInfo.taskScore; let countScore = scoreInfo.startScore +scoreInfo.myDataScore +scoreInfo.baseDataScore +scoreInfo.myEnterpriseScore +scoreInfo.taskScore;
switch (type) { switch (type) {
case SCOREWAYS.任务得分: case SCOREWAYS.任务得分:
/**单个任务得分 */ /**单个任务得分 */
......
...@@ -22,7 +22,7 @@ import * as monthTableData from "../../../data/fuHuaQi/monthTable"; ...@@ -22,7 +22,7 @@ import * as monthTableData from "../../../data/fuHuaQi/monthTable";
import * as taskData from "../../../data/fuHuaQi/task"; import * as taskData from "../../../data/fuHuaQi/task";
import { BizError } from "../../../util/bizError"; import { BizError } from "../../../util/bizError";
import { logHandle } from "../../../util/log"; import { logHandle } from "../../../util/log";
import { getLastMonthTimeKey, getTaskId, getTaskIdByTime, getTimeKey } from "../../../tools/system"; import { getLastMonthTimeKey, getTaskId, getTaskIdByTime, getThisMonthMs, getTimeKey } from "../../../tools/system";
import * as scoreBiz from "../fuHuaQi/score"; import * as scoreBiz from "../fuHuaQi/score";
...@@ -63,14 +63,14 @@ export async function fuHuaQiTaskList(uscc:string) { ...@@ -63,14 +63,14 @@ export async function fuHuaQiTaskList(uscc:string) {
break; break;
case TASKTYPEENUM.新注册或迁入企业登记: case TASKTYPEENUM.新注册或迁入企业登记:
/**限制 draftLock = false 即草稿数据 这里可以不用这个限制 */ /**限制 draftLock = false 即草稿数据 这里可以不用这个限制 */
dataList = await findEnterpriseListByTaskId(TaskId); dataList = await findEnterpriseListByTaskId(TaskId, false);
dataList.forEach(item => { dataList.forEach(item => {
item.uscc = item.draftId;//这里转换一下,为了不改前端代码 使用uscc这个名称,但是实际是draftId item.uscc = item.draftId;//这里转换一下,为了不改前端代码 使用uscc这个名称,但是实际是draftId
}); });
break; break;
case TASKTYPEENUM.融资企业填报: case TASKTYPEENUM.融资企业填报:
/**限制 draftLock = false 即草稿数据 这里可以不用这个限制 */ /**限制 draftLock = false 即草稿数据 这里可以不用这个限制 */
dataList = await findFinancingListByTaskId(TaskId); dataList = await findFinancingListByTaskId(TaskId, false);
break; break;
} }
...@@ -111,6 +111,7 @@ export async function fuHuaQiCompletedList(uscc:string, selectTime:number) { ...@@ -111,6 +111,7 @@ export async function fuHuaQiCompletedList(uscc:string, selectTime:number) {
let onceObj:any = { let onceObj:any = {
key:ValueNumber, key:ValueNumber,
title:anyKey, //标题 title:anyKey, //标题
editable,
enterpriseList:[] //相关的列表 这里不应该用这个字段名称 当时不能修改前端 沿用了这个字段名称 enterpriseList:[] //相关的列表 这里不应该用这个字段名称 当时不能修改前端 沿用了这个字段名称
}; };
...@@ -129,14 +130,14 @@ export async function fuHuaQiCompletedList(uscc:string, selectTime:number) { ...@@ -129,14 +130,14 @@ export async function fuHuaQiCompletedList(uscc:string, selectTime:number) {
break; break;
case TASKTYPEENUM.新注册或迁入企业登记: case TASKTYPEENUM.新注册或迁入企业登记:
/**限制 draftLock = false 即草稿数据 这里可以不用这个限制 */ /**限制 draftLock = false 即草稿数据 这里可以不用这个限制 */
dataList = await findEnterpriseListByTaskId(TaskId); dataList = await findEnterpriseListByTaskId(TaskId, true);
dataList.forEach(item => { dataList.forEach(item => {
item.uscc = item.draftId;//这里转换一下,为了不改前端代码 使用uscc这个名称,但是实际是draftId item.uscc = item.draftId;//这里转换一下,为了不改前端代码 使用uscc这个名称,但是实际是draftId
}); });
break; break;
case TASKTYPEENUM.融资企业填报: case TASKTYPEENUM.融资企业填报:
/**限制 draftLock = false 即草稿数据 这里可以不用这个限制 */ /**限制 draftLock = false 即草稿数据 这里可以不用这个限制 */
dataList = await findFinancingListByTaskId(TaskId); dataList = await findFinancingListByTaskId(TaskId, true);
break; break;
} }
...@@ -163,7 +164,7 @@ export async function fuHuaQiCompletedList(uscc:string, selectTime:number) { ...@@ -163,7 +164,7 @@ export async function fuHuaQiCompletedList(uscc:string, selectTime:number) {
export async function fuHuaQiPastdueList(uscc:string, selectTime:number) { export async function fuHuaQiPastdueList(uscc:string, selectTime:number) {
/**得到查询月的任务map taskMap格式为{type:{isSubmit}} */ /**得到查询月的任务map taskMap格式为{type:{isSubmit}} */
const TaskId = getTaskIdByTime(uscc, selectTime); const TaskId = getTaskIdByTime(uscc, selectTime);
if (selectTime >= getThisMonthMs() ) return {taskList:[]};
let taskMap = await taskData.findFuHuaQiTaskByTaskId(TaskId); let taskMap = await taskData.findFuHuaQiTaskByTaskId(TaskId);
let result = []; let result = [];
...@@ -185,30 +186,6 @@ export async function fuHuaQiPastdueList(uscc:string, selectTime:number) { ...@@ -185,30 +186,6 @@ export async function fuHuaQiPastdueList(uscc:string, selectTime:number) {
/**未提交的数据 */ /**未提交的数据 */
if (!taskMap[ValueStr].isSubmit) { if (!taskMap[ValueStr].isSubmit) {
onceObj.month = taskMap[ValueStr].month + '月'; onceObj.month = taskMap[ValueStr].month + '月';
let dataList = [];
switch(ValueNumber) {
case TASKTYPEENUM.孵化器月度填报:
/** 这里加限制 在月度任务中 isUpdate=true代表已经修改 isUpdate=false表示没有这个任务 详细说明看./month.ts注释*/
dataList = await monthTableData.findmonthTableListByTaskId(TaskId);
break;
case TASKTYPEENUM.新注册或迁入企业登记:
/**限制 draftLock = false 即草稿数据 这里可以不用这个限制 */
dataList = await findEnterpriseListByTaskId(TaskId);
dataList.forEach(item => {
item.uscc = item.draftId;//这里转换一下,为了不改前端代码 使用uscc这个名称,但是实际是draftId
});
break;
case TASKTYPEENUM.融资企业填报:
/**限制 draftLock = false 即草稿数据 这里可以不用这个限制 */
dataList = await findFinancingListByTaskId(TaskId);
break;
}
dataList.forEach(info => {
let addInfo:any = { name:info.name };
onceObj.enterpriseList.push(addInfo);
});
result.push(onceObj); result.push(onceObj);
} }
} }
......
...@@ -9,10 +9,13 @@ ...@@ -9,10 +9,13 @@
import { ERRORCODEENUM, ERRORENUM } from "../../../config/errorEnum"; import { ERRORCODEENUM, ERRORENUM } from "../../../config/errorEnum";
import * as fuhuaqiData from "../../../data/fuHuaQi/fuhuaqi" import * as fuhuaqiData from "../../../data/fuHuaQi/fuhuaqi"
import * as codeData from "../../../data/fuHuaQi/code"
import { BizError } from "../../../util/bizError"; import { BizError } from "../../../util/bizError";
import * as sysTools from "../../../tools/system"; import * as sysTools from "../../../tools/system";
import { get } from "../../../util/request"; import { get } from "../../../util/request";
import { systemConfig } from "../../../config/serverConfig"; import { systemConfig } from "../../../config/serverConfig";
import { CODETYPE } from "../../../config/enum";
import { sendChangePwdCode } from "../../sms";
/** /**
...@@ -23,6 +26,7 @@ import { systemConfig } from "../../../config/serverConfig"; ...@@ -23,6 +26,7 @@ import { systemConfig } from "../../../config/serverConfig";
* @returns fuhuaqiUserInfo:{uscc, name} 登录后的信息 * @returns fuhuaqiUserInfo:{uscc, name} 登录后的信息
*/ */
export async function login(uscc:string, pwd:string) { export async function login(uscc:string, pwd:string) {
if (!sysTools.eccUscc(uscc)) throw new BizError(ERRORENUM.统一社会信用代码不合法, '孵化器登录时');
let fuhuaqiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc); let fuhuaqiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
if(!fuhuaqiInfo) throw new BizError(ERRORENUM.账号不存在); if(!fuhuaqiInfo) throw new BizError(ERRORENUM.账号不存在);
...@@ -71,7 +75,7 @@ export async function firstLoginChangePwd(uscc:string, pwd:string, confirmPwd:st ...@@ -71,7 +75,7 @@ export async function firstLoginChangePwd(uscc:string, pwd:string, confirmPwd:st
/** /**
* 重置密码 * 修改密码
* 小程序端 2.0 * 小程序端 2.0
* @param uscc 信用代码 * @param uscc 信用代码
* @param pwd 原密码 md5之后的 * @param pwd 原密码 md5之后的
...@@ -242,3 +246,84 @@ async function getOpenId(code:string) { ...@@ -242,3 +246,84 @@ async function getOpenId(code:string) {
return weixinRes.openid; return weixinRes.openid;
} }
/**
* 发送修改密码的短信验证码
* @param uscc 孵化器统一信用代码
*/
export async function changePwdSendCode(uscc:string, phone:string) {
if (!sysTools.eccUscc(uscc)) throw new BizError(ERRORENUM.统一社会信用代码不合法, '重置密码时');
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
if (!fuHuaQiInfo) throw new BizError(ERRORENUM.账号不存在, `发送验证码时 uscc:${uscc}`);
if (!fuHuaQiInfo.personInChargePhone) throw new BizError(ERRORENUM.没有联系人, '修改密码发验证码时');
if ( phone != fuHuaQiInfo.personInChargePhone) throw new BizError(ERRORENUM.号码与主体不一致, '修改密码发验证码时');
let todayMs = sysTools.getTodayMs();
let todayCodeList = await codeData.findTodayCodeByUscc(uscc, todayMs);
if (todayCodeList.length >= 4) throw new BizError(ERRORENUM.发送验证码次数超限制, `${uscc} 修改密码发送验证码次数超限制4`);
let sendMs = todayMs;
todayCodeList.forEach(info => {
sendMs = Math.max(sendMs, info.sendMs);
});
let now = new Date().valueOf();
if ((now - sendMs) <= (60 * 1000) ) throw new BizError(ERRORENUM.发送验证码频率过快, `${uscc}`);
let codeId = sysTools.getSMSCodeId(uscc, todayCodeList.length);
let code = sysTools.getSMSCode();
await sendChangePwdCode(phone, code);
now = new Date().valueOf();
await codeData.createCode(uscc, codeId, code, CODETYPE.修改密码, now);
return {
isSuccess:true,
sendMs:now
};
}
/**
* 重置密码
* @param phone
* @param uscc
* @param code
* @param pwd
* @param confirmPwd
*/
export async function resettingPwd(phone:string, uscc:string, code:string, pwd:string, confirmPwd:string) {
if (!sysTools.eccUscc(uscc)) throw new BizError(ERRORENUM.统一社会信用代码不合法, '重置密码时');
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
if (!fuHuaQiInfo) throw new BizError(ERRORENUM.账号不存在, `重置密码时 uscc:${uscc}`);
if ( phone != fuHuaQiInfo.personInChargePhone) throw new BizError(ERRORENUM.号码与主体不一致, '修改密码发验证码时');
if (pwd != confirmPwd) throw new BizError(ERRORENUM.密码不一致);
if (pwd.search(/^[A-Za-z0-9]{6,18}$/) < 0) throw new BizError(ERRORENUM.密码只能由618位字符和数字组成);
let todayMs = sysTools.getTodayMs();
let codeList = await codeData.findTodayCodeByUscc(uscc, todayMs);
let now = new Date().valueOf();
let codeId = '';
let msg = ERRORENUM.验证码错误;
codeList.forEach(info => {
if (info.code == code) {
if (info.isUse) msg = ERRORENUM.验证码失效;
else if ( (now - info.sendMs) > (30 * 60 * 1000) ) msg = ERRORENUM.验证码过期
else codeId = info.id;
}
});
if (!codeId) throw new BizError(msg, `uscc:${uscc}重置密码的code:${code}`);
await codeData.updateCodeState(codeId);
fuHuaQiInfo.pwd = sysTools.getPwdMd5(uscc, sysTools.md5PwdStr(pwd));
await fuHuaQiInfo.save();
return {isSuccess:true};
}
\ No newline at end of file
/**
* 短信主要逻辑
*/
const QcloudSms = require("qcloudsms_js");
import { SMSTYPE } from "../config/enum";
import { systemConfig } from "../config/serverConfig";
/**实例化 QcloudSms */
var qcloudsms;
export function initSMS() {
qcloudsms = QcloudSms(systemConfig.smsSDKId, systemConfig.smsAppKey);
}
/**
* 给特定账号发送信息
* @param phone 需要发送的电话数组
* @param type 类别
* @param params 参数数组
*/
function sendMsmToPhoneNumber(phone, type:number, params) {
var ssender = qcloudsms.SmsSingleSender();
let templateId = -1;
if (type == SMSTYPE.修改密码) templateId = systemConfig.smsModelChangePwd;
else if (type == SMSTYPE.信息填报提醒) templateId = systemConfig.smsModelPointOut;
else if (type == SMSTYPE.创建孵化器提醒) templateId = systemConfig.smsModelInitPointOut;
return new Promise( (resolve, reject) => {
ssender.sendWithParam("86", phone, templateId, params, systemConfig.smsSign, "", "", function (err, res, resData) {
let isError = false;
let msg = "";
if (err) {
msg = err;
isError = true;
} else {
console.log("request data: ", res.req);
console.log("response data: ", resData);
//todo
if (resData.errmsg != 'OK') {
isError = true;
msg = resData.errmsg;
}
}
resolve({isError, msg});
});
})
}
/**
* 发送修改密码的短信验证码
* @param phone
* @param code
*/
export async function sendChangePwdCode(phone:string, code:string) {
let sendPhoneList = [phone];
let params = [code];
let sendRes:any = await sendMsmToPhoneNumber(sendPhoneList, SMSTYPE.修改密码, params);
return sendRes.isError;
}
/**
* 发送任务提醒
* @param phoneList 发送的对象列表
* @param month 月份数
* @returns
*/
export async function sendTaskPointOut(phoneList, month:number) {
let sendRes:any = await sendMsmToPhoneNumber(phoneList, SMSTYPE.修改密码, [month]);
return sendRes.isError;
}
/**
* 创建孵化器发送初始密码消息
* @param phone 发送的对象号码
* @returns
*/
export async function sendInitPointOut(phone:string) {
let sendPhoneList = [phone];
let sendRes:any = await sendMsmToPhoneNumber(sendPhoneList, SMSTYPE.修改密码, []);
return sendRes.isError;
}
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* 备注: * 备注:
*/ */
export const BaseParamUpdateConfig = { export const BaseParamUpdateConfig = {
virtualEnterpriseNum:{type:"Number", notMustHave:true},//虚拟企业数量 virtualEnterpriseNum:{type:"Number"},//虚拟企业数量
incubatedAcreage:{type:"Number", notMustHave:true},//在孵面积(㎡) incubatedAcreage:{type:"Number", notMustHave:true},//在孵面积(㎡)
acreageTotal:{type:"Number", notMustHave:true},//孵化器总面积(㎡) acreageTotal:{type:"Number", notMustHave:true},//孵化器总面积(㎡)
acreagePersonalUse:{type:"Number", notMustHave:true},//孵化器自用面积(㎡) acreagePersonalUse:{type:"Number", notMustHave:true},//孵化器自用面积(㎡)
...@@ -49,8 +49,8 @@ export const OrganizationParamUpdateConfig = { ...@@ -49,8 +49,8 @@ export const OrganizationParamUpdateConfig = {
foundingTeam:{type:"[Object]", notMustHave:true},// {key:"创始团队"},//新加 foundingTeam:{type:"[Object]", notMustHave:true},// {key:"创始团队"},//新加
liaison:{type:"String", notMustHave:true},// {key:"联系人"}, liaison:{type:"String", notMustHave:true},// {key:"联系人"},
liaisonPhone:{type:"String", notMustHave:true},// {key:"联系电话"}, liaisonPhone:{type:"String", notMustHave:true},// {key:"联系电话"},
personInCharge:{type:"String", notMustHave:true},// {key:"负责人"}, // personInCharge:{type:"String", notMustHave:true},// {key:"负责人"}, 2.0去掉了
personInChargePhone:{type:"String", notMustHave:true},// {key:"负责人联系电话"}, // personInChargePhone:{type:"String", notMustHave:true},// {key:"负责人联系电话"}, 2.0去掉了
operationModelDes:{type:"String", notMustHave:true},//{key:"运营模式描述"}, operationModelDes:{type:"String", notMustHave:true},//{key:"运营模式描述"},
foundingTeamType:{type:"Number", notMustHave:true},//{key:"团队类型"} foundingTeamType:{type:"Number", notMustHave:true},//{key:"团队类型"}
}; };
......
...@@ -225,3 +225,21 @@ export enum CHANGEMODE { ...@@ -225,3 +225,21 @@ export enum CHANGEMODE {
增加 = 1, 增加 = 1,
减少 减少
} }
/**
* 验证码类型
*/
export enum CODETYPE {
修改密码 = 1,
}
/**
* 短信类型
*/
export enum SMSTYPE {
修改密码 = 1,
信息填报提醒,
创建孵化器提醒
}
\ No newline at end of file
...@@ -34,7 +34,15 @@ export enum ERRORENUM { ...@@ -34,7 +34,15 @@ export enum ERRORENUM {
频繁操作请稍后再试, 频繁操作请稍后再试,
高风险等级用户, 高风险等级用户,
系统繁忙, 系统繁忙,
绑定失败 绑定失败,
发送验证码次数超限制,
发送验证码频率过快,
没有联系人,
号码与主体不一致,
验证码错误,
验证码失效,
验证码过期,
不能修改过期任务数据,
} }
export enum ERRORCODEENUM { export enum ERRORCODEENUM {
......
...@@ -16,7 +16,7 @@ export async function initConfig() { ...@@ -16,7 +16,7 @@ export async function initConfig() {
if (!configInfo || !configInfo.config) throw new BizError('xml中无配置'); if (!configInfo || !configInfo.config) throw new BizError('xml中无配置');
else { else {
let {port, mongodb, secret, getOpenIdUrl, appId } = configInfo.config; let {port, mongodb, secret, getOpenIdUrl, appId, sms } = configInfo.config;
systemConfig.port = parseInt(port[0]); systemConfig.port = parseInt(port[0]);
systemConfig.secret = secret[0]; systemConfig.secret = secret[0];
...@@ -29,11 +29,22 @@ export async function initConfig() { ...@@ -29,11 +29,22 @@ export async function initConfig() {
const MongoDataBase = mongodb[0].dataBase[0]; const MongoDataBase = mongodb[0].dataBase[0];
const MongoWtimeoutMS = mongodb[0].wtimeoutMS[0]; const MongoWtimeoutMS = mongodb[0].wtimeoutMS[0];
systemConfig.mongodbStr = analysisMongoConnectStr( MongoPath, MongoPort, MongoDataBase, MongoW, MongoWtimeoutMS); systemConfig.mongodbStr = analysisMongoConnectStr( MongoPath, MongoPort, MongoDataBase, MongoW, MongoWtimeoutMS);
let smsInfo = sms[0];
systemConfig.smsSign = smsInfo.smsSign[0];
systemConfig.smsSDKId = smsInfo.sdkAppId[0];
systemConfig.smsAppKey = smsInfo.appKey[0];
systemConfig.smsModelChangePwd = smsInfo.changePwd[0];
systemConfig.smsModelPointOut = smsInfo.pointOut[0];
systemConfig.smsModelInitPointOut = smsInfo.initPointOut[0];
} }
console.log("config init success"); console.log("config init success");
} catch(err) { } catch(err) {
console.log('ERROR => 服务器配置解析错误 请检查根目录下 serverConfig.xml 文件是否正确');
console.log(err);
throw new BizError("服务器配置解析错误 请检查根目录下 serverConfig.xml 文件是否正确"); throw new BizError("服务器配置解析错误 请检查根目录下 serverConfig.xml 文件是否正确");
} }
} }
......
...@@ -218,8 +218,8 @@ export const OrganizationBaseDataConfig = { ...@@ -218,8 +218,8 @@ export const OrganizationBaseDataConfig = {
foundingTeamType:{key:"创始团队类型"},//新加 foundingTeamType:{key:"创始团队类型"},//新加
liaison:{key:"联系人"}, liaison:{key:"联系人"},
liaisonPhone:{key:"联系电话"}, liaisonPhone:{key:"联系电话"},
personInCharge:{key:"负责人"}, // personInCharge:{key:"负责人"}, 2.0去掉了
personInChargePhone:{key:"负责人联系电话"}, // personInChargePhone:{key:"负责人联系电话"}, 2.0去掉了
operationModelDes:{key:"运营模式描述"} operationModelDes:{key:"运营模式描述"}
// hatchingGround:{key:"经备案孵化场地"} // hatchingGround:{key:"经备案孵化场地"}
} }
......
/** /**
* 系统配置类 * 系统配置类
* *
*
*/ */
export class ServerConfig { export class ServerConfig {
/**系统配置 */
port:number; port:number;
mongodbStr:string; mongodbStr:string;
secret:string; secret:string;
/**小程序相关配置 */
getOpenIdUrl:string; getOpenIdUrl:string;
appId:string; appId:string;
/**短信相关配置 */
smsSDKId:number;
smsAppKey:string;
smsSign:string;
smsModelChangePwd:number;
smsModelPointOut:number;
smsModelInitPointOut:number;
} }
\ No newline at end of file
...@@ -97,8 +97,8 @@ export async function selectOneEnterpriseByParam(param:object) { ...@@ -97,8 +97,8 @@ export async function selectOneEnterpriseByParam(param:object) {
* 限制返回 draftId name isCreate uscc 字段 * 限制返回 draftId name isCreate uscc 字段
* @returns [{draftId}] * @returns [{draftId}]
*/ */
export async function findEnterpriseListByTaskId(taskId:string) { export async function findEnterpriseListByTaskId(taskId:string, draftLock:boolean) {
return await enterpriseModel.find({taskId, draftLock:false}, 'draftId name isCreate uscc'); return await enterpriseModel.find({taskId, draftLock}, 'draftId name isCreate uscc');
} }
...@@ -208,7 +208,7 @@ export async function findEnterpriseInfoByName(name:string) { ...@@ -208,7 +208,7 @@ export async function findEnterpriseInfoByName(name:string) {
* @returns [] * @returns []
*/ */
export async function findSubmittedEnterpriseListByFuHuaQiUscc(fuHuaQiUscc:string) { export async function findSubmittedEnterpriseListByFuHuaQiUscc(fuHuaQiUscc:string) {
return await enterpriseModel.find({fuHuaQiUscc, draftLock:true}, 'name logonAdd operatingAdd'); return await enterpriseModel.find({fuHuaQiUscc, draftLock:true }, 'name logonAdd operatingAdd state');
} }
......
...@@ -66,8 +66,8 @@ export async function findFinancingInfoByTaskIdAndSucc(taskId:string, uscc:strin ...@@ -66,8 +66,8 @@ export async function findFinancingInfoByTaskIdAndSucc(taskId:string, uscc:strin
* @param taskId 任务id 格式遵循tool中getTaskId * @param taskId 任务id 格式遵循tool中getTaskId
* @returns [{}] * @returns [{}]
*/ */
export async function findFinancingListByTaskId(taskId:string) { export async function findFinancingListByTaskId(taskId:string, draftLock:boolean) {
return await financingModel.find({taskId, draftLock:false}); return await financingModel.find({taskId, draftLock});
} }
......
/**
* 孵化器验证码 表
* 用于管理 孵化器 所用的验证码
*
*/
import {Schema} from 'mongoose';
import { baseDB } from '../../db/mongo/dbInit';
const codeSchema = new Schema({
id:{type:String},
code:String,
sendMs:Number,//下发时间时间戳
uscc:{type:String, index:true},//统一信用代码
type:Number,//验证码类型 遵循 CODETYPE
isUse:{type:Boolean, default:false},//是否使用 默认false
});
var codeModel;
export function initModel(){
codeModel = baseDB.model('fuhuaqicode', codeSchema);
codeModel.selectOnceData = async function (paramater:object) {
let selectInfo = await codeModel.findOne(paramater).exec();
if (selectInfo) {
if (!selectInfo.runSave) {
selectInfo.runSave = selectInfo.save;
selectInfo.save = save.bind(selectInfo)
}
}
return selectInfo;
}
}
export async function save(throwError=false) {
if (!this.isModified()) return;
await this.runSave({validateBeforeSave:false}).catch(err=>{
console.log(err);
});
}
/**
* 获取今日目标孵化器下发的code
* @param uscc
* @returns []
*/
export async function findTodayCodeByUscc(uscc:string, todayMs:number) {
let findParam = {uscc, sendMs:{"$gt":todayMs} }
let res = await codeModel.find(findParam);
return res || [];
}
/**
* 修改状态
* @param uscc
* @returns []
*/
export async function updateCodeState(codeId:string) {
await codeModel.update({codeId}, {$set:{isUse:true}});
}
/**
* 创建code
* @param uscc 孵化器统一信用代码
* @param id code的id
* @param code code码
* @param type 类型
* @returns
*/
export async function createCode(uscc:string, id:string, code:string, type:number, sendMs:number) {
let addInfo = {
id,
code,
sendMs,
uscc,
type,
isUse:false
};
return await codeModel.create(addInfo);
}
\ No newline at end of file
...@@ -52,8 +52,8 @@ export async function findFuHuaQiScoreInfo(uscc:string) { ...@@ -52,8 +52,8 @@ export async function findFuHuaQiScoreInfo(uscc:string) {
* 创建分数信息 * 创建分数信息
* @param uscc 孵化器统一信用代码 * @param uscc 孵化器统一信用代码
*/ */
export async function createFuHuaQiScore(uscc:string) { export async function createFuHuaQiScore(uscc:string, lastScore:number) {
return await fuHuaQiScoreModel.create({uscc, updateTime:new Date().valueOf() }); return await fuHuaQiScoreModel.create({uscc, updateTime:new Date().valueOf(), lastScore });
} }
...@@ -61,3 +61,7 @@ export async function initFuHuaQiScore(array) { ...@@ -61,3 +61,7 @@ export async function initFuHuaQiScore(array) {
return await fuHuaQiScoreModel.insertMany(array); return await fuHuaQiScoreModel.insertMany(array);
} }
export async function findScoreDataByParam(param) {
return await fuHuaQiScoreModel.find(param);
}
\ No newline at end of file
...@@ -6,6 +6,7 @@ import * as monthTableModel from "../../data/fuHuaQi/monthTable"; ...@@ -6,6 +6,7 @@ import * as monthTableModel from "../../data/fuHuaQi/monthTable";
import * as guanweihuiModel from "../../data/guanWeiHui/guanweihui"; import * as guanweihuiModel from "../../data/guanWeiHui/guanweihui";
import * as scoreModel from "../../data/fuHuaQi/score"; import * as scoreModel from "../../data/fuHuaQi/score";
import * as scoreLogModel from "../../data/fuHuaQi/scoreLog"; import * as scoreLogModel from "../../data/fuHuaQi/scoreLog";
import * as codeModel from "../../data/fuHuaQi/code";
export async function initTable() { export async function initTable() {
taskinModel.initModel(); taskinModel.initModel();
...@@ -16,4 +17,5 @@ export async function initTable() { ...@@ -16,4 +17,5 @@ export async function initTable() {
guanweihuiModel.initModel(); guanweihuiModel.initModel();
scoreModel.initModel(); scoreModel.initModel();
scoreLogModel.initModel(); scoreLogModel.initModel();
codeModel.initModel();
} }
\ No newline at end of file
import { initSMS } from "./biz/sms";
import { initSystemTask } from "./biz/systemTask"; import { initSystemTask } from "./biz/systemTask";
import { initConfig, systemConfig} from "./config/serverConfig"; import { initConfig, systemConfig} from "./config/serverConfig";
import { initDB } from "./db/mongo/dbInit"; import { initDB } from "./db/mongo/dbInit";
import { httpServer } from "./net/http_server"; import { httpServer } from "./net/http_server";
import { initBasicData } from "./tools/dataInit"; import { initBasicData } from "./tools/dataInit";
async function lanuch() { async function lanuch() {
await initConfig();//初始化配置解析 /**初始化配置解析 */
await initConfig();
/**初始化数据库 */
await initDB(); await initDB();
/**初始化底表数据 */
await initBasicData(); await initBasicData();
/**初始化系统任务 */
await initSystemTask(); await initSystemTask();
/**腾讯云短信 */
await initSMS();
/**创建http服务 */
httpServer.createServer(systemConfig.port); httpServer.createServer(systemConfig.port);
console.log('This indicates that the server is started successfully.'); console.log('This indicates that the server is started successfully.');
......
/**
* 分数路由
*/
import * as asyncHandler from 'express-async-handler';
import * as fuHuaQiAdminBiz from '../../biz/admin/fuHuaQi/fuHuaQi';
import { checkGuanWeiHuiToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/admin//baselist',checkGuanWeiHuiToken, asyncHandler(fuHuaQiBaseList));
}
/**
* 孵化器基本信息列表
* @param req
* @param res
*/
async function fuHuaQiBaseList(req, res) {
}
...@@ -12,7 +12,8 @@ export function setRouter(httpServer) { ...@@ -12,7 +12,8 @@ export function setRouter(httpServer) {
httpServer.post('/fuhuaqi/financing/update', checkFuHuaQiToken, asyncHandler(updateFinancingInfo)); httpServer.post('/fuhuaqi/financing/update', checkFuHuaQiToken, asyncHandler(updateFinancingInfo));
httpServer.post('/fuhuaqi/financing/select', checkFuHuaQiToken, asyncHandler(selectEnterpriseFinancingInfo)); httpServer.post('/fuhuaqi/financing/select', checkFuHuaQiToken, asyncHandler(selectEnterpriseFinancingInfo));
httpServer.post('/fuhuaqi/financing/delete', checkFuHuaQiToken, asyncHandler(delEnterpriseFinancingInfo)); httpServer.post('/fuhuaqi/financing/delete', checkFuHuaQiToken, asyncHandler(delEnterpriseFinancingInfo));
httpServer.post('/admin/financing/namelist', checkFuHuaQiToken, asyncHandler(getFinancingInfoByName)); // todo 路由名称不对 /** */
httpServer.post('/fuhuaqi/financing/enterprisenamelist', checkFuHuaQiToken, asyncHandler(getFinancingInfoByName)); // todo 路由名称不对
} }
......
...@@ -22,8 +22,8 @@ export function setRouter(httpServer) { ...@@ -22,8 +22,8 @@ export function setRouter(httpServer) {
/** 任务 */ /** 任务 */
httpServer.post('/fuhuaqi/task/list', checkFuHuaQiToken, asyncHandler(taskList));//待办任务 httpServer.post('/fuhuaqi/task/list', checkFuHuaQiToken, asyncHandler(taskList));//待办任务
httpServer.post('/fuhuaqi/task/submit', checkFuHuaQiToken, asyncHandler(submitTask));//提交待办任务 httpServer.post('/fuhuaqi/task/submit', checkFuHuaQiToken, asyncHandler(submitTask));//提交待办任务
httpServer.post('/fuhuaqi/task/completedlist', checkFuHuaQiToken, asyncHandler(completedList));//todo 已办任务 httpServer.post('/fuhuaqi/task/completedlist', checkFuHuaQiToken, asyncHandler(completedList));//已办任务
httpServer.post('/fuhuaqi/task/pastduelist', checkFuHuaQiToken, asyncHandler(pastDueList));//todo 已办任务 httpServer.post('/fuhuaqi/task/pastduelist', checkFuHuaQiToken, asyncHandler(pastDueList));//已办任务
} }
......
...@@ -15,11 +15,39 @@ export function setRouter(httpServer) { ...@@ -15,11 +15,39 @@ export function setRouter(httpServer) {
httpServer.post('/fuhuaqi/binduser', checkFuHuaQiToken, asyncHandler(bindUser)); httpServer.post('/fuhuaqi/binduser', checkFuHuaQiToken, asyncHandler(bindUser));
httpServer.post('/fuhuaqi/bindlist', checkFuHuaQiToken, asyncHandler(bindList)); httpServer.post('/fuhuaqi/bindlist', checkFuHuaQiToken, asyncHandler(bindList));
httpServer.post('/fuhuaqi/changeuser', checkFuHuaQiToken, asyncHandler(changeUser)); httpServer.post('/fuhuaqi/changeuser', checkFuHuaQiToken, asyncHandler(changeUser));
httpServer.post('/fuhuaqi/forgotpwd', asyncHandler(forgotPwd));
/**发送短信验证码 */
httpServer.post('/fuhuaqi/changepwd/sendcode', asyncHandler(sendCode));
}
/**
* 忘记密码 重置密码
* @param req
* @param res
*/
async function forgotPwd(req, res) {
let reqConf = {phone:'String', uscc:'String', code:'String', pwd:'String', confirmPwd:'String'};
let {phone, uscc, code, pwd, confirmPwd} = eccReqParamater(reqConf, req.body);
let result = await userBiz.resettingPwd(phone, uscc, code, pwd, confirmPwd);
res.success(result);
} }
/** /**
* 发送短信验证码
* @param req
* @param res
*/
async function sendCode(req, res) {
let reqConf = {phone:'String', uscc:'String'};
let {phone, uscc} = eccReqParamater(reqConf, req.body);
let result = await userBiz.changePwdSendCode(uscc, phone);
res.success(result);
}
/**
* 孵化器登录 * 孵化器登录
* @param req * @param req
* @param res * @param res
......
...@@ -124,3 +124,46 @@ export function eccUscc(uscc:string) { ...@@ -124,3 +124,46 @@ export function eccUscc(uscc:string) {
export function getBindId(uscc:string, bindUscc:string) { export function getBindId(uscc:string, bindUscc:string) {
return md5(`${uscc}${bindUscc}${Math.ceil(Math.random() *100)}`); return md5(`${uscc}${bindUscc}${Math.ceil(Math.random() *100)}`);
} }
/**
* 获取今天开始时刻的时间戳 0时0分
* @returns
*/
export function getTodayMs() {
let t =`${ moment().format("YYYY-MM-DD")} 00:00:00`;
return new Date(t).valueOf();
}
/**
* 获取这个月的开始时刻的时间戳 0时0分
* @returns
*/
export function getThisMonthMs() {
let t =`${ moment().format("YYYY-MM")}-01 00:00:00`;
return new Date(t).valueOf();
}
/**
* 获取code的id
* @param uscc 发送人的uscc
* @param todaySendCount 今日发送次数
* @returns ''
*/
export function getSMSCodeId(uscc:string, todaySendCount:number) {
return md5(`${uscc}${todaySendCount}${new Date().valueOf()}`);
}
/**
* 获取一个随机6位数的验证码
* @returns
*/
export function getSMSCode() {
let code = ``;
for (let i =0; i < 6; i++) {
code += Math.floor(Math.random() * 10)
}
return code;
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment