Commit 3f46088c by chenjinjing

部署V2版本

parent d2c64498
{
"1730970187744": {}
}
\ No newline at end of file
{}
\ No newline at end of file
{
"1727399696222": {
"isSubmit": false,
"S": [
{
"xsid": "C002",
"xsnr": "熟悉整套生产运输流程",
"isChoice": false
},
{
"xsid": "C003",
"xsnr": "有瓷器的实际设计成功经验",
"isChoice": false
}
],
"W": [],
"O": [],
"T": []
},
"1730970187744": {
"isSubmit": false,
"S": [],
"W": [],
"O": [
{
"xsid": "C003",
"xsnr": "有瓷器的实际设计成功经验",
"isChoice": false
},
{
"xsid": "C004",
"xsnr": "在多地有熟识的好友可以提供咨询协助",
"isChoice": false
}
],
"T": []
}
}
\ No newline at end of file
{}
\ No newline at end of file
{
{
{
"1730970187744": {
"普通线索": [
{
"xsid": "C001",
"xsnr": "马可波罗要定制1000只瓷器",
"isChoice": false,
"sfbx": "否"
}
],
"SWOT": [
{
"xsid": "C002",
"xsnr": "熟悉整套生产运输流程",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C003",
"xsnr": "有瓷器的实际设计成功经验",
"isChoice": true,
"sfbx": "否"
},
{
"xsid": "C004",
"xsnr": "在多地有熟识的好友可以提供咨询协助",
"isChoice": true,
"sfbx": "否"
},
{
"xsid": "C005",
"xsnr": "有景德镇瓷胚的进货渠道",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C006",
"xsnr": "资金匮乏",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C007",
"xsnr": "没有外贸经验",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C008",
"xsnr": "没有成熟团队",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C015",
"xsnr": "广州气候适宜",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C013",
"xsnr": "西洋有大量的瓷器进口需求",
"isChoice": false,
"sfbx": "否"
}
],
"竞合": [
{
"xsid": "C023",
"xsnr": "从马可波罗口中得知,西洋订单大增",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C024",
"xsnr": "西洋订单货品质量和交货时限有严格要求",
"isChoice": false,
"sfbx": "否"
}
],
"ROI": [
{
"xsid": "C046",
"xsnr": "定制精美瓷器售价",
"isChoice": false,
"sfbx": "制成瓷器"
},
{
"xsid": "C047",
"xsnr": "定制普通瓷器售价",
"isChoice": false,
"sfbx": "制成瓷器"
},
{
"xsid": "C048",
"xsnr": "通用精美瓷器售价",
"isChoice": false,
"sfbx": "制成瓷器"
},
{
"xsid": "C049",
"xsnr": "通用普通瓷器售价",
"isChoice": false,
"sfbx": "制成瓷器"
},
{
"xsid": "C027",
"xsnr": "工人甲",
"isChoice": false,
"sfbx": "工人"
},
{
"xsid": "C028",
"xsnr": "工人乙",
"isChoice": false,
"sfbx": "工人"
},
{
"xsid": "C029",
"xsnr": "工人丙",
"isChoice": false,
"sfbx": "工人"
},
{
"xsid": "C030",
"xsnr": "工人丁",
"isChoice": false,
"sfbx": "工人"
},
{
"xsid": "C031",
"xsnr": "工人戊",
"isChoice": false,
"sfbx": "工人"
},
{
"xsid": "C032",
"xsnr": "工人己",
"isChoice": false,
"sfbx": "工人"
},
{
"xsid": "C033",
"xsnr": "工人庚",
"isChoice": false,
"sfbx": "工人"
},
{
"xsid": "C034",
"xsnr": "工人辛",
"isChoice": false,
"sfbx": "工人"
},
{
"xsid": "C035",
"xsnr": "画师1",
"isChoice": false,
"sfbx": "画师"
},
{
"xsid": "C036",
"xsnr": "画师2",
"isChoice": false,
"sfbx": "画师"
},
{
"xsid": "C037",
"xsnr": "画师3",
"isChoice": false,
"sfbx": "画师"
},
{
"xsid": "C038",
"xsnr": "掌柜A",
"isChoice": false,
"sfbx": "掌柜"
},
{
"xsid": "C039",
"xsnr": "掌柜B",
"isChoice": false,
"sfbx": "掌柜"
}
]
},
"1727399696222": {
"普通线索": [],
"SWOT": [
{
"xsid": "C002",
"xsnr": "熟悉整套生产运输流程",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C003",
"xsnr": "有瓷器的实际设计成功经验",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C004",
"xsnr": "在多地有熟识的好友可以提供咨询协助",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C005",
"xsnr": "有景德镇瓷胚的进货渠道",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C006",
"xsnr": "资金匮乏",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C007",
"xsnr": "没有外贸经验",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C008",
"xsnr": "没有成熟团队",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C015",
"xsnr": "广州气候适宜",
"isChoice": false,
"sfbx": "否"
}
],
"竞合": [],
"ROI": []
}
"普通线索": [],
"SWOT": [
{
"xsid": "C002",
"xsnr": "熟悉整套生产运输流程",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C003",
"xsnr": "有瓷器的实际设计成功经验",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C004",
"xsnr": "在多地有熟识的好友可以提供咨询协助",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C005",
"xsnr": "有景德镇瓷胚的进货渠道",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C006",
"xsnr": "资金匮乏",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C007",
"xsnr": "没有外贸经验",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C008",
"xsnr": "没有成熟团队",
"isChoice": false,
"sfbx": "否"
},
{
"xsid": "C015",
"xsnr": "广州气候适宜",
"isChoice": false,
"sfbx": "否"
}
],
"竞合": [],
"ROI": []
}
\ No newline at end of file
{
{
{
"1727399696222": {
"初始资金": 500,
"天数": 215,
"结算": 500,
"广州府介绍": false,
"酒馆剧情": 2,
"当前线索确认": 1,
"商行选择": false,
"SWOT": true,
"ROI": false,
"竞合": false,
"码头": {
"S011": {
"当前对话id": "17",
"已获得的线索": [
"C023",
"C013",
"C046",
"C047",
"C048",
"C049",
"C001",
"C024"
]
}
},
"酒馆": {
"S023": {
"当前对话id": 1,
"已获得的线索": []
},
"S024": {
"当前对话id": 1
},
"S022": {
"当前对话id": "2"
},
"S021": {
"当前对话id": 1
}
}
},
"1729153582461": {
"初始资金": 500,
"天数": 112,
"结算": 500,
"广州府介绍": false,
"酒馆剧情": 0,
"当前线索确认": 0,
"商行选择": false,
"SWOT": false,
"ROI": false,
"竞合": false
},
"1730359559228": {
"初始资金": 500,
"天数": 0,
"结算": 500,
"广州府介绍": true,
"酒馆剧情": 0,
"当前线索确认": 0,
"商行选择": false,
"SWOT": false,
"ROI": false,
"竞合": false
},
"1730970187744": {
"初始资金": 500,
"天数": 3,
"结算": -112700,
"广州府介绍": false,
"酒馆剧情": 2,
"当前线索确认": 1,
"商行选择": true,
"SWOT": true,
"ROI": true,
"竞合": false,
"码头": {
"S011": {
"当前对话id": "17",
"已获得的线索": [
"C023",
"C013",
"C046",
"C047",
"C048",
"C049",
"C001",
"C024"
]
}
},
"酒馆": {
"S021": {
"当前对话id": 1,
"已获得的线索": []
}
}
},
"1730359573927": {
"初始资金": 500,
"天数": 0,
"结算": 500,
"广州府介绍": true,
"酒馆剧情": 0,
"当前线索确认": 0,
"商行选择": false,
"SWOT": false,
"ROI": false,
"竞合": false
},
"1730970810891": {
"初始资金": 500,
"天数": 0,
"结算": 500,
"广州府介绍": true,
"酒馆剧情": 0,
"当前线索确认": 0,
"商行选择": false,
"SWOT": false,
"ROI": false,
"竞合": false
},
"1732604118825": {
"初始资金": 500,
"天数": 0,
"结算": 500,
"广州府介绍": true,
"酒馆剧情": 0,
"当前线索确认": 0,
"商行选择": false,
"SWOT": false,
"ROI": false,
"竞合": false
}
"初始资金": 500,
"天数": 73,
"结算": 500,
"广州府介绍": false,
"酒馆剧情": 0,
"当前线索确认": 0,
"商行选择": false,
"SWOT": false,
"ROI": false,
"竞合": false
}
\ No newline at end of file
{
{
{
"1727399696222": {
"SWOT": 7.6923076923076925,
"ROI": 0,
"竞合": 0
},
"1729153582461": {
"SWOT": 0,
"ROI": 0,
"竞合": 0
},
"1730359559228": {
"SWOT": 0,
"ROI": 0,
"竞合": 0
},
"1730970187744": {
"SWOT": 0
},
"1730359573927": {
"SWOT": 0,
"ROI": 0,
"竞合": 0
},
"1730970810891": {
"SWOT": 0,
"ROI": 0,
"竞合": 0
},
"1732604118825": {
"SWOT": 0,
"ROI": 0,
"竞合": 0
}
"SWOT": 0,
"ROI": 0,
"竞合": 0
}
\ No newline at end of file
{
{}
{
"1730970187744": {}
}
\ No newline at end of file
{}
\ No newline at end of file
{
{}
{
"SWOT": {
"S": [
"C002",
"C003",
"C004",
"C005"
],
"W": [
"C006",
"C007",
"C008"
],
"O": [
"C012",
"C013",
"C014"
],
"T": [
"C009",
"C010",
"C011"
]
},
"ROI": {
"R": [
"C046",
"C047",
"C048",
"C049"
],
"I": [
"C027",
"C028",
"C029",
"C030",
"C031",
"C032",
"C033",
"C034",
"C035",
"C036",
"C037",
"C038",
"C039",
"C040",
"C041",
"C042",
"C043",
"C044",
"C045"
]
},
"竞合": {
"供方": [
"C017",
"C018"
],
"现有竞争": [
"C019"
],
"潜在竞争": [
"C020"
],
"替代竞争": [
"C021",
"C022"
],
"买方": [
"C023",
"C024"
]
}
}
\ No newline at end of file
{}
\ No newline at end of file
{
{}
{
"1730970187744": {
"人工": {
"工人": "C025",
"画师": "C032",
"掌柜": "C035"
},
"原材料": {
"瓷器": "C041",
"颜料": "C039"
},
"运输": "C037",
"制成瓷器": "C045"
}
}
\ No newline at end of file
{}
\ No newline at end of file
{
{
{
"瓷器": {
"定制精美瓷器": {
"瓷器": "C040",
"颜料": "C038",
"瓷器": "C044",
"颜料": "C042",
"单价": 300,
"固定成本": 200
},
"定制普通瓷器": {
"瓷器": "C040",
"颜料": "C039",
"瓷器": "C044",
"颜料": "C043",
"单价": 270,
"固定成本": 190
},
"通用精美瓷器": {
"瓷器": "C041",
"颜料": "C038",
"瓷器": "C045",
"颜料": "C042",
"单价": 170,
"固定成本": 120
},
"通用普通瓷器": {
"瓷器": "C041",
"颜料": "C039",
"瓷器": "C045",
"颜料": "C043",
"单价": 150,
"固定成本": 110
}
},
"人员成本": {
"C023": {
"C027": {
"ycl": 360,
"gz": 150,
"fjcb": 0.42
},
"C024": {
"C028": {
"ycl": 450,
"gz": 150,
"fjcb": 0.33
},
"C025": {
"C029": {
"ycl": 510,
"gz": 150,
"fjcb": 0.29
},
"C026": {
"C030": {
"ycl": 840,
"gz": 300,
"fjcb": 0.36
},
"C027": {
"C031": {
"ycl": 960,
"gz": 300,
"fjcb": 0.31
},
"C028": {
"C032": {
"ycl": 1050,
"gz": 300,
"fjcb": 0.29
},
"C029": {
"C033": {
"ycl": 1350,
"gz": 450,
"fjcb": 0.33
},
"C030": {
"C034": {
"ycl": 1650,
"gz": 450,
"fjcb": 0.27
},
"C031": {
"C035": {
"ycl": 500,
"gz": 1000,
"fjcb": 2
},
"C032": {
"C036": {
"ycl": 1320,
"gz": 2000,
"fjcb": 1.52
},
"C033": {
"C037": {
"ycl": 1900,
"gz": 3000,
"fjcb": 1.58
},
"C034": {
"C038": {
"ycl": 1000,
"gz": 1000,
"fjcb": 1
},
"C035": {
"C039": {
"ycl": 1100,
"gz": 1050,
"fjcb": 0.95
}
},
"运输成本": {
"C036": {
"C040": {
"sjmc": "车路",
"xjb": 1.33
},
"C037": {
"C041": {
"sjmc": "水路",
"xjb": 1
}
......
[
[
......@@ -19,8 +19,7 @@
{
"userId": "1730970187744",
"loginId": "111",
"pwd": "123456",
"name": "小陈"
"pwd": "123456"
},
{
"userId": "1730359573927",
......
No preview for this file type
No preview for this file type
......@@ -9,7 +9,7 @@
import { NOWCLUE } from "../config/enum";
import { successResult } from "../tools/systemTools";
import { changeJsonData, getJsonData } from "../util/tools";
import { changeUserJsonData, getUserJsonData } from "../util/tools";
/**
......@@ -17,14 +17,14 @@ import { changeJsonData, getJsonData } from "../util/tools";
* @param subdivide 细分线索类型【供方、现有竞争、潜在竞争、替代竞争、买方】
* @param xs [{xsid:"", xsnr:""}, ...]
*/
export function submitJinheClue(userId, subdivide, xs) {
let jsonData = getJsonData("json/竞合.json");
export async function submitJinheClue(userId, subdivide, xs) {
let jsonData = await getUserJsonData("竞合.json", userId);
/**处理确认选择的线索 */
let jinheClueData = jsonData;
//没有对应用户数据先添加一个基础格式,有的话直接push
if (!jinheClueData[userId] || Object.keys(jinheClueData[userId]).length === 0) {
jinheClueData[userId] = {
if (!jinheClueData || Object.keys(jinheClueData).length === 0) {
jinheClueData = {
"isSubmit": false,
"供方": [],
"现有竞争": [],
......@@ -36,35 +36,35 @@ export function submitJinheClue(userId, subdivide, xs) {
//isSubmit:false【未提交】、true【提交】
/**当前线索类型未提交时,可以修改添加线索 */
if (!jinheClueData[userId]["isSubmit"]) {
if (!jinheClueData["isSubmit"]) {
for (let i = 0; i < xs.length; i++) {
// let xsInfo = xs[i];
jinheClueData[userId][subdivide].push(xs[i]);
jinheClueData[subdivide].push(xs[i]);
}
changeJsonData("json/竞合.json", jinheClueData);
await changeUserJsonData("竞合.json", userId, jinheClueData);
console.log("添加ROI线索成功");
} else {
console.log("线索已提交,无法重复提交");
}
/**修改全部线索.json的对应线索为已选择 isChoice:true */
let allClueJson = getJsonData("json/全部线索.json");
let allClueJson = await getUserJsonData("全部线索.json", userId);
let allClueData = allClueJson;
xs.forEach( info => {
let {xsid, xsnr} = info;
for(let key in allClueData[userId]) {
allClueData[userId][key].forEach( thisClue => {
for(let key in allClueData) {
allClueData[key].forEach( thisClue => {
if(xsid == thisClue.xsid) thisClue.isChoice = true;
})
}
});
changeJsonData("json/全部线索.json", allClueData);
await changeUserJsonData("全部线索.json", userId, allClueData);
let baseJsonData = getJsonData("json/基础数据.json");
baseJsonData[userId]["当前线索确认"] = NOWCLUE.竞合;
changeJsonData("json/基础数据.json", baseJsonData);
let baseJsonData = await getUserJsonData("基础数据.json", userId);
baseJsonData["当前线索确认"] = NOWCLUE.竞合;
await changeUserJsonData("基础数据.json", userId, baseJsonData);
return successResult();
}
......@@ -75,10 +75,10 @@ export function submitJinheClue(userId, subdivide, xs) {
* 计算选择正确的竞合线索
* @param userId
*/
export function checkJinhe(userId) {
export async function checkJinhe(userId) {
/**获取细分线索 */
let xfclueJson = getJsonData("json/细分线索.json");
let clueJson = getJsonData("json/竞合.json")[userId];
let xfclueJson = await getUserJsonData("细分线索.json", userId);
let clueJson = await getUserJsonData("竞合.json", userId);
let sumClue = 0; //线索总数
let rightClue = 0; //选对线索数
......@@ -103,10 +103,10 @@ export function checkJinhe(userId) {
/**计算分数 */
// score = rightClue/sumClue*(1/5)*20;
score = (rightClue/sumClue)*20;
let submitJsonData = getJsonData("json/提交分数.json");
let submitJsonData = await getUserJsonData("提交分数.json", userId);
let submitScore = submitJsonData;
submitScore[userId]["竞合"] = score;
changeJsonData("json/提交分数.json", submitScore);
submitScore["竞合"] = score;
await changeUserJsonData("提交分数.json", userId, submitScore);
return successResult();
}
......
......@@ -10,7 +10,7 @@
import { NOWCLUE } from "../config/enum";
import { guyongTableData } from "../data/table/tableData";
import { successResult } from "../tools/systemTools";
import { changeJsonData, getJsonData } from "../util/tools";
import { changeUserJsonData, getJsonData, getUserJsonData } from "../util/tools";
/**
......@@ -18,15 +18,15 @@ import { changeJsonData, getJsonData } from "../util/tools";
* @param subdivide 细分线索类型【R、O、I】
* @param xs [{xsid:"", xsnr:""}, ...]
*/
export function submitROIClue(userId, subdivide, xs) {
let jsonData = getJsonData("json/ROI.json");
let baseClueJson = getJsonData("json/基础数据.json");
export async function submitROIClue(userId, subdivide, xs) {
let jsonData = await getUserJsonData("ROI.json", userId);
let baseClueJson = await getUserJsonData("基础数据.json", userId);
/**处理确认选择的线索 */
let ROIClueData = jsonData;
//没有对应用户数据先添加一个基础格式,有的话直接push
if (!ROIClueData[userId] || Object.keys(ROIClueData[userId]).length === 0) {
ROIClueData[userId] = {
if (!ROIClueData || Object.keys(ROIClueData).length === 0) {
ROIClueData = {
"isSubmit": false,
"R": [],
"I": []
......@@ -35,25 +35,25 @@ import { changeJsonData, getJsonData } from "../util/tools";
//isSubmit:false【未提交】、true【提交】
/**当前线索类型未提交时,可以修改添加线索 */
if (!ROIClueData[userId]["isSubmit"]) {
if (!ROIClueData["isSubmit"]) {
for (let i = 0; i < xs.length; i++) {
// let xsInfo = xs[i];
ROIClueData[userId][subdivide].push(xs[i]);
ROIClueData[subdivide].push(xs[i]);
}
changeJsonData("json/ROI.json", ROIClueData);
await changeUserJsonData("ROI.json", userId, ROIClueData);
console.log("添加ROI线索成功");
} else {
console.log("线索已提交,无法重复提交");
}
/**修改全部线索.json的对应线索为已选择 isChoice:true */
let allClueJson = getJsonData("json/全部线索.json");
let allClueJson = await getUserJsonData("全部线索.json", userId);
let allClueData = allClueJson;
xs.forEach( info => {
let {xsid, xsnr} = info;
for(let key in allClueData[userId]) {
allClueData[userId][key].forEach( thisClue => {
for(let key in allClueData) {
allClueData[key].forEach( thisClue => {
if(xsid == thisClue.xsid) thisClue.isChoice = true;
})
}
......@@ -69,19 +69,19 @@ import { changeJsonData, getJsonData } from "../util/tools";
if (info.xsid == xsid) ciqiMoney = info.sj;
});
//加上定制瓷器金额
baseClueJson[userId]["结算"] = baseClueJson[userId]["结算"] + ciqiMoney * 1000;
baseClueJson["结算"] = baseClueJson["结算"] + ciqiMoney * 1000;
}
});
changeJsonData("json/全部线索.json", allClueData);
await changeUserJsonData("全部线索.json", userId, allClueData);
/**ROI线索选择完成可添加竞合线索 */
baseClueJson[userId]["竞合"] = true;
baseClueJson[userId]["当前线索确认"] = NOWCLUE.ROI;
baseClueJson["竞合"] = true;
baseClueJson["当前线索确认"] = NOWCLUE.ROI;
//更新json数据
changeJsonData("json/基础数据.json", baseClueJson);
await changeUserJsonData("基础数据.json", userId, baseClueJson);
return successResult();
}
......@@ -91,10 +91,10 @@ import { changeJsonData, getJsonData } from "../util/tools";
* 计算选择正确的ROI线索
* @param userId
*/
export function checkROI(userId) {
let gygrJson = getJsonData("json/雇佣选择.json"); //获取雇佣工人表
let 雇佣选择 = gygrJson[userId];
let cqzzJson = getJsonData("json/瓷器制造.json");
export async function checkROI(userId) {
let gygrJson = await getUserJsonData("雇佣选择.json", userId); //获取雇佣工人表
let 雇佣选择 = gygrJson;
let cqzzJson = await getJsonData("瓷器制造.json");
/**
* 计算工人、画师、掌柜一起的人员成本
......@@ -126,8 +126,9 @@ export function checkROI(userId) {
/**
* 计算运输成本
*/
let 运输成本 = cqzzJson["运输成本"];
let yscb = 运输成本[雇佣选择["运输"]].xjb;
let 运输成本 = cqzzJson["运输成本"];
let yscb = 0;
if (运输成本[雇佣选择["运输"]].xjb) yscb = 运输成本[雇佣选择["运输"]].xjb;
let 净利润 = (瓷器利润-rycb-yscb)/瓷器单价;
......@@ -138,10 +139,10 @@ export function checkROI(userId) {
if (净利润>20 && 净利润<25) score = 10;
if (净利润<20) score = 0;
let submitJsonData = getJsonData("json/提交分数.json");
let submitJsonData = await getUserJsonData("提交分数.json", userId);
let submitScore = submitJsonData;
submitScore[userId]["ROI"] = score;
changeJsonData("json/提交分数.json", submitScore);
submitScore["ROI"] = score;
await changeUserJsonData("提交分数.json", userId, submitScore);
return successResult();
}
......
......@@ -9,7 +9,7 @@
import { HARITYPE, NOWCLUE } from "../config/enum";
import { successResult } from "../tools/systemTools";
import { changeJsonData, getJsonData } from "../util/tools";
import { changeUserJsonData, getUserJsonData } from "../util/tools";
/**
......@@ -17,14 +17,14 @@ import { changeJsonData, getJsonData } from "../util/tools";
* @param subdivide 细分线索类型【S、W、O、T】
* @param xs [{xsid:"", xsnr:""}, ...]
*/
export function submitSWOTClue(userId, subdivide, xs) {
let jsonData = getJsonData("json/SWOT.json");
export async function submitSWOTClue(userId, subdivide, xs) {
let jsonData = await getUserJsonData("SWOT.json", userId);
/**处理确认选择的线索 */
let SWOTClueData = jsonData;
//没有对应用户数据先添加一个基础格式,有的话直接push
if (!SWOTClueData[userId] || Object.keys(SWOTClueData[userId]).length === 0) {
SWOTClueData[userId] = {
if (!SWOTClueData || Object.keys(SWOTClueData).length === 0) {
SWOTClueData = {
"isSubmit": false,
"S": [],
"W": [],
......@@ -35,36 +35,36 @@ import { changeJsonData, getJsonData } from "../util/tools";
//isSubmit:false【未提交】、true【提交】
/**当前线索类型未提交时,可以修改添加线索 */
if (!SWOTClueData[userId]["isSubmit"]) {
if (!SWOTClueData["isSubmit"]) {
for (let i = 0; i < xs.length; i++) {
// let xsInfo = xs[i];
SWOTClueData[userId][subdivide].push(xs[i]);
SWOTClueData[subdivide].push(xs[i]);
}
changeJsonData("json/SWOT.json", SWOTClueData);
await changeUserJsonData("SWOT.json", userId, SWOTClueData);
console.log("添加SWOT线索成功");
} else {
console.log("线索已提交,无法重复提交");
}
/**修改全部线索.json的对应线索为已选择 isChoice:true */
let allClueJson = getJsonData("json/全部线索.json");
let allClueJson = await getUserJsonData("全部线索.json", userId);
let allClueData = allClueJson;
xs.forEach( info => {
let {xsid, xsnr} = info;
for(let key in allClueData[userId]) {
allClueData[userId][key].forEach( thisClue => {
for(let key in allClueData) {
allClueData[key].forEach( thisClue => {
if(xsid == thisClue.xsid) thisClue.isChoice = true;
})
}
});
changeJsonData("json/全部线索.json", allClueData);
await changeUserJsonData("全部线索.json", userId, allClueData);
let baseJsonData = getJsonData("json/基础数据.json");
baseJsonData[userId]["当前线索确认"] = NOWCLUE.SWOT;
if (baseJsonData[userId]["酒馆剧情"] < HARITYPE.已开始) baseJsonData[userId]["酒馆剧情"] = HARITYPE.已开始;
changeJsonData("json/基础数据.json", baseJsonData);
let baseJsonData = await getUserJsonData("基础数据.json", userId);
baseJsonData["当前线索确认"] = NOWCLUE.SWOT;
if (baseJsonData["酒馆剧情"] < HARITYPE.已开始) baseJsonData["酒馆剧情"] = HARITYPE.已开始;
await changeUserJsonData("基础数据.json", userId, baseJsonData);
return successResult();
}
......@@ -74,10 +74,10 @@ import { changeJsonData, getJsonData } from "../util/tools";
* 计算选择正确的SWOT线索
* @param userId
*/
export function checkSWOT(userId) {
export async function checkSWOT(userId) {
/**获取细分线索 */
let xfclueJson = getJsonData("json/细分线索.json");
let clueJson = getJsonData("json/SWOT.json")[userId];
let xfclueJson = await getUserJsonData("细分线索.json", userId);
let clueJson = await getUserJsonData("SWOT.json", userId);
let sumClue = 0; //线索总数
let rightClue = 0; //选对线索数
......@@ -100,10 +100,10 @@ export function checkSWOT(userId) {
let score = 0;
// score = rightClue/sumClue*(1/4)*50;
score = (rightClue/sumClue)*50;
let submitJsonData = getJsonData("json/提交分数.json");
let submitJsonData = await getUserJsonData("提交分数.json", userId);
let submitScore = submitJsonData;
submitScore[userId]["SWOT"] = score;
changeJsonData("json/提交分数.json", submitScore);
submitScore["SWOT"] = score;
await changeUserJsonData("提交分数.json", userId, submitScore);
return successResult();
}
......
......@@ -4,7 +4,7 @@
import { HARITYPE, NOWCLUE } from "../config/enum";
import { guyongTableData, xiansuoTableData } from "../data/table/tableData";
import { changeJsonData, getJsonData } from "../util/tools";
import { addJson, changeJsonData, changeUserJsonData, getJsonData, getUserJsonData } from "../util/tools";
/**
......@@ -12,36 +12,30 @@ import { changeJsonData, getJsonData } from "../util/tools";
* 基础数据没有的话也写入
* todo线索改为剧情走过才添加
*/
export function initAllClue(userId) {
let excelData = xiansuoTableData();
let clueExcelData = excelData["线索表"].dataList;
export async function initAllClue(userId) {
let baseJsonData = await getUserJsonData("基础数据.json", userId);
let submitJsonData = await getUserJsonData("提交分数.json", userId);
let userJsonData = getJsonData("json/用户.json");
let allClueJsonData = getJsonData("json/全部线索.json");
let baseJsonData = getJsonData("json/基础数据.json");
let submitJsonData = getJsonData("json/提交分数.json");
let writeClueAll = allClueJsonData;
let writeBaseAll = baseJsonData;
let submitClue = submitJsonData;
/**如果登录的账号没有全部线索数据,则写入json
* 弃用,改为走过相关剧情添加对应线索
*/
// if (!allClueJsonData[userId] || Object.keys(allClueJsonData[userId]).length === 0) {
// writeClueAll[userId] = {};
// if (!allClueJsonData || Object.keys(allClueJsonData).length === 0) {
// writeClueAll = {};
// clueExcelData.forEach( info => {
// let {xsid, xsnr, xslx, xslxxf, sfbx} = info;
// if (!writeClueAll[userId][xslx]) writeClueAll[userId][xslx] = [];
// writeClueAll[userId][xslx].push({xsid, xsnr, isChoice:false, sfbx});
// if (!writeClueAll[xslx]) writeClueAll[xslx] = [];
// writeClueAll[xslx].push({xsid, xsnr, isChoice:false, sfbx});
// })
// //写入json
// changeJsonData("json/全部线索.json", writeClueAll);
// await changeUserJsonData("全部线索.json", userId, writeClueAll);
// }
/**如果登录的账号没有基础数据,则写入json */
if (!baseJsonData[userId] || Object.keys(baseJsonData[userId]).length === 0) {
writeBaseAll[userId] = {
if (!baseJsonData || Object.keys(baseJsonData).length === 0) {
writeBaseAll = {
"初始资金": 500,
"天数":0,
"结算":500,
......@@ -55,17 +49,17 @@ export function initAllClue(userId) {
"竞合": false
}
//写入json
changeJsonData("json/基础数据.json", writeBaseAll);
await changeUserJsonData("基础数据.json", userId, writeBaseAll);
}
/**如果登录的账号没有初始化分数数据,则写入json */
if (!submitJsonData[userId] || Object.keys(submitJsonData[userId]).length === 0) {
submitClue[userId] = {
if (!submitJsonData || Object.keys(submitJsonData).length === 0) {
submitClue = {
SWOT:0,
ROI:0,
竞合:0
};
//写入json
changeJsonData("json/提交分数.json", submitClue);
await changeUserJsonData("提交分数.json", userId, submitClue);
}
}
......@@ -73,7 +67,7 @@ export function initAllClue(userId) {
/**
* 初始化制作瓷器成本数据
*/
export function initCiqi() {
export async function initCiqi() {
let excelData = guyongTableData();
let 雇佣Data = excelData['雇佣表'].dataList;
let 运输Data = excelData['运输'].dataList;
......@@ -133,7 +127,7 @@ export function initCiqi() {
let 成本 = {瓷器, 人员成本, 运输成本}
changeJsonData("json/瓷器制造.json", 成本);
await changeJsonData("瓷器制造.json", 成本);
}
......@@ -142,16 +136,16 @@ export function initCiqi() {
* 登录开始计算 30分钟加一天
* @param userId
*/
export function gameLoop(userId) {
let baseJsonData = getJsonData("json/基础数据.json");
// let baseData = baseJsonData[userId];
baseJsonData[userId]["天数"]++;
export async function gameLoop(userId) {
let baseJsonData = await getUserJsonData("基础数据.json", userId);
// let baseData = baseJsonData;
if (baseJsonData) baseJsonData["天数"]++;
//60000毫秒 = 1分钟,设定30分钟游戏内天数+1
setTimeout(gameLoop, 60000*30, userId);
setTimeout(await gameLoop, 60000*30, userId);
changeJsonData("json/基础数据.json", baseJsonData);
await changeUserJsonData("基础数据.json", userId, baseJsonData);
}
......
......@@ -7,7 +7,7 @@ import { ERRORENUM } from "../config/errorEnum";
import { xiansuoTableData } from "../data/table/tableData";
import { successErrorResult, successResult } from "../tools/systemTools";
import { BizError } from "../util/bizError";
import { changeJsonData, getJsonData } from "../util/tools";
import { changeUserJsonData, getUserJsonData, getJsonData, changeJsonData, addJson } from "../util/tools";
import { gameLoop, initAllClue } from "./task";
let fs = require('fs');
let path = require('path');
......@@ -17,26 +17,26 @@ let path = require('path');
* @param loginId 账号
* @param pwd 密码
*/
export function login(loginId, pwd) {
let userData = getJsonData("json/用户.json");
export async function login(loginId, pwd) {
let userData = await getJsonData("用户.json");
let dataInfo = {};
/**判断是否有对应账号 */
let hasUser = userData.some(item => item.loginId === loginId);
if (!hasUser) throw new BizError(ERRORENUM.账号不存在);
let firstLogin = false;
userData.forEach( info => {
initAllClue(info.userId);
for (let i = 0; i < userData.length; i++) {
let info = userData[i];
if (info.loginId == loginId) {
await addJson(info.userId);
if (info.pwd != pwd) throw new BizError(ERRORENUM.账号或密码错误);
await initAllClue(info.userId);
if (!info.name) firstLogin = true;
dataInfo = {userId:info.userId, loginId:info.loginId, firstLogin};
gameLoop(info.userId);
await gameLoop(info.userId);
}
// dataInfo["firstlogin"] = initAllClue(info.userId);
})
}
return dataInfo;
}
......@@ -47,8 +47,8 @@ export function login(loginId, pwd) {
* @param loginId 账号
* @param pwd 密码
*/
export function register(loginId, pwd) {
let userData = getJsonData("json/用户.json");
export async function register(loginId, pwd) {
let userData = await getJsonData("用户.json");
const NowMs = new Date().valueOf();
......@@ -60,15 +60,9 @@ export function register(loginId, pwd) {
}
);
changeJsonData("json/用户.json", userData);
await changeUserJsonData("用户.json", userData, NowMs);
let dirPath = path.join(__dirname.substring(0,__dirname.indexOf("out")), `json/${NowMs}`);
try {
fs.mkdirSync(dirPath, { recursive: true });
console.log(`文件夹${dirPath}已成功创建`);
} catch (err) {
console.error(`文件夹${dirPath}创建失败${err.message}`);
}
addJson(NowMs);
return successResult();
}
......@@ -78,14 +72,14 @@ export function register(loginId, pwd) {
* 基础数据【当前天数、银两数】
* @returns
*/
export function getBaseData(userId) {
let baseData = getJsonData("json/基础数据.json");
export async function getBaseData(userId) {
let baseData = await getUserJsonData("基础数据.json", userId);
let basicsData = {
day:0,
tael:500
}
basicsData.day = baseData[userId]["天数"] || 0;
// basicsData.tael = baseData[userId]["结算"] || 0; //todo第一幕不计算金额,直接使用500金
basicsData.day = baseData["天数"] || 0;
// basicsData.tael = baseData["结算"] || 0; //todo第一幕不计算金额,直接使用500金
return basicsData;
}
......@@ -96,12 +90,12 @@ export function register(loginId, pwd) {
* @param clueType
* @returns
*/
export function getCount(userId) {
export async function getCount(userId) {
let excelData = xiansuoTableData();
let clueExcelData = excelData["线索表"].dataList;
let jsonData = getJsonData("json/全部线索.json");
let clueData = jsonData[userId];
let jsonData = await getUserJsonData("全部线索.json", userId);
let clueData = jsonData;
let personalData = {
clue:"",
......@@ -118,19 +112,19 @@ export function getCount(userId) {
// if (info.isChoice) clue++
// })
}
personalData.clue = `${allClue}/${clue}`; //总线索数(线索配置表里的所有线索)/当前解锁的线索数
personalData.clue = `${clue}/${allClue}`; //总线索数(线索配置表里的所有线索)/当前解锁的线索数
// 银两数 todo 第一幕不计算银两数,默认展示500金
// let baseData = getJsonData("json/基础数据.json");
// personalData.tael = baseData[userId]["结算"];
// let baseData = await getUserJsonData("基础数据.json", userId);
// personalData.tael = baseData["结算"];
// 雇佣人数
let hireData = getJsonData("json/雇佣选择.json");
if (hireData[userId]) {
if (Object.keys(hireData[userId]).length != 0) {
if (!hireData[userId]["人工"]) hireData[userId]["人工"] = {}
if (Object.keys(hireData[userId]["人工"]).length != 0) {
personalData.hire = Object.keys(hireData[userId]["人工"]).length;
let hireData = await getUserJsonData("雇佣选择.json", userId);
if (hireData) {
if (Object.keys(hireData).length != 0) {
if (!hireData["人工"]) hireData["人工"] = {}
if (Object.keys(hireData["人工"]).length != 0) {
personalData.hire = Object.keys(hireData["人工"]).length;
}
}
}
......@@ -179,8 +173,8 @@ const nicknameRegex = /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/;
* 修改昵称
* @param userId
*/
export function updateName(userId, name) {
let userData = getJsonData("json/用户.json");
export async function updateName(userId, name) {
let userData = await getJsonData("用户.json");
let isOk = true;
let result;
userData.forEach( info => {
......@@ -201,7 +195,7 @@ const nicknameRegex = /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/;
})
if(isOk) {
changeJsonData("json/用户.json", userData);
changeJsonData("用户.json", userData);
result = successResult();
}
......
......@@ -9,7 +9,7 @@ async function lanuch() {
await initConfig();
httpServer.createServer( systemConfig.port );
console.log('This indicates that the server is started successfully.');
initCiqi();
await initCiqi();
// let key = crypto.randomBytes(32).toString('hex'); //"4fa9998e3be1bd3fa7b8def3969115858c6f19f9ef36e2e71f61645e9767764c"
// let iv = crypto.randomBytes(16).toString('hex'); //"db2be0c856f44e68b818ff6ef7f018c1"
// await initConfiguration();
......
......@@ -41,14 +41,30 @@ export function getRandomInt(min, max) {
* @param jsonName json文件名称
* @returns
*/
export function getJsonData(jsonName) {
let filename = path.join(__dirname.substring(0,__dirname.indexOf("out")), jsonName);
export async function getJsonData(jsonName) {
let filename = path.join(__dirname.substring(0,__dirname.indexOf(`out`)), `json/${jsonName}`);
let jsonObject = fs.readFileSync(filename, 'utf-8');
let baseData;
if (jsonObject) baseData = JSON.parse(jsonObject);
console.log(baseData);
return baseData;
}
/**
* 获取对应登录用户的数据json
* @param jsonName json文件名称
* @returns
*/
export async function getUserJsonData(jsonName, userId) {
let filename = path.join(__dirname.substring(0,__dirname.indexOf(`out`)), `json/${userId}/${jsonName}`);
let baseData = JSON.parse(jsonObject);
let jsonObject = fs.readFileSync(filename, 'utf-8');
let baseData;
if (jsonObject) baseData = JSON.parse(jsonObject);
console.log(baseData);
return baseData;
}
......@@ -57,12 +73,77 @@ export function getJsonData(jsonName) {
* 更新json数据
* @param jsonName json文件名称
*/
export function changeJsonData(jsonName, data) {
export async function changeJsonData(jsonName, data) {
let jsonData = JSON.stringify(data, null, 2);
let filename = path.join(__dirname.substring(0,__dirname.indexOf(`out`)), `json/${jsonName}`);
fs.writeFileSync(filename, jsonData);
console.log('文件写入成功');
// fs.writeFile(filename, jsonData, (err) => {
// if (err) {
// console.log(`写入${jsonName}文件失败`);
// }
// console.log('文件写入成功');
// });
}
/**
* 更新对应用户json数据
* @param jsonName json文件名称
*/
export async function changeUserJsonData(jsonName, userId, data) {
let jsonData = JSON.stringify(data, null, 2);
let filename = path.join(__dirname.substring(0,__dirname.indexOf("out")), jsonName);
let filename = path.join(__dirname.substring(0,__dirname.indexOf(`out`)), `json/${userId}/${jsonName}`);
fs.writeFileSync(filename, jsonData);
console.log('文件写入成功');
// fs.writeFile(filename, jsonData, (err) => {
// if (err) {
// console.log(`写入${jsonName}文件失败`);
// }
// console.log('文件写入成功');
// });
}
/**
* 添加对应user的文件夹
* @param userId
*/
export function addJson(userId) {
/**判断没有当前登录用户的文件夹则新建一个 */
let dirPath = path.join(__dirname.substring(0,__dirname.indexOf("out")), `json/${userId}`);
if (!fs.existsSync(dirPath)) {
try {
fs.mkdirSync(dirPath, { recursive: true });
console.log(`文件夹${dirPath}已成功创建`);
// 指定你要创建的 JSON 文件的路径和名称
let jsonName = ["雇佣选择.json", "基础数据.json", "竞合.json", "全部线索.json", "提交分数.json", "细分线索.json", "ROI.json", "SWOT.json"];
for(let i = 0; i < jsonName.length; i++) {
let jsonFilePath = path.join(dirPath, `${jsonName[i]}`);
// 转换为 JSON 字符串
let jsonData = '';
let jsonString = JSON.stringify(jsonData, null, 2)
// 文件夹创建成功后,写入 JSON 文件
fs.writeFileSync(jsonFilePath, jsonString);
console.log('文件写入成功');
}
} catch (err) {
console.error(`文件夹${dirPath}创建失败${err.message}`);
}
} else {
console.log(`文件夹${dirPath}已存在`);
}
}
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