Conception des champs de données
`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',
}
`
mise en œuvre de base
`async getTaskCountByType(userId) { let status0Cnt = wait TaskModel.count({ TASK_STATUS : 0, TASK_USER_ID : userId }); laissez status1Cnt = wait TaskModel.count({ TASK_STATUS : 1, TASK_USER_ID : userId }); laissez status2Cnt = wait TaskModel.count({ TASK_STATUS : 2, TASK_USER_ID : userId }); let task = { status0Cnt, status1Cnt, status2Cnt } renvoie la tâche ; }
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;
}
`
Interface utilisateur du propriétaire
Interface utilisateur côté propriété
Code source
adresse du code source du gîte
Linus a pris sur lui d'empêcher les développeurs du noyau de remplacer les tabulations par des espaces. Son père est l'un des rares dirigeants capables d'écrire du code, son deuxième fils est directeur du département de technologie open source et son plus jeune fils est un noyau open source. contributeur. Robin Li : Le langage naturel deviendra un nouveau langage de programmation universel. Le modèle open source prendra de plus en plus de retard sur Huawei : il faudra 1 an pour migrer complètement 5 000 applications mobiles couramment utilisées vers Java, qui est le langage le plus enclin . vulnérabilités tierces. L'éditeur de texte riche Quill 2.0 a été publié avec des fonctionnalités, une fiabilité et des développeurs. L'expérience a été grandement améliorée. Bien que l'ouverture soit terminée, Meta Llama 3 a été officiellement publié. la source de Laoxiangji n'est pas le code, les raisons derrière cela sont très réconfortantes. Google a annoncé une restructuration à grande échelle.
{{o.name}}
{{m.nom}}