From d389d62de6130d1a64d2c26986e22b7f8ecf6876 Mon Sep 17 00:00:00 2001
From: Yo Vinchen <2982554722@qq.com>
Date: Mon, 28 Nov 2022 14:43:56 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9C=80=E5=90=8E=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/artifacts/shop_war_exploded.xml | 4 +-
.idea/misc.xml | 3 +
README.md | 31 -----
src/com/qf/controller/AddressController.java | 115 ++++++++++++++++--
src/com/qf/controller/BaseServlet.java | 8 +-
src/com/qf/controller/CartController.java | 24 +++-
src/com/qf/controller/CodeController.java | 3 +
src/com/qf/controller/ProductController.java | 28 ++++-
src/com/qf/controller/TypeController.java | 3 +-
src/com/qf/controller/UserController.java | 67 ++++++++--
src/com/qf/dao/AddressDao.java | 36 ++++++
src/com/qf/dao/CartDao.java | 41 +++++++
src/com/qf/dao/ProductDao.java | 20 +++
src/com/qf/dao/TypeDao.java | 9 +-
src/com/qf/dao/UserDao.java | 19 ++-
src/com/qf/dao/impl/AddressDaoImpl.java | 109 +++++++++++++++++
src/com/qf/dao/impl/CartDaoImpl.java | 64 +++++++++-
src/com/qf/dao/impl/ProductDaoImpl.java | 54 +++++---
src/com/qf/dao/impl/TypeDaoImpl.java | 11 +-
src/com/qf/dao/impl/UserDaoImpl.java | 37 ++++--
src/com/qf/service/AddressService.java | 39 ++++++
src/com/qf/service/CartService.java | 31 +++++
src/com/qf/service/ProductService.java | 15 +++
src/com/qf/service/TypeService.java | 10 +-
src/com/qf/service/UserService.java | 28 ++++-
.../qf/service/impl/AddressServiceImpl.java | 70 +++++++++++
src/com/qf/service/impl/CartServiceImpl.java | 52 ++++++--
.../qf/service/impl/ProductServiceImpl.java | 26 ++--
src/com/qf/service/impl/TypeServiceImpl.java | 10 +-
src/com/qf/service/impl/UserServiceImpl.java | 39 ++++--
src/com/qf/utils/PaymentUtil.java | 6 +-
.../lib/mysql-connector-java-5.0.8-bin.jar | Bin 540852 -> 0 bytes
web/cartSuccess.jsp | 2 +-
33 files changed, 864 insertions(+), 150 deletions(-)
delete mode 100644 web/WEB-INF/lib/mysql-connector-java-5.0.8-bin.jar
diff --git a/.idea/artifacts/shop_war_exploded.xml b/.idea/artifacts/shop_war_exploded.xml
index e789a20..af692c4 100644
--- a/.idea/artifacts/shop_war_exploded.xml
+++ b/.idea/artifacts/shop_war_exploded.xml
@@ -1,7 +1,7 @@
-
+
$PROJECT_DIR$/out/artifacts/shop_war_exploded
-
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 7d987d3..04379a9 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -6,6 +6,9 @@
+
+
+
diff --git a/README.md b/README.md
index 188094d..e69de29 100644
--- a/README.md
+++ b/README.md
@@ -1,31 +0,0 @@
-# xiaomi_shop(小米商城)
-
-这是一个 Java Web 项目,是仿照小米官网的网上商城小米商城项目练手项目
-
-项目演示地址:https://xiaomi.hhdxw.top/
-
-此项目部署在华为云+腾讯云数据库(下手轻点,别给刷爆了)
-
-
-
-主要有一下模块构成
-
-#### 1.用户模块功能
-
-详细描述:新用户注册,用户登录,自动登录,注销登录
-
-#### 2.商品模块功能
-
-详细描述:商品分页展示,商品详情展示,商品类别展示
-
-#### 3.购物车模块功能
-
-详细描述:添加购物车功能,查看购物车功能,购物车单条删除功能,购物车数量修改功能,清空购物车功能
-
-#### 4.地址模块功能
-
-详细描述:地址添加功能,地址显示功能,设置默认地址功能,删除地址功能,修改地址功能
-
-#### 5.订单模块功能
-
-详细描述:订单预览功能,订单生成功能,订单展示功能,订单支付功能
diff --git a/src/com/qf/controller/AddressController.java b/src/com/qf/controller/AddressController.java
index b5be338..4672b02 100644
--- a/src/com/qf/controller/AddressController.java
+++ b/src/com/qf/controller/AddressController.java
@@ -1,26 +1,127 @@
package com.qf.controller;
-import com.qf.service.CartService;
-import com.qf.service.impl.CartServiceImpl;
+import com.qf.entity.Address;
+import com.qf.entity.User;
+import com.qf.service.AddressService;
+import com.qf.service.impl.AddressServiceImpl;
import com.qf.utils.Constants;
+import org.apache.commons.beanutils.BeanUtils;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
+import java.util.List;
+import java.util.Map;
+/**
+ * @author 小灰灰呀
+ */
@WebServlet("/address")
public class AddressController extends BaseServlet {
- public String show(HttpServletRequest request, HttpServletResponse response){
+ /**
+ * 1.查看收货地址
+ */
+ public String show(HttpServletRequest request, HttpServletResponse response) throws SQLException {
+ //1.判断用户是否登录
+ HttpSession session = request.getSession();
+ //获取session中的用户信息
+ User user = (User) session.getAttribute("loginUser");
+ if (user == null) {
+ session.setAttribute("msg", "查看地址必须先登录!");
+ return Constants.FORWARD + "/login.jsp";
+ }
- //1.获取请求参数
+ //2.获取请求参数
+ int uid = user.getUid();
- //2.调用对应的业务逻辑 清空购物车
+ //3.调用对应的业务逻辑
+ AddressService addressService = new AddressServiceImpl();
+ List
addresses = addressService.findAddressByUid(uid);
- //3.转发到展示方法中
- return Constants.FORWARD + "/cart?method=show";
+ //4.将获取到的地址信息转发到共享域中
+ request.setAttribute("list", addresses);
+
+ //5.转发到展示方法中
+ return Constants.FORWARD + "/self_info.jsp";
}
+ /**
+ * 2.新增收货地址
+ */
+ public String add(HttpServletRequest request, HttpServletResponse response) throws InvocationTargetException, IllegalAccessException, SQLException {
+ //1.获取输入的地址信息
+ Map map = request.getParameterMap();
+
+ Address address = new Address();
+ BeanUtils.populate(address, map);
+
+ //2.调用业务逻辑进行地址的添加
+ AddressService addressService = new AddressServiceImpl();
+ addressService.saveAddress(address);
+
+ //3.转发到展示方法中,重新加载数据
+ return Constants.FORWARD + "/address?method=show";
+ }
+
+ /**
+ * 3.设置默认收货地址
+ */
+ public String setDefault(HttpServletRequest request, HttpServletResponse response) throws SQLException {
+
+ //1.获取请求参数
+ String aid = request.getParameter("aid");
+
+ //2.获取用户uid
+ HttpSession session = request.getSession();
+ User user = (User) session.getAttribute("loginUser");
+ int uid = user.getUid();
+
+ //3.调用业务逻辑进行地址修改
+ AddressService addressService = new AddressServiceImpl();
+ addressService.setAddressToDefault(aid, uid);
+
+ //4.转发到展示方法
+ return Constants.FORWARD + "/address?method=show";
+ }
+
+ /**
+ * 4.删除收货地址
+ */
+ public String delete(HttpServletRequest request, HttpServletResponse response) throws SQLException {
+
+ //1.获取请求参数
+ String aid = request.getParameter("aid");
+
+ //2.调用业务逻辑进行地址添加
+ AddressService addressService = new AddressServiceImpl();
+ addressService.deleteAddressByAid(aid);
+
+ //3.转发到展示方法
+ return Constants.FORWARD + "/address?method=show";
+ }
+
+ /**
+ * 5.修改收货地址
+ */
+ public String update(HttpServletRequest request, HttpServletResponse response) throws InvocationTargetException, IllegalAccessException, SQLException {
+
+ //1.获取修改的数据
+ Map map = request.getParameterMap();
+
+ //转换为 Address 类型方便传输
+ Address address = new Address();
+ BeanUtils.populate(address, map);
+
+ //2.调用业务逻辑进行地址修改
+ AddressService addressService = new AddressServiceImpl();
+ addressService.updateByAid(address);
+
+ //3.转发到展示方法
+ return Constants.FORWARD + "/address?method=show";
+ }
}
diff --git a/src/com/qf/controller/BaseServlet.java b/src/com/qf/controller/BaseServlet.java
index c888f36..1bc661a 100644
--- a/src/com/qf/controller/BaseServlet.java
+++ b/src/com/qf/controller/BaseServlet.java
@@ -10,20 +10,20 @@ import java.io.IOException;
import java.lang.reflect.Method;
public class BaseServlet extends HttpServlet {
- //重写service方法,来处理反射的业务逻辑
+ /**
+ * 重写service方法,来处理反射的业务逻辑
+ */
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
-
//1.获取请求参数(标识符)
String methodStr =req.getParameter(Constants.TAG);
- //我们在这做一个处理。2.如果method没有获取到值!我们就跳转到首页!(标识符异常处理)
+ //2.如果method没有获取到值 就跳转到首页 (标识符异常处理)
if (methodStr==null&& methodStr.equals("")){
methodStr= Constants.INDEX;
}
-
//3.反射调用对应的业务逻辑方法
Class clazz=this.getClass();
try {
diff --git a/src/com/qf/controller/CartController.java b/src/com/qf/controller/CartController.java
index 168d6e3..a7a1f86 100644
--- a/src/com/qf/controller/CartController.java
+++ b/src/com/qf/controller/CartController.java
@@ -14,11 +14,15 @@ import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.List;
+/**
+ * @author 小灰灰呀
+ */
@WebServlet("/cart")
-
public class CartController extends BaseServlet {
- //加入购物车
+ /**
+ * 1.加入购物车
+ */
public String create(HttpServletRequest request, HttpServletResponse response) throws SQLException, InvocationTargetException, IllegalAccessException {
//1.判断用户是否登录,没有登录跳转到登录页面
@@ -43,7 +47,9 @@ public class CartController extends BaseServlet {
return Constants.FORWARD + "/cartSuccess.jsp";
}
- //查看购物车
+ /**
+ * 2.查看购物车
+ */
public String show(HttpServletRequest request, HttpServletResponse response) throws SQLException, InvocationTargetException, IllegalAccessException {
//1.判断用户是否登录
HttpSession session = request.getSession();
@@ -68,7 +74,9 @@ public class CartController extends BaseServlet {
return Constants.FORWARD + "/cart.jsp";
}
- //购物车中删除物品
+ /**
+ * 3.购物车中删除物品
+ */
public String delete(HttpServletRequest request, HttpServletResponse response) throws SQLException {
//1.获取请求参数
@@ -82,7 +90,9 @@ public class CartController extends BaseServlet {
return Constants.FORWARD + "/cart?method=show";
}
- //购物车中数量更改
+ /**
+ * 4.购物车中数量更改
+ */
public String update(HttpServletRequest request, HttpServletResponse response) throws SQLException {
//1.获取请求参数 cid 商品单价price 商品修改后数量cnum
@@ -98,7 +108,9 @@ public class CartController extends BaseServlet {
return Constants.FORWARD + "/cart?method=show";
}
- //清空购物车
+ /**
+ * 5.清空购物车
+ */
public String clear(HttpServletRequest request, HttpServletResponse response) throws SQLException {
//1.获取请求参数
diff --git a/src/com/qf/controller/CodeController.java b/src/com/qf/controller/CodeController.java
index 664b6a6..afce099 100644
--- a/src/com/qf/controller/CodeController.java
+++ b/src/com/qf/controller/CodeController.java
@@ -8,6 +8,9 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+/**
+ * @author 小灰灰呀
+ */
@WebServlet("/code")
public class CodeController extends BaseServlet {
public void createCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
diff --git a/src/com/qf/controller/ProductController.java b/src/com/qf/controller/ProductController.java
index b6cc0b6..5b9fc2b 100644
--- a/src/com/qf/controller/ProductController.java
+++ b/src/com/qf/controller/ProductController.java
@@ -11,8 +11,20 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.SQLException;
+/**
+ * @author 小灰灰呀
+ */
@WebServlet("/product")
public class ProductController extends BaseServlet {
+
+ /**
+ * 1.商品分页展示
+ *
+ * @param request
+ * @param response
+ * @return
+ * @throws SQLException
+ */
public String show(HttpServletRequest request, HttpServletResponse response) throws SQLException {
//1.获取请求参数
String tid = request.getParameter("tid");
@@ -34,18 +46,24 @@ public class ProductController extends BaseServlet {
return Constants.FORWARD + "/goodsList.jsp";
}
+ /**
+ * 2.商品详情展示
+ *
+ * @param request
+ * @param response
+ * @return
+ * @throws SQLException
+ */
public String detail(HttpServletRequest request, HttpServletResponse response) throws SQLException {
- //1.获取请求参数
+ //1.获取请求参数
String pid = request.getParameter("pid");
//2.调用业务逻辑
ProductService productService = new ProductServiceImpl();
//3.声明方法
Product product = productService.findProductByPid(pid);
//3.响应
- request.setAttribute("product",product);
+ request.setAttribute("product", product);
//4.跳转到对应的商品页面
- return Constants.FORWARD+"/goodsDetail.jsp";
+ return Constants.FORWARD + "/goodsDetail.jsp";
}
-
-
}
diff --git a/src/com/qf/controller/TypeController.java b/src/com/qf/controller/TypeController.java
index 5812084..7175f72 100644
--- a/src/com/qf/controller/TypeController.java
+++ b/src/com/qf/controller/TypeController.java
@@ -22,8 +22,7 @@ public class TypeController extends BaseServlet {
//2.将集合转换为 json 数据
Gson gson = new Gson();
- String json = gson.toJson(types);
- return json;
+ return gson.toJson(types);
}
}
diff --git a/src/com/qf/controller/UserController.java b/src/com/qf/controller/UserController.java
index f65746a..168b8f8 100644
--- a/src/com/qf/controller/UserController.java
+++ b/src/com/qf/controller/UserController.java
@@ -3,12 +3,14 @@ package com.qf.controller;
import com.qf.entity.User;
import com.qf.service.UserService;
import com.qf.service.impl.UserServiceImpl;
+import com.qf.utils.Base64Utils;
import com.qf.utils.Constants;
import com.qf.utils.MD5Utils;
import com.qf.utils.RandomUtils;
import org.apache.commons.beanutils.BeanUtils;
import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@@ -16,10 +18,15 @@ import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.Map;
+/**
+ * @author 小灰灰呀
+ */
@WebServlet("/user")
public class UserController extends BaseServlet {
- //1.查询用户是否存在
+ /**
+ * 1.查询用户是否存在
+ */
public String check(HttpServletRequest request, HttpServletResponse response) throws SQLException {
//1.获取用户名
String username = request.getParameter("username");
@@ -37,18 +44,17 @@ public class UserController extends BaseServlet {
return "0";
}
- //2.注册功能
+ /**
+ * 2.注册功能
+ */
public String register(HttpServletRequest request, HttpServletResponse response) {
//1.获取到我们的用户信息
Map parameterMap = request.getParameterMap();
//定义一个User
User user = new User();
-
try {
BeanUtils.populate(user, parameterMap);
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
+ } catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
//2.完善我们用户信息
@@ -71,14 +77,19 @@ public class UserController extends BaseServlet {
return Constants.FORWARD + "/registerSuccess.jsp";
}
- //3.登录功能
+ /**
+ * 3.登录功能
+ */
public String login(HttpServletRequest request, HttpServletResponse response) throws SQLException {
//1.获取请求参数
String username = request.getParameter("username");
String password = request.getParameter("password");
+
//用户输入的验证码
String code = request.getParameter("code");
+ //自动登录标识
+ String auto = request.getParameter("auto");
//2.获取正确的验证码(在session中)
HttpSession session = request.getSession();
@@ -94,6 +105,7 @@ public class UserController extends BaseServlet {
//4.调用业务逻辑判断账号密码是否正确(验证码正确的情况下)
UserService userService = new UserServiceImpl();
User user = userService.login(username, password);
+
//5.响应
if (user == null) {
//错误提示
@@ -103,15 +115,52 @@ public class UserController extends BaseServlet {
}
//6.进行登录
session.setAttribute("loginUser", user);
+
+ /*
+ 自动登录
+ */
+ //7.判断是否勾选自动登录
+ if (auto == null) {
+ //将本地浏览器的cookie'清空'
+ //创建一个cookie 常量autoUser,value里面没有值主要是一个覆盖功能
+ Cookie cookie = new Cookie(Constants.AUTO_NAME, "");
+ //表示当前项目下所有的访问资源servlet都可以访问这个cookie
+ cookie.setPath("/");
+ cookie.setMaxAge(0);
+ //写回cookie
+ response.addCookie(cookie);
+ } else {
+ //将cookie存入到本地
+ String content = username + ":" + password;
+ //用Base64转一下码,就无法直接看出来了
+ content = Base64Utils.encode(content);
+ //传入我们的账号密码
+ Cookie cookie = new Cookie(Constants.AUTO_NAME, content);
+ //表示当前项目下所有的访问资源servlet都可以访问这个cookie
+ cookie.setPath("/");
+ //两周
+ cookie.setMaxAge(14 * 24 * 60 * 60);
+ //写回cookie
+ response.addCookie(cookie);
+ }
return Constants.FORWARD + "/index.jsp";
}
- //4.注销登录
+ /**
+ * 4.注销登录
+ */
public String logOut(HttpServletRequest request, HttpServletResponse response) {
//1.清空session中的用户数据
HttpSession session = request.getSession();
session.removeAttribute("loginUser");
- //2.提示注销并将页面转发到登录页面
+
+ //2.清空和覆盖cookie存储的自动登录信息
+ Cookie cookie = new Cookie(Constants.AUTO_NAME, "");
+ cookie.setPath("/");
+ cookie.setMaxAge(0);
+ response.addCookie(cookie);
+
+ //3.提示注销并将页面转发到登录页面
request.setAttribute("msg", "注销登录成功!");
return Constants.FORWARD + "login.jsp";
}
diff --git a/src/com/qf/dao/AddressDao.java b/src/com/qf/dao/AddressDao.java
index f82ee93..6bb6455 100644
--- a/src/com/qf/dao/AddressDao.java
+++ b/src/com/qf/dao/AddressDao.java
@@ -1,4 +1,40 @@
package com.qf.dao;
+import com.qf.entity.Address;
+
+import java.sql.SQLException;
+import java.util.List;
+
public interface AddressDao {
+ /**
+ * @param uid
+ * @return
+ * @throws SQLException
+ */
+ List selectAddressByUid(int uid) throws SQLException;
+
+ /**
+ * @param address
+ * @throws SQLException
+ */
+ void insertAddress(Address address) throws SQLException;
+
+ /**
+ * @param aid
+ * @param uid
+ * @throws SQLException
+ */
+ void updateAddressToDefault(String aid, int uid) throws SQLException;
+
+ /**
+ * @param aid
+ * @throws SQLException
+ */
+ void deleteAddressByAid(String aid) throws SQLException;
+
+ /**
+ * @param address
+ * @throws SQLException
+ */
+ void updateByAid(Address address) throws SQLException;
}
diff --git a/src/com/qf/dao/CartDao.java b/src/com/qf/dao/CartDao.java
index 89bb027..359f4f6 100644
--- a/src/com/qf/dao/CartDao.java
+++ b/src/com/qf/dao/CartDao.java
@@ -7,19 +7,60 @@ import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.List;
+/**
+ * @author 小灰灰呀
+ */
public interface CartDao {
+ /**
+ * @param uid
+ * @param pid
+ * @return
+ * @throws SQLException
+ * @throws InvocationTargetException
+ * @throws IllegalAccessException
+ */
Cart hasCart(int uid, String pid) throws SQLException, InvocationTargetException, IllegalAccessException;
+ /**
+ * @param cart
+ * @throws SQLException
+ */
void updateCart(Cart cart) throws SQLException;
+ /**
+ * @param cart
+ * @throws SQLException
+ */
void insertCart(Cart cart) throws SQLException;
+ /**
+ * @param uid
+ * @return
+ * @throws SQLException
+ * @throws InvocationTargetException
+ * @throws IllegalAccessException
+ */
List selectCartByUid(int uid) throws SQLException, InvocationTargetException, IllegalAccessException;
+ /**
+ * @param cid
+ * @throws SQLException
+ */
void deleteCartByCid(String cid) throws SQLException;
+ /**
+ * @param count
+ * @param cnumbig
+ * @param cid
+ * @throws SQLException
+ */
void updateByCid(BigDecimal count, BigDecimal cnumbig, String cid) throws SQLException;
+ /**
+ * @param uid
+ * @throws SQLException
+ */
void clearCartByUid(String uid) throws SQLException;
+
}
diff --git a/src/com/qf/dao/ProductDao.java b/src/com/qf/dao/ProductDao.java
index c8b8a32..49b2647 100644
--- a/src/com/qf/dao/ProductDao.java
+++ b/src/com/qf/dao/ProductDao.java
@@ -5,10 +5,30 @@ import com.qf.entity.Product;
import java.sql.SQLException;
import java.util.List;
+/**
+ * @author 小灰灰呀
+ */
public interface ProductDao {
+ /**
+ * @param tid
+ * @return
+ * @throws SQLException
+ */
long selectCountByTid(String tid) throws SQLException;
+ /**
+ * @param page
+ * @param pageSize
+ * @param tid
+ * @return
+ * @throws SQLException
+ */
List selectProductByPage(int page, int pageSize, String tid) throws SQLException;
+ /**
+ * @param pid
+ * @return
+ * @throws SQLException
+ */
Product selectProductByPid(String pid) throws SQLException;
}
diff --git a/src/com/qf/dao/TypeDao.java b/src/com/qf/dao/TypeDao.java
index 2cfb334..03efd90 100644
--- a/src/com/qf/dao/TypeDao.java
+++ b/src/com/qf/dao/TypeDao.java
@@ -5,7 +5,14 @@ import com.qf.entity.Type;
import java.sql.SQLException;
import java.util.List;
+/**
+ * @author 小灰灰呀
+ */
public interface TypeDao {
- //需要一个方法查询数据库类别表,返回Type
+ /**
+ * 需要一个方法查询数据库类别表,返回Type
+ * @return
+ * @throws SQLException
+ */
List selectAll() throws SQLException;
}
diff --git a/src/com/qf/dao/UserDao.java b/src/com/qf/dao/UserDao.java
index 461ea44..1928667 100644
--- a/src/com/qf/dao/UserDao.java
+++ b/src/com/qf/dao/UserDao.java
@@ -4,12 +4,25 @@ import com.qf.entity.User;
import java.sql.SQLException;
-//数据库访问接口
+/**
+ * 数据库访问接口
+ * @author 小灰灰呀
+ */
public interface UserDao {
- //根据用户名查询用户是否存在
+ /**
+ * 根据用户名查询用户是否存在
+ * @param username
+ * @return
+ * @throws SQLException
+ */
User selectUserByUname(String username) throws SQLException;
- //保存数据的方法
+ /**
+ * 保存数据的方法
+ * @param user
+ * @return
+ * @throws SQLException
+ */
int insertUser(User user) throws SQLException;
}
diff --git a/src/com/qf/dao/impl/AddressDaoImpl.java b/src/com/qf/dao/impl/AddressDaoImpl.java
index f44e90a..d1846ee 100644
--- a/src/com/qf/dao/impl/AddressDaoImpl.java
+++ b/src/com/qf/dao/impl/AddressDaoImpl.java
@@ -1,6 +1,115 @@
package com.qf.dao.impl;
import com.qf.dao.AddressDao;
+import com.qf.entity.Address;
+import com.qf.utils.C3P0Utils;
+import org.apache.commons.dbutils.QueryRunner;
+import org.apache.commons.dbutils.handlers.BeanListHandler;
+import java.sql.SQLException;
+import java.util.List;
+
+/**
+ * @author 小灰灰呀
+ */
public class AddressDaoImpl implements AddressDao {
+
+ /**
+ * 1. 查询地址信息
+ *
+ * @param uid
+ * @return
+ * @throws SQLException
+ */
+ public List selectAddressByUid(int uid) throws SQLException {
+ //1.创建 QueryRunner对象
+ QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
+
+ //2.编写sql
+ String sql = "select a_id as aid , u_id as uid , a_name as aname ," +
+ "a_phone as aphone , a_detail as adetail , a_state as astate " +
+ "from address where u_id = ? ;";
+
+ //3.执行sql
+ return queryRunner.query(sql, new BeanListHandler<>(Address.class), uid);
+ }
+
+
+ /**
+ * 2.插入收货地址
+ *
+ * @param address
+ * @throws SQLException
+ */
+ @Override
+ public void insertAddress(Address address) throws SQLException {
+
+ //1.创建 QueryRunner对象
+ QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
+
+ //2.编写sql
+ String sql = "insert into address (u_id , a_name , a_phone , a_detail , a_state) value ( ? , ? , ? , ? , ? );";
+
+ //3.执行sql
+ queryRunner.update(sql, address.getUid(), address.getAname(), address.getAphone(), address.getAdetail(), address.getAstate());
+ }
+
+ /**
+ * 3.设置默认收货地址
+ *
+ * @param aid
+ * @param uid
+ * @throws SQLException
+ */
+ @Override
+ public void updateAddressToDefault(String aid, int uid) throws SQLException {
+ //1.创建 QueryRunner对象
+ QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
+
+ //2.编写sql
+ String sql1 = "update address set a_state=1 where a_id = ? ";
+ String sql2 = "update address set a_state=0 where a_id != ? and u_id = ?;";
+
+ //3.执行sql
+ queryRunner.update(sql1, aid);
+ queryRunner.update(sql2, aid, uid);
+ }
+
+ /**
+ * 4.删除收货地址
+ *
+ * @param aid
+ * @throws SQLException
+ */
+ @Override
+ public void deleteAddressByAid(String aid) throws SQLException {
+
+ //1.创建 QueryRunner对象
+ QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
+
+ //2.编写sql
+ String sql = "delete from address where a_id = ? ;";
+
+ //3.执行sql
+ queryRunner.update(sql, aid);
+ }
+
+
+ /**
+ * 5.通过aid更改收货地址
+ *
+ * @param address
+ * @throws SQLException
+ */
+ @Override
+ public void updateByAid(Address address) throws SQLException {
+ //1.创建 QueryRunner对象
+ QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
+
+ //2.编写sql
+ String sql = "update address set a_state = ? , a_name = ? , a_phone = ? , a_detail = ? where a_id = ? ;";
+
+ //3.执行sql
+ queryRunner.update(sql, address.getAstate(), address.getAname(), address.getAphone(), address.getAdetail(), address.getAid());
+ }
}
diff --git a/src/com/qf/dao/impl/CartDaoImpl.java b/src/com/qf/dao/impl/CartDaoImpl.java
index 97bc946..2f1cf59 100644
--- a/src/com/qf/dao/impl/CartDaoImpl.java
+++ b/src/com/qf/dao/impl/CartDaoImpl.java
@@ -6,7 +6,6 @@ import com.qf.entity.Product;
import com.qf.utils.C3P0Utils;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.dbutils.QueryRunner;
-import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
@@ -17,7 +16,20 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+/**
+ * @author 小灰灰呀
+ */
public class CartDaoImpl implements CartDao {
+ /**
+ * 1.查询购物车
+ *
+ * @param uid
+ * @param pid
+ * @return
+ * @throws SQLException
+ * @throws InvocationTargetException
+ * @throws IllegalAccessException
+ */
@Override
public Cart hasCart(int uid, String pid) throws SQLException, InvocationTargetException, IllegalAccessException {
//cart-->product 间接查询,多表查询
@@ -40,8 +52,6 @@ public class CartDaoImpl implements CartDao {
return null;
}
-// Product product = queryRunner.query(sql, new BeanHandler(Product.class), uid, pid);
-// Cart cart = queryRunner.query(sql, new BeanHandler(Cart.class), uid, pid);
Product product = new Product();
Cart cart = new Cart();
@@ -54,6 +64,12 @@ public class CartDaoImpl implements CartDao {
return cart;
}
+ /**
+ * 2.更新购物车
+ *
+ * @param cart
+ * @throws SQLException
+ */
@Override
public void updateCart(Cart cart) throws SQLException {
@@ -67,6 +83,12 @@ public class CartDaoImpl implements CartDao {
queryRunner.update(sql, cart.getCnum(), cart.getCcount(), cart.getCid());
}
+ /**
+ * 3.加入购物车
+ *
+ * @param cart
+ * @throws SQLException
+ */
@Override
public void insertCart(Cart cart) throws SQLException {
@@ -81,6 +103,15 @@ public class CartDaoImpl implements CartDao {
}
+ /**
+ * 4.通过uid查询购物车
+ *
+ * @param uid
+ * @return
+ * @throws SQLException
+ * @throws InvocationTargetException
+ * @throws IllegalAccessException
+ */
@Override
public List selectCartByUid(int uid) throws SQLException, InvocationTargetException, IllegalAccessException {
@@ -94,7 +125,7 @@ public class CartDaoImpl implements CartDao {
"c.u_id as uid, c.c_count as ccount, c.c_num as cnum " +
"from product p join cart c on p.p_id = c.p_id where c.u_id = ? ;";
- //3.执行sql
+ //3.整合成为 list 集合
List