瀏覽代碼

对会话列表使用参数绑定in语句,不使用字符串拉拼接

Sand 8 年之前
父節點
當前提交
49021841db
共有 2 個文件被更改,包括 17 次插入29 次删除
  1. 8 11
      src/server/repository/mysql/search.repo.js
  2. 9 18
      src/server/util/db.util.js

+ 8 - 11
src/server/repository/mysql/search.repo.js

@ -27,7 +27,7 @@ class SearchRepo {
            sql: sql,
            args: [userId, userId],
            handler: handler
        })
        });
    }
@ -87,14 +87,13 @@ class SearchRepo {
     * @param handler
     */
    static searchUser(sessionIdList, keyword, userTable, page, size, handler) {
        let sql = "select u.id, u.name, u.sex, u.avatar from sessions s, participants p, " + userTable + " u where s.id in ('" +
            sessionIdList.join("', '") +
            "') AND s.id = p.session_id AND p.participant_id = u.id and u.name like ? limit ?, ?";
        let sql = "select u.id, u.name, u.sex, u.avatar from sessions s, participants p, " + userTable +
            " u where s.id in (?) AND s.id = p.session_id AND p.participant_id = u.id and u.name like ? limit ?, ?";
        keyword = '%' + keyword + '%';
        ImDb.execQuery({
            sql: sql,
            args: [keyword, page * size, size],
            args: [sessionIdList, keyword, page * size, size],
            handler: handler
        });
    }
@ -103,14 +102,12 @@ class SearchRepo {
     * 会话搜索
     */
    static searchSessions(sessionIdList, keyword, page, size, handler) {
        let sql = "select s.id, s.name, s.type, s.create_date, s.business_type from sessions s where s.id in ('" +
            sessionIdList.join("', '") +
            "') and s.name like ? limit ?, ? ";
        let sql = "select s.id, s.name, s.type, s.create_date, s.business_type from sessions s where s.id in (?) and s.name like ? limit ?, ? ";
        keyword = '%' + keyword + '%';
        ImDb.execQuery({
            sql: sql,
            args: [keyword, page * size, size],
            args: [sessionIdList, keyword, page * size, size],
            handler: handler
        });
    }
@ -121,7 +118,7 @@ class SearchRepo {
    static searchMessages(sessionIdList, keyword, page, size, handler) {
        let sql = "SELECT s.id, s.name, s.type, s.create_date, s.business_type, m.sender_name, m.content " +
            "FROM sessions s, p2p_messages m " +
            "WHERE s.id IN('" + sessionIdList.join("', '") + "') AND s.id = m.session_id AND s.`type` IN (1,2,3) AND m.content_type = 1 AND m.content LIKE ? " +
            "WHERE s.id IN (?) AND s.id = m.session_id AND s.`type` IN (1,2,3) AND m.content_type = 1 AND m.content LIKE ? " +
            "GROUP BY s.id " +
            "ORDER BY s.last_message_time " +
            "LIMIT ?, ?";
@ -129,7 +126,7 @@ class SearchRepo {
        keyword = '%' + keyword + '%';
        ImDb.execQuery({
            sql: sql,
            args: [keyword, page * size, size],
            args: [sessionIdList, keyword, page * size, size],
            handler: handler
        });
    }

+ 9 - 18
src/server/util/db.util.js

@ -17,43 +17,34 @@ class DbUtil {
        if (config.showSQL) log.info(options.sql);
        pool.getConnection(function (err, connection) {
            // 查询参数
            let sql = options['sql'];
            let args = options['args'];
            let handler = options['handler'];
            if (err) {
                //log.error('Database - get connection failed, ' + err);
                handler(err, 'db-getConnection');
                return;
                return handler(err, null);
            }
            // 执行查询
            if (args) {
                connection.query(sql, args, function (err, results) {
                    if (err) {
                        //log.error('Database - execute query failed, ' + err);
                        handler(err, results);
                        return;
                        log.error("Execute SQL failed: " + sql);
                        return handler(err, results);
                    }
                    if(!handler)log.info("错误sql:"+options.sql);
                    // 处理结果
                    handler(err, results);
                    handler(null, results);
                });
            } else {
                connection.query(sql, function (err, results) {
                    if (err) {
                        //log.error('Database - execute query failed, ' + err);
                        handler(err, results);
                        log.error("Execute SQL failed: " + sql);
                        return;
                        return handler(err, results);
                    }
                    // 处理结果
                    handler(err, results);
                    handler(null, results);
                });
            }
@ -71,7 +62,7 @@ class DbUtil {
     *
     * @param stringArray
     */
    static stringArrayHash(stringArray){
    static stringArrayHash(stringArray) {
        let sortedArr = stringArray.sort();
        return crypto.createHash("sha1").update(sortedArr.join(",")).digest('hex');
    }