user.js 2.04 KB
/**
 * 用户管理model
 * @author: leo <qi.li@yoho.cn>
 * @date: 28/06/2017
 */

const mysqlCli = global.yoho.utils.mysqlCli;

const _ = require('lodash');
const TABLE_USER = 'user';
const TABLE_USER_LOGIN_LOG = 'act_login_user_log';

class UserModel extends global.yoho.BaseModel {
    constructor(ctx) {
        super(ctx);
    }

    /**
     * 用户列表[分页]
     * @returns {*}
     */
    userList({pageNo, pageSize}) {
        return mysqlCli.query(
            `select id, user_phone userPhone, user_name userName, create_time createTime 
            from ${TABLE_USER}
            order by create_time desc
            limit :start, :page;`, {
                start: (pageNo - 1) * pageSize,
                page: _.parseInt(pageSize)
            }
        );
    }

    /**
     * 用户总数
     * @returns {*}
     */
    allUsersNum() {
        return mysqlCli.query(
            `select count(*) as total from ${TABLE_USER};`
        ).then(res => {
            return res[0].total;
        });
    }

    /**
     * 导出用户列表
     * @returns {*}
     */
    exportUserList() {
        return mysqlCli.query(
            `select id, user_phone userPhone, user_name userName, create_time createTime from ${TABLE_USER};`
        );
    }

    /**
     * 用户删除
     * @returns {*}
     */
    deleteUser(userId) {
        return mysqlCli.delete(
            `delete from ${TABLE_USER} where id = :userId;`, {
                userId
            }
        );
    }

    /**
     * 导出用户登录日志
     * @returns {*}
     */
    exportUserLoginLog({url, startTime, endTime}) {
        let sql = `select user_id,login_time,platform,ip,referer from ${TABLE_USER_LOGIN_LOG} where 1=1`;

        if (url) {
            sql += ' and referer like :url';
        }
        if (startTime) {
            sql += ' and login_time >= :startTime';
        }
        if (endTime) {
            sql += ' and login_time <= :endTime';
        }

        return mysqlCli.query(sql, {url: `%${url}%`, startTime, endTime});
    }

}

module.exports = UserModel;