从0到100:小区物业报修小程序开发笔记

数据字段设计

`TaskModel.DB_STRUCTURE = { _pid: 'string|true', TASK_ID: 'string|true', TASK_USER_ID: 'string|true|comment=用户ID',

TASK_STATUS: 'int|true|default=0|comment=状态 0=待处理,1=处理中 9=已办结',

TASK_FORMS: 'array|true|default=[]',
TASK_OBJ: 'object|true|default={}',

TASK_LAST_TIME: 'int|true|default=0',

TASK_ADD_TIME: 'int|true',
TASK_EDIT_TIME: 'int|true',
TASK_ADD_IP: 'string|false',
TASK_EDIT_IP: 'string|false',

}; UserModel.DB_STRUCTURE = { _pid: 'string|true', USER_ID: 'string|true',

USER_MINI_OPENID: 'string|true|comment=小程序openid',
USER_STATUS: 'int|true|default=1|comment=状态 0=待审核,1=正常,8=审核未过,9=禁用',
USER_CHECK_REASON: 'string|false|comment=审核未过的理由',

USER_NAME: 'string|false|comment=用户昵称',
USER_MOBILE: 'string|false|comment=联系电话',

USER_FORMS: 'array|true|default=[]',
USER_OBJ: 'object|true|default={}',

USER_LOGIN_CNT: 'int|true|default=0|comment=登陆次数',
USER_LOGIN_TIME: 'int|false|comment=最近登录时间',


USER_ADD_TIME: 'int|true',
USER_ADD_IP: 'string|false',

USER_EDIT_TIME: 'int|true',
USER_EDIT_IP: 'string|false',

}

`

核心实现

`async getTaskCountByType(userId) { let status0Cnt = await TaskModel.count({ TASK_STATUS: 0, TASK_USER_ID: userId }); let status1Cnt = await TaskModel.count({ TASK_STATUS: 1, TASK_USER_ID: userId }); let status2Cnt = await TaskModel.count({ TASK_STATUS: 2, TASK_USER_ID: userId }); let task = { status0Cnt, status1Cnt, status2Cnt } return task; }

async getTaskDetail(userId, id, isAdmin = false) {
	let where = {
		_id: id
	}
	if (!isAdmin) where.TASK_USER_ID = userId;
	return await TaskModel.getOne(where);
}


/**添加 */
async insertTask(userId, {
	forms
}) {

	// 赋值 
	let data = {};
	data.TASK_USER_ID = userId;

	data.TASK_OBJ = dataUtil.dbForms2Obj(forms);
	data.TASK_FORMS = forms;

	let id = await TaskModel.insert(data);

	return {
		id
	};
}


/**修改 */
async editTask(userId, {
	id,
	forms
}) {
	// 异步处理 新旧文件
	let oldForms = await TaskModel.getOneField(id, 'TASK_FORMS');
	if (!oldForms) return;
	cloudUtil.handlerCloudFilesForForms(oldForms, forms);

	// 赋值 
	let data = {};
	data.TASK_USER_ID = userId;
	data.TASK_OBJ = dataUtil.dbForms2Obj(forms);
	data.TASK_FORMS = forms;

	await TaskModel.edit(id, data);
}

// 更新forms信息
async updateTaskForms({
	id,
	hasImageForms
}) {
	await TaskModel.editForms(id, 'TASK_FORMS', 'TASK_OBJ', hasImageForms);
}

/**删除数据 */
async delTask(userId, id, isAdmin) {
	let where = {
		_id: id
	}
	if (!isAdmin) where.TASK_USER_ID = userId;

	// 异步处理 新旧文件
	let task = await TaskModel.getOne(id, 'TASK_FORMS');
	if (!task) return;
	cloudUtil.handlerCloudFilesForForms(task.TASK_FORMS, []);

	await TaskModel.del(where);

}


/** 取得我的 */
async getMyTaskList(userId, {
	search, // 搜索条件
	sortType, // 搜索菜单
	sortVal, // 搜索菜单
	orderBy, // 排序 
	page,
	size,
	isTotal = true,
	oldTotal
}) {
	orderBy = orderBy || {
		'TASK_ADD_TIME': 'desc'
	};
	let fields = '*';

	let where = {};
	where.and = {
		_pid: this.getProjectId(), //复杂的查询在此处标注PID 
		TASK_USER_ID: userId
	};

	if (util.isDefined(search) && search) {
		where.or = [{ ['TASK_OBJ.title']: ['like', search] }];
	} else if (sortType && sortVal !== '') {
		// 搜索菜单
		switch (sortType) {
			case 'level': {
				where.and['TASK_OBJ.level'] = sortVal;
				break;
			}
			case 'type': {
				where.and['TASK_OBJ.type'] = sortVal;
				break;
			}
			case 'status': {
				where.and.TASK_STATUS = Number(sortVal);
				break;
			}
			case 'sort': {
				orderBy = this.fmtOrderBySort(sortVal, 'TASK_ADD_TIME');
				break;
			}
		}
	}
	let result = await TaskModel.getList(where, fields, orderBy, page, size, isTotal, oldTotal);

	return result;
}

`

业主端 UI

物业端UI

源码

gitee源码地址

Linus 亲自动手,阻止内核开发者用空格替换制表符 父亲是少数会写代码的领导人、次子是开源科技部主管、幼子是开源核心贡献者 李彦宏:自然语言将成为新的通用编程语言、开源模型会越来越落后 华为:用 1 年时间将 5000 个常用手机应用全面迁移至鸿蒙 Java 是最容易出现第三方漏洞的语言 富文本编辑器 Quill 2.0 重磅发布,特性、可靠性与开发者体验大幅提升 马化腾周鸿祎握手“泯恩仇” Meta Llama 3 正式发布 虽然老乡鸡开源的不是代码,但背后的原因却让人很暖心 谷歌宣布进行大规模重组
{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/3808186/blog/8702941
今日推荐