From eae20a33e0d558891486067f91b3d76b2aa44658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=B7=E8=8F=8A=E8=8F=8A?= <2582304574@qq.com> Date: Sat, 26 Apr 2025 19:07:58 +0800 Subject: [PATCH 1/4] 111 --- .gitignore | 37 +++ DB_flower.sql | 154 +++++++++++ pom.xml | 131 ++++++++++ .../shanzhu/flower/BackendApplication.java | 31 +++ .../com/shanzhu/flower/config/Constant.java | 20 ++ .../com/shanzhu/flower/config/HttpMsg.java | 52 ++++ .../flower/config/ProcessInterceptor.java | 40 +++ .../shanzhu/flower/config/WebMvcConfig.java | 22 ++ .../flower/controller/CartController.java | 176 +++++++++++++ .../flower/controller/FlowerController.java | 244 ++++++++++++++++++ .../controller/FlowerTypeController.java | 88 +++++++ .../flower/controller/LoginController.java | 42 +++ .../flower/controller/OrderController.java | 119 +++++++++ .../flower/controller/UserController.java | 92 +++++++ .../java/com/shanzhu/flower/dao/CartDao.java | 41 +++ .../com/shanzhu/flower/dao/FlowersDao.java | 41 +++ .../java/com/shanzhu/flower/dao/LoginDao.java | 18 ++ .../java/com/shanzhu/flower/dao/OrderDao.java | 44 ++++ .../com/shanzhu/flower/dao/SpeciesDao.java | 34 +++ .../java/com/shanzhu/flower/dao/UserDao.java | 44 ++++ .../java/com/shanzhu/flower/entity/Cart.java | 19 ++ .../com/shanzhu/flower/entity/Flower.java | 25 ++ .../com/shanzhu/flower/entity/LoginForm.java | 12 + .../java/com/shanzhu/flower/entity/Order.java | 22 ++ .../com/shanzhu/flower/entity/OrderVo.java | 17 ++ .../java/com/shanzhu/flower/entity/Param.java | 11 + .../java/com/shanzhu/flower/entity/R.java | 16 ++ .../com/shanzhu/flower/entity/Species.java | 15 ++ .../java/com/shanzhu/flower/entity/User.java | 19 ++ .../shanzhu/flower/service/CartService.java | 20 ++ .../flower/service/FlowersService.java | 21 ++ .../shanzhu/flower/service/OrderService.java | 22 ++ .../flower/service/SpeciesService.java | 14 + .../shanzhu/flower/service/UserService.java | 20 ++ .../flower/service/impl/CartServiceImpl.java | 55 ++++ .../service/impl/FlowersServiceImpl.java | 46 ++++ .../flower/service/impl/OrderServiceImpl.java | 55 ++++ .../service/impl/SpeciesServiceImpl.java | 41 +++ .../flower/service/impl/UserServiceImpl.java | 45 ++++ .../com/shanzhu/flower/util/VerifyUtil.java | 19 ++ src/main/resources/application.yml | 22 ++ 41 files changed, 2006 insertions(+) create mode 100644 .gitignore create mode 100644 DB_flower.sql create mode 100644 pom.xml create mode 100644 src/main/java/com/shanzhu/flower/BackendApplication.java create mode 100644 src/main/java/com/shanzhu/flower/config/Constant.java create mode 100644 src/main/java/com/shanzhu/flower/config/HttpMsg.java create mode 100644 src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java create mode 100644 src/main/java/com/shanzhu/flower/config/WebMvcConfig.java create mode 100644 src/main/java/com/shanzhu/flower/controller/CartController.java create mode 100644 src/main/java/com/shanzhu/flower/controller/FlowerController.java create mode 100644 src/main/java/com/shanzhu/flower/controller/FlowerTypeController.java create mode 100644 src/main/java/com/shanzhu/flower/controller/LoginController.java create mode 100644 src/main/java/com/shanzhu/flower/controller/OrderController.java create mode 100644 src/main/java/com/shanzhu/flower/controller/UserController.java create mode 100644 src/main/java/com/shanzhu/flower/dao/CartDao.java create mode 100644 src/main/java/com/shanzhu/flower/dao/FlowersDao.java create mode 100644 src/main/java/com/shanzhu/flower/dao/LoginDao.java create mode 100644 src/main/java/com/shanzhu/flower/dao/OrderDao.java create mode 100644 src/main/java/com/shanzhu/flower/dao/SpeciesDao.java create mode 100644 src/main/java/com/shanzhu/flower/dao/UserDao.java create mode 100644 src/main/java/com/shanzhu/flower/entity/Cart.java create mode 100644 src/main/java/com/shanzhu/flower/entity/Flower.java create mode 100644 src/main/java/com/shanzhu/flower/entity/LoginForm.java create mode 100644 src/main/java/com/shanzhu/flower/entity/Order.java create mode 100644 src/main/java/com/shanzhu/flower/entity/OrderVo.java create mode 100644 src/main/java/com/shanzhu/flower/entity/Param.java create mode 100644 src/main/java/com/shanzhu/flower/entity/R.java create mode 100644 src/main/java/com/shanzhu/flower/entity/Species.java create mode 100644 src/main/java/com/shanzhu/flower/entity/User.java create mode 100644 src/main/java/com/shanzhu/flower/service/CartService.java create mode 100644 src/main/java/com/shanzhu/flower/service/FlowersService.java create mode 100644 src/main/java/com/shanzhu/flower/service/OrderService.java create mode 100644 src/main/java/com/shanzhu/flower/service/SpeciesService.java create mode 100644 src/main/java/com/shanzhu/flower/service/UserService.java create mode 100644 src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java create mode 100644 src/main/java/com/shanzhu/flower/service/impl/FlowersServiceImpl.java create mode 100644 src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java create mode 100644 src/main/java/com/shanzhu/flower/service/impl/SpeciesServiceImpl.java create mode 100644 src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java create mode 100644 src/main/java/com/shanzhu/flower/util/VerifyUtil.java create mode 100644 src/main/resources/application.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..24062a7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target +/.mvn/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +*.log +*.jar + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + + +### VS Code ### +.vscode/ diff --git a/DB_flower.sql b/DB_flower.sql new file mode 100644 index 0000000..7cba687 --- /dev/null +++ b/DB_flower.sql @@ -0,0 +1,154 @@ +/* + Navicat Premium Data Transfer + + Source Server : local + Source Server Type : MySQL + Source Server Version : 80029 + Source Host : localhost:3306 + Source Schema : DB_flower + + Target Server Type : MySQL + Target Server Version : 80029 + File Encoding : 65001 + + Date: 26/01/2024 15:29:41 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for carts +-- ---------------------------- +DROP TABLE IF EXISTS `carts`; +CREATE TABLE `carts` ( + `id` int NOT NULL AUTO_INCREMENT, + `fid` int DEFAULT NULL, + `flower` varchar(255) DEFAULT NULL, + `amount` int DEFAULT NULL, + `price` float DEFAULT NULL, + `uid` int DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `flower` (`flower`), + KEY `uid` (`uid`), + KEY `fk2` (`fid`), + CONSTRAINT `carts_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `users` (`id`), + CONSTRAINT `fk2` FOREIGN KEY (`fid`) REFERENCES `flowers` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8mb3; + +-- ---------------------------- +-- Records of carts +-- ---------------------------- +BEGIN; +INSERT INTO `carts` VALUES (32, 2, '粉色玫瑰花', 1, NULL, 10); +INSERT INTO `carts` VALUES (33, 4, '金枝玉叶玫瑰', 3, NULL, 10); +INSERT INTO `carts` VALUES (34, 1, '杭州水果捞', 1, NULL, 10); +COMMIT; + +-- ---------------------------- +-- Table structure for flowers +-- ---------------------------- +DROP TABLE IF EXISTS `flowers`; +CREATE TABLE `flowers` ( + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(255) DEFAULT NULL, + `species_name` varchar(255) DEFAULT NULL, + `price` float DEFAULT NULL, + `detail` varchar(255) DEFAULT NULL, + `img_guid` varchar(255) DEFAULT NULL, + `state` int DEFAULT '1' COMMENT '商品状态', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`), + KEY `species_name` (`species_name`), + CONSTRAINT `flowers_ibfk_1` FOREIGN KEY (`species_name`) REFERENCES `species` (`species_name`) +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3; + +-- ---------------------------- +-- Records of flowers +-- ---------------------------- +BEGIN; +INSERT INTO `flowers` VALUES (1, '杭州水果捞', '春日', 10, '杭州水果捞', 'fe71ee4538644b4da67b046d3a6825a8.jpg', 1); +INSERT INTO `flowers` VALUES (2, '粉色玫瑰花', '夏日', 199, '粉色玫瑰花,送爱人~', '67975badf69646c0a70e8154208c7acd.jpg', 1); +INSERT INTO `flowers` VALUES (3, '牡丹', '夏日', 299, '国花,价格优惠', 'hehua.jpg', 1); +INSERT INTO `flowers` VALUES (4, '金枝玉叶玫瑰', '秋日', 999.99, '金枝玉叶玫瑰', '8d59b8723ad6409ab3b10847f86ef196.jpg', 1); +INSERT INTO `flowers` VALUES (5, '紫色小雏菊', '夏日', 188, '紫色小雏菊~', 'eff301d8ca194fb99639ebe4f1d328b9.jpg', 1); +INSERT INTO `flowers` VALUES (6, NULL, NULL, NULL, NULL, '', 1); +INSERT INTO `flowers` VALUES (7, '粉百合', '冬日', 10000, '粉百合', '6d901436d6e84160b04de4cafa79a611.jpg', 1); +COMMIT; + +-- ---------------------------- +-- Table structure for orders +-- ---------------------------- +DROP TABLE IF EXISTS `orders`; +CREATE TABLE `orders` ( + `id` int NOT NULL AUTO_INCREMENT, + `order_guid` varchar(255) DEFAULT NULL, + `flower` varchar(255) DEFAULT NULL, + `amount` int DEFAULT NULL, + `price` float DEFAULT NULL, + `state` int DEFAULT NULL, + `uid` int DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `flower` (`flower`), + KEY `uid` (`uid`), + CONSTRAINT `orders_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `users` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb3; + +-- ---------------------------- +-- Records of orders +-- ---------------------------- +BEGIN; +INSERT INTO `orders` VALUES (27, NULL, '杭州水果捞', 3, 30, 0, 10); +INSERT INTO `orders` VALUES (28, NULL, '金枝玉叶玫瑰', 1, 999.99, 0, 10); +COMMIT; + +-- ---------------------------- +-- Table structure for species +-- ---------------------------- +DROP TABLE IF EXISTS `species`; +CREATE TABLE `species` ( + `id` int NOT NULL AUTO_INCREMENT, + `species_name` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `species` (`species_name`) +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3; + +-- ---------------------------- +-- Records of species +-- ---------------------------- +BEGIN; +INSERT INTO `species` VALUES (8, NULL); +INSERT INTO `species` VALUES (7, '冬日'); +INSERT INTO `species` VALUES (11, '友情花'); +INSERT INTO `species` VALUES (2, '夏日'); +INSERT INTO `species` VALUES (9, '情人花'); +INSERT INTO `species` VALUES (1, '春日'); +INSERT INTO `species` VALUES (3, '秋日'); +COMMIT; + +-- ---------------------------- +-- Table structure for users +-- ---------------------------- +DROP TABLE IF EXISTS `users`; +CREATE TABLE `users` ( + `id` int NOT NULL AUTO_INCREMENT, + `account` varchar(255) DEFAULT NULL, + `name` varchar(255) DEFAULT NULL, + `password` varchar(255) DEFAULT NULL, + `phone` varchar(255) DEFAULT NULL, + `address` varchar(255) DEFAULT NULL, + `role` varchar(255) DEFAULT NULL COMMENT '角色', + PRIMARY KEY (`id`), + UNIQUE KEY `account` (`account`) +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb3; + +-- ---------------------------- +-- Records of users +-- ---------------------------- +BEGIN; +INSERT INTO `users` VALUES (1, 'user2', 'user2', '123456', '13566662222', '北京市昌平区2号', 'user'); +INSERT INTO `users` VALUES (2, 'admin', '系统管理员', '123456', '123456', '上海市黄浦区南京西路8号', 'admin'); +INSERT INTO `users` VALUES (10, 'user', '杭州水果捞', '123456', '18679121111', '杭州余杭区', 'user'); +COMMIT; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d512733 --- /dev/null +++ b/pom.xml @@ -0,0 +1,131 @@ + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.4.5 + + + + com.shanzhu + flower-backend + 1.0.0-RELEASE + + flower-backend + jar + + 花店商城后台 + + + 1.8 + + + + + + org.projectlombok + lombok + 1.18.10 + provided + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + org.springframework.boot + spring-boot-starter-web + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.1.3 + + + + tk.mybatis + mapper-spring-boot-starter + 2.0.4 + + + + mysql + mysql-connector-java + runtime + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + + org.junit.jupiter + junit-jupiter + 5.4.2 + compile + + + + net.sourceforge.nekohtml + nekohtml + 1.9.22 + + + + org.apache.commons + commons-pool2 + + + + org.apache.poi + poi-ooxml + 3.17 + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + + + diff --git a/src/main/java/com/shanzhu/flower/BackendApplication.java b/src/main/java/com/shanzhu/flower/BackendApplication.java new file mode 100644 index 0000000..4cd451f --- /dev/null +++ b/src/main/java/com/shanzhu/flower/BackendApplication.java @@ -0,0 +1,31 @@ +package com.shanzhu.flower; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + + +/** + * SpringBoot 启动类 + * 项目启动入口(点击右键 选择 "run BackendApplication" 启动项目) + *

+ * 什么是SpringBoot?(https://www.php.cn/faq/498384.html) + * + * @author: ShanZhu + * @date: 2023-01-24 + */ +@Slf4j +@SpringBootApplication +@MapperScan("com.shanzhu.flower.dao") +public class BackendApplication { + + public static void main(String[] args) { + + //SpringBoot 执行启动 + SpringApplication.run(BackendApplication.class, args); + + log.info("=====================项目后端启动成功============================"); + } + +} diff --git a/src/main/java/com/shanzhu/flower/config/Constant.java b/src/main/java/com/shanzhu/flower/config/Constant.java new file mode 100644 index 0000000..d9e84d4 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/config/Constant.java @@ -0,0 +1,20 @@ +package com.shanzhu.flower.config; + +/** + * 常量 + * 图片静态文件路径 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +public class Constant { + + public static int PAGE_SIZE = 5; + + // 商品展示 + public static int SHOW_PAGE_SIZE = 9; + + public static String IMG_USE_PATH = "static/imgs/"; + + public static String DEFAULT_IMG = "img.jpg"; +} diff --git a/src/main/java/com/shanzhu/flower/config/HttpMsg.java b/src/main/java/com/shanzhu/flower/config/HttpMsg.java new file mode 100644 index 0000000..fa4a369 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/config/HttpMsg.java @@ -0,0 +1,52 @@ +package com.shanzhu.flower.config; + +/** + * http状态消息 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +public class HttpMsg { + public static String ERROR_INPUT = "表单信息不正确"; + public static String ERROR_VERIFY = "用户名或密码错误"; + public static String ADD_USER_OK = "新建用户成功"; + public static String ADD_USER_FAILED = "新建用户失败,该账号已存在"; + public static String UPDATE_USER_OK = "修改用户信息成功"; + public static String UPDATE_USER_FAILED = "修改用户信息失败"; + public static String DELETE_USER_OK = "删除用户信息成功"; + public static String DELETE_USER_FAILED = "删除用户信息失败"; + + public static String DELETE_TYPE_OK = "删除类型成功"; + public static String DELETE_TYPE_FAILED = "有商品绑定此类型,删除类型失败"; + public static String UPDATE_TYPE_OK = "修改类型成功"; + public static String UPDATE_TYPE_FAILED = "有商品绑定此类型,修改类型失败"; + public static String ADD_TYPE_OK = "新建类型成功"; + public static String ADD_TYPE_FAILED = "新建类型失败,该类型名称已存在"; + + public static String DELETE_FLOWER_OK = "删除类型成功"; + public static String DELETE_FLOWER_FAILED = "有商品绑定此类型,删除类型失败"; + public static String UPDATE_FLOWER_OK = "修改类型成功"; + public static String UPDATE_FLOWER_FAILED = "有商品绑定此类型,修改类型失败"; + public static String ADD_FLOWER_OK = "新建类型成功"; + public static String ADD_FLOWER_FAILED = "新建类型失败,该类型名称已存在"; + + public static String NO_TYPE_NOW = "当前没有花朵种类,请先创建!"; + + public static String UPDATE_PIC_OK = "更新图片成功"; + public static String UPDATE_PIC_FAILED = "更新图片失败"; + + public static String INVALID_PARAM = "参数不合法"; + + public static String INVALID_USER = "登录失效,请重新登录"; + + public static String ADD_CART_OK = "加入购物车成功"; + public static String ADD_CART_FAILED = "加入购物车失败"; + + public static String BUY_OK = "下单成功"; + + public static String UPDATE_ORDER_OK = "订单发货状态更新成功"; + public static String ERROR_FILE_TYPE = "错误的文件类型"; + + public static String GOODS_UP_OK = "商品上架成功"; + public static String GOODS_DOWN_OK = "商品下架成功"; +} diff --git a/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java b/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java new file mode 100644 index 0000000..77e6370 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java @@ -0,0 +1,40 @@ +package com.shanzhu.flower.config; + +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * 请求处理拦截器 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@Component +public class ProcessInterceptor implements HandlerInterceptor { + + @Override + public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { + httpServletResponse.setHeader("Access-Control-Allow-Origin", "*"); + httpServletResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With"); + httpServletResponse.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); + httpServletResponse.setHeader("X-Powered-By", "Jetty"); + String method = httpServletRequest.getMethod(); + if (method.equals("OPTIONS")) { + httpServletResponse.setStatus(200); + return false; + } + return true; + } + + @Override + public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { + } + + @Override + public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { + } +} \ No newline at end of file diff --git a/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java b/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java new file mode 100644 index 0000000..2147b26 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java @@ -0,0 +1,22 @@ +package com.shanzhu.flower.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * web mvc配置,跨域配置等 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@Configuration +public class WebMvcConfig implements WebMvcConfigurer { + + @Override + public void addInterceptors(InterceptorRegistry registry) { + + registry.addInterceptor(new ProcessInterceptor()).addPathPatterns("/**"); + } + +} \ No newline at end of file diff --git a/src/main/java/com/shanzhu/flower/controller/CartController.java b/src/main/java/com/shanzhu/flower/controller/CartController.java new file mode 100644 index 0000000..d459bd4 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/controller/CartController.java @@ -0,0 +1,176 @@ +package com.shanzhu.flower.controller; + +import com.shanzhu.flower.config.Constant; +import com.shanzhu.flower.config.HttpMsg; +import com.shanzhu.flower.dao.FlowersDao; +import com.shanzhu.flower.entity.Cart; +import com.shanzhu.flower.entity.R; +import com.shanzhu.flower.service.CartService; +import com.shanzhu.flower.service.OrderService; +import org.springframework.web.bind.annotation.*; +import tk.mybatis.mapper.util.StringUtil; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 购物车 控制层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@RestController +@RequestMapping("cart") +public class CartController { + + @Resource + private CartService cartService; + + @Resource + private OrderService orderService; + + @Resource + private FlowersDao flowersDao; + + /** + * 查询用户购物车 + * + * @param account 用户账号 + * @return 购物车 + */ + @RequestMapping("/queryByAccount") + R queryByAccount(@RequestParam("account") String account) { + R r = new R(); + + if (StringUtil.isEmpty(account)) { + return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); + } + + List carts = cartService.queryByAccount(account); + + for (Cart cart : carts) { + float price = flowersDao.queryPrice(cart.getFid()); + cart.setPrice(cart.getAmount() * price); + } + + return r.setCode(2000).setData(carts); + } + + + /** + * 分页查询购物车 + * + * @param page 页数 + * @param searchKey 查询条件 + * @param account 账户 + * @return 购物车列表 + */ + @RequestMapping("/find") + R find( + @RequestParam("page") int page, + @RequestParam("searchKey") String searchKey, + @RequestParam("account") String account + ) { + + R r = new R(); + + Map map = new HashMap<>(); + List carts = cartService.find(searchKey, account); + + if (carts == null) { + return r.setCode(2000); + } + + List items = carts.size() >= page * Constant.PAGE_SIZE ? + carts.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) + : carts.subList((page - 1) * Constant.PAGE_SIZE, carts.size()); + + int len = carts.size() % Constant.PAGE_SIZE == 0 ? carts.size() / Constant.PAGE_SIZE + : (carts.size() / Constant.PAGE_SIZE + 1); + map.put("items", items); + map.put("len", len); + + return r.setCode(2000).setData(map); + } + + /** + * 购买 + * + * @param account 账号 + * @return 结果 + */ + @RequestMapping("/buy") + R buy(@RequestParam("account") String account) { + R r = new R(); + + // 查该用户的购物车 + List carts = (List) queryByAccount(account).getData(); + for (Cart cart : carts) { + // 增加订单数据 + orderService.add(cart); + // 删除购物车数据 + cartService.delete(cart.getId()); + } + + return r.setCode(2000).setMsg(HttpMsg.BUY_OK); + } + + /** + * 新增购物车 + * + * @param cart 购物车信息 + * @return 购物车 + */ + @RequestMapping("/create") + R create(@RequestBody Cart cart) { + R r = new R(); + + int ans = cartService.add(cart); + + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.ADD_CART_OK); + } + + return r.setCode(4000).setMsg(HttpMsg.ADD_CART_FAILED); + } + + /** + * 更新购物车 + * + * @param cart 购物车信息 + * @return 结果 + */ + @RequestMapping("/update") + R update(@RequestBody Cart cart) { + R r = new R(); + + int ans = cartService.update(cart); + + if (ans >= 0) { + return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); + } + + return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); + } + + /** + * 删除购物车 + * + * @param id 购物车id + * @return 结果 + */ + @DeleteMapping("/delete") + R delete(@RequestParam("id") int id) { + R r = new R(); + int ans = cartService.delete(id); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); + } + return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); + } + +} + diff --git a/src/main/java/com/shanzhu/flower/controller/FlowerController.java b/src/main/java/com/shanzhu/flower/controller/FlowerController.java new file mode 100644 index 0000000..8a55da7 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/controller/FlowerController.java @@ -0,0 +1,244 @@ +package com.shanzhu.flower.controller; + +import com.shanzhu.flower.config.Constant; +import com.shanzhu.flower.config.HttpMsg; +import com.shanzhu.flower.dao.FlowersDao; +import com.shanzhu.flower.entity.Flower; +import com.shanzhu.flower.entity.R; +import com.shanzhu.flower.service.FlowersService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + + +/** + * 鲜花 控制层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@RestController +@RequestMapping("flower") +public class FlowerController { + + @Value("${uploadPath}") + private String uploadPath; + + @Resource + private FlowersService flowerService; + @Resource + private FlowersDao flowersDao; + + /** + * 分页查询鲜花商品 + * + * @param page 页数 + * @param searchKey 查询条件 + * @param searchType 查询类型 + * @return 商品 + */ + @RequestMapping("/find") + R find( + @RequestParam("page") int page, + @RequestParam("searchKey") String searchKey, + @RequestParam("searchType") String searchType + ) { + R r = new R(); + List flowers = flowerService.find(searchKey, searchType); + + if (flowers == null) { + return r.setCode(2000); + } + + return getResponse(flowers, page, Constant.SHOW_PAGE_SIZE, r); + } + + /** + * 管理员查询所有 + * + * @param page 分页页数 + * @param searchKey 查询条件 + * @return 结果 + */ + @RequestMapping("/findAll") + R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { + R r = new R(); + List flowers = flowerService.findAll(searchKey); + + if (flowers == null) { + return r.setCode(2000); + } + + return getResponse(flowers, page, Constant.PAGE_SIZE, r); + } + + /** + * 创建鲜花商品 + * + * @param flower 商品信息 + * @return 结果 + */ + @RequestMapping("/create") + R create(@RequestBody Flower flower) { + R r = new R(); + + int ans = flowerService.add(flower); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.ADD_FLOWER_OK); + } + + return r.setCode(4000).setMsg(HttpMsg.ADD_FLOWER_FAILED); + } + + /** + * 更新鲜花商品 + * + * @param flower 商品信息 + * @return 结果 + */ + @RequestMapping("/update") + R update(@RequestBody Flower flower) { + R r = new R(); + + int ans = flowerService.update(flower); + if (ans >= 0) { + return r.setCode(2000).setMsg(HttpMsg.UPDATE_FLOWER_OK); + } + + return r.setCode(4000).setMsg(HttpMsg.UPDATE_FLOWER_FAILED); + } + + /** + * 改版商品状态 + * + * @param flower 商品信息 + * @return 结果 + */ + @RequestMapping("/changeState") + R changeState(@RequestBody Flower flower) { + R r = new R(); + + flowersDao.changeState(flower); + String msg = flower.getState() == 1 ? HttpMsg.GOODS_UP_OK : HttpMsg.GOODS_DOWN_OK; + + return r.setCode(2000).setMsg(msg); + } + + /** + * 上传图片 + * + * @param file 文件信息 + * @return 结果 + */ + @RequestMapping("/updateImg") + R updateImg(@RequestParam("file") MultipartFile file) { + R r = new R(); + + // 只接收 jpg/png 图片 + String filename = file.getOriginalFilename(); + if (!filename.endsWith(".jpg") && !filename.endsWith(".png")) { + return r.setCode(4000).setMsg(HttpMsg.ERROR_FILE_TYPE); + } + + String img_guid = UUID.randomUUID().toString().replaceAll("-", "") + ".jpg"; + + try { + savePic(file.getInputStream(), img_guid); + return r.setCode(2000).setMsg(HttpMsg.UPDATE_PIC_OK).setData(img_guid); + } catch (IOException e) { + return r.setCode(4000).setMsg(HttpMsg.UPDATE_PIC_FAILED); + } + + } + + /** + * 更新图片guid + * + * @param guid guid + * @param id id + * @return 结果 + */ + @PutMapping("/updateImgGuid") + R updateImgGuid(@RequestParam("guid") String guid, @RequestParam("id") int id) { + R r = new R(); + + int ans = flowerService.updateImg(guid, id); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.UPDATE_PIC_OK); + } + + return r.setCode(4000).setMsg(HttpMsg.UPDATE_PIC_FAILED); + } + + /** + * 删除图片 + * + * @param id 图片id + * @return 结果 + */ + @DeleteMapping("/delete") + R delete(@RequestParam("id") int id) { + R r = new R(); + + int ans = flowerService.delete(id); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.DELETE_FLOWER_OK); + } + + return r.setCode(4000).setMsg(HttpMsg.DELETE_FLOWER_FAILED); + } + + private void savePic(InputStream inputStream, String fileName) { + OutputStream os = null; + try { + String path = uploadPath; + // 1K的数据缓冲 + byte[] bs = new byte[1024]; + // 读取到的数据长度 + int len; + // 输出的文件流保存到本地文件 + os = new FileOutputStream(new File(path + fileName)); + // 开始读取 + while ((len = inputStream.read(bs)) != -1) { + os.write(bs, 0, len); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + // 完毕,关闭所有链接 + try { + os.close(); + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + private R getResponse(List flowers, int page, int pageSize, R r) { + Map map = new HashMap<>(); + List items = flowers.size() >= page * pageSize ? + flowers.subList((page - 1) * pageSize, page * pageSize) + : flowers.subList((page - 1) * pageSize, flowers.size()); + int len = flowers.size() % pageSize == 0 ? flowers.size() / pageSize + : (flowers.size() / pageSize + 1); + for (Flower item : items) { + if (item.getImg_guid() == null) { + item.setImg_guid(Constant.DEFAULT_IMG); + } + item.setImg_guid(Constant.IMG_USE_PATH + item.getImg_guid()); + } + map.put("items", items); + map.put("len", len); + return r.setCode(2000).setData(map); + } + +} + diff --git a/src/main/java/com/shanzhu/flower/controller/FlowerTypeController.java b/src/main/java/com/shanzhu/flower/controller/FlowerTypeController.java new file mode 100644 index 0000000..4b01c9a --- /dev/null +++ b/src/main/java/com/shanzhu/flower/controller/FlowerTypeController.java @@ -0,0 +1,88 @@ +package com.shanzhu.flower.controller; + +import com.shanzhu.flower.config.Constant; +import com.shanzhu.flower.config.HttpMsg; +import com.shanzhu.flower.entity.R; +import com.shanzhu.flower.entity.Species; +import com.shanzhu.flower.service.SpeciesService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 鲜花种类 控制层 + */ +@RestController +@RequestMapping("species") +public class FlowerTypeController { + + @Resource + private SpeciesService speciesService; + + @RequestMapping("/findAll") + R findAll() { + R r = new R(); + List all = speciesService.findAll(); + if (all.size()<=0){ + return r.setCode(4000).setMsg(HttpMsg.NO_TYPE_NOW); + } + return r.setCode(2000).setData(all); + } + + @RequestMapping("/find") + R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { + R r = new R(); + Map map = new HashMap<>(); + List list = speciesService.find(searchKey); + if (list == null) { + return r.setCode(2000); + } + List items = list.size() >= page * Constant.PAGE_SIZE ? + list.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) + : list.subList((page - 1) * Constant.PAGE_SIZE, list.size()); + int len = list.size() % Constant.PAGE_SIZE == 0 ? list.size() / Constant.PAGE_SIZE + : (list.size() / Constant.PAGE_SIZE + 1); + map.put("items", items); + map.put("len", len); + return r.setCode(2000).setData(map); + } + + @RequestMapping("/create") + R create(@RequestBody Species species) { + R r = new R(); + try { + speciesService.add(species); + return r.setCode(2000).setMsg(HttpMsg.ADD_TYPE_OK); + } catch (Exception e) { + return r.setCode(4000).setMsg(HttpMsg.ADD_TYPE_FAILED); + } + } + + @RequestMapping("/update") + R update(@RequestBody Species species) { + R r = new R(); + try { + speciesService.update(species); + return r.setCode(2000).setMsg(HttpMsg.UPDATE_TYPE_OK); + } catch (Exception e) { + return r.setCode(4000).setMsg(HttpMsg.UPDATE_TYPE_FAILED); + } + } + + @DeleteMapping("/delete") + R delete(@RequestParam("id") int id) { + R r = new R(); + try { + speciesService.delete(id); + return r.setCode(2000).setMsg(HttpMsg.DELETE_TYPE_OK); + } catch (Exception e) { + return r.setCode(4000).setMsg(HttpMsg.DELETE_TYPE_FAILED); + } + } + +} + diff --git a/src/main/java/com/shanzhu/flower/controller/LoginController.java b/src/main/java/com/shanzhu/flower/controller/LoginController.java new file mode 100644 index 0000000..2c7770f --- /dev/null +++ b/src/main/java/com/shanzhu/flower/controller/LoginController.java @@ -0,0 +1,42 @@ +package com.shanzhu.flower.controller; + +import com.shanzhu.flower.config.HttpMsg; +import com.shanzhu.flower.dao.LoginDao; +import com.shanzhu.flower.entity.LoginForm; +import com.shanzhu.flower.entity.R; +import com.shanzhu.flower.entity.User; +import com.shanzhu.flower.util.VerifyUtil; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + + +/** + * 用户登录 控制层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@RestController +@RequestMapping("login") +public class LoginController { + + @Resource + private LoginDao loginDao; + + @RequestMapping("/doLogin") + R doLogin(@RequestBody LoginForm form) { + R r = new R(); + if (!VerifyUtil.verifyLoginForm(form)) { + return r.setCode(4000).setMsg(HttpMsg.ERROR_INPUT); + } + User loginUser = loginDao.login(form); + if (loginUser != null) { + return r.setCode(2000).setMsg("欢迎您:" + loginUser.getName()).setData(loginUser); + } + return r.setCode(4000).setMsg(HttpMsg.ERROR_VERIFY); + } + +} diff --git a/src/main/java/com/shanzhu/flower/controller/OrderController.java b/src/main/java/com/shanzhu/flower/controller/OrderController.java new file mode 100644 index 0000000..f4ad9cd --- /dev/null +++ b/src/main/java/com/shanzhu/flower/controller/OrderController.java @@ -0,0 +1,119 @@ +package com.shanzhu.flower.controller; + +import com.shanzhu.flower.config.Constant; +import com.shanzhu.flower.config.HttpMsg; +import com.shanzhu.flower.dao.OrderDao; +import com.shanzhu.flower.dao.UserDao; +import com.shanzhu.flower.entity.Order; +import com.shanzhu.flower.entity.OrderVo; +import com.shanzhu.flower.entity.R; +import com.shanzhu.flower.entity.User; +import com.shanzhu.flower.service.OrderService; +import org.springframework.web.bind.annotation.*; +import tk.mybatis.mapper.util.StringUtil; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 订单 控制层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@RestController +@RequestMapping("order") +public class OrderController { + + @Resource + private OrderService orderService; + + @Resource + private UserDao userDao; + + @Resource + private OrderDao orderDao; + + @RequestMapping("/queryByAccount") + R queryByAccount(@RequestParam("account") String account) { + R r = new R(); + if (StringUtil.isEmpty(account)) { + return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); + } + List orders = orderService.queryByAccount(account); + return r.setCode(2000).setData(orders); + } + + @RequestMapping("/find") + R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey, @RequestParam("account") String account) { + R r = new R(); + Map map = new HashMap<>(); + List orders = orderService.find(searchKey, account); + if (orders == null) { + return r.setCode(2000); + } + map.put("items", orders); + map.put("len", orders.size()); + return r.setCode(2000).setData(map); + } + + @RequestMapping("/findAll") + R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { + R r = new R(); + Map map = new HashMap<>(); + List orders = orderService.findAll(searchKey); + if (orders == null) { + return r.setCode(2000); + } + List items = orders.size() >= page * Constant.PAGE_SIZE ? + orders.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) + : orders.subList((page - 1) * Constant.PAGE_SIZE, orders.size()); + int len = orders.size() % Constant.PAGE_SIZE == 0 ? orders.size() / Constant.PAGE_SIZE + : (orders.size() / Constant.PAGE_SIZE + 1); + List vos = new ArrayList<>(); + for (Order item : items) { + User user = userDao.queryById(item.getUid()); + OrderVo vo = new OrderVo(); + vo.setAddress(user.getAddress()).setPhone(user.getPhone()).setUsername(user.getName()) + .setAmount(item.getAmount()).setFlower(item.getFlower()).setId(item.getId()) + .setUid(item.getUid()).setOrder_guid(item.getOrder_guid()).setPrice(item.getPrice()) + .setState(item.getState()); + vos.add(vo); + } + map.put("items", vos); + map.put("len", len); + return r.setCode(2000).setData(map); + } + + @RequestMapping("/update") + R update(@RequestBody Order order) { + R r = new R(); + int ans = orderService.update(order); + if (ans >= 0) { + return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); + } + return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); + } + + @RequestMapping("/changeState") + R changeState(@RequestBody Order order) { + orderDao.changeState(order); + return new R().setCode(2000).setMsg(HttpMsg.UPDATE_ORDER_OK); + } + + @DeleteMapping("/delete") + R delete(@RequestParam("id") int id) { + R r = new R(); + int ans = orderService.delete(id); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); + } + return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); + } + +} + diff --git a/src/main/java/com/shanzhu/flower/controller/UserController.java b/src/main/java/com/shanzhu/flower/controller/UserController.java new file mode 100644 index 0000000..4b5cfe0 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/controller/UserController.java @@ -0,0 +1,92 @@ +package com.shanzhu.flower.controller; + +import com.shanzhu.flower.config.Constant; +import com.shanzhu.flower.config.HttpMsg; +import com.shanzhu.flower.entity.R; +import com.shanzhu.flower.entity.User; +import com.shanzhu.flower.service.UserService; +import org.springframework.web.bind.annotation.*; +import tk.mybatis.mapper.util.StringUtil; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 用户 控制层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@RestController +@RequestMapping("user") +public class UserController { + + @Resource + private UserService userService; + + @RequestMapping("/queryInfoByAccount") + R queryInfoByAccount(@RequestParam("account") String account) { + R r = new R(); + if (StringUtil.isEmpty(account)){ + return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); + } + User loginUser = userService.queryInfo(account); + if (loginUser == null){ + return r.setCode(4000).setMsg(HttpMsg.INVALID_USER); + } + return r.setCode(2000).setData(loginUser); + } + + @RequestMapping("/find") + R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { + R r = new R(); + Map map = new HashMap<>(); + List users = userService.find(searchKey); + if (users == null) { + return r.setCode(2000); + } + List items = users.size() >= page * Constant.PAGE_SIZE ? + users.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) + : users.subList((page - 1) * Constant.PAGE_SIZE, users.size()); + int len = users.size() % Constant.PAGE_SIZE == 0 ? users.size() / Constant.PAGE_SIZE + : (users.size() / Constant.PAGE_SIZE + 1); + map.put("items", items); + map.put("len", len); + return r.setCode(2000).setData(map); + } + + @RequestMapping("/create") + R create(@RequestBody User user) { + R r = new R(); + int ans = userService.add(user); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.ADD_USER_OK); + } + return r.setCode(4000).setMsg(HttpMsg.ADD_USER_FAILED); + } + + @RequestMapping("/update") + R update(@RequestBody User user) { + R r = new R(); + int ans = userService.update(user); + if (ans >= 0) { + return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); + } + return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); + } + + @DeleteMapping("/delete") + R delete(@RequestParam("id") int id) { + R r = new R(); + int ans = userService.delete(id); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); + } + return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); + } + +} + diff --git a/src/main/java/com/shanzhu/flower/dao/CartDao.java b/src/main/java/com/shanzhu/flower/dao/CartDao.java new file mode 100644 index 0000000..9897a5d --- /dev/null +++ b/src/main/java/com/shanzhu/flower/dao/CartDao.java @@ -0,0 +1,41 @@ +package com.shanzhu.flower.dao; + +import com.shanzhu.flower.entity.Cart; +import org.apache.ibatis.annotations.*; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface CartDao { + + @Select("select * from carts where flower like concat('%',#{searchKey},'%') and account = #{account};") + List find(@Param("searchKey") String searchKey, @Param("account") String account); + + @Select("select * from carts;") + List findAll(); + + @Select("select * from carts where fid = #{fid} and uid = #{uid};") + Cart checkIsAdded(Cart cart); + + @Update("update carts set amount = amount + 1 where fid = #{fid} and uid = #{uid};") + int addAmount(Cart cart); + + @Select("select * from carts where uid = #{uid};") + List queryByUid(int uid); + + @Update("update carts set name = #{name},password = #{password},phone = #{phone},address = #{address} where id = #{id};") + int update(Cart cart); + + @Delete("delete from carts where id = #{id};") + int delete(int id); + + @Insert("insert into carts(fid,flower,amount,uid) " + + "values(#{fid},#{flower},1,#{uid});") + int add(Cart cart); + +} + + + + diff --git a/src/main/java/com/shanzhu/flower/dao/FlowersDao.java b/src/main/java/com/shanzhu/flower/dao/FlowersDao.java new file mode 100644 index 0000000..dac65c0 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/dao/FlowersDao.java @@ -0,0 +1,41 @@ +package com.shanzhu.flower.dao; + +import com.shanzhu.flower.entity.Flower; +import org.apache.ibatis.annotations.*; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface FlowersDao { + + @Select("select * from flowers where name like concat('%',#{searchKey},'%') " + + "and species_name like concat('%',#{searchType},'%') and state = 1;") + List find(@Param("searchKey") String searchKey, @Param("searchType")String searchType); + + @Select("select * from flowers where name like concat('%',#{searchKey},'%');") + List findAll(String searchKey); + + @Select("select price from flowers where id = #{fid};") + Float queryPrice(int fid); + + @Update("update flowers set name = #{name}, species_name = #{species_name}, price = #{price}, detail = #{detail} where id = #{id};") + Integer update(Flower flower); + + @Update("update flowers set img_guid = #{img_guid} where id = #{id};") + Integer updateImg(@Param("img_guid") String img_guid,@Param("id") Integer id); + + @Update("update flowers set state = ${state} where id = #{id};") + Integer changeState(Flower flower); + + @Delete("delete from flowers where id = #{id};") + Integer delete(int id); + + @Insert("insert into flowers(name,species_name,price,detail,state) values(#{name},#{species_name},${price},#{detail},1);") + Integer add(Flower flower); + +} + + + + diff --git a/src/main/java/com/shanzhu/flower/dao/LoginDao.java b/src/main/java/com/shanzhu/flower/dao/LoginDao.java new file mode 100644 index 0000000..48a3ec0 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/dao/LoginDao.java @@ -0,0 +1,18 @@ +package com.shanzhu.flower.dao; + +import com.shanzhu.flower.entity.LoginForm; +import com.shanzhu.flower.entity.User; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; + +@Repository +public interface LoginDao { + + @Select("select * from users where account = #{account} and password = #{password} and role = #{role};") + User login(LoginForm form); + +} + + + + diff --git a/src/main/java/com/shanzhu/flower/dao/OrderDao.java b/src/main/java/com/shanzhu/flower/dao/OrderDao.java new file mode 100644 index 0000000..5c9f97c --- /dev/null +++ b/src/main/java/com/shanzhu/flower/dao/OrderDao.java @@ -0,0 +1,44 @@ +package com.shanzhu.flower.dao; + +import com.shanzhu.flower.entity.Cart; +import com.shanzhu.flower.entity.Order; +import org.apache.ibatis.annotations.*; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface OrderDao { + + @Select("select * from orders where flower like concat('%',#{searchKey},'%') and uid = #{uid};") + List find(@Param("searchKey") String searchKey, @Param("uid") int uid); + + @Select("select * from orders where flower like concat('%',#{searchKey},'%');") + List findAll(String searchKey); + + + @Select("select * from orders where fid = #{fid} and uid = #{uid};") + Order checkIsAdded(Order order); + + + @Update("update orders set state = #{state} where id = #{id};") + int changeState(Order order); + + @Select("select * from orders where uid = #{uid};") + List queryByUid(int uid); + + @Update("update orders set name = #{name},password = #{password},phone = #{phone},address = #{address} where id = #{id};") + int update(Order order); + + @Delete("delete from orders where id = #{id};") + int delete(int id); + + @Insert("insert into orders(flower,amount,price,state,uid) " + + "values(#{flower},#{amount},#{price},0,#{uid});") + int add(Cart cart); + +} + + + + diff --git a/src/main/java/com/shanzhu/flower/dao/SpeciesDao.java b/src/main/java/com/shanzhu/flower/dao/SpeciesDao.java new file mode 100644 index 0000000..db2ed84 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/dao/SpeciesDao.java @@ -0,0 +1,34 @@ +package com.shanzhu.flower.dao; + +import com.shanzhu.flower.entity.Species; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface SpeciesDao { + + @Select("select * from species where species_name like concat('%',#{searchKey},'%');") + List find(String searchKey); + + @Select("select * from species;") + List findAll(); + + @Update("update species set species_name = #{species_name} where id = #{id};") + int update(Species species); + + @Delete("delete from species where id = #{id};") + int delete(int id); + + @Insert("insert into species(species_name) values(#{species_name});") + int add(Species species); + +} + + + + diff --git a/src/main/java/com/shanzhu/flower/dao/UserDao.java b/src/main/java/com/shanzhu/flower/dao/UserDao.java new file mode 100644 index 0000000..07c464e --- /dev/null +++ b/src/main/java/com/shanzhu/flower/dao/UserDao.java @@ -0,0 +1,44 @@ +package com.shanzhu.flower.dao; + +import com.shanzhu.flower.entity.User; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface UserDao { + + @Select("select * from users where (account like concat('%',#{searchKey},'%') or name like concat('%',#{searchKey},'%')) and role = 'user';") + List find(String searchKey); + + @Select("select * from users where id = #{id};") + User queryById(Integer id); + + @Select("select * from users;") + List findAll(); + + @Select("select * from users where account = #{account} and role = 'user';") + User queryInfo(String account); + + @Select("select id from users where account = #{account} and role = 'user';") + Integer queryIdByAccount(String account); + + @Update("update users set name = #{name},password = #{password},phone = #{phone},address = #{address} where id = #{id};") + int update(User user); + + @Delete("delete from users where id = #{id};") + int delete(int id); + + @Insert("insert into users(account,name,password,phone,address,role) " + + "values(#{account},#{name},#{password},#{phone},#{address},'user');") + int add(User user); + +} + + + + diff --git a/src/main/java/com/shanzhu/flower/entity/Cart.java b/src/main/java/com/shanzhu/flower/entity/Cart.java new file mode 100644 index 0000000..3fbc9bb --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/Cart.java @@ -0,0 +1,19 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Cart { + + private int id; + private int fid; + private String flower; + private int amount; + private float price; + private int uid; + private String account; +} + + diff --git a/src/main/java/com/shanzhu/flower/entity/Flower.java b/src/main/java/com/shanzhu/flower/entity/Flower.java new file mode 100644 index 0000000..d61e979 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/Flower.java @@ -0,0 +1,25 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Flower { + + private int id; + private String name; + // 分类名称 + private String species_name; + private float price; + // 详细介绍 + private String detail; + // 图片 + private String img_guid; + // 是否上架 + private int state; + +} + + + diff --git a/src/main/java/com/shanzhu/flower/entity/LoginForm.java b/src/main/java/com/shanzhu/flower/entity/LoginForm.java new file mode 100644 index 0000000..a345d01 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/LoginForm.java @@ -0,0 +1,12 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class LoginForm { + private String account; + private String password; + private String role; +} diff --git a/src/main/java/com/shanzhu/flower/entity/Order.java b/src/main/java/com/shanzhu/flower/entity/Order.java new file mode 100644 index 0000000..424ae09 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/Order.java @@ -0,0 +1,22 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Order { + + private int id; + private String order_guid; + private String flower; + private int amount; + private float price; + private float state; + // 用户 id + private int uid; + +} + + + diff --git a/src/main/java/com/shanzhu/flower/entity/OrderVo.java b/src/main/java/com/shanzhu/flower/entity/OrderVo.java new file mode 100644 index 0000000..9a57950 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/OrderVo.java @@ -0,0 +1,17 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class OrderVo extends Order{ + + private String username; + private String phone; + private String address; + +} + + + diff --git a/src/main/java/com/shanzhu/flower/entity/Param.java b/src/main/java/com/shanzhu/flower/entity/Param.java new file mode 100644 index 0000000..ae6a9ca --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/Param.java @@ -0,0 +1,11 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Param { + private String searchKey; + private int page; +} diff --git a/src/main/java/com/shanzhu/flower/entity/R.java b/src/main/java/com/shanzhu/flower/entity/R.java new file mode 100644 index 0000000..65a2d76 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/R.java @@ -0,0 +1,16 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class R { + private int code; + private String msg; + private Object data; + +} + + + diff --git a/src/main/java/com/shanzhu/flower/entity/Species.java b/src/main/java/com/shanzhu/flower/entity/Species.java new file mode 100644 index 0000000..886f392 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/Species.java @@ -0,0 +1,15 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Species { + private int id; + private String species_name; + +} + + + diff --git a/src/main/java/com/shanzhu/flower/entity/User.java b/src/main/java/com/shanzhu/flower/entity/User.java new file mode 100644 index 0000000..16031f4 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/User.java @@ -0,0 +1,19 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class User { + private int id; + private String account; + private String name; + private String password; + private String phone; + private String address; + private String role; +} + + + diff --git a/src/main/java/com/shanzhu/flower/service/CartService.java b/src/main/java/com/shanzhu/flower/service/CartService.java new file mode 100644 index 0000000..ff76edf --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/CartService.java @@ -0,0 +1,20 @@ +package com.shanzhu.flower.service; + +import com.shanzhu.flower.entity.Cart; + +import java.util.List; + +/** + * 购物车 服务 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +public interface CartService { + + int add(Cart cart); + int delete(int uid); + int update(Cart cart); + List find(String searchKey,String account); + List queryByAccount(String account); +} diff --git a/src/main/java/com/shanzhu/flower/service/FlowersService.java b/src/main/java/com/shanzhu/flower/service/FlowersService.java new file mode 100644 index 0000000..06fcc82 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/FlowersService.java @@ -0,0 +1,21 @@ +package com.shanzhu.flower.service; + +import com.shanzhu.flower.entity.Flower; + +import java.util.List; + +/** + * 鲜花商品 服务层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +public interface FlowersService { + + int add(Flower flower); + int delete(int id); + int update(Flower flower); + List find(String searchKey,String searchType); + List findAll(String searchKey); + int updateImg(String img_guid,Integer id); +} diff --git a/src/main/java/com/shanzhu/flower/service/OrderService.java b/src/main/java/com/shanzhu/flower/service/OrderService.java new file mode 100644 index 0000000..2fcfbce --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/OrderService.java @@ -0,0 +1,22 @@ +package com.shanzhu.flower.service; + +import com.shanzhu.flower.entity.Cart; +import com.shanzhu.flower.entity.Order; + +import java.util.List; + +/** + * 订单 服务层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +public interface OrderService { + + int add(Cart cart); + int delete(int uid); + int update(Order order); + List find(String searchKey, String account); + List findAll(String searchKey); + List queryByAccount(String account); +} diff --git a/src/main/java/com/shanzhu/flower/service/SpeciesService.java b/src/main/java/com/shanzhu/flower/service/SpeciesService.java new file mode 100644 index 0000000..c662e23 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/SpeciesService.java @@ -0,0 +1,14 @@ +package com.shanzhu.flower.service; + +import com.shanzhu.flower.entity.Species; + +import java.util.List; + +public interface SpeciesService { + + int add(Species species); + int delete(int id); + int update(Species species); + List find(String searchKey); + List findAll(); +} diff --git a/src/main/java/com/shanzhu/flower/service/UserService.java b/src/main/java/com/shanzhu/flower/service/UserService.java new file mode 100644 index 0000000..abe7071 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/UserService.java @@ -0,0 +1,20 @@ +package com.shanzhu.flower.service; + +import com.shanzhu.flower.entity.User; + +import java.util.List; + +/** + * 用户 服务层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +public interface UserService { + + int add(User user); + int delete(int uid); + int update(User user); + List find(String searchKey); + User queryInfo(String account); +} diff --git a/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java new file mode 100644 index 0000000..fa01a60 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java @@ -0,0 +1,55 @@ +package com.shanzhu.flower.service.impl; + +import com.shanzhu.flower.dao.CartDao; +import com.shanzhu.flower.dao.UserDao; +import com.shanzhu.flower.entity.Cart; +import com.shanzhu.flower.service.CartService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class CartServiceImpl implements CartService { + + @Resource + private CartDao cartDao; + + @Resource + private UserDao userDao; + + @Override + public int add(Cart cart) { + int uid = userDao.queryIdByAccount(cart.getAccount()); + cart.setUid(uid); + Cart cart1 = cartDao.checkIsAdded(cart); + if (cart1==null){ + return cartDao.add(cart); + }else { + return cartDao.addAmount(cart); + } + } + + @Override + public int delete(int uid) { + return cartDao.delete(uid); + } + + @Override + public int update(Cart cart) { + return cartDao.update(cart); + } + + @Override + public List find(String searchKey,String account) { + return cartDao.find(searchKey,account); + } + + @Override + public List queryByAccount(String account) { + Integer uid = userDao.queryIdByAccount(account); + return cartDao.queryByUid(uid); + } + + +} diff --git a/src/main/java/com/shanzhu/flower/service/impl/FlowersServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/FlowersServiceImpl.java new file mode 100644 index 0000000..631506a --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/impl/FlowersServiceImpl.java @@ -0,0 +1,46 @@ +package com.shanzhu.flower.service.impl; + +import com.shanzhu.flower.dao.FlowersDao; +import com.shanzhu.flower.entity.Flower; +import com.shanzhu.flower.service.FlowersService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class FlowersServiceImpl implements FlowersService { + + @Resource + private FlowersDao flowersDao; + + @Override + public int add(Flower flower) { + return flowersDao.add(flower); + } + + @Override + public int delete(int id) { + return flowersDao.delete(id); + } + + @Override + public int update(Flower flower) { + return flowersDao.update(flower); + } + + @Override + public List find(String searchKey,String searchType) { + return flowersDao.find(searchKey,searchType); + } + + @Override + public List findAll(String searchKey) { + return flowersDao.findAll(searchKey); + } + + @Override + public int updateImg(String img_guid,Integer id) { + return flowersDao.updateImg(img_guid,id); + } +} diff --git a/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java new file mode 100644 index 0000000..d950ff0 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java @@ -0,0 +1,55 @@ +package com.shanzhu.flower.service.impl; + +import com.shanzhu.flower.dao.OrderDao; +import com.shanzhu.flower.dao.UserDao; +import com.shanzhu.flower.entity.Cart; +import com.shanzhu.flower.entity.Order; +import com.shanzhu.flower.service.OrderService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class OrderServiceImpl implements OrderService { + + @Resource + private OrderDao orderdao; + + @Resource + private UserDao userDao; + + @Override + public int add(Cart cart) { + return orderdao.add(cart); + } + + @Override + public int delete(int uid) { + return orderdao.delete(uid); + } + + @Override + public int update(Order order) { + return orderdao.update(order); + } + + @Override + public List find(String searchKey,String account) { + Integer uid = userDao.queryIdByAccount(account); + return orderdao.find(searchKey,uid); + } + + @Override + public List findAll(String searchKey) { + return orderdao.findAll(searchKey); + } + + @Override + public List queryByAccount(String account) { + Integer uid = userDao.queryIdByAccount(account); + return orderdao.queryByUid(uid); + } + + +} diff --git a/src/main/java/com/shanzhu/flower/service/impl/SpeciesServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/SpeciesServiceImpl.java new file mode 100644 index 0000000..34ad99b --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/impl/SpeciesServiceImpl.java @@ -0,0 +1,41 @@ +package com.shanzhu.flower.service.impl; + +import com.shanzhu.flower.dao.SpeciesDao; +import com.shanzhu.flower.entity.Species; +import com.shanzhu.flower.service.SpeciesService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class SpeciesServiceImpl implements SpeciesService { + + @Resource + private SpeciesDao speciesDao; + + @Override + public int add(Species species) { + return speciesDao.add(species); + } + + @Override + public int delete(int uid) { + return speciesDao.delete(uid); + } + + @Override + public int update(Species species) { + return speciesDao.update(species); + } + + @Override + public List find(String searchKey) { + return speciesDao.find(searchKey); + } + + @Override + public List findAll() { + return speciesDao.findAll(); + } +} diff --git a/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..46e2c8b --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java @@ -0,0 +1,45 @@ +package com.shanzhu.flower.service.impl; + +import com.shanzhu.flower.dao.UserDao; +import com.shanzhu.flower.entity.User; +import com.shanzhu.flower.service.UserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class UserServiceImpl implements UserService { + + @Resource + private UserDao userdao; + + @Override + public int add(User user) { + try { + return userdao.add(user); + }catch (Exception e){ + return 0; + } + } + + @Override + public int delete(int uid) { + return userdao.delete(uid); + } + + @Override + public int update(User user) { + return userdao.update(user); + } + + @Override + public List find(String searchKey) { + return userdao.find(searchKey); + } + + @Override + public User queryInfo(String account) { + return userdao.queryInfo(account); + } +} diff --git a/src/main/java/com/shanzhu/flower/util/VerifyUtil.java b/src/main/java/com/shanzhu/flower/util/VerifyUtil.java new file mode 100644 index 0000000..89f555d --- /dev/null +++ b/src/main/java/com/shanzhu/flower/util/VerifyUtil.java @@ -0,0 +1,19 @@ +package com.shanzhu.flower.util; + + +import com.shanzhu.flower.entity.LoginForm; +import tk.mybatis.mapper.util.StringUtil; + +public class VerifyUtil { + + public static boolean verifyLoginForm(LoginForm form) { + if (form==null || StringUtil.isEmpty(form.getAccount())|| StringUtil.isEmpty(form.getPassword())|| StringUtil.isEmpty(form.getRole())) { + return false; + } + if (form.getRole().equals("user") || form.getRole().equals("admin")){ + return true; + } + return false; + } + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..38c20b0 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,22 @@ +#后端服务端口 +server: + port: 8081 + +spring: + #数据库配置 + datasource: + url: jdbc:mysql://localhost:3306/DB_flower?characterEncoding=UTF-8&serverTimezone=UTC + username: root + password: 123456 + + resources: + chain: + strategy: + content: + enabled: true + paths: /** +mybatis: + type-aliases-package: com.shanzhu.flower.entity + +#图片上传路径 图片所在的路径位置 +uploadPath: /Users/jiawang/saleProject/花店商城/flower-frontend/static/imgs/ -- 2.34.1 From 8dc224fc29880899a74a504387c3f626b9128dc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=B7=E8=8F=8A=E8=8F=8A?= <2582304574@qq.com> Date: Sat, 26 Apr 2025 21:04:48 +0800 Subject: [PATCH 2/4] 11 --- .../com/shanzhu/flower/config/Constant.java | 21 ++- .../com/shanzhu/flower/config/HttpMsg.java | 150 +++++++++++++++++- .../flower/config/ProcessInterceptor.java | 20 ++- .../shanzhu/flower/config/WebMvcConfig.java | 15 +- .../flower/controller/CartController.java | 144 ++++++++--------- .../flower/controller/LoginController.java | 23 ++- .../flower/controller/OrderController.java | 145 +++++++++++------ .../flower/controller/UserController.java | 122 ++++++++++---- .../java/com/shanzhu/flower/dao/CartDao.java | 63 +++++++- .../java/com/shanzhu/flower/dao/LoginDao.java | 15 +- .../java/com/shanzhu/flower/dao/OrderDao.java | 66 +++++++- .../java/com/shanzhu/flower/dao/UserDao.java | 62 +++++++- .../java/com/shanzhu/flower/entity/Cart.java | 30 +++- .../java/com/shanzhu/flower/entity/Order.java | 39 ++++- .../java/com/shanzhu/flower/entity/User.java | 37 ++++- .../shanzhu/flower/service/CartService.java | 44 ++++- .../shanzhu/flower/service/OrderService.java | 50 ++++++ .../shanzhu/flower/service/UserService.java | 41 ++++- .../flower/service/impl/CartServiceImpl.java | 26 +-- .../flower/service/impl/OrderServiceImpl.java | 24 ++- .../flower/service/impl/UserServiceImpl.java | 15 +- 21 files changed, 914 insertions(+), 238 deletions(-) diff --git a/src/main/java/com/shanzhu/flower/config/Constant.java b/src/main/java/com/shanzhu/flower/config/Constant.java index d9e84d4..852767f 100644 --- a/src/main/java/com/shanzhu/flower/config/Constant.java +++ b/src/main/java/com/shanzhu/flower/config/Constant.java @@ -1,20 +1,29 @@ package com.shanzhu.flower.config; /** - * 常量 - * 图片静态文件路径 + * 常量类,用于存储项目中常用的配置常量。 + * 包括分页大小、图片路径等配置。 * - * @author: ShanZhu - * @date: 2024-01-24 */ public class Constant { - +// 默认分页大小,用于分页查询时每页显示的记录数。 +// 默认值为5,可根据实际需求调整。 public static int PAGE_SIZE = 5; - // 商品展示 +// +// 商品展示页面的分页大小。 +// 用于商品列表展示时每页显示的商品数量。 +// 默认值为9,可根据页面布局调整。 +// public static int SHOW_PAGE_SIZE = 9; +// 图片静态文件的存储路径。 +// 用于存放项目中使用的图片资源。 +// 路径为项目根目录下的static/imgs/文件夹。 public static String IMG_USE_PATH = "static/imgs/"; +// 默认图片文件名。 +// 当没有指定图片时,使用此默认图片作为占位图。 +// 文件名为img.jpg,位于IMG_USE_PATH路径下。 public static String DEFAULT_IMG = "img.jpg"; } diff --git a/src/main/java/com/shanzhu/flower/config/HttpMsg.java b/src/main/java/com/shanzhu/flower/config/HttpMsg.java index fa4a369..d23e562 100644 --- a/src/main/java/com/shanzhu/flower/config/HttpMsg.java +++ b/src/main/java/com/shanzhu/flower/config/HttpMsg.java @@ -1,52 +1,186 @@ package com.shanzhu.flower.config; /** - * http状态消息 + * HTTP状态消息常量类。 + * 用于存储项目中常见的HTTP响应消息,便于统一管理和维护。 + * 包括用户操作、类型管理、商品管理、订单管理等操作的反馈信息。 * * @author: ShanZhu * @date: 2024-01-24 */ public class HttpMsg { +// 表单输入错误的提示信息。 +// 当用户提交的表单数据不符合要求时返回此消息。 public static String ERROR_INPUT = "表单信息不正确"; + +// 用户名或密码错误的提示信息。 +// 当用户登录时输入的用户名或密码不匹配时返回此消息。 + public static String ERROR_VERIFY = "用户名或密码错误"; + +// 新建用户成功的提示信息。 +// 当用户注册成功时返回此消息。 + public static String ADD_USER_OK = "新建用户成功"; + + +// 新建用户失败的提示信息(账号已存在)。 +// 当用户注册时输入的账号已存在时返回此消息。 + public static String ADD_USER_FAILED = "新建用户失败,该账号已存在"; + +// 修改用户信息成功的提示信息。 +// 当用户更新个人信息成功时返回此消息。 + public static String UPDATE_USER_OK = "修改用户信息成功"; + +// 修改用户信息失败的提示信息。 +// 当用户更新个人信息失败时返回此消息。 + public static String UPDATE_USER_FAILED = "修改用户信息失败"; + +// 删除用户信息成功的提示信息。 +// 当管理员删除用户信息成功时返回此消息。 + public static String DELETE_USER_OK = "删除用户信息成功"; + +// 删除用户信息失败的提示信息。 +// 当管理员删除用户信息失败时返回此消息。 public static String DELETE_USER_FAILED = "删除用户信息失败"; - + +// 删除类型成功的提示信息。 +// 当管理员删除花朵类型成功时返回此消息。 + public static String DELETE_TYPE_OK = "删除类型成功"; + +// 删除类型失败的提示信息(有商品绑定此类型)。 +// 当管理员删除花朵类型失败(因为有商品绑定此类型)时返回此消息。 +// public static String DELETE_TYPE_FAILED = "有商品绑定此类型,删除类型失败"; + + +// 修改类型成功的提示信息。 +// 当管理员修改花朵类型成功时返回此消息。 + public static String UPDATE_TYPE_OK = "修改类型成功"; + +// 修改类型失败的提示信息(有商品绑定此类型)。 +// 当管理员修改花朵类型失败(因为有商品绑定此类型)时返回此消息。 public static String UPDATE_TYPE_FAILED = "有商品绑定此类型,修改类型失败"; + + +// 新建类型成功的提示信息。 +// 当管理员新建花朵类型成功时返回此消息。 public static String ADD_TYPE_OK = "新建类型成功"; + + +// 新建类型失败的提示信息(该类型名称已存在)。 +// 当管理员新建花朵类型失败(因为该类型名称已存在)时返回此消息。 + public static String ADD_TYPE_FAILED = "新建类型失败,该类型名称已存在"; +// 删除商品成功的提示信息。 +// 当管理员删除商品成功时返回此消息。 + public static String DELETE_FLOWER_OK = "删除商品成功"; - public static String DELETE_FLOWER_OK = "删除类型成功"; - public static String DELETE_FLOWER_FAILED = "有商品绑定此类型,删除类型失败"; - public static String UPDATE_FLOWER_OK = "修改类型成功"; - public static String UPDATE_FLOWER_FAILED = "有商品绑定此类型,修改类型失败"; - public static String ADD_FLOWER_OK = "新建类型成功"; - public static String ADD_FLOWER_FAILED = "新建类型失败,该类型名称已存在"; +// +// 删除商品失败的提示信息(有商品绑定此类型)。 +// 当管理员删除商品失败(因为有商品绑定此类型)时返回此消息。 +// + public static String DELETE_FLOWER_FAILED = "有商品绑定此类型,删除商品失败"; +// +// 修改商品成功的提示信息。 +// 当管理员修改商品成功时返回此消息。 +// + public static String UPDATE_FLOWER_OK = "修改商品成功"; + +// +// 修改商品失败的提示信息(有商品绑定此类型)。 +// 当管理员修改商品失败(因为有商品绑定此类型)时返回此消息。 +// + public static String UPDATE_FLOWER_FAILED = "有商品绑定此类型,修改商品失败"; + +// +// 新建商品成功的提示信息。 +// 当管理员新建商品成功时返回此消息。 +// + public static String ADD_FLOWER_OK = "新建商品成功"; + +// +// 新建商品失败的提示信息(该商品名称已存在)。 +// 当管理员新建商品失败(因为该商品名称已存在)时返回此消息。 +// + public static String ADD_FLOWER_FAILED = "新建商品失败,该商品名称已存在"; + +// +// 当前没有花朵种类的提示信息。 +// 当系统中没有花朵种类时返回此消息,提示管理员需要先创建种类。 +// public static String NO_TYPE_NOW = "当前没有花朵种类,请先创建!"; +// +// 更新图片成功的提示信息。 +// 当用户或管理员更新图片成功时返回此消息。 +// public static String UPDATE_PIC_OK = "更新图片成功"; + +// +// 更新图片失败的提示信息。 +// 当用户或管理员更新图片失败时返回此消息。 +// public static String UPDATE_PIC_FAILED = "更新图片失败"; +// +// 参数不合法的提示信息。 +// 当请求中包含的参数不符合要求时返回此消息。 +// public static String INVALID_PARAM = "参数不合法"; +// +// 登录失效的提示信息。 +// 当用户登录状态失效时返回此消息,提示用户重新登录。 +// public static String INVALID_USER = "登录失效,请重新登录"; +// +// 加入购物车成功的提示信息。 +// 当用户将商品加入购物车成功时返回此消息。 +// public static String ADD_CART_OK = "加入购物车成功"; + +// +// 加入购物车失败的提示信息。 +// 当用户将商品加入购物车失败时返回此消息。 +// public static String ADD_CART_FAILED = "加入购物车失败"; +// +// 下单成功的提示信息。 +// 当用户下单成功时返回此消息。 +// public static String BUY_OK = "下单成功"; +// +// 订单发货状态更新成功的提示信息。 +// 当管理员更新订单发货状态成功时返回此消息。 +// public static String UPDATE_ORDER_OK = "订单发货状态更新成功"; + +// +// 错误的文件类型的提示信息。 +// 当上传的文件类型不符合要求时返回此消息。 +// public static String ERROR_FILE_TYPE = "错误的文件类型"; +// +// 商品上架成功的提示信息。 +// 当管理员将商品上架成功时返回此消息。 +// public static String GOODS_UP_OK = "商品上架成功"; + +// +// 商品下架成功的提示信息。 +// 当管理员将商品下架成功时返回此消息。 +// public static String GOODS_DOWN_OK = "商品下架成功"; } diff --git a/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java b/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java index 77e6370..72b2b31 100644 --- a/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java +++ b/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java @@ -9,6 +9,7 @@ import javax.servlet.http.HttpServletResponse; /** * 请求处理拦截器 + * 用于处理跨域请求和预请求(OPTIONS方法)。 * * @author: ShanZhu * @date: 2024-01-24 @@ -18,23 +19,38 @@ public class ProcessInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { + // 设置允许跨域访问的来源,允许所有来源 httpServletResponse.setHeader("Access-Control-Allow-Origin", "*"); + // 设置允许的请求头字段 httpServletResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With"); + // 设置允许的请求方法 httpServletResponse.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); + // 设置服务器信息头,表明服务器使用的服务器软件 httpServletResponse.setHeader("X-Powered-By", "Jetty"); + + // 获取请求的方法类型 String method = httpServletRequest.getMethod(); + // 判断是否为OPTIONS预请求 if (method.equals("OPTIONS")) { + // 如果是OPTIONS请求,直接返回200状态码,表示预请求通过 httpServletResponse.setStatus(200); - return false; + return false; // 不继续处理后续的请求 } + // 如果不是OPTIONS请求,继续后续的处理流程 return true; } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { + // 在请求处理之后进行调用(在Controller方法之后) + // 用于修改ModelAndView对象,例如添加额外的模型数据或修改视图 + // 本拦截器中未实现具体逻辑 } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { + // 在整个请求结束之后被调用,主要用于进行资源清理工作 + // 例如关闭数据库连接、释放资源等 + // 本拦截器中未实现具体逻辑 } -} \ No newline at end of file +} diff --git a/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java b/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java index 2147b26..bc48af9 100644 --- a/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java +++ b/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java @@ -5,7 +5,9 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** - * web mvc配置,跨域配置等 + * Web MVC配置类,用于配置Spring MVC的相关功能。 + * 主要功能包括: + * - 添加拦截器,用于处理跨域请求等。 * * @author: ShanZhu * @date: 2024-01-24 @@ -15,8 +17,11 @@ public class WebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { - - registry.addInterceptor(new ProcessInterceptor()).addPathPatterns("/**"); + // 添加自定义的拦截器ProcessInterceptor + // ProcessInterceptor用于处理跨域请求和预请求(OPTIONS方法) + registry.addInterceptor(new ProcessInterceptor()) + // 指定拦截器的应用路径模式 + // 使用"/**"表示拦截所有请求路径 + .addPathPatterns("/**"); } - -} \ No newline at end of file +} diff --git a/src/main/java/com/shanzhu/flower/controller/CartController.java b/src/main/java/com/shanzhu/flower/controller/CartController.java index d459bd4..5daea89 100644 --- a/src/main/java/com/shanzhu/flower/controller/CartController.java +++ b/src/main/java/com/shanzhu/flower/controller/CartController.java @@ -1,5 +1,4 @@ package com.shanzhu.flower.controller; - import com.shanzhu.flower.config.Constant; import com.shanzhu.flower.config.HttpMsg; import com.shanzhu.flower.dao.FlowersDao; @@ -9,15 +8,13 @@ import com.shanzhu.flower.service.CartService; import com.shanzhu.flower.service.OrderService; import org.springframework.web.bind.annotation.*; import tk.mybatis.mapper.util.StringUtil; - import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; - - /** * 购物车 控制层 + * 提供购物车相关的RESTful API接口,包括查询、分页查询、购买、新增、更新和删除购物车项。 * * @author: ShanZhu * @date: 2024-01-24 @@ -25,48 +22,43 @@ import java.util.Map; @RestController @RequestMapping("cart") public class CartController { - @Resource - private CartService cartService; - + private CartService cartService; // 注入购物车服务层 @Resource - private OrderService orderService; - + private OrderService orderService; // 注入订单服务层 @Resource - private FlowersDao flowersDao; - + private FlowersDao flowersDao; // 注入花朵数据访问对象 /** * 查询用户购物车 + * 根据用户账号查询其购物车中的所有商品,并计算每个商品的总价。 * * @param account 用户账号 - * @return 购物车 + * @return 购物车信息 */ @RequestMapping("/queryByAccount") R queryByAccount(@RequestParam("account") String account) { - R r = new R(); - + R r = new R(); // 创建响应对象 +// 检查用户账号是否为空 if (StringUtil.isEmpty(account)) { - return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); + return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); // 参数不合法 } - +// 查询购物车中的商品 List carts = cartService.queryByAccount(account); - +// 计算每个商品的总价 for (Cart cart : carts) { - float price = flowersDao.queryPrice(cart.getFid()); - cart.setPrice(cart.getAmount() * price); + float price = flowersDao.queryPrice(cart.getFid()); // 查询商品单价 + cart.setPrice(cart.getAmount() * price); // 设置总价 } - - return r.setCode(2000).setData(carts); + return r.setCode(2000).setData(carts); // 返回成功响应 } - - /** * 分页查询购物车 + * 根据用户账号和查询条件分页查询购物车中的商品。 * - * @param page 页数 + * @param page 页数 * @param searchKey 查询条件 - * @param account 账户 - * @return 购物车列表 + * @param account 用户账号 + * @return 分页后的购物车信息 */ @RequestMapping("/find") R find( @@ -74,103 +66,101 @@ public class CartController { @RequestParam("searchKey") String searchKey, @RequestParam("account") String account ) { - - R r = new R(); - - Map map = new HashMap<>(); - List carts = cartService.find(searchKey, account); - + R r = new R(); // 创建响应对象 +// 创建返回数据的Map + Map map = new HashMap<>(); +// 查询购物车中的商品 + List carts = cartService.find(searchKey, account); +// 如果查询结果为空,直接返回 if (carts == null) { return r.setCode(2000); } - - List items = carts.size() >= page * Constant.PAGE_SIZE ? - carts.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) - : carts.subList((page - 1) * Constant.PAGE_SIZE, carts.size()); - - int len = carts.size() % Constant.PAGE_SIZE == 0 ? carts.size() / Constant.PAGE_SIZE - : (carts.size() / Constant.PAGE_SIZE + 1); +// 计算分页信息 + int totalSize = carts.size(); // 总记录数 + int pageSize = Constant.PAGE_SIZE; // 每页大小 + int totalPages = (totalSize + pageSize - 1) / pageSize; // 总页数 +// 获取当前页的数据 + int start = (page - 1) * pageSize; + int end = Math.min(start + pageSize, totalSize); + List items = carts.subList(start, end); +// 将分页信息和当前页数据放入Map map.put("items", items); - map.put("len", len); - - return r.setCode(2000).setData(map); + map.put("len", totalPages); + return r.setCode(2000).setData(map); // 返回成功响应 } - /** * 购买 + * 将购物车中的商品生成订单,并清空购物车。 * - * @param account 账号 - * @return 结果 + * @param account 用户账号 + * @return 购买结果 */ @RequestMapping("/buy") R buy(@RequestParam("account") String account) { - R r = new R(); - - // 查该用户的购物车 - List carts = (List) queryByAccount(account).getData(); + R r = new R(); // 创建响应对象 +// 查询该用户的购物车 + List carts = (List) queryByAccount(account).getData(); +// 遍历购物车中的商品 for (Cart cart : carts) { - // 增加订单数据 +// 增加订单数据 orderService.add(cart); - // 删除购物车数据 +// 删除购物车数据 cartService.delete(cart.getId()); } - - return r.setCode(2000).setMsg(HttpMsg.BUY_OK); + return r.setCode(2000).setMsg(HttpMsg.BUY_OK); // 返回购买成功响应 } - /** * 新增购物车 + * 将商品添加到购物车中。 * * @param cart 购物车信息 - * @return 购物车 + * @return 新增结果 */ @RequestMapping("/create") R create(@RequestBody Cart cart) { - R r = new R(); - + R r = new R(); // 创建响应对象 +// 调用服务层添加购物车 int ans = cartService.add(cart); - +// 根据返回结果设置响应 if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.ADD_CART_OK); + return r.setCode(2000).setMsg(HttpMsg.ADD_CART_OK); // 添加成功 } - - return r.setCode(4000).setMsg(HttpMsg.ADD_CART_FAILED); + return r.setCode(4000).setMsg(HttpMsg.ADD_CART_FAILED); // 添加失败 } - /** * 更新购物车 + * 更新购物车中的商品信息。 * * @param cart 购物车信息 - * @return 结果 + * @return 更新结果 */ @RequestMapping("/update") R update(@RequestBody Cart cart) { - R r = new R(); - + R r = new R(); // 创建响应对象 +// 调用服务层更新购物车 int ans = cartService.update(cart); - +// 根据返回结果设置响应 if (ans >= 0) { - return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); // 更新成功 } - - return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); + return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); // 更新失败 } - /** * 删除购物车 + * 根据购物车ID删除购物车中的商品。 * - * @param id 购物车id - * @return 结果 + * @param id 购物车ID + * @return 删除结果 */ @DeleteMapping("/delete") R delete(@RequestParam("id") int id) { - R r = new R(); + R r = new R(); // 创建响应对象 +// 调用服务层删除购物车 int ans = cartService.delete(id); +// 根据返回结果设置响应 if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); // 删除成功 } - return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); + return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); // 删除失败 } - } - diff --git a/src/main/java/com/shanzhu/flower/controller/LoginController.java b/src/main/java/com/shanzhu/flower/controller/LoginController.java index 2c7770f..821d691 100644 --- a/src/main/java/com/shanzhu/flower/controller/LoginController.java +++ b/src/main/java/com/shanzhu/flower/controller/LoginController.java @@ -12,9 +12,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; - /** * 用户登录 控制层 + * 提供用户登录的RESTful API接口,处理用户登录请求,验证登录信息,并返回登录结果。 * * @author: ShanZhu * @date: 2024-01-24 @@ -24,19 +24,32 @@ import javax.annotation.Resource; public class LoginController { @Resource - private LoginDao loginDao; + private LoginDao loginDao; // 注入登录数据访问对象 + /** + * 用户登录 + * 处理用户登录请求,验证登录表单信息,查询用户数据,返回登录结果。 + * + * @param form 登录表单信息 + * @return 登录结果 + */ @RequestMapping("/doLogin") R doLogin(@RequestBody LoginForm form) { - R r = new R(); + R r = new R(); // 创建响应对象 + + // 验证登录表单信息 if (!VerifyUtil.verifyLoginForm(form)) { - return r.setCode(4000).setMsg(HttpMsg.ERROR_INPUT); + return r.setCode(4000).setMsg(HttpMsg.ERROR_INPUT); // 表单信息不正确 } + + // 查询用户信息 User loginUser = loginDao.login(form); if (loginUser != null) { + // 登录成功,返回用户信息和欢迎消息 return r.setCode(2000).setMsg("欢迎您:" + loginUser.getName()).setData(loginUser); } + + // 登录失败,返回错误信息 return r.setCode(4000).setMsg(HttpMsg.ERROR_VERIFY); } - } diff --git a/src/main/java/com/shanzhu/flower/controller/OrderController.java b/src/main/java/com/shanzhu/flower/controller/OrderController.java index f4ad9cd..e05a7bf 100644 --- a/src/main/java/com/shanzhu/flower/controller/OrderController.java +++ b/src/main/java/com/shanzhu/flower/controller/OrderController.java @@ -1,5 +1,4 @@ package com.shanzhu.flower.controller; - import com.shanzhu.flower.config.Constant; import com.shanzhu.flower.config.HttpMsg; import com.shanzhu.flower.dao.OrderDao; @@ -11,16 +10,14 @@ import com.shanzhu.flower.entity.User; import com.shanzhu.flower.service.OrderService; import org.springframework.web.bind.annotation.*; import tk.mybatis.mapper.util.StringUtil; - import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - - /** * 订单 控制层 + * 提供订单相关的RESTful API接口,包括查询订单、分页查询订单列表、更新订单状态、删除订单等。 * * @author: ShanZhu * @date: 2024-01-24 @@ -28,92 +25,140 @@ import java.util.Map; @RestController @RequestMapping("order") public class OrderController { - @Resource - private OrderService orderService; - + private OrderService orderService; // 注入订单服务层 @Resource - private UserDao userDao; - + private UserDao userDao; // 注入用户数据访问对象 @Resource - private OrderDao orderDao; - + private OrderDao orderDao; // 注入订单数据访问对象 + /** + * 根据账号查询订单 + * 查询指定账号的所有订单。 + * + * @param account 用户账号 + * @return 订单列表 + */ @RequestMapping("/queryByAccount") R queryByAccount(@RequestParam("account") String account) { - R r = new R(); + R r = new R(); // 创建响应对象 +// 检查账号是否为空 if (StringUtil.isEmpty(account)) { - return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); + return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); // 参数不合法 } - List orders = orderService.queryByAccount(account); - return r.setCode(2000).setData(orders); +// 查询订单 + List orders = orderService.queryByAccount(account); + return r.setCode(2000).setData(orders); // 返回订单列表 } - + /** + * 分页查询订单 + * 根据查询条件和页码分页查询订单列表。 + * + * @param page 页码 + * @param searchKey 查询条件 + * @param account 用户账号 + * @return 分页后的订单列表 + */ @RequestMapping("/find") R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey, @RequestParam("account") String account) { - R r = new R(); - Map map = new HashMap<>(); - List orders = orderService.find(searchKey, account); + R r = new R(); // 创建响应对象 + Map map = new HashMap<>(); // 创建返回数据的Map +// 查询订单列表 + List orders = orderService.find(searchKey, account); if (orders == null) { - return r.setCode(2000); + return r.setCode(2000); // 没有查询到数据 } +// 将订单列表放入Map map.put("items", orders); map.put("len", orders.size()); - return r.setCode(2000).setData(map); + return r.setCode(2000).setData(map); // 返回分页后的订单列表 } - + /** + * 分页查询所有订单 + * 查询所有订单,并根据页码分页。 + * + * @param page 页码 + * @param searchKey 查询条件 + * @return 分页后的订单列表 + */ @RequestMapping("/findAll") R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { - R r = new R(); - Map map = new HashMap<>(); - List orders = orderService.findAll(searchKey); + R r = new R(); // 创建响应对象 + Map map = new HashMap<>(); // 创建返回数据的Map +// 查询所有订单 + List orders = orderService.findAll(searchKey); if (orders == null) { - return r.setCode(2000); + return r.setCode(2000); // 没有查询到数据 } - List items = orders.size() >= page * Constant.PAGE_SIZE ? - orders.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) - : orders.subList((page - 1) * Constant.PAGE_SIZE, orders.size()); - int len = orders.size() % Constant.PAGE_SIZE == 0 ? orders.size() / Constant.PAGE_SIZE - : (orders.size() / Constant.PAGE_SIZE + 1); - List vos = new ArrayList<>(); +// 计算分页信息 + int totalSize = orders.size(); // 总记录数 + int pageSize = Constant.PAGE_SIZE; // 每页大小 + int totalPages = (totalSize + pageSize - 1) / pageSize; // 总页数 +// 获取当前页的数据 + int start = (page - 1) * pageSize; + int end = Math.min(start + pageSize, totalSize); + List items = orders.subList(start, end); +// 将订单信息转换为OrderVo + List vos = new ArrayList<>(); for (Order item : items) { - User user = userDao.queryById(item.getUid()); - OrderVo vo = new OrderVo(); + User user = userDao.queryById(item.getUid()); // 查询用户信息 + OrderVo vo = new OrderVo(); // 创建OrderVo对象 vo.setAddress(user.getAddress()).setPhone(user.getPhone()).setUsername(user.getName()) .setAmount(item.getAmount()).setFlower(item.getFlower()).setId(item.getId()) .setUid(item.getUid()).setOrder_guid(item.getOrder_guid()).setPrice(item.getPrice()) .setState(item.getState()); - vos.add(vo); + vos.add(vo); // 添加到列表 } +// 将分页信息和订单列表放入Map map.put("items", vos); - map.put("len", len); - return r.setCode(2000).setData(map); + map.put("len", totalPages); + return r.setCode(2000).setData(map); // 返回分页后的订单列表 } - + /** + * 更新订单 + * 更新指定订单的信息。 + * + * @param order 订单信息 + * @return 更新结果 + */ @RequestMapping("/update") R update(@RequestBody Order order) { - R r = new R(); + R r = new R(); // 创建响应对象 +// 调用服务层更新订单 int ans = orderService.update(order); +// 根据返回结果设置响应 if (ans >= 0) { - return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); // 更新成功 } - return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); + return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); // 更新失败 } - + /** + * 改变订单状态 + * 更新指定订单的状态。 + * + * @param order 订单信息 + * @return 更新结果 + */ @RequestMapping("/changeState") R changeState(@RequestBody Order order) { - orderDao.changeState(order); - return new R().setCode(2000).setMsg(HttpMsg.UPDATE_ORDER_OK); + orderDao.changeState(order); // 调用数据访问对象更新订单状态 + return new R().setCode(2000).setMsg(HttpMsg.UPDATE_ORDER_OK); // 返回成功响应 } - + /** + * 删除订单 + * 根据订单ID删除订单。 + * + * @param id 订单ID + * @return 删除结果 + */ @DeleteMapping("/delete") R delete(@RequestParam("id") int id) { - R r = new R(); + R r = new R(); // 创建响应对象 +// 调用服务层删除订单 int ans = orderService.delete(id); +// 根据返回结果设置响应 if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); // 删除成功 } - return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); + return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); // 删除失败 } - } - diff --git a/src/main/java/com/shanzhu/flower/controller/UserController.java b/src/main/java/com/shanzhu/flower/controller/UserController.java index 4b5cfe0..16afd92 100644 --- a/src/main/java/com/shanzhu/flower/controller/UserController.java +++ b/src/main/java/com/shanzhu/flower/controller/UserController.java @@ -13,9 +13,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; - /** * 用户 控制层 + * 提供用户相关的RESTful API接口,包括查询用户信息、分页查询用户列表、新增用户、更新用户信息和删除用户。 * * @author: ShanZhu * @date: 2024-01-24 @@ -25,68 +25,132 @@ import java.util.Map; public class UserController { @Resource - private UserService userService; + private UserService userService; // 注入用户服务层 + /** + * 根据账号查询用户信息 + * 查询指定账号的用户详细信息。 + * + * @param account 用户账号 + * @return 用户信息 + */ @RequestMapping("/queryInfoByAccount") R queryInfoByAccount(@RequestParam("account") String account) { - R r = new R(); - if (StringUtil.isEmpty(account)){ - return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); + R r = new R(); // 创建响应对象 + + // 检查账号是否为空 + if (StringUtil.isEmpty(account)) { + return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); // 参数不合法 } + + // 查询用户信息 User loginUser = userService.queryInfo(account); - if (loginUser == null){ - return r.setCode(4000).setMsg(HttpMsg.INVALID_USER); + if (loginUser == null) { + return r.setCode(4000).setMsg(HttpMsg.INVALID_USER); // 用户不存在 } - return r.setCode(2000).setData(loginUser); + + return r.setCode(2000).setData(loginUser); // 返回用户信息 } + /** + * 分页查询用户列表 + * 根据查询条件和页码分页查询用户列表。 + * + * @param page 页码 + * @param searchKey 查询条件 + * @return 分页后的用户列表 + */ @RequestMapping("/find") R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { - R r = new R(); - Map map = new HashMap<>(); + R r = new R(); // 创建响应对象 + Map map = new HashMap<>(); // 创建返回数据的Map + + // 查询用户列表 List users = userService.find(searchKey); if (users == null) { - return r.setCode(2000); + return r.setCode(2000); // 没有查询到数据 } - List items = users.size() >= page * Constant.PAGE_SIZE ? - users.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) - : users.subList((page - 1) * Constant.PAGE_SIZE, users.size()); - int len = users.size() % Constant.PAGE_SIZE == 0 ? users.size() / Constant.PAGE_SIZE - : (users.size() / Constant.PAGE_SIZE + 1); + + // 计算分页信息 + int totalSize = users.size(); // 总记录数 + int pageSize = Constant.PAGE_SIZE; // 每页大小 + int totalPages = (totalSize + pageSize - 1) / pageSize; // 总页数 + + // 获取当前页的数据 + int start = (page - 1) * pageSize; + int end = Math.min(start + pageSize, totalSize); + List items = users.subList(start, end); + + // 将分页信息和当前页数据放入Map map.put("items", items); - map.put("len", len); - return r.setCode(2000).setData(map); + map.put("len", totalPages); + + return r.setCode(2000).setData(map); // 返回分页后的用户列表 } + /** + * 新增用户 + * 添加一个新的用户记录。 + * + * @param user 用户信息 + * @return 新增结果 + */ @RequestMapping("/create") R create(@RequestBody User user) { - R r = new R(); + R r = new R(); // 创建响应对象 + + // 调用服务层添加用户 int ans = userService.add(user); + + // 根据返回结果设置响应 if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.ADD_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.ADD_USER_OK); // 添加成功 } - return r.setCode(4000).setMsg(HttpMsg.ADD_USER_FAILED); + + return r.setCode(4000).setMsg(HttpMsg.ADD_USER_FAILED); // 添加失败 } + /** + * 更新用户信息 + * 更新指定用户的详细信息。 + * + * @param user 用户信息 + * @return 更新结果 + */ @RequestMapping("/update") R update(@RequestBody User user) { - R r = new R(); + R r = new R(); // 创建响应对象 + + // 调用服务层更新用户 int ans = userService.update(user); + + // 根据返回结果设置响应 if (ans >= 0) { - return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); // 更新成功 } - return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); + + return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); // 更新失败 } + /** + * 删除用户 + * 根据用户ID删除用户记录。 + * + * @param id 用户ID + * @return 删除结果 + */ @DeleteMapping("/delete") R delete(@RequestParam("id") int id) { - R r = new R(); + R r = new R(); // 创建响应对象 + + // 调用服务层删除用户 int ans = userService.delete(id); + + // 根据返回结果设置响应 if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); // 删除成功 } - return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); - } + return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); // 删除失败 + } } - diff --git a/src/main/java/com/shanzhu/flower/dao/CartDao.java b/src/main/java/com/shanzhu/flower/dao/CartDao.java index 9897a5d..189bee9 100644 --- a/src/main/java/com/shanzhu/flower/dao/CartDao.java +++ b/src/main/java/com/shanzhu/flower/dao/CartDao.java @@ -9,33 +9,84 @@ import java.util.List; @Repository public interface CartDao { - @Select("select * from carts where flower like concat('%',#{searchKey},'%') and account = #{account};") +// +// 根据搜索关键词和用户账号查询购物车 +// 查询购物车中包含指定搜索关键词的商品,并且属于指定用户账号的记录。 +// +// @param searchKey 搜索关键词 +// @param account 用户账号 +// @return 购物车列表 +// + @Select("select * from carts where flower like concat('%',#{searchKey},'%') and account = #{account};") List find(@Param("searchKey") String searchKey, @Param("account") String account); +// +// 查询所有购物车记录 +// 查询购物车表中的所有记录。 +// +// @return 购物车记录列表 +// @Select("select * from carts;") List findAll(); +// +// 检查商品是否已添加到购物车 +// 查询指定用户是否已将指定商品添加到购物车。 +// +// @param cart 购物车对象,包含商品ID(fid)和用户ID(uid) +// @return 购物车记录,如果已添加则返回记录,否则返回null +// @Select("select * from carts where fid = #{fid} and uid = #{uid};") Cart checkIsAdded(Cart cart); +// +// 增加购物车中商品的数量 +// 将指定用户购物车中指定商品的数量加1。 +// +// @param cart 购物车对象,包含商品ID(fid)和用户ID(uid) +// @return 影响的行数,成功返回1,失败返回0 +// @Update("update carts set amount = amount + 1 where fid = #{fid} and uid = #{uid};") int addAmount(Cart cart); +// +// 根据用户ID查询购物车 +// 查询指定用户购物车中的所有商品。 +// +// @param uid 用户ID +// @return 购物车列表 +// @Select("select * from carts where uid = #{uid};") List queryByUid(int uid); +// +// 更新购物车记录 +// 更新购物车中的记录,包括商品名称、密码、电话和地址。 +// +// @param cart 购物车对象,包含需要更新的字段 +// @return 影响的行数,成功返回1,失败返回0 +// @Update("update carts set name = #{name},password = #{password},phone = #{phone},address = #{address} where id = #{id};") int update(Cart cart); +// +// 删除购物车记录 +// 根据购物车ID删除记录。 +// +// @param id 购物车ID +// @return 影响的行数,成功返回1,失败返回0 +// @Delete("delete from carts where id = #{id};") int delete(int id); +// +// 添加购物车记录 +// 将新的购物车记录插入到数据库中。 +// +// @param cart 购物车对象,包含商品ID、商品名称、数量和用户ID +// @return 影响的行数,成功返回1,失败返回0 +// @Insert("insert into carts(fid,flower,amount,uid) " + "values(#{fid},#{flower},1,#{uid});") int add(Cart cart); - } - - - - diff --git a/src/main/java/com/shanzhu/flower/dao/LoginDao.java b/src/main/java/com/shanzhu/flower/dao/LoginDao.java index 48a3ec0..ba5a803 100644 --- a/src/main/java/com/shanzhu/flower/dao/LoginDao.java +++ b/src/main/java/com/shanzhu/flower/dao/LoginDao.java @@ -7,12 +7,15 @@ import org.springframework.stereotype.Repository; @Repository public interface LoginDao { - +// +// +// 用户登录验证 +// 根据登录表单信息(账号、密码和角色)查询用户信息。 +// 如果查询到用户记录,则表示登录成功;否则登录失败。 +// +// @param form 登录表单信息,包含账号(account)、密码(password)和角色(role) +// @return 查询到的用户信息,如果登录成功返回User对象,否则返回null +// @Select("select * from users where account = #{account} and password = #{password} and role = #{role};") User login(LoginForm form); - } - - - - diff --git a/src/main/java/com/shanzhu/flower/dao/OrderDao.java b/src/main/java/com/shanzhu/flower/dao/OrderDao.java index 5c9f97c..16404ed 100644 --- a/src/main/java/com/shanzhu/flower/dao/OrderDao.java +++ b/src/main/java/com/shanzhu/flower/dao/OrderDao.java @@ -10,35 +10,85 @@ import java.util.List; @Repository public interface OrderDao { - @Select("select * from orders where flower like concat('%',#{searchKey},'%') and uid = #{uid};") +// +// 根据搜索关键词和用户ID查询订单 +// 查询指定用户的所有订单,订单中的商品名称包含指定的搜索关键词。 +// +// @param searchKey 搜索关键词 +// @param uid 用户ID +// @return 订单列表 +// + @Select("select * from orders where flower like concat('%',#{searchKey},'%') and uid = #{uid};") List find(@Param("searchKey") String searchKey, @Param("uid") int uid); +// +// 根据搜索关键词查询所有订单 +// 查询所有订单,订单中的商品名称包含指定的搜索关键词。 +// +// @param searchKey 搜索关键词 +// @return 订单列表 +// @Select("select * from orders where flower like concat('%',#{searchKey},'%');") List findAll(String searchKey); - +// +// 检查订单是否已存在 +// 查询指定用户是否已存在指定商品的订单。 +// +// @param order 订单对象,包含商品ID(fid)和用户ID(uid) +// @return 订单记录,如果已存在则返回订单对象,否则返回null +// @Select("select * from orders where fid = #{fid} and uid = #{uid};") Order checkIsAdded(Order order); - +// +// 更新订单状态 +// 根据订单ID更新订单的状态。 +// +// @param order 订单对象,包含订单ID(id)和新状态(state) +// @return 影响的行数,成功返回1,失败返回0 +// @Update("update orders set state = #{state} where id = #{id};") int changeState(Order order); +// +// 根据用户ID查询订单 +// 查询指定用户的所有订单。 +// +// @param uid 用户ID +// @return 订单列表 +// @Select("select * from orders where uid = #{uid};") List queryByUid(int uid); +// +// 更新订单信息 +// 更新订单的详细信息,包括商品名称、密码、电话和地址。 +// +// @param order 订单对象,包含需要更新的字段 +// @return 影响的行数,成功返回1,失败返回0 +// @Update("update orders set name = #{name},password = #{password},phone = #{phone},address = #{address} where id = #{id};") int update(Order order); +// +// 删除订单 +// 根据订单ID删除订单。 +// +// @param id 订单ID +// @return 影响的行数,成功返回1,失败返回0 +// @Delete("delete from orders where id = #{id};") int delete(int id); +// +// 添加订单 +// 将新的订单记录插入到数据库中。 +// +// @param cart 购物车对象,包含商品名称、数量、价格和用户ID +// @return 影响的行数,成功返回1,失败返回0 +// @Insert("insert into orders(flower,amount,price,state,uid) " + "values(#{flower},#{amount},#{price},0,#{uid});") int add(Cart cart); - } - - - - diff --git a/src/main/java/com/shanzhu/flower/dao/UserDao.java b/src/main/java/com/shanzhu/flower/dao/UserDao.java index 07c464e..e0f409f 100644 --- a/src/main/java/com/shanzhu/flower/dao/UserDao.java +++ b/src/main/java/com/shanzhu/flower/dao/UserDao.java @@ -12,33 +12,83 @@ import java.util.List; @Repository public interface UserDao { - @Select("select * from users where (account like concat('%',#{searchKey},'%') or name like concat('%',#{searchKey},'%')) and role = 'user';") +// +// 根据搜索关键词查询用户 +// 查询用户表中账号或姓名包含指定搜索关键词的普通用户(角色为'user')。 +// +// @param searchKey 搜索关键词 +// @return 用户列表 +// + @Select("select * from users where (account like concat('%',#{searchKey},'%') or name like concat('%',#{searchKey},'%')) and role = 'user';") List find(String searchKey); +// +// 根据用户ID查询用户 +// 查询指定ID的用户信息。 +// +// @param id 用户ID +// @return 用户信息 +// @Select("select * from users where id = #{id};") User queryById(Integer id); +// +// 查询所有用户 +// 查询用户表中的所有用户信息。 +// +// @return 用户列表 +// @Select("select * from users;") List findAll(); +// +// 根据账号查询用户信息 +// 查询指定账号的普通用户信息(角色为'user')。 +// +// @param account 用户账号 +// @return 用户信息 +// @Select("select * from users where account = #{account} and role = 'user';") User queryInfo(String account); +// +// 根据账号查询用户ID +// 查询指定账号的普通用户的ID。 +// +// @param account 用户账号 +// @return 用户ID +// @Select("select id from users where account = #{account} and role = 'user';") Integer queryIdByAccount(String account); +// +// 更新用户信息 +// 更新用户的基本信息,包括姓名、密码、电话和地址。 +// +// @param user 用户对象,包含需要更新的字段 +// @return 影响的行数,成功返回1,失败返回0 +// @Update("update users set name = #{name},password = #{password},phone = #{phone},address = #{address} where id = #{id};") int update(User user); +// +// 删除用户 +// 根据用户ID删除用户记录。 +// +// @param id 用户ID +// @return 影响的行数,成功返回1,失败返回0 +// @Delete("delete from users where id = #{id};") int delete(int id); +// +// 添加用户 +// 将新的用户记录插入到数据库中,用户角色默认为'user'。 +// +// @param user 用户对象,包含账号、姓名、密码、电话和地址 +// @return 影响的行数,成功返回1,失败返回0 +// @Insert("insert into users(account,name,password,phone,address,role) " + "values(#{account},#{name},#{password},#{phone},#{address},'user');") int add(User user); - } - - - - diff --git a/src/main/java/com/shanzhu/flower/entity/Cart.java b/src/main/java/com/shanzhu/flower/entity/Cart.java index 3fbc9bb..555827d 100644 --- a/src/main/java/com/shanzhu/flower/entity/Cart.java +++ b/src/main/java/com/shanzhu/flower/entity/Cart.java @@ -7,13 +7,39 @@ import lombok.experimental.Accessors; @Accessors(chain = true) public class Cart { +// +// 购物车记录的唯一标识符。 +// 用于在数据库中唯一标识每条购物车记录。 +// private int id; + +// +// 商品的唯一标识符。 +// 用于标识购物车中的具体商品。 +// private int fid; + +// +// 商品名称。 +// 用于存储购物车中商品的名称。 +// private String flower; + +// +// 商品数量。 +// 用于存储购物车中商品的数量。 +// private int amount; + +// +// 商品总价。 +// 用于存储购物车中商品的总价,计算方式为单价乘以数量。 +// private float price; +// 用户的唯一标识符。 +// 用于标识购物车记录所属的用户。 private int uid; +// 用户账号。 +// 用于存储购物车记录所属用户的账号信息。 private String account; } - - diff --git a/src/main/java/com/shanzhu/flower/entity/Order.java b/src/main/java/com/shanzhu/flower/entity/Order.java index 424ae09..7d622ca 100644 --- a/src/main/java/com/shanzhu/flower/entity/Order.java +++ b/src/main/java/com/shanzhu/flower/entity/Order.java @@ -7,16 +7,45 @@ import lombok.experimental.Accessors; @Accessors(chain = true) public class Order { +// +// 订单的唯一标识符。 +// 用于在数据库中唯一标识每条订单记录。 +// private int id; + +// +// 订单的全局唯一标识符(GUID)。 +// 用于在系统中唯一标识订单,便于跟踪和管理。 +// private String order_guid; + +// +// 订单中的商品名称。 +// 用于存储订单中商品的名称。 +// private String flower; + +// +// 商品数量。 +// 用于存储订单中商品的数量。 +// private int amount; + +// +// 商品总价。 +// 用于存储订单中商品的总价,计算方式为单价乘以数量。 +// private float price; + +// +// 订单状态。 +// 用于标识订单的当前状态,例如:0表示未发货,1表示已发货,2表示已完成等。 +// private float state; - // 用户 id - private int uid; +// +// 用户ID。 +// 用于标识订单所属的用户。 +// + private int uid; // 用户 id } - - - diff --git a/src/main/java/com/shanzhu/flower/entity/User.java b/src/main/java/com/shanzhu/flower/entity/User.java index 16031f4..1d17ff0 100644 --- a/src/main/java/com/shanzhu/flower/entity/User.java +++ b/src/main/java/com/shanzhu/flower/entity/User.java @@ -6,14 +6,45 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) public class User { +// +// 用户的唯一标识符。 +// 用于在数据库中唯一标识每个用户。 +// private int id; + +// +// 用户账号。 +// 用于用户登录和身份验证。 +// private String account; + +// +// 用户姓名。 +// 用于存储用户的真实姓名或昵称。 +// private String name; + +// +// 用户密码。 +// 用于用户登录验证,存储时应加密处理以保证安全。 +// private String password; + +// +// 用户电话号码。 +// 用于联系用户或验证用户身份。 +// private String phone; + +// +// 用户地址。 +// 用于存储用户的配送地址或其他联系地址。 +// private String address; + +// +// 用户角色。 +// 用于标识用户在系统中的权限级别,例如:"admin" 表示管理员,"user" 表示普通用户。 +// private String role; } - - - diff --git a/src/main/java/com/shanzhu/flower/service/CartService.java b/src/main/java/com/shanzhu/flower/service/CartService.java index ff76edf..32fcda8 100644 --- a/src/main/java/com/shanzhu/flower/service/CartService.java +++ b/src/main/java/com/shanzhu/flower/service/CartService.java @@ -1,20 +1,60 @@ package com.shanzhu.flower.service; import com.shanzhu.flower.entity.Cart; - import java.util.List; /** * 购物车 服务 + * 定义了购物车相关的业务逻辑接口,包括添加、删除、更新购物车项,以及查询购物车内容。 * * @author: ShanZhu * @date: 2024-01-24 */ public interface CartService { +// +// 添加商品到购物车 +// 如果商品已存在于购物车中,则增加该商品的数量;否则,将商品作为新的记录添加到购物车。 +// +// @param cart 购物车对象,包含商品信息和用户账号 +// @return 添加结果,成功返回1,失败返回0 +// int add(Cart cart); + +// +// 删除购物车中的商品 +// 根据用户ID删除购物车中的所有商品。 +// +// @param uid 用户ID +// @return 删除结果,成功返回1,失败返回0 +// int delete(int uid); + +// +// 更新购物车中的商品信息 +// 更新购物车中指定商品的数量或其他信息。 +// +// @param cart 购物车对象,包含需要更新的商品信息 +// @return 更新结果,成功返回1,失败返回0 +// int update(Cart cart); - List find(String searchKey,String account); + +// +// 根据搜索关键词和用户账号查询购物车 +// 查询购物车中商品名称包含指定搜索关键词的记录,并且属于指定用户账号。 +// +// @param searchKey 搜索关键词 +// @param account 用户账号 +// @return 购物车记录列表 +// + List find(String searchKey, String account); + +// +// 根据用户账号查询购物车 +// 查询指定用户账号的购物车中的所有商品。 +// +// @param account 用户账号 +// @return 购物车记录列表 +// List queryByAccount(String account); } diff --git a/src/main/java/com/shanzhu/flower/service/OrderService.java b/src/main/java/com/shanzhu/flower/service/OrderService.java index 2fcfbce..a2fb68a 100644 --- a/src/main/java/com/shanzhu/flower/service/OrderService.java +++ b/src/main/java/com/shanzhu/flower/service/OrderService.java @@ -7,16 +7,66 @@ import java.util.List; /** * 订单 服务层 + * 定义了订单相关的业务逻辑接口,包括添加订单、删除订单、更新订单状态,以及查询订单。 * * @author: ShanZhu * @date: 2024-01-24 */ public interface OrderService { +// +// 添加订单 +// 将购物车中的商品转换为订单并插入到数据库中。 +// 如果购物车中的商品已存在订单中,则更新订单数量。 +// +// @param cart 购物车对象,包含商品信息和用户账号 +// @return 添加结果,成功返回1,失败返回0 +// int add(Cart cart); + +// +// 删除订单 +// 根据用户ID删除所有订单。 +// +// @param uid 用户ID +// @return 删除结果,成功返回1,失败返回0 +// int delete(int uid); + +// +// 更新订单 +// 更新订单的状态或其他信息。 +// +// @param order 订单对象,包含需要更新的订单信息 +// @return 更新结果,成功返回1,失败返回0 +// int update(Order order); + +// +// 根据搜索关键词和用户账号查询订单 +// 查询订单中商品名称包含指定搜索关键词的记录,并且属于指定用户账号。 +// +// @param searchKey 搜索关键词 +// @param account 用户账号 +// @return 订单记录列表 +// List find(String searchKey, String account); + +// +// 根据搜索关键词查询所有订单 +// 查询所有订单中商品名称包含指定搜索关键词的记录。 +// +// @param searchKey 搜索关键词 +// @return 订单记录列表 +// List findAll(String searchKey); + +// /** +// 根据用户账号查询订单 +// 查询指定用户账号的所有订单。 +// +// @param account 用户账号 +// @return 订单记录列表 +// List queryByAccount(String account); } diff --git a/src/main/java/com/shanzhu/flower/service/UserService.java b/src/main/java/com/shanzhu/flower/service/UserService.java index abe7071..9618a13 100644 --- a/src/main/java/com/shanzhu/flower/service/UserService.java +++ b/src/main/java/com/shanzhu/flower/service/UserService.java @@ -1,20 +1,59 @@ package com.shanzhu.flower.service; import com.shanzhu.flower.entity.User; - import java.util.List; /** * 用户 服务层 + * 定义了用户相关的业务逻辑接口,包括添加用户、删除用户、更新用户信息,以及查询用户。 * * @author: ShanZhu * @date: 2024-01-24 */ public interface UserService { +// +// 添加用户 +// 将新的用户记录插入到数据库中。 +// +// @param user 用户对象,包含用户的基本信息(账号、姓名、密码等) +// @return 添加结果,成功返回1,失败返回0 +// int add(User user); + +// +// 删除用户 +// 根据用户ID删除用户记录。 +// +// @param uid 用户ID +// @return 删除结果,成功返回1,失败返回0 +// int delete(int uid); + +// +// 更新用户信息 +// 更新用户的基本信息,如姓名、密码、电话和地址。 +// +// @param user 用户对象,包含需要更新的用户信息 +// @return 更新结果,成功返回1,失败返回0 +// int update(User user); + +// +// 根据搜索关键词查询用户 +// 查询用户表中账号或姓名包含指定搜索关键词的用户。 +// +// @param searchKey 搜索关键词 +// @return 用户列表 +// List find(String searchKey); + +// +// 根据账号查询用户信息 +// 查询指定账号的用户详细信息。 +// +// @param account 用户账号 +// @return 用户信息,如果查询不到返回null +// User queryInfo(String account); } diff --git a/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java index fa01a60..74b17b3 100644 --- a/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java +++ b/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java @@ -13,43 +13,51 @@ import java.util.List; public class CartServiceImpl implements CartService { @Resource - private CartDao cartDao; + private CartDao cartDao; // 注入购物车数据访问对象 @Resource - private UserDao userDao; + private UserDao userDao; // 注入用户数据访问对象 @Override public int add(Cart cart) { + // 根据用户账号查询用户ID int uid = userDao.queryIdByAccount(cart.getAccount()); - cart.setUid(uid); + cart.setUid(uid); // 设置购物车记录的用户ID + + // 检查该用户是否已将该商品添加到购物车 Cart cart1 = cartDao.checkIsAdded(cart); - if (cart1==null){ + if (cart1 == null) { + // 如果未添加,直接插入新的购物车记录 return cartDao.add(cart); - }else { + } else { + // 如果已添加,增加该商品的数量 return cartDao.addAmount(cart); } } @Override public int delete(int uid) { + // 根据用户ID删除购物车记录 return cartDao.delete(uid); } @Override public int update(Cart cart) { + // 更新购物车记录 return cartDao.update(cart); } @Override - public List find(String searchKey,String account) { - return cartDao.find(searchKey,account); + public List find(String searchKey, String account) { + // 根据搜索关键词和用户账号查询购物车记录 + return cartDao.find(searchKey, account); } @Override public List queryByAccount(String account) { + // 根据用户账号查询用户ID Integer uid = userDao.queryIdByAccount(account); + // 根据用户ID查询购物车记录 return cartDao.queryByUid(uid); } - - } diff --git a/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java index d950ff0..04a70c0 100644 --- a/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java @@ -14,42 +14,54 @@ import java.util.List; public class OrderServiceImpl implements OrderService { @Resource - private OrderDao orderdao; + private OrderDao orderdao; // 注入订单数据访问对象 @Resource - private UserDao userDao; + private UserDao userDao; // 注入用户数据访问对象 @Override public int add(Cart cart) { + // 将购物车中的商品添加为订单 + // 直接调用订单数据访问对象的add方法,将购物车对象转换为订单对象后插入数据库 return orderdao.add(cart); } @Override public int delete(int uid) { + // 根据用户ID删除订单 + // 调用订单数据访问对象的delete方法,删除指定用户ID的所有订单 return orderdao.delete(uid); } @Override public int update(Order order) { + // 更新订单信息 + // 调用订单数据访问对象的update方法,更新指定订单的详细信息 return orderdao.update(order); } @Override - public List find(String searchKey,String account) { + public List find(String searchKey, String account) { + // 根据搜索关键词和用户账号查询订单 + // 首先根据用户账号查询用户ID Integer uid = userDao.queryIdByAccount(account); - return orderdao.find(searchKey,uid); + // 然后根据搜索关键词和用户ID查询订单 + return orderdao.find(searchKey, uid); } @Override public List findAll(String searchKey) { + // 根据搜索关键词查询所有订单 + // 调用订单数据访问对象的findAll方法,查询所有包含搜索关键词的订单 return orderdao.findAll(searchKey); } @Override public List queryByAccount(String account) { + // 根据用户账号查询订单 + // 首先根据用户账号查询用户ID Integer uid = userDao.queryIdByAccount(account); + // 然后根据用户ID查询订单 return orderdao.queryByUid(uid); } - - } diff --git a/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java index 46e2c8b..299e290 100644 --- a/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java +++ b/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java @@ -12,34 +12,45 @@ import java.util.List; public class UserServiceImpl implements UserService { @Resource - private UserDao userdao; + private UserDao userdao; // 注入用户数据访问对象 @Override public int add(User user) { try { + // 尝试添加用户记录 + // 调用用户数据访问对象的add方法,将用户对象插入数据库 return userdao.add(user); - }catch (Exception e){ + } catch (Exception e) { + // 如果发生异常,返回0表示添加失败 return 0; } } @Override public int delete(int uid) { + // 根据用户ID删除用户记录 + // 调用用户数据访问对象的delete方法,删除指定用户ID的用户记录 return userdao.delete(uid); } @Override public int update(User user) { + // 更新用户信息 + // 调用用户数据访问对象的update方法,更新指定用户的详细信息 return userdao.update(user); } @Override public List find(String searchKey) { + // 根据搜索关键词查询用户 + // 调用用户数据访问对象的find方法,查询用户表中账号或姓名包含指定搜索关键词的用户 return userdao.find(searchKey); } @Override public User queryInfo(String account) { + // 根据账号查询用户信息 + // 调用用户数据访问对象的queryInfo方法,查询指定账号的用户信息 return userdao.queryInfo(account); } } -- 2.34.1 From 8b5ecd6f27112a94b85068d51f2d93eb248396ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=B7=E8=8F=8A=E8=8F=8A?= <2582304574@qq.com> Date: Sat, 26 Apr 2025 23:29:40 +0800 Subject: [PATCH 3/4] 1111 --- .gitignore | 37 +++ DB_flower.sql | 154 +++++++++++ pom.xml | 131 ++++++++++ .../shanzhu/flower/BackendApplication.java | 31 +++ .../com/shanzhu/flower/config/Constant.java | 20 ++ .../com/shanzhu/flower/config/HttpMsg.java | 52 ++++ .../flower/config/ProcessInterceptor.java | 40 +++ .../shanzhu/flower/config/WebMvcConfig.java | 22 ++ .../flower/controller/CartController.java | 176 +++++++++++++ .../flower/controller/FlowerController.java | 244 ++++++++++++++++++ .../controller/FlowerTypeController.java | 88 +++++++ .../flower/controller/LoginController.java | 42 +++ .../flower/controller/OrderController.java | 119 +++++++++ .../flower/controller/UserController.java | 92 +++++++ .../java/com/shanzhu/flower/dao/CartDao.java | 41 +++ .../com/shanzhu/flower/dao/FlowersDao.java | 41 +++ .../java/com/shanzhu/flower/dao/LoginDao.java | 18 ++ .../java/com/shanzhu/flower/dao/OrderDao.java | 44 ++++ .../com/shanzhu/flower/dao/SpeciesDao.java | 34 +++ .../java/com/shanzhu/flower/dao/UserDao.java | 44 ++++ .../java/com/shanzhu/flower/entity/Cart.java | 19 ++ .../com/shanzhu/flower/entity/Flower.java | 25 ++ .../com/shanzhu/flower/entity/LoginForm.java | 12 + .../java/com/shanzhu/flower/entity/Order.java | 22 ++ .../com/shanzhu/flower/entity/OrderVo.java | 17 ++ .../java/com/shanzhu/flower/entity/Param.java | 11 + .../java/com/shanzhu/flower/entity/R.java | 16 ++ .../com/shanzhu/flower/entity/Species.java | 15 ++ .../java/com/shanzhu/flower/entity/User.java | 19 ++ .../shanzhu/flower/service/CartService.java | 20 ++ .../flower/service/FlowersService.java | 21 ++ .../shanzhu/flower/service/OrderService.java | 22 ++ .../flower/service/SpeciesService.java | 14 + .../shanzhu/flower/service/UserService.java | 20 ++ .../flower/service/impl/CartServiceImpl.java | 55 ++++ .../service/impl/FlowersServiceImpl.java | 46 ++++ .../flower/service/impl/OrderServiceImpl.java | 55 ++++ .../service/impl/SpeciesServiceImpl.java | 41 +++ .../flower/service/impl/UserServiceImpl.java | 45 ++++ .../com/shanzhu/flower/util/VerifyUtil.java | 19 ++ src/main/resources/application.yml | 22 ++ 41 files changed, 2006 insertions(+) create mode 100644 .gitignore create mode 100644 DB_flower.sql create mode 100644 pom.xml create mode 100644 src/main/java/com/shanzhu/flower/BackendApplication.java create mode 100644 src/main/java/com/shanzhu/flower/config/Constant.java create mode 100644 src/main/java/com/shanzhu/flower/config/HttpMsg.java create mode 100644 src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java create mode 100644 src/main/java/com/shanzhu/flower/config/WebMvcConfig.java create mode 100644 src/main/java/com/shanzhu/flower/controller/CartController.java create mode 100644 src/main/java/com/shanzhu/flower/controller/FlowerController.java create mode 100644 src/main/java/com/shanzhu/flower/controller/FlowerTypeController.java create mode 100644 src/main/java/com/shanzhu/flower/controller/LoginController.java create mode 100644 src/main/java/com/shanzhu/flower/controller/OrderController.java create mode 100644 src/main/java/com/shanzhu/flower/controller/UserController.java create mode 100644 src/main/java/com/shanzhu/flower/dao/CartDao.java create mode 100644 src/main/java/com/shanzhu/flower/dao/FlowersDao.java create mode 100644 src/main/java/com/shanzhu/flower/dao/LoginDao.java create mode 100644 src/main/java/com/shanzhu/flower/dao/OrderDao.java create mode 100644 src/main/java/com/shanzhu/flower/dao/SpeciesDao.java create mode 100644 src/main/java/com/shanzhu/flower/dao/UserDao.java create mode 100644 src/main/java/com/shanzhu/flower/entity/Cart.java create mode 100644 src/main/java/com/shanzhu/flower/entity/Flower.java create mode 100644 src/main/java/com/shanzhu/flower/entity/LoginForm.java create mode 100644 src/main/java/com/shanzhu/flower/entity/Order.java create mode 100644 src/main/java/com/shanzhu/flower/entity/OrderVo.java create mode 100644 src/main/java/com/shanzhu/flower/entity/Param.java create mode 100644 src/main/java/com/shanzhu/flower/entity/R.java create mode 100644 src/main/java/com/shanzhu/flower/entity/Species.java create mode 100644 src/main/java/com/shanzhu/flower/entity/User.java create mode 100644 src/main/java/com/shanzhu/flower/service/CartService.java create mode 100644 src/main/java/com/shanzhu/flower/service/FlowersService.java create mode 100644 src/main/java/com/shanzhu/flower/service/OrderService.java create mode 100644 src/main/java/com/shanzhu/flower/service/SpeciesService.java create mode 100644 src/main/java/com/shanzhu/flower/service/UserService.java create mode 100644 src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java create mode 100644 src/main/java/com/shanzhu/flower/service/impl/FlowersServiceImpl.java create mode 100644 src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java create mode 100644 src/main/java/com/shanzhu/flower/service/impl/SpeciesServiceImpl.java create mode 100644 src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java create mode 100644 src/main/java/com/shanzhu/flower/util/VerifyUtil.java create mode 100644 src/main/resources/application.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..24062a7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target +/.mvn/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +*.log +*.jar + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + + +### VS Code ### +.vscode/ diff --git a/DB_flower.sql b/DB_flower.sql new file mode 100644 index 0000000..7cba687 --- /dev/null +++ b/DB_flower.sql @@ -0,0 +1,154 @@ +/* + Navicat Premium Data Transfer + + Source Server : local + Source Server Type : MySQL + Source Server Version : 80029 + Source Host : localhost:3306 + Source Schema : DB_flower + + Target Server Type : MySQL + Target Server Version : 80029 + File Encoding : 65001 + + Date: 26/01/2024 15:29:41 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for carts +-- ---------------------------- +DROP TABLE IF EXISTS `carts`; +CREATE TABLE `carts` ( + `id` int NOT NULL AUTO_INCREMENT, + `fid` int DEFAULT NULL, + `flower` varchar(255) DEFAULT NULL, + `amount` int DEFAULT NULL, + `price` float DEFAULT NULL, + `uid` int DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `flower` (`flower`), + KEY `uid` (`uid`), + KEY `fk2` (`fid`), + CONSTRAINT `carts_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `users` (`id`), + CONSTRAINT `fk2` FOREIGN KEY (`fid`) REFERENCES `flowers` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8mb3; + +-- ---------------------------- +-- Records of carts +-- ---------------------------- +BEGIN; +INSERT INTO `carts` VALUES (32, 2, '粉色玫瑰花', 1, NULL, 10); +INSERT INTO `carts` VALUES (33, 4, '金枝玉叶玫瑰', 3, NULL, 10); +INSERT INTO `carts` VALUES (34, 1, '杭州水果捞', 1, NULL, 10); +COMMIT; + +-- ---------------------------- +-- Table structure for flowers +-- ---------------------------- +DROP TABLE IF EXISTS `flowers`; +CREATE TABLE `flowers` ( + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(255) DEFAULT NULL, + `species_name` varchar(255) DEFAULT NULL, + `price` float DEFAULT NULL, + `detail` varchar(255) DEFAULT NULL, + `img_guid` varchar(255) DEFAULT NULL, + `state` int DEFAULT '1' COMMENT '商品状态', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`), + KEY `species_name` (`species_name`), + CONSTRAINT `flowers_ibfk_1` FOREIGN KEY (`species_name`) REFERENCES `species` (`species_name`) +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3; + +-- ---------------------------- +-- Records of flowers +-- ---------------------------- +BEGIN; +INSERT INTO `flowers` VALUES (1, '杭州水果捞', '春日', 10, '杭州水果捞', 'fe71ee4538644b4da67b046d3a6825a8.jpg', 1); +INSERT INTO `flowers` VALUES (2, '粉色玫瑰花', '夏日', 199, '粉色玫瑰花,送爱人~', '67975badf69646c0a70e8154208c7acd.jpg', 1); +INSERT INTO `flowers` VALUES (3, '牡丹', '夏日', 299, '国花,价格优惠', 'hehua.jpg', 1); +INSERT INTO `flowers` VALUES (4, '金枝玉叶玫瑰', '秋日', 999.99, '金枝玉叶玫瑰', '8d59b8723ad6409ab3b10847f86ef196.jpg', 1); +INSERT INTO `flowers` VALUES (5, '紫色小雏菊', '夏日', 188, '紫色小雏菊~', 'eff301d8ca194fb99639ebe4f1d328b9.jpg', 1); +INSERT INTO `flowers` VALUES (6, NULL, NULL, NULL, NULL, '', 1); +INSERT INTO `flowers` VALUES (7, '粉百合', '冬日', 10000, '粉百合', '6d901436d6e84160b04de4cafa79a611.jpg', 1); +COMMIT; + +-- ---------------------------- +-- Table structure for orders +-- ---------------------------- +DROP TABLE IF EXISTS `orders`; +CREATE TABLE `orders` ( + `id` int NOT NULL AUTO_INCREMENT, + `order_guid` varchar(255) DEFAULT NULL, + `flower` varchar(255) DEFAULT NULL, + `amount` int DEFAULT NULL, + `price` float DEFAULT NULL, + `state` int DEFAULT NULL, + `uid` int DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `flower` (`flower`), + KEY `uid` (`uid`), + CONSTRAINT `orders_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `users` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb3; + +-- ---------------------------- +-- Records of orders +-- ---------------------------- +BEGIN; +INSERT INTO `orders` VALUES (27, NULL, '杭州水果捞', 3, 30, 0, 10); +INSERT INTO `orders` VALUES (28, NULL, '金枝玉叶玫瑰', 1, 999.99, 0, 10); +COMMIT; + +-- ---------------------------- +-- Table structure for species +-- ---------------------------- +DROP TABLE IF EXISTS `species`; +CREATE TABLE `species` ( + `id` int NOT NULL AUTO_INCREMENT, + `species_name` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `species` (`species_name`) +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3; + +-- ---------------------------- +-- Records of species +-- ---------------------------- +BEGIN; +INSERT INTO `species` VALUES (8, NULL); +INSERT INTO `species` VALUES (7, '冬日'); +INSERT INTO `species` VALUES (11, '友情花'); +INSERT INTO `species` VALUES (2, '夏日'); +INSERT INTO `species` VALUES (9, '情人花'); +INSERT INTO `species` VALUES (1, '春日'); +INSERT INTO `species` VALUES (3, '秋日'); +COMMIT; + +-- ---------------------------- +-- Table structure for users +-- ---------------------------- +DROP TABLE IF EXISTS `users`; +CREATE TABLE `users` ( + `id` int NOT NULL AUTO_INCREMENT, + `account` varchar(255) DEFAULT NULL, + `name` varchar(255) DEFAULT NULL, + `password` varchar(255) DEFAULT NULL, + `phone` varchar(255) DEFAULT NULL, + `address` varchar(255) DEFAULT NULL, + `role` varchar(255) DEFAULT NULL COMMENT '角色', + PRIMARY KEY (`id`), + UNIQUE KEY `account` (`account`) +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb3; + +-- ---------------------------- +-- Records of users +-- ---------------------------- +BEGIN; +INSERT INTO `users` VALUES (1, 'user2', 'user2', '123456', '13566662222', '北京市昌平区2号', 'user'); +INSERT INTO `users` VALUES (2, 'admin', '系统管理员', '123456', '123456', '上海市黄浦区南京西路8号', 'admin'); +INSERT INTO `users` VALUES (10, 'user', '杭州水果捞', '123456', '18679121111', '杭州余杭区', 'user'); +COMMIT; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d512733 --- /dev/null +++ b/pom.xml @@ -0,0 +1,131 @@ + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.4.5 + + + + com.shanzhu + flower-backend + 1.0.0-RELEASE + + flower-backend + jar + + 花店商城后台 + + + 1.8 + + + + + + org.projectlombok + lombok + 1.18.10 + provided + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + org.springframework.boot + spring-boot-starter-web + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.1.3 + + + + tk.mybatis + mapper-spring-boot-starter + 2.0.4 + + + + mysql + mysql-connector-java + runtime + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + + org.junit.jupiter + junit-jupiter + 5.4.2 + compile + + + + net.sourceforge.nekohtml + nekohtml + 1.9.22 + + + + org.apache.commons + commons-pool2 + + + + org.apache.poi + poi-ooxml + 3.17 + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + + + diff --git a/src/main/java/com/shanzhu/flower/BackendApplication.java b/src/main/java/com/shanzhu/flower/BackendApplication.java new file mode 100644 index 0000000..4cd451f --- /dev/null +++ b/src/main/java/com/shanzhu/flower/BackendApplication.java @@ -0,0 +1,31 @@ +package com.shanzhu.flower; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + + +/** + * SpringBoot 启动类 + * 项目启动入口(点击右键 选择 "run BackendApplication" 启动项目) + *

+ * 什么是SpringBoot?(https://www.php.cn/faq/498384.html) + * + * @author: ShanZhu + * @date: 2023-01-24 + */ +@Slf4j +@SpringBootApplication +@MapperScan("com.shanzhu.flower.dao") +public class BackendApplication { + + public static void main(String[] args) { + + //SpringBoot 执行启动 + SpringApplication.run(BackendApplication.class, args); + + log.info("=====================项目后端启动成功============================"); + } + +} diff --git a/src/main/java/com/shanzhu/flower/config/Constant.java b/src/main/java/com/shanzhu/flower/config/Constant.java new file mode 100644 index 0000000..d9e84d4 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/config/Constant.java @@ -0,0 +1,20 @@ +package com.shanzhu.flower.config; + +/** + * 常量 + * 图片静态文件路径 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +public class Constant { + + public static int PAGE_SIZE = 5; + + // 商品展示 + public static int SHOW_PAGE_SIZE = 9; + + public static String IMG_USE_PATH = "static/imgs/"; + + public static String DEFAULT_IMG = "img.jpg"; +} diff --git a/src/main/java/com/shanzhu/flower/config/HttpMsg.java b/src/main/java/com/shanzhu/flower/config/HttpMsg.java new file mode 100644 index 0000000..fa4a369 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/config/HttpMsg.java @@ -0,0 +1,52 @@ +package com.shanzhu.flower.config; + +/** + * http状态消息 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +public class HttpMsg { + public static String ERROR_INPUT = "表单信息不正确"; + public static String ERROR_VERIFY = "用户名或密码错误"; + public static String ADD_USER_OK = "新建用户成功"; + public static String ADD_USER_FAILED = "新建用户失败,该账号已存在"; + public static String UPDATE_USER_OK = "修改用户信息成功"; + public static String UPDATE_USER_FAILED = "修改用户信息失败"; + public static String DELETE_USER_OK = "删除用户信息成功"; + public static String DELETE_USER_FAILED = "删除用户信息失败"; + + public static String DELETE_TYPE_OK = "删除类型成功"; + public static String DELETE_TYPE_FAILED = "有商品绑定此类型,删除类型失败"; + public static String UPDATE_TYPE_OK = "修改类型成功"; + public static String UPDATE_TYPE_FAILED = "有商品绑定此类型,修改类型失败"; + public static String ADD_TYPE_OK = "新建类型成功"; + public static String ADD_TYPE_FAILED = "新建类型失败,该类型名称已存在"; + + public static String DELETE_FLOWER_OK = "删除类型成功"; + public static String DELETE_FLOWER_FAILED = "有商品绑定此类型,删除类型失败"; + public static String UPDATE_FLOWER_OK = "修改类型成功"; + public static String UPDATE_FLOWER_FAILED = "有商品绑定此类型,修改类型失败"; + public static String ADD_FLOWER_OK = "新建类型成功"; + public static String ADD_FLOWER_FAILED = "新建类型失败,该类型名称已存在"; + + public static String NO_TYPE_NOW = "当前没有花朵种类,请先创建!"; + + public static String UPDATE_PIC_OK = "更新图片成功"; + public static String UPDATE_PIC_FAILED = "更新图片失败"; + + public static String INVALID_PARAM = "参数不合法"; + + public static String INVALID_USER = "登录失效,请重新登录"; + + public static String ADD_CART_OK = "加入购物车成功"; + public static String ADD_CART_FAILED = "加入购物车失败"; + + public static String BUY_OK = "下单成功"; + + public static String UPDATE_ORDER_OK = "订单发货状态更新成功"; + public static String ERROR_FILE_TYPE = "错误的文件类型"; + + public static String GOODS_UP_OK = "商品上架成功"; + public static String GOODS_DOWN_OK = "商品下架成功"; +} diff --git a/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java b/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java new file mode 100644 index 0000000..77e6370 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java @@ -0,0 +1,40 @@ +package com.shanzhu.flower.config; + +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * 请求处理拦截器 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@Component +public class ProcessInterceptor implements HandlerInterceptor { + + @Override + public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { + httpServletResponse.setHeader("Access-Control-Allow-Origin", "*"); + httpServletResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With"); + httpServletResponse.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); + httpServletResponse.setHeader("X-Powered-By", "Jetty"); + String method = httpServletRequest.getMethod(); + if (method.equals("OPTIONS")) { + httpServletResponse.setStatus(200); + return false; + } + return true; + } + + @Override + public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { + } + + @Override + public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { + } +} \ No newline at end of file diff --git a/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java b/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java new file mode 100644 index 0000000..2147b26 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java @@ -0,0 +1,22 @@ +package com.shanzhu.flower.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * web mvc配置,跨域配置等 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@Configuration +public class WebMvcConfig implements WebMvcConfigurer { + + @Override + public void addInterceptors(InterceptorRegistry registry) { + + registry.addInterceptor(new ProcessInterceptor()).addPathPatterns("/**"); + } + +} \ No newline at end of file diff --git a/src/main/java/com/shanzhu/flower/controller/CartController.java b/src/main/java/com/shanzhu/flower/controller/CartController.java new file mode 100644 index 0000000..d459bd4 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/controller/CartController.java @@ -0,0 +1,176 @@ +package com.shanzhu.flower.controller; + +import com.shanzhu.flower.config.Constant; +import com.shanzhu.flower.config.HttpMsg; +import com.shanzhu.flower.dao.FlowersDao; +import com.shanzhu.flower.entity.Cart; +import com.shanzhu.flower.entity.R; +import com.shanzhu.flower.service.CartService; +import com.shanzhu.flower.service.OrderService; +import org.springframework.web.bind.annotation.*; +import tk.mybatis.mapper.util.StringUtil; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 购物车 控制层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@RestController +@RequestMapping("cart") +public class CartController { + + @Resource + private CartService cartService; + + @Resource + private OrderService orderService; + + @Resource + private FlowersDao flowersDao; + + /** + * 查询用户购物车 + * + * @param account 用户账号 + * @return 购物车 + */ + @RequestMapping("/queryByAccount") + R queryByAccount(@RequestParam("account") String account) { + R r = new R(); + + if (StringUtil.isEmpty(account)) { + return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); + } + + List carts = cartService.queryByAccount(account); + + for (Cart cart : carts) { + float price = flowersDao.queryPrice(cart.getFid()); + cart.setPrice(cart.getAmount() * price); + } + + return r.setCode(2000).setData(carts); + } + + + /** + * 分页查询购物车 + * + * @param page 页数 + * @param searchKey 查询条件 + * @param account 账户 + * @return 购物车列表 + */ + @RequestMapping("/find") + R find( + @RequestParam("page") int page, + @RequestParam("searchKey") String searchKey, + @RequestParam("account") String account + ) { + + R r = new R(); + + Map map = new HashMap<>(); + List carts = cartService.find(searchKey, account); + + if (carts == null) { + return r.setCode(2000); + } + + List items = carts.size() >= page * Constant.PAGE_SIZE ? + carts.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) + : carts.subList((page - 1) * Constant.PAGE_SIZE, carts.size()); + + int len = carts.size() % Constant.PAGE_SIZE == 0 ? carts.size() / Constant.PAGE_SIZE + : (carts.size() / Constant.PAGE_SIZE + 1); + map.put("items", items); + map.put("len", len); + + return r.setCode(2000).setData(map); + } + + /** + * 购买 + * + * @param account 账号 + * @return 结果 + */ + @RequestMapping("/buy") + R buy(@RequestParam("account") String account) { + R r = new R(); + + // 查该用户的购物车 + List carts = (List) queryByAccount(account).getData(); + for (Cart cart : carts) { + // 增加订单数据 + orderService.add(cart); + // 删除购物车数据 + cartService.delete(cart.getId()); + } + + return r.setCode(2000).setMsg(HttpMsg.BUY_OK); + } + + /** + * 新增购物车 + * + * @param cart 购物车信息 + * @return 购物车 + */ + @RequestMapping("/create") + R create(@RequestBody Cart cart) { + R r = new R(); + + int ans = cartService.add(cart); + + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.ADD_CART_OK); + } + + return r.setCode(4000).setMsg(HttpMsg.ADD_CART_FAILED); + } + + /** + * 更新购物车 + * + * @param cart 购物车信息 + * @return 结果 + */ + @RequestMapping("/update") + R update(@RequestBody Cart cart) { + R r = new R(); + + int ans = cartService.update(cart); + + if (ans >= 0) { + return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); + } + + return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); + } + + /** + * 删除购物车 + * + * @param id 购物车id + * @return 结果 + */ + @DeleteMapping("/delete") + R delete(@RequestParam("id") int id) { + R r = new R(); + int ans = cartService.delete(id); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); + } + return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); + } + +} + diff --git a/src/main/java/com/shanzhu/flower/controller/FlowerController.java b/src/main/java/com/shanzhu/flower/controller/FlowerController.java new file mode 100644 index 0000000..8a55da7 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/controller/FlowerController.java @@ -0,0 +1,244 @@ +package com.shanzhu.flower.controller; + +import com.shanzhu.flower.config.Constant; +import com.shanzhu.flower.config.HttpMsg; +import com.shanzhu.flower.dao.FlowersDao; +import com.shanzhu.flower.entity.Flower; +import com.shanzhu.flower.entity.R; +import com.shanzhu.flower.service.FlowersService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + + +/** + * 鲜花 控制层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@RestController +@RequestMapping("flower") +public class FlowerController { + + @Value("${uploadPath}") + private String uploadPath; + + @Resource + private FlowersService flowerService; + @Resource + private FlowersDao flowersDao; + + /** + * 分页查询鲜花商品 + * + * @param page 页数 + * @param searchKey 查询条件 + * @param searchType 查询类型 + * @return 商品 + */ + @RequestMapping("/find") + R find( + @RequestParam("page") int page, + @RequestParam("searchKey") String searchKey, + @RequestParam("searchType") String searchType + ) { + R r = new R(); + List flowers = flowerService.find(searchKey, searchType); + + if (flowers == null) { + return r.setCode(2000); + } + + return getResponse(flowers, page, Constant.SHOW_PAGE_SIZE, r); + } + + /** + * 管理员查询所有 + * + * @param page 分页页数 + * @param searchKey 查询条件 + * @return 结果 + */ + @RequestMapping("/findAll") + R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { + R r = new R(); + List flowers = flowerService.findAll(searchKey); + + if (flowers == null) { + return r.setCode(2000); + } + + return getResponse(flowers, page, Constant.PAGE_SIZE, r); + } + + /** + * 创建鲜花商品 + * + * @param flower 商品信息 + * @return 结果 + */ + @RequestMapping("/create") + R create(@RequestBody Flower flower) { + R r = new R(); + + int ans = flowerService.add(flower); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.ADD_FLOWER_OK); + } + + return r.setCode(4000).setMsg(HttpMsg.ADD_FLOWER_FAILED); + } + + /** + * 更新鲜花商品 + * + * @param flower 商品信息 + * @return 结果 + */ + @RequestMapping("/update") + R update(@RequestBody Flower flower) { + R r = new R(); + + int ans = flowerService.update(flower); + if (ans >= 0) { + return r.setCode(2000).setMsg(HttpMsg.UPDATE_FLOWER_OK); + } + + return r.setCode(4000).setMsg(HttpMsg.UPDATE_FLOWER_FAILED); + } + + /** + * 改版商品状态 + * + * @param flower 商品信息 + * @return 结果 + */ + @RequestMapping("/changeState") + R changeState(@RequestBody Flower flower) { + R r = new R(); + + flowersDao.changeState(flower); + String msg = flower.getState() == 1 ? HttpMsg.GOODS_UP_OK : HttpMsg.GOODS_DOWN_OK; + + return r.setCode(2000).setMsg(msg); + } + + /** + * 上传图片 + * + * @param file 文件信息 + * @return 结果 + */ + @RequestMapping("/updateImg") + R updateImg(@RequestParam("file") MultipartFile file) { + R r = new R(); + + // 只接收 jpg/png 图片 + String filename = file.getOriginalFilename(); + if (!filename.endsWith(".jpg") && !filename.endsWith(".png")) { + return r.setCode(4000).setMsg(HttpMsg.ERROR_FILE_TYPE); + } + + String img_guid = UUID.randomUUID().toString().replaceAll("-", "") + ".jpg"; + + try { + savePic(file.getInputStream(), img_guid); + return r.setCode(2000).setMsg(HttpMsg.UPDATE_PIC_OK).setData(img_guid); + } catch (IOException e) { + return r.setCode(4000).setMsg(HttpMsg.UPDATE_PIC_FAILED); + } + + } + + /** + * 更新图片guid + * + * @param guid guid + * @param id id + * @return 结果 + */ + @PutMapping("/updateImgGuid") + R updateImgGuid(@RequestParam("guid") String guid, @RequestParam("id") int id) { + R r = new R(); + + int ans = flowerService.updateImg(guid, id); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.UPDATE_PIC_OK); + } + + return r.setCode(4000).setMsg(HttpMsg.UPDATE_PIC_FAILED); + } + + /** + * 删除图片 + * + * @param id 图片id + * @return 结果 + */ + @DeleteMapping("/delete") + R delete(@RequestParam("id") int id) { + R r = new R(); + + int ans = flowerService.delete(id); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.DELETE_FLOWER_OK); + } + + return r.setCode(4000).setMsg(HttpMsg.DELETE_FLOWER_FAILED); + } + + private void savePic(InputStream inputStream, String fileName) { + OutputStream os = null; + try { + String path = uploadPath; + // 1K的数据缓冲 + byte[] bs = new byte[1024]; + // 读取到的数据长度 + int len; + // 输出的文件流保存到本地文件 + os = new FileOutputStream(new File(path + fileName)); + // 开始读取 + while ((len = inputStream.read(bs)) != -1) { + os.write(bs, 0, len); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + // 完毕,关闭所有链接 + try { + os.close(); + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + private R getResponse(List flowers, int page, int pageSize, R r) { + Map map = new HashMap<>(); + List items = flowers.size() >= page * pageSize ? + flowers.subList((page - 1) * pageSize, page * pageSize) + : flowers.subList((page - 1) * pageSize, flowers.size()); + int len = flowers.size() % pageSize == 0 ? flowers.size() / pageSize + : (flowers.size() / pageSize + 1); + for (Flower item : items) { + if (item.getImg_guid() == null) { + item.setImg_guid(Constant.DEFAULT_IMG); + } + item.setImg_guid(Constant.IMG_USE_PATH + item.getImg_guid()); + } + map.put("items", items); + map.put("len", len); + return r.setCode(2000).setData(map); + } + +} + diff --git a/src/main/java/com/shanzhu/flower/controller/FlowerTypeController.java b/src/main/java/com/shanzhu/flower/controller/FlowerTypeController.java new file mode 100644 index 0000000..4b01c9a --- /dev/null +++ b/src/main/java/com/shanzhu/flower/controller/FlowerTypeController.java @@ -0,0 +1,88 @@ +package com.shanzhu.flower.controller; + +import com.shanzhu.flower.config.Constant; +import com.shanzhu.flower.config.HttpMsg; +import com.shanzhu.flower.entity.R; +import com.shanzhu.flower.entity.Species; +import com.shanzhu.flower.service.SpeciesService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 鲜花种类 控制层 + */ +@RestController +@RequestMapping("species") +public class FlowerTypeController { + + @Resource + private SpeciesService speciesService; + + @RequestMapping("/findAll") + R findAll() { + R r = new R(); + List all = speciesService.findAll(); + if (all.size()<=0){ + return r.setCode(4000).setMsg(HttpMsg.NO_TYPE_NOW); + } + return r.setCode(2000).setData(all); + } + + @RequestMapping("/find") + R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { + R r = new R(); + Map map = new HashMap<>(); + List list = speciesService.find(searchKey); + if (list == null) { + return r.setCode(2000); + } + List items = list.size() >= page * Constant.PAGE_SIZE ? + list.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) + : list.subList((page - 1) * Constant.PAGE_SIZE, list.size()); + int len = list.size() % Constant.PAGE_SIZE == 0 ? list.size() / Constant.PAGE_SIZE + : (list.size() / Constant.PAGE_SIZE + 1); + map.put("items", items); + map.put("len", len); + return r.setCode(2000).setData(map); + } + + @RequestMapping("/create") + R create(@RequestBody Species species) { + R r = new R(); + try { + speciesService.add(species); + return r.setCode(2000).setMsg(HttpMsg.ADD_TYPE_OK); + } catch (Exception e) { + return r.setCode(4000).setMsg(HttpMsg.ADD_TYPE_FAILED); + } + } + + @RequestMapping("/update") + R update(@RequestBody Species species) { + R r = new R(); + try { + speciesService.update(species); + return r.setCode(2000).setMsg(HttpMsg.UPDATE_TYPE_OK); + } catch (Exception e) { + return r.setCode(4000).setMsg(HttpMsg.UPDATE_TYPE_FAILED); + } + } + + @DeleteMapping("/delete") + R delete(@RequestParam("id") int id) { + R r = new R(); + try { + speciesService.delete(id); + return r.setCode(2000).setMsg(HttpMsg.DELETE_TYPE_OK); + } catch (Exception e) { + return r.setCode(4000).setMsg(HttpMsg.DELETE_TYPE_FAILED); + } + } + +} + diff --git a/src/main/java/com/shanzhu/flower/controller/LoginController.java b/src/main/java/com/shanzhu/flower/controller/LoginController.java new file mode 100644 index 0000000..2c7770f --- /dev/null +++ b/src/main/java/com/shanzhu/flower/controller/LoginController.java @@ -0,0 +1,42 @@ +package com.shanzhu.flower.controller; + +import com.shanzhu.flower.config.HttpMsg; +import com.shanzhu.flower.dao.LoginDao; +import com.shanzhu.flower.entity.LoginForm; +import com.shanzhu.flower.entity.R; +import com.shanzhu.flower.entity.User; +import com.shanzhu.flower.util.VerifyUtil; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + + +/** + * 用户登录 控制层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@RestController +@RequestMapping("login") +public class LoginController { + + @Resource + private LoginDao loginDao; + + @RequestMapping("/doLogin") + R doLogin(@RequestBody LoginForm form) { + R r = new R(); + if (!VerifyUtil.verifyLoginForm(form)) { + return r.setCode(4000).setMsg(HttpMsg.ERROR_INPUT); + } + User loginUser = loginDao.login(form); + if (loginUser != null) { + return r.setCode(2000).setMsg("欢迎您:" + loginUser.getName()).setData(loginUser); + } + return r.setCode(4000).setMsg(HttpMsg.ERROR_VERIFY); + } + +} diff --git a/src/main/java/com/shanzhu/flower/controller/OrderController.java b/src/main/java/com/shanzhu/flower/controller/OrderController.java new file mode 100644 index 0000000..f4ad9cd --- /dev/null +++ b/src/main/java/com/shanzhu/flower/controller/OrderController.java @@ -0,0 +1,119 @@ +package com.shanzhu.flower.controller; + +import com.shanzhu.flower.config.Constant; +import com.shanzhu.flower.config.HttpMsg; +import com.shanzhu.flower.dao.OrderDao; +import com.shanzhu.flower.dao.UserDao; +import com.shanzhu.flower.entity.Order; +import com.shanzhu.flower.entity.OrderVo; +import com.shanzhu.flower.entity.R; +import com.shanzhu.flower.entity.User; +import com.shanzhu.flower.service.OrderService; +import org.springframework.web.bind.annotation.*; +import tk.mybatis.mapper.util.StringUtil; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 订单 控制层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@RestController +@RequestMapping("order") +public class OrderController { + + @Resource + private OrderService orderService; + + @Resource + private UserDao userDao; + + @Resource + private OrderDao orderDao; + + @RequestMapping("/queryByAccount") + R queryByAccount(@RequestParam("account") String account) { + R r = new R(); + if (StringUtil.isEmpty(account)) { + return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); + } + List orders = orderService.queryByAccount(account); + return r.setCode(2000).setData(orders); + } + + @RequestMapping("/find") + R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey, @RequestParam("account") String account) { + R r = new R(); + Map map = new HashMap<>(); + List orders = orderService.find(searchKey, account); + if (orders == null) { + return r.setCode(2000); + } + map.put("items", orders); + map.put("len", orders.size()); + return r.setCode(2000).setData(map); + } + + @RequestMapping("/findAll") + R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { + R r = new R(); + Map map = new HashMap<>(); + List orders = orderService.findAll(searchKey); + if (orders == null) { + return r.setCode(2000); + } + List items = orders.size() >= page * Constant.PAGE_SIZE ? + orders.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) + : orders.subList((page - 1) * Constant.PAGE_SIZE, orders.size()); + int len = orders.size() % Constant.PAGE_SIZE == 0 ? orders.size() / Constant.PAGE_SIZE + : (orders.size() / Constant.PAGE_SIZE + 1); + List vos = new ArrayList<>(); + for (Order item : items) { + User user = userDao.queryById(item.getUid()); + OrderVo vo = new OrderVo(); + vo.setAddress(user.getAddress()).setPhone(user.getPhone()).setUsername(user.getName()) + .setAmount(item.getAmount()).setFlower(item.getFlower()).setId(item.getId()) + .setUid(item.getUid()).setOrder_guid(item.getOrder_guid()).setPrice(item.getPrice()) + .setState(item.getState()); + vos.add(vo); + } + map.put("items", vos); + map.put("len", len); + return r.setCode(2000).setData(map); + } + + @RequestMapping("/update") + R update(@RequestBody Order order) { + R r = new R(); + int ans = orderService.update(order); + if (ans >= 0) { + return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); + } + return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); + } + + @RequestMapping("/changeState") + R changeState(@RequestBody Order order) { + orderDao.changeState(order); + return new R().setCode(2000).setMsg(HttpMsg.UPDATE_ORDER_OK); + } + + @DeleteMapping("/delete") + R delete(@RequestParam("id") int id) { + R r = new R(); + int ans = orderService.delete(id); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); + } + return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); + } + +} + diff --git a/src/main/java/com/shanzhu/flower/controller/UserController.java b/src/main/java/com/shanzhu/flower/controller/UserController.java new file mode 100644 index 0000000..4b5cfe0 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/controller/UserController.java @@ -0,0 +1,92 @@ +package com.shanzhu.flower.controller; + +import com.shanzhu.flower.config.Constant; +import com.shanzhu.flower.config.HttpMsg; +import com.shanzhu.flower.entity.R; +import com.shanzhu.flower.entity.User; +import com.shanzhu.flower.service.UserService; +import org.springframework.web.bind.annotation.*; +import tk.mybatis.mapper.util.StringUtil; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 用户 控制层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +@RestController +@RequestMapping("user") +public class UserController { + + @Resource + private UserService userService; + + @RequestMapping("/queryInfoByAccount") + R queryInfoByAccount(@RequestParam("account") String account) { + R r = new R(); + if (StringUtil.isEmpty(account)){ + return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); + } + User loginUser = userService.queryInfo(account); + if (loginUser == null){ + return r.setCode(4000).setMsg(HttpMsg.INVALID_USER); + } + return r.setCode(2000).setData(loginUser); + } + + @RequestMapping("/find") + R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { + R r = new R(); + Map map = new HashMap<>(); + List users = userService.find(searchKey); + if (users == null) { + return r.setCode(2000); + } + List items = users.size() >= page * Constant.PAGE_SIZE ? + users.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) + : users.subList((page - 1) * Constant.PAGE_SIZE, users.size()); + int len = users.size() % Constant.PAGE_SIZE == 0 ? users.size() / Constant.PAGE_SIZE + : (users.size() / Constant.PAGE_SIZE + 1); + map.put("items", items); + map.put("len", len); + return r.setCode(2000).setData(map); + } + + @RequestMapping("/create") + R create(@RequestBody User user) { + R r = new R(); + int ans = userService.add(user); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.ADD_USER_OK); + } + return r.setCode(4000).setMsg(HttpMsg.ADD_USER_FAILED); + } + + @RequestMapping("/update") + R update(@RequestBody User user) { + R r = new R(); + int ans = userService.update(user); + if (ans >= 0) { + return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); + } + return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); + } + + @DeleteMapping("/delete") + R delete(@RequestParam("id") int id) { + R r = new R(); + int ans = userService.delete(id); + if (ans == 1) { + return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); + } + return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); + } + +} + diff --git a/src/main/java/com/shanzhu/flower/dao/CartDao.java b/src/main/java/com/shanzhu/flower/dao/CartDao.java new file mode 100644 index 0000000..9897a5d --- /dev/null +++ b/src/main/java/com/shanzhu/flower/dao/CartDao.java @@ -0,0 +1,41 @@ +package com.shanzhu.flower.dao; + +import com.shanzhu.flower.entity.Cart; +import org.apache.ibatis.annotations.*; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface CartDao { + + @Select("select * from carts where flower like concat('%',#{searchKey},'%') and account = #{account};") + List find(@Param("searchKey") String searchKey, @Param("account") String account); + + @Select("select * from carts;") + List findAll(); + + @Select("select * from carts where fid = #{fid} and uid = #{uid};") + Cart checkIsAdded(Cart cart); + + @Update("update carts set amount = amount + 1 where fid = #{fid} and uid = #{uid};") + int addAmount(Cart cart); + + @Select("select * from carts where uid = #{uid};") + List queryByUid(int uid); + + @Update("update carts set name = #{name},password = #{password},phone = #{phone},address = #{address} where id = #{id};") + int update(Cart cart); + + @Delete("delete from carts where id = #{id};") + int delete(int id); + + @Insert("insert into carts(fid,flower,amount,uid) " + + "values(#{fid},#{flower},1,#{uid});") + int add(Cart cart); + +} + + + + diff --git a/src/main/java/com/shanzhu/flower/dao/FlowersDao.java b/src/main/java/com/shanzhu/flower/dao/FlowersDao.java new file mode 100644 index 0000000..dac65c0 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/dao/FlowersDao.java @@ -0,0 +1,41 @@ +package com.shanzhu.flower.dao; + +import com.shanzhu.flower.entity.Flower; +import org.apache.ibatis.annotations.*; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface FlowersDao { + + @Select("select * from flowers where name like concat('%',#{searchKey},'%') " + + "and species_name like concat('%',#{searchType},'%') and state = 1;") + List find(@Param("searchKey") String searchKey, @Param("searchType")String searchType); + + @Select("select * from flowers where name like concat('%',#{searchKey},'%');") + List findAll(String searchKey); + + @Select("select price from flowers where id = #{fid};") + Float queryPrice(int fid); + + @Update("update flowers set name = #{name}, species_name = #{species_name}, price = #{price}, detail = #{detail} where id = #{id};") + Integer update(Flower flower); + + @Update("update flowers set img_guid = #{img_guid} where id = #{id};") + Integer updateImg(@Param("img_guid") String img_guid,@Param("id") Integer id); + + @Update("update flowers set state = ${state} where id = #{id};") + Integer changeState(Flower flower); + + @Delete("delete from flowers where id = #{id};") + Integer delete(int id); + + @Insert("insert into flowers(name,species_name,price,detail,state) values(#{name},#{species_name},${price},#{detail},1);") + Integer add(Flower flower); + +} + + + + diff --git a/src/main/java/com/shanzhu/flower/dao/LoginDao.java b/src/main/java/com/shanzhu/flower/dao/LoginDao.java new file mode 100644 index 0000000..48a3ec0 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/dao/LoginDao.java @@ -0,0 +1,18 @@ +package com.shanzhu.flower.dao; + +import com.shanzhu.flower.entity.LoginForm; +import com.shanzhu.flower.entity.User; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; + +@Repository +public interface LoginDao { + + @Select("select * from users where account = #{account} and password = #{password} and role = #{role};") + User login(LoginForm form); + +} + + + + diff --git a/src/main/java/com/shanzhu/flower/dao/OrderDao.java b/src/main/java/com/shanzhu/flower/dao/OrderDao.java new file mode 100644 index 0000000..5c9f97c --- /dev/null +++ b/src/main/java/com/shanzhu/flower/dao/OrderDao.java @@ -0,0 +1,44 @@ +package com.shanzhu.flower.dao; + +import com.shanzhu.flower.entity.Cart; +import com.shanzhu.flower.entity.Order; +import org.apache.ibatis.annotations.*; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface OrderDao { + + @Select("select * from orders where flower like concat('%',#{searchKey},'%') and uid = #{uid};") + List find(@Param("searchKey") String searchKey, @Param("uid") int uid); + + @Select("select * from orders where flower like concat('%',#{searchKey},'%');") + List findAll(String searchKey); + + + @Select("select * from orders where fid = #{fid} and uid = #{uid};") + Order checkIsAdded(Order order); + + + @Update("update orders set state = #{state} where id = #{id};") + int changeState(Order order); + + @Select("select * from orders where uid = #{uid};") + List queryByUid(int uid); + + @Update("update orders set name = #{name},password = #{password},phone = #{phone},address = #{address} where id = #{id};") + int update(Order order); + + @Delete("delete from orders where id = #{id};") + int delete(int id); + + @Insert("insert into orders(flower,amount,price,state,uid) " + + "values(#{flower},#{amount},#{price},0,#{uid});") + int add(Cart cart); + +} + + + + diff --git a/src/main/java/com/shanzhu/flower/dao/SpeciesDao.java b/src/main/java/com/shanzhu/flower/dao/SpeciesDao.java new file mode 100644 index 0000000..db2ed84 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/dao/SpeciesDao.java @@ -0,0 +1,34 @@ +package com.shanzhu.flower.dao; + +import com.shanzhu.flower.entity.Species; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface SpeciesDao { + + @Select("select * from species where species_name like concat('%',#{searchKey},'%');") + List find(String searchKey); + + @Select("select * from species;") + List findAll(); + + @Update("update species set species_name = #{species_name} where id = #{id};") + int update(Species species); + + @Delete("delete from species where id = #{id};") + int delete(int id); + + @Insert("insert into species(species_name) values(#{species_name});") + int add(Species species); + +} + + + + diff --git a/src/main/java/com/shanzhu/flower/dao/UserDao.java b/src/main/java/com/shanzhu/flower/dao/UserDao.java new file mode 100644 index 0000000..07c464e --- /dev/null +++ b/src/main/java/com/shanzhu/flower/dao/UserDao.java @@ -0,0 +1,44 @@ +package com.shanzhu.flower.dao; + +import com.shanzhu.flower.entity.User; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface UserDao { + + @Select("select * from users where (account like concat('%',#{searchKey},'%') or name like concat('%',#{searchKey},'%')) and role = 'user';") + List find(String searchKey); + + @Select("select * from users where id = #{id};") + User queryById(Integer id); + + @Select("select * from users;") + List findAll(); + + @Select("select * from users where account = #{account} and role = 'user';") + User queryInfo(String account); + + @Select("select id from users where account = #{account} and role = 'user';") + Integer queryIdByAccount(String account); + + @Update("update users set name = #{name},password = #{password},phone = #{phone},address = #{address} where id = #{id};") + int update(User user); + + @Delete("delete from users where id = #{id};") + int delete(int id); + + @Insert("insert into users(account,name,password,phone,address,role) " + + "values(#{account},#{name},#{password},#{phone},#{address},'user');") + int add(User user); + +} + + + + diff --git a/src/main/java/com/shanzhu/flower/entity/Cart.java b/src/main/java/com/shanzhu/flower/entity/Cart.java new file mode 100644 index 0000000..3fbc9bb --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/Cart.java @@ -0,0 +1,19 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Cart { + + private int id; + private int fid; + private String flower; + private int amount; + private float price; + private int uid; + private String account; +} + + diff --git a/src/main/java/com/shanzhu/flower/entity/Flower.java b/src/main/java/com/shanzhu/flower/entity/Flower.java new file mode 100644 index 0000000..d61e979 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/Flower.java @@ -0,0 +1,25 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Flower { + + private int id; + private String name; + // 分类名称 + private String species_name; + private float price; + // 详细介绍 + private String detail; + // 图片 + private String img_guid; + // 是否上架 + private int state; + +} + + + diff --git a/src/main/java/com/shanzhu/flower/entity/LoginForm.java b/src/main/java/com/shanzhu/flower/entity/LoginForm.java new file mode 100644 index 0000000..a345d01 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/LoginForm.java @@ -0,0 +1,12 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class LoginForm { + private String account; + private String password; + private String role; +} diff --git a/src/main/java/com/shanzhu/flower/entity/Order.java b/src/main/java/com/shanzhu/flower/entity/Order.java new file mode 100644 index 0000000..424ae09 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/Order.java @@ -0,0 +1,22 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Order { + + private int id; + private String order_guid; + private String flower; + private int amount; + private float price; + private float state; + // 用户 id + private int uid; + +} + + + diff --git a/src/main/java/com/shanzhu/flower/entity/OrderVo.java b/src/main/java/com/shanzhu/flower/entity/OrderVo.java new file mode 100644 index 0000000..9a57950 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/OrderVo.java @@ -0,0 +1,17 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class OrderVo extends Order{ + + private String username; + private String phone; + private String address; + +} + + + diff --git a/src/main/java/com/shanzhu/flower/entity/Param.java b/src/main/java/com/shanzhu/flower/entity/Param.java new file mode 100644 index 0000000..ae6a9ca --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/Param.java @@ -0,0 +1,11 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Param { + private String searchKey; + private int page; +} diff --git a/src/main/java/com/shanzhu/flower/entity/R.java b/src/main/java/com/shanzhu/flower/entity/R.java new file mode 100644 index 0000000..65a2d76 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/R.java @@ -0,0 +1,16 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class R { + private int code; + private String msg; + private Object data; + +} + + + diff --git a/src/main/java/com/shanzhu/flower/entity/Species.java b/src/main/java/com/shanzhu/flower/entity/Species.java new file mode 100644 index 0000000..886f392 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/Species.java @@ -0,0 +1,15 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Species { + private int id; + private String species_name; + +} + + + diff --git a/src/main/java/com/shanzhu/flower/entity/User.java b/src/main/java/com/shanzhu/flower/entity/User.java new file mode 100644 index 0000000..16031f4 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/entity/User.java @@ -0,0 +1,19 @@ +package com.shanzhu.flower.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class User { + private int id; + private String account; + private String name; + private String password; + private String phone; + private String address; + private String role; +} + + + diff --git a/src/main/java/com/shanzhu/flower/service/CartService.java b/src/main/java/com/shanzhu/flower/service/CartService.java new file mode 100644 index 0000000..ff76edf --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/CartService.java @@ -0,0 +1,20 @@ +package com.shanzhu.flower.service; + +import com.shanzhu.flower.entity.Cart; + +import java.util.List; + +/** + * 购物车 服务 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +public interface CartService { + + int add(Cart cart); + int delete(int uid); + int update(Cart cart); + List find(String searchKey,String account); + List queryByAccount(String account); +} diff --git a/src/main/java/com/shanzhu/flower/service/FlowersService.java b/src/main/java/com/shanzhu/flower/service/FlowersService.java new file mode 100644 index 0000000..06fcc82 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/FlowersService.java @@ -0,0 +1,21 @@ +package com.shanzhu.flower.service; + +import com.shanzhu.flower.entity.Flower; + +import java.util.List; + +/** + * 鲜花商品 服务层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +public interface FlowersService { + + int add(Flower flower); + int delete(int id); + int update(Flower flower); + List find(String searchKey,String searchType); + List findAll(String searchKey); + int updateImg(String img_guid,Integer id); +} diff --git a/src/main/java/com/shanzhu/flower/service/OrderService.java b/src/main/java/com/shanzhu/flower/service/OrderService.java new file mode 100644 index 0000000..2fcfbce --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/OrderService.java @@ -0,0 +1,22 @@ +package com.shanzhu.flower.service; + +import com.shanzhu.flower.entity.Cart; +import com.shanzhu.flower.entity.Order; + +import java.util.List; + +/** + * 订单 服务层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +public interface OrderService { + + int add(Cart cart); + int delete(int uid); + int update(Order order); + List find(String searchKey, String account); + List findAll(String searchKey); + List queryByAccount(String account); +} diff --git a/src/main/java/com/shanzhu/flower/service/SpeciesService.java b/src/main/java/com/shanzhu/flower/service/SpeciesService.java new file mode 100644 index 0000000..c662e23 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/SpeciesService.java @@ -0,0 +1,14 @@ +package com.shanzhu.flower.service; + +import com.shanzhu.flower.entity.Species; + +import java.util.List; + +public interface SpeciesService { + + int add(Species species); + int delete(int id); + int update(Species species); + List find(String searchKey); + List findAll(); +} diff --git a/src/main/java/com/shanzhu/flower/service/UserService.java b/src/main/java/com/shanzhu/flower/service/UserService.java new file mode 100644 index 0000000..abe7071 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/UserService.java @@ -0,0 +1,20 @@ +package com.shanzhu.flower.service; + +import com.shanzhu.flower.entity.User; + +import java.util.List; + +/** + * 用户 服务层 + * + * @author: ShanZhu + * @date: 2024-01-24 + */ +public interface UserService { + + int add(User user); + int delete(int uid); + int update(User user); + List find(String searchKey); + User queryInfo(String account); +} diff --git a/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java new file mode 100644 index 0000000..fa01a60 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java @@ -0,0 +1,55 @@ +package com.shanzhu.flower.service.impl; + +import com.shanzhu.flower.dao.CartDao; +import com.shanzhu.flower.dao.UserDao; +import com.shanzhu.flower.entity.Cart; +import com.shanzhu.flower.service.CartService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class CartServiceImpl implements CartService { + + @Resource + private CartDao cartDao; + + @Resource + private UserDao userDao; + + @Override + public int add(Cart cart) { + int uid = userDao.queryIdByAccount(cart.getAccount()); + cart.setUid(uid); + Cart cart1 = cartDao.checkIsAdded(cart); + if (cart1==null){ + return cartDao.add(cart); + }else { + return cartDao.addAmount(cart); + } + } + + @Override + public int delete(int uid) { + return cartDao.delete(uid); + } + + @Override + public int update(Cart cart) { + return cartDao.update(cart); + } + + @Override + public List find(String searchKey,String account) { + return cartDao.find(searchKey,account); + } + + @Override + public List queryByAccount(String account) { + Integer uid = userDao.queryIdByAccount(account); + return cartDao.queryByUid(uid); + } + + +} diff --git a/src/main/java/com/shanzhu/flower/service/impl/FlowersServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/FlowersServiceImpl.java new file mode 100644 index 0000000..631506a --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/impl/FlowersServiceImpl.java @@ -0,0 +1,46 @@ +package com.shanzhu.flower.service.impl; + +import com.shanzhu.flower.dao.FlowersDao; +import com.shanzhu.flower.entity.Flower; +import com.shanzhu.flower.service.FlowersService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class FlowersServiceImpl implements FlowersService { + + @Resource + private FlowersDao flowersDao; + + @Override + public int add(Flower flower) { + return flowersDao.add(flower); + } + + @Override + public int delete(int id) { + return flowersDao.delete(id); + } + + @Override + public int update(Flower flower) { + return flowersDao.update(flower); + } + + @Override + public List find(String searchKey,String searchType) { + return flowersDao.find(searchKey,searchType); + } + + @Override + public List findAll(String searchKey) { + return flowersDao.findAll(searchKey); + } + + @Override + public int updateImg(String img_guid,Integer id) { + return flowersDao.updateImg(img_guid,id); + } +} diff --git a/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java new file mode 100644 index 0000000..d950ff0 --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java @@ -0,0 +1,55 @@ +package com.shanzhu.flower.service.impl; + +import com.shanzhu.flower.dao.OrderDao; +import com.shanzhu.flower.dao.UserDao; +import com.shanzhu.flower.entity.Cart; +import com.shanzhu.flower.entity.Order; +import com.shanzhu.flower.service.OrderService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class OrderServiceImpl implements OrderService { + + @Resource + private OrderDao orderdao; + + @Resource + private UserDao userDao; + + @Override + public int add(Cart cart) { + return orderdao.add(cart); + } + + @Override + public int delete(int uid) { + return orderdao.delete(uid); + } + + @Override + public int update(Order order) { + return orderdao.update(order); + } + + @Override + public List find(String searchKey,String account) { + Integer uid = userDao.queryIdByAccount(account); + return orderdao.find(searchKey,uid); + } + + @Override + public List findAll(String searchKey) { + return orderdao.findAll(searchKey); + } + + @Override + public List queryByAccount(String account) { + Integer uid = userDao.queryIdByAccount(account); + return orderdao.queryByUid(uid); + } + + +} diff --git a/src/main/java/com/shanzhu/flower/service/impl/SpeciesServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/SpeciesServiceImpl.java new file mode 100644 index 0000000..34ad99b --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/impl/SpeciesServiceImpl.java @@ -0,0 +1,41 @@ +package com.shanzhu.flower.service.impl; + +import com.shanzhu.flower.dao.SpeciesDao; +import com.shanzhu.flower.entity.Species; +import com.shanzhu.flower.service.SpeciesService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class SpeciesServiceImpl implements SpeciesService { + + @Resource + private SpeciesDao speciesDao; + + @Override + public int add(Species species) { + return speciesDao.add(species); + } + + @Override + public int delete(int uid) { + return speciesDao.delete(uid); + } + + @Override + public int update(Species species) { + return speciesDao.update(species); + } + + @Override + public List find(String searchKey) { + return speciesDao.find(searchKey); + } + + @Override + public List findAll() { + return speciesDao.findAll(); + } +} diff --git a/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..46e2c8b --- /dev/null +++ b/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java @@ -0,0 +1,45 @@ +package com.shanzhu.flower.service.impl; + +import com.shanzhu.flower.dao.UserDao; +import com.shanzhu.flower.entity.User; +import com.shanzhu.flower.service.UserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class UserServiceImpl implements UserService { + + @Resource + private UserDao userdao; + + @Override + public int add(User user) { + try { + return userdao.add(user); + }catch (Exception e){ + return 0; + } + } + + @Override + public int delete(int uid) { + return userdao.delete(uid); + } + + @Override + public int update(User user) { + return userdao.update(user); + } + + @Override + public List find(String searchKey) { + return userdao.find(searchKey); + } + + @Override + public User queryInfo(String account) { + return userdao.queryInfo(account); + } +} diff --git a/src/main/java/com/shanzhu/flower/util/VerifyUtil.java b/src/main/java/com/shanzhu/flower/util/VerifyUtil.java new file mode 100644 index 0000000..89f555d --- /dev/null +++ b/src/main/java/com/shanzhu/flower/util/VerifyUtil.java @@ -0,0 +1,19 @@ +package com.shanzhu.flower.util; + + +import com.shanzhu.flower.entity.LoginForm; +import tk.mybatis.mapper.util.StringUtil; + +public class VerifyUtil { + + public static boolean verifyLoginForm(LoginForm form) { + if (form==null || StringUtil.isEmpty(form.getAccount())|| StringUtil.isEmpty(form.getPassword())|| StringUtil.isEmpty(form.getRole())) { + return false; + } + if (form.getRole().equals("user") || form.getRole().equals("admin")){ + return true; + } + return false; + } + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..38c20b0 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,22 @@ +#后端服务端口 +server: + port: 8081 + +spring: + #数据库配置 + datasource: + url: jdbc:mysql://localhost:3306/DB_flower?characterEncoding=UTF-8&serverTimezone=UTC + username: root + password: 123456 + + resources: + chain: + strategy: + content: + enabled: true + paths: /** +mybatis: + type-aliases-package: com.shanzhu.flower.entity + +#图片上传路径 图片所在的路径位置 +uploadPath: /Users/jiawang/saleProject/花店商城/flower-frontend/static/imgs/ -- 2.34.1 From cd15e278844efcb6e12a14540a13995c3700737f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=B7=E8=8F=8A=E8=8F=8A?= <2582304574@qq.com> Date: Tue, 29 Apr 2025 19:52:31 +0800 Subject: [PATCH 4/4] 123 --- .../com/shanzhu/flower/config/Constant.java | 21 ++- .../com/shanzhu/flower/config/HttpMsg.java | 150 +++++++++++++++++- .../flower/config/ProcessInterceptor.java | 20 ++- .../shanzhu/flower/config/WebMvcConfig.java | 15 +- .../flower/controller/CartController.java | 144 ++++++++--------- .../flower/controller/FlowerController.java | 93 ++++++----- .../controller/FlowerTypeController.java | 69 +++++--- .../flower/controller/LoginController.java | 23 ++- .../flower/controller/OrderController.java | 145 +++++++++++------ .../flower/controller/UserController.java | 122 ++++++++++---- .../java/com/shanzhu/flower/dao/CartDao.java | 63 +++++++- .../com/shanzhu/flower/dao/FlowersDao.java | 54 ++++++- .../java/com/shanzhu/flower/dao/LoginDao.java | 15 +- .../java/com/shanzhu/flower/dao/OrderDao.java | 66 +++++++- .../com/shanzhu/flower/dao/SpeciesDao.java | 33 +++- .../java/com/shanzhu/flower/dao/UserDao.java | 62 +++++++- .../java/com/shanzhu/flower/entity/Cart.java | 30 +++- .../com/shanzhu/flower/entity/Flower.java | 16 +- .../com/shanzhu/flower/entity/LoginForm.java | 3 + .../java/com/shanzhu/flower/entity/Order.java | 39 ++++- .../com/shanzhu/flower/entity/OrderVo.java | 4 +- .../java/com/shanzhu/flower/entity/Param.java | 2 + .../com/shanzhu/flower/entity/Species.java | 2 + .../java/com/shanzhu/flower/entity/User.java | 37 ++++- .../shanzhu/flower/service/CartService.java | 44 ++++- .../flower/service/FlowersService.java | 60 ++++++- .../shanzhu/flower/service/OrderService.java | 14 ++ .../flower/service/SpeciesService.java | 37 +++++ .../shanzhu/flower/service/UserService.java | 41 ++++- .../flower/service/impl/CartServiceImpl.java | 26 +-- .../service/impl/FlowersServiceImpl.java | 53 +++++-- .../flower/service/impl/OrderServiceImpl.java | 24 ++- .../service/impl/SpeciesServiceImpl.java | 45 +++++- .../flower/service/impl/UserServiceImpl.java | 15 +- .../com/shanzhu/flower/util/VerifyUtil.java | 22 ++- 35 files changed, 1265 insertions(+), 344 deletions(-) diff --git a/src/main/java/com/shanzhu/flower/config/Constant.java b/src/main/java/com/shanzhu/flower/config/Constant.java index d9e84d4..082a6d7 100644 --- a/src/main/java/com/shanzhu/flower/config/Constant.java +++ b/src/main/java/com/shanzhu/flower/config/Constant.java @@ -1,20 +1,29 @@ package com.shanzhu.flower.config; /** - * 常量 - * 图片静态文件路径 + * 常量类,用于存储项目中常用的配置常量。 + * 包括分页大小、图片路径等配置。 * - * @author: ShanZhu - * @date: 2024-01-24 */ public class Constant { - + // 默认分页大小,用于分页查询时每页显示的记录数。 +// 默认值为5,可根据实际需求调整。 public static int PAGE_SIZE = 5; - // 商品展示 + // +// 商品展示页面的分页大小。 +// 用于商品列表展示时每页显示的商品数量。 +// 默认值为9,可根据页面布局调整。 +// public static int SHOW_PAGE_SIZE = 9; + // 图片静态文件的存储路径。 +// 用于存放项目中使用的图片资源。 +// 路径为项目根目录下的static/imgs/文件夹。 public static String IMG_USE_PATH = "static/imgs/"; + // 默认图片文件名。 +// 当没有指定图片时,使用此默认图片作为占位图。 +// 文件名为img.jpg,位于IMG_USE_PATH路径下。 public static String DEFAULT_IMG = "img.jpg"; } diff --git a/src/main/java/com/shanzhu/flower/config/HttpMsg.java b/src/main/java/com/shanzhu/flower/config/HttpMsg.java index fa4a369..613e8fc 100644 --- a/src/main/java/com/shanzhu/flower/config/HttpMsg.java +++ b/src/main/java/com/shanzhu/flower/config/HttpMsg.java @@ -1,52 +1,186 @@ package com.shanzhu.flower.config; /** - * http状态消息 + * HTTP状态消息常量类。 + * 用于存储项目中常见的HTTP响应消息,便于统一管理和维护。 + * 包括用户操作、类型管理、商品管理、订单管理等操作的反馈信息。 * * @author: ShanZhu * @date: 2024-01-24 */ public class HttpMsg { + // 表单输入错误的提示信息。 +// 当用户提交的表单数据不符合要求时返回此消息。 public static String ERROR_INPUT = "表单信息不正确"; + +// 用户名或密码错误的提示信息。 +// 当用户登录时输入的用户名或密码不匹配时返回此消息。 + public static String ERROR_VERIFY = "用户名或密码错误"; + +// 新建用户成功的提示信息。 +// 当用户注册成功时返回此消息。 + public static String ADD_USER_OK = "新建用户成功"; + + +// 新建用户失败的提示信息(账号已存在)。 +// 当用户注册时输入的账号已存在时返回此消息。 + public static String ADD_USER_FAILED = "新建用户失败,该账号已存在"; + +// 修改用户信息成功的提示信息。 +// 当用户更新个人信息成功时返回此消息。 + public static String UPDATE_USER_OK = "修改用户信息成功"; + +// 修改用户信息失败的提示信息。 +// 当用户更新个人信息失败时返回此消息。 + public static String UPDATE_USER_FAILED = "修改用户信息失败"; + +// 删除用户信息成功的提示信息。 +// 当管理员删除用户信息成功时返回此消息。 + public static String DELETE_USER_OK = "删除用户信息成功"; + + // 删除用户信息失败的提示信息。 +// 当管理员删除用户信息失败时返回此消息。 public static String DELETE_USER_FAILED = "删除用户信息失败"; - + +// 删除类型成功的提示信息。 +// 当管理员删除花朵类型成功时返回此消息。 + public static String DELETE_TYPE_OK = "删除类型成功"; + + // 删除类型失败的提示信息(有商品绑定此类型)。 +// 当管理员删除花朵类型失败(因为有商品绑定此类型)时返回此消息。 +// public static String DELETE_TYPE_FAILED = "有商品绑定此类型,删除类型失败"; + + +// 修改类型成功的提示信息。 +// 当管理员修改花朵类型成功时返回此消息。 + public static String UPDATE_TYPE_OK = "修改类型成功"; + + // 修改类型失败的提示信息(有商品绑定此类型)。 +// 当管理员修改花朵类型失败(因为有商品绑定此类型)时返回此消息。 public static String UPDATE_TYPE_FAILED = "有商品绑定此类型,修改类型失败"; + + + // 新建类型成功的提示信息。 +// 当管理员新建花朵类型成功时返回此消息。 public static String ADD_TYPE_OK = "新建类型成功"; + + +// 新建类型失败的提示信息(该类型名称已存在)。 +// 当管理员新建花朵类型失败(因为该类型名称已存在)时返回此消息。 + public static String ADD_TYPE_FAILED = "新建类型失败,该类型名称已存在"; + // 删除商品成功的提示信息。 +// 当管理员删除商品成功时返回此消息。 + public static String DELETE_FLOWER_OK = "删除商品成功"; - public static String DELETE_FLOWER_OK = "删除类型成功"; - public static String DELETE_FLOWER_FAILED = "有商品绑定此类型,删除类型失败"; - public static String UPDATE_FLOWER_OK = "修改类型成功"; - public static String UPDATE_FLOWER_FAILED = "有商品绑定此类型,修改类型失败"; - public static String ADD_FLOWER_OK = "新建类型成功"; - public static String ADD_FLOWER_FAILED = "新建类型失败,该类型名称已存在"; + // +// 删除商品失败的提示信息(有商品绑定此类型)。 +// 当管理员删除商品失败(因为有商品绑定此类型)时返回此消息。 +// + public static String DELETE_FLOWER_FAILED = "有商品绑定此类型,删除商品失败"; + // +// 修改商品成功的提示信息。 +// 当管理员修改商品成功时返回此消息。 +// + public static String UPDATE_FLOWER_OK = "修改商品成功"; + + // +// 修改商品失败的提示信息(有商品绑定此类型)。 +// 当管理员修改商品失败(因为有商品绑定此类型)时返回此消息。 +// + public static String UPDATE_FLOWER_FAILED = "有商品绑定此类型,修改商品失败"; + + // +// 新建商品成功的提示信息。 +// 当管理员新建商品成功时返回此消息。 +// + public static String ADD_FLOWER_OK = "新建商品成功"; + + // +// 新建商品失败的提示信息(该商品名称已存在)。 +// 当管理员新建商品失败(因为该商品名称已存在)时返回此消息。 +// + public static String ADD_FLOWER_FAILED = "新建商品失败,该商品名称已存在"; + + // +// 当前没有花朵种类的提示信息。 +// 当系统中没有花朵种类时返回此消息,提示管理员需要先创建种类。 +// public static String NO_TYPE_NOW = "当前没有花朵种类,请先创建!"; + // +// 更新图片成功的提示信息。 +// 当用户或管理员更新图片成功时返回此消息。 +// public static String UPDATE_PIC_OK = "更新图片成功"; + + // +// 更新图片失败的提示信息。 +// 当用户或管理员更新图片失败时返回此消息。 +// public static String UPDATE_PIC_FAILED = "更新图片失败"; + // +// 参数不合法的提示信息。 +// 当请求中包含的参数不符合要求时返回此消息。 +// public static String INVALID_PARAM = "参数不合法"; + // +// 登录失效的提示信息。 +// 当用户登录状态失效时返回此消息,提示用户重新登录。 +// public static String INVALID_USER = "登录失效,请重新登录"; + // +// 加入购物车成功的提示信息。 +// 当用户将商品加入购物车成功时返回此消息。 +// public static String ADD_CART_OK = "加入购物车成功"; + + // +// 加入购物车失败的提示信息。 +// 当用户将商品加入购物车失败时返回此消息。 +// public static String ADD_CART_FAILED = "加入购物车失败"; + // +// 下单成功的提示信息。 +// 当用户下单成功时返回此消息。 +// public static String BUY_OK = "下单成功"; + // +// 订单发货状态更新成功的提示信息。 +// 当管理员更新订单发货状态成功时返回此消息。 +// public static String UPDATE_ORDER_OK = "订单发货状态更新成功"; + + // +// 错误的文件类型的提示信息。 +// 当上传的文件类型不符合要求时返回此消息。 +// public static String ERROR_FILE_TYPE = "错误的文件类型"; + // +// 商品上架成功的提示信息。 +// 当管理员将商品上架成功时返回此消息。 +// public static String GOODS_UP_OK = "商品上架成功"; + + // +// 商品下架成功的提示信息。 +// 当管理员将商品下架成功时返回此消息。 +// public static String GOODS_DOWN_OK = "商品下架成功"; } diff --git a/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java b/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java index 77e6370..72b2b31 100644 --- a/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java +++ b/src/main/java/com/shanzhu/flower/config/ProcessInterceptor.java @@ -9,6 +9,7 @@ import javax.servlet.http.HttpServletResponse; /** * 请求处理拦截器 + * 用于处理跨域请求和预请求(OPTIONS方法)。 * * @author: ShanZhu * @date: 2024-01-24 @@ -18,23 +19,38 @@ public class ProcessInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { + // 设置允许跨域访问的来源,允许所有来源 httpServletResponse.setHeader("Access-Control-Allow-Origin", "*"); + // 设置允许的请求头字段 httpServletResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With"); + // 设置允许的请求方法 httpServletResponse.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); + // 设置服务器信息头,表明服务器使用的服务器软件 httpServletResponse.setHeader("X-Powered-By", "Jetty"); + + // 获取请求的方法类型 String method = httpServletRequest.getMethod(); + // 判断是否为OPTIONS预请求 if (method.equals("OPTIONS")) { + // 如果是OPTIONS请求,直接返回200状态码,表示预请求通过 httpServletResponse.setStatus(200); - return false; + return false; // 不继续处理后续的请求 } + // 如果不是OPTIONS请求,继续后续的处理流程 return true; } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { + // 在请求处理之后进行调用(在Controller方法之后) + // 用于修改ModelAndView对象,例如添加额外的模型数据或修改视图 + // 本拦截器中未实现具体逻辑 } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { + // 在整个请求结束之后被调用,主要用于进行资源清理工作 + // 例如关闭数据库连接、释放资源等 + // 本拦截器中未实现具体逻辑 } -} \ No newline at end of file +} diff --git a/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java b/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java index 2147b26..bc48af9 100644 --- a/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java +++ b/src/main/java/com/shanzhu/flower/config/WebMvcConfig.java @@ -5,7 +5,9 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** - * web mvc配置,跨域配置等 + * Web MVC配置类,用于配置Spring MVC的相关功能。 + * 主要功能包括: + * - 添加拦截器,用于处理跨域请求等。 * * @author: ShanZhu * @date: 2024-01-24 @@ -15,8 +17,11 @@ public class WebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { - - registry.addInterceptor(new ProcessInterceptor()).addPathPatterns("/**"); + // 添加自定义的拦截器ProcessInterceptor + // ProcessInterceptor用于处理跨域请求和预请求(OPTIONS方法) + registry.addInterceptor(new ProcessInterceptor()) + // 指定拦截器的应用路径模式 + // 使用"/**"表示拦截所有请求路径 + .addPathPatterns("/**"); } - -} \ No newline at end of file +} diff --git a/src/main/java/com/shanzhu/flower/controller/CartController.java b/src/main/java/com/shanzhu/flower/controller/CartController.java index d459bd4..5daea89 100644 --- a/src/main/java/com/shanzhu/flower/controller/CartController.java +++ b/src/main/java/com/shanzhu/flower/controller/CartController.java @@ -1,5 +1,4 @@ package com.shanzhu.flower.controller; - import com.shanzhu.flower.config.Constant; import com.shanzhu.flower.config.HttpMsg; import com.shanzhu.flower.dao.FlowersDao; @@ -9,15 +8,13 @@ import com.shanzhu.flower.service.CartService; import com.shanzhu.flower.service.OrderService; import org.springframework.web.bind.annotation.*; import tk.mybatis.mapper.util.StringUtil; - import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; - - /** * 购物车 控制层 + * 提供购物车相关的RESTful API接口,包括查询、分页查询、购买、新增、更新和删除购物车项。 * * @author: ShanZhu * @date: 2024-01-24 @@ -25,48 +22,43 @@ import java.util.Map; @RestController @RequestMapping("cart") public class CartController { - @Resource - private CartService cartService; - + private CartService cartService; // 注入购物车服务层 @Resource - private OrderService orderService; - + private OrderService orderService; // 注入订单服务层 @Resource - private FlowersDao flowersDao; - + private FlowersDao flowersDao; // 注入花朵数据访问对象 /** * 查询用户购物车 + * 根据用户账号查询其购物车中的所有商品,并计算每个商品的总价。 * * @param account 用户账号 - * @return 购物车 + * @return 购物车信息 */ @RequestMapping("/queryByAccount") R queryByAccount(@RequestParam("account") String account) { - R r = new R(); - + R r = new R(); // 创建响应对象 +// 检查用户账号是否为空 if (StringUtil.isEmpty(account)) { - return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); + return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); // 参数不合法 } - +// 查询购物车中的商品 List carts = cartService.queryByAccount(account); - +// 计算每个商品的总价 for (Cart cart : carts) { - float price = flowersDao.queryPrice(cart.getFid()); - cart.setPrice(cart.getAmount() * price); + float price = flowersDao.queryPrice(cart.getFid()); // 查询商品单价 + cart.setPrice(cart.getAmount() * price); // 设置总价 } - - return r.setCode(2000).setData(carts); + return r.setCode(2000).setData(carts); // 返回成功响应 } - - /** * 分页查询购物车 + * 根据用户账号和查询条件分页查询购物车中的商品。 * - * @param page 页数 + * @param page 页数 * @param searchKey 查询条件 - * @param account 账户 - * @return 购物车列表 + * @param account 用户账号 + * @return 分页后的购物车信息 */ @RequestMapping("/find") R find( @@ -74,103 +66,101 @@ public class CartController { @RequestParam("searchKey") String searchKey, @RequestParam("account") String account ) { - - R r = new R(); - - Map map = new HashMap<>(); - List carts = cartService.find(searchKey, account); - + R r = new R(); // 创建响应对象 +// 创建返回数据的Map + Map map = new HashMap<>(); +// 查询购物车中的商品 + List carts = cartService.find(searchKey, account); +// 如果查询结果为空,直接返回 if (carts == null) { return r.setCode(2000); } - - List items = carts.size() >= page * Constant.PAGE_SIZE ? - carts.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) - : carts.subList((page - 1) * Constant.PAGE_SIZE, carts.size()); - - int len = carts.size() % Constant.PAGE_SIZE == 0 ? carts.size() / Constant.PAGE_SIZE - : (carts.size() / Constant.PAGE_SIZE + 1); +// 计算分页信息 + int totalSize = carts.size(); // 总记录数 + int pageSize = Constant.PAGE_SIZE; // 每页大小 + int totalPages = (totalSize + pageSize - 1) / pageSize; // 总页数 +// 获取当前页的数据 + int start = (page - 1) * pageSize; + int end = Math.min(start + pageSize, totalSize); + List items = carts.subList(start, end); +// 将分页信息和当前页数据放入Map map.put("items", items); - map.put("len", len); - - return r.setCode(2000).setData(map); + map.put("len", totalPages); + return r.setCode(2000).setData(map); // 返回成功响应 } - /** * 购买 + * 将购物车中的商品生成订单,并清空购物车。 * - * @param account 账号 - * @return 结果 + * @param account 用户账号 + * @return 购买结果 */ @RequestMapping("/buy") R buy(@RequestParam("account") String account) { - R r = new R(); - - // 查该用户的购物车 - List carts = (List) queryByAccount(account).getData(); + R r = new R(); // 创建响应对象 +// 查询该用户的购物车 + List carts = (List) queryByAccount(account).getData(); +// 遍历购物车中的商品 for (Cart cart : carts) { - // 增加订单数据 +// 增加订单数据 orderService.add(cart); - // 删除购物车数据 +// 删除购物车数据 cartService.delete(cart.getId()); } - - return r.setCode(2000).setMsg(HttpMsg.BUY_OK); + return r.setCode(2000).setMsg(HttpMsg.BUY_OK); // 返回购买成功响应 } - /** * 新增购物车 + * 将商品添加到购物车中。 * * @param cart 购物车信息 - * @return 购物车 + * @return 新增结果 */ @RequestMapping("/create") R create(@RequestBody Cart cart) { - R r = new R(); - + R r = new R(); // 创建响应对象 +// 调用服务层添加购物车 int ans = cartService.add(cart); - +// 根据返回结果设置响应 if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.ADD_CART_OK); + return r.setCode(2000).setMsg(HttpMsg.ADD_CART_OK); // 添加成功 } - - return r.setCode(4000).setMsg(HttpMsg.ADD_CART_FAILED); + return r.setCode(4000).setMsg(HttpMsg.ADD_CART_FAILED); // 添加失败 } - /** * 更新购物车 + * 更新购物车中的商品信息。 * * @param cart 购物车信息 - * @return 结果 + * @return 更新结果 */ @RequestMapping("/update") R update(@RequestBody Cart cart) { - R r = new R(); - + R r = new R(); // 创建响应对象 +// 调用服务层更新购物车 int ans = cartService.update(cart); - +// 根据返回结果设置响应 if (ans >= 0) { - return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); // 更新成功 } - - return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); + return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); // 更新失败 } - /** * 删除购物车 + * 根据购物车ID删除购物车中的商品。 * - * @param id 购物车id - * @return 结果 + * @param id 购物车ID + * @return 删除结果 */ @DeleteMapping("/delete") R delete(@RequestParam("id") int id) { - R r = new R(); + R r = new R(); // 创建响应对象 +// 调用服务层删除购物车 int ans = cartService.delete(id); +// 根据返回结果设置响应 if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); // 删除成功 } - return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); + return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); // 删除失败 } - } - diff --git a/src/main/java/com/shanzhu/flower/controller/FlowerController.java b/src/main/java/com/shanzhu/flower/controller/FlowerController.java index 8a55da7..e720d33 100644 --- a/src/main/java/com/shanzhu/flower/controller/FlowerController.java +++ b/src/main/java/com/shanzhu/flower/controller/FlowerController.java @@ -29,12 +29,12 @@ import java.util.UUID; public class FlowerController { @Value("${uploadPath}") - private String uploadPath; + private String uploadPath; // 注入文件上传路径配置 @Resource - private FlowersService flowerService; + private FlowersService flowerService; // 注入鲜花业务逻辑服务 @Resource - private FlowersDao flowersDao; + private FlowersDao flowersDao; // 注入鲜花数据访问对象 /** * 分页查询鲜花商品 @@ -42,7 +42,7 @@ public class FlowerController { * @param page 页数 * @param searchKey 查询条件 * @param searchType 查询类型 - * @return 商品 + * @return 商品分页数据 */ @RequestMapping("/find") R find( @@ -51,13 +51,13 @@ public class FlowerController { @RequestParam("searchType") String searchType ) { R r = new R(); - List flowers = flowerService.find(searchKey, searchType); + List flowers = flowerService.find(searchKey, searchType); // 调用服务层查询鲜花列表 if (flowers == null) { - return r.setCode(2000); + return r.setCode(2000); // 返回查询失败状态码 } - return getResponse(flowers, page, Constant.SHOW_PAGE_SIZE, r); + return getResponse(flowers, page, Constant.SHOW_PAGE_SIZE, r); // 构建分页响应数据 } /** @@ -70,13 +70,13 @@ public class FlowerController { @RequestMapping("/findAll") R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { R r = new R(); - List flowers = flowerService.findAll(searchKey); + List flowers = flowerService.findAll(searchKey); // 调用服务层查询所有鲜花 if (flowers == null) { - return r.setCode(2000); + return r.setCode(2000); // 返回查询失败状态码 } - return getResponse(flowers, page, Constant.PAGE_SIZE, r); + return getResponse(flowers, page, Constant.PAGE_SIZE, r); // 构建分页响应数据 } /** @@ -89,12 +89,12 @@ public class FlowerController { R create(@RequestBody Flower flower) { R r = new R(); - int ans = flowerService.add(flower); + int ans = flowerService.add(flower); // 调用服务层添加鲜花 if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.ADD_FLOWER_OK); + return r.setCode(2000).setMsg(HttpMsg.ADD_FLOWER_OK); // 返回添加成功信息 } - return r.setCode(4000).setMsg(HttpMsg.ADD_FLOWER_FAILED); + return r.setCode(4000).setMsg(HttpMsg.ADD_FLOWER_FAILED); // 返回添加失败信息 } /** @@ -107,12 +107,12 @@ public class FlowerController { R update(@RequestBody Flower flower) { R r = new R(); - int ans = flowerService.update(flower); + int ans = flowerService.update(flower); // 调用服务层更新鲜花信息 if (ans >= 0) { - return r.setCode(2000).setMsg(HttpMsg.UPDATE_FLOWER_OK); + return r.setCode(2000).setMsg(HttpMsg.UPDATE_FLOWER_OK); // 返回更新成功信息 } - return r.setCode(4000).setMsg(HttpMsg.UPDATE_FLOWER_FAILED); + return r.setCode(4000).setMsg(HttpMsg.UPDATE_FLOWER_FAILED); // 返回更新失败信息 } /** @@ -125,10 +125,10 @@ public class FlowerController { R changeState(@RequestBody Flower flower) { R r = new R(); - flowersDao.changeState(flower); - String msg = flower.getState() == 1 ? HttpMsg.GOODS_UP_OK : HttpMsg.GOODS_DOWN_OK; + flowersDao.changeState(flower); // 直接调用DAO层修改商品状态 + String msg = flower.getState() == 1 ? HttpMsg.GOODS_UP_OK : HttpMsg.GOODS_DOWN_OK; // 判断上下架状态 - return r.setCode(2000).setMsg(msg); + return r.setCode(2000).setMsg(msg); // 返回操作成功信息 } /** @@ -144,16 +144,16 @@ public class FlowerController { // 只接收 jpg/png 图片 String filename = file.getOriginalFilename(); if (!filename.endsWith(".jpg") && !filename.endsWith(".png")) { - return r.setCode(4000).setMsg(HttpMsg.ERROR_FILE_TYPE); + return r.setCode(4000).setMsg(HttpMsg.ERROR_FILE_TYPE); // 返回文件类型错误信息 } - String img_guid = UUID.randomUUID().toString().replaceAll("-", "") + ".jpg"; + String img_guid = UUID.randomUUID().toString().replaceAll("-", "") + ".jpg"; // 生成唯一图片文件名 try { - savePic(file.getInputStream(), img_guid); - return r.setCode(2000).setMsg(HttpMsg.UPDATE_PIC_OK).setData(img_guid); + savePic(file.getInputStream(), img_guid); // 保存图片文件 + return r.setCode(2000).setMsg(HttpMsg.UPDATE_PIC_OK).setData(img_guid); // 返回上传成功信息 } catch (IOException e) { - return r.setCode(4000).setMsg(HttpMsg.UPDATE_PIC_FAILED); + return r.setCode(4000).setMsg(HttpMsg.UPDATE_PIC_FAILED); // 返回上传失败信息 } } @@ -169,12 +169,12 @@ public class FlowerController { R updateImgGuid(@RequestParam("guid") String guid, @RequestParam("id") int id) { R r = new R(); - int ans = flowerService.updateImg(guid, id); + int ans = flowerService.updateImg(guid, id); // 调用服务层更新图片GUID if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.UPDATE_PIC_OK); + return r.setCode(2000).setMsg(HttpMsg.UPDATE_PIC_OK); // 返回更新成功信息 } - return r.setCode(4000).setMsg(HttpMsg.UPDATE_PIC_FAILED); + return r.setCode(4000).setMsg(HttpMsg.UPDATE_PIC_FAILED); // 返回更新失败信息 } /** @@ -187,14 +187,19 @@ public class FlowerController { R delete(@RequestParam("id") int id) { R r = new R(); - int ans = flowerService.delete(id); + int ans = flowerService.delete(id); // 调用服务层删除鲜花 if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.DELETE_FLOWER_OK); + return r.setCode(2000).setMsg(HttpMsg.DELETE_FLOWER_OK); // 返回删除成功信息 } - return r.setCode(4000).setMsg(HttpMsg.DELETE_FLOWER_FAILED); + return r.setCode(4000).setMsg(HttpMsg.DELETE_FLOWER_FAILED); // 返回删除失败信息 } + /** + * 保存图片文件到指定路径 + * @param inputStream 输入流 + * @param fileName 文件名 + */ private void savePic(InputStream inputStream, String fileName) { OutputStream os = null; try { @@ -207,38 +212,48 @@ public class FlowerController { os = new FileOutputStream(new File(path + fileName)); // 开始读取 while ((len = inputStream.read(bs)) != -1) { - os.write(bs, 0, len); + os.write(bs, 0, len); // 将数据写入文件 } } catch (Exception e) { - e.printStackTrace(); + e.printStackTrace(); // 打印异常堆栈信息 } finally { // 完毕,关闭所有链接 try { os.close(); inputStream.close(); } catch (IOException e) { - e.printStackTrace(); + e.printStackTrace(); // 打印关闭流异常信息 } } } + /** + * 构建分页响应数据 + * @param flowers 鲜花列表 + * @param page 当前页码 + * @param pageSize 每页大小 + * @param r 响应对象 + * @return 分页数据 + */ private R getResponse(List flowers, int page, int pageSize, R r) { Map map = new HashMap<>(); + // 计算当前页数据 List items = flowers.size() >= page * pageSize ? flowers.subList((page - 1) * pageSize, page * pageSize) : flowers.subList((page - 1) * pageSize, flowers.size()); + // 计算总页数 int len = flowers.size() % pageSize == 0 ? flowers.size() / pageSize : (flowers.size() / pageSize + 1); + // 处理图片路径 for (Flower item : items) { if (item.getImg_guid() == null) { - item.setImg_guid(Constant.DEFAULT_IMG); + item.setImg_guid(Constant.DEFAULT_IMG); // 设置默认图片 } - item.setImg_guid(Constant.IMG_USE_PATH + item.getImg_guid()); + item.setImg_guid(Constant.IMG_USE_PATH + item.getImg_guid()); // 添加图片访问路径前缀 } - map.put("items", items); - map.put("len", len); - return r.setCode(2000).setData(map); + map.put("items", items); // 分页数据 + map.put("len", len); // 总页数 + return r.setCode(2000).setData(map); // 返回分页响应 } } - diff --git a/src/main/java/com/shanzhu/flower/controller/FlowerTypeController.java b/src/main/java/com/shanzhu/flower/controller/FlowerTypeController.java index 4b01c9a..b9fd9bf 100644 --- a/src/main/java/com/shanzhu/flower/controller/FlowerTypeController.java +++ b/src/main/java/com/shanzhu/flower/controller/FlowerTypeController.java @@ -21,68 +21,97 @@ import java.util.Map; public class FlowerTypeController { @Resource - private SpeciesService speciesService; + private SpeciesService speciesService; // 注入鲜花种类业务逻辑服务 + /** + * 查询所有鲜花种类 + * @return 鲜花种类列表 + */ @RequestMapping("/findAll") R findAll() { R r = new R(); - List all = speciesService.findAll(); - if (all.size()<=0){ - return r.setCode(4000).setMsg(HttpMsg.NO_TYPE_NOW); + List all = speciesService.findAll(); // 调用服务层查询所有鲜花种类 + if (all.size() <= 0) { + return r.setCode(4000).setMsg(HttpMsg.NO_TYPE_NOW); // 返回无种类信息 } - return r.setCode(2000).setData(all); + return r.setCode(2000).setData(all); // 返回成功及种类列表 } + /** + * 分页查询鲜花种类 + * @param page 页码 + * @param searchKey 查询关键词 + * @return 分页结果 + */ @RequestMapping("/find") R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { R r = new R(); Map map = new HashMap<>(); - List list = speciesService.find(searchKey); + List list = speciesService.find(searchKey); // 调用服务层查询符合条件的种类 if (list == null) { - return r.setCode(2000); + return r.setCode(2000); // 返回查询失败状态 } + + // 分页逻辑 - 获取当前页数据 List items = list.size() >= page * Constant.PAGE_SIZE ? list.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) : list.subList((page - 1) * Constant.PAGE_SIZE, list.size()); + + // 计算总页数 int len = list.size() % Constant.PAGE_SIZE == 0 ? list.size() / Constant.PAGE_SIZE : (list.size() / Constant.PAGE_SIZE + 1); - map.put("items", items); - map.put("len", len); - return r.setCode(2000).setData(map); + + map.put("items", items); // 当前页数据 + map.put("len", len); // 总页数 + return r.setCode(2000).setData(map); // 返回分页结果 } + /** + * 创建鲜花种类 + * @param species 种类信息 + * @return 操作结果 + */ @RequestMapping("/create") R create(@RequestBody Species species) { R r = new R(); try { - speciesService.add(species); - return r.setCode(2000).setMsg(HttpMsg.ADD_TYPE_OK); + speciesService.add(species); // 调用服务层添加种类 + return r.setCode(2000).setMsg(HttpMsg.ADD_TYPE_OK); // 返回添加成功信息 } catch (Exception e) { - return r.setCode(4000).setMsg(HttpMsg.ADD_TYPE_FAILED); + return r.setCode(4000).setMsg(HttpMsg.ADD_TYPE_FAILED); // 返回添加失败信息 } } + /** + * 更新鲜花种类信息 + * @param species 种类信息 + * @return 操作结果 + */ @RequestMapping("/update") R update(@RequestBody Species species) { R r = new R(); try { - speciesService.update(species); - return r.setCode(2000).setMsg(HttpMsg.UPDATE_TYPE_OK); + speciesService.update(species); // 调用服务层更新种类信息 + return r.setCode(2000).setMsg(HttpMsg.UPDATE_TYPE_OK); // 返回更新成功信息 } catch (Exception e) { - return r.setCode(4000).setMsg(HttpMsg.UPDATE_TYPE_FAILED); + return r.setCode(4000).setMsg(HttpMsg.UPDATE_TYPE_FAILED); // 返回更新失败信息 } } + /** + * 删除鲜花种类 + * @param id 种类ID + * @return 操作结果 + */ @DeleteMapping("/delete") R delete(@RequestParam("id") int id) { R r = new R(); try { - speciesService.delete(id); - return r.setCode(2000).setMsg(HttpMsg.DELETE_TYPE_OK); + speciesService.delete(id); // 调用服务层删除种类 + return r.setCode(2000).setMsg(HttpMsg.DELETE_TYPE_OK); // 返回删除成功信息 } catch (Exception e) { - return r.setCode(4000).setMsg(HttpMsg.DELETE_TYPE_FAILED); + return r.setCode(4000).setMsg(HttpMsg.DELETE_TYPE_FAILED); // 返回删除失败信息 } } } - diff --git a/src/main/java/com/shanzhu/flower/controller/LoginController.java b/src/main/java/com/shanzhu/flower/controller/LoginController.java index 2c7770f..821d691 100644 --- a/src/main/java/com/shanzhu/flower/controller/LoginController.java +++ b/src/main/java/com/shanzhu/flower/controller/LoginController.java @@ -12,9 +12,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; - /** * 用户登录 控制层 + * 提供用户登录的RESTful API接口,处理用户登录请求,验证登录信息,并返回登录结果。 * * @author: ShanZhu * @date: 2024-01-24 @@ -24,19 +24,32 @@ import javax.annotation.Resource; public class LoginController { @Resource - private LoginDao loginDao; + private LoginDao loginDao; // 注入登录数据访问对象 + /** + * 用户登录 + * 处理用户登录请求,验证登录表单信息,查询用户数据,返回登录结果。 + * + * @param form 登录表单信息 + * @return 登录结果 + */ @RequestMapping("/doLogin") R doLogin(@RequestBody LoginForm form) { - R r = new R(); + R r = new R(); // 创建响应对象 + + // 验证登录表单信息 if (!VerifyUtil.verifyLoginForm(form)) { - return r.setCode(4000).setMsg(HttpMsg.ERROR_INPUT); + return r.setCode(4000).setMsg(HttpMsg.ERROR_INPUT); // 表单信息不正确 } + + // 查询用户信息 User loginUser = loginDao.login(form); if (loginUser != null) { + // 登录成功,返回用户信息和欢迎消息 return r.setCode(2000).setMsg("欢迎您:" + loginUser.getName()).setData(loginUser); } + + // 登录失败,返回错误信息 return r.setCode(4000).setMsg(HttpMsg.ERROR_VERIFY); } - } diff --git a/src/main/java/com/shanzhu/flower/controller/OrderController.java b/src/main/java/com/shanzhu/flower/controller/OrderController.java index f4ad9cd..e05a7bf 100644 --- a/src/main/java/com/shanzhu/flower/controller/OrderController.java +++ b/src/main/java/com/shanzhu/flower/controller/OrderController.java @@ -1,5 +1,4 @@ package com.shanzhu.flower.controller; - import com.shanzhu.flower.config.Constant; import com.shanzhu.flower.config.HttpMsg; import com.shanzhu.flower.dao.OrderDao; @@ -11,16 +10,14 @@ import com.shanzhu.flower.entity.User; import com.shanzhu.flower.service.OrderService; import org.springframework.web.bind.annotation.*; import tk.mybatis.mapper.util.StringUtil; - import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - - /** * 订单 控制层 + * 提供订单相关的RESTful API接口,包括查询订单、分页查询订单列表、更新订单状态、删除订单等。 * * @author: ShanZhu * @date: 2024-01-24 @@ -28,92 +25,140 @@ import java.util.Map; @RestController @RequestMapping("order") public class OrderController { - @Resource - private OrderService orderService; - + private OrderService orderService; // 注入订单服务层 @Resource - private UserDao userDao; - + private UserDao userDao; // 注入用户数据访问对象 @Resource - private OrderDao orderDao; - + private OrderDao orderDao; // 注入订单数据访问对象 + /** + * 根据账号查询订单 + * 查询指定账号的所有订单。 + * + * @param account 用户账号 + * @return 订单列表 + */ @RequestMapping("/queryByAccount") R queryByAccount(@RequestParam("account") String account) { - R r = new R(); + R r = new R(); // 创建响应对象 +// 检查账号是否为空 if (StringUtil.isEmpty(account)) { - return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); + return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); // 参数不合法 } - List orders = orderService.queryByAccount(account); - return r.setCode(2000).setData(orders); +// 查询订单 + List orders = orderService.queryByAccount(account); + return r.setCode(2000).setData(orders); // 返回订单列表 } - + /** + * 分页查询订单 + * 根据查询条件和页码分页查询订单列表。 + * + * @param page 页码 + * @param searchKey 查询条件 + * @param account 用户账号 + * @return 分页后的订单列表 + */ @RequestMapping("/find") R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey, @RequestParam("account") String account) { - R r = new R(); - Map map = new HashMap<>(); - List orders = orderService.find(searchKey, account); + R r = new R(); // 创建响应对象 + Map map = new HashMap<>(); // 创建返回数据的Map +// 查询订单列表 + List orders = orderService.find(searchKey, account); if (orders == null) { - return r.setCode(2000); + return r.setCode(2000); // 没有查询到数据 } +// 将订单列表放入Map map.put("items", orders); map.put("len", orders.size()); - return r.setCode(2000).setData(map); + return r.setCode(2000).setData(map); // 返回分页后的订单列表 } - + /** + * 分页查询所有订单 + * 查询所有订单,并根据页码分页。 + * + * @param page 页码 + * @param searchKey 查询条件 + * @return 分页后的订单列表 + */ @RequestMapping("/findAll") R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { - R r = new R(); - Map map = new HashMap<>(); - List orders = orderService.findAll(searchKey); + R r = new R(); // 创建响应对象 + Map map = new HashMap<>(); // 创建返回数据的Map +// 查询所有订单 + List orders = orderService.findAll(searchKey); if (orders == null) { - return r.setCode(2000); + return r.setCode(2000); // 没有查询到数据 } - List items = orders.size() >= page * Constant.PAGE_SIZE ? - orders.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) - : orders.subList((page - 1) * Constant.PAGE_SIZE, orders.size()); - int len = orders.size() % Constant.PAGE_SIZE == 0 ? orders.size() / Constant.PAGE_SIZE - : (orders.size() / Constant.PAGE_SIZE + 1); - List vos = new ArrayList<>(); +// 计算分页信息 + int totalSize = orders.size(); // 总记录数 + int pageSize = Constant.PAGE_SIZE; // 每页大小 + int totalPages = (totalSize + pageSize - 1) / pageSize; // 总页数 +// 获取当前页的数据 + int start = (page - 1) * pageSize; + int end = Math.min(start + pageSize, totalSize); + List items = orders.subList(start, end); +// 将订单信息转换为OrderVo + List vos = new ArrayList<>(); for (Order item : items) { - User user = userDao.queryById(item.getUid()); - OrderVo vo = new OrderVo(); + User user = userDao.queryById(item.getUid()); // 查询用户信息 + OrderVo vo = new OrderVo(); // 创建OrderVo对象 vo.setAddress(user.getAddress()).setPhone(user.getPhone()).setUsername(user.getName()) .setAmount(item.getAmount()).setFlower(item.getFlower()).setId(item.getId()) .setUid(item.getUid()).setOrder_guid(item.getOrder_guid()).setPrice(item.getPrice()) .setState(item.getState()); - vos.add(vo); + vos.add(vo); // 添加到列表 } +// 将分页信息和订单列表放入Map map.put("items", vos); - map.put("len", len); - return r.setCode(2000).setData(map); + map.put("len", totalPages); + return r.setCode(2000).setData(map); // 返回分页后的订单列表 } - + /** + * 更新订单 + * 更新指定订单的信息。 + * + * @param order 订单信息 + * @return 更新结果 + */ @RequestMapping("/update") R update(@RequestBody Order order) { - R r = new R(); + R r = new R(); // 创建响应对象 +// 调用服务层更新订单 int ans = orderService.update(order); +// 根据返回结果设置响应 if (ans >= 0) { - return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); // 更新成功 } - return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); + return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); // 更新失败 } - + /** + * 改变订单状态 + * 更新指定订单的状态。 + * + * @param order 订单信息 + * @return 更新结果 + */ @RequestMapping("/changeState") R changeState(@RequestBody Order order) { - orderDao.changeState(order); - return new R().setCode(2000).setMsg(HttpMsg.UPDATE_ORDER_OK); + orderDao.changeState(order); // 调用数据访问对象更新订单状态 + return new R().setCode(2000).setMsg(HttpMsg.UPDATE_ORDER_OK); // 返回成功响应 } - + /** + * 删除订单 + * 根据订单ID删除订单。 + * + * @param id 订单ID + * @return 删除结果 + */ @DeleteMapping("/delete") R delete(@RequestParam("id") int id) { - R r = new R(); + R r = new R(); // 创建响应对象 +// 调用服务层删除订单 int ans = orderService.delete(id); +// 根据返回结果设置响应 if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); // 删除成功 } - return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); + return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); // 删除失败 } - } - diff --git a/src/main/java/com/shanzhu/flower/controller/UserController.java b/src/main/java/com/shanzhu/flower/controller/UserController.java index 4b5cfe0..16afd92 100644 --- a/src/main/java/com/shanzhu/flower/controller/UserController.java +++ b/src/main/java/com/shanzhu/flower/controller/UserController.java @@ -13,9 +13,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; - /** * 用户 控制层 + * 提供用户相关的RESTful API接口,包括查询用户信息、分页查询用户列表、新增用户、更新用户信息和删除用户。 * * @author: ShanZhu * @date: 2024-01-24 @@ -25,68 +25,132 @@ import java.util.Map; public class UserController { @Resource - private UserService userService; + private UserService userService; // 注入用户服务层 + /** + * 根据账号查询用户信息 + * 查询指定账号的用户详细信息。 + * + * @param account 用户账号 + * @return 用户信息 + */ @RequestMapping("/queryInfoByAccount") R queryInfoByAccount(@RequestParam("account") String account) { - R r = new R(); - if (StringUtil.isEmpty(account)){ - return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); + R r = new R(); // 创建响应对象 + + // 检查账号是否为空 + if (StringUtil.isEmpty(account)) { + return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); // 参数不合法 } + + // 查询用户信息 User loginUser = userService.queryInfo(account); - if (loginUser == null){ - return r.setCode(4000).setMsg(HttpMsg.INVALID_USER); + if (loginUser == null) { + return r.setCode(4000).setMsg(HttpMsg.INVALID_USER); // 用户不存在 } - return r.setCode(2000).setData(loginUser); + + return r.setCode(2000).setData(loginUser); // 返回用户信息 } + /** + * 分页查询用户列表 + * 根据查询条件和页码分页查询用户列表。 + * + * @param page 页码 + * @param searchKey 查询条件 + * @return 分页后的用户列表 + */ @RequestMapping("/find") R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { - R r = new R(); - Map map = new HashMap<>(); + R r = new R(); // 创建响应对象 + Map map = new HashMap<>(); // 创建返回数据的Map + + // 查询用户列表 List users = userService.find(searchKey); if (users == null) { - return r.setCode(2000); + return r.setCode(2000); // 没有查询到数据 } - List items = users.size() >= page * Constant.PAGE_SIZE ? - users.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) - : users.subList((page - 1) * Constant.PAGE_SIZE, users.size()); - int len = users.size() % Constant.PAGE_SIZE == 0 ? users.size() / Constant.PAGE_SIZE - : (users.size() / Constant.PAGE_SIZE + 1); + + // 计算分页信息 + int totalSize = users.size(); // 总记录数 + int pageSize = Constant.PAGE_SIZE; // 每页大小 + int totalPages = (totalSize + pageSize - 1) / pageSize; // 总页数 + + // 获取当前页的数据 + int start = (page - 1) * pageSize; + int end = Math.min(start + pageSize, totalSize); + List items = users.subList(start, end); + + // 将分页信息和当前页数据放入Map map.put("items", items); - map.put("len", len); - return r.setCode(2000).setData(map); + map.put("len", totalPages); + + return r.setCode(2000).setData(map); // 返回分页后的用户列表 } + /** + * 新增用户 + * 添加一个新的用户记录。 + * + * @param user 用户信息 + * @return 新增结果 + */ @RequestMapping("/create") R create(@RequestBody User user) { - R r = new R(); + R r = new R(); // 创建响应对象 + + // 调用服务层添加用户 int ans = userService.add(user); + + // 根据返回结果设置响应 if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.ADD_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.ADD_USER_OK); // 添加成功 } - return r.setCode(4000).setMsg(HttpMsg.ADD_USER_FAILED); + + return r.setCode(4000).setMsg(HttpMsg.ADD_USER_FAILED); // 添加失败 } + /** + * 更新用户信息 + * 更新指定用户的详细信息。 + * + * @param user 用户信息 + * @return 更新结果 + */ @RequestMapping("/update") R update(@RequestBody User user) { - R r = new R(); + R r = new R(); // 创建响应对象 + + // 调用服务层更新用户 int ans = userService.update(user); + + // 根据返回结果设置响应 if (ans >= 0) { - return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); // 更新成功 } - return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); + + return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); // 更新失败 } + /** + * 删除用户 + * 根据用户ID删除用户记录。 + * + * @param id 用户ID + * @return 删除结果 + */ @DeleteMapping("/delete") R delete(@RequestParam("id") int id) { - R r = new R(); + R r = new R(); // 创建响应对象 + + // 调用服务层删除用户 int ans = userService.delete(id); + + // 根据返回结果设置响应 if (ans == 1) { - return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); + return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); // 删除成功 } - return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); - } + return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); // 删除失败 + } } - diff --git a/src/main/java/com/shanzhu/flower/dao/CartDao.java b/src/main/java/com/shanzhu/flower/dao/CartDao.java index 9897a5d..93ba19e 100644 --- a/src/main/java/com/shanzhu/flower/dao/CartDao.java +++ b/src/main/java/com/shanzhu/flower/dao/CartDao.java @@ -9,33 +9,84 @@ import java.util.List; @Repository public interface CartDao { - @Select("select * from carts where flower like concat('%',#{searchKey},'%') and account = #{account};") + // +// 根据搜索关键词和用户账号查询购物车 +// 查询购物车中包含指定搜索关键词的商品,并且属于指定用户账号的记录。 +// +// @param searchKey 搜索关键词 +// @param account 用户账号 +// @return 购物车列表 +// + @Select("select * from carts where flower like concat('%',#{searchKey},'%') and account = #{account};") List find(@Param("searchKey") String searchKey, @Param("account") String account); + // +// 查询所有购物车记录 +// 查询购物车表中的所有记录。 +// +// @return 购物车记录列表 +// @Select("select * from carts;") List findAll(); + // +// 检查商品是否已添加到购物车 +// 查询指定用户是否已将指定商品添加到购物车。 +// +// @param cart 购物车对象,包含商品ID(fid)和用户ID(uid) +// @return 购物车记录,如果已添加则返回记录,否则返回null +// @Select("select * from carts where fid = #{fid} and uid = #{uid};") Cart checkIsAdded(Cart cart); + // +// 增加购物车中商品的数量 +// 将指定用户购物车中指定商品的数量加1。 +// +// @param cart 购物车对象,包含商品ID(fid)和用户ID(uid) +// @return 影响的行数,成功返回1,失败返回0 +// @Update("update carts set amount = amount + 1 where fid = #{fid} and uid = #{uid};") int addAmount(Cart cart); + // +// 根据用户ID查询购物车 +// 查询指定用户购物车中的所有商品。 +// +// @param uid 用户ID +// @return 购物车列表 +// @Select("select * from carts where uid = #{uid};") List queryByUid(int uid); + // +// 更新购物车记录 +// 更新购物车中的记录,包括商品名称、密码、电话和地址。 +// +// @param cart 购物车对象,包含需要更新的字段 +// @return 影响的行数,成功返回1,失败返回0 +// @Update("update carts set name = #{name},password = #{password},phone = #{phone},address = #{address} where id = #{id};") int update(Cart cart); + // +// 删除购物车记录 +// 根据购物车ID删除记录。 +// +// @param id 购物车ID +// @return 影响的行数,成功返回1,失败返回0 +// @Delete("delete from carts where id = #{id};") int delete(int id); + // +// 添加购物车记录 +// 将新的购物车记录插入到数据库中。 +// +// @param cart 购物车对象,包含商品ID、商品名称、数量和用户ID +// @return 影响的行数,成功返回1,失败返回0 +// @Insert("insert into carts(fid,flower,amount,uid) " + "values(#{fid},#{flower},1,#{uid});") int add(Cart cart); - } - - - - diff --git a/src/main/java/com/shanzhu/flower/dao/FlowersDao.java b/src/main/java/com/shanzhu/flower/dao/FlowersDao.java index dac65c0..9057019 100644 --- a/src/main/java/com/shanzhu/flower/dao/FlowersDao.java +++ b/src/main/java/com/shanzhu/flower/dao/FlowersDao.java @@ -6,36 +6,76 @@ import org.springframework.stereotype.Repository; import java.util.List; +// +// 鲜花数据访问接口,定义与鲜花表相关的数据库操作 +// @Repository public interface FlowersDao { +// +// 根据搜索关键词和种类分页查询上架鲜花 +// @param searchKey 搜索关键词,匹配鲜花名称 +// @param searchType 种类名称,匹配鲜花种类 +// @return 符合条件的鲜花列表 +// @Select("select * from flowers where name like concat('%',#{searchKey},'%') " + "and species_name like concat('%',#{searchType},'%') and state = 1;") - List find(@Param("searchKey") String searchKey, @Param("searchType")String searchType); + List find(@Param("searchKey") String searchKey, @Param("searchType") String searchType); +// +// 管理员查询所有鲜花(含未上架) +// @param searchKey 搜索关键词,匹配鲜花名称 +// @return 符合条件的鲜花列表 +// @Select("select * from flowers where name like concat('%',#{searchKey},'%');") List findAll(String searchKey); +// +// 查询指定ID鲜花的价格 +// @param fid 鲜花ID +// @return 鲜花价格 +// @Select("select price from flowers where id = #{fid};") Float queryPrice(int fid); +// +// 更新鲜花基本信息 +// @param flower 包含ID和要更新信息的鲜花对象 +// @return 受影响的行数 +// @Update("update flowers set name = #{name}, species_name = #{species_name}, price = #{price}, detail = #{detail} where id = #{id};") Integer update(Flower flower); +// +// 更新鲜花图片GUID +// @param img_guid 新的图片GUID +// @param id 鲜花ID +// @return 受影响的行数 +// @Update("update flowers set img_guid = #{img_guid} where id = #{id};") - Integer updateImg(@Param("img_guid") String img_guid,@Param("id") Integer id); + Integer updateImg(@Param("img_guid") String img_guid, @Param("id") Integer id); +// +// 修改鲜花状态(上架/下架) +// @param flower 包含ID和状态的鲜花对象 +// @return 受影响的行数 +// @Update("update flowers set state = ${state} where id = #{id};") Integer changeState(Flower flower); +// +// 删除指定ID的鲜花 +// @param id 鲜花ID +// @return 受影响的行数 +// @Delete("delete from flowers where id = #{id};") Integer delete(int id); +// +// 添加新鲜花 +// @param flower 鲜花对象(ID自增,状态默认为1-上架) +// @return 受影响的行数 +// @Insert("insert into flowers(name,species_name,price,detail,state) values(#{name},#{species_name},${price},#{detail},1);") Integer add(Flower flower); - } - - - - diff --git a/src/main/java/com/shanzhu/flower/dao/LoginDao.java b/src/main/java/com/shanzhu/flower/dao/LoginDao.java index 48a3ec0..5e7212d 100644 --- a/src/main/java/com/shanzhu/flower/dao/LoginDao.java +++ b/src/main/java/com/shanzhu/flower/dao/LoginDao.java @@ -7,12 +7,15 @@ import org.springframework.stereotype.Repository; @Repository public interface LoginDao { - + // +// +// 用户登录验证 +// 根据登录表单信息(账号、密码和角色)查询用户信息。 +// 如果查询到用户记录,则表示登录成功;否则登录失败。 +// +// @param form 登录表单信息,包含账号(account)、密码(password)和角色(role) +// @return 查询到的用户信息,如果登录成功返回User对象,否则返回null +// @Select("select * from users where account = #{account} and password = #{password} and role = #{role};") User login(LoginForm form); - } - - - - diff --git a/src/main/java/com/shanzhu/flower/dao/OrderDao.java b/src/main/java/com/shanzhu/flower/dao/OrderDao.java index 5c9f97c..5f097fa 100644 --- a/src/main/java/com/shanzhu/flower/dao/OrderDao.java +++ b/src/main/java/com/shanzhu/flower/dao/OrderDao.java @@ -10,35 +10,85 @@ import java.util.List; @Repository public interface OrderDao { - @Select("select * from orders where flower like concat('%',#{searchKey},'%') and uid = #{uid};") + // +// 根据搜索关键词和用户ID查询订单 +// 查询指定用户的所有订单,订单中的商品名称包含指定的搜索关键词。 +// +// @param searchKey 搜索关键词 +// @param uid 用户ID +// @return 订单列表 +// + @Select("select * from orders where flower like concat('%',#{searchKey},'%') and uid = #{uid};") List find(@Param("searchKey") String searchKey, @Param("uid") int uid); + // +// 根据搜索关键词查询所有订单 +// 查询所有订单,订单中的商品名称包含指定的搜索关键词。 +// +// @param searchKey 搜索关键词 +// @return 订单列表 +// @Select("select * from orders where flower like concat('%',#{searchKey},'%');") List findAll(String searchKey); - + // +// 检查订单是否已存在 +// 查询指定用户是否已存在指定商品的订单。 +// +// @param order 订单对象,包含商品ID(fid)和用户ID(uid) +// @return 订单记录,如果已存在则返回订单对象,否则返回null +// @Select("select * from orders where fid = #{fid} and uid = #{uid};") Order checkIsAdded(Order order); - + // +// 更新订单状态 +// 根据订单ID更新订单的状态。 +// +// @param order 订单对象,包含订单ID(id)和新状态(state) +// @return 影响的行数,成功返回1,失败返回0 +// @Update("update orders set state = #{state} where id = #{id};") int changeState(Order order); + // +// 根据用户ID查询订单 +// 查询指定用户的所有订单。 +// +// @param uid 用户ID +// @return 订单列表 +// @Select("select * from orders where uid = #{uid};") List queryByUid(int uid); + // +// 更新订单信息 +// 更新订单的详细信息,包括商品名称、密码、电话和地址。 +// +// @param order 订单对象,包含需要更新的字段 +// @return 影响的行数,成功返回1,失败返回0 +// @Update("update orders set name = #{name},password = #{password},phone = #{phone},address = #{address} where id = #{id};") int update(Order order); + // +// 删除订单 +// 根据订单ID删除订单。 +// +// @param id 订单ID +// @return 影响的行数,成功返回1,失败返回0 +// @Delete("delete from orders where id = #{id};") int delete(int id); + // +// 添加订单 +// 将新的订单记录插入到数据库中。 +// +// @param cart 购物车对象,包含商品名称、数量、价格和用户ID +// @return 影响的行数,成功返回1,失败返回0 +// @Insert("insert into orders(flower,amount,price,state,uid) " + "values(#{flower},#{amount},#{price},0,#{uid});") int add(Cart cart); - } - - - - diff --git a/src/main/java/com/shanzhu/flower/dao/SpeciesDao.java b/src/main/java/com/shanzhu/flower/dao/SpeciesDao.java index db2ed84..ea80132 100644 --- a/src/main/java/com/shanzhu/flower/dao/SpeciesDao.java +++ b/src/main/java/com/shanzhu/flower/dao/SpeciesDao.java @@ -9,26 +9,51 @@ import org.springframework.stereotype.Repository; import java.util.List; +// +// 鲜花种类数据访问对象接口,用于定义对鲜花种类表的数据库操作方法 +// @Repository public interface SpeciesDao { +// +// 根据模糊查询关键词搜索鲜花种类 +// 使用 LIKE 语句进行模糊匹配,查询数据库中名称包含指定关键词的鲜花种类记录 +// @param searchKey 用于模糊查询的关键词,会拼接在 SQL 的 LIKE 语句中 +// @return 符合查询条件的鲜花种类列表,若没有匹配记录则返回空列表 +// @Select("select * from species where species_name like concat('%',#{searchKey},'%');") List find(String searchKey); +// +// 查询数据库中所有的鲜花种类记录 +// @return 包含所有鲜花种类的列表,若表中没有记录则返回空列表 +// @Select("select * from species;") List findAll(); +// +// 更新鲜花种类的名称 +// 根据传入的鲜花种类对象中的 ID,更新数据库中对应记录的种类名称 +// @param species 包含要更新的鲜花种类信息的对象,其中包含 ID 和新的种类名称 +// @return 受影响的行数,若成功更新则返回大于 0 的值,若未找到对应记录则返回 0 +// @Update("update species set species_name = #{species_name} where id = #{id};") int update(Species species); +// +// 根据 ID 删除数据库中的鲜花种类记录 +// @param id 要删除的鲜花种类的 ID +// @return 受影响的行数,若成功删除则返回 1,若未找到对应记录则返回 0 +// @Delete("delete from species where id = #{id};") int delete(int id); +// +// 向数据库中插入新的鲜花种类记录 +// @param species 包含要插入的鲜花种类名称的对象 +// @return 受影响的行数,若成功插入则返回 1,若插入失败则返回 0 +// @Insert("insert into species(species_name) values(#{species_name});") int add(Species species); } - - - - diff --git a/src/main/java/com/shanzhu/flower/dao/UserDao.java b/src/main/java/com/shanzhu/flower/dao/UserDao.java index 07c464e..f22157a 100644 --- a/src/main/java/com/shanzhu/flower/dao/UserDao.java +++ b/src/main/java/com/shanzhu/flower/dao/UserDao.java @@ -12,33 +12,83 @@ import java.util.List; @Repository public interface UserDao { - @Select("select * from users where (account like concat('%',#{searchKey},'%') or name like concat('%',#{searchKey},'%')) and role = 'user';") + // +// 根据搜索关键词查询用户 +// 查询用户表中账号或姓名包含指定搜索关键词的普通用户(角色为'user')。 +// +// @param searchKey 搜索关键词 +// @return 用户列表 +// + @Select("select * from users where (account like concat('%',#{searchKey},'%') or name like concat('%',#{searchKey},'%')) and role = 'user';") List find(String searchKey); + // +// 根据用户ID查询用户 +// 查询指定ID的用户信息。 +// +// @param id 用户ID +// @return 用户信息 +// @Select("select * from users where id = #{id};") User queryById(Integer id); + // +// 查询所有用户 +// 查询用户表中的所有用户信息。 +// +// @return 用户列表 +// @Select("select * from users;") List findAll(); + // +// 根据账号查询用户信息 +// 查询指定账号的普通用户信息(角色为'user')。 +// +// @param account 用户账号 +// @return 用户信息 +// @Select("select * from users where account = #{account} and role = 'user';") User queryInfo(String account); + // +// 根据账号查询用户ID +// 查询指定账号的普通用户的ID。 +// +// @param account 用户账号 +// @return 用户ID +// @Select("select id from users where account = #{account} and role = 'user';") Integer queryIdByAccount(String account); + // +// 更新用户信息 +// 更新用户的基本信息,包括姓名、密码、电话和地址。 +// +// @param user 用户对象,包含需要更新的字段 +// @return 影响的行数,成功返回1,失败返回0 +// @Update("update users set name = #{name},password = #{password},phone = #{phone},address = #{address} where id = #{id};") int update(User user); + // +// 删除用户 +// 根据用户ID删除用户记录。 +// +// @param id 用户ID +// @return 影响的行数,成功返回1,失败返回0 +// @Delete("delete from users where id = #{id};") int delete(int id); + // +// 添加用户 +// 将新的用户记录插入到数据库中,用户角色默认为'user'。 +// +// @param user 用户对象,包含账号、姓名、密码、电话和地址 +// @return 影响的行数,成功返回1,失败返回0 +// @Insert("insert into users(account,name,password,phone,address,role) " + "values(#{account},#{name},#{password},#{phone},#{address},'user');") int add(User user); - } - - - - diff --git a/src/main/java/com/shanzhu/flower/entity/Cart.java b/src/main/java/com/shanzhu/flower/entity/Cart.java index 3fbc9bb..32dd8f9 100644 --- a/src/main/java/com/shanzhu/flower/entity/Cart.java +++ b/src/main/java/com/shanzhu/flower/entity/Cart.java @@ -7,13 +7,39 @@ import lombok.experimental.Accessors; @Accessors(chain = true) public class Cart { + // +// 购物车记录的唯一标识符。 +// 用于在数据库中唯一标识每条购物车记录。 +// private int id; + + // +// 商品的唯一标识符。 +// 用于标识购物车中的具体商品。 +// private int fid; + + // +// 商品名称。 +// 用于存储购物车中商品的名称。 +// private String flower; + + // +// 商品数量。 +// 用于存储购物车中商品的数量。 +// private int amount; + + // +// 商品总价。 +// 用于存储购物车中商品的总价,计算方式为单价乘以数量。 +// private float price; + // 用户的唯一标识符。 +// 用于标识购物车记录所属的用户。 private int uid; + // 用户账号。 +// 用于存储购物车记录所属用户的账号信息。 private String account; } - - diff --git a/src/main/java/com/shanzhu/flower/entity/Flower.java b/src/main/java/com/shanzhu/flower/entity/Flower.java index d61e979..2d1eebb 100644 --- a/src/main/java/com/shanzhu/flower/entity/Flower.java +++ b/src/main/java/com/shanzhu/flower/entity/Flower.java @@ -3,23 +3,23 @@ package com.shanzhu.flower.entity; import lombok.Data; import lombok.experimental.Accessors; +// 鲜花实体类,用于封装鲜花相关的信息 @Data @Accessors(chain = true) public class Flower { - +// 鲜花的唯一标识 ID,数据库表中的主键,通常用于唯一确定一条鲜花记录 private int id; +// 鲜花的名称,用于描述鲜花的具体品种或类型 private String name; - // 分类名称 +// 鲜花所属的种类名称,用于分类管理不同种类的鲜花 private String species_name; +// 鲜花的价格,记录该鲜花的售卖价格,以浮点数类型存储 private float price; - // 详细介绍 +// 鲜花的详细描述信息,可包含鲜花的特征、产地、养护方法等内容 private String detail; - // 图片 +// 鲜花图片的唯一标识符(GUID),用于关联存储在服务器上的鲜花图片资源 private String img_guid; - // 是否上架 +// 鲜花的状态,通常 1 表示上架(可售卖),0 表示下架(不可售卖) private int state; } - - - diff --git a/src/main/java/com/shanzhu/flower/entity/LoginForm.java b/src/main/java/com/shanzhu/flower/entity/LoginForm.java index a345d01..e5d015d 100644 --- a/src/main/java/com/shanzhu/flower/entity/LoginForm.java +++ b/src/main/java/com/shanzhu/flower/entity/LoginForm.java @@ -6,7 +6,10 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) public class LoginForm { +// 计数 private String account; +// 密码 private String password; +// 角色 private String role; } diff --git a/src/main/java/com/shanzhu/flower/entity/Order.java b/src/main/java/com/shanzhu/flower/entity/Order.java index 424ae09..cc5a925 100644 --- a/src/main/java/com/shanzhu/flower/entity/Order.java +++ b/src/main/java/com/shanzhu/flower/entity/Order.java @@ -7,16 +7,45 @@ import lombok.experimental.Accessors; @Accessors(chain = true) public class Order { + // +// 订单的唯一标识符。 +// 用于在数据库中唯一标识每条订单记录。 +// private int id; + + // +// 订单的全局唯一标识符(GUID)。 +// 用于在系统中唯一标识订单,便于跟踪和管理。 +// private String order_guid; + + // +// 订单中的商品名称。 +// 用于存储订单中商品的名称。 +// private String flower; + + // +// 商品数量。 +// 用于存储订单中商品的数量。 +// private int amount; + + // +// 商品总价。 +// 用于存储订单中商品的总价,计算方式为单价乘以数量。 +// private float price; + + // +// 订单状态。 +// 用于标识订单的当前状态,例如:0表示未发货,1表示已发货,2表示已完成等。 +// private float state; - // 用户 id - private int uid; + // +// 用户ID。 +// 用于标识订单所属的用户。 +// + private int uid; // 用户 id } - - - diff --git a/src/main/java/com/shanzhu/flower/entity/OrderVo.java b/src/main/java/com/shanzhu/flower/entity/OrderVo.java index 9a57950..215c051 100644 --- a/src/main/java/com/shanzhu/flower/entity/OrderVo.java +++ b/src/main/java/com/shanzhu/flower/entity/OrderVo.java @@ -6,9 +6,11 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) public class OrderVo extends Order{ - +//姓名 private String username; +// 电话 private String phone; +// 地址 private String address; } diff --git a/src/main/java/com/shanzhu/flower/entity/Param.java b/src/main/java/com/shanzhu/flower/entity/Param.java index ae6a9ca..419dc0d 100644 --- a/src/main/java/com/shanzhu/flower/entity/Param.java +++ b/src/main/java/com/shanzhu/flower/entity/Param.java @@ -6,6 +6,8 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) public class Param { +// 秘钥 private String searchKey; +// 张数 private int page; } diff --git a/src/main/java/com/shanzhu/flower/entity/Species.java b/src/main/java/com/shanzhu/flower/entity/Species.java index 886f392..8c68aeb 100644 --- a/src/main/java/com/shanzhu/flower/entity/Species.java +++ b/src/main/java/com/shanzhu/flower/entity/Species.java @@ -6,7 +6,9 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) public class Species { +// ID private int id; +// 重命名 private String species_name; } diff --git a/src/main/java/com/shanzhu/flower/entity/User.java b/src/main/java/com/shanzhu/flower/entity/User.java index 16031f4..54d1454 100644 --- a/src/main/java/com/shanzhu/flower/entity/User.java +++ b/src/main/java/com/shanzhu/flower/entity/User.java @@ -6,14 +6,45 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) public class User { + // +// 用户的唯一标识符。 +// 用于在数据库中唯一标识每个用户。 +// private int id; + + // +// 用户账号。 +// 用于用户登录和身份验证。 +// private String account; + + // +// 用户姓名。 +// 用于存储用户的真实姓名或昵称。 +// private String name; + + // +// 用户密码。 +// 用于用户登录验证,存储时应加密处理以保证安全。 +// private String password; + + // +// 用户电话号码。 +// 用于联系用户或验证用户身份。 +// private String phone; + + // +// 用户地址。 +// 用于存储用户的配送地址或其他联系地址。 +// private String address; + + // +// 用户角色。 +// 用于标识用户在系统中的权限级别,例如:"admin" 表示管理员,"user" 表示普通用户。 +// private String role; } - - - diff --git a/src/main/java/com/shanzhu/flower/service/CartService.java b/src/main/java/com/shanzhu/flower/service/CartService.java index ff76edf..4bebecb 100644 --- a/src/main/java/com/shanzhu/flower/service/CartService.java +++ b/src/main/java/com/shanzhu/flower/service/CartService.java @@ -1,20 +1,60 @@ package com.shanzhu.flower.service; import com.shanzhu.flower.entity.Cart; - import java.util.List; /** * 购物车 服务 + * 定义了购物车相关的业务逻辑接口,包括添加、删除、更新购物车项,以及查询购物车内容。 * * @author: ShanZhu * @date: 2024-01-24 */ public interface CartService { + // +// 添加商品到购物车 +// 如果商品已存在于购物车中,则增加该商品的数量;否则,将商品作为新的记录添加到购物车。 +// +// @param cart 购物车对象,包含商品信息和用户账号 +// @return 添加结果,成功返回1,失败返回0 +// int add(Cart cart); + + // +// 删除购物车中的商品 +// 根据用户ID删除购物车中的所有商品。 +// +// @param uid 用户ID +// @return 删除结果,成功返回1,失败返回0 +// int delete(int uid); + + // +// 更新购物车中的商品信息 +// 更新购物车中指定商品的数量或其他信息。 +// +// @param cart 购物车对象,包含需要更新的商品信息 +// @return 更新结果,成功返回1,失败返回0 +// int update(Cart cart); - List find(String searchKey,String account); + + // +// 根据搜索关键词和用户账号查询购物车 +// 查询购物车中商品名称包含指定搜索关键词的记录,并且属于指定用户账号。 +// +// @param searchKey 搜索关键词 +// @param account 用户账号 +// @return 购物车记录列表 +// + List find(String searchKey, String account); + + // +// 根据用户账号查询购物车 +// 查询指定用户账号的购物车中的所有商品。 +// +// @param account 用户账号 +// @return 购物车记录列表 +// List queryByAccount(String account); } diff --git a/src/main/java/com/shanzhu/flower/service/FlowersService.java b/src/main/java/com/shanzhu/flower/service/FlowersService.java index 06fcc82..f6ceb11 100644 --- a/src/main/java/com/shanzhu/flower/service/FlowersService.java +++ b/src/main/java/com/shanzhu/flower/service/FlowersService.java @@ -4,18 +4,62 @@ import com.shanzhu.flower.entity.Flower; import java.util.List; -/** - * 鲜花商品 服务层 - * - * @author: ShanZhu - * @date: 2024-01-24 - */ +// +// * 鲜花商品 服务层接口,定义了与鲜花商品相关的业务操作方法, +// * 具体的实现由实现类来完成,用于处理鲜花商品的增删改查以及图片更新等业务逻辑。 +// * +// * @author: ShanZhu +// * @date: 2024-01-24 +// public interface FlowersService { +// +// * 向系统中添加一个新的鲜花商品记录。 +// * +// * @param flower 要添加的鲜花商品对象,包含了鲜花的详细信息,如名称、种类、价格等。 +// * @return 成功添加时返回 1,添加失败返回 0(可以根据具体业务逻辑扩展返回值含义)。 +// int add(Flower flower); + +// +// * 根据给定的鲜花商品 ID,从系统中删除对应的鲜花商品记录。 +// * +// * @param id 要删除的鲜花商品的 ID。 +// * @return 成功删除时返回 1,删除失败返回 0(可以根据具体业务逻辑扩展返回值含义)。 +// int delete(int id); + +// +// * 更新系统中已有的鲜花商品记录信息。 +// * +// * @param flower 包含更新后鲜花商品信息的对象,其中 ID 用于定位要更新的记录。 +// * @return 成功更新时返回大于等于 0 的值,该值表示受影响的行数;更新失败返回 0。 +// int update(Flower flower); - List find(String searchKey,String searchType); + +// +// * 根据给定的搜索关键词和搜索类型,从系统中查询匹配的鲜花商品记录。 +// * +// * @param searchKey 用于模糊查询的关键词,会根据该关键词搜索鲜花的名称或其他相关信息。 +// * @param searchType 搜索的类型,例如可以是鲜花的种类等,用于更精确地筛选查询结果。 +// * @return 包含所有符合查询条件的鲜花商品对象的列表,如果没有匹配的记录则返回空列表。 +// + List find(String searchKey, String searchType); + +// +// * 根据给定的搜索关键词,从系统中查询所有匹配的鲜花商品记录(包括上架和下架的商品)。 +// * +// * @param searchKey 用于模糊查询的关键词,会根据该关键词搜索鲜花的名称或其他相关信息。 +// * @return 包含所有符合查询条件的鲜花商品对象的列表,如果没有匹配的记录则返回空列表。 +// List findAll(String searchKey); - int updateImg(String img_guid,Integer id); + +// +// * 根据给定的图片唯一标识符(GUID)和鲜花商品 ID,更新系统中对应鲜花商品的图片信息。 +// * +// * @param img_guid 新的图片唯一标识符,用于关联新的图片资源。 +// * @param id 要更新图片的鲜花商品的 ID。 +// * @return 成功更新时返回 1,更新失败返回 0(可以根据具体业务逻辑扩展返回值含义)。 +// + int updateImg(String img_guid, Integer id); } diff --git a/src/main/java/com/shanzhu/flower/service/OrderService.java b/src/main/java/com/shanzhu/flower/service/OrderService.java index 2fcfbce..372b1ea 100644 --- a/src/main/java/com/shanzhu/flower/service/OrderService.java +++ b/src/main/java/com/shanzhu/flower/service/OrderService.java @@ -7,16 +7,30 @@ import java.util.List; /** * 订单 服务层 + * 定义了订单相关的业务逻辑接口,包括添加订单、删除订单、更新订单状态,以及查询订单。 * * @author: ShanZhu * @date: 2024-01-24 */ public interface OrderService { +// +// 添加订单 +// 将购物车中的商品转换为订单并插入到数据库中。 +// 如果购物车中的商品已存在订单中,则更新订单数量。 +// +// @param cart 购物车对象,包含商品信息和用户账号 +// @return 添加结果,成功返回1,失败返回0 +// int add(Cart cart); + int delete(int uid); + int update(Order order); + List find(String searchKey, String account); + List findAll(String searchKey); + List queryByAccount(String account); } diff --git a/src/main/java/com/shanzhu/flower/service/SpeciesService.java b/src/main/java/com/shanzhu/flower/service/SpeciesService.java index c662e23..513b440 100644 --- a/src/main/java/com/shanzhu/flower/service/SpeciesService.java +++ b/src/main/java/com/shanzhu/flower/service/SpeciesService.java @@ -4,11 +4,48 @@ import com.shanzhu.flower.entity.Species; import java.util.List; +// +// * 鲜花种类服务层接口,定义了与鲜花种类相关的业务操作方法, +// * 具体的实现由对应的实现类来完成,用于处理鲜花种类的增删改查等业务逻辑。 +// public interface SpeciesService { +// +// * 向系统中添加一个新的鲜花种类记录。 +// * +// * @param species 要添加的鲜花种类对象,包含了种类的名称等信息。 +// * @return 成功添加时返回 1,添加失败返回 0(可根据实际业务逻辑扩展返回值含义)。 +// int add(Species species); + +// +// * 根据给定的鲜花种类 ID,从系统中删除对应的鲜花种类记录。 +// * +// * @param id 要删除的鲜花种类的 ID。 +// * @return 成功删除时返回 1,删除失败返回 0(可根据实际业务逻辑扩展返回值含义)。 +// int delete(int id); + +// +// * 更新系统中已有的鲜花种类记录信息。 +// * +// * @param species 包含更新后鲜花种类信息的对象,其中 ID 用于定位要更新的记录。 +// * @return 成功更新时返回大于等于 0 的值,该值表示受影响的行数;更新失败返回 0。 +// int update(Species species); + +// +// * 根据给定的搜索关键词,从系统中查询匹配的鲜花种类记录。 +// * +// * @param searchKey 用于模糊查询的关键词,会根据该关键词搜索种类名称中包含它的记录。 +// * @return 包含所有符合查询条件的鲜花种类对象的列表,如果没有匹配的记录则返回空列表。 +// List find(String searchKey); + +// +// * 从系统中查询所有的鲜花种类记录。 +// * +// * @return 包含所有鲜花种类对象的列表,如果系统中没有记录则返回空列表。 +// List findAll(); } diff --git a/src/main/java/com/shanzhu/flower/service/UserService.java b/src/main/java/com/shanzhu/flower/service/UserService.java index abe7071..65c1e20 100644 --- a/src/main/java/com/shanzhu/flower/service/UserService.java +++ b/src/main/java/com/shanzhu/flower/service/UserService.java @@ -1,20 +1,59 @@ package com.shanzhu.flower.service; import com.shanzhu.flower.entity.User; - import java.util.List; /** * 用户 服务层 + * 定义了用户相关的业务逻辑接口,包括添加用户、删除用户、更新用户信息,以及查询用户。 * * @author: ShanZhu * @date: 2024-01-24 */ public interface UserService { + // +// 添加用户 +// 将新的用户记录插入到数据库中。 +// +// @param user 用户对象,包含用户的基本信息(账号、姓名、密码等) +// @return 添加结果,成功返回1,失败返回0 +// int add(User user); + + // +// 删除用户 +// 根据用户ID删除用户记录。 +// +// @param uid 用户ID +// @return 删除结果,成功返回1,失败返回0 +// int delete(int uid); + + // +// 更新用户信息 +// 更新用户的基本信息,如姓名、密码、电话和地址。 +// +// @param user 用户对象,包含需要更新的用户信息 +// @return 更新结果,成功返回1,失败返回0 +// int update(User user); + + // +// 根据搜索关键词查询用户 +// 查询用户表中账号或姓名包含指定搜索关键词的用户。 +// +// @param searchKey 搜索关键词 +// @return 用户列表 +// List find(String searchKey); + + // +// 根据账号查询用户信息 +// 查询指定账号的用户详细信息。 +// +// @param account 用户账号 +// @return 用户信息,如果查询不到返回null +// User queryInfo(String account); } diff --git a/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java index fa01a60..74b17b3 100644 --- a/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java +++ b/src/main/java/com/shanzhu/flower/service/impl/CartServiceImpl.java @@ -13,43 +13,51 @@ import java.util.List; public class CartServiceImpl implements CartService { @Resource - private CartDao cartDao; + private CartDao cartDao; // 注入购物车数据访问对象 @Resource - private UserDao userDao; + private UserDao userDao; // 注入用户数据访问对象 @Override public int add(Cart cart) { + // 根据用户账号查询用户ID int uid = userDao.queryIdByAccount(cart.getAccount()); - cart.setUid(uid); + cart.setUid(uid); // 设置购物车记录的用户ID + + // 检查该用户是否已将该商品添加到购物车 Cart cart1 = cartDao.checkIsAdded(cart); - if (cart1==null){ + if (cart1 == null) { + // 如果未添加,直接插入新的购物车记录 return cartDao.add(cart); - }else { + } else { + // 如果已添加,增加该商品的数量 return cartDao.addAmount(cart); } } @Override public int delete(int uid) { + // 根据用户ID删除购物车记录 return cartDao.delete(uid); } @Override public int update(Cart cart) { + // 更新购物车记录 return cartDao.update(cart); } @Override - public List find(String searchKey,String account) { - return cartDao.find(searchKey,account); + public List find(String searchKey, String account) { + // 根据搜索关键词和用户账号查询购物车记录 + return cartDao.find(searchKey, account); } @Override public List queryByAccount(String account) { + // 根据用户账号查询用户ID Integer uid = userDao.queryIdByAccount(account); + // 根据用户ID查询购物车记录 return cartDao.queryByUid(uid); } - - } diff --git a/src/main/java/com/shanzhu/flower/service/impl/FlowersServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/FlowersServiceImpl.java index 631506a..6eee929 100644 --- a/src/main/java/com/shanzhu/flower/service/impl/FlowersServiceImpl.java +++ b/src/main/java/com/shanzhu/flower/service/impl/FlowersServiceImpl.java @@ -8,39 +8,74 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; +// +// * 鲜花业务逻辑实现类,处理鲜花相关的业务操作 +// @Service public class FlowersServiceImpl implements FlowersService { @Resource - private FlowersDao flowersDao; + private FlowersDao flowersDao; // 注入鲜花数据访问对象 +// +// * 添加鲜花信息 +// * @param flower 鲜花实体对象 +// * @return 数据库操作影响的行数 +// @Override public int add(Flower flower) { - return flowersDao.add(flower); + return flowersDao.add(flower); // 调用DAO层添加鲜花 } +// +// * 根据ID删除鲜花 +// * @param id 鲜花ID +// * @return 数据库操作影响的行数 +// @Override public int delete(int id) { - return flowersDao.delete(id); + return flowersDao.delete(id); // 调用DAO层删除鲜花 } +// +// * 更新鲜花信息 +// * @param flower 包含更新信息的鲜花实体对象 +// * @return 数据库操作影响的行数 +// @Override public int update(Flower flower) { - return flowersDao.update(flower); + return flowersDao.update(flower); // 调用DAO层更新鲜花信息 } +// +// * 根据搜索条件查询鲜花列表(用户视角,仅包含上架商品) +// * @param searchKey 搜索关键词(名称) +// * @param searchType 搜索类型(种类) +// * @return 符合条件的鲜花列表 +// @Override - public List find(String searchKey,String searchType) { - return flowersDao.find(searchKey,searchType); + public List find(String searchKey, String searchType) { + return flowersDao.find(searchKey, searchType); // 调用DAO层查询鲜花列表 } +// +// * 管理员查询所有鲜花(包含下架商品) +// * @param searchKey 搜索关键词(名称) +// * @return 符合条件的鲜花列表 +// @Override public List findAll(String searchKey) { - return flowersDao.findAll(searchKey); + return flowersDao.findAll(searchKey); // 调用DAO层查询所有鲜花 } +// +// * 更新鲜花图片 +// * @param img_guid 图片唯一标识 +// * @param id 鲜花ID +// * @return 数据库操作影响的行数 +// @Override - public int updateImg(String img_guid,Integer id) { - return flowersDao.updateImg(img_guid,id); + public int updateImg(String img_guid, Integer id) { + return flowersDao.updateImg(img_guid, id); // 调用DAO层更新鲜花图片 } } diff --git a/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java index d950ff0..04a70c0 100644 --- a/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/shanzhu/flower/service/impl/OrderServiceImpl.java @@ -14,42 +14,54 @@ import java.util.List; public class OrderServiceImpl implements OrderService { @Resource - private OrderDao orderdao; + private OrderDao orderdao; // 注入订单数据访问对象 @Resource - private UserDao userDao; + private UserDao userDao; // 注入用户数据访问对象 @Override public int add(Cart cart) { + // 将购物车中的商品添加为订单 + // 直接调用订单数据访问对象的add方法,将购物车对象转换为订单对象后插入数据库 return orderdao.add(cart); } @Override public int delete(int uid) { + // 根据用户ID删除订单 + // 调用订单数据访问对象的delete方法,删除指定用户ID的所有订单 return orderdao.delete(uid); } @Override public int update(Order order) { + // 更新订单信息 + // 调用订单数据访问对象的update方法,更新指定订单的详细信息 return orderdao.update(order); } @Override - public List find(String searchKey,String account) { + public List find(String searchKey, String account) { + // 根据搜索关键词和用户账号查询订单 + // 首先根据用户账号查询用户ID Integer uid = userDao.queryIdByAccount(account); - return orderdao.find(searchKey,uid); + // 然后根据搜索关键词和用户ID查询订单 + return orderdao.find(searchKey, uid); } @Override public List findAll(String searchKey) { + // 根据搜索关键词查询所有订单 + // 调用订单数据访问对象的findAll方法,查询所有包含搜索关键词的订单 return orderdao.findAll(searchKey); } @Override public List queryByAccount(String account) { + // 根据用户账号查询订单 + // 首先根据用户账号查询用户ID Integer uid = userDao.queryIdByAccount(account); + // 然后根据用户ID查询订单 return orderdao.queryByUid(uid); } - - } diff --git a/src/main/java/com/shanzhu/flower/service/impl/SpeciesServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/SpeciesServiceImpl.java index 34ad99b..054fa1c 100644 --- a/src/main/java/com/shanzhu/flower/service/impl/SpeciesServiceImpl.java +++ b/src/main/java/com/shanzhu/flower/service/impl/SpeciesServiceImpl.java @@ -8,34 +8,67 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; +/** + * 鲜花种类业务逻辑实现类,实现了 SpeciesService 接口, + * 负责处理与鲜花种类相关的业务操作,通过调用 SpeciesDao 来访问数据库。 + */ @Service public class SpeciesServiceImpl implements SpeciesService { @Resource - private SpeciesDao speciesDao; + private SpeciesDao speciesDao; // 注入鲜花种类数据访问对象,用于操作数据库 +// +// * 向数据库中添加一个新的鲜花种类记录。 +// * +// * @param species 要添加的鲜花种类对象,包含种类名称等信息。 +// * @return 执行数据库插入操作后受影响的行数,成功插入时返回 1,失败返回 0。 +// @Override public int add(Species species) { - return speciesDao.add(species); + return speciesDao.add(species); // 调用 SpeciesDao 的 add 方法执行插入操作 } +// +// * 根据给定的鲜花种类 ID,从数据库中删除对应的鲜花种类记录。 +// * +// * @param uid 要删除的鲜花种类的 ID。 +// * @return 执行数据库删除操作后受影响的行数,成功删除时返回 1,失败返回 0。 +// @Override public int delete(int uid) { - return speciesDao.delete(uid); + return speciesDao.delete(uid); // 调用 SpeciesDao 的 delete 方法执行删除操作 } +// +// * 更新数据库中指定鲜花种类的记录信息。 +// * +// * @param species 包含更新后鲜花种类信息的对象,其中 ID 用于定位要更新的记录。 +// * @return 执行数据库更新操作后受影响的行数,成功更新时返回大于 0 的值,未找到对应记录返回 0。 +// @Override public int update(Species species) { - return speciesDao.update(species); + return speciesDao.update(species); // 调用 SpeciesDao 的 update 方法执行更新操作 } +// +// * 根据给定的搜索关键词,从数据库中查询匹配的鲜花种类记录。 +// * +// * @param searchKey 用于模糊查询的关键词,会根据该关键词搜索种类名称中包含它的记录。 +// * @return 包含所有符合查询条件的鲜花种类对象的列表,如果没有匹配的记录则返回空列表。 +// @Override public List find(String searchKey) { - return speciesDao.find(searchKey); + return speciesDao.find(searchKey); // 调用 SpeciesDao 的 find 方法执行查询操作 } +// +// * 从数据库中查询所有的鲜花种类记录。 +// * +// * @return 包含所有鲜花种类对象的列表,如果数据库中没有记录则返回空列表。 +// @Override public List findAll() { - return speciesDao.findAll(); + return speciesDao.findAll(); // 调用 SpeciesDao 的 findAll 方法执行查询操作 } } diff --git a/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java b/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java index 46e2c8b..299e290 100644 --- a/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java +++ b/src/main/java/com/shanzhu/flower/service/impl/UserServiceImpl.java @@ -12,34 +12,45 @@ import java.util.List; public class UserServiceImpl implements UserService { @Resource - private UserDao userdao; + private UserDao userdao; // 注入用户数据访问对象 @Override public int add(User user) { try { + // 尝试添加用户记录 + // 调用用户数据访问对象的add方法,将用户对象插入数据库 return userdao.add(user); - }catch (Exception e){ + } catch (Exception e) { + // 如果发生异常,返回0表示添加失败 return 0; } } @Override public int delete(int uid) { + // 根据用户ID删除用户记录 + // 调用用户数据访问对象的delete方法,删除指定用户ID的用户记录 return userdao.delete(uid); } @Override public int update(User user) { + // 更新用户信息 + // 调用用户数据访问对象的update方法,更新指定用户的详细信息 return userdao.update(user); } @Override public List find(String searchKey) { + // 根据搜索关键词查询用户 + // 调用用户数据访问对象的find方法,查询用户表中账号或姓名包含指定搜索关键词的用户 return userdao.find(searchKey); } @Override public User queryInfo(String account) { + // 根据账号查询用户信息 + // 调用用户数据访问对象的queryInfo方法,查询指定账号的用户信息 return userdao.queryInfo(account); } } diff --git a/src/main/java/com/shanzhu/flower/util/VerifyUtil.java b/src/main/java/com/shanzhu/flower/util/VerifyUtil.java index 89f555d..4998d2d 100644 --- a/src/main/java/com/shanzhu/flower/util/VerifyUtil.java +++ b/src/main/java/com/shanzhu/flower/util/VerifyUtil.java @@ -1,19 +1,33 @@ package com.shanzhu.flower.util; - import com.shanzhu.flower.entity.LoginForm; import tk.mybatis.mapper.util.StringUtil; +/** + * 验证工具类,提供表单验证相关的静态方法 + */ public class VerifyUtil { + /** + * 验证登录表单的有效性 + * @param form 登录表单对象 + * @return 验证通过返回true,否则返回false + */ public static boolean verifyLoginForm(LoginForm form) { - if (form==null || StringUtil.isEmpty(form.getAccount())|| StringUtil.isEmpty(form.getPassword())|| StringUtil.isEmpty(form.getRole())) { + // 检查表单对象是否为空,或必填字段是否为空 + if (form == null + || StringUtil.isEmpty(form.getAccount()) + || StringUtil.isEmpty(form.getPassword()) + || StringUtil.isEmpty(form.getRole())) { return false; } - if (form.getRole().equals("user") || form.getRole().equals("admin")){ + + // 检查角色是否为允许的类型 + if (form.getRole().equals("user") || form.getRole().equals("admin")) { return true; } + + // 角色类型不合法 return false; } - } -- 2.34.1