Commit 0160f4fd by 孙香冬

no message

parent 3db26da4
/**
* 后台管理
*/
/**
* 登录
......
/**
* 小程序
* 首页基础数据
*/
import * as partyMemberData from '../../data/partyMember';
import * as partyInformationData from '../../data/partyInformation';
import * as configEnum from "../../config/enum";
import * as splitResultConfig from "../../config/splitResultConfig";
import { extractData } from '../../util/piecemeal';
import { changeEnumValue, eccEnumValue } from '../../util/verificationEnum';
import { BizError } from '../../util/bizError';
import { ERRORENUM } from '../../config/errorEnum';
/**
* 主页基础数据
*/
export async function homeData() {
/**主页基础数据 */
let baseInfo:any = {};
/**党员总数 */
let partyMemberNum = await partyMemberData.groupFindPartyMemberCount({});
/**党建指令指数 */
let massIndex = 87.6;
/**党内职务人员 */
let branchSecretary = getPartyPositions(configEnum.PARTYPOSITIONS.支部书记);
let deputySecretary = getPartyPositions(configEnum.PARTYPOSITIONS.支部副书记);
let memberOrganization = getPartyPositions(configEnum.PARTYPOSITIONS.组织委员);
let memberAdvocacy = getPartyPositions(configEnum.PARTYPOSITIONS.宣传委员);
let disciplineInspection = getPartyPositions(configEnum.PARTYPOSITIONS.纪检委员);
baseInfo = {
partyMemberNum,
massIndex,
partyPositions: [
{
key: "支部书记",
list: branchSecretary
},
{
key: "支部副书记",
list: deputySecretary
},
{
key: "组织委员",
list: memberOrganization
},
{
key: "宣传委员",
list: memberAdvocacy
},
{
key: "纪检委员",
list: disciplineInspection
}
]
}
return baseInfo;
}
/**
* 根据党建职务查询当职人员
* @param type 党建职务
* @returns ["李一", "王二"] 当职人员姓名
*/
async function getPartyPositions(type) {
let result:any = [];
let dataInfo = await partyMemberData.getBaseListByPartyPositions(type);
if (!dataInfo) throw new BizError(ERRORENUM.未找到数据, `查询党建职务时 ${type} 不存在`);
dataInfo.forEach( info => {
result.push(info.name);
})
return result;
}
/**
* 根据资讯类型查询党建资讯列表
* @param informationType 党建资讯类型
* @returns
*/
export async function informationData(informationType) {
let selectParam:any = {};
if (informationType) {
eccEnumValue("党建资讯列表查询", "资讯类型", configEnum.INFORMATIONTYPE, informationType);
selectParam.informationType = informationType;
}
/**医院文化 */
let partyInformationInfo = await partyInformationData.findPartyInformationList(selectParam);
if (!partyInformationInfo) throw new BizError(ERRORENUM.未找到数据, `查询党建资讯时 ${selectParam.informationType} 不存在`);
let dataList = [];
partyInformationInfo.forEach( info => {
let changeData:any = extractData(splitResultConfig.partyInformationConfig, info, true);
changeData.informationType = changeEnumValue(configEnum.INFORMATIONTYPE, changeData.informationType);
dataList.push(changeData);
})
return dataList;
}
/**
* 小程序
* 组织生活
*/
import moment = require("moment");
import * as organizationalLifeData from "../../../data/organizationalLife";
import * as configEnum from "../../../config/enum";
import { eccFormParam } from "../../../util/verificationParam";
import * as eccFormParamConfig from "../../../config/eccFormParamConfig";
import * as verificationEnumTools from "../../../util/verificationEnum";
import { ERRORENUM } from "../../../config/errorEnum";
import { BizError } from "../../../util/bizError";
import { extractData } from "../../../util/piecemeal";
import * as splitResultConfig from "../../../config/splitResultConfig";
/**
* 组织生活列表
* @param status 活动状态 全部、正在进行、即将开展、已经开展
* @return {allActivity, afootActivity, beginInActivity, startedActivity}
* 返回说明 {全部活动列表, 正在进行活动列表, 即将开展活动列表, 已经开展活动列表}
*/
export async function getOrganizationalLifeList() {
let organizationalLifeInfo = await organizationalLifeData.findOrganizationalLifeList({});
/**全部活动列表 */
let allActivity = [];
/**正在进行活动列表 */
let afootActivity = [];
/**即将开展活动列表 */
let beginInActivity = [];
/**已经开展活动列表 */
let startedActivity = [];
organizationalLifeInfo.forEach( info => {
let activityStatus = getActivityStatus(info.activityStartTime, info.activityEndTime)
let activityTime = "2023.05.17 14:00--16:00"; // -----------todo 活动时间 格式不确定,之后修改---------------------
allActivity.push({
_id: info._id,
partyActivityType: info.partyActivityType,
activityTime,
activityAdd: info.activityAdd,
activityStatus
});
switch (activityStatus) {
case "正在进行":
afootActivity.push({
_id: info._id,
partyActivityType: info.partyActivityType,
activityTime,
activityAdd: info.activityAdd,
activityStatus
});
break;
case "即将开展":
beginInActivity.push({
_id: info._id,
partyActivityType: info.partyActivityType,
activityTime,
activityAdd: info.activityAdd,
activityStatus
});
break;
case "已经开展":
startedActivity.push({
_id: info._id,
partyActivityType: info.partyActivityType,
activityTime,
activityAdd: info.activityAdd,
activityStatus
});
break;
}
})
return {allActivity, afootActivity, beginInActivity, startedActivity};
}
/**
* 组织生活活动状态
* 活动状态 1:正在进行、2:即将开展、3:已经开展
* @param activityStartTime 活动开始时间
* @param activityEndTime 活动结束时间
* @return status --活动状态
*/
function getActivityStatus(activityStartTime, activityEndTime) {
let nowTime = new Date().valueOf();
let startTime = moment(activityStartTime).format("YYYY.MM.DD HH:mm");
let endTime = moment(activityEndTime).format("YYYY.MM.DD HH:mm");
let underway = moment().isBetween(startTime, endTime); //true:正在进行
let status;
if (underway) {
status = "正在进行";
}
if (nowTime < activityStartTime) {
status = "即将开展";
}
if (nowTime > activityStartTime) {
status = "已经开展";
}
return status
}
/**
* 创建组织生活活动
* @param param {党建活动类型, 活动开始时间, 活动结束时间, 活动地点, 活动主持人, 活动记录人, 请假党员, 参与党员, 活动记录}
* 参数类型 { number, number, number, string, [string], [string], [string], [string], string}
* @return {isSuccess: true}
*/
export async function createActivity(param) {
eccFormParam("创建组织生活活动", eccFormParamConfig.CreateActivityConfig, param)
verificationEnumTools.eccEnumValue('创建组织生活活动的党建活动类型', 'partyActivityType', configEnum.ACTIVITYTYPE, param.partyActivityType);
await organizationalLifeData.createActivity(param);
return {isSuccess: true};
}
export async function getActivityById(_id) {
let activityInfo = await organizationalLifeData.findEventDetails(_id);
if (!activityInfo ) throw new BizError(ERRORENUM.未找到数据, `库中不存在${_id}这个组织生活活动`);
/**截取返回字段 */
let data = extractData(splitResultConfig.activityInfoConfig, activityInfo, false);
}
\ No newline at end of file
/**
* 小程序
*/
import { ERRORENUM } from '../../config/errorEnum';
import * as partyMemberData from '../../data/partyMember';
import * as sysTools from "../../tools/system";
import { BizError } from '../../util/bizError';
/**
* 党员入口登录
* @param loginId 登录账号
* @param pwd 登录密码
* @returns loginUserInfo: {loginId, firstLogin, token} 登录后的信息
*/
export async function login(loginId:string, pwd:string) {
let loginInfo = await partyMemberData.findPartyMemberByLoginId(loginId);
if (!loginInfo) throw new BizError(ERRORENUM.账号不存在);
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,
firstLogin: !loginInfo.firstLoginIsChangePwd,
token: Token
};
loginInfo.token = Token;
loginInfo.tokenMs = new Date().valueOf;
await loginInfo.save();
return loginUserInfo;
}
/**
* 首次登录修改密码
* @param loginId 登录账号
* @param pwd 新密码
* @param confirmPwd 确认密码
* @returns {isSuccess: true}
*/
export async function firstLoginChangePwd(loginId:string, pwd:string, confirmPwd:string) {
if (pwd != confirmPwd) throw new BizError(ERRORENUM.密码不一致);
if (pwd.search(/^[A-Za-z0-9]{6,18}$/) < 0) throw new BizError(ERRORENUM.密码只能由618位字符和数字组成);
let partyMemberInfo = await partyMemberData.findPartyMemberByLoginId(loginId);
if (partyMemberInfo) throw new BizError(ERRORENUM.未找到数据);
if (partyMemberInfo.firstLoginIsChangePwd) throw new BizError(ERRORENUM.不能重复修改密码, `重复调用了首次登录之后的修改密码接口${loginId}`);
partyMemberInfo.pwd = sysTools.getPwdMd5(loginId, sysTools.md5PwdStr(pwd));
partyMemberInfo.firstLoginChangePwd = true;
await partyMemberInfo.save();
return {isSuccess: true};
}
\ No newline at end of file
......@@ -8,14 +8,18 @@
/**
* 使用端: 小程序端【孵化器入口】
* 场景: 更新孵化器基础数据表单
* 使用端: 小程序端
* 场景: 创建组织生活活动表单
* 备注:
*/
export const BaseParamUpdateConfig = {
virtualEnterpriseNum:{type:"Number"},//虚拟企业数量
incubatedAcreage:{type:"Number", notMustHave:true},//在孵面积(㎡)
acreageTotal:{type:"Number", notMustHave:true},//孵化器总面积(㎡)
acreagePersonalUse:{type:"Number", notMustHave:true},//孵化器自用面积(㎡)
hatchingGround:{type:"[Object]", notMustHave:true},//经备案孵化场地
export const CreateActivityConfig = {
partyActivityType:{type:"Number"},//党建活动类型
activityStartTime:{type:"Number"},//活动开始时间
activityEndTime:{type:"Number"},//活动结束时间
activityAdd:{type:"String"},//活动地点
activityHost:{type:"[Object]"},//活动主持人
activityNoteTaker:{type:"[Object]"},//活动记录人
leavePartyMember:{type:"[Object]", notMustHave:true},//请假党员
participatingPartyMember:{type:"[Object]", notMustHave:true},//参与党员
participationRecord:{type:"String", notMustHave:true},//活动记录
};
\ No newline at end of file
/**更新状态 */
export enum UPDATESTATE {
未填报 = 1,
已填报 = 2
/**
* 党内职务 Party positions
*/
export enum PARTYPOSITIONS {
支部书记 = 1,
支部副书记,
纪检委员,
组织委员,
宣传委员
}
/**
* 管理后台导出
* 名册录入类型
*/
export enum OUTPUTTYPE {
当前数据 = 1,
全部数据
export enum ENTRYTYPE {
正式党员录入 = 1,
入党积极分子录入,
入党申请录入
}
/**
* 党建活动类型
*/
export enum ACTIVITYTYPE {
日常教育培训 = 1,
主题党日活动,
骨干队伍培训,
支部工作会,
二十大精神,
三会一课
}
/**
* 党建咨询类型
*/
export enum INFORMATIONTYPE {
医院文化 = 1,
精神文明,
科普知识,
先进典型
}
/**
* 最高学历
*/
export enum DEGREE {
......@@ -40,12 +67,3 @@ export enum CODETYPE {
修改密码 = 1,
}
/**
* 短信类型
*/
export enum SMSTYPE {
修改密码 = 1,
信息填报提醒,
创建孵化器提醒
}
\ No newline at end of file
/**
* 组织生活表
* organizationalLife
*/
import { Schema } from "mongoose";
import {yfsDB} from '../db/mongo/dbInit';
const organizationalLifeSchema = new Schema({
_id: {type: String, index:true},
/**党建活动类型 1:日常教育培训、2:主题党日活动、3:骨干队伍培训、4:支部工作会、5:二十大精神、6:三会一课 */
partyActivityType: Number,
/**活动开始时间 */
activityStartTime: Number,
/**活动结束时间 */
activityEndTime: Number,
/**活动地点 */
activityAdd: String,
/**活动主持人 */
activityHost: [String],
/**活动记录人 */
activityNoteTaker:[String],
/**请假党员 非必填*/
leavePartyMember:[String],
/**参与党员 */
participatingPartyMember:[String],
/**活动记录 */
participationRecord:String,
})
var organizationalLifeModel;
export function initModel(){
organizationalLifeModel = yfsDB.model('organizationalLife', organizationalLifeSchema);
organizationalLifeModel.selectOnceData = async function (paramater:object) {
let selectInfo = await organizationalLifeModel.findOne(paramater).exec();
if (selectInfo) {
if (!selectInfo.runSave) {
selectInfo.runSave = selectInfo.save;
selectInfo.save = save.bind(selectInfo)
}
}
return selectInfo;
}
}
export async function save(throwError=false) {
if (!this.isModified()) return;
await this.runSave({validateBeforeSave:false}).catch(err=>{
console.log(err);
});
}
/**
* 获取符合条件的党建资讯列表
* @param selectParam 查询参数
* @returns
*/
export async function findOrganizationalLifeList(selectParam) {
return await organizationalLifeModel.find(selectParam);
}
/**
* 创建活动
* @param param 所添加表单 需要提前验证
*/
export async function createActivity(param) {
await organizationalLifeModel.create(param);
}
/**
* 获取活动详情
* @param _id id 唯一标识
* @returns
*/
export async function findEventDetails(_id) {
return await organizationalLifeModel.find({_id});
}
\ No newline at end of file
/**
* 党建资讯
* partyInformation
*/
import { Schema } from "mongoose";
import {yfsDB} from '../db/mongo/dbInit';
const partyInformationSchema = new Schema({
_id: {type: String, index:true},
/**党建资讯类型 1:医院文化、2:精神文明、3:科普知识、4、先进典型 */
informationType: Number,
/**资讯标题 */
title: String,
/**支部 */
branch: String,
/**资讯时间 */
informationTime: Number,
/**资讯详细 */
detailedInformation: String,
/**图片 */
img: String,
})
var partyInformationModel;
export function initModel(){
partyInformationModel = yfsDB.model('partyInformation', partyInformationSchema);
partyInformationModel.selectOnceData = async function (paramater:object) {
let selectInfo = await partyInformationModel.findOne(paramater).exec();
if (selectInfo) {
if (!selectInfo.runSave) {
selectInfo.runSave = selectInfo.save;
selectInfo.save = save.bind(selectInfo)
}
}
return selectInfo;
}
}
export async function save(throwError=false) {
if (!this.isModified()) return;
await this.runSave({validateBeforeSave:false}).catch(err=>{
console.log(err);
});
}
/**
* 获取符合条件的党建资讯列表
* @param selectParam 查询参数
* @returns
*/
export async function findPartyInformationList(selectParam) {
return await partyInformationModel.find(selectParam);
}
/**
* 党员基本信息表
*/
import { Schema } from "mongoose";
import {yfsDB} from '../db/mongo/dbInit';
const partyMemberSchema = new Schema({
_id: {type: String, index:true},
/**姓名 必填 */
name: String,
/**性别 0:男、1:女 必填 */
sex: Number,
/**出生年月 必填 */
birthDate: Number,
/**手机号码 必填 */
phone: Number,
/**文化程度 必填 */
levelOfEducation: Number,
/**入党时间 必填 */
partyJoiningTime: Number,
/**行政职务 必填 1: */
administrativePosition: Number,
/**备注 非必填 */
remarks: String,
/**名册录入类型 1:正式党员录入、2:入党积极分子录入、3:入党申请录入 */
entryType: Number,
/**党内职务 多选 --正式党员录入 1:书记、2:副书记、3:纪检委员、4:组织委员、5:宣传委员 */
partyPositions: [Number],
/**列为积极份子时间 --入党积极份子录入 */
listedAsActivistsTime: Number,
/**谈话时间 --入党申请录入 */
talkTime: Number,
/**-----用户相关----- */
/**登录账号 */
loginId: {type: String, index: true},
/**密码 */
pwd: String,
token:{type:String, index:true},
tokenMs:Number,
/**首次登录是否修改密码 */
firstLoginIsChangePwd:{type:Boolean, default:false},
})
var partyMemberModel;
export function initModel(){
partyMemberModel = yfsDB.model('partyMember', partyMemberSchema);
partyMemberModel.selectOnceData = async function (paramater:object) {
let selectInfo = await partyMemberModel.findOne(paramater).exec();
if (selectInfo) {
if (!selectInfo.runSave) {
selectInfo.runSave = selectInfo.save;
selectInfo.save = save.bind(selectInfo)
}
}
return selectInfo;
}
}
export async function save(throwError=false) {
if (!this.isModified()) return;
await this.runSave({validateBeforeSave:false}).catch(err=>{
console.log(err);
});
}
export async function findPartyMemberAll() {
return await partyMemberModel.find({});
}
/**
* 通过登录账号查询党员信息
* @param loginId 登录账号
* @returns
*/
export async function findPartyMemberByLoginId(loginId:string) {
return await partyMemberModel.selectOnceData({loginId});
}
/**
* 获取符合条件的党员数量
* @param selectParam 查询参数
* @returns number 数据数量
*/
export async function groupFindPartyMemberCount(selectParam) {
return await partyMemberModel.find(selectParam).count();
}
/**
* 根据党内职务查询在职人员信息
* @param partyPositions 党内职务
* @returns
*/
export async function getBaseListByPartyPositions(partyPositions) {
return await partyMemberModel.find({partyPositions});
}
......@@ -4,13 +4,13 @@ import { systemConfig } from "../../config/serverConfig";
import { BizError } from "../../util/bizError";
import { createDbConnect } from "./dbConnect";
import { initTable } from "./tableInit";
var baseDB;
var yfsDB;
export async function initDB() {
//如果配置了mongoServerConstVal 才会连接mongo
if (systemConfig.mongodbStr) {
console.log(systemConfig.mongodbStr, ' 连接成功')
baseDB = await createDbConnect(systemConfig.mongodbStr).catch(err => {
yfsDB = await createDbConnect(systemConfig.mongodbStr).catch(err => {
throw err
});
......@@ -22,4 +22,4 @@ export async function initDB() {
}
export { baseDB };
export { yfsDB };
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