前端常用过滤器

var moment = window.moment;
var template = window.template;

moment.locale('zh-cn');
// var template = require("../../scripts/lib/template.js");
template.config('escape', false);
template.helper('isObject', function (data) {
    function isObject(data) {
        if ((typeof data === 'object') && data != null) {
            return true;
        }
        return false;
    }
    return isObject(data);

});
/**
 * @desc 1.将格式为'yyyy-MM-dd 00:00:00'截取为'yyyy-MM-dd';
 *       2.将'yyyy-M-d'转化为'yyyy-MM-dd';
 *       3.3.将'yyyy-MM-dd'原样输出;
 *
 * */
template.helper('spliceDate', function (value) {
    if (value !== '' && typeof value === 'string' && new Date(value) != 'Invalid Date') {
        var array = value.split(' ');
        var dateNums = array[0].split('-');
        var formatDate = dateNums[0] + '';
        for (var i = 1, l = dateNums.length; i < l; i++) {
            formatDate += '-';
            if (Number(dateNums[i]) < 10 && dateNums[i].charAt(0) !== '0') {
                formatDate += '0';
            }
            formatDate += dateNums[i];
        }
        // 如果时分秒部分,不是'00:00:00',则保留
        if (array[1] && array[1] !== '00:00:00' && array[1] !== '00:00') {
            formatDate += ' ' + array[1];
        }
        return formatDate;
    }
    return '--';
});
//将格式为'yyyy-MM-dd HH:MM:SS'截取为'yyyy-MM-dd';
template.helper('spliceDate2', function (value) {
    if (value !== '' && typeof value === 'string' && new Date(value) != 'Invalid Date') {
        var array = value.split(' ');
        var dateNums = array[0].split('-');
        var formatDate = dateNums[0] + '';
        for (var i = 1, l = dateNums.length; i < l; i++) {
            formatDate += '-';
            if (Number(dateNums[i]) < 10 && dateNums[i].charAt(0) !== '0') {
                formatDate += '0';
            }
            formatDate += dateNums[i];
        }
        // 如果时分秒部分,不是'00:00:00',则保留
        // if (array[1] && array[1] !== '00:00:00' && array[1] !== '00:00') {
        //     formatDate += ' ' + array[1];
        // }
        return formatDate;
    }
    return '--';
});
//将unicode编码转成中文;
template.helper('unicode2CN', function (value) {
    if (value !== '' && typeof value === 'string') {
        var result = unescape(value.replace(/\\u/g, '%u'));
        return result;
    }
    return value?value.toString():'--';
});
//将中文编码转成unicode,用以兼容ie;
template.helper('CN2unicode', function (value) {
    if (value !== '' && typeof value === 'string') {
        var result = encodeURI(value.replace(/\\u/g, '%u'));
        return result;
    }
    return value?value.toString():'--';
});
template.helper('filterNullToLine', function (str) {
    if (typeof (str) === 'undefined') {
        return '--';
    } else if (str === '') {
        return '--';
    }
    return str;
});
//html字符串转义
template.helper('encodeHtmlStr' , function (str) {
    return str.replace(/\n/g,'')
            .replace(/&/g, '&amp;')
            .replace(/"/g, '&quot;')
            .replace(/'/g, '&#39;')
            .replace(/</g, '&lt;')
            .replace(/>/g, '&gt;');
})
template.helper('isCompany', function (company) {
    if (!company) {
        return false;
    } else {
        if (company.split('/')[0] === 'Company') {
            return true
        } else {
            return false
        }
    }
});
template.helper('encodeURIComponent', function (str) {
    return encodeURIComponent(str);
});
template.helper('filterNullToZero', function (str) {
    if (typeof (str) === 'undefined') {
        return 0;
    } else if (str === '') {
        return 0;
    }
    return str;
});
template.helper('getYesNoEmpty', function (value) {
    if (value === undefined) {
        return '--';
    }
    if (value === true) {
        return '是';
    }
    return '否';
});

template.helper('getShareholderType', function (value) {
    if (!value) {
        return '--';
    }
    if (value.indexOf('Person') > -1) {
        return '自然人股东';
    }
    if (value.indexOf('Company') > -1) {
        return '法人股东';
    }
    return '--';
});

/**
 * @desc 将形如'注销(注销日期1993年5月11日)'的字串替换为'注销',即去掉括号及其内容
 *
 * */
template.helper('formatCompanyStatus', function (value) {
    if (value !== null && value !== undefined) {
        var reg = /\(.*\)/g;
        var newValue = value.replace(reg, '');
        return newValue;
    }
});

/**
 * @desc 数组连接
 *
 * */
template.helper('arrJoinWithComma', function (arr) {
    if (arr instanceof Array && arr.length > 0) {
        return arr.join(',');
    }
    return '--';
});

/**
 * @desc 将'1850000000.00'格式的数据转化为'185,000.00'(转化为万元、千分位格式、保存两位小数)
 *
 * */
template.helper('formatMoney', function (value) {
    if (value === null || value === undefined || isNaN(parseFloat(value))) {
        return;
    }
    // 将数字进行千分位格式化
    function toThousands(num) {
        num = (num || 0).toString();
        var parts = num.split('.');
        var bigZeroPart = parts[0];
        var result = '';
        while (bigZeroPart.length > 3) {
            result = ',' + bigZeroPart.slice(-3) + result;
            bigZeroPart = bigZeroPart.slice(0, bigZeroPart.length - 3);
        }
        if (bigZeroPart) {
            result = bigZeroPart + result;
        }
        if (parts.length > 1) {
            result += '.' + parts[1].toString();
        }
        return result;
    }

    value = (value / 10000).toFixed(2);
    value = toThousands(value);
    return value;
});
/**
 * @desc 将'1850000000.00'格式的数据转化为'1850000000元'
 *
 * */
template.helper('addMoneyUnit', function (value) {
    if (value === null || value === undefined || isNaN(parseFloat(value))) {
        return;
    }

    value = +value;
    return value + '元';
});
// 千分位+万元转换 同步ejs_filter
template.helper('captital_format', function (num, unit) {
    unit = unit || '';

    function format(num) {
        return (num.toFixed(2) + '').replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,');
    }
    if (parseFloat(num) === 0) {
        return '未公布';
    }
    if (isNaN(num)) {
        return '--';
    }
    if (num) {
        if (num < 10000) {
            return format(parseFloat(num)) + unit;
        }
        return format(num / 10000) + ' 万' + unit;
    }
    return '--';
});

/**
 *@desc 通过一个企业的状态来判断该企业是否有风险
 *
 * */
template.helper('isRiskComStatus', function (value) {
    if (value === null || value === undefined) {
        return;
    }

    // 拥有以下状态的企业,均认为有风险:
    // 注销、内资注销、外资注销、吊销,未注销、吊销,已注销、吊销,已注销、注销企业、注吊销、吊销已注销、吊销后注销
    // 吊销企业、吊销、已吊销、内资吊销、外资吊销、被吊销、吊销、吊销,未注销、吊销未注销
    // 迁出、迁移异地、迁往外省市、迁移、已迁出企业、已迁出
    // 清算、清算中
    // 停业
    // 撤销登记
    if ('注销;吊销;迁出;迁往;迁移;清算;停业;撤销登记'.indexOf(value) !== -1) {
        return true;
    }
    return false;
});

/**
 *@desc 毫秒时间转换格式
 *
 * */
template.helper('dateFormat', function (datetime) {
    if (datetime) {
        return moment(datetime, 'x').format('YYYY-MM-DD HH:mm:ss');
    }
    return '--';
});

/**
 *@desc 时间戳转日期
 *
 * */
template.helper('timestampToDate', function (datetime) {
    if (datetime) {
        return moment(datetime, 'x').format('YYYY-MM-DD');
    }
    return '--';
});

/**
 * @desc 导出时间
 */
template.helper('timeOption', function (value) {
    if (value === 0) {
        return '按照数据抓取时间';
    }
    if (value === 1) {
        return '按照内容更新时间';
    }
    return '--';
});
/**
 * @desc 数据类型字符串解析
 */
template.helper('dataTypeResolve', function (data_type) {
    if (data_type.indexOf('options') !== -1) {
        var data_type_obj = JSON.parse(data_type)
        if (data_type_obj.options && Array.isArray(data_type_obj.options)) {
            var resolveArray = [];
            data_type_obj.options.forEach(function (element) {

                for (var index = 0; index < element.value.length; index++) {
                    if (element.value[index].checked) {
                        resolveArray.push(element.value[index].cname);
                    }
                }
            }, this);
            return resolveArray.toString();
        }
    }
    if (data_type) {
        return data_type;
    }
    return '--';
});
/**
 * @desc
 */
template.helper('join_with_comma', function (arr) {
    if (arr.length > 0) {
        return arr.join(',');
    }
    return '';
});
/**
 * @desc
 * 根据stock_code返回中文
 *创业板
 *创业板的代码是300打头的股票代码
 *
 *沪市A股
 *沪市A股的代码是以600、601或603打头
 *
 *沪市B股
 *沪市B股的代码是以900打头
 *
 *深市A股
 *深市A股的代码是以000、001打头
 *
 *中小板
 *中小板的代码是002打头
 *
 *深市B股
 *深圳B股的代码是以200打头
 */
template.helper('stock_code_filter', function (str) {
    var arr = str.split(',');
    var result = [];
    for (var i = 0; i < arr.length; i++) {
        var code = arr[i];
        if (/^300/.test(code)) {
            result.push('创业板');
        } else if (/^60[013]/.test(code)) {
            result.push('沪市A股');
        } else if (/^900/.test(code)) {
            result.push('沪市B股');
        } else if (/^00[01]/.test(code)) {
            result.push('深市A股');
        } else if (/^002/.test(code)) {
            result.push('中小板');
        } else if (/^200/.test(code)) {
            result.push('深市B股');
        }
    }
    return result.join(',');
});

// 格式化百分号为小数点后两位
template.helper('format_percent_num', function (value) {
    if (!value) {
        return '--';
    }
    value = parseFloat(value);
    if (isNaN(value)) {
        return '--';
    }
    return value.toFixed(2) + '%';
});

// 保留小数点
template.helper('fixedN', function (value,n) {
    if (!value) {
        return '--';
    }
    value = parseFloat(value);
    if (isNaN(value)) {
        return '--';
    }
    return value.toFixed(n||2) ;
});
// 小数转换为百分比
template.helper('toPercent', function (value,n) {
    if (!parseFloat(value) || isNaN(parseFloat(value))) {
        return '未公示'
    }
    value = parseFloat(value)
    if (n) {
      value = (value * 100).toFixed(n)
    } else {
      value *= 100
    }
    return value + '%'
});

/**
 * @desc 将'1850000000.00'格式的数据转化为'185000.00 万'
 *
 * */
template.helper('format_money_3', function (value) {
    if (value === null || value === undefined || isNaN(parseFloat(value))) {
        return '';
    }
    
    value = value.toString();
    var start = value.indexOf('(');
    if (start === -1) {
        start = value.indexOf('(');
    }
    var unit = value.substring(start);
    // var chart = unit.substring(0, 1);
    unit = ' 万';
    value = (parseFloat(value) * 100) / (10000 * 100);
    value = value.toFixed(2) + '' + unit;
    return value;
});

/**
 * @desc 将'1850000000.00'格式的数据转化为'185,000.00元'
 *
 * */
template.helper('moneyFormat', function (value, currency, decimals) {
    if(!value || value == ''){
        return '--';
    }
    var digitsRE = /(\d{3})(?=\d)/g;
    value = parseFloat(value);
    // 有可能出现1.546714415467144e+87这种科学计数法的格式,因此做转换
    value = convertNum(value);
    if(typeof value === 'string'){
        return value+'元';
    }
    if (!isFinite(value) || (!value && value !== 0)) return '';
    currency = currency != null ? currency : '';
    decimals = decimals != null ? decimals : 2;
    var stringified = Math.abs(value).toFixed(decimals);
    var _int = decimals ? stringified.slice(0, -1 - decimals) :stringified;
    var i = _int.length % 3;
    var head = i > 0 ?(_int.slice(0, i) + (_int.length > 3 ? ',' : '')) :'';
    var _float = decimals ?stringified.slice(-1 - decimals) :'';
    var sign = value < 0 ? '-' : '';
    return sign + currency + head + _int.slice(i).replace(digitsRE, '$1,') + _float + '元';
});
function convertNum(amount) {
    // 判断是否科学计数法,是则进行转换
    var strAmount = new String(amount)
    if((strAmount.indexOf('E') != -1) || (strAmount.indexOf('e') != -1)) {
        return new Number(amount).toLocaleString();
    } else{
        return amount;
    }
}
// JSON.stringify
template.helper('toJSON', function (value) {
    return JSON.stringify(value);
});

// 百分比大于百分之五十
template.helper('gt50percent', function (value) {
    var num = parseFloat(value);
    if (isNaN(num)) {
        return false;
    }
    return num >= 50;
});

// 两个参数拼接,中间加-
template.helper('addParenthese', function (str, str2) {
    if (!str && !str2) {
        return '--';
    }
    if (str && !str2) {
        return str;
    }
    if (!str && str2) {
        return str2;
    }
    return '[' + str + '] ' + str2;
});

// 消息详情时间获取
template.helper('formatVals', function (key, val) {
    var dateArr = ['publish_time', 'publish_date', 'filing_date', 'case_date', 'reg_date', 'court_time'];
    if (dateArr.indexOf(key) > -1) {
        return val.split(' ')[0];
    }
    if (Object.prototype.toString.call(val) === '[object Array]') {
        return val.join();
    }
    return val;
});

// 绝对路径
template.helper('absolutePath', function (path) {
    if (path[0] !== '/') {
        path = '/' + path;
    }
    return path;
});

// 替换换行符、空格
template.helper('formatText', function (str) {
    str = str.replace(/\r/g, '&nbsp;');
    str = str.replace(/\t/g, '&nbsp;&nbsp;');
    str = str.replace(/\n/g, '<br />');
    return str;
});
// 分割
template.helper('split', function (str) {
    return str.split(' ');
});

template.helper('datetimeToDate', function (datetime) {
    if (typeof (datetime) === 'undefined') {
        return '';
    }
    return datetime.split(' ')[0];
});

// 算年龄
template.helper('yearOld', function (str) {
    var num = parseInt(str, 0);
    if (isNaN(num)) {
        return '--';
    }
    return new Date().getFullYear() - num;
});

// 处理舆情信息中,作者里面包含时间
template.helper('authorAndTime', function (author, time) {
    var arr = author.match(/\d{4}.{1}\d{2}.{1}\d{2}.*/);
    if (arr && arr[0]) {
        author = author.replace(arr[0], '').replace(/\s/g, '');
        if (!time) {
            time = arr[0].replace(/[年月]/g, '-').replace(/日/g, '');
        }
    }
    if (!time) {
        time = '';
    }
    return author + '    ' + time;
});

// 获取身份是原告还是被告
template.helper('identity', function (company, plaintiffList, defendantList) {
    if (plaintiffList && plaintiffList.join &&
        plaintiffList.join(',').indexOf(company) > -1) {
        return '原告';
    }
    if (defendantList && defendantList.join &&
        defendantList.join(',').indexOf(company) > -1) {
        return '被告';
    }
    return '--';
});

// 如果列表里面文字长度大于3,添加链接
template.helper('insertLink', function (arr, detailIndex) {
    if($.type(arr) === 'array'){
        for (var i = 0; i < arr.length; i++) {
            arr[i] = arr[i].replace(/\s/g, '');
            if (arr[i].length > 3 && arr[i].indexOf('公司') > -1) {
                var uri = '/detail_v2/' + detailIndex + '?name=' + encodeURIComponent(arr[i]);
                arr[i] = '<a href="' + uri + '" class="click-color" target="_blank">' + arr[i] + '</a>';
            }
        }
        if (arr instanceof Array && arr.length > 0) {
            return arr.join(',');
        }
    }
    if($.type(arr) === 'string'){
        arr = arr.replace(/\s/g, '');
        if (arr.length > 3 && arr.indexOf('公司') > -1) {
            var uri = '/detail_v2/profile_info'  + '?name=' + encodeURIComponent(arr);
            arr = '<a href="' + uri + '" class="click-color" target="_blank">' + arr + '</a>';
            return arr
        }
        return '--';
    }

    return '--';
});
// 如果列表里面文字长度大于3,添加链接
template.helper('investRadio', function (amountNum, amountUnit, investedNum, investedUnit, exchange) {
    // 先化成元
    if (amountUnit !== '元') {
        if (exchange[amountUnit]) {
            amountNum = amountNum * exchange[amountUnit];
        } else {
            return '--';
        }
    }
    if (investedUnit !== '元') {
        if (exchange[investedUnit]) {
            investedNum = investedNum * exchange[investedUnit];
        } else {
            return '--';
        }
    }
    if (!$.isNumeric(amountNum) || !$.isNumeric(investedNum)) {
        return '--';
    }
    if (parseInt(amountNum) === 0 || parseInt(investedNum) === 0) {
        return '--';
    }
    var value = investedNum / amountNum;
    return (value * 100).toFixed(2) + '%';

});

// indexOf
template.helper('indexOf', function (str, query) {
    return str.indexOf(query);
});
// indexOf
template.helper('arrayIndexOf', function (array, query) {
    if(!query) return false;
    if(array.indexOf(query)<0) {
        return false
    } else {
        return true
    }
});
// indexOf
template.helper('arrayObjectIndexOf', function (array, query) {
    if(!query) return false;
    var checkResult = false;
    for(var i = 0; i< array.length; i++) {
        if(array[i].id == query) {
            checkResult = true
        }
    }
    return checkResult
});
// 判断是不是空对象
template.helper('ObjectNull', function (object) {
    return Object.keys(object).length
});

// 不分大小写判断
template.helper('equalsIgnoreCase', function (str1, str2) {
    if (str1.toUpperCase() === str2.toUpperCase()) {
        return true;
    }
    return false;
});

// 根据数字生成数组
template.helper('getArray', function (num) {
    var arr = [];
    for (var i = 0; i < num; i++) {
        arr.push(i);
    }
    return arr;
});

// 转码成json
template.helper('parseJson', function (str) {
    var obj;
    try {
        obj = JSON.parse(str);
    } catch (error) {
        obj = {};
    }
    return obj;
});

// 截取特定后缀
template.helper('trimPostfix', function (str, regex) {
    return str.replace(regex, '');
});

// 主题类型
template.helper('themeType', function (str) {
    var map = {
        'detail': '数据详情',
        'graph': '图数据'
    };
    return map[str] || '--';
});

// 导出状态
template.helper('importStatus', function (str) {
    var map = {
        '0': '未导入',
        '1': '导入中',
        '2': '导入失败',
        '3': '正在中止',
        '4': '导入终止',
        '5': '导入结束'
    };
    return map[str] || '--';
});

// 数据源路径
template.helper('databasePath', function (data) {
    return (data.host || '--') + '/' + (data.port || '--') + '/' +
        (data.database || '--') + '/' + (data.source_table || '--');
});

// 页面图谱配置0:是;1:否
template.helper('graphConfigIs', function (data) {
    if (Number(data) === 0) {
        return "否"
    } else {
        return "是"
    }
});

// 页面图谱配置0:'数值筛选';1:'时间筛选',;2:'枚举筛选'
template.helper('graphConfigEnum', function (data) {
    if (data === "null") {
        return "无"
    } else if (data === "number") {
        return "数值筛选"
    } else if (data === "date") {
        return "时间筛选"
    } else if (data === "enums") {
        return "枚举筛选"
    } else {
        return "--"
    }
});

// ArraytoString data:数组{name:,id:};mid:分割的符号
template.helper('ArraytoString', function (data, mid) {
    if(!data || !mid || data.length===0) {
        return '--';
    }
    var newData = '';
    if(data instanceof Array) {
        for(var i = 0; i < data.length; i++) {
            if(i<data.length-1) {
                newData=newData + data[i].name + mid;
            } else {
                newData=newData + data[i].name;
            }
        }
        return newData;
    } else {
        return data
    }
});

// 返回首字母
template.helper('getPingYin', function (data) {
    if(!data || makePy(data).length<=0) {
        return '--'
    } else {
        return makePy(data)[0][0]
    }
});

//机会公海弹窗,configObj 数据转换
template.helper('formatVals', function (key, val) {
    var datetime_to_date = function (datetime) {
        if (typeof (datetime) === 'undefined') {
            return '';
        }
        return datetime.split(' ')[0];
    };

    var dateArr = ['publish_time', 'publish_date', 'filing_date', 'case_date', 'reg_date', 'court_time'];
    if (dateArr.indexOf(key) > -1) {
        return datetime_to_date(val);
    }
    if(key.indexOf('list') > -1){
        return String(val).replace(/"/g,'');
    }
    return val;
});

//截取数据前num个(关键字)
template.helper('spliceNum', function (val, num) {
    var num = Number(num) || 5 ;
    if(typeof val !== 'object' && typeof val !== 'string'){
        return '--'
    };

    if(typeof val === 'string'){
        var arr = val.split('、');
        var str = arr.slice(0,num).join('、');
        if(num < arr.length){
            str += '、...'
        }
        return str;
    }
    if(typeof val === 'object'){
        var arr = val;
        var str = arr.slice(0,num).join('、');
        if(num < arr.length){
            str += '、...'
        }
        return str;
    }
    return val;
});

// 检查是否存在异常
template.helper('checkError', function (data) {
    var array = ['吊销', '注销', '清算', '停业', '撤销']
    var status = array.indexOf(data)
    return status
});


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容