2019-03-07 二手平台小程序后台(注册,修改)

WXMineService.java

package com.drefore.secondhand.wechat.service;

import com.alibaba.fastjson.JSONObject;

import com.drefore.secondhand.core.utils.Constants;

import com.drefore.secondhand.core.utils.MailOperation;

import com.drefore.secondhand.core.utils.ServiceUtil;

import com.drefore.secondhand.core.utils.UploadUtil;

import com.drefore.secondhand.domain.*;

import com.drefore.secondhand.domain.Collection;

import com.drefore.secondhand.mapper.*;

import org.apache.commons.collections4.CollectionUtils;

import org.apache.ibatis.session.RowBounds;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.*;

@Service

public class WXMineService {

@Autowired

    ProductMapperproductMapper;

@Autowired

    UserMapperuserMapper;

@Autowired

    CollectionMappercollectionMapper;

@Autowired

    ProvincesMapperprovincesMapper;

@Autowired

    CitiesMappercitiesMapper;

@Autowired

    SchoolMapperschoolMapper;

@Autowired

    PaymentRulesMapperpaymentRulesMapper;

@Autowired

    RegisterMapperregisterMapper;

@Autowired

    NoticeLogMappernoticeLogMapper;

@Autowired

    NoticeMappernoticeMapper;

@Autowired

    RegisterSchoolMapperregisterSchoolMapper;

@Autowired

    AdconfigMapperadconfigMapper;

//我的信息

    public Map getMine(Integer userID) {

        return null;

}

//两个日期比较相等

    public boolean sameDate(Date d1, Date d2) {

SimpleDateFormat fmt =new SimpleDateFormat("yyyyMMdd");

//fmt.setTimeZone(new TimeZone()); // 如果需要设置时间区域,可以在这里设置

        return fmt.format(d1).equals(fmt.format(d2));

}

//获取收藏

    public Map getCollectionList(Integer userID, Integer pageNum, Integer pageSize) {

if (userID !=null && pageNum !=null && pageSize !=null) {

RowBounds rowBounds =new RowBounds(pageNum, pageSize);

Map dataMap =new HashMap<>();

CollectionCriteria cc =new CollectionCriteria();

cc.createCriteria().andUserIdEqualTo(userID);

cc.setOrderByClause("id DESC ");

List collectList =collectionMapper.selectByExampleWithRowbounds(cc, rowBounds);

List prod =new ArrayList<>();

for (Collection coll : collectList) {

Product product =productMapper.selectByPrimaryKey(coll.getProductId());

if(product.getDeleteFlag() ==true){

continue;

}

Map map =new HashMap<>();

map.put("productID", product.getId());

String[] images= product.getProductBanner().split(",");

if(images.length>0){

map.put("image",Constants.PRODUCT_URL +images[0]);

}

map.put("title", product.getProductTitle());

map.put("currentPrice", product.getProductPrice());

if (product.getProductState() ==0){

map.put("proState","已下架");

}

prod.add(map);

}

dataMap.put("products", prod);

return ServiceUtil.generateResponseMap(dataMap, Constants.STATE_SUCCESS);

}else {

return ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED);

}

}

//添加和删除收藏

    public Map addCollection(Integer userID, Integer productID) {

CollectionCriteria collectionCriteria =new CollectionCriteria();

collectionCriteria.createCriteria().andUserIdEqualTo(userID).andProductIdEqualTo(productID);

if (collectionMapper.countByExample(collectionCriteria) >0) {

collectionMapper.deleteByExample(collectionCriteria);

return ServiceUtil.generateResponseMap(null, Constants.STATE_SUCCESS);

}else {

Collection collection =new Collection();

collection.setUserId(userID);

collection.setProductId(productID);

Date date =new Date();

collection.setCollectTime(date);

int i =collectionMapper.insertSelective(collection);

return ServiceUtil.generateResponseMap(null, i >0 ? Constants.STATE_SUCCESS : Constants.STATE_FAILED);

}

}

//获取省

    public Map getProvinces() {

List provincesList =provincesMapper.selectByExample(new ProvincesCriteria());

Map map =new HashMap<>();

map.put("provincesList", provincesList);

return ServiceUtil.generateResponseMap(map, Constants.STATE_SUCCESS);

}

//获取城市

    public Map getCity(String provinceId) {

CitiesCriteria citiesCriteria =new CitiesCriteria();

citiesCriteria.createCriteria().andProvinceidEqualTo(provinceId);

List citiesList =citiesMapper.selectByExample(citiesCriteria);

Map map =new HashMap<>();

map.put("citiesList", citiesList);

return ServiceUtil.generateResponseMap(map, Constants.STATE_SUCCESS);

}

//获取学校

    public Map getSchool(String citiesId) {

SchoolCriteria schoolCriteria =new SchoolCriteria();

schoolCriteria.createCriteria().andCityIdEqualTo(citiesId);

List schoolList =schoolMapper.selectByExample(schoolCriteria);

Map map =new HashMap<>();

map.put("schoolList", schoolList);

return ServiceUtil.generateResponseMap(map, Constants.STATE_SUCCESS);

}

//获取缴费规则

    public Map getPaymentRules() {

PaymentRulesCriteria paymentRulesCriteria =new PaymentRulesCriteria();

paymentRulesCriteria.createCriteria().andStateEqualTo(0);

List paymentRules =paymentRulesMapper.selectByExample(paymentRulesCriteria);

Map map =new HashMap<>();

map.put("paymentRules", paymentRules);

return ServiceUtil.generateResponseMap(map, Constants.STATE_SUCCESS);

}

//注册

    public Map insertRegister(Integer paymentRulesId, String provincesId, String citiesId, Integer schoolId, Integer userId, String phone,String code, MultipartFile[] files)throws IOException {

RegisterCriteria registerCriteria =new RegisterCriteria();

registerCriteria.createCriteria().andUserIdEqualTo(userId);

List registerList =registerMapper.selectByExample(registerCriteria);

if (registerList.size() >0) {

if (code.equals(registerList.get(0).getEmailCode())){

if (registerList.get(0).getValidTime().getTime() >= (new Date()).getTime()) {

String Url = UploadUtil.getUrlFromFiles(files, Constants.SHOP_WA_QR_PATH);

Register register =new Register();

register.setProvinceId(provincesId);

register.setPaymentRulesId(paymentRulesId);

register.setImgUrl(Url);

register.setCityId(citiesId);

register.setSchoolId(schoolId);

register.setPhone(phone);

register.setShopTime(new Date());

register.setRegisterState(Constants.REGISTER_STATE_WAITING);

int i =registerMapper.updateByExampleSelective(register, registerCriteria);

Map map =new HashMap<>();

map.put("registerState", Constants.REGISTER_STATE_WAITING);

return ServiceUtil.generateResponseMap(map, i >0 ? Constants.STATE_SUCCESS : Constants.STATE_FAILED);

}else {

return ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED,"验证码超时");

}

}else {

return ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED,"验证码错误!");

}

}

return ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED,"验证码错误!");

}

//查询注册

    public Map selectRegister(Integer userId){

if (userId !=null) {

Map map =new HashMap<>();

RegisterCriteria registerCriteria =new RegisterCriteria();

registerCriteria.createCriteria().andUserIdEqualTo(userId);

List registerList =registerMapper.selectByExample(registerCriteria);

if (registerList.size()>0){

Register register = registerList.get(0);

String str[] =new String[1];

str[0] = Constants.SHOP_WA_QR_URL + register.getImgUrl();

map.put("register",register);

map.put("img",str);

List provincesList =provincesMapper.selectByExample(new ProvincesCriteria());

map.put("provincesList", provincesList);

Map citiesList = (Map) getCity(register.getProvinceId()).get("data");

Map schoolList = (Map) getSchool(register.getCityId()).get("data");

map.put("citiesList", citiesList.get("citiesList"));

map.put("schoolList", schoolList.get("schoolList"));

}

return ServiceUtil.generateResponseMap(map, Constants.STATE_SUCCESS);

}

return ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED);

}

//修改注册

    public Map updRegister(Integer Id, String provincesId, String citiesId, Integer schoolId, Integer userId, String phone,String email, MultipartFile[] files)throws IOException {

if (Id !=null) {

String Url = UploadUtil.getUrlFromFiles(files, Constants.SHOP_WA_QR_PATH);

Register register =new Register();

register.setId(Id);

register.setProvinceId(provincesId);

register.setEmail(email);

register.setImgUrl(Url);

register.setCityId(citiesId);

register.setSchoolId(schoolId);

register.setPhone(phone);

int i =registerMapper.updateByPrimaryKeySelective(register);

return ServiceUtil.generateResponseMap(null, i >0 ? Constants.STATE_SUCCESS : Constants.STATE_FAILED);

}

return ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED);

}

//获取用户权限

    public Map getRule(Integer userId) {

RegisterCriteria registerCriteria =new RegisterCriteria();

System.out.println(userId);

registerCriteria.createCriteria().andUserIdEqualTo(userId);

List registerList =registerMapper.selectByExample(registerCriteria);

int state = Constants.REGISTER_STATE_NO;

System.out.println(registerList);

System.out.println(registerList.get(0).getRegisterState());

if (registerList.size() >0) {

if (registerList.get(0).getRegisterState() == Constants.REGISTER_STATE_WAITING) {

state = Constants.REGISTER_STATE_WAITING;

}else if (registerList.get(0).getRegisterState() == Constants.REGISTER_STATE_SUCCESS) {

state = Constants.REGISTER_STATE_SUCCESS;

}else {

state = Constants.REGISTER_STATE_REFUND;

}

}

Map map =new HashMap<>();

map.put("registerState", state);

return ServiceUtil.generateResponseMap(map, Constants.STATE_SUCCESS);

}

public Map getCode(String email, Integer userID) {

if (email !=null) {

boolean flag =false;

RegisterCriteria registerCriteria =new RegisterCriteria();

registerCriteria.createCriteria().andEmailEqualTo(email);

List registerList =registerMapper.selectByExample(registerCriteria);

if (registerList.size() >1) {

return ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED,"邮箱已经被占用!");

}else if (registerList.size() ==1) {

Register register = registerList.get(0);

if (register.getUserId() == userID) {

flag =true;

}else {

return ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED,"邮箱已经被占用!");

}

}

MailOperation operation =new MailOperation();

String from ="13470091370@163.com";

String to = email;// 收件人

            String subject ="卓丰科技";

//邮箱内容

            StringBuffer sb =new StringBuffer();

Integer yzm = (int)(Math.random()*(9999-1000+1))+1000;//产生1000-9999的随机数;

            sb.append("<!DOCTYPE>"+"<div bgcolor='#f1fcfa'  style='border:1px solid #d9f4ee; font-size:14px; line-height:22px; color:#005aa0;padding-left:1px;padding-top:5px;  padding-bottom:5px;'><span style='font-weight:bold;'>温馨提示:"

                    +"<div style='width:950px;font-family:arial;'>欢迎使用本系统,您的验证码为:<br/><h2 style='color:green'>"+yzm+"</h2><br/>本邮件由系统自动发出,请勿回复。<br/>感谢您的使用。<br/>卓丰科技"

                    +"</div>");

try {

String res = operation.sendMail(from, to,

subject, sb.toString());

int i =0;

if ("success".equals(res)) {

RegisterCriteria registerCriteria1 =new RegisterCriteria();

registerCriteria1.createCriteria().andUserIdEqualTo(userID).andEmailEqualTo(email);

Register register =new Register();

register.setEmail(email);

register.setUserId(userID);

register.setEmailCode(yzm.toString());

Calendar calendar = Calendar.getInstance();

calendar.add(Calendar.MINUTE,5);

register.setValidTime(calendar.getTime());

if (flag) {

i =registerMapper.updateByExampleSelective(register, registerCriteria1);

}else {

i =registerMapper.insertSelective(register);

}

Map map =new HashMap<>();

map.put("code",yzm);

return i >0 ? ServiceUtil.generateResponseMap(map, Constants.STATE_SUCCESS) : ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED);

}else if ("failure".equals(res)) {

return ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED);

}

}catch (Exception e) {

e.printStackTrace();

return ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED);

}

}

return ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED,"邮箱不能为空!");

}

public Map getNotice(Integer userID,Integer offset,Integer limit){

User user =userMapper.selectByPrimaryKey(userID);

RowBounds rowBounds =new RowBounds(offset,limit);

Map maps =new HashMap<>();

List listNotice =new ArrayList<>();

Map params =new HashMap<>();

//userID == "普通用户"

        if (user.getAccessLevel() ==0){

//          查出所有等于0(并且状态是已发送的)的和 指定发的

            params.put("userID",userID);

System.out.println(user.getAccessLevel());

params.put("access",user.getAccessLevel());

listNotice=noticeMapper.selectByAccess(params,rowBounds);

}else if(user.getAccessLevel() ==1) {//userID == "商家"

//            查出所有等于0(并且状态是已发送的)和 等于1的 和指定发的

            params.put("userID",userID);

params.put("access",user.getAccessLevel());

listNotice=noticeMapper.selectByAccess(params,rowBounds);

}

maps.put("dataMap", listNotice);

return ServiceUtil.generateResponseMap(maps, Constants.STATE_SUCCESS);

}

public Map registerShool(String provinceID,String cityID,String schoolName){

RegisterSchoolCriteria registerSchoolCriteria =new RegisterSchoolCriteria();

registerSchoolCriteria.createCriteria().andCityIdEqualTo(cityID).andSchoolNameEqualTo(schoolName);

List registerSchools =registerSchoolMapper.selectByExample(registerSchoolCriteria);

if (registerSchools.size()>0){

return ServiceUtil.generateResponseMap(null, Constants.STATE_FAILED,"该学校申请已存在,正在审核中");

}

SchoolCriteria schoolCriteria=new SchoolCriteria();

schoolCriteria.createCriteria().andCityIdEqualTo(cityID).andSchoolNameEqualTo(schoolName);

List schoolList=schoolMapper.selectByExample(schoolCriteria);

if (schoolList.size()>0){

return  ServiceUtil.generateResponseMap(null,Constants.STATE_FAILED,"该学校已经存在");

}

RegisterSchool registerSchool =new RegisterSchool();

registerSchool.setProvinceId(provinceID);

registerSchool.setCityId(cityID);

registerSchool.setSchoolName(schoolName);

int i =registerSchoolMapper.insertSelective(registerSchool);

return ServiceUtil.generateResponseMap(null, i>0 ? Constants.STATE_SUCCESS:Constants.STATE_FAILED);

}

public Map getInstructions(){

List list =adconfigMapper.selectTotal();

Map map =new HashMap<>();

map.put("dataMap",list);

return ServiceUtil.generateResponseMap(map,Constants.STATE_SUCCESS);

}

}

WXMineController.java

package com.drefore.secondhand.wechat.controller;

import com.alibaba.fastjson.JSONObject;

import com.drefore.secondhand.wechat.service.WXMineService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

import java.io.IOException;

import java.text.ParseException;

import java.util.Map;

@Controller

@RequestMapping("/wechat/user")

public class WXMineController {

@Autowired

    private WXMineServicewxMineService;

//我的

    @ResponseBody

    @RequestMapping("/getMine")

public Map getMine(@RequestBody String parameters){

JSONObject jsonObject = JSONObject.parseObject(parameters);

Integer userID = jsonObject.getInteger("userID");

return wxMineService.getMine(userID);

}

//获取我的收藏

    @ResponseBody

    @RequestMapping("/getCollectionList")

public Map getCollectionList(@RequestBody String parameters){

JSONObject jsonObject = JSONObject.parseObject(parameters);

Integer userID = jsonObject.getInteger("userID");

Integer offset = jsonObject.getInteger("offset");

Integer limit = jsonObject.getInteger("limit");

return wxMineService.getCollectionList(userID,offset,limit);

}

//添加收藏

    @ResponseBody

    @RequestMapping("/addCollection")

public Map addCollection(@RequestBody String parameters){

JSONObject jsonObject = JSONObject.parseObject(parameters);

Integer userID = jsonObject.getInteger("userID");

Integer productID =jsonObject.getInteger("productID");

return wxMineService.addCollection(userID,productID);

}

//获取省

    @ResponseBody

    @RequestMapping("/getProvinces")

public Map getProvinces(){

return wxMineService.getProvinces();

}

//获取城市

    @ResponseBody

    @RequestMapping("/getCity")

public Map getCity(@RequestBody String parameters){

JSONObject jsonObject = JSONObject.parseObject(parameters);

String provinceId = jsonObject.getString("provinceId");

return wxMineService.getCity(provinceId);

}

//获取学校

    @ResponseBody

    @RequestMapping("/getSchool")

public Map getSchool(@RequestBody String parameters){

JSONObject jsonObject = JSONObject.parseObject(parameters);

String citiesId = jsonObject.getString("citiesId");

return wxMineService.getSchool(citiesId);

}

//获取缴费规则

    @ResponseBody

    @RequestMapping("/getPaymentRules")

public Map getPaymentRules(){

return wxMineService.getPaymentRules();

}

//注册

    @ResponseBody

    @RequestMapping("/insertRegister")

public Map insertRegister(HttpServletRequest request,@RequestParam(value ="file") MultipartFile[] file)throws IOException {

JSONObject jsonObject = JSONObject.parseObject(request.getParameter("parameters"));

Integer paymentRulesId = jsonObject.getInteger("paymentRulesId");

String provincesId = jsonObject.getString("provincesId");

String citiesId = jsonObject.getString("citiesId");

Integer schoolId = jsonObject.getInteger("schoolId");

Integer userId = jsonObject.getInteger("userId");

String phone = jsonObject.getString("phone");

String code = jsonObject.getString("code");

return wxMineService.insertRegister(paymentRulesId,provincesId,citiesId,schoolId,userId,phone,code,file);

}

//查询注册

    @ResponseBody

    @RequestMapping("/selectRegister")

public Map selectRegister(@RequestBody String parameters){

JSONObject jsonObject = JSONObject.parseObject(parameters);

Integer userId = jsonObject.getInteger("userId");

System.out.println(userId);

return wxMineService.selectRegister(userId);

}

//修改注册

    @ResponseBody

    @RequestMapping("/updRegister")

public Map updRegister(HttpServletRequest request,@RequestParam(value ="file") MultipartFile[] file)throws IOException {

JSONObject jsonObject = JSONObject.parseObject(request.getParameter("parameters"));

Integer Id = jsonObject.getInteger("Id");

String provincesId = jsonObject.getString("provincesId");

String citiesId = jsonObject.getString("citiesId");

Integer schoolId = jsonObject.getInteger("schoolId");

Integer userId = jsonObject.getInteger("userId");

String phone = jsonObject.getString("phone");

String email = jsonObject.getString("email");

return wxMineService.updRegister(Id,provincesId,citiesId,schoolId,userId,phone,email,file);

}

//获取用户权限

    @ResponseBody

    @RequestMapping("/getRule")

public Map getRule(@RequestBody String parameters){

JSONObject jsonObject = JSONObject.parseObject(parameters);

Integer userId = jsonObject.getInteger("userId");

return wxMineService.getRule(userId);

}

//获取验证码

    @ResponseBody

    @RequestMapping("/getCode")

public Map getCode (@RequestBody String parameters) {

JSONObject jsonObject = JSONObject.parseObject(parameters);

String email = jsonObject.getString("email");

Integer userID = jsonObject.getInteger("userID");

return wxMineService.getCode(email,userID);

}

//获取通知

    @ResponseBody

    @RequestMapping("/getNotice")

public Map getNotice (@RequestBody String parameters){

JSONObject jsonObject = JSONObject.parseObject(parameters);

Integer userID = jsonObject.getInteger("userID");

Integer offset = jsonObject.getInteger("offset");

Integer limit = jsonObject.getInteger("limit");

return wxMineService.getNotice(userID,offset,limit);

}

//学校申请

    @ResponseBody

    @RequestMapping("/registerShool")

public Map registerShool (@RequestBody String parameters){

JSONObject jsonObject = JSONObject.parseObject(parameters);

String provinceID = jsonObject.getString("provinceID");

String cityID = jsonObject.getString("cityID");

String schoolName = jsonObject.getString("schoolName");

return wxMineService.registerShool(provinceID,cityID,schoolName);

}

@ResponseBody

    @RequestMapping("/getInstructions")

public Map getInstructions(){

return wxMineService.getInstructions();

}

}

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

推荐阅读更多精彩内容