Browse Source

Merge branch 'feature-refactor' of yeshijie/im.doctor into feature-refactor

yeshijie 8 years ago
parent
commit
79aaab547f

+ 15 - 1
src/server/endpoints/v2/topic.endpoint.js

@ -67,14 +67,28 @@ router.get(APIv2.Sessions.HealthTopicList, function (req, res) {
    topic.findAllByUserAndReplyAndStatusHealthTopic(users,reply,status,page,pagesize);
});
router.get(APIv2.Sessions.HealthTeamTopicList, function (req, res) {
    let user = req.query.user;
    let status = req.query.status;
    let adminTeamCode = req.query.adminTeamCode;
    let reply = req.query.reply;//SESSION_TYPES
    let page = req.query.page;
    let pagesize = req.query.pagesize;
    let topic = new Topics();
    ControllerUtil.regModelEventHandler(topic, res);
    let users = user.split(",");
    topic.findAllByUserAndReplyAndStatusHealthTeamTopic(users,reply,status,adminTeamCode,page,pagesize);
});
router.get(APIv2.Sessions.TopicReplyCount, function (req, res) {
    let user = req.query.user;
    let status = req.query.status;
    let reply = req.query.reply;
    let adminTeamCode = req.query.adminTeamCode;
    let topic = new Topics();
    ControllerUtil.regModelEventHandler(topic, res);
    let users = user.split(",");
    topic.findReplyCount(users,reply,status);
    topic.findReplyCount(users,reply,status,adminTeamCode);
});

+ 1 - 0
src/server/include/commons.js

@ -198,6 +198,7 @@ const DB_TABLES = {
    Topics: "topics",
    StickySessions: "sticky_sessions",
    WlyyConsult:"wlyy_consults",
    WlyyConsultTeam:"wlyy.wlyy_consult_team",
    sessionTypeToTableName: function (sessionType) {
        if (sessionType == SESSION_TYPES.SYSTEM)

+ 1 - 0
src/server/include/endpoints.js

@ -37,6 +37,7 @@ const APIv2 = {
        TopicInto: '/:session_id/topics/:topic_id/into',              // 居民进入议题
        TopicList:'/topics',
        HealthTopicList:'/healthTopics', //健康咨询
        HealthTeamTopicList:'/healthTeamTopics', //健康咨询(区分团队)
        TopicReplyCount:"/topics/count/reply",
        TopicMessages:'/topic/:topic_id/messages',
        Messages: '/:session_id/messages',                             // 会话消息

+ 23 - 2
src/server/models/sessions/topics.js

@ -140,10 +140,31 @@ class Topics extends RedisModel {
        })
    }
    /**
     * 根据状态和回复及行政团队code获取列表,(过滤名医咨询)
     * @param user
     * @param reply
     * @param status
     * @param page
     * @param pagesize
     */
    findAllByUserAndReplyAndStatusHealthTeamTopic(users,reply, status,adminTeamCode, page, pagesize) {
        let self = this;
        page = (page - 1 < 0 ? 0 : page - 1) * pagesize;
        if (!pagesize) pagesize = 10;
        pagesize = parseInt(pagesize);
        TopicsRepo.findAllByUserAndReplyAndStatusHealthTeamTopic(users,reply,status,adminTeamCode, page, pagesize, function (err, res) {
            if (err) {
                ModelUtil.emitError(self.eventEmitter, "获取列表失败" + err);
            }
            ModelUtil.emitOK(self.eventEmitter, res);
        })
    }
    findReplyCount(users,reply, status) {
    findReplyCount(users,reply, status,adminTeamCode) {
        let self = this;
        TopicsRepo.findReplyCount(users,reply,status, function (err, res) {
        TopicsRepo.findReplyCount(users,reply,status,adminTeamCode, function (err, res) {
            if (err) {
                ModelUtil.emitError(self.eventEmitter, "获取列表失败" + err);
            }

+ 49 - 15
src/server/repository/mysql/topics.repo.js

@ -100,13 +100,13 @@ class TopicRepo {
            sql =  "SELECT t.*, s.avatar,s.sex,s.birthdate, s.`name` AS patient_name,c.doctor FROM "+
                DB_TABLES.Topics+" t,"+DB_TABLES.Participants+" p,"+DB_TABLES.Doctors+" d,"+DB_TABLES.WlyyConsult+" c,"+DB_TABLES.Patients+" s "+
                "WHERE d.id = p.participant_id AND c.id = t.id AND c.patient = s.id AND p.session_id = t.session_id "+
                "AND d.id in (?) AND t. STATUS = ? AND c.type not in ('6') ORDER BY create_time DESC limit ?,?";
                "AND d.id in (?) AND t. STATUS = ? AND c.type !='6' ORDER BY create_time DESC limit ?,?";
        }else{
            args.push(userId,status,reply,page,size);
            sql =  "SELECT t.*, s.avatar,s.sex,s.birthdate, s.`name` AS patient_name,c.doctor FROM "+
                DB_TABLES.Topics+" t,"+DB_TABLES.Participants+" p,"+DB_TABLES.Doctors+" d,"+DB_TABLES.WlyyConsult+" c,"+DB_TABLES.Patients+" s "+
                "WHERE d.id = p.participant_id AND c.id = t.id AND c.patient = s.id AND p.session_id = t.session_id "+
                "AND d.id in (?) AND t. STATUS = ? and t.reply=? AND c.type not in ('6') ORDER BY create_time DESC limit ?,?";
                "AND d.id in (?) AND t. STATUS = ? and t.reply=? AND c.type !='6' ORDER BY create_time DESC limit ?,?";
        }
        ImDb.execQuery({
            sql: sql,
@ -117,27 +117,61 @@ class TopicRepo {
        });
    }
    static findReplyCount(userId,reply,status,handler){
    /**
     * 过滤名医咨询(区分团队)
     * @param userId
     * @param reply
     * @param status
     * @param page
     * @param size
     * @param handler
     */
    static findAllByUserAndReplyAndStatusHealthTeamTopic(userId,reply,status,adminTeamCode,page,size,handler){
        let sql = "";
        var args =[];
        if(status==10){
            args.push(adminTeamCode,userId,status,page,size);
            sql =  "SELECT t.*, s.avatar,s.sex,s.birthdate, s.`name` AS patient_name,c.doctor FROM "+
                DB_TABLES.Topics+" t,"+DB_TABLES.Participants+" p,"+DB_TABLES.Doctors+" d,"+DB_TABLES.WlyyConsultTeam+" c,"+DB_TABLES.Patients+" s "+
                "WHERE d.id = p.participant_id AND c.consult = t.id AND c.patient = s.id AND p.session_id = t.session_id "+
                "AND c.admin_team_code =? AND d.id in (?) AND t. STATUS = ? AND c.type !='6' ORDER BY create_time DESC limit ?,?";
        }else{
            args.push(adminTeamCode,userId,status,reply,page,size);
            sql =  "SELECT t.*, s.avatar,s.sex,s.birthdate, s.`name` AS patient_name,c.doctor FROM "+
                DB_TABLES.Topics+" t,"+DB_TABLES.Participants+" p,"+DB_TABLES.Doctors+" d,"+DB_TABLES.WlyyConsultTeam+" c,"+DB_TABLES.Patients+" s "+
                "WHERE d.id = p.participant_id AND c.consult = t.id AND c.patient = s.id AND p.session_id = t.session_id "+
                "AND c.admin_team_code =? AND d.id in (?) AND t. STATUS = ? and t.reply=? AND c.type !='6' ORDER BY create_time DESC limit ?,?";
        }
        ImDb.execQuery({
            sql: sql,
            args: args,
            handler: function (err, res) {
                handler(err, res);
            }
        });
    }
    static findReplyCount(userId,reply,status,adminTeamCode,handler){
        let sql = "";
        var args =[];
        if(status==10){
            args.push(userId,status);
            args.push(adminTeamCode,userId,status);
            sql =  "SELECT count(1)  as count FROM "+
                DB_TABLES.Topics+" t,"+DB_TABLES.Participants+" p,"+DB_TABLES.Doctors+" d,"+DB_TABLES.WlyyConsult+" c,"+DB_TABLES.Patients+" s "+
                "WHERE d.id = p.participant_id AND c.id = t.id AND c.patient = s.id AND p.session_id = t.session_id "+
                "AND d.id in (?) AND t. STATUS = ? ";
                DB_TABLES.Topics+" t,"+DB_TABLES.Participants+" p,"+DB_TABLES.Doctors+" d,"+DB_TABLES.WlyyConsultTeam+" c,"+DB_TABLES.Patients+" s "+
                "WHERE d.id = p.participant_id AND c.consult = t.id AND c.patient = s.id AND p.session_id = t.session_id "+
                "AND c.admin_team_code=? AND d.id in (?) AND t. STATUS = ? ";
        }else if(status){
            args.push(userId,status,reply);
            args.push(adminTeamCode,userId,status,reply);
            sql =  "SELECT count(1) as count FROM "+
                DB_TABLES.Topics+" t,"+DB_TABLES.Participants+" p,"+DB_TABLES.Doctors+" d,"+DB_TABLES.WlyyConsult+" c,"+DB_TABLES.Patients+" s "+
                "WHERE d.id = p.participant_id AND c.id = t.id AND c.patient = s.id AND p.session_id = t.session_id "+
                "AND d.id in (?) AND t. STATUS = ? and t.reply=? ";
                DB_TABLES.Topics+" t,"+DB_TABLES.Participants+" p,"+DB_TABLES.Doctors+" d,"+DB_TABLES.WlyyConsultTeam+" c,"+DB_TABLES.Patients+" s "+
                "WHERE d.id = p.participant_id AND c.consult = t.id AND c.patient = s.id AND p.session_id = t.session_id "+
                "AND c.admin_team_code=? AND d.id in (?) AND t. STATUS = ? and t.reply=? ";
        }else{
            args.push(userId);
            args.push(adminTeamCode,userId);
            sql =  "SELECT count(1) as count FROM "+
                DB_TABLES.Topics+" t,"+DB_TABLES.Participants+" p,"+DB_TABLES.Doctors+" d,"+DB_TABLES.WlyyConsult+" c,"+DB_TABLES.Patients+" s "+
                "WHERE d.id = p.participant_id AND c.id = t.id AND c.patient = s.id AND p.session_id = t.session_id "+
                "AND d.id in (?)";
                DB_TABLES.Topics+" t,"+DB_TABLES.Participants+" p,"+DB_TABLES.Doctors+" d,"+DB_TABLES.WlyyConsultTeam+" c,"+DB_TABLES.Patients+" s "+
                "WHERE d.id = p.participant_id AND c.consult = t.id AND c.patient = s.id AND p.session_id = t.session_id "+
                "AND c.admin_team_code=? AND d.id in (?)";
        }
        ImDb.execQuery({
            sql: sql,