Commit 0a77e0ce by chenjinjing

no message

parent cbd95e61
......@@ -18,10 +18,10 @@ import { changeEnumValue, eccEnumValue } from "../../util/verificationEnum";
* 会员权限列表 success
* @param unitName 单位名称
* @param memberLevel 会员等级、职务 MEMBERLEVEL
* @param memberCategory 会员类别、会员级别 UNITMEMBERTYPE、INDIVIDUALMEMBERTYPE
* @param memberCategory 会员类别、会员级别 UNITMEMBERTYPE、INDIVIDUALMEMBERTYPE 前端用MEMBERTYPEECCENUM
* @param pageNumber 当前页
*/
export async function getAuthority({unitName, memberLevel, memberCategory, pageNumber}) {
export async function getAuthority({unitName, memberLevel, memberCategory, pageNumber}) {
/**查询条件 */
let selectParam:any = {};
if (unitName) selectParam.unitName = unitName;
......@@ -96,8 +96,34 @@ export async function freeze({userId}) {
}
/**
* 变更权限回显
* @param id 列表返回的userId
* @returns
*/
export async function authorityEcho({id}) {
const SelectFiles = ["unitName", "name", "memberLevel", "memberType", "individualMemberType", "unitMemberType"];
let dbList = await findOnce(TABLEENUM.用户表, {userId:id}, SelectFiles);
const ResultFiles = ["unitName", "memberLevel", "memberType"];
let dataList = [];
dbList.forEach(info => {
let item:any = extractData(info, ResultFiles);
if (info.memberType == MEMBERTYPE.个人会员) {
item.unitName = info.name;
item.memberCategory = changeEnumValue(INDIVIDUALMEMBERTYPE, item.individualMemberType);//会员类别/级别
}
else{
item.unitName = info.unitName;
item.memberCategory = changeEnumValue(UNITMEMBERTYPE, item.unitMemberType);//会员类别/级别
}
item.memberLevel = changeEnumValue(MEMBERLEVEL, item.memberLevel);//会员等级、职务
dataList.push(item);
});
return {dataList};
}
......
......@@ -85,7 +85,7 @@ export async function adopt({userId}) {
paymentStatus:PAYMENTSTATUS.未支付,
lifespanStartTime:NowMs,
lifespanEndTime:NowMs + 1000,
memberLevel:MEMBERLEVEL.普通会员
memberLevel:MEMBERLEVEL.普通会员,
};
let unitName = userInfo.unitName;
let subType = userInfo.unitMemberType;
......@@ -184,7 +184,7 @@ export async function approvalHistoryList({userId}) {
* @param month 入会月份
* @returns
*/
function getEdition(year, month) {
export function getEdition(year, month) {
//起始年份和月份
const startYear = 2018;
......
......@@ -3,6 +3,7 @@
* 【二期内容:申请理事、申请常务理事、申请专家会员、会员积分、活动列表[立即参加]、消息中心暂时展示缴费提醒】
*/
import moment = require("moment");
import { BANXUELEIXING, DOCUMENTTYPE, INDIVIDUALMEMBERTYPE, INVOICESTATUS, MEMBERLEVEL, MEMBERTYPE, NATION, ORDERSTATE, PROFCATEGORY, SEX, STATE, UNITMEMBERTYPE } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum";
import { addManyData } from "../../data/add";
......@@ -201,19 +202,32 @@ export async function getSheng ({userId}) {
* 会员缴费列表
* @param userId
* @param state
* @returns
* @returns dataList:[{data:列表, proofLetterInfo:证明函}]
*/
export async function memberPayment({userId, state}) {
let selectParam:any = {userId};
if(state) selectParam.state = state;
let oldList = await find(TABLEENUM.订单表, selectParam, ["id", "orderCycleStart", "orderCycleEnd", "money", "state"]);
let oldList = await find(TABLEENUM.订单表, selectParam, ["id", "userId", "unitName", "orderCycleStart", "orderCycleEnd", "money", "state"]);
if (!oldList || oldList.length<1) throw new BizError(ERRORENUM.目标数据不存在);
/**查询证明函需要字段会员等级 */
let myOldInfo = await findOnce(TABLEENUM.用户表, {userId:oldList.userId}, ["memberLevel"]);
if (!myOldInfo || !myOldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
//证明函返回数据配置
const proofLetterFiles = ["userId", "unitName", "orderCycleStart", "orderCycleEnd", "money"];
let dataList = [];
oldList.forEach( info => {
oldList.forEach( async info => {
/**处理列表返回数据字段 */
let item:any = extractData(info, ["id", "orderCycleStart", "orderCycleEnd", "money", "state"]);
item.state = changeEnumValue(ORDERSTATE, item.state);
dataList.push(item);
/**处理证明函返回数据字段 */
let proofLetterInfo:any = extractData(info, proofLetterFiles);
proofLetterInfo.memberLevel = changeEnumValue(MEMBERLEVEL, myOldInfo.memberLevel);
proofLetterInfo.orderCycleStart = moment(proofLetterInfo.orderCycleStart).format("YYYY");
proofLetterInfo.orderCycleEnd = moment(proofLetterInfo.orderCycleEnd).format("YYYY");
dataList.push({list:item, proofLetterInfo});
})
return {dataList};
......@@ -221,25 +235,31 @@ export async function memberPayment({userId, state}) {
/**
* 欠费证明
* @param id 会员缴费列表返回的id
* 申请发票
* @param id 会员缴费列表返回的id
*/
export async function arrears({id}) {
let oldInfo = await findOnce(TABLEENUM.订单表, {id}, ["", ""]);
export async function applicationInvoice({id}) {
let oldInfo = await findOnce(TABLEENUM.订单表, {id, invoiceStatus:INVOICESTATUS.未开发票}, ["invoiceAdd"]);
if (!oldInfo || !oldInfo.invoiceAdd) throw new BizError(ERRORENUM.目标数据不存在);
let dataInfo = extractData(oldInfo, ["invoiceAdd"]);
return {dataInfo};
}
/**
* 申请发票
* 下载发票
* @param id 会员缴费列表返回的id
*/
export async function applicationInvoice({id}) {
let oldInfo = await findOnce(TABLEENUM.订单表, {id, invoiceStatus:INVOICESTATUS.未开发票}, ["invoiceAdd"]);
}
export async function downInvoice({id}) {
let oldInfo = await findOnce(TABLEENUM.订单表, {id, invoiceStatus:INVOICESTATUS.已开发票}, ["invoiceAdd"]);
if (!oldInfo || !oldInfo.invoiceAdd) throw new BizError(ERRORENUM.目标数据不存在);
let dataInfo = extractData(oldInfo, ["invoiceAdd"]);
return {dataInfo};
}
......
......@@ -13,6 +13,8 @@ import { extractData } from "../../util/piecemeal";
import { changeEnumValue, eccEnumValue } from "../../util/verificationEnum";
import { addManyData, addOneData } from "../../data/add";
import { deleteManyData, deleteOneData } from "../../data/delete";
import moment = require("moment");
import { getEdition } from "./examine";
/**
......@@ -33,7 +35,11 @@ export async function unitMemberList({unitName, joinTime, unitMemberType, member
if (joinTime) selectParam.joinTime = joinTime;
if (unitMemberType) selectParam.unitMemberType = unitMemberType;
if (memberLevel) selectParam.memberLevel = memberLevel;
if (session) selectParam.session = session;
if (session) {
let thisYear = moment(session).format("YYYY");
let thisMonth = moment(session).format("MM");
selectParam.session = getEdition(thisYear, thisMonth);;
}
if (sheng) selectParam.sheng = sheng;
if (shi) selectParam.shi = shi;
if (qu) selectParam.qu = qu;
......@@ -147,7 +153,11 @@ export async function individualMemberList({name, documentId, phone, individualM
if (phone) selectParam.phone = phone;
if (individualMemberType) selectParam.individualMemberType = individualMemberType;
if (memberLevel) selectParam.memberLevel = memberLevel;
if (session) selectParam.session = session;
if (session) {
let thisYear = moment(session).format("YYYY");
let thisMonth = moment(session).format("MM");
selectParam.session = getEdition(thisYear, thisMonth);;
}
if (joinTime) selectParam.joinTime = joinTime;
if (auditTime) selectParam.auditTime = auditTime;
if (memberState) selectParam.memberState = memberState;
......
......@@ -3,7 +3,7 @@
*/
import moment = require("moment");
import { MEMBERSTATE, MEMBERTYPE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, STATE } from "../../config/enum";
import { MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, STATE } from "../../config/enum";
import { TABLEENUM } from "../../data/models/model";
import { find, findCount, findOnce, findOnceToSort, findToPage, findToSort } from "../../data/select";
import { extractData } from "../../util/piecemeal";
......@@ -34,7 +34,7 @@ export async function getPaid({unitName, joinTime, memberType, pageNumber}) {
if (joinTime) selectParam.joinTime = joinTime;
if (memberType) selectParam.memberType = memberType;
const SelectFiles = ["userId", "memberState", "unitName", "loginId", "phone", "joinTime", "memberType", "lifespanStartTime", "lifespanEndTime"];
const SelectFiles = ["userId", "memberState", "unitName", "loginId", "phone", "joinTime", "memberType", "lifespanStartTime", "lifespanEndTime", "memberLevel"];
let dbList = await findToPage(TABLEENUM.用户表, selectParam, SelectFiles, pageNumber, 10);
let dataCount = await findCount(TABLEENUM.用户表, selectParam);
......
......@@ -129,7 +129,7 @@ export async function memberRegister2({form, userId}) {
/**比对验证码 */
let codeInfo = await findOnceToSort(TABLEENUM.验证码表, {phone, isUse:false, type:CODETYPE.用户注册, sendMs:{"$gt":sysTools.getTodayMs() }}, {sendMs:-1});
if (!codeInfo) throw new BizError(ERRORENUM.code无效, `${phone}在注册时,code表中不存在该手机号的验证码`);
if (codeInfo != codeNum) throw new BizError(ERRORENUM.验证码错误, `${phone}不存在${codeNum}`);
if (codeInfo.codeNum != codeNum) throw new BizError(ERRORENUM.验证码错误, `${phone}不存在${codeNum}`);
if (( codeInfo.sendMs + (30 * 60 *1000) ) < NowMs ) throw new BizError(ERRORENUM.验证码过期);
/**初始化账号信息 */
......@@ -257,7 +257,8 @@ export async function memberRegisterSendCode({phone}) {
const NowMs = new Date().valueOf();
let codeSelectParam = { phone, isUse:false, type:CODETYPE.用户注册, sendMs:{"$gt":sysTools.getTodayMs()} }
let lastCodeInfo = await findOnceToSort(TABLEENUM.验证码表, codeSelectParam, {sendMs:-1});
if (lastCodeInfo.code) {
let codeNum = lastCodeInfo?.codeNum;
if (codeNum) {
if ( (lastCodeInfo.sendMs + (60*1000)) > NowMs ) throw new BizError(ERRORENUM.频繁操作请稍后再试);
/**校验今日同类型验证码次数 */
let todayNotUseCount = await findCount(TABLEENUM.验证码表, codeSelectParam);
......@@ -265,7 +266,7 @@ export async function memberRegisterSendCode({phone}) {
}
const Code = sysTools.generateSMSCode();//生成短信验证码
let addInfo = {code:Code, phone, sendMs:NowMs, type:CODETYPE.用户注册, isUse:false};
let addInfo = {codeNum:Code, phone, sendMs:NowMs, type:CODETYPE.用户注册, isUse:false};
await addOneData(TABLEENUM.验证码表, addInfo);
return {code:Code};
......
......@@ -469,7 +469,7 @@ const ModelArray = [
source:TABLESOURCEENUM.mongo,
schema:{
phone:{type:'String', index:true},//电话号码
code:'String',
codeNum:'String',
sendMs:{type:'Number', index:true},//下发时间 时间戳
type:'Number',//验证码类型 枚举 CODETYPE
isUse:{type:'Boolean', index:true, default:false},//是否已使用 默认false
......
......@@ -82,8 +82,7 @@ export const Config = {
phone:{type:'String', desc:'联系人手机号', notMustHave:false},
codeNum:{type:'String', desc:'验证码', notMustHave:false},
}
},
{key:"codeId", type:"String", desc:"验证码Id"}
}
],
bindBiz:registerBiz.unitMemberRegister1
},
......@@ -95,35 +94,35 @@ export const Config = {
key:"form", type:"Object", sub:
{
unitName:{type:'String', desc:'单位名称', notMustHave:false},
sheng:{type:'String', desc:'省', notMustHave:false},
shi:{type:'String', desc:'市', notMustHave:false},
qu:{type:'String', desc:'区', notMustHave:false},
addres:{type:'String', desc:'通信地址', notMustHave:false},
uscc:{type:'String', desc:'单位信用代码', notMustHave:false},
legalPerson:{type:'String', desc:'法人代表', notMustHave:false},
legalPersonPhone:{type:'String', desc:'法人联系电话', notMustHave:false},
sheng:{type:'String', desc:'省', notMustHave:false},
shi:{type:'String', desc:'市', notMustHave:false},
qu:{type:'String', desc:'区', notMustHave:false},
legalPersonMail:{type:'String', desc:'法人邮箱', notMustHave:false},
unitMail:{type:'String', desc:'单位电子邮箱', notMustHave:false},
contactPerson:{type:'String', desc:'日常联系人', notMustHave:false},
contactPersonDuties:{type:'String', desc:'日常联系人职务', notMustHave:false},
contactPersonPhone:{type:'String', desc:'日常联系人手机', notMustHave:false},
uusinessLicenseUrl:{type:'String', desc:'营业执照复印件', notMustHave:false},
auxiliaryMaterial:{type:'[String]', desc:'法人邮箱', notMustHave:false},
contactPersonPhone:{type:'[String]', desc:'日常联系人手机', notMustHave:false},
/**单位信息 */
unitMemberType:{type:'Number', desc:'单位信息类型', notMustHave:false},
unitMail:{type:'[String]', desc:'单位电子邮箱', notMustHave:false},
yuanXiaoBanXueLeiXing:{type:'String', desc:'院校办学类型', notMustHave:false},
unitMemberType:{type:'Number', desc:'单位信息类型,枚举', notMustHave:false},
yuanXiaoBanXueLeiXing:{type:'Number', desc:'院校办学类型,枚举', notMustHave:false},
yuanXiaoZhuGuanBuMen:{type:'String', desc:'院校主管部门', notMustHave:false},
yuanXiaoFuZeRen:{type:'String', desc:'院校主要负责人', notMustHave:false},
yuanXiaoFuZeRenZhiWu:{type:'String', desc:'院校主要负责人职务', notMustHave:false},
yuanXiaoFuZeRenDianHua:{type:'String', desc:'院校主要负责人电话', notMustHave:false},
yuanXiaoBanGongFuZeRen:{type:'String', desc:'院校办公负责人', notMustHave:false},
yuanXiaoBanGongFuZeRenDianHua:{type:'String', desc:'院校办公负责人电话', notMustHave:false},
ZhuYaoFuZeRenYouXiang:{type:'String', desc:'主要负责人邮箱', notMustHave:false},
yuanXiaoKeYanFuZeRen:{type:'String', desc:'院校科研负责人', notMustHave:false},
yuanXiaoKeYanFuZeRenDianHua:{type:'String', desc:'院校科研负责人电话', notMustHave:false},
jiaoXueFuZeRenXinMing:{type:'String', desc:'教学负责人姓名', notMustHave:false},
yuanXiaoXueShengZongRenShu:{type:'String', desc:'院校学生总人数', notMustHave:false},
yuanXiaoJiaoZhiGongZongRenShu:{type:'String', desc:'院校教职工总人数', notMustHave:false},
jiaoXueFuZeRenXinMing:{type:'[String]', desc:'教学负责人姓名', notMustHave:false},
jiaoXueFuZeRenDianHua:{type:'[String]', desc:'教学负责人电话', notMustHave:false},
ZhuYaoFuZeRenYouXiang:{type:'[String]', desc:'主要负责人邮箱', notMustHave:false},
jiaoXueFuZeRenDianHua:{type:'String', desc:'教学负责人电话', notMustHave:false},
}
},
{
......@@ -194,7 +193,7 @@ export const Config = {
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"unitMemberType", type:"Number", desc:"单位会员类型", isNull:true},
{key:"memberLevel", type:"Number", desc:"会员等级职务", isNull:true},
{key:"session", type:"String", desc:"届次", isNull:true}, //todo
{key:"session", type:"Number", desc:"届次时间戳", isNull:true},
{key:"sheng", type:"String", desc:"省", isNull:true},
{key:"shi", type:"String", desc:"市", isNull:true},
{key:"qu", type:"String", desc:"区", isNull:true},
......@@ -211,7 +210,7 @@ export const Config = {
{key:"phone", type:"String", desc:"手机号", isNull:true},
{key:"individualMemberType", type:"Number", desc:"级别、会员类型", isNull:true},
{key:"memberLevel", type:"Number", desc:"会员等级", isNull:true},
{key:"session", type:"String", desc:"届次", isNull:true},
{key:"session", type:"Number", desc:"届次时间戳", isNull:true},
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"auditTime", type:"Number", desc:"审核时间", isNull:true},
{key:"memberState", type:"Number", desc:"状态", isNull:true},
......@@ -395,37 +394,80 @@ export const Config = {
bindBiz:memberFeesBiz.getPaid
},
{
apiName:"续费期名单列表",
subUrl:'/memberfees/paid',
apiName:"已缴费列表的订单日志",
subUrl:'/memberfees/paidorderlist',
param:[
{key:"userId", type:"String", desc:"用户id"},
],
bindBiz:memberFeesBiz.paidOrderList
},
{
apiName:"待缴费列表",
subUrl:'/memberfees/unpaidlist',
param:[
{key:"unitName", type:"String", desc:"单位名称", isNull:true},
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"memberType", type:"Number", desc:"会员类别", isNull:true},
{key:"pageNumber", type:"Number", desc:"当前页"}
],
bindBiz:memberFeesBiz.getPaid
bindBiz:memberFeesBiz.unpaidList
},
{
apiName:"欠费名单列表",
subUrl:'/memberfees/paid',
subUrl:'/memberfees/getrenewalperiod',
param:[
{key:"unitName", type:"String", desc:"单位名称", isNull:true},
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"memberType", type:"Number", desc:"会员类别", isNull:true},
{key:"pageNumber", type:"Number", desc:"当前页"}
],
bindBiz:memberFeesBiz.getPaid
bindBiz:memberFeesBiz.getRenewalPeriod
},
{
apiName:"线下付款",
subUrl:'/memberfees/offlinepayment',
param:[
{key:"orderId", type:"String", desc:"订单id", isNull:true},
{key:"paymentNum", type:"Number", desc:"支付单号", isNull:true},
{key:"pageNumber", type:"Number", desc:"当前页"}
],
bindBiz:memberFeesBiz.offlinePayment
},
{
apiName:"多比订单时选择线下付款页面的选择缴费周期页",
subUrl:'/memberfees/selectmanyorder',
param:[
{key:"id", type:"String", desc:"会员id", isNull:true},
],
bindBiz:memberFeesBiz.selectManyOrderForUser
},
{
apiName:"设置宽限期",
subUrl:'/memberfees/setgraceperiod',
param:[
{key:"id", type:"String", desc:"列表返回id", isNull:true},
{key:"gracePeriodEndTime", type:"String", desc:"宽限期到期时间", isNull:true},
],
bindBiz:memberFeesBiz.setGracePeriod
},
{
apiName:"宽限期名单列表",
subUrl:'/memberfees/paid',
subUrl:'/memberfees/getgraceperiod',
param:[
{key:"unitName", type:"String", desc:"单位名称", isNull:true},
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"memberType", type:"Number", desc:"会员类别", isNull:true},
{key:"pageNumber", type:"Number", desc:"当前页"}
],
bindBiz:memberFeesBiz.getPaid
bindBiz:memberFeesBiz.getGracePeriod
},
{
apiName:"移除宽限期",
subUrl:'/memberfees/delgraceperiod',
param:[
{key:"id", type:"String", desc:"列表返回id", isNull:true},
],
bindBiz:memberFeesBiz.delGracePeriod
},
],
......@@ -467,6 +509,16 @@ export const Config = {
}
],
bindBiz:authorityBiz.freeze
},
{
apiName:"变更权限回显",
subUrl:'/authority/authorityecho',
param:[
{
key:"id", type:"String", desc:"列表返回的userId"
}
],
bindBiz:authorityBiz.authorityEcho
}
],
"个人首页展示":[
......@@ -600,6 +652,22 @@ export const Config = {
],
bindBiz:homePageBiz.memberPayment
},
{
apiName:"申请发票",
subUrl:'/homepage/applicationinvoice',
param:[
{key:"id", type:"String", desc:"缴费列表返回id"}
],
bindBiz:homePageBiz.applicationInvoice
},
{
apiName:"下载发票",
subUrl:'/homepage/downinvoice',
param:[
{key:"id", type:"String", desc:"缴费列表返回id"}
],
bindBiz:homePageBiz.downInvoice
},
]
}
......
......@@ -171,5 +171,12 @@ export const Config = {
defaultParam:enumConfig.MEMBERLEVEL,
bindBiz:publicBiz.setEnumInterface
},
{
apiName:"会员类别", //前端用
subUrl:'/memberTypeEcc',
param:[],
defaultParam:enumConfig.MEMBERTYPEECCENUM,
bindBiz:publicBiz.setEnumInterface
},
],
}
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