获取剪切板内容

前置内容

  1. 【Nodejs express 连接Mysql】: https://www.hyz.cool/articles/207
  2. 【Nodejs express 连接 Redis】: https://www.hyz.cool/articles/208
  3. 【统一后端返回数据格式——云剪切板】: https://www.hyz.cool/articles/209

路由

  • ClipboardController.js
const express = require("express");
const ClipboardController = express.Router();

const ClipboardService = require("../services/ClipboardService")

/**
 * 获取剪切板详情
 */
ClipboardController.get("/get",ClipboardService.getClipboard)


module.exports = ClipboardController;
js

数据库访问

  • ClipboardDao.js
import {Query} from "../services/MysqlService";

/**
 * 获取剪切板详情
 * @param id
 * @returns {Promise<unknown>}
 */
export const getClipboard = (id) => {
    return Query("SELECT * FROM `tb_clipboard` WHERE `id` = ? ", [id])
}
js

返回数据格式

  • ClipboardDTO.js
module.exports = class ClipboardDTO {

    /**
     * id
     */
    id;

    /**
     * 内容
     */
    content;

    /**
     * 用户id
     */
    userId

    /**
     * 平台
     */
    platform;


    /**
     * 额度
     */
    status;

    /**
     * 创建时间
     */
    createTime;

    /**
     * 更新时间
     */
    updateTime;

    constructor(data) {
        this.id = data.id;
        this.content = data.content;
        this.userId = data.user_id || data.userId;
        this.platform = data.platform;
        this.status = data.status;
        this.createTime = new Date(data.create_time || data.createTime).toLocaleString();
        this.updateTime = new Date(data.update_time || data.updateTime).toLocaleString();
    }
}
js

服务实现

  • ClipboardService.js
const Result = require("../utils/Result");
const ClipboardDTO = require("../dtos/ClipboardDTO");

const validator = require("express-validator");

const ClipboardDao = require("../daos/ClipboardDao")
const TokenService = require("../services/TokenService")

/**
 * 获取剪切板详情
 */

export const getClipboard = [
    validator.query("id", "剪切板id不能为空").isLength({min: 1}),
    (req, res, next) => {
        //校验参数
        let validationResult = validator.validationResult(req)
        if (!validationResult.isEmpty()) return Result.result(res, Result.invalidParams(validationResult.array()));

        //拿到参数
        let {id, userId} = req.query
        //查询
        ClipboardDao.getClipboard(id).then(result => {

            if (result.length < 1) return Result.result(res, Result.empty());
            let clipboard = new ClipboardDTO(result[0])
            //根据剪切板状态校验权限
            if (clipboard.status === 1) return Result.result(res, Result.success(clipboard));
            //校验权限
            if ((userId + "") !== (clipboard.userId + "")) return Result.result(res, Result.noAuth());
            //检查是否登陆
            TokenService.getLoginUser(req).then(userDTO => {
                //判断是否登陆
                if (!userDTO) return Result.result(res, Result.notLogin());
                //判断id是否一致
                if ((userDTO.id + "") !== (userId + "")) return Result.result(res, Result.noAuth())
                //校验通过,返回结果
                return Result.result(res, Result.success(clipboard));
            }).catch(err => {
                return Result.result(res, Result.failed("检查登陆失败!"))
            })
        }).catch(err => {
            console.log("list clipboard error ...", err)
            return Result.result(res, Result.failed("获取用户剪切板数据失败!"))
        })
    }]
js
打赏
  • 微信
  • 支付宝
评论
来发评论吧~
···

歌手: