123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383 |
- const connection = require('../sql');
- class PagesService {
- async listCount(keyword, userId, projectId) {
- let statement = '';
- if (projectId) {
- statement = `
- SELECT
- count(p.id) total
- FROM
- pages p
- LEFT JOIN
- pages_role pr
- ON
- p.project_id = pr.page_id and pr.user_id = ${userId}
- WHERE
- (p.name like COALESCE(CONCAT('%',?,'%'), p.name) OR ? IS NULL)
- AND
- p.project_id = ${projectId}
- AND
- (pr.page_id IS NOT NULL OR p.user_id = ${userId})`;
- } else {
- statement = `
- SELECT
- count(p.id) as total
- FROM
- pages p
- LEFT JOIN
- pages_role pr
- ON
- p.project_id = pr.page_id and pr.user_id = ${userId}
- WHERE
- (
- (p.name like COALESCE(CONCAT('%',?,'%'), p.name) OR ? IS NULL)
- AND p.user_id = ${userId}
- )
- AND
- (pr.page_id IS NOT NULL OR p.user_id = ${userId})
- `;
- }
- const [result] = await connection.execute(statement, [keyword || null, keyword || null]);
- return result[0];
- }
- async list(pageNum, pageSize, keyword, userId, projectId) {
- const offset = (+pageNum - 1) * pageSize + '';
- const limit = pageSize;
- let statement = '';
- if (projectId) {
- statement = `
- SELECT
- p.id,
- p.name,
- p.user_id as userId,
- p.remark,
- p.app_type as appType,
- p.is_public as isPublic,
- p.is_edit as isEdit,
- p.preview_img as previewImg,
- p.stg_publish_id as stgPublishId,
- p.pre_publish_id as prePublishId,
- p.prd_publish_id as prdPublishId,
- p.stg_state as stgState,
- p.pre_state as preState,
- p.prd_state as prdState,
- p.project_id as projectId,
- p.updated_at as updatedAt,
- SUBSTRING_INDEX(p.user_name, '@', 1) as userName
- FROM
- pages p
- LEFT JOIN
- pages_role pr
- ON
- p.project_id = pr.page_id and pr.user_id = ${userId}
- WHERE
- (p.name like COALESCE(CONCAT('%',?,'%'), p.name) OR ? IS NULL)
- AND
- p.project_id = ${projectId}
- AND
- (pr.page_id IS NOT NULL OR p.user_id = ${userId})
- ORDER BY
- p.updated_at DESC LIMIT ${offset},${limit};`;
- } else {
- statement = `
- SELECT
- p.id,
- p.name,
- p.user_id as userId,
- p.remark,
- p.app_type as appType,
- p.is_public as isPublic,
- p.is_edit as isEdit,
- p.preview_img as previewImg,
- p.stg_publish_id as stgPublishId,
- p.pre_publish_id as prePublishId,
- p.prd_publish_id as prdPublishId,
- p.stg_state as stgState,
- p.pre_state as preState,
- p.prd_state as prdState,
- p.project_id as projectId,
- p.updated_at as updatedAt,
- SUBSTRING_INDEX(p.user_name, '@', 1) as userName
- FROM
- pages p
- LEFT JOIN
- pages_role pr
- ON
- pr.user_id = ${userId} and pr.page_id = p.id
- WHERE
- (p.name like COALESCE(CONCAT('%',?,'%'), p.name) OR ? IS NULL)
- AND
- (p.user_id = ${userId} OR pr.page_id IS NOT NULL)
- ORDER BY
- p.updated_at DESC LIMIT ${offset},${limit};`;
- }
- const [result] = await connection.execute(statement, [keyword || null, keyword || null]);
- return result;
- }
- // 根据模板项目ID查询页面ID
- async getPageIdsByProjectId(projectId) {
- const statement = `
- SELECT
- id
- FROM
- pages
- WHERE
- project_id = ?;
- `;
- const [result] = await connection.execute(statement, [projectId]);
- return result;
- }
- // 查询项目总条数:mars-admin
- async getPageCount(isTemplate, userId) {
- let statement = `
- SELECT
- count(id) total
- FROM
- pages
- WHERE
- 1 = 1
- `;
- if (isTemplate !== '') {
- statement += ` and is_template = ${isTemplate}`;
- }
- if (userId) {
- statement += ` and user_id = ${userId}`;
- }
- const [result] = await connection.execute(statement, []);
- return result[0];
- }
- // 查询页面总条数:mars-admin
- async getPageList(pageNum, pageSize, isTemplate, userId) {
- const offset = (+pageNum - 1) * pageSize + '';
- let statement = `
- SELECT
- id,
- name,
- user_id as userId,
- user_name as userName,
- remark,
- app_type as appType,
- is_template as isTemplate,
- is_public as isPublic,
- is_edit as isEdit,
- preview_img as previewImg,
- project_id as projectId,
- updated_at as updatedAt,
- created_at as createdAt
- FROM
- pages
- WHERE
- 1 = 1
- `;
- if (isTemplate !== '') {
- statement += ` and is_template = ${isTemplate}`;
- }
- if (userId) {
- statement += ` and user_id = ${userId}`;
- }
- statement += ` LIMIT ${offset}, ${pageSize}`;
- const [result] = await connection.execute(statement, []);
- return result;
- }
- // 查询页面模板总条数
- async listPageTemplateCount(keyword) {
- const statement = "SELECT COUNT(`id`) total FROM pages WHERE (name like COALESCE(CONCAT('%',?,'%'), name) OR ? IS NULL) AND is_public = 3;";
- const [result] = await connection.execute(statement, [keyword || null, keyword || null]);
- return result[0];
- }
- // 查询页面模板
- async listPageTemplate(pageNum, pageSize, keyword) {
- const offset = (+pageNum - 1) * pageSize + '';
- const statement = `
- SELECT
- id,
- name,
- user_id as userId,
- remark,
- app_type as appType,
- is_public as isPublic,
- is_edit as isEdit,
- preview_img as previewImg,
- stg_publish_id as stgPublishId,
- stg_state as stgState,
- project_id as projectId,
- updated_at as updatedAt,
- SUBSTRING_INDEX(user_name, '@', 1) as userName
- FROM
- pages
- WHERE
- (name like COALESCE(CONCAT('%',?,'%'), name) OR ? IS NULL)
- AND
- is_public = 3
- ORDER BY
- updated_at DESC LIMIT ?,?;`;
- const [result] = await connection.execute(statement, [keyword || null, keyword || null, offset, pageSize]);
- return result;
- }
- async getPageInfoById(id) {
- const statement = `
- SELECT
- id,
- name,
- user_id as userId,
- user_name as userName,
- remark,
- app_type as appType,
- is_public as isPublic,
- is_edit as isEdit,
- preview_img as previewImg,
- page_data as pageData,
- stg_publish_id as stgPublishId,
- pre_publish_id as prePublishId,
- prd_publish_id as prdPublishId,
- stg_state as stgState,
- pre_state as preState,
- prd_state as prdState,
- project_id as projectId,
- updated_at as updatedAt,
- SUBSTRING_INDEX(user_name, '@', 1) as userName
- FROM
- pages
- WHERE id = ?;
- `;
- const [result] = await connection.execute(statement, [id]);
- return result;
- }
- async getPageSimpleById(id) {
- const statement =
- 'SELECT user_id as userId, app_type as appType, is_public as isPublic, is_edit as isEdit,project_id projectId FROM pages WHERE id = ?;';
- const [result] = await connection.execute(statement, [id]);
- return result;
- }
- async createPage(name, userId, userName, remark = '', pageData = '', projectId = 0, appType) {
- const statement = 'INSERT INTO pages (name, user_id, user_name, app_type, remark, page_data, project_id) VALUES (?, ?, ?, ?, ?, ?, ?);';
- const [result] = await connection.execute(statement, [name, userId, userName, appType || 1, remark, pageData, projectId]);
- return result;
- }
- async deletePage(pageId, userId) {
- const statement = 'DELETE FROM pages WHERE id = ? and user_id = ?;';
- const [result] = await connection.execute(statement, [pageId, userId]);
- return result;
- }
- // 删除项目下所有页面
- async deletePageByProjectId(projectId, userId) {
- const statement = 'DELETE FROM pages WHERE project_id = ? and user_id = ?;';
- const [result] = await connection.execute(statement, [projectId, userId]);
- return result;
- }
- // 解除项目下页面列表归属
- async updatePageForProjectId(projectId) {
- const statement = 'update pages set project_id = null where project_id = ?';
- const [result] = await connection.execute(statement, [projectId]);
- return result;
- }
- //state=> 1: 未保存 2: 已保存 3: 已发布 4: 已回滚
- async updatePageInfo(id, name, remark, pageData, previewImg, projectId, isPublic) {
- let statement = `UPDATE pages SET stg_state=2, pre_state=2, prd_state=2`;
- let sql_params = [];
- if (name) {
- statement += `, name = ?`;
- sql_params.push(name);
- }
- if (remark != null) {
- statement += `, remark = ?`;
- sql_params.push(remark);
- }
- if (previewImg) {
- statement += `, preview_img = ?`;
- sql_params.push(previewImg);
- }
- if (pageData) {
- statement += `, page_data = ?`;
- sql_params.push(pageData);
- }
- if (projectId) {
- statement += `, project_id = ?`;
- sql_params.push(projectId);
- }
- if (isPublic) {
- statement += `, is_public = ?`;
- sql_params.push(isPublic);
- }
- statement += ` WHERE id = ?;`;
- sql_params.push(id);
- const [result] = await connection.execute(statement, sql_params);
- return result;
- }
- //state=> 1: 未保存 2: 已保存 3: 已发布 4: 已回滚
- async updatePageState(lastPublishId, id, env, previewImg) {
- let statement = `UPDATE pages SET ${env}_state=3, ${env}_publish_id = ?`;
- let sql_params = [lastPublishId];
- if (previewImg) {
- statement += `, preview_img = ?`;
- sql_params.push(previewImg);
- }
- statement += ` WHERE id = ?;`;
- sql_params.push(id);
- const [result] = await connection.execute(statement, sql_params);
- return result;
- }
- async updateLastPublishId(pageId, lastPublishId, env) {
- const statement = `UPDATE pages SET ${env}_state=4, ${env}_publish_id = ? WHERE id = ?;`;
- const [result] = await connection.execute(statement, [lastPublishId, pageId]);
- return result;
- }
- // 根据页面模板id查询页面信息
- async getPageByTemplateId(id) {
- const statement = `
- SELECT
- p.project_id projectId, p.name, p.remark, p.app_type, p.page_data pageData
- FROM
- pages p
- LEFT JOIN
- templates t
- on
- p.id = t.union_id
- WHERE
- t.id = ?;
- `;
- const [result] = await connection.execute(statement, [id]);
- return result[0];
- }
- // 根据项目模板id查询关联的菜单页面列表
- async getPagesById(id) {
- const statement = `
- SELECT
- id, name, app_type as appType, page_data pageData, stg_state stgState, remark
- FROM
- pages
- WHERE id = ?
- `;
- const [result] = await connection.execute(statement, [id]);
- return result[0];
- }
- // 设置模板以后,更新项目标识
- async updatePageTemplate(id, status) {
- const statement = 'UPDATE pages SET is_template = ? WHERE id = ?;';
- const [result] = await connection.execute(statement, [status, id]);
- return result;
- }
- // 注销用户所有页面
- async deleteAllPage(userId, userName) {
- const statement = 'DELETE FROM pages WHERE user_id = ? and user_name = ?;';
- const [result] = await connection.execute(statement, [userId, userName]);
- return result;
- }
- }
- module.exports = new PagesService();
|