大项目之网上书城(九)——订单Demo
大项目之网上书城(九)——订单Demo
主要改动
加了创建订单,为订单付款,删除订单。
1.OrderServiceImpl
代码
有添加、删除、付款、根据是否付款查找。还加了添加收货信息登记。
package cn.edu.bdu.mc.services.impls;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import cn.edu.bdu.mc.beans.Book;
import cn.edu.bdu.mc.beans.Order;
import cn.edu.bdu.mc.beans.Orderitem;
import cn.edu.bdu.mc.daos.BookDao;
import cn.edu.bdu.mc.daos.OrderDao;
import cn.edu.bdu.mc.daos.OrderitemDao;
import cn.edu.bdu.mc.daos.impls.BookDaoImpl;
import cn.edu.bdu.mc.daos.impls.OrderDaoImpl;
import cn.edu.bdu.mc.daos.impls.OrderitemDaoImpl;
import cn.edu.bdu.mc.services.OrderService;
public class OrderServiceImpl implements OrderService {
private OrderDao orderDao = new OrderDaoImpl();
private OrderitemDao orderitemDao = new OrderitemDaoImpl();
private BookDao bookDao = new BookDaoImpl();
@Override
public boolean addOrder(String order_id, int user_id, String name, String address, String phone, String[] book_ids) throws SQLException {
// TODO Auto-generated method stub
List<Book>books = new ArrayList<Book>();
for (String book_id : book_ids) {
Book book = bookDao.findBookById(Integer.parseInt(book_id));
books.add(book);
//如果数量不够了就本次购买失败
if(book.getCount()==0) {
return false;
}
}
Order order = new Order();
order.setUser_id(user_id);
order.setReciver_name(name);
order.setReciver_phone(phone);
order.setReciver_address(address);
order.setOrder_id(order_id);
orderDao.addOrder(order);
for (Book book : books) {
Orderitem orderitem = new Orderitem();
orderitem.setBook_id(book.getBook_id());
orderitem.setOrder_id(order_id);
orderitem.setCount(1);
orderitem.setPrice(book.getPrice());
book.setCount(book.getCount()-1);
bookDao.update(book);
orderitemDao.addOrderitem(orderitem);
}
return true;
}
@Override
public void AfterPay(String order_id) throws SQLException {
Order order = orderDao.findOrderById(order_id);
order.setPaystate(1);
orderDao.update(order);
}
@Override
public Order delById(String order_id) throws SQLException {
// TODO Auto-generated method stub
Order order = orderDao.delById(order_id);
orderitemDao.delById(order_id);
return order;
}
@Override
public List<Order> findNotPayByUser_id(int user_id) throws SQLException {
// TODO Auto-generated method stub
return orderDao.findOrderByUser_id(user_id, 0);
}
@Override
public List<Order> findAreadyPayByUser_id(int user_id) throws SQLException {
// TODO Auto-generated method stub
return orderDao.findOrderByUser_id(user_id, 1);
}
}
2.OrderDaoImpl
代码
目前有添加、删除、根据order_id查找和根据user_id查找
package cn.edu.bdu.mc.daos.impls;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.sql.DataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import cn.edu.bdu.mc.beans.Order;
import cn.edu.bdu.mc.daos.OrderDao;
import cn.edu.bdu.mc.utils.JDBCUtil;
public class OrderDaoImpl implements OrderDao {
private DataSource dataSource = JDBCUtil.getDataSource();
private QueryRunner queryRunner = new QueryRunner(dataSource);
@Override
public void addOrder(Order order) throws SQLException {
// TODO Auto-generated method stub
String sql = "insert into `order`(user_id,order_id,reciver_name,reciver_phone,reciver_address,paystate,money,order_time) values(?,?,?,?,?,0,0,?)";
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
String date1 = dateFormat.format(date);
queryRunner.update(sql,order.getUser_id(),order.getOrder_id(),order.getReciver_name(),order.getReciver_phone(),order.getReciver_address(),date1);
}
@Override
public void update(Order order) throws SQLException {
// TODO Auto-generated method stub
String sql = "update `order` set user_id = ?,reciver_name = ?,reciver_phone = ?,reciver_address = ?,paystate = ?,money = ?,order_time = ?";
queryRunner.update(sql,order.getUser_id(),order.getReciver_name(),order.getReciver_phone(),order.getReciver_address(),order.getPaystate(),order.getMoney(),order.getOrder_time());
}
@Override
public Order findOrderById(String order_id) throws SQLException {
// TODO Auto-generated method stub
String sql = "select * from `order` where order_id = ?";
return queryRunner.query(sql, new BeanHandler<Order>(Order.class), order_id);
}
@Override
public Order delById(String order_id) throws SQLException {
Order order = findOrderById(order_id);
String sql = "delete from `order` where order_id = ?";
queryRunner.update(sql, order_id);
return order;
}
@Override
public List<Order> findOrderByUser_id(int user_id, int paystate) throws SQLException {
// TODO Auto-generated method stub
String sql = "select * from `order` where user_id = ? and paystate = ?";
return queryRunner.query(sql, new BeanListHandler<Order>(Order.class), user_id, paystate);
}
}
3.OrderitemDaoImpl
代码
目前有添加和删除
package cn.edu.bdu.mc.daos.impls;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.apache.commons.dbutils.QueryRunner;
import cn.edu.bdu.mc.beans.Orderitem;
import cn.edu.bdu.mc.daos.OrderitemDao;
import cn.edu.bdu.mc.utils.JDBCUtil;
public class OrderitemDaoImpl implements OrderitemDao {
private DataSource dataSource = JDBCUtil.getDataSource();
private QueryRunner queryRunner = new QueryRunner(dataSource);
@Override
public void addOrderitem(Orderitem orderitem) throws SQLException {
// TODO Auto-generated method stub
String sql = "insert into orderitem values (?,?,?,?)";
queryRunner.update(sql,orderitem.getOrder_id(),orderitem.getBook_id(),orderitem.getCount(),orderitem.getPrice());
}
@Override
public void delById(String order_id) throws SQLException {
// TODO Auto-generated method stub
String sql = "delete from `order` where order_id = ?";
queryRunner.update(sql, order_id);
}
}
4.orderitem_insert触发器
代码
orderitem中每增加一项,将他对应的order_id的订单的钱增加上他的书的价格乘以数量。
DROP TRIGGER IF EXISTS `orderitem_insert`;
DELIMITER ;;
CREATE TRIGGER `orderitem_insert` AFTER INSERT ON `orderitem` FOR EACH ROW begin
update `order` set money = money + new.price * new.count where order_id = new.order_id;
end
;;
DELIMITER ;
5.DelOrderServlet
代码
package cn.edu.bdu.mc.servlets;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.edu.bdu.mc.beans.Order;
import cn.edu.bdu.mc.services.OrderService;
import cn.edu.bdu.mc.services.impls.OrderServiceImpl;
/**
* Servlet implementation class DelOrderServlet
*/
@WebServlet("/DelOrder")
public class DelOrderServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public DelOrderServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String order_id = request.getParameter("order_id");
OrderService orderService = new OrderServiceImpl();
Order order = orderService.delById(order_id);
response.sendRedirect(request.getContextPath()+"/client/order.jsp");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
6.NewOrderServlet
代码
package cn.edu.bdu.mc.servlets;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.edu.bdu.mc.beans.Order;
import cn.edu.bdu.mc.beans.User;
import cn.edu.bdu.mc.services.OrderService;
import cn.edu.bdu.mc.services.impls.OrderServiceImpl;
/**
* Servlet implementation class NewOrderServlet
*/
@WebServlet("/NewOrder")
public class NewOrderServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public NewOrderServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if(request.getSession().getAttribute("shouhuo")==null) {
response.sendRedirect(request.getContextPath()+"/client/shouhuo.jsp");
}else {
try {
String[] book_ids = request.getParameter("book_id_list").split("#");
User user = (User) request.getSession().getAttribute("user");
int user_id = user.getUser_id();
Map<String, String>shouhuo = (Map<String, String>) request.getSession().getAttribute("shouhuo");
String name = shouhuo.get("name");
String phone = shouhuo.get("phone");
String address = shouhuo.get("address");
OrderService orderService = new OrderServiceImpl();
String order_id = UUID.randomUUID().toString();
boolean create_order = orderService.addOrder(order_id, user_id, name, address, phone, book_ids);
if(create_order) {
String htmlCode="<!DOCTYPE html>\n" +
"<html>"
+ "<head>"
+ "<link rel=\"stylesheet\" href=\""+request.getContextPath()+"/bootstrap-3.3.7-dist/css/bootstrap.min.css\">"
+ "</head>"
+ "<body>"
+ "<div style=\"position:absolute;left:44%;top:42%;height:140px;width:240px;background-color:rgba(145, 162, 196, 0.9);border:1px;text-align:center;\"id=\"quit1\">\r\n" +
" <h3>订单创建成功!请尽快付款!</h3><a class=\"btn btn-info\" href=\""+request.getContextPath()+"/client/order.jsp\">查看订单</a> "
+"<a class=\"btn btn-info\" href=\""+request.getContextPath()+"/PayFor?order_id=\""+order_id+">立即付款</a>\n" +
"</div>"
+ "</body>"
+ "</html>";
response.getWriter().write(htmlCode);
}else {
String htmlCode="<!DOCTYPE html>\n" +
"<html>"
+ "<head>"
+ "<link rel=\"stylesheet\" href=\""+request.getContextPath()+"/bootstrap-3.3.7-dist/css/bootstrap.min.css\">"
+ "</head>"
+ "<body>"
+ "<div style=\"position:absolute;left:44%;top:46%;height:100px;width:240px;background-color:rgba(145, 162, 196, 0.9);border:1px;text-align:center;\"id=\"quit1\">\r\n" +
" <h3>订单创建失败!请检查订单!</h3><a class=\"btn btn-info\" href=\""+request.getContextPath()+"/client/order.jsp\">查看订单</a> "
+"<a class=\"btn btn-info\" href=\""+request.getContextPath()+"/client/index.jsp\">再逛逛</a>\n" +
"</div>"
+ "</body>"
+ "</html>";
response.getWriter().write(htmlCode);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
7.PayForServlet
代码
package cn.edu.bdu.mc.servlets;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.edu.bdu.mc.beans.Order;
import cn.edu.bdu.mc.beans.User;
import cn.edu.bdu.mc.daos.OrderDao;
import cn.edu.bdu.mc.daos.impls.OrderDaoImpl;
import cn.edu.bdu.mc.services.OrderService;
import cn.edu.bdu.mc.services.impls.OrderServiceImpl;
/**
* Servlet implementation class PayForServlet
*/
@WebServlet("/PayFor")
public class PayForServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public PayForServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String order_id = request.getParameter("order_id");
OrderService orderService = new OrderServiceImpl();
orderService.AfterPay(order_id);
String htmlCode="<!DOCTYPE html>\n" +
"<html>"
+ "<head>"
+ "<link rel=\"stylesheet\" href=\""+request.getContextPath()+"/bootstrap-3.3.7-dist/css/bootstrap.min.css\">"
+ "</head>"
+ "<body>"
+ "<div style=\"position:absolute;left:44%;top:46%;height:100px;width:240px;background-color:rgba(145, 162, 196, 0.9);border:1px;text-align:center;\"id=\"quit1\">\r\n" +
" <h3>购买成功!</h3><a class=\"btn btn-info\" href=\""+request.getContextPath()+"/client/index.jsp\">继续购买</a> "
+"<a class=\"btn btn-info\" href=\""+request.getContextPath()+"/client/order.jsp\">查看订单</a>\n" +
"</div>"
+ "</body>"
+ "</html>";
response.getWriter().write(htmlCode);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
8.shouhuo.jsp
代码
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>收货地址</title>
</head>
<body style="background-color:#bbb;width:1400px;margin:0 auto">
<!-- 调用头部页面 -->
<div style="width:100%;height:100px;float:left">
<jsp:include page="/client/head.jsp"></jsp:include>
</div>
<!-- 通用内容体大小 -->
<div style="width:70%;height:720px;float:left;margin-left:15%;">
<!-- 好看的图 -->
<div style="width:55%;height:100%;float:left;margin-top:10%;">
<img alt="快递员" src="${pageContext.request.contextPath }/client/img/kuaidi.jpg" style="width:90%;">
</div>
<!-- 登录界面 -->
<div style="width:45%;height:80%;float:left;margin-top:7%">
<h1 style="color:#8b6914;text-align:center">收货信息</h1>
<hr style="height:2px;border:none;border-top:5px ridge green;" />
<form action="${pageContext.request.contextPath }/ShouHuo" method="post" class="form-horizontal" role="form">
<div class="form-group">
<label for="lastname" class="col-sm-3 control-label input-lg">姓名</label>
<div class="col-sm-9">
<input type="text" name="name" class="form-control input-lg"
placeholder="收货人姓名" style="float:left"/>
</div>
</div>
<div class="form-group">
<label for="firstname" class="col-sm-3 control-label input-lg">手机号</label>
<div class="col-sm-9">
<input type="text" name="phone"
class="form-control input-lg" placeholder="收货人手机号" style="float:left"/>
</div>
</div>
<div class="form-group">
<label for="firstname" class="col-sm-3 control-label input-lg">地址</label>
<div class="col-sm-9">
<input type="text" name="address"
class="form-control input-lg" placeholder="收货人地址" style="float:left"/>
</div>
</div>
<div class="form-group">
<label for="firstname" class="col-sm-1 control-label input-lg"></label>
<div class="col-sm-5">
<input type="submit" name="submit" value="提交"
class="form-control input-lg btn btn-primary"style="width:100%;float:left"/>
</div>
<div class="col-sm-5">
<input type="reset" name="reset" value="重置" id="re"
class="form-control input-lg btn btn-warning"style="width:100%;float:left"/>
</div>
</div>
</form>
</div>
</div>
<!-- 调用底部页面 -->
<div style="width:100%;height:60px;float:left">
<jsp:include page="/client/foot.jsp"></jsp:include>
</div>
</body>
</html>
效果图

9.order.jsp
代码
<%@page import="cn.edu.bdu.mc.beans.User"%>
<%@page import="cn.edu.bdu.mc.services.impls.OrderServiceImpl"%>
<%@page import="cn.edu.bdu.mc.services.OrderService"%>
<%@page import="cn.edu.bdu.mc.beans.Order"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>订单</title>
</head>
<%
User user = (User)request.getSession().getAttribute("user");
OrderService orderService = new OrderServiceImpl();
List<Order>notPay = orderService.findNotPayByUser_id(user.getUser_id());
List<Order>areadyPay = orderService.findAreadyPayByUser_id(user.getUser_id());
%>
<body style="background-color:#bbb;width:1400px;margin:0 auto">
<!-- 调用头部页面 -->
<div style="width:100%;height:100px;float:left">
<jsp:include page="/client/head.jsp"></jsp:include>
</div>
<!-- 通用内容体大小 -->
<div style="width:70%;height:720px;float:left;margin-left:15%;">
未付款:<br>
<% if(notPay==null){ %>
无<br>
<% }else{ %>
<% for(Order order : notPay){%>
id=<font><%=order.getOrder_id() %></font> money=<font><%=order.getMoney() %></font>
<a href="${pageContext.request.contextPath }/PayFor?order_id=<%=order.getOrder_id() %>">付款</a>
<a href="${pageContext.request.contextPath }/DelOrder?order_id=<%=order.getOrder_id() %>">删除</a>
<br>
<% } %>
<% } %>
已付款:<br>
<% if(areadyPay==null){ %>
无<br>
<% }else{ %>
<% for(Order order : areadyPay){%>
id=<font><%=order.getOrder_id() %></font> money=<font><%=order.getMoney() %></font>
<br>
<% } %>
<% } %>
</div>
<!-- 调用底部页面 -->
<div style="width:100%;height:60px;float:left">
<jsp:include page="/client/foot.jsp"></jsp:include>
</div>
</body>
</html>
效果图

点击付款后,还删除了一个,忘截图了


总结
今天弄得不是很多,又是各种报错。再加上开始的晚,于是拖到了现在才更。
大项目之网上书城(九)——订单Demo的更多相关文章
- 大项目之网上书城(六)——个人页面和书页面Demo
目录 大项目之网上书城(六)--个人页面和书页面Demo 主要改动 1.user.jsp 代码 效果图 user.js 代码 3.shu.jsp 代码 效果图 4.其他小改动 LoginServlet ...
- 大项目之网上书城(八)——数据库大改&添加图书
目录 大项目之网上书城(八)--数据库大改&添加图书 主要改动 1.数据库新增表 代码 2.数据库新增触发器 3.其他对BookService和BookDao的修改 代码 4.addBook. ...
- 大项目之网上书城(七)——书页面以及加入购物车Servlet
目录 大项目之网上书城(七)--书页面以及加入购物车Servlet 主要改动 1.shu.jsp 代码 效果图 2.shu.js 代码 3.index.jsp 代码 效果图 4.FindBookByC ...
- 大项目之网上书城(五)——主页(End)
目录 大项目之网上书城(五)--主页(End) 主要改动 1.主页(终于完成啦) 完整代码 效果图 2.head.jsp的小改动 代码 3.login.jsp ###代码 效果图 4.login.js ...
- Apicloud_(项目)网上书城03_拓展模块实现
Apicloud_(项目)网上书城01_前端页面开发 传送门 Apicloud_(项目)网上书城02_后端数据获取 传送门 Apicloud_(项目)网上书城03_拓展模块实现 传送门 实现商品详情页 ...
- Apicloud_(项目)网上书城02_后端数据获取
Apicloud_(项目)网上书城01_前端页面开发 传送门 Apicloud_(项目)网上书城02_后端数据获取 传送门 Apicloud_(项目)网上书城03_拓展模块实现 传送门 ApiClou ...
- Apicloud_(项目)网上书城01_前端搭建
[本文皆在记录自己开发Apicloud项目过程,不具备教学水平性文章] 参考书籍<30天App开发从0到1> Apicloud_(项目)网上书城01_前端页面开发 传送门 Apicloud ...
- ASP.NET MVC搭建项目后台UI框架—5、Demo演示Controller和View的交互
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- 2014年基于Raspberry Pi的5大项目
2014年基于Raspberry Pi的5大项目 Raspberry Pi(即树莓派)是一款基于Linux系统(Debian.ArchLinux)的单板机计算机,它只有一张信用卡大小,可用于电子表 ...
随机推荐
- 80个Python经典资料(教程+源码+工具)汇总——下载目录 ...
原文转自:http://bbs.51cto.com/thread-935214-1.html 大家好,51CTO下载中心根据资料的热度和好评度收集了80个Python资料,分享给Python开发的同学 ...
- 1.Ext.onReady详解
转自:https://blog.csdn.net/xufang461010923/article/details/37660139 我们知道,只有在Ext框架全部加载完后才能在客户端的代码中使用Ext ...
- 使用Asp.net Identity 创建用户 、登录代码
1.Identity 1中的注册.登录.注销代码 vs 2013中自带的注册用户代码: 1.首先创建一个ApplicationUser 初始化用户名. 2.使用UserManager创建一个用户,用使 ...
- 关于CentOS 7安装solr+tomcat
1.Solr7.1.0 安装部署(centos7) Solr7.1.0为目前的最新版,安装环境需要jdk1.8 或者更高,容器我用的tomcat,也建议tomcat8.0或者更高 1.1.下载solr ...
- javascript前端面试题及答案整理
Part1 手写代码 现场手写代码是现在面试中很常见的一类面试题,考察基础的数据结构与算法能力. 1 数组去重的实现 基本数组去重 Array.prototype.unique = function( ...
- E20180128-hm
paradigm n. 范例,样式,模范; 词形变化表; outlet n. 出口,出路; 批发商店; 排水口,通风口; 发泄(情感)的方法;
- 正睿多校联盟训练Week6
并没有参加 Problem A.阿瓦分蛋糕输入文件: cake.in输出文件: cake.out时间限制: 1 second空间限制: 512 megabytes阿瓦为了庆祝自己自己成长为了一只可爱的 ...
- C语言atoi()函数:将字符串转换成int(整数)
头文件:#include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为:int atoi (const char * str); [函数说明]atoi ...
- 【react native】rn踩坑实践——从输入框“们”开始
因为团队技术栈变更为react native,所以开始写起了rn的代码,虽然rn与react份数同源,但是由于有很多native有关的交互和变动,实际使用还是碰到蛮多问题的,于是便有了这个系列,本来第 ...
- [CTSC2000]丘比特的烦恼
Description 随着社会的不断发展,人与人之间的感情越来越功利化.最近,爱神丘比特发现,爱情也已不再是完全纯洁的了.这使得丘比特很是苦恼,他越来越难找到合适的男女,并向他们射去丘比特之箭.于是 ...