Commit 42da2466 by 孙香冬

no message

parent aa5487db
/**
* ABI_智慧党建管理分析平台
* 组织生活
*/
import * as organizationalLifeData from "../../data/organizationalLife";
import * as configEnum from "../../config/enum";
/**
* ABI 组织生活
* @returns {activityCount:"活动开展次数", dataList:"组织生活扇形图"}
*/
export async function getActivityCount() {
let activityCount = await organizationalLifeData.groupFindActivityCount({});
let activityList = [];
for(let key in configEnum.ACTIVITYTYPE) {
let anyKey:any = key;
if (isNaN(anyKey)) {
let keyStr = key;
let partyActivityType = configEnum.ACTIVITYTYPE[key];
let count = await organizationalLifeData.groupFindActivityCount({partyActivityType});
activityList.push({key:keyStr, value:count});
}
}
return { activityCount:{title:"活动开展次数", value: activityCount}, dataList:{title:"组织生活扇形图", list: activityList}};
}
......@@ -9,59 +9,66 @@ import * as configEnum from "../../config/enum";
import * as splitResultConfig from "../../config/splitResultConfig";
import { extractData } from '../../util/piecemeal';
import { changeEnumValue, eccEnumValue } from '../../util/verificationEnum';
import moment = require('moment');
import { BizError } from '../../util/bizError';
import { ERRORENUM } from '../../config/errorEnum';
/**
* 主页基础数据
* @param branchName 支部id
* @returns {支部名称, 党员总数, 党建指令指数, 党内职务人员列表}
*/
export async function homeData(uId:number) {
let partyMemberNum = await partyMemberData.groupFindPartyMemberCount({}); //党员总数
export async function homeData(branchName:number) {
if (branchName) eccEnumValue("党建资讯列表查询", "支部名称", configEnum.BRANCHNAMETYPE, branchName);
let branch = changeEnumValue(configEnum.BRANCHNAMETYPE, branchName); //支部名称
let partyMemberNum = await partyMemberData.groupFindPartyMemberCount({branchName}); //党员总数
let massIndex = 87.6; //党建指令指数
let partyPositions = []; //党内职务人员
for (let key in configEnum.PARTYPOSITIONS) {
let anyKey:any = key;
if (key != "党员" && key != "入党积极分子" && key != "预备党员") {
if (isNaN(anyKey)) { //枚举key key = string
const EnumValue = parseInt(configEnum.PARTYPOSITIONS[key])
let dataBaseList = await partyMemberData.getBaseListByPartyPositions( [EnumValue] );
let dataBaseList = await partyMemberData.getBaseListByPartyPositions( [EnumValue], branchName );
let nameList = [];
dataBaseList.forEach( info => {
nameList.push(info.name);
});
if(nameList.length <= 0) nameList.push("暂无数据");
partyPositions.push({
key,
list:nameList
});
}
}
}
return { partyMemberNum, massIndex, partyPositions };
return { branch, partyMemberNum, massIndex, partyPositions };
}
/**
* 根据资讯类型查询党建资讯列表
* @param informationType 党建资讯类型
* @param branchName 支部id
* @returns
*/
export async function informationData(informationType:number) {
export async function informationData(informationType:number, branchName:number) {
if (informationType) eccEnumValue("党建资讯列表查询", "资讯类型", configEnum.INFORMATIONTYPE, informationType);
if (branchName) eccEnumValue("党建资讯列表查询", "支部名称", configEnum.BRANCHNAMETYPE, branchName);
let partyInformationInfo = await partyInformationData.findPartyInformationListByType(informationType);
let partyInformationInfo = await partyInformationData.findPartyInformationListByType(informationType, branchName);
if(!partyInformationInfo) throw new BizError(ERRORENUM.未找到数据, `库中不存在党建资讯类型为${informationType}, 支部为${branchName}的党建资讯列表`);
let dataList = [];
partyInformationInfo.forEach( info => {
let changeData:any = extractData(splitResultConfig.partyInformationConfig, info, false);
changeData.informationType = changeEnumValue(configEnum.INFORMATIONTYPE, changeData.informationType);
changeData.informationTime = moment(changeData.informationTime).format("YYYY.MM.DD HH:mm");
let changeData:any = extractData(splitResultConfig.partyInformationConfig, info, true);
changeData.informationType = changeEnumValue(configEnum.INFORMATIONTYPE, info.informationType);
changeData.branchName = changeEnumValue(configEnum.BRANCHNAMETYPE, info.branchName);
dataList.push(changeData);
})
......
......@@ -6,6 +6,7 @@
import moment = require("moment");
import * as organizationalLifeData from "../../../data/organizationalLife";
import * as configEnum from "../../../config/enum";
import * as clientConfigEnum from "../../../config/clientEnum";
import { eccFormParam } from "../../../util/verificationParam";
import * as eccFormParamConfig from "../../../config/eccFormParamConfig";
import * as verificationEnumTools from "../../../util/verificationEnum";
......@@ -21,24 +22,23 @@ moment.suppressDeprecationWarnings = true;
* 组织生活列表
* todo 接口协议不对
* @param status 活动状态 全部、正在进行、即将开展、已经开展
* @return data
* @returns data
* 返回说明 根据传入的活动状态返回不同的列表
*/
export async function getOrganizationalLifeList(type:number, partyActivityType:number) {
export async function getOrganizationalLifeList(type:number, partyActivityType:number, branchName:number) {
/**将枚举值转为枚举文本 */
let partyActivityTypeStr = verificationEnumTools.changeEnumValue(configEnum.TYPE, type);
let partyActivityTypeStr = verificationEnumTools.changeEnumValue(clientConfigEnum.TYPE, type);
const NowMs = new Date().valueOf();
/**拼接查询参数 */
let selectParam = {};
if (type != configEnum.TYPE.全部) {
if (type == configEnum.TYPE.即将开展) selectParam = {"activityStartTime":{"$gt":NowMs }};
else if (type == configEnum.TYPE.已经开展) selectParam = {"activityEndTime":{"$lt":NowMs }};
if (type != clientConfigEnum.TYPE.全部活动) {
if (type == clientConfigEnum.TYPE.即将开展) selectParam = {"activityStartTime":{"$gt":NowMs }};
else if (type == clientConfigEnum.TYPE.已经开展) selectParam = {"activityEndTime":{"$lt":NowMs }};
else selectParam = {"$and":[ {"activityStartTime":{"$lt":NowMs }}, {"activityEndTime":{"$gt":NowMs}} ]}
} else partyActivityTypeStr = "";
if (partyActivityType) {
selectParam["partyActivityType"] = partyActivityType;
}
if (partyActivityType) selectParam["partyActivityType"] = partyActivityType;
if (branchName) selectParam["branchName"] = branchName;
let dbList = await organizationalLifeData.findOrganizationalLifeList(selectParam);
......@@ -62,12 +62,13 @@ export async function getOrganizationalLifeList(type:number, partyActivityType:n
* 创建组织生活活动
* @param param {党建活动类型, 活动开始时间, 活动结束时间, 活动地点, 活动主持人, 活动记录人, 请假党员, 参与党员, 活动记录}
* 参数类型 { number, number, number, string, [string], [string], [number], [number], string}
* @return {isSuccess: true}
* @returns {isSuccess: true}
*/
export async function createOrganizationalLife(param) {
export async function createOrganizationalLife(branchName:number, param) {
eccFormParam("创建组织生活活动", eccFormParamConfig.CreateActivityConfig, param)
if (branchName) verificationEnumTools.eccEnumValue("创建组织生活活动", "支部名称", configEnum.BRANCHNAMETYPE, branchName);
verificationEnumTools.eccEnumValue('创建组织生活活动的党建活动类型', 'partyActivityType', configEnum.ACTIVITYTYPE, param.partyActivityType);
param.branchName = branchName;
await organizationalLifeData.createActivity(param);
return {isSuccess: true};
......@@ -77,20 +78,16 @@ export async function createOrganizationalLife(param) {
/**
* 组织生活详细信息
* @param oId 编号
* @returns
* @returns changeData:{返回字段参考 splitResultConfig文件中的组织生活详细信息配置}
*/
export async function getOrganizationalLifeById(oId:number) {
let activityInfo = await organizationalLifeData.findEventDetails(oId);
/**截取返回字段 */
let changeData:any = extractData(splitResultConfig.activityInfoConfig, activityInfo, false);
changeData.partyActivityType = verificationEnumTools.changeEnumValue(configEnum.ACTIVITYTYPE, activityInfo.partyActivityType);
changeData.activityStartTime = moment(activityInfo.activityStartTime).format("YYYY.MM.DD HH:mm");
changeData.activityEndTime = moment(activityInfo.activityEndTime).format("YYYY.MM.DD HH:mm");
//todo 参与人员和请假人员要 存名称
let changeData:any = extractData(splitResultConfig.activityInfoConfig, activityInfo, true);
changeData.title = verificationEnumTools.changeEnumValue(configEnum.ACTIVITYTYPE, activityInfo.partyActivityType);
changeData.activityStatus = getActivityStatus(activityInfo.activityStartTime, activityInfo.activityEndTime);
return changeData;
}
......@@ -100,7 +97,7 @@ export async function getOrganizationalLifeById(oId:number) {
* @param oId 组织生活id 修改对应oId的组织生活信息
* @param param {党建活动类型, 活动开始时间, 活动结束时间, 活动地点, 活动主持人, 活动记录人, 请假党员, 参与党员, 活动记录}
* 参数类型 { number, number, number, string, [string], [string], [number], [number], string}
* @returns
* @returns {isSuccess: true}
*/
export async function updateOrganizationalLife(oId:number, param) {
/**校验表单参数 */
......@@ -111,7 +108,7 @@ export async function updateOrganizationalLife(oId:number, param) {
if (!activityInfo) throw new BizError(ERRORENUM.未找到数据, `库中不存在id为${oId}的组织活动`);
let changeList = checkChange(param, activityInfo);
if ( !changeList.length ) throw new BizError(ERRORENUM.数据无更新, `${oId}数据无更新`);
// if ( !changeList.length ) throw new BizError(ERRORENUM.数据无更新, `${oId}数据无更新`);
changeList.forEach(key => {
activityInfo[key] = param[key];
......@@ -125,8 +122,8 @@ export async function updateOrganizationalLife(oId:number, param) {
/**
* 创建/修改组织生活选择党员
* todo 在使用枚举的情况下 参数中不能出现枚举以外的值
* @param type
* 在使用枚举的情况下 参数中不能出现枚举以外的值
* @param type 组织生活活动类型
* @param name 党员姓名 用于输入党员姓名查询
* @returns 根据传入的type返回不同党员信息
*/
......@@ -134,7 +131,7 @@ export async function getPartyMemberNameList(type:number, name:string) {
let selectParam:any = {};
let partyMemberList;
if (type != 4) {//todo 不规范
if (type != clientConfigEnum.TYPE.全部活动) {
selectParam.entryType = type;
if(name.length) selectParam.name = name;
partyMemberList = await partyMemberData.getPartyMemberListByEntryType(selectParam);
......@@ -161,16 +158,18 @@ export async function getAllPartyMember() {
let data = [];
partyMemberList.forEach( info => {
let changeData:any = extractData(splitResultConfig.partyMemberConfig, info, false);
changeData.partyPositions = verificationEnumTools.changeEnumValue(configEnum.PARTYPOSITIONS, info.partyPositions);
switch (changeData.entryType) {
case 1:
changeData.color = "#C62A23";
changeData.partyPositions = verificationEnumTools.changeEnumValue(configEnum.PARTYPOSITIONSICON, info.partyPositions);
break;
case 2:
changeData.color = "#3549B0";
changeData.partyPositions = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, info.entryType);
break;
case 3:
changeData.color = "#E4B386";
changeData.partyPositions = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, info.entryType);
break;
}
data.push(changeData);
......@@ -183,11 +182,11 @@ export async function getAllPartyMember() {
/**
* 删除组织生活活动
* @param oId 活动id
* @returns
* @returns {isSuccess:true}
*/
export async function deleteOrganizationalLife(oId:number) {
let activityInfo = await organizationalLifeData.findEventDetails(oId);
if (activityInfo) throw new BizError(ERRORENUM.未找到数据, `库中不存在id为${oId}的组织活动`);
if (!activityInfo) throw new BizError(ERRORENUM.未找到数据, `库中不存在id为${oId}的组织活动`);
await organizationalLifeData.deleteActivity(oId);
......
......@@ -12,11 +12,11 @@ import * as configEnum from "../../../config/enum";
/**
* 创建党建资讯
* @param param {informationType: 党建资讯类型, title: "资讯标题", branch: "支部名称", informationTime: 资讯时间, detailedInformation: "资讯详细", img: "资讯图片"}
* @param param {informationType: 党建资讯类型, title: "资讯标题", branchName: "支部名称", informationTime: 资讯时间, detailedInformation: "资讯详细", img: "资讯图片"}
* @return {isSuccess: true}
*/
export async function createPartyInformation(param) {
eccFormParam("创建党建资讯", eccFormParamConfig.CreatePartyMemberFormConfig, param)
eccFormParam("创建党建资讯", eccFormParamConfig.createPartyInformation, param)
let partyInformation = await partyInformationData.createPartyInformation(param);
verificationEnumTools.eccEnumValue('党建资讯类型', 'informationType', configEnum.INFORMATIONTYPE, param.informationType);
......
......@@ -5,8 +5,6 @@
import * as partyMemberData from "../../../data/partyMember";
import * as configEnum from "../../../config/enum";
import { extractData } from "../../../util/piecemeal";
import * as splitResultConfig from "../../../config/splitResultConfig";
import * as verificationEnumTools from "../../../util/verificationEnum";
import { eccFormParam } from "../../../util/verificationParam";
import * as eccFormParamConfig from "../../../config/eccFormParamConfig";
......@@ -22,11 +20,13 @@ import { getPwdMd5, getToken } from "../../../tools/system";
export async function createPartyMember(param) {
eccFormParam("创建正式党员录入", eccFormParamConfig.CreatePartyMemberFormConfig, param);
verificationEnumTools.eccEnumValue('正式党员录入性别', 'partyActivityType', configEnum.SEX, param.partyActivityType);
verificationEnumTools.eccEnumValue('正式党员录入党内职务图例', 'partyPositionsIcon', configEnum.PARTYPOSITIONSICON, param.partyPositions);
verificationEnumTools.eccEnumValue('正式党员录入党内职务', 'partyPositions', configEnum.PARTYPOSITIONS, param.partyPositions);
verificationEnumTools.eccEnumValue('正式党员名册录入类型', 'entryType', configEnum.ENTRYTYPE, param.entryType);
let partyMemberInfo:any = await partyMemberData.createPartyMember(param);
partyMemberInfo.pwd = getPwdMd5(param.phone, param.phone.slice(5, 11));
if(!param.pwd) partyMemberInfo.pwd = getPwdMd5(param.phone, param.phone.slice(5, 11));
else partyMemberInfo.pwd = getPwdMd5(param.phone, param.pwd);
partyMemberInfo.token = getToken(param.phone);
partyMemberInfo.tokenMs = new Date().valueOf();
......
......@@ -3,6 +3,7 @@
*/
import { ERRORENUM } from '../../config/errorEnum';
import * as configEnum from "../../config/enum";
import * as partyMemberData from '../../data/partyMember';
import * as sysTools from "../../tools/system";
import { BizError } from '../../util/bizError';
......@@ -10,22 +11,23 @@ import { BizError } from '../../util/bizError';
/**
* 党员入口登录
* @param loginId 登录账号
* @param pwd 登录密码
* @returns loginUserInfo: {loginId, firstLogin, token} 登录后的信息
* @param pwd 登录密码 md5之后的
* @returns loginUserInfo: {userid, firstLogin, token} 登录后的信息
*/
export async function login(loginId:string, pwd:string) {
let loginInfo = await partyMemberData.findPartyMemberByLoginId(loginId);
if (!loginInfo) throw new BizError(ERRORENUM.账号不存在);
// if (loginInfo.entryType != configEnum.ENTRYTYPE.正式党员) throw new BizError(ERRORENUM.非党员账号, `${loginId}账号非党员账号`);
let checkPwd = sysTools.getPwdMd5(loginInfo.loginId, pwd);
if (loginInfo.pwd != checkPwd) throw new BizError(ERRORENUM.密码错误);
const Token = sysTools.getToken(loginId);
let loginUserInfo = {
loginId: loginInfo.loginId,
userid: loginInfo.id,
firstLogin: !loginInfo.firstLoginIsChangePwd,
token: Token
token: Token,
branchid: loginInfo.branchName,
};
loginInfo.token = Token;
......@@ -67,7 +69,7 @@ export async function firstLoginChangePwd(loginId:string, pwd:string, confirmPwd
* @param pwd 原密码 md5之后的
* @param newPwd 新密码 未md5
* @param confirmPwd 确认新密码 未md5
* @returns {isSuccess:true/false}
* @returns {isSuccess:true}
*/
export async function changePassword(loginId:string, pwd:string, newPwd:string, confirmPwd:string ) {
if (newPwd != confirmPwd) throw new BizError(ERRORENUM.密码不一致);
......@@ -81,7 +83,7 @@ export async function firstLoginChangePwd(loginId:string, pwd:string, confirmPwd
if (partyMemberInfo.pwd != checkPwd) throw new BizError(ERRORENUM.密码错误);
/**考虑到如果前端把新密码也md5 就不可以验证是不是符合规则 所以前端传的是明文
* 我们初始化密码的时候 有两次加密 第一次是密码md5 然后再和uscc 进行md5
* 我们初始化密码的时候 有两次加密 第一次是密码md5 然后再和loginId 进行md5
* 于是这里也要如此操作
*/
partyMemberInfo.pwd = sysTools.getPwdMd5(loginId, sysTools.md5PwdStr(newPwd));
......
let config = {}//配置
/**
* 党内职务 Party positions
* 组织生活活动类型
*/
export enum PARTYPOSITIONS {
全部 = 1,
支部书记,
支部副书记,
纪检委员,
组织委员,
宣传委员,
党员,
入党积极分子,
预备党员,
export enum TYPE {
全部活动 = 1,
正在进行,
即将开展,
已经开展,
}
/**
* 名册录入类型
*/
export enum ENTRYTYPE {
正式党员录入 = 1,
入党积极分子录入,
入党申请录入
}
......@@ -19,9 +19,10 @@ export const CreateActivityConfig = {
activityAdd:{type:"String", notMustHave:true},//活动地点
activityHost:{type:"[String]", notMustHave:true},//活动主持人
activityNoteTaker:{type:"[String]", notMustHave:true},//活动记录人
leavePartyMember:{type:"[Number]", notMustHave:true},//请假党员
participatingPartyMember:{type:"[Number]", notMustHave:true},//参与党员
leavePartyMember:{type:"[String]", notMustHave:true},//请假党员
participatingPartyMember:{type:"[String]", notMustHave:true},//参与党员
participationRecord:{type:"String", notMustHave:true},//活动记录
branchName:{type:"Number", notMustHave:true}, //支部名称
};
......@@ -37,8 +38,8 @@ export const UpdateActivityFormConfig = {
activityAdd:{type:"String", notMustHave:true},//活动地点
activityHost:{type:"[String]", notMustHave:true},//活动主持人
activityNoteTaker:{type:"[String]", notMustHave:true},//活动记录人
leavePartyMember:{type:"[Number]", notMustHave:true},//请假党员
participatingPartyMember:{type:"[Number]", notMustHave:true},//参与党员
leavePartyMember:{type:"[String]", notMustHave:true},//请假党员
participatingPartyMember:{type:"[String]", notMustHave:true},//参与党员
participationRecord:{type:"String", notMustHave:true},//活动记录
}
......@@ -47,7 +48,7 @@ export const UpdateActivityFormConfig = {
/**
* 使用端: 小程序端_党员入口
* 场景: 创建正式党员录入表单
* 备注: 全部非必填
* 备注:
*/
export const CreatePartyMemberFormConfig = {
name:{type:"String"},//姓名
......@@ -73,11 +74,10 @@ export const UpdateActivityFormConfig = {
* 备注: 全部非必填
*/
export const createPartyInformation = {
pid:{type:"Number", notMustHave:true},
informationType:{type:"Number", notMustHave:true},
title:{type:"String", notMustHave:true},
branch:{type:"String", notMustHave:true},
inforMationTime:{type:"Number", notMustHave:true},
branchName:{type:"Number", notMustHave:true},
informationTime:{type:"Number", notMustHave:true},
detailedInformation:{type:"String", notMustHave:true},
img:{type:"String", notMustHave:true}
}
\ No newline at end of file
......@@ -3,9 +3,20 @@ export let clientEnumConfig = {
/**
* 支部名称 branchName
*/
export enum BRANCHNAMETYPE {
牙防所第一支部 = 1,
牙防所第二支部,
牙防所第三支部,
牙防所第四支部
}
/**
* 党内职务 Party positions
*/
export enum PARTYPOSITIONS {
export enum PARTYPOSITIONSICON {
支部书记 = 1,
支部副书记,
纪检委员,
......@@ -17,13 +28,14 @@ export enum PARTYPOSITIONS {
}
/**
* 组织生活活动类型
* 党内职务 Party positions
*/
export enum TYPE {
正在进行 = 1,
即将开展,
已经开展,
全部
export enum PARTYPOSITIONS {
支部书记 = 1,
支部副书记,
纪检委员,
组织委员,
宣传委员
}
......@@ -31,9 +43,9 @@ export enum TYPE {
* 名册录入类型
*/
export enum ENTRYTYPE {
正式党员录入 = 1,
入党积极分子录入,
入党申请录入
正式党员 = 1,
入党积极分子,
预备党员
}
......
......@@ -11,7 +11,8 @@ export enum ERRORENUM {
数据无更新,
地址数据不完整,
身份验证失败,
非法登录
非法登录,
非党员账号
}
export enum ERRORCODEENUM {
......
......@@ -11,11 +11,11 @@
* 备注:
*/
export const partyInformationConfig = {
id:{key:"id"},
pId:{key:"pId"},
informationType:{key:"党建资讯类型"},
title:{key:"资讯标题"},
branch:{key:"支部"},
informationTime:{key:"资讯时间"},
branchName:{key:"支部名称"},
informationTime:{key:"资讯时间", changeDate:true},
img: {key:"图片"}
};
......@@ -26,9 +26,10 @@ export const partyInformationConfig = {
* 备注:
*/
export const activityInfoConfig = {
partyActivityType:{key:"党建活动类型"},
activityStartTime:{key:"活动开始时间"},
activityEndTime:{key:"活动结束时间"},
title:{key:"党建活动类型"},
partyActivityType:{key:"党建活动类型id"},
activityStartTime:{key:"活动开始时间", changeDate:true},
activityEndTime:{key:"活动结束时间", changeDate:true},
activityAdd:{key:"活动地点"},
activityHost: {key:"活动主持人"},
activityNoteTaker:{key:"活动记录人"},
......@@ -45,10 +46,10 @@ export const activityInfoConfig = {
* 备注:
*/
export const moveAboutInfoConfig = {
id:{key:"id"},
oId:{key:"oId"},
partyActivityType:{key:"党建活动类型"},
activityStartTime:{key:"活动时间"},
activityEndTime:{key:"活动结束时间"},
activityStartTime:{key:"活动时间", changeDate:true},
activityEndTime:{key:"活动结束时间", changeDate:true},
activityAdd:{key:"活动地点"},
activityStatus:{key:"活动状态"}
}
......
......@@ -11,11 +11,4 @@ export class ServerConfig {
/**小程序相关配置 */
getOpenIdUrl:string;
appId:string;
/**短信相关配置 */
smsSDKId:number;
smsAppKey:string;
smsSign:string;
smsModelChangePwd:number;
smsModelPointOut:number;
smsModelInitPointOut:number;
}
\ No newline at end of file
......@@ -15,9 +15,10 @@ const organizationalLifeSchema = new Schema({
activityAdd: String, //活动地点
activityHost: {type:[String], default:[]}, //活动主持人
activityNoteTaker:{type:[String], default:[]}, //活动记录人
leavePartyMember:[Number], //请假党员 非必填
participatingPartyMember:[Number], //参与党员
leavePartyMember:{type:[String], default:[]}, //请假党员 非必填
participatingPartyMember:{type:[String], default:[]}, //参与党员
participationRecord:String, //活动记录
branchName: Number, //支部名称
})
......@@ -61,50 +62,16 @@ export async function save(throwError=false) {
* @param param 查询参数
* @returns
*/
export async function findOrganizationalLifeList(param) {
export async function findOrganizationalLifeList(param:object) {
return await organizationalLifeModel.find(param);
}
/**
* 获取正在进行的组织生活列表
* 开始时间小于当前时间,结束时间大于当前时间
* gt:大于某个值的数据、lt:小于某个值的数据
* @returns
*/
export async function findAfootActivityList(partyActivityType:number) {
let nowTime = new Date().valueOf();
return await organizationalLifeModel.find({"$and":[ {"activityStartTime":{"$lt":(nowTime)}}, {"activityEndTime":{"$gt":(nowTime)}}, {partyActivityType} ]});
}
/**
* 获取即将开展的组织生活列表
* 开始时间大于当前时间
* @returns
*/
export async function findBeginInActivityList(partyActivityType:number) {
let nowTime = new Date().valueOf();
return await organizationalLifeModel.find({"activityStartTime":{"$gt":(nowTime)}, partyActivityType});
}
/**
* 获取已经开展的组织生活列表
* 结束时间小于当前时间
* @returns
*/
export async function findStartedActivityList(partyActivityType:number) {
let nowTime = new Date().valueOf();
return await organizationalLifeModel.find({"activityEndTime":{"$lt":(nowTime)}, partyActivityType});
}
/**
* 创建活动
* @param param 所添加表单 需要提前验证
*/
export async function createActivity(param) {
export async function createActivity(param:object) {
await organizationalLifeModel.create(param);
}
......@@ -114,7 +81,7 @@ export async function createActivity(param) {
* @param id id 唯一标识
* @returns
*/
export async function findEventDetails(oId) {
export async function findEventDetails(oId:number) {
return await organizationalLifeModel.findOne({oId});
}
......@@ -127,3 +94,13 @@ export async function findEventDetails(oId) {
export async function deleteActivity(oId:number) {
return await organizationalLifeModel.deleteOne({oId}).exec();
}
/**
* 获取符合条件的组织生活活动数量
* @param param 查询参数
* @returns number 数据数量
*/
export async function groupFindActivityCount(param:object) {
return await organizationalLifeModel.find(param).countDocuments();
}
\ No newline at end of file
......@@ -11,7 +11,7 @@ const partyInformationSchema = new Schema({
pId: {type:Number, index:{unique: true}}, //自增的id
informationType: Number, //党建资讯类型 1:医院文化、2:精神文明、3:科普知识、4、先进典型
title: String, //资讯标题
branch: String, //支部
branchName: Number, //支部名称
informationTime: Number, //资讯时间
detailedInformation: String, //资讯详细
img: {type:String, data:Buffer}, //图片
......@@ -53,10 +53,11 @@ export async function save(throwError=false) {
/**
* 根据党建资讯类型查询的党建资讯列表
* @param informationType 党建资讯类型 1:医院文化、2:精神文明、3:科普知识、4、先进典型
* @param branchName 支部id
* @returns
*/
export async function findPartyInformationListByType(informationType:number) {
return await partyInformationModel.find({informationType});
export async function findPartyInformationListByType(informationType:number, branchName:number) {
return await partyInformationModel.find({informationType, branchName});
}
......@@ -65,6 +66,6 @@ export async function findPartyInformationListByType(informationType:number) {
* @param param 所添加表单 需要提前验证
* @returns
*/
export async function createPartyInformation(param) {
export async function createPartyInformation(param:object) {
return await partyInformationModel.create(param);
}
\ No newline at end of file
......@@ -17,9 +17,10 @@ const partyMemberSchema = new Schema({
administrativePosition: Number, //行政职务 1:
remarks: String, //备注
entryType: Number, //名册录入类型 1:正式党员录入、2:入党积极分子录入、3:入党申请录入
partyPositions: [Number], //党内职务 多选 --正式党员录入 1:书记、2:副书记、3:纪检委员、4:组织委员、5:宣传委员、6:党员、7:入党积极分子、8:预备党员
partyPositions: [Number], //党内职务 多选 --正式党员录入 1:书记、2:副书记、3:纪检委员、4:组织委员、5:宣传委员
listedAsActivistsTime: Number, //列为积极份子时间 --入党积极份子录入
talkTime: Number, //谈话时间 --入党申请录入
branchName: Number, //支部名称
/**-----用户相关----- */
loginId: {type: String, index: true}, //登录账号
......@@ -67,7 +68,7 @@ export async function save(throwError=false) {
* @param param 查询参数
* @returns
*/
export async function findPartyMemberAll(param) {
export async function findPartyMemberAll(param:object) {
return await partyMemberModel.find(param);
}
......@@ -88,7 +89,7 @@ export async function findPartyMemberByLoginId(loginId:string) {
* @returns number 数据数量
*/
export async function groupFindPartyMemberCount(param:object) {
return await partyMemberModel.find(param).count();
return await partyMemberModel.find(param).countDocuments();
}
......@@ -97,14 +98,14 @@ export async function groupFindPartyMemberCount(param:object) {
* @param partyPositions 党内职务 [1, 2]
* @returns
*/
export async function getBaseListByPartyPositions(partyPositions) {
return await partyMemberModel.find({partyPositions:{$in: partyPositions }});
export async function getBaseListByPartyPositions(partyPositions:[number], branchName:number) {
return await partyMemberModel.find({partyPositions:{$in: partyPositions }, branchName});
}
/**
*
* @param id 根据id查询党员名称
* 根据id查询党员名称
* @param id 党员id
* @returns
*/
export async function getNameById(id:number) {
......@@ -117,7 +118,7 @@ export async function getNameById(id:number) {
* @param param entryType 党员类型
* @returns
*/
export async function getPartyMemberListByEntryType(param) {
export async function getPartyMemberListByEntryType(param:object) {
return await partyMemberModel.find(param);
}
......@@ -126,6 +127,6 @@ export async function getPartyMemberListByEntryType(param) {
* 创建正式党员信息
* @param param 所添加表单 需要提前验证
*/
export async function createPartyMember(param) {
export async function createPartyMember(param:object) {
return await partyMemberModel.create(param);
}
import { initConfig, systemConfig} from "./config/systemConfig";
import { initDB } from "./db/dbInit";
import { httpServer } from "./net/http_server";
import { getPwdMd5, getToken } from "./tools/system";
import { getPwdMd5, getToken, md5PwdStr } from "./tools/system";
async function lanuch() {
// test();
......@@ -15,9 +15,24 @@ async function lanuch() {
}
function test() {
let pwd = getPwdMd5("13572364589", "364589");
let token = getToken("13572364589");
let p = md5PwdStr("364792");
let pwd = getPwdMd5("18372364792", "d15285439a37af6194be4686ea1fed84");
let token = getToken("364764");
console.log();
}
lanuch();
let a = [
// "36dea1f3c44ab89798d3b3f7fb14667d",
// "f7be11973c1671079e702ae0adb661f1",
// "68ab8ceeed13831c7f8c09e24cce4f55",
// "f18a042255cfab614fad98bd45ab35b3",
// "952b91f0ce058bb282320bfac470adbf",
// "c1addb426c051200a141132c8344288e",
// "42fb19781c7c4b49cc1b688ba6c44502",
// "8841d2865336f378e07c7c7e292ab66c",
// "c0b6b38cdfacae5e511b4efababe7a0b",
// "c35caf37f74eb90ed8c79cb87be4d57b",
// "5a7f12ce6a584d35cac5b76c8b4fbd5a",
// "ee160a40b5f85883a5c89e6cc469108f"
]
\ No newline at end of file
......@@ -14,13 +14,14 @@ export async function checkAppletToken(req, res, next) {
if (!req.headers) req.headers = {};
const reqToken = req.headers.token;
const loginId = req.headers.loginId || "";
const userId = req.headers.userid || "";
if(!loginId) return next(new BizError(ERRORENUM.身份验证失败, `loginId:${loginId} token:${reqToken}`));
if(!userId) return next(new BizError(ERRORENUM.身份验证失败, `loginId:${userId} token:${reqToken}`));
let partyMemberInfo = await findPartyMemberAll({loginId});
if (!partyMemberInfo) return next(new BizError(ERRORENUM.非法登录, `loginId:${loginId} token:${reqToken}`));
let partyMemberInfo = await findPartyMemberAll({id:userId});
if (!partyMemberInfo) return next(new BizError(ERRORENUM.非法登录, `loginId:${userId} token:${reqToken}`));
req.headers.userid = partyMemberInfo.id;
//todo req.headers.userid = 唯一标识 partyMemberInfo.id
next();
}
\ No newline at end of file
/**
* 公共资源路由
*/
import * as organizationalLifeBiz from '../../biz/abi/organizationalLife';
import * as asyncHandler from 'express-async-handler';
export function setRouter(httpServer) {
httpServer.post('/abi/activity', asyncHandler(activity));
}
async function activity(req, res) {
let result = await organizationalLifeBiz.getActivityCount();
res.success(result);
}
\ No newline at end of file
......@@ -5,10 +5,11 @@
import * as baseBiz from '../../biz/applet/base';
import * as asyncHandler from 'express-async-handler';
import { eccReqParamater } from '../../util/verificationParam';
import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/partymember/home', asyncHandler(homeBase));
httpServer.post('/partymember/information', asyncHandler(informationBase));
httpServer.post('/partymember/home', checkAppletToken, asyncHandler(homeBase));
httpServer.post('/partymember/information', checkAppletToken, asyncHandler(informationBase));
}
......@@ -18,8 +19,8 @@ export function setRouter(httpServer) {
* @param res
*/
async function homeBase(req, res) {
let uId = req.headers.userid;
let baseInfo = await baseBiz.homeData(uId);
let branchName = parseInt(req.headers.branchid);
let baseInfo = await baseBiz.homeData(branchName);
res.success(baseInfo);
}
......@@ -30,9 +31,10 @@ async function homeBase(req, res) {
* @param res
*/
async function informationBase(req, res) {
let branchName = req.headers.branchid;
let reqConf = {informationType:'Number'};
let {informationType} = eccReqParamater(reqConf, req.body);
let informationInfo = await baseBiz.informationData(informationType);
let informationInfo = await baseBiz.informationData(informationType, branchName);
res.success(informationInfo);
}
\ No newline at end of file
......@@ -4,15 +4,17 @@
import * as organizationalLifeBiz from '../../biz/applet/partyMember/organizationalLife';
import * as asyncHandler from 'express-async-handler';
import { eccReqParamater } from '../../util/verificationParam';
import { eccReqParamater, testEccReqParamater } from '../../util/verificationParam';
import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/partymember/organizationallife/list', asyncHandler(organizationalLifeList));
httpServer.post('/partymember/organizationallife/create', asyncHandler(createOrganizationalLife));
httpServer.post('/partymember/organizationallife/details', asyncHandler(detailsList));
httpServer.post('/partymember/organizationallife/update', asyncHandler(updateOrganizationalLife));
httpServer.post('/partymember/organizationallife/list', checkAppletToken, asyncHandler(organizationalLifeList));
httpServer.post('/partymember/organizationallife/create', checkAppletToken, asyncHandler(createOrganizationalLife));
httpServer.post('/partymember/organizationallife/details', checkAppletToken, asyncHandler(detailsList));
httpServer.post('/partymember/organizationallife/update', checkAppletToken, asyncHandler(updateOrganizationalLife));
// httpServer.post('/applet/organizationallife/partymembernamelist', asyncHandler(getPartyMemberNameList));
httpServer.post('/partymember/organizationallife/partymembernamelist', asyncHandler(getAllPartyMember));
httpServer.post('/partymember/organizationallife/partymembernamelist', checkAppletToken, asyncHandler(getAllPartyMember));
httpServer.post('/partymember/organizationalllife/delete', checkAppletToken, asyncHandler(deleteOrganizationalLife));
}
......@@ -24,8 +26,9 @@ export function setRouter(httpServer) {
async function organizationalLifeList(req, res) {
let reqConf = {type:'Number', name:'Number'};
let {type, name} = eccReqParamater(reqConf, req.body, ["name"]);
let branchName = req.headers.branchid;
let result = await organizationalLifeBiz.getOrganizationalLifeList(type, name);
let result = await organizationalLifeBiz.getOrganizationalLifeList(type, name, branchName);
res.success(result);
}
......@@ -38,8 +41,9 @@ async function organizationalLifeList(req, res) {
async function createOrganizationalLife(req, res) {
let reqConf = {form: 'Object' };
let { form } = eccReqParamater(reqConf, req.body);
let branchName = req.headers.branchid;
let result = await organizationalLifeBiz.createOrganizationalLife(form);
let result = await organizationalLifeBiz.createOrganizationalLife(branchName, form);
res.success(result);
}
......@@ -96,3 +100,17 @@ async function getAllPartyMember(req, res) {
let result = await organizationalLifeBiz.getAllPartyMember();
res.success(result);
}
/**
* 删除组织生活活动详情
* @param req
* @param res
*/
async function deleteOrganizationalLife(req, res) {
let reqConf = {oId: "Number"};
let {oId} = eccReqParamater(reqConf, req.body);
let result = await organizationalLifeBiz.deleteOrganizationalLife(oId);
res.success(result);
}
......@@ -5,9 +5,10 @@
import * as partyInforMationBiz from '../../biz/applet/partyMember/partyInforMation';
import * as asyncHandler from 'express-async-handler';
import { eccReqParamater } from '../../util/verificationParam';
import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/partymember/partyInforMation/create', asyncHandler(createPartyInformation));
httpServer.post('/partymember/partyInforMation/create', checkAppletToken, asyncHandler(createPartyInformation));
}
......
......@@ -5,9 +5,10 @@
import * as partyMemberBiz from '../../biz/applet/partyMember/partyMember';
import * as asyncHandler from 'express-async-handler';
import { eccReqParamater } from '../../util/verificationParam';
import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/partymember/partymember/create', asyncHandler(createPartyMenber));
httpServer.post('/partymember/partymember/create', checkAppletToken, asyncHandler(createPartyMenber));
}
......
......@@ -4,6 +4,7 @@
import * as asyncHandler from 'express-async-handler';
import * as configEnum from "../config/enum";
import * as clientConfigEnum from "../config/clientEnum";
export function setRouter(httpServer) {
httpServer.post('/public/partypositions', asyncHandler(partyPositions));
......@@ -39,11 +40,11 @@ function partyPositions(req, res) {
*/
function type(req, res) {
let dataList = [];
for (let key in configEnum.TYPE) {
for (let key in clientConfigEnum.TYPE) {
let anyKey:any = key;
if (isNaN(anyKey)) {
let keyStr = key;
dataList.push({key:keyStr, value:configEnum.TYPE[key]});
dataList.push({key:keyStr, value:clientConfigEnum.TYPE[key]});
}
}
res.success(dataList);
......
......@@ -8,6 +8,7 @@ import * as appletOrganizationalLifeRouters from '../routers/applet/organization
import * as appletPartyMemberRouters from '../routers/applet/partyMember';
import * as appletPartyInforMationRouters from '../routers/applet/partyInforMation';
import * as publicRouters from '../routers/public';
import * as abiOrganizationalLifeRouters from '../routers/abi/organizationalLife';
export function setRouter(httpServer){
/**小程序端 党员入口 */
......@@ -20,4 +21,7 @@ export function setRouter(httpServer){
/**小程序端 公共资源 */
publicRouters.setRouter(httpServer);
/**ABI */
abiOrganizationalLifeRouters.setRouter(httpServer);
}
\ No newline at end of file
......@@ -205,3 +205,15 @@ export function eccReqParamater(conf:object, param, skipKeys?) {
}
return param;
}
export function testEccReqParamater(conf:object, param, skipKeys?) {
skipKeys = skipKeys || [];
let confKey = [];
for (let key in conf) {
confKey.push(key);
}
return param;
}
\ 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