Commit 04c1ecd5 by lixinming

2.0主要功能

parent f413e134
...@@ -275,13 +275,11 @@ export async function addUser(param) { ...@@ -275,13 +275,11 @@ export async function addUser(param) {
let addList = [];//任务列表 let addList = [];//任务列表
let monthList = [];//月度填报列表 let monthList = [];//月度填报列表
// const MonthNumber = moment().subtract(1, 'months').month() + 1;//数据填报月份 const MonthNumber = moment().subtract(1, 'months').month() + 1;//数据填报月份
// const YearNumber =moment().subtract(1, 'months').year(); const YearNumber =moment().subtract(1, 'months').year();
const MonthNumber = 1;//todo 数据填报月份 15号改回来
const YearNumber = 2023
const MonthTableName = `${MonthNumber}月孵化器月度填报`; const MonthTableName = `${MonthNumber}月孵化器月度填报`;
const TimeKey = "20232";//todo 这里要用20232 15号 改回来 const TimeKey = getTimeKey();
let fuHuaQiList = [{uscc:param.uscc}]; let fuHuaQiList = [{uscc:param.uscc}];
fuHuaQiList.forEach(info => { fuHuaQiList.forEach(info => {
......
...@@ -51,4 +51,9 @@ export async function provideLastTask() { ...@@ -51,4 +51,9 @@ export async function provideLastTask() {
export async function updateEnterpriseFuHuaState() { export async function updateEnterpriseFuHuaState() {
await enterpriseData.updateEnterpriseState(FUHUASTATE.实体孵化); await enterpriseData.updateEnterpriseState(FUHUASTATE.实体孵化);
return {}; return {};
} }
\ No newline at end of file
export async function updateFuHuaQiTaskYear() {
await taskData.updateTaskYearData(2023);
return {};
}
...@@ -220,7 +220,7 @@ export async function myEnterprise(uscc:string, state:number, name:string, page: ...@@ -220,7 +220,7 @@ export async function myEnterprise(uscc:string, state:number, name:string, page:
let enterpriseList = []; let enterpriseList = [];
dataList.forEach(info => { dataList.forEach(info => {
let changeData:any = extractData(splitResultConfig.myEnterpriseDataConfig, info, false); let changeData:any = extractData(splitResultConfig.MyEnterpriseDataConfig, info, false);
changeData.state = verificationEnumTools.changeEnumValue(configEnum.FUHUASTATE, changeData.state); changeData.state = verificationEnumTools.changeEnumValue(configEnum.FUHUASTATE, changeData.state);
enterpriseList.push(changeData); enterpriseList.push(changeData);
}); });
...@@ -307,4 +307,107 @@ export async function updateMoveOutInfo(fuHuaQiUscc:string, uscc:string, moveOu ...@@ -307,4 +307,107 @@ export async function updateMoveOutInfo(fuHuaQiUscc:string, uscc:string, moveOu
await enterpriseInfo.save(); await enterpriseInfo.save();
return {isUsccess:true}; return {isUsccess:true};
}
/**
* 企业基本信息 回显
* 小程序端 2.0
* @param fuHuaQiUscc 孵化器统一信用代码
* @param uscc 企业统一信用代码
*/
export async function getMyEnterpriseBaseInfo(fuHuaQiUscc:string, uscc:string) {
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
if (!enterpriseInfo) throw new BizError(ERRORENUM.该企业不存在, `我的企业 回显企业信息 ${uscc}`);
if ( enterpriseInfo.fuHuaQiUscc != fuHuaQiUscc) throw new BizError(ERRORENUM.无法操作其他孵化器的企业, '企业基本信息回显', `孵化器:${fuHuaQiUscc} 企业:${uscc}`);
let changeData = extractData(splitResultConfig.MyEnterpriseBaseDataConfig, enterpriseInfo, false);
return {enterpriseInfo:changeData};
}
/**
* 修改我的企业基本信息
* 小程序端 2.0
* @param fuHuaQiUscc 孵化器统一信用代码
* @param param 表单
*/
export async function updateMyEnterpriseBaseInfo(fuHuaQiUscc:string, param) {
eccFormParam("修改我的企业基本信息", eccFormParamConfig.UpdateMyEnterpriseBaseDataConfig, param );
verificationEnumTools.eccEnumValue('修改新注册企业', 'industry', configEnum.INDUSTRY, param.industry);
if ( !sysTools.eccUscc(param.uscc) ) throw new BizError(ERRORENUM.统一社会信用代码不合法);
const Uscc = param.uscc;
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(Uscc);
if (!enterpriseInfo) throw new BizError(ERRORENUM.该企业不存在, `我的企业 修改我的企业基本信息 ${Uscc}`);
if ( enterpriseInfo.fuHuaQiUscc != fuHuaQiUscc) throw new BizError(ERRORENUM.无法操作其他孵化器的企业, '修改我的企业基本信息', `孵化器:${fuHuaQiUscc} 企业:${Uscc}`);
/**修改字段 */
let changeList = checkChange(param, enterpriseInfo);
if ( !changeList.length ) throw new BizError(ERRORENUM.数据无更新, `${param.uscc}数据无更新`);
changeList.forEach(key => {
enterpriseInfo[key] = param[key];
});
await enterpriseInfo.save();
return {isSuccess:true};
}
/**
* 补录新迁入企业信息
* 小程序端 2.0
* @param fuHuaQiUscc 孵化器统一信用代码
* @param param 表单
*/
export async function replenishMyEnterpriseInPutInfo(fuHuaQiUscc:string, param) {
eccFormParam("补录新迁入企业信息", eccFormParamConfig.ReplenishMyEnterpriseInPutDataConfig, param );
verificationEnumTools.eccEnumValue('补录新迁入企业信息', 'industry', configEnum.INDUSTRY, param.industry);
if ( !sysTools.eccUscc(param.uscc) ) throw new BizError(ERRORENUM.统一社会信用代码不合法);
/**不能出现重复的统一社会信用代码 草稿的也不行 */
let dataBaseInfo = await enterpriseData.findEnterpriseByUscc(param.uscc);
if ( dataBaseInfo&& dataBaseInfo.uscc) throw new BizError(ERRORENUM.该企业已存在, `${param.uscc}已经在库中存在`);
/**添加新注册企业标识 */
param.isCreate = false;//标识此次操作是否是迁入企业并不是新注册企业
param.state = configEnum.FUHUASTATE.实体孵化;
await enterpriseData.replenishData(fuHuaQiUscc, param);
return {isSuccess:true};
}
/**
* 补录新注册企业信息
* 小程序端 2.0
* @param fuHuaQiUscc 孵化器统一信用代码
* @param param 表单
*/
export async function replenishMyEnterpriseCreateInfo(fuHuaQiUscc:string, param) {
eccFormParam("补录新迁入企业信息", eccFormParamConfig.ReplenishMyEnterpriseCreateDataConfig, param );
verificationEnumTools.eccEnumValue('补录新迁入企业信息', 'industry', configEnum.INDUSTRY, param.industry);
if ( !sysTools.eccUscc(param.uscc) ) throw new BizError(ERRORENUM.统一社会信用代码不合法);
/**不能出现重复的统一社会信用代码 草稿的也不行 */
let dataBaseInfo = await enterpriseData.findEnterpriseByUscc(param.uscc);
if ( dataBaseInfo&& dataBaseInfo.uscc) throw new BizError(ERRORENUM.该企业已存在, `${param.uscc}已经在库中存在`);
/**添加新注册企业标识 */
param.isCreate = false;//标识此次操作是否是迁入企业并不是新注册企业
param.state = configEnum.FUHUASTATE.实体孵化;
await enterpriseData.replenishData(fuHuaQiUscc, param);
return {isSuccess:true};
} }
\ No newline at end of file
/**
* 分数
*/
import { FuHuaQiMyDataScoreConfig, ScoreConfig, FuHuaQiBaseDataScoreConfig, EnterpriseScoreConfig, StarConfig } from "../../../config/scoreConfig";
import { findEnterpriseList } from "../../../data/enterprise/enterprise";
import { findFuHuaQiByUSCC } from "../../../data/fuHuaQi/fuhuaqi";
import { findTaskListByParam } from "../../../data/fuHuaQi/task";
/**
* 统计孵化器分数
* @param uscc 孵化器统一信用代码
*/
export async function MyScore(uscc:string) {
let fuHuaQiInfo = await findFuHuaQiByUSCC(uscc);
/** 初始分*/
let startScore = fuHuaQiInfo.startScore || 400;
/**我的数据分 */
let isValueCount = 0;
let valueCount = Object.keys(FuHuaQiMyDataScoreConfig).length;
for (let key in FuHuaQiMyDataScoreConfig) {
let type = FuHuaQiMyDataScoreConfig[key];
if (type == '[Object]' || type == '[Number]') {
if (fuHuaQiInfo[key] && fuHuaQiInfo[key].length) isValueCount += 1;
} else if (fuHuaQiInfo[key]) isValueCount += 1;
}
let myDataScore = ScoreConfig["我的数据"] * (isValueCount / valueCount);
/**基础数据分 */
isValueCount = 0;
valueCount = Object.keys(FuHuaQiBaseDataScoreConfig).length;
for (let key in FuHuaQiBaseDataScoreConfig) {
let type = FuHuaQiBaseDataScoreConfig[key];
if (type == '[Object]' || type == '[Number]') {
if (fuHuaQiInfo[key] && fuHuaQiInfo[key].length) isValueCount += 1;
} else if (fuHuaQiInfo[key]) isValueCount += 1;
}
let baseDataScore = ScoreConfig["孵化器基础数据"] * (isValueCount / valueCount);
/**我的企业数据分 */
let enterpriseList = await findEnterpriseList({fuHuaQiUscc:uscc, draftLock:true});
isValueCount = 0;
valueCount = 0;
enterpriseList.forEach(info => {
for (let key in EnterpriseScoreConfig) {
let type = EnterpriseScoreConfig[key];
if (type == '[Object]' || type == '[Number]') {
if (fuHuaQiInfo[key] && fuHuaQiInfo[key].length) isValueCount += 1;
} else if (type == 'Boolean') {
isValueCount += 1;
} else if (fuHuaQiInfo[key]) isValueCount += 1;
}
valueCount += Object.keys(EnterpriseScoreConfig).length;
});
let enterpriseDataScore = ScoreConfig["企业基础数据"] * (isValueCount / valueCount);
/**算任务的分 */
let taskScore = 0;
let taskList = await findTaskListByParam({fuHuaQiUscc:uscc});
ScoreConfig["任务分数"]
taskList.forEach(info => {
// if (isSubmit)
});
let newScore = startScore + myDataScore + baseDataScore + enterpriseDataScore + taskScore;
let oldScore = fuHuaQiInfo.socre;
/**根据分数算星星 */
let oldStar = starCount(oldScore);
let newStar = starCount(newScore);
let starUp = newStar > oldStar;
fuHuaQiInfo.socre = newScore;
await fuHuaQiInfo.save();
return {scoreInfo:{star:newStar, starUp, score:newScore-oldScore}} ;
}
function count(config:object, scoreCount:number, data) {
let isValueCount = 0;
for (let key in config) {
let type = config[key];
}
}
function starCount(socre:number) {
let star = 1;
for (let i = 0; i < StarConfig.length; i++) {
let {name, value, starNum} = StarConfig[i];
if ( socre <= value ) {
star = starNum;
break;
}
}
return star;
}
export async function updateScore() {
}
\ No newline at end of file
...@@ -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 { getLastTimeKey, getTaskId, getTaskIdByTime, getTimeKey } from "../../../tools/system"; import { getTaskId, getTaskIdByTime, getTimeKey } from "../../../tools/system";
/** /**
...@@ -33,9 +33,7 @@ import { getLastTimeKey, getTaskId, getTaskIdByTime, getTimeKey } from "../../.. ...@@ -33,9 +33,7 @@ import { getLastTimeKey, getTaskId, getTaskIdByTime, getTimeKey } from "../../..
*/ */
export async function fuHuaQiTaskList(uscc:string) { export async function fuHuaQiTaskList(uscc:string) {
/**得到这个月的任务map taskMap格式为{type:{isSubmit}} */ /**得到这个月的任务map taskMap格式为{type:{isSubmit}} */
// const TaskId = getTaskId(uscc); const TaskId = getTaskId(uscc);
//todo 测试代码 15日把注释放开把下面的代码删了
const TaskId =`${uscc}${20232}`;
let taskMap = await taskData.findFuHuaQiTaskByTaskId(TaskId); let taskMap = await taskData.findFuHuaQiTaskByTaskId(TaskId);
...@@ -49,14 +47,14 @@ export async function fuHuaQiTaskList(uscc:string) { ...@@ -49,14 +47,14 @@ export async function fuHuaQiTaskList(uscc:string) {
let onceObj = { let onceObj = {
key:ValueNumber, key:ValueNumber,
title:anyKey, //标题 title:anyKey, //标题
month:taskMap[ValueStr].month + '月', month:'',
enterpriseList:[] //相关的列表 这里不应该用这个字段名称 当时不能修改前端 沿用了这个字段名称 enterpriseList:[] //相关的列表 这里不应该用这个字段名称 当时不能修改前端 沿用了这个字段名称
}; };
/**没有提交任务 则获取本月提交的任务相关信息 */ /**没有提交任务 则获取本月提交的任务相关信息 */
if (!taskMap[ValueStr].isSubmit) { if (taskMap[ValueStr] && !taskMap[ValueStr].isSubmit) {
let dataList = []; let dataList = [];
onceObj.month = taskMap[ValueStr].month + '月'
switch(ValueNumber) { switch(ValueNumber) {
case TASKTYPEENUM.孵化器月度填报: case TASKTYPEENUM.孵化器月度填报:
/** 这里加限制 在月度任务中 isUpdate=true代表已经修改 isUpdate=false表示没有这个任务 详细说明看./month.ts注释*/ /** 这里加限制 在月度任务中 isUpdate=true代表已经修改 isUpdate=false表示没有这个任务 详细说明看./month.ts注释*/
......
...@@ -62,7 +62,7 @@ export async function firstLoginChangePwd(uscc:string, pwd:string, confirmPwd:st ...@@ -62,7 +62,7 @@ export async function firstLoginChangePwd(uscc:string, pwd:string, confirmPwd:st
let dataBaseInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc); let dataBaseInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
if (dataBaseInfo.firstLoginIsChangePwd) throw new BizError(ERRORENUM.不能重复修改密码, `重复调用了首次登录之后的修改密码接口${uscc}`); if (dataBaseInfo.firstLoginIsChangePwd) throw new BizError(ERRORENUM.不能重复修改密码, `重复调用了首次登录之后的修改密码接口${uscc}`);
//todo 校验密码
dataBaseInfo.pwd = sysTools.getPwdMd5(uscc, sysTools.md5PwdStr(pwd)); dataBaseInfo.pwd = sysTools.getPwdMd5(uscc, sysTools.md5PwdStr(pwd));
dataBaseInfo.firstLoginIsChangePwd = true; dataBaseInfo.firstLoginIsChangePwd = true;
await dataBaseInfo.save(); await dataBaseInfo.save();
...@@ -120,19 +120,100 @@ export async function logout(uscc:string){ ...@@ -120,19 +120,100 @@ export async function logout(uscc:string){
} }
/**
* 绑定账号
* 小程序端 2.0
* 说明: 一个账号只能被一个群体绑定 例如:A账号被B绑定着,今天被C绑定了,
* @param uscc 发起账号的统一信用代码
* @param bindUscc 被绑定账号统一信用代码
* @param bindPwd 被绑定账号密码
* @param deviceId 绑定时的设备号id
*/
export async function bindFuHuaQi(uscc:string, bindUscc:string, bindPwd:string, deviceId:string) {
/**校验被绑定账号存不存在 */
let bindFuhuaqiInfo = await fuhuaqiData.findFuHuaQiByUSCC(bindUscc);
if (!bindFuhuaqiInfo) throw new BizError(ERRORENUM.账号不存在, `绑定账号时 =${bindUscc}=`);
export async function bindFuHuaQi(uscc:string, bindUscc:string, bindPwd:string) { /**校验被绑定账号密码是否正确 */
let checkBindPwd = sysTools.getPwdMd5(bindFuhuaqiInfo.uscc, bindPwd);
if (bindFuhuaqiInfo.pwd != checkBindPwd) throw new BizError(ERRORENUM.密码错误);
/**发起账号信息 */
let fuhuaqiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc); let fuhuaqiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
// if ( !fuhuaqiInfo ) throw new BizError(ERRORENUM.); /**如果操作账号从来没有绑定行为 则生成一个绑定id 否则沿用*/
const BindId = !fuhuaqiInfo.bindId ? sysTools.getBindId(uscc, bindUscc) : fuhuaqiInfo.bindId;
bindFuhuaqiInfo.bindId = BindId;
bindFuhuaqiInfo.bindDeviceId = deviceId;
await bindFuhuaqiInfo.save();
/**直接覆盖发起账号的设备信息 */
fuhuaqiInfo.bindDeviceId = deviceId;
fuhuaqiInfo.bindId = BindId;
await fuhuaqiInfo.save();
return {isSuccess:true};
} }
/** /**
* 切换账号列表 * 已绑定账号列表
* 小程序端 2.0 * 小程序端 2.0
* @param uscc * @param uscc 孵化器统一信用代码
* @param deviceId 当前设备号id
*/ */
export async function changeUserList(uscc:string) { export async function bindUserList(uscc:string, deviceId:string) {
/**发起账号信息 */
let fuhuaqiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
/**找绑定关系 */
let bindList = [];
if (fuhuaqiInfo.bindId && fuhuaqiInfo.bindDeviceId && deviceId == fuhuaqiInfo.bindDeviceId ) {
let checkList = await fuhuaqiData.findFuHuaQiList({ bindId:fuhuaqiInfo.bindId, deviceId:deviceId });
checkList.forEach(info => {
let currentAccount = info.uscc == fuhuaqiInfo.uscc;
bindList.push({
uscc:info.uscc,
currentAccount,
personInChargePhone:info.personInChargePhone,
operationName:info.operationName
});
});
}
return {bindList}
}
/**
* 切换账号
* @param uscc 发起账号统一信用代码
* @param targetUscc 目标账号统一信用代码
*/
export async function changeUser(uscc:string, targetUscc:string) {
/**发起账号信息 */
let fuhuaqiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
/**目标账号信息 */
let targetFuhuaqiInfo = await fuhuaqiData.findFuHuaQiByUSCC(targetUscc);
if (!targetFuhuaqiInfo) throw new BizError(ERRORENUM.账号不存在, `切换账号时=${targetUscc}=`);
if (fuhuaqiInfo.bindId != targetFuhuaqiInfo.bindId || targetFuhuaqiInfo.bindDeviceId != fuhuaqiInfo.bindDeviceId) {
throw new BizError(ERRORENUM.账号非绑定关系, `发起账号:${uscc} 目标账号:${targetUscc}`);
}
const Token = sysTools.getToken(uscc+targetUscc);
targetFuhuaqiInfo.token = Token;
targetFuhuaqiInfo.tokenMs = new Date().valueOf();
await targetFuhuaqiInfo.save();
return {
uscc: targetFuhuaqiInfo.uscc,
firstLogin : !targetFuhuaqiInfo.firstLoginIsChangePwd,
token:Token
};
} }
\ No newline at end of file
...@@ -189,6 +189,8 @@ export const FinancingParamUpdateConfig = { ...@@ -189,6 +189,8 @@ export const FinancingParamUpdateConfig = {
fuHuaQiInvestmentStyle:{type:"Number", notMustHave:true },//孵化器投资方式 fuHuaQiInvestmentStyle:{type:"Number", notMustHave:true },//孵化器投资方式
financingRounds:{type:"Number"},//融资轮次 financingRounds:{type:"Number"},//融资轮次
}; };
/** /**
* 使用端: 小程序端【孵化器入口】 * 使用端: 小程序端【孵化器入口】
* 场景: 创建融资企业登记选择了孵化器投资 * 场景: 创建融资企业登记选择了孵化器投资
...@@ -199,6 +201,7 @@ export const FinancingParamSubConfig = { ...@@ -199,6 +201,7 @@ export const FinancingParamSubConfig = {
fuHuaQiInvestmentStyle:{type:"Number"} fuHuaQiInvestmentStyle:{type:"Number"}
} }
/** /**
* 使用端: 管理后台 * 使用端: 管理后台
* 场景: 新增孵化器账号 * 场景: 新增孵化器账号
...@@ -209,4 +212,63 @@ export const FuHuaQiUserConfig = { ...@@ -209,4 +212,63 @@ export const FuHuaQiUserConfig = {
uscc:{type:"String" },//营业执照 uscc:{type:"String" },//营业执照
personInChargePhone:{type:"String" },//负责人手机号 personInChargePhone:{type:"String" },//负责人手机号
personInCharge:{type:"String" }//负责人 personInCharge:{type:"String" }//负责人
} }
\ No newline at end of file
/**
* 使用端: 小程序端【孵化器入口】
* 场景: 修改我的企业列表里的 我的企业信息
* 备注: 所有参数为必填
*/
export const UpdateMyEnterpriseBaseDataConfig = {
name:{type:"String"},//企业名称
uscc:{type:"String"},//统一信用代码
industry:{type:"[Number]"},//领域
mainBusiness:{type:"String"},//主营业务
logonTime:{type:"Number"},//注册时间
firstIncubationTime:{type:"Number"},//首次入孵时间
isNaturalPersonHolding:{type:"Boolean"},//是否自然人控股企业
logonAdd:{type:"String"},//注册地址
operatingAdd:{type:"String"},//经营地址
}
/**
* 使用端: 小程序端【孵化器入口】
* 场景: 我的企业列表里的 补录 迁入企业
* 备注: 所有参数为必填
*/
export const ReplenishMyEnterpriseInPutDataConfig = {
name:{type:"String"},//企业名称
uscc:{type:"String"},//统一信用代码
industry:{type:"[Number]"},//领域
mainBusiness:{type:"String"},//主营业务
logonTime:{type:"Number"},//注册时间
firstIncubationTime:{type:"Number"},//首次入孵时间
isNaturalPersonHolding:{type:"Boolean"},//是否自然人控股企业
logonAdd:{type:"String"},//注册地址
operatingAdd:{type:"String"},//经营地址
leasedArea:{type:"Number"},//租赁面积(平方米)
timeOfImmigration:{type:"Number"},//迁入时间
oldLogonAdd:{type:"String"},//迁入前注册地址
}
/**
* 使用端: 小程序端【孵化器入口】
* 场景: 我的企业列表里的 补录 新注册企业
* 备注: 所有参数为必填
*/
export const ReplenishMyEnterpriseCreateDataConfig = {
name:{type:"String"},//企业名称
uscc:{type:"String"},//统一信用代码
industry:{type:"[Number]"},//领域
mainBusiness:{type:"String"},//主营业务
logonTime:{type:"Number"},//注册时间
firstIncubationTime:{type:"Number"},//首次入孵时间
isNaturalPersonHolding:{type:"Boolean"},//是否自然人控股企业
logonAdd:{type:"String"},//注册地址
operatingAdd:{type:"String"},//经营地址
leasedArea:{type:"Number"},//租赁面积(平方米)
}
...@@ -29,6 +29,7 @@ export enum ERRORENUM { ...@@ -29,6 +29,7 @@ export enum ERRORENUM {
该任务已提交, 该任务已提交,
无法操作其他孵化器的企业, 无法操作其他孵化器的企业,
请填入其他原因, 请填入其他原因,
账号非绑定关系
} }
export enum ERRORCODEENUM { export enum ERRORCODEENUM {
......
export const ScoreConfig = {
"我的数据":25,
"孵化器基础数据":25,
"企业基础数据":50,
"任务分数":10,
}
export const StarConfig = [
{name:"一星", starNum:1, value:100},
{name:"二星", starNum:2, value:300},
{name:"三星", starNum:3, value:500},
{name:"四星", starNum:4, value:600},
{name:"五星", starNum:5, value:700}
]
export const FuHuaQiMyDataScoreConfig = {
incubatedAcreage:"Number",//在孵面积(㎡)
acreageTotal:"Number",//孵化器总面积(㎡)
acreagePersonalUse:"Number",//孵化器自用面积(㎡)
hatchingGround:"[Object]",//经备案场地
};
export const FuHuaQiBaseDataScoreConfig = {
name:{type:"String"},// {key:"名称"},
logonTime:{type:"Number"},// {key:"注册时间", changeDate:true},
lv:{type:"Number"},// {key:"孵化器级别"},
identificationTime:{type:"Number"},// {key:"认定时间", changeDate:true},
industry:{type:"[Number]"},// {key:"孵化领域"},
institutionalNature:{type:"Number"},// {key:"机构性质"},
operationModel:{type:"[Number]"},// {key:"运营模式"},//新加
foundingTeam:{type:"[Object]"},// {key:"创始团队"},//新加
liaison:{type:"String"},// {key:"联系人"},
liaisonPhone:{type:"String"},// {key:"联系电话"},
personInCharge:{type:"String"},// {key:"负责人"},
personInChargePhone:{type:"String"},// {key:"负责人联系电话"},
}
export const EnterpriseScoreConfig = {
name: "String",//企业名称
industry:"[Number]",//领域
mainBusiness:"String",//主营业务
logonTime:"Number",//注册时间
firstIncubationTime:"Number",//首次入孵时间
isNaturalPersonHolding:"Boolean",//是否自然人控股企业
logonAdd:"String",//注册地址
operatingAdd:"String",//经营地址
}
\ No newline at end of file
...@@ -230,9 +230,28 @@ export const OrganizationBaseDataConfig = { ...@@ -230,9 +230,28 @@ export const OrganizationBaseDataConfig = {
* 场景: 我的企业列表 * 场景: 我的企业列表
* 备注: * 备注:
*/ */
export const myEnterpriseDataConfig = { export const MyEnterpriseDataConfig = {
name:{key:"名称"}, name:{key:"名称"},
uscc:{key:"统一信用代码"}, uscc:{key:"统一信用代码"},
state:{key:"孵化器状态"}, state:{key:"孵化器状态"},
leasedArea:{key:"租赁面积"} leasedArea:{key:"租赁面积"}
} }
\ No newline at end of file
/**
* 使用端: 小程序端【孵化器入口】
* 场景: 我的企业列表中的企业详情
* 备注: 回显
*/
export const MyEnterpriseBaseDataConfig = {
name: {key:"企业名称"},//
uscc:{key:"统一信用代码" },//
industry:{key:"领域"},//
mainBusiness:{key:"主营业务"},//
logonTime:{key:"注册时间"},//
firstIncubationTime:{key:"首次入孵时间"},//
isNaturalPersonHolding:{key:"是否自然人控股企业"},//
logonAdd:{key:"注册地址"},//
operatingAdd:{key:"经营地址"},//
}
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
import {Schema} from 'mongoose'; import {Schema} from 'mongoose';
import { baseDB } from '../../db/mongo/dbInit'; import { baseDB } from '../../db/mongo/dbInit';
import { FUHUASTATE } from '../../config/enum';
const enterpriseSchema = new Schema({ const enterpriseSchema = new Schema({
name: {type:String, index: true},//企业名称 name: {type:String, index: true},//企业名称
...@@ -22,12 +23,12 @@ const enterpriseSchema = new Schema({ ...@@ -22,12 +23,12 @@ const enterpriseSchema = new Schema({
isCreate:{type:Boolean, default:false},//是否新建 isCreate:{type:Boolean, default:false},//是否新建
// isPhysicalPresence:{type:Boolean, default:true},//是否实地孵化 暂时弃用 // isPhysicalPresence:{type:Boolean, default:true},//是否实地孵化 暂时弃用
leasedArea:Number,//租赁面积(平方米) leasedArea:Number,//租赁面积(平方米)
draftLock:{type:Boolean, default:false},//草稿锁,true为提交之后,false为草稿 mainBusiness:{type:String, default:""},//主营业务
createTime:Number,//录入时间 createTime:Number,//录入时间
draftLock:{type:Boolean, default:false},//草稿锁,true为提交之后,false为草稿
enterpriseIsInPut:{type:Boolean, default:false},//是否是初始数据 todo 后续要弃用 兼容原始数据无法判断是否是迁入企业这个问题加的字段 enterpriseIsInPut:{type:Boolean, default:false},//是否是初始数据 todo 后续要弃用 兼容原始数据无法判断是否是迁入企业这个问题加的字段
draftId:{type:String, index:true},//草稿id 编辑的时候使用这个id 保存之后就不认这个id了 draftId:{type:String, index:true},//草稿id 编辑的时候使用这个id 保存之后就不认这个id了
mainBusiness:{type:String, default:""},//主营业务 state:{type:Number, default: FUHUASTATE.实体孵化 },//孵化状态 遵循枚举 FUHUASTATE 值 默认实体孵化 ----2.0
state:Number,//孵化状态 遵循枚举 FUHUASTATE 值 ----2.0
virtualCause:[Number],//虚拟孵化原因 遵循 VIRTUALCAUSE 的值 ----2.0 virtualCause:[Number],//虚拟孵化原因 遵循 VIRTUALCAUSE 的值 ----2.0
virtualCauseDes:String,//虚拟孵化描述 ----2.0 virtualCauseDes:String,//虚拟孵化描述 ----2.0
moveOutType:Number,// 迁出类型 遵循 MOVEOUTTYPE 的值 ----2.0 moveOutType:Number,// 迁出类型 遵循 MOVEOUTTYPE 的值 ----2.0
...@@ -230,3 +231,9 @@ export async function createEnterpriseToList(fuHuaQiList:object) { ...@@ -230,3 +231,9 @@ export async function createEnterpriseToList(fuHuaQiList:object) {
export async function updateEnterpriseState(state:number) { export async function updateEnterpriseState(state:number) {
return await enterpriseModel.updateMany({}, {$set:{state}}); return await enterpriseModel.updateMany({}, {$set:{state}});
} }
export async function replenishData(fuHuaQiUscc:string, param) {
let addInfo = Object.assign({fuHuaQiUscc, createTime:new Date().valueOf()}, param);
await enterpriseModel.create(addInfo);
}
\ No newline at end of file
...@@ -48,14 +48,20 @@ const fuHuaQiSchema = new Schema({ ...@@ -48,14 +48,20 @@ const fuHuaQiSchema = new Schema({
foundingTeamType:{type:Number, default:1},//创业团队类型 foundingTeamType:{type:Number, default:1},//创业团队类型
operationModel:{type:[Number], default:[]},//运营模式 operationModel:{type:[Number], default:[]},//运营模式
operationModelDes:String,//运营模式描述 operationModelDes:String,//运营模式描述
/**登录相关 */ /**用户相关 */
pwd:String,//登录密码 pwd:String,//登录密码
token:{type:String, index:true}, token:{type:String, index:true},
tokenMs:Number, tokenMs:Number,
firstLoginIsChangePwd:{type:Boolean, default:false},//首次登录是否修改密码 firstLoginIsChangePwd:{type:Boolean, default:false},//首次登录是否修改密码
createTime:Number, createTime:Number,
userState:{type:Boolean, default:false}, //是否禁用 userState:{type:Boolean, default:false}, //是否禁用
bindId:{type:String}//绑定标识 /**绑定账号相关 */
bindDeviceId:String,//绑定时的设备号
bindId:{type:String},//绑定标识
/**分数相关 */
score:Number,//分数
startScore:Number,//初始分 400 创建孵化器的时候要在这里加上
lastYearStar:Number,//去年星值 这里默认是3星 每年12月31日12时,需要根据分算星然后更新到这里
}); });
var fuHuaQiModel; var fuHuaQiModel;
...@@ -226,4 +232,14 @@ export async function createFuHuaQiUser(param) { ...@@ -226,4 +232,14 @@ export async function createFuHuaQiUser(param) {
export async function createFuHuaQiToList(fuHuaQiList:object) { export async function createFuHuaQiToList(fuHuaQiList:object) {
await fuHuaQiModel.insertMany(fuHuaQiList); await fuHuaQiModel.insertMany(fuHuaQiList);
}
/**
* 根据绑定id查找孵化器列表
* @param bindId 绑定id
* @returns {}
*/
export async function findFuHuaQiByBindId(bindId:string) {
return await fuHuaQiModel.find({bindId});
} }
\ No newline at end of file
...@@ -19,6 +19,7 @@ const fuHuaQiTaskSchema = new Schema({ ...@@ -19,6 +19,7 @@ const fuHuaQiTaskSchema = new Schema({
// relevanceId:String,//任务关联的表 financing 或 enterprise 的id 弃用 // relevanceId:String,//任务关联的表 financing 或 enterprise 的id 弃用
isSubmit:Boolean,//是否提交 isSubmit:Boolean,//是否提交
month:Number,//数据填报月 month:Number,//数据填报月
year:Number,//数据填报年 2.0算分的时候加入的
}); });
var fuHuaQiTaskModel; var fuHuaQiTaskModel;
...@@ -86,4 +87,19 @@ export async function findTaskListByType(param) { ...@@ -86,4 +87,19 @@ export async function findTaskListByType(param) {
map[info.taskId] = info.isSubmit map[info.taskId] = info.isSubmit
}); });
return map; return map;
} }
\ No newline at end of file
export async function findTaskListByParam(param) {
let taskList = await fuHuaQiTaskModel.find(param);
return taskList;
}
/**
* 将所有数据的年份加上 2023
* 2.0上线后去掉
* @param state 孵化状态
*/
export async function updateTaskYearData(year:number) {
return await fuHuaQiTaskModel.updateMany({}, {$set:{year}});
}
...@@ -23,8 +23,17 @@ export function setRouter(httpServer) { ...@@ -23,8 +23,17 @@ export function setRouter(httpServer) {
/**测试接口 用于发放1月份任务 */ /**测试接口 用于发放1月份任务 */
httpServer.post('/admin/provide/task/add12',checkInterior, asyncHandler(provideLastTask)); httpServer.post('/admin/provide/task/add12',checkInterior, asyncHandler(provideLastTask));
httpServer.post('/admin/provide/enterprise/updatestate',checkInterior, asyncHandler(updateEnterpriseState)); httpServer.post('/admin/provide/enterprise/updatestate',checkInterior, asyncHandler(updateEnterpriseState));
httpServer.post('/admin/provide/task/updatetaskyear',checkInterior, asyncHandler(updateTaskYear));
} }
async function updateTaskYear(req, res) {
let data = await provideBiz.updateEnterpriseFuHuaState();
res.success({isUsccess:true});
}
async function updateEnterpriseState(req, res) { async function updateEnterpriseState(req, res) {
let data = await provideBiz.updateEnterpriseFuHuaState(); let data = await provideBiz.updateEnterpriseFuHuaState();
res.success({isUsccess:true}); res.success({isUsccess:true});
......
...@@ -18,12 +18,17 @@ export function setRouter(httpServer) { ...@@ -18,12 +18,17 @@ export function setRouter(httpServer) {
httpServer.post('/fuhuaqi/enterprise/delete', checkFuHuaQiToken, asyncHandler(delEnterpriseInfo)); httpServer.post('/fuhuaqi/enterprise/delete', checkFuHuaQiToken, asyncHandler(delEnterpriseInfo));
/**我的企业 */ /**我的企业 */
httpServer.post('/fuhuaqi/myenterprise/list', checkFuHuaQiToken, asyncHandler(myEnterpriseList)); httpServer.post('/fuhuaqi/myenterprise/list', checkFuHuaQiToken, asyncHandler(myEnterpriseList));
httpServer.post('/fuhuaqi/myenterprise/info', checkFuHuaQiToken, asyncHandler(myEnterpriseInfo));
httpServer.post('/fuhuaqi/myenterprise/moveoutlist', checkFuHuaQiToken, asyncHandler(myEnterpriseMoveOutList)); httpServer.post('/fuhuaqi/myenterprise/moveoutlist', checkFuHuaQiToken, asyncHandler(myEnterpriseMoveOutList));
httpServer.post('/fuhuaqi/myenterprise/info', checkFuHuaQiToken, asyncHandler(myEnterpriseInfo));
httpServer.post('/fuhuaqi/myenterprise/update', checkFuHuaQiToken, asyncHandler(updateMyEnterpriseInfo));
httpServer.post('/fuhuaqi/myenterprise/replenish/create', checkFuHuaQiToken, asyncHandler(replenishCreate));
httpServer.post('/fuhuaqi/myenterprise/replenish/input', checkFuHuaQiToken, asyncHandler(replenishInPut));
/**我的企业 修改 */ /**我的企业 修改 */
httpServer.post('/fuhuaqi/myenterprise/update/physical', checkFuHuaQiToken, asyncHandler(updatePhysical));//todo 实体 httpServer.post('/fuhuaqi/myenterprise/update/physical', checkFuHuaQiToken, asyncHandler(updatePhysical));
httpServer.post('/fuhuaqi/myenterprise/update/virtual', checkFuHuaQiToken, asyncHandler(updateVirtual));//todo 虚拟 httpServer.post('/fuhuaqi/myenterprise/update/virtual', checkFuHuaQiToken, asyncHandler(updateVirtual));
httpServer.post('/fuhuaqi/myenterprise/update/moveout', checkFuHuaQiToken, asyncHandler(updateMoveOut));//todo 迁出 httpServer.post('/fuhuaqi/myenterprise/update/moveout', checkFuHuaQiToken, asyncHandler(updateMoveOut));
/**我的企业信息 回显 */
// httpServer.post('/fuhuaqi/myenterprise//moveout', checkFuHuaQiToken, asyncHandler(updateMoveOut));
} }
...@@ -158,7 +163,8 @@ async function myEnterpriseMoveOutList(req, res) { ...@@ -158,7 +163,8 @@ async function myEnterpriseMoveOutList(req, res) {
/** /**
* 企业基本信息 * 企业基本信息
* 我的企业列表中点击查看按钮 * 我的企业列表中的企业基本信息
* 回显
* 2.0 * 2.0
* @param req * @param req
* @param res * @param res
...@@ -167,6 +173,8 @@ async function myEnterpriseInfo(req, res) { ...@@ -167,6 +173,8 @@ async function myEnterpriseInfo(req, res) {
let reqConf = {uscc: 'String' }; let reqConf = {uscc: 'String' };
let { uscc } = eccReqParamater(reqConf, req.body); let { uscc } = eccReqParamater(reqConf, req.body);
const FuHuaQiUscc = req.headers.uscc; const FuHuaQiUscc = req.headers.uscc;
let result = await enterpriseBiz.getMyEnterpriseBaseInfo(FuHuaQiUscc, uscc);
res.success(result);
} }
...@@ -219,3 +227,51 @@ async function updateMoveOut(req, res) { ...@@ -219,3 +227,51 @@ async function updateMoveOut(req, res) {
res.success(result); res.success(result);
} }
/**
* 修改我的企业信息
* 2.0
* @param req
* @param res
*/
async function updateMyEnterpriseInfo(req, res) {
let reqConf = {form: 'Object' };
let { form } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await enterpriseBiz.updateMyEnterpriseBaseInfo(Uscc, form);
res.success(result);
}
/**
* 补录 新注册企业信息
* 2.0
* @param req
* @param res
*/
async function replenishCreate(req, res) {
let reqConf = {form: 'Object' };
let { form } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await enterpriseBiz.replenishMyEnterpriseCreateInfo(Uscc, form);
res.success(result);
}
/**
* 补录 新迁入企业信息
* 2.0
* @param req
* @param res
*/
async function replenishInPut(req, res) {
let reqConf = {form: 'Object' };
let { form } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await enterpriseBiz.replenishMyEnterpriseInPutInfo(Uscc, form);
res.success(result);
}
\ No newline at end of file
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
import * as asyncHandler from 'express-async-handler'; import * as asyncHandler from 'express-async-handler';
import * as baseBiz from '../../biz/mobileFuHuaQi/fuHuaQi/base'; import * as baseBiz from '../../biz/mobileFuHuaQi/fuHuaQi/base';
import * as taskBiz from '../../biz/mobileFuHuaQi/fuHuaQi/task'; import * as taskBiz from '../../biz/mobileFuHuaQi/fuHuaQi/task';
import * as scoreBiz from '../../biz/mobileFuHuaQi/fuHuaQi/score';
import { eccReqParamater } from '../../util/verificationParam'; import { eccReqParamater } from '../../util/verificationParam';
import { checkFuHuaQiToken } from '../../middleware/user'; import { checkFuHuaQiToken } from '../../middleware/user';
...@@ -109,7 +110,10 @@ async function updateOrganizationInfo(req, res) { ...@@ -109,7 +110,10 @@ async function updateOrganizationInfo(req, res) {
*/ */
async function taskList(req, res) { async function taskList(req, res) {
const Uscc = req.headers.uscc; const Uscc = req.headers.uscc;
let result = await taskBiz.fuHuaQiTaskList(Uscc); let taskListObj = await taskBiz.fuHuaQiTaskList(Uscc);
/**拼接分数 */
let scoreObj = await scoreBiz.MyScore(Uscc);
let result = Object.assign(scoreObj, taskListObj);
res.success(result); res.success(result);
} }
......
...@@ -13,6 +13,9 @@ export function setRouter(httpServer) { ...@@ -13,6 +13,9 @@ export function setRouter(httpServer) {
httpServer.post('/fuhuaqi/login/firstupdate', checkFuHuaQiToken, asyncHandler(firstUpdatePwd)); httpServer.post('/fuhuaqi/login/firstupdate', checkFuHuaQiToken, asyncHandler(firstUpdatePwd));
httpServer.post('/fuhuaqi/changepwd', checkFuHuaQiToken, asyncHandler(changePwd)); httpServer.post('/fuhuaqi/changepwd', checkFuHuaQiToken, asyncHandler(changePwd));
httpServer.post('/fuhuaqi/binduser', checkFuHuaQiToken, asyncHandler(bindUser)); httpServer.post('/fuhuaqi/binduser', checkFuHuaQiToken, asyncHandler(bindUser));
httpServer.post('/fuhuaqi/bindlist', checkFuHuaQiToken, asyncHandler(bindList));
httpServer.post('/fuhuaqi/changeuser', checkFuHuaQiToken, asyncHandler(changeUser));
} }
...@@ -75,6 +78,55 @@ async function changePwd(req, res) { ...@@ -75,6 +78,55 @@ async function changePwd(req, res) {
res.success(result); res.success(result);
} }
async function bindUser() {
} /**
\ No newline at end of file * 绑定账号
* @param req
* @param res
*/
async function bindUser(req, res) {
let reqConf = {bindUscc:'String', bindPwd:'String', deviceId:'String' };
let {bindUscc, bindPwd, deviceId} = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await userBiz.bindFuHuaQi(Uscc, bindUscc, bindPwd, deviceId);
res.success(result);
}
/**
* 已绑定的账号列表
* @param req
* @param res
*/
async function bindList(req, res) {
let reqConf = { deviceId:'String' };
let { deviceId} = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await userBiz.bindUserList(Uscc, deviceId);
res.success(result);
}
/**
* 切换账号账号
* @param req
* @param res
*/
async function changeUser(req, res) {
let reqConf = { targetUscc:'String' };
let { targetUscc} = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await userBiz.changeUser(Uscc, targetUscc);
res.success(result);
}
...@@ -17,9 +17,7 @@ const md5 = require("md5"); ...@@ -17,9 +17,7 @@ const md5 = require("md5");
* @returns * @returns
*/ */
export function getTaskId(uscc:string) { export function getTaskId(uscc:string) {
// return `${uscc}${getTimeKey()}`; return `${uscc}${getTimeKey()}`;
//todo 这里15号要改掉
return `${uscc}${20232}`;
} }
...@@ -103,4 +101,15 @@ export function eccUscc(uscc:string) { ...@@ -103,4 +101,15 @@ export function eccUscc(uscc:string) {
if (uscc.search(/^[A-Za-z0-9]{16}$/) > -1) isSuccess = true; if (uscc.search(/^[A-Za-z0-9]{16}$/) > -1) isSuccess = true;
else if (uscc.search(/^[A-Za-z0-9]{18}$/) > -1) isSuccess = true; else if (uscc.search(/^[A-Za-z0-9]{18}$/) > -1) isSuccess = true;
return isSuccess; return isSuccess;
} }
\ No newline at end of file
/**
* 获取绑定id
* @param uscc 孵化器统一信用代码
* @param bindUscc 被绑定的孵化器统一信用代码
* @returns
*/
export function getBindId(uscc:string, bindUscc:string) {
return md5(`${uscc}${bindUscc}${Math.ceil(Math.random() *100)}`);
}
\ 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