setting.js 4.33 KB
/**
 * [个人中心]个人设置
 * @author: jiangmin
 * @date: 2016/07/13
 */

'use strict';

const api = global.yoho.API;
const crypto = require('crypto');
const fs = require('fs');

/**
 * 查询个人详细信息
 * @param uid
 * @returns {*}
 */
const _getUserInfo = (uid) => {

    return api.get('', {
        method: 'app.passport.profile',
        uid: uid
    }).then(result => {
        if (result && result.data) {
            let genders = [
                {
                    name: '男',
                    value: '1'
                },
                {
                    name: '女',
                    value: '2'
                },
                {
                    name: '保密',
                    value: '3'
                }
            ];

            return {
                info: result.data,
                genders: genders
            };
        }

    });
};

/**
 * 查询个人联系信息
 * @param uid
 * @returns {*}
 * @private
 */
const _getUserContactInfo = (uid)=> {
    return api.get('', {
        method: 'web.passport.getUserContacts',
        uid: uid
    }).then(result => result.data);
};

/**
 * 合并查询个人信息
 * @param uid
 * @returns {*}
 */
const getUserInfo = (uid) => {
    let getData = [_getUserInfo(uid), _getUserContactInfo(uid)];

    return Promise.all(getData).then(result => {
        return {
            info: result[0].info,
            genders: result[0].genders,
            concat: result[1]
        };
    });
};

/* const getVerifyInfo = (uid)=> {
 return api.get('', {
 method: 'web.passport.getUserVerifyInfo',
 uid: uid
 }).then(result => result);
 };*/

/**
 * 编辑个人详细信息
 * @param uid
 * @param nickName
 * @param username
 * @param gender
 * @param birthday
 * @returns {*}
 * @private
 */
const _editInfo = (uid, nickName, username, gender, birthday)=> {
    return api.get('', {
        method: 'app.passport.modifyBase',
        uid: uid,
        nick_name: nickName,
        username: username,
        gender: gender,
        birthday: birthday
    }).then(result => result);
};

/**
 * 编辑个人联系信息
 * @param uid
 * @param areaCode
 * @param mobile
 * @param fullAddress
 * @param zipCode
 * @returns {*}
 * @private
 */
const _editUserContactInfo = (uid, areaCode, mobile, fullAddress, zipCode)=> {
    return api.get('', {
        method: 'web.passport.modifyUserContacts',
        uid: uid,
        area_code: areaCode,
        mobile: mobile,
        full_address: fullAddress,
        zip_code: zipCode
    }).then(result => result);
};

/**
 * 合并编辑个人信息
 * @param uid
 * @param info
 * @returns {*}
 */
const editUserInfo = (uid, info) => {
    let getData = [
        _editInfo(uid, info.nick_name, info.username, info.gender, info.birthday),
        _editUserContactInfo(uid, info.area_code, info.mobile, info.full_address, info.zip_code)
    ];

    return Promise.all(getData).then(result => result);
};

/**
 * 加密
 * @param data
 * @returns {string}
 */
const cipheriv = (data) => {
    let algorithm = 'aes-128-ecb';
    let key = 'yoho9646yoho9646';
    let clearEncoding = 'utf8';
    let cipherEncoding = 'base64';
    let iv = '';
    let cipher = crypto.createCipheriv(algorithm, key, iv);
    let cipherChunks = [];

    cipherChunks.push(cipher.update(data, clearEncoding, cipherEncoding));
    cipherChunks.push(cipher.final(cipherEncoding));

    return cipherChunks.join('');
};

/**
 * 解密
 * @param data
 * @returns {string}
 */
const decipheriv = (data) => {
    let algorithm = 'aes-128-ecb';
    let key = 'yoho9646yoho9646';
    let decipherEncoding = 'utf8';
    let clearEncoding = 'base64';
    let iv = '';
    let decipher = crypto.createDecipheriv(algorithm, key, iv);
    let decipherChunks = [];

    decipherChunks.push(decipher.update(data, clearEncoding, decipherEncoding));
    decipherChunks.push(decipher.final(decipherEncoding));

    return decipherChunks.join('');
};

/**
 * 上传头像
 * @param uid
 * @param bucket
 * @param fileData
 */
const modifyHead = (uid, bucket, fileData)=> {
    return api.postFile('', {
        method: 'app.passport.modifyHead',
        uid: uid,
        bucket: bucket
    }, {
        file_data: fs.createReadStream(fileData)
    });
};


module.exports = {
    getUserInfo: getUserInfo,
    editUserInfo: editUserInfo,
    cipheriv: cipheriv,
    decipheriv: decipheriv,
    modifyHead: modifyHead
};