Commit dc8b3b4b by lixinming
parents f1b10b35 7c6a3576
...@@ -38,7 +38,9 @@ ...@@ -38,7 +38,9 @@
"bin": { "bin": {
"screen": "out/main.js" "screen": "out/main.js"
}, },
"devDependencies": {} "devDependencies": {
"province-city-china": "^8.5.7"
}
}, },
"node_modules/@alicloud/dybaseapi": { "node_modules/@alicloud/dybaseapi": {
"version": "1.0.0", "version": "1.0.0",
...@@ -141,6 +143,12 @@ ...@@ -141,6 +143,12 @@
"resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-1.0.3.tgz", "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-1.0.3.tgz",
"integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw=="
}, },
"node_modules/@province-city-china/types": {
"version": "8.5.7",
"resolved": "https://registry.npmmirror.com/@province-city-china/types/-/types-8.5.7.tgz",
"integrity": "sha512-RZ1TX52jLevxx+00yLMzunHR2H6XIc7FY8C7qF0YUzXhYrRS4krqWSDY8kpq/76nonbp01ibif35wvmP3R+s4Q==",
"dev": true
},
"node_modules/@types/bson": { "node_modules/@types/bson": {
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npm.taobao.org/@types/bson/download/@types/bson-4.0.3.tgz?cache=0&sync_timestamp=1613378303280&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbson%2Fdownload%2F%40types%2Fbson-4.0.3.tgz", "resolved": "https://registry.npm.taobao.org/@types/bson/download/@types/bson-4.0.3.tgz?cache=0&sync_timestamp=1613378303280&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbson%2Fdownload%2F%40types%2Fbson-4.0.3.tgz",
...@@ -2003,6 +2011,15 @@ ...@@ -2003,6 +2011,15 @@
"resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz", "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz",
"integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=" "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I="
}, },
"node_modules/province-city-china": {
"version": "8.5.7",
"resolved": "https://registry.npmmirror.com/province-city-china/-/province-city-china-8.5.7.tgz",
"integrity": "sha512-6snhGKmXBgNDJluFYVNgudIA+FWJjha+6/Lci/ZWBDDp3uPs5zFlErrfeTRfN182owSNDp9oF4/f6/qPoL9+Xw==",
"dev": true,
"dependencies": {
"@province-city-china/types": "8.5.7"
}
},
"node_modules/proxy-addr": { "node_modules/proxy-addr": {
"version": "2.0.7", "version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
......
...@@ -45,5 +45,8 @@ ...@@ -45,5 +45,8 @@
"video/**/*" "video/**/*"
], ],
"outputPath": "dist" "outputPath": "dist"
},
"devDependencies": {
"province-city-china": "^8.5.7"
} }
} }
...@@ -7,9 +7,9 @@ import { INDIVIDUALMEMBERTYPE, MEMBERLEVEL, MEMBERTYPE, OPERATIONREHAVIOR, PAYME ...@@ -7,9 +7,9 @@ import { INDIVIDUALMEMBERTYPE, MEMBERLEVEL, MEMBERTYPE, OPERATIONREHAVIOR, PAYME
import { ERRORENUM } from "../../config/errorEnum"; import { ERRORENUM } from "../../config/errorEnum";
import { addManyData } from "../../data/add"; import { addManyData } from "../../data/add";
import { TABLEENUM } from "../../data/models/model"; import { TABLEENUM } from "../../data/models/model";
import { find, findCount, findOnce, findToPage } from "../../data/select"; import { find, findCount, findOnce, findOnceToSort, findToPage } from "../../data/select";
import { updateOneData } from "../../data/update"; import { updateOneData } from "../../data/update";
import { generateSystemId, successResult } from "../../tools/system"; import { generateSystemId, getAreaCode, getMenberNum, successResult } from "../../tools/system";
import { BizError } from "../../util/bizError"; import { BizError } from "../../util/bizError";
import { extractData } from "../../util/piecemeal"; import { extractData } from "../../util/piecemeal";
import { changeEnumValue } from "../../util/verificationEnum"; import { changeEnumValue } from "../../util/verificationEnum";
...@@ -75,7 +75,7 @@ export async function pendingReviewList({unitName, joinTime, memberType, sheng, ...@@ -75,7 +75,7 @@ export async function pendingReviewList({unitName, joinTime, memberType, sheng,
* @returns * @returns
*/ */
export async function adopt({id, session}) { export async function adopt({id, session}) {
let userInfo = await findOnce(TABLEENUM.用户表, {userId:id, isAdmin:STATE.}, ["userId", "registerFlow", "loginId","userRegisterState", "memberType", "unitName", "name", "phone"]); let userInfo = await findOnce(TABLEENUM.用户表, {userId:id, isAdmin:STATE.}, ["userId", "registerFlow", "loginId","userRegisterState", "memberType", "unitName", "name", "phone", "sheng"]);
if (!userInfo || !userInfo.userId) throw new BizError(ERRORENUM.目标数据不存在); if (!userInfo || !userInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
if (userInfo.memberType == MEMBERTYPE.个人会员 && userInfo.registerFlow != REGISTERFLOW.完成第二步) { if (userInfo.memberType == MEMBERTYPE.个人会员 && userInfo.registerFlow != REGISTERFLOW.完成第二步) {
throw new BizError(ERRORENUM.不具备审批条件, `${userInfo.userId}为个人会员,并没有完成第二步`); throw new BizError(ERRORENUM.不具备审批条件, `${userInfo.userId}为个人会员,并没有完成第二步`);
...@@ -92,6 +92,11 @@ export async function adopt({id, session}) { ...@@ -92,6 +92,11 @@ export async function adopt({id, session}) {
let thisDate = new Date(); let thisDate = new Date();
const NowMs = thisDate.valueOf(); const NowMs = thisDate.valueOf();
let menberTypeStr = "";
if(userInfo.memberType == MEMBERTYPE.个人会员) menberTypeStr = "GR";
if(userInfo.memberType == MEMBERTYPE.单位会员) menberTypeStr = "DW";
let memberNum = getMenberNum(TABLEENUM.用户表, thisDate, userInfo.sheng, menberTypeStr);
let updateInfo:any = { let updateInfo:any = {
auditTime:NowMs, auditTime:NowMs,
joinTime:NowMs, joinTime:NowMs,
...@@ -101,6 +106,7 @@ export async function adopt({id, session}) { ...@@ -101,6 +106,7 @@ export async function adopt({id, session}) {
lifespanStartTime:NowMs, lifespanStartTime:NowMs,
lifespanEndTime:NowMs + 1000, lifespanEndTime:NowMs + 1000,
memberLevel:MEMBERLEVEL.普通会员, memberLevel:MEMBERLEVEL.普通会员,
memberNum
}; };
let unitName = userInfo.unitName; let unitName = userInfo.unitName;
let subType = userInfo.unitMemberType; let subType = userInfo.unitMemberType;
......
...@@ -336,6 +336,7 @@ const ModelArray = [ ...@@ -336,6 +336,7 @@ const ModelArray = [
askForTime:'Number',//申请时间 注册流程发起时间 askForTime:'Number',//申请时间 注册流程发起时间
auditTime:'Number',//审核时间 会员审核列表审核时间 auditTime:'Number',//审核时间 会员审核列表审核时间
joinTime:'Number',//入会时间 审核通过时间 joinTime:'Number',//入会时间 审核通过时间
memberNum:{type:'String', index:true},//会员编号
memberType:{type:'Number'},//会员类型 枚举MEMBERTYPE memberType:{type:'Number'},//会员类型 枚举MEMBERTYPE
lifespanStartTime:{type:'Number'},//会员有效期开始时间 时间戳 每次缴费成功更新 lifespanStartTime:{type:'Number'},//会员有效期开始时间 时间戳 每次缴费成功更新
lifespanEndTime:{type:'Number', index:true},//会员有效期结束时间 时间戳 每次缴费成功更新 lifespanEndTime:{type:'Number', index:true},//会员有效期结束时间 时间戳 每次缴费成功更新
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
import moment = require("moment"); import moment = require("moment");
import { wenZhangQueue } from "../biz/task"; import { wenZhangQueue } from "../biz/task";
const md5 = require("md5"); const md5 = require("md5");
const provinces = require('province-city-china/dist/data.json');
/** /**
* 返回编辑正确的结果 * 返回编辑正确的结果
...@@ -127,6 +128,7 @@ export function getEdition(year, month) { ...@@ -127,6 +128,7 @@ export function getEdition(year, month) {
// return `第${times}届,第${sessionNumber}次`; // return `第${times}届,第${sessionNumber}次`;
} }
export function changeArticleName(idList) { export function changeArticleName(idList) {
let str = ''; let str = '';
idList.forEach((id, index) => { idList.forEach((id, index) => {
...@@ -134,4 +136,55 @@ export function changeArticleName(idList) { ...@@ -134,4 +136,55 @@ export function changeArticleName(idList) {
str += `${wenZhangQueue[id]}`; str += `${wenZhangQueue[id]}`;
}); });
return str; return str;
} }
\ No newline at end of file
/**
* 获取行政区域代码
* @param areaName
*/
export function getAreaCode(areaName) {
let areaCode;
provinces.forEach( info => {
let {code, name, province} = info; //城市代码、城市名称、省/直辖市/特别行政区代码
if (name == areaName) areaCode = province
})
return areaCode;
}
/**
* 获取会员编号
* @param db
* @param memberTypeStr
* @param joinTime
* @param sheng
* @returns CEFA+入会时间+行政区域代码+5位流水号+DW(单位)/GR(个人)
* 个人会员:以审核时间算正式入会时间
* 单位会员:以审核时间算正式入会时间
* 例 CEFA-20230620-11-00001GR
*/
export async function getMenberNum(db, joinTime, sheng, memberTypeStr) {
//定义编号前缀
const prefix = 'CEFA';
//获取流水号计数器
const counterCollection = db.collection('serialNumberCounter');
// 尝试找到并更新计数器
let result = await counterCollection.findOneAndUpdate(
{ _id: 'memberCounter' },
{ $inc: { count: 1 } },
{ upsert: true, returnDocument: 'after' }
);
// 生成5位流水号(这里简单地将计数器值转为字符串并填充0至5位)
let serialNumber = (result.value.count + '').padStart(5, '0');
let areaCode = getAreaCode(sheng);
let memberNum = `${prefix}-${moment(joinTime).format("YYYYMMDD")}-${areaCode}-${serialNumber}${memberTypeStr}`
return memberNum;
}
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