userService.js 8.2 KB
var userModel =  require('../model/userModel');
var status = require('../util/resTemplate');
var saitMd5 = require('../util/saltMD5');
var  sequelize = require('../config');
var tokenUtil =  require('../util/tokenUtil');
var co = require('co');
const emailUtil = require('../util/emailUtil')
const attachmentModel =require( '../model/attachmentModel')



function userService(){
}


userService.prototype.addUser = async(data)=>{

try{
    // var t = await sequelize.transaction()            
    var queryData = [
            {userMobile:data.userMobile},
            {loginName:data.loginName }
            //{userEmail:data.userEmail }
        ]
   let oldUser = await userModel.find({where:{$or:queryData}},) 
   if(oldUser){
       return {code:400,msg:'用户已存在'}
   }
    let newUser = await userModel.create(data) 
    console.log(newUser);
    if(newUser.userRole ==3 && data.time == 1){
        let e = await emailUtil.sendMail(newUser.userEmail,'认证邮件', '您已经成为学点云网校认证老师,您的用户名是'+data.loginName+",密码是123456")            
    }
    // t.commit();
    return newUser;    
 }catch (err){
     console.error(err);
    //  t.rollback();
    throw new Error(err);         
}
}

userService.prototype.login = async(loginName,pw,userEmail) => {
    try{
        let queryData = [
            {userEmail:loginName},
            {loginName:loginName}
        ];
        let User = await userModel.find({where:{$or:queryData}}) 
       if(!User){
            return {code:300,msg:'用户不存在'}
        }else if(User.password != saitMd5.md5(pw)){
            return {code:300,msg:'密码不正确'}
        }
        let attachment = await attachmentModel.findOne({where:{businessId:User.id}})         
        
        let token = await tokenUtil.getSession(User);
        if(attachment){
            token.userPhoto = attachment.path
        }else{
            token.userPhoto = null            
        }
        console.dir(token)
        return token
     }catch (err){
         console.log(err)
         throw new Error(err);         
     }
}



userService.prototype.getStu = async(type,page = 1,pageno =10)=>{
    try {

        let sql = `SELECT
                    u.id,
                    u.login_name loginName,
                    u.company_name companyName,
                    u.user_name userName,
                    u.user_type userType,
                    u.user_role userRole,
                    u.user_email userEmail,
                    u.user_mobile userMobile,
                    u.create_time createTime,
                    u.end_time endTime,
                    u.content content,
                    u.serial_no serialNo,
                    u.site_id siteId,
                    u.user_status userStatus,
                    3ma.path userPhoto,
                    (
                        SELECT
                            COUNT(*)
                        FROM
                            3m_student_meeting 
                LEFT JOIN  3m_meeting 3m ON 3m.id = 3m_student_meeting.meeting_id
                        WHERE
                            3m.create_user = u.login_name
                    ) reservationNumber
                FROM
                    3m_user u
                LEFT JOIN 3m_attachment 3ma ON 3ma.business_id = u.id
                where 1=1
                            `;
            if(type.id){
                sql += " and u.id = '" + type.id+"'";
            }
            if(type.userType){
                sql += " and u.user_type = '" + type.userType+"'";
            }
            sql += " and u.site_id = '" + type.siteId+"'";
            
            sql +=  ' ORDER BY  u.create_time DESC  LIMIT '+(page-1)*pageno+' , ' +pageno
                            
        let users = await userModel.findAll({where:type,offset: (page-1)*pageno, limit: pageno});
        let count = await userModel.count({where:type})        
        let User = await sequelize.query(sql);
        console.log(sql)
        return {users:User[0],count:count,page:page,pageno:pageno};                
    } catch (error) {
        throw new Error(error);                 
    }
}

userService.prototype.getUserByUserType  = async(type,page = 1,pageno =10)=>{
    try {
                let sql = `SELECT
                            u.*, (
                                SELECT
                                    COUNT(*)
                                FROM
                                    3m_student_meeting 
                        LEFT JOIN  3m_meeting 3m ON 3m.id = 3m_student_meeting.meeting_id
                                WHERE
                                    3m.create_user = u.login_name
                            ) reservationNumber
                        FROM
                            3m_user u
                        WHERE  1=1`;
                        if(type.userType){
                            sql += ' AND u.user_type =  ' + type.userType 
                        }
                    sql +=  ' ORDER BY  u.create_time DESC  LIMIT '+(page-1)*pageno+' , ' +pageno
                        
                let users = await userModel.findAll({where:type,offset: (page-1)*pageno, limit: pageno});
                let count = await userModel.count({where:type})        
                let User = await sequelize.query(sql);
                return {users:User[0],count:count,page:page,pageno:pageno};                
            } catch (error) {
                throw new Error(error);                 
            }
}

userService.prototype.resetPasswordByUserId = async(userId,pw) => {
    try{
        var t = await sequelize.transaction({  autocommit: true })        
        let User = await userModel.findOne({where:{id:userId}}) 
        if(!User){
            t.rollback();
            return {code:0,msg:'用户不存在'}
        }
        let updateUser = await userModel.update({password:pw.md5Pass,salt:pw.salt},{where:{id:userId}}); 
        t.commit();       
        return updateUser
     }catch (err){
         t.rollback();
         throw new Error(err);         
     }
}

userService.prototype.updatePwByTelphone = async(tel,pw) => {
    try{
        var t = await sequelize.transaction({  autocommit: true })        
        let User = await userModel.findOne({where:{userMobile:tel}}) 
        if(!User){
            t.rollback()
            return {code:0,msg:'用户不存在'}
        }
        let updateUser = await userModel.update({password:pw.md5Pass,salt:pw.salt},{where:{userMobile:tel}}); 
        t.commit();       
        return updateUser
     }catch (err){
         t.rollback();
         throw new Error(err);         
     }
}

userService.prototype.updateUserByUserId = async(userId,data)=>{
    try {
        var t = await sequelize.transaction({  autocommit: true })
        let oldUser = await userModel.findAll({where:{id:userId}},{transaction: t});
        if(!oldUser[0]){
            t.rollback()            
            return {msg:'用户不存在'}            
        }
        if(data.loginName){
            let loginNameUser = await userModel.findAll({where:{loginName:data.loginName}},{transaction: t});
            if(loginNameUser[0]){
                t.rollback()
                return {code:1,msg:'用户名已存在'}                            
            }            
        }
        let updateUser = await userModel.update(data,{where:{id:userId}},{transaction: t});
        let updateAfterUser = await userModel.find({where:{id:userId}},{transaction: t});        
        await t.commit();
        delete updateAfterUser.password;
        delete updateAfterUser.salt
        return updateAfterUser
    } catch (error) {
        t.rollback();
        throw new Error(error);                 
    }
}

userService.prototype.delUserByUserId = async(userId) => {
    let t = await sequelize.transaction({  autocommit: true })            
    try {
        let User = await userModel.find({where:{id:userId}},{transaction: t});
        if(!User){
            t.rollback()            
            return {msg:'用户不存在'}            
        }    
        let delUser = await userModel.destroy({where:{id:userId}},{transaction: t}); 
        await t.commit();
        return delUser       
    } catch (error) {
        t.rollback();
        throw new Error(error);  
    }
       
}


module.exports = new userService();