From e9103655b4b7a941255984a65dbb207bbc10555a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B9=E5=AE=97?= <2937021973@qq.com> Date: Mon, 15 Nov 2021 06:08:53 +0000 Subject: [PATCH 001/133] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20front-code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-code/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 front-code/.keep diff --git a/front-code/.keep b/front-code/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From 5905855c57de143d5e7e4512555a617d150dedb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B9=E5=AE=97?= <2937021973@qq.com> Date: Mon, 15 Nov 2021 06:09:37 +0000 Subject: [PATCH 002/133] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=20front-cod?= =?UTF-8?q?e=20=E4=B8=BA=20front-end=5Fcode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {front-code => front-end_code}/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {front-code => front-end_code}/.keep (100%) diff --git a/front-code/.keep b/front-end_code/.keep similarity index 100% rename from front-code/.keep rename to front-end_code/.keep -- Gitee From 636b477cbcf389a22a531ed7a8f3b2ac75d55c14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B9=E5=AE=97?= <2937021973@qq.com> Date: Mon, 15 Nov 2021 06:09:49 +0000 Subject: [PATCH 003/133] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20back-end=5Fcode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 back-end_code/.keep diff --git a/back-end_code/.keep b/back-end_code/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From 59d91b8f844fddb403d8e394b3c03cf11df3c4ff Mon Sep 17 00:00:00 2001 From: WenZongX <2937021973@qq.com> Date: Mon, 15 Nov 2021 14:34:08 +0800 Subject: [PATCH 004/133] =?UTF-8?q?=E5=B0=86=E5=90=8E=E7=AB=AF2.0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E4=BB=A3=E7=A0=81=E7=A7=BB=E8=87=B3back-end?= =?UTF-8?q?=5Fcode=E6=96=87=E4=BB=B6=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/shop/ServiceApplication.java | 0 .../java/com/shop/annotation/PassToken.java | 0 .../com/shop/annotation/UserLoginToken.java | 0 .../com/shop/config/CloudStorageConfig.java | 0 .../com/shop/controller/ClassController.java | 100 +++++++++++++++ .../com/shop/controller/GOController.java | 0 .../com/shop/controller/GoodsController.java | 83 +++++++++--- .../com/shop/controller/OrderController.java | 58 +++++++-- .../com/shop/controller/UploadController.java | 0 .../com/shop/controller/UserController.java | 76 +++++++++-- .../src/main/java/com/shop/entity/Class.java | 49 +++++++ .../src}/main/java/com/shop/entity/GO.java | 0 .../src}/main/java/com/shop/entity/Goods.java | 31 ++++- .../com/shop/entity/Goods_buyerRealname.java | 0 .../src}/main/java/com/shop/entity/Order.java | 32 ++++- .../java/com/shop/entity/Order_Goods.java | 0 .../src}/main/java/com/shop/entity/User.java | 11 ++ .../com/shop/impl/UploadImageServiceImpl.java | 0 .../java/com/shop/mapper/ClassMapper.java | 45 +++++++ .../main/java/com/shop/mapper/GOMapper.java | 10 +- .../java/com/shop/mapper/GoodsMapper.java | 28 +++- .../java/com/shop/mapper/OrderMapper.java | 24 ++-- .../main/java/com/shop/mapper/UserMapper.java | 27 +++- .../java/com/shop/service/ClassService.java | 22 ++++ .../main/java/com/shop/service/GOService.java | 0 .../java/com/shop/service/GoodsService.java | 19 ++- .../java/com/shop/service/OrderService.java | 26 +++- .../com/shop/service/UploadImageService.java | 0 .../java/com/shop/service/UserService.java | 5 + .../shop/token/AuthenticationInterceptor.java | 0 .../com/shop/token/InterceptorConfig.java | 0 .../java/com/shop/token/TokenService.java | 0 .../main/java/com/shop/utils/StringUtil.java | 0 .../src}/main/resources/application-dev.yml | 4 +- .../src}/main/resources/application.yml | 0 .../main/resources/mapping/ClassMapper.xml | 63 +++++++++ .../src}/main/resources/mapping/GOMapper.xml | 0 .../main/resources/mapping/GoodsMapper.xml | 29 ++++- .../main/resources/mapping/OrderMapper.xml | 24 +++- .../src/main/resources/mapping/UserMapper.xml | 121 ++++++++++++++++++ .../src}/main/resources/templates/index.html | 0 .../shop/service/ServiceApplicationTests.java | 0 42 files changed, 801 insertions(+), 86 deletions(-) rename {src => back-end_code/src}/main/java/com/shop/ServiceApplication.java (100%) rename {src => back-end_code/src}/main/java/com/shop/annotation/PassToken.java (100%) rename {src => back-end_code/src}/main/java/com/shop/annotation/UserLoginToken.java (100%) rename {src => back-end_code/src}/main/java/com/shop/config/CloudStorageConfig.java (100%) create mode 100644 back-end_code/src/main/java/com/shop/controller/ClassController.java rename {src => back-end_code/src}/main/java/com/shop/controller/GOController.java (100%) rename {src => back-end_code/src}/main/java/com/shop/controller/GoodsController.java (72%) rename {src => back-end_code/src}/main/java/com/shop/controller/OrderController.java (74%) rename {src => back-end_code/src}/main/java/com/shop/controller/UploadController.java (100%) rename {src => back-end_code/src}/main/java/com/shop/controller/UserController.java (50%) create mode 100644 back-end_code/src/main/java/com/shop/entity/Class.java rename {src => back-end_code/src}/main/java/com/shop/entity/GO.java (100%) rename {src => back-end_code/src}/main/java/com/shop/entity/Goods.java (74%) rename {src => back-end_code/src}/main/java/com/shop/entity/Goods_buyerRealname.java (100%) rename {src => back-end_code/src}/main/java/com/shop/entity/Order.java (79%) rename {src => back-end_code/src}/main/java/com/shop/entity/Order_Goods.java (100%) rename {src => back-end_code/src}/main/java/com/shop/entity/User.java (88%) rename {src => back-end_code/src}/main/java/com/shop/impl/UploadImageServiceImpl.java (100%) create mode 100644 back-end_code/src/main/java/com/shop/mapper/ClassMapper.java rename {src => back-end_code/src}/main/java/com/shop/mapper/GOMapper.java (75%) rename {src => back-end_code/src}/main/java/com/shop/mapper/GoodsMapper.java (70%) rename {src => back-end_code/src}/main/java/com/shop/mapper/OrderMapper.java (82%) rename {src => back-end_code/src}/main/java/com/shop/mapper/UserMapper.java (58%) create mode 100644 back-end_code/src/main/java/com/shop/service/ClassService.java rename {src => back-end_code/src}/main/java/com/shop/service/GOService.java (100%) rename {src => back-end_code/src}/main/java/com/shop/service/GoodsService.java (51%) rename {src => back-end_code/src}/main/java/com/shop/service/OrderService.java (72%) rename {src => back-end_code/src}/main/java/com/shop/service/UploadImageService.java (100%) rename {src => back-end_code/src}/main/java/com/shop/service/UserService.java (70%) rename {src => back-end_code/src}/main/java/com/shop/token/AuthenticationInterceptor.java (100%) rename {src => back-end_code/src}/main/java/com/shop/token/InterceptorConfig.java (100%) rename {src => back-end_code/src}/main/java/com/shop/token/TokenService.java (100%) rename {src => back-end_code/src}/main/java/com/shop/utils/StringUtil.java (100%) rename {src => back-end_code/src}/main/resources/application-dev.yml (75%) rename {src => back-end_code/src}/main/resources/application.yml (100%) create mode 100644 back-end_code/src/main/resources/mapping/ClassMapper.xml rename {src => back-end_code/src}/main/resources/mapping/GOMapper.xml (100%) rename {src => back-end_code/src}/main/resources/mapping/GoodsMapper.xml (82%) rename {src => back-end_code/src}/main/resources/mapping/OrderMapper.xml (88%) create mode 100644 back-end_code/src/main/resources/mapping/UserMapper.xml rename {src => back-end_code/src}/main/resources/templates/index.html (100%) rename {src => back-end_code/src}/test/java/com/shop/service/ServiceApplicationTests.java (100%) diff --git a/src/main/java/com/shop/ServiceApplication.java b/back-end_code/src/main/java/com/shop/ServiceApplication.java similarity index 100% rename from src/main/java/com/shop/ServiceApplication.java rename to back-end_code/src/main/java/com/shop/ServiceApplication.java diff --git a/src/main/java/com/shop/annotation/PassToken.java b/back-end_code/src/main/java/com/shop/annotation/PassToken.java similarity index 100% rename from src/main/java/com/shop/annotation/PassToken.java rename to back-end_code/src/main/java/com/shop/annotation/PassToken.java diff --git a/src/main/java/com/shop/annotation/UserLoginToken.java b/back-end_code/src/main/java/com/shop/annotation/UserLoginToken.java similarity index 100% rename from src/main/java/com/shop/annotation/UserLoginToken.java rename to back-end_code/src/main/java/com/shop/annotation/UserLoginToken.java diff --git a/src/main/java/com/shop/config/CloudStorageConfig.java b/back-end_code/src/main/java/com/shop/config/CloudStorageConfig.java similarity index 100% rename from src/main/java/com/shop/config/CloudStorageConfig.java rename to back-end_code/src/main/java/com/shop/config/CloudStorageConfig.java diff --git a/back-end_code/src/main/java/com/shop/controller/ClassController.java b/back-end_code/src/main/java/com/shop/controller/ClassController.java new file mode 100644 index 0000000..acfe5fe --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/ClassController.java @@ -0,0 +1,100 @@ +package com.shop.controller; + +import com.shop.entity.Class; +import com.shop.service.ClassService; +import net.minidev.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + + +@RestController +@RequestMapping("/class") +public class ClassController { + + private String message = "error"; + + @Autowired + private ClassService ClassService; + + //添加类别 + @RequestMapping(value = "/addClass") + public Object addClass(HttpServletRequest request, HttpServletResponse response){ + String class_name = request.getParameter("class_name"); + int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); + JSONObject jsonObject = new JSONObject(); + int result = ClassService.addClass(class_name,parentClass_id); + if(result>=1){ + message = "success"; + } else{ + message = "error"; + } + jsonObject.put("message",message); + return jsonObject; + } + + //查询父类别 + @RequestMapping(value = "/searchParentClass") + public Object searchParentClass(HttpServletRequest request, HttpServletResponse response){ + JSONObject jsonObject = new JSONObject(); + List classList = ClassService.searchParentClass(); + if(classList != null){ + message = "success"; + jsonObject.put("classs",classList); + } else{ + message = "error"; + } + jsonObject.put("message",message); + return jsonObject; + } + + //根据parentClass_id查询子类别 + @RequestMapping(value = "/searchChildClass") + public Object searchChildClass(HttpServletRequest request, HttpServletResponse response){ + int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); + JSONObject jsonObject = new JSONObject(); + List classList = ClassService.searchChildClass(parentClass_id); + if(classList != null){ + message = "success"; + jsonObject.put("classs",classList); + } else{ + message = "error"; + } + jsonObject.put("message",message); + return jsonObject; + } + + //根据classId删除Class + @RequestMapping(value = "/deleteClassByItemId") + public Object deleteClassByItemId(HttpServletRequest request, HttpServletResponse response) { + int class_id = Integer.parseInt(request.getParameter("class_id")); + JSONObject jsonObject = new JSONObject(); + int result = ClassService.deleteClassByItemId(class_id); + if (result >= 1){ + message = "success"; + } + jsonObject.put("message",message); + return jsonObject; + } + + //根据classId修改Class + @RequestMapping(value = "/updateClass") + public Object updateClass(HttpServletRequest request, HttpServletResponse response){ + JSONObject jsonObject = new JSONObject(); + int class_id = Integer.parseInt(request.getParameter("class_id")); + String class_name = request.getParameter("class_name"); + int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); + Class Class = new Class(class_id,class_name,parentClass_id); + int result = ClassService.updateClass(Class); + if (result >= 1){ + message = "success"; + } + jsonObject.put("message",message); + return jsonObject; + } + +} diff --git a/src/main/java/com/shop/controller/GOController.java b/back-end_code/src/main/java/com/shop/controller/GOController.java similarity index 100% rename from src/main/java/com/shop/controller/GOController.java rename to back-end_code/src/main/java/com/shop/controller/GOController.java diff --git a/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java similarity index 72% rename from src/main/java/com/shop/controller/GoodsController.java rename to back-end_code/src/main/java/com/shop/controller/GoodsController.java index cbe5ca3..04da698 100644 --- a/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -44,18 +44,28 @@ public class GoodsController { public Object addGoods(HttpServletRequest request, HttpServletResponse response) { String goods_name = request.getParameter("goods_name"); String seller_username = "admin"; - int goods_stock = 1; + int goods_stock = Integer.parseInt(request.getParameter("goods_stock")); // String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); String goods_img = request.getParameter("goods_img"); String goods_discribe = request.getParameter("goods_discribe"); float goods_price = Float.parseFloat(request.getParameter("goods_price")); + int goods_class = Integer.parseInt(request.getParameter("goods_class")); JSONObject jsonObject = new JSONObject(); - Goods goods = new Goods(goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_price); - int result = goodsService.addGoods( goods); - if (result >= 1) { - message = "success"; - }else { - message = "error"; + if (goods_name.length() >= 2 && goods_name.length() <= 20 && + goods_stock >= 0 && + goods_img.length() <= 2000 && + goods_discribe.length() >= 2 && goods_discribe.length() <= 2000 && + goods_price >= 0 && + goods_class >= 0 + ){ + Goods goods = new Goods(goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_class,goods_price); + int result = goodsService.addGoods( goods); + if (result >= 1) { + message = "success"; + }else { + System.out.println("aa"); + message = "error"; + } } jsonObject.put("message",message); return jsonObject; @@ -98,9 +108,8 @@ public class GoodsController { //在goods表中查找所有正在出售的商品。 @RequestMapping(value = "/searchSellingGoods") public Object searchSellingGoods(HttpServletRequest request, HttpServletResponse response){ - int page = (Integer.parseInt(request.getParameter("page"))-1)*10; JSONObject jsonObject = new JSONObject(); - List goods= goodsService.searchSellingGoods(page); + List goods= goodsService.searchSellingGoods(); message = "success"; jsonObject.put("message",message); jsonObject.put("goods",goods); @@ -124,10 +133,8 @@ public class GoodsController { @RequestMapping(value = "/searchHistoryGoods") public Object searchHistoryGoods(HttpServletRequest request, HttpServletResponse response){ String seller_username = request.getParameter("seller_username"); - int page = Integer.parseInt(request.getParameter("page")); - page = (page-1)*10; JSONObject jsonObject = new JSONObject(); - List goodsList = goodsService.searchHistoryGoods(seller_username,page); + List goodsList = goodsService.searchHistoryGoods(seller_username); List list = new ArrayList(); for (int i=0;i < goodsList.size();i++){ Goods good = (Goods) goodsList.get(i); @@ -162,12 +169,14 @@ public class GoodsController { int item_id = Integer.parseInt(request.getParameter("item_id")); String goods_name = request.getParameter("goods_name"); String seller_username = "admin"; + int goods_stock = Integer.parseInt(request.getParameter("goods_stock")); // String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); String goods_img = request.getParameter("goods_img"); String goods_discribe = request.getParameter("goods_discribe"); + int goods_class = Integer.parseInt(request.getParameter("goods_class")); float goods_price = Float.parseFloat(request.getParameter("goods_price")); JSONObject jsonObject = new JSONObject(); - Goods newgoods = new Goods(item_id,goods_name,seller_username,goods_img,goods_discribe,goods_price); + Goods newgoods = new Goods(item_id,goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_class,goods_price); int result = goodsService.updateGoods(newgoods); if (result >= 1) { message = "success"; @@ -182,9 +191,8 @@ public class GoodsController { @RequestMapping(value = "/searchFreezingGoods") public Object searchFreezingGoods(HttpServletRequest request, HttpServletResponse response){ String seller_username = request.getParameter("seller_username"); - int page = (Integer.parseInt(request.getParameter("page"))-1)*10; JSONObject jsonObject = new JSONObject(); - List goodsList = goodsService.searchFreezingGoods(seller_username,page); + List goodsList = goodsService.searchFreezingGoods(seller_username); List list = new ArrayList(); for (int i=0;i < goodsList.size();i++){ Goods good = (Goods) goodsList.get(i); @@ -207,4 +215,49 @@ public class GoodsController { jsonObject.put("list",list); return jsonObject; } + + //通过类别查询商品 + @RequestMapping(value = "/searchGoodsByClass") + public Object searchGoodsByClass(HttpServletRequest request, HttpServletResponse response){ + int goods_class = Integer.getInteger(request.getParameter("goods_class")); + JSONObject jsonObject = new JSONObject(); + List goodsList =goodsService.searchGoodsByClass(goods_class); + message = "success"; + jsonObject.put("goods",goodsList); + jsonObject.put("message",message); + return jsonObject; + } + + //通过关键词查询商品 + @RequestMapping(value = "/searchGoodsByKeyName") + public Object searchGoodsByKeyName(HttpServletRequest request, HttpServletResponse response){ + String key_name = request.getParameter("key_name"); + JSONObject jsonObject = new JSONObject(); + List goodsList =goodsService.searchGoodsByKeyName(key_name); + message = "success"; + jsonObject.put("goods",goodsList); + jsonObject.put("message",message); + return jsonObject; + } + + //修改商品库存 + @RequestMapping(value = "/updateGoodStock") + public Object updateGoodStock(HttpServletRequest request, HttpServletResponse response){ + int item_id = Integer.parseInt(request.getParameter("item_id")); + int new_stock = Integer.parseInt(request.getParameter("new_stock")); + Goods good = goodsService.searchGoods(item_id); + if (new_stock > 0 ){ + goodsService.updateGoodsState(good.getSeller_username(),item_id,1); + }else if (new_stock <= 0){ + goodsService.updateGoodsState(good.getSeller_username(),item_id,3); + } + goodsService.updateGoodStock(item_id,new_stock); + JSONObject jsonObject = new JSONObject(); + goodsService.updateGoodStock(item_id,new_stock); + message = "success"; + jsonObject.put("message",message); + return jsonObject; + } + + } diff --git a/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java similarity index 74% rename from src/main/java/com/shop/controller/OrderController.java rename to back-end_code/src/main/java/com/shop/controller/OrderController.java index d957a68..38740cd 100644 --- a/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -1,10 +1,13 @@ package com.shop.controller; +import com.shop.entity.GO; import com.shop.entity.Goods; import com.shop.entity.Order; +import com.shop.entity.User; import com.shop.service.GOService; import com.shop.service.GoodsService; import com.shop.service.OrderService; +import com.shop.service.UserService; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; @@ -24,6 +27,9 @@ public class OrderController { private String message = "error"; + @Autowired + private UserService userService; + @Autowired private OrderService orderService; @@ -94,13 +100,16 @@ public class OrderController { String seller_username = request.getParameter("seller_username"); int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); - int result = goService.addGO(orderService.searchOrderByOrderId(seller_username,order_id).getItem_id(),order_id); - Order order = orderService.agreeOrderwanted(seller_username,order_id); - if (order != null){ - message = "success"; - jsonObject.put("order",order); - }else { - message = "error"; + GO res = goService.searchGOByOrderId(order_id); + if (res == null){ + int result = goService.addGO(orderService.searchOrderByOrderId(seller_username,order_id).getItem_id(),order_id); + Order order = orderService.agreeOrderwanted(seller_username,order_id); + if (order != null){ + message = "success"; + jsonObject.put("order",order); + }else { + message = "error"; + } } jsonObject.put("message",message); return jsonObject; @@ -143,25 +152,46 @@ public class OrderController { //意向购买者下单 @RequestMapping(value = "/addToOrderWanted") - public Object addToOrderWanted(HttpServletRequest request, HttpServletResponse response) throws IOException, ParseException { + public Object addToOrderWanted(HttpServletRequest request, HttpServletResponse response){ int item_id = Integer.parseInt(request.getParameter("item_id")); Goods good = goodsService.searchGoods(item_id); String seller_username = good.getSeller_username(); + String buyer_username = request.getParameter("buyer_username"); + User user = userService.getUserInfo(buyer_username); String buyer_realname = request.getParameter("buyer_realname"); String buyer_phonenumber = request.getParameter("buyer_phonenumber"); String buyer_address = request.getParameter("buyer_address"); - int buy_sum = 1; +// String buyer_realname = user.getRealname(); +// String buyer_phonenumber = user.getPhonenumber(); +// String buyer_address = user.getAddress(); + int buy_sum = Integer.getInteger(request.getParameter("buy_sum")); String create_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); JSONObject jsonObject = new JSONObject(); - int result = orderService.addToOrderWanted(item_id, seller_username,buyer_realname, buyer_phonenumber, buyer_address,buy_sum,create_time); - if (result >=1){ - message = "success"; - }else { - message = "error"; + Order order = new Order(item_id,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,5,create_time); + if (buyer_phonenumber.length() == 11 && buyer_address.length() >= 2 && buyer_address.length() <= 100 && good.getGoods_stock() >= buy_sum){ + int result = orderService.addToOrderWanted(order); + if (result >=1){ + message = "success"; + }else { + message = "error"; + } + } jsonObject.put("message",message); return jsonObject; } + //根据用户名查看历史购买记录 + @RequestMapping("/searchFinishOrderByBuyerName") + public Object searchFinishOrderByBuyerName(HttpServletRequest request, HttpServletResponse response){ + String buyer_username = request.getParameter("buyer_username"); + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.searchFinishOrderByBuyerName(buyer_username); + message = "success"; + jsonObject.put("orders",orderList); + jsonObject.put("message",message); + return jsonObject; + } + } diff --git a/src/main/java/com/shop/controller/UploadController.java b/back-end_code/src/main/java/com/shop/controller/UploadController.java similarity index 100% rename from src/main/java/com/shop/controller/UploadController.java rename to back-end_code/src/main/java/com/shop/controller/UploadController.java diff --git a/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java similarity index 50% rename from src/main/java/com/shop/controller/UserController.java rename to back-end_code/src/main/java/com/shop/controller/UserController.java index 4277a1c..2a240a8 100644 --- a/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -17,6 +17,7 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.util.HashMap; +import java.util.List; import java.util.Map; @@ -33,26 +34,28 @@ public class UserController { private TokenService tokenService; //登录验证账号密码 - // http://localhost:8080/user/login?username=admin&password=root123 @RequestMapping(value = "/login") public Object loginByPassword(HttpServletRequest request, HttpServletResponse response){ String username = request.getParameter("username"); String password = request.getParameter("password"); JSONObject jsonObject = new JSONObject(); - User user = userService.login(username,password); - if(user!=null){ - message = "success"; - String token = tokenService.getToken(user); - jsonObject.put("token", token); - jsonObject.put("username ",username); - } else{ - message = "error"; + if(username.length()<=10&&username.length()>=3&&password.length()>=7&&password.length()<=15){ + User user = userService.login(username,password); + if(user!=null){ + message = "success"; + String token = tokenService.getToken(user); + jsonObject.put("permission",user.getPermission()); + jsonObject.put("token", token); + jsonObject.put("username ",username); + } else{ + message = "error"; + } } jsonObject.put("message",message); return jsonObject; } + //获取用户信息 - //http://localhost:8080/user/getUserInfo?username=admin @RequestMapping(value = "/getUserInfo") public Object getUserInfo(HttpServletRequest request, HttpServletResponse response){ String username = request.getParameter("username"); @@ -63,7 +66,6 @@ public class UserController { } //修改密码 - //http://localhost:8080/user/updatePassword?username=admin&oldPassword=root123&newPassword=root1234 @RequestMapping(value = "/updatePassword") public Object updatePasswordByUsername(HttpServletRequest request, HttpServletResponse response){ String username = request.getParameter("username"); @@ -93,4 +95,56 @@ public class UserController { jsonObject.put("message",message); return jsonObject; } + + //用户注册 + @RequestMapping(value = "/registerUser") + public Object registerUser(HttpServletRequest request, HttpServletResponse response){ + String username = request.getParameter("username"); + String password = request.getParameter("password"); + String nickname = request.getParameter("nickname"); + int permission = 1; + String phonenumber = request.getParameter("phonenumber"); + String address = request.getParameter("address"); + String realname = request.getParameter("realname"); + String user_head = request.getParameter("user_head"); + JSONObject jsonObject = new JSONObject(); + User User = new User(username,password,nickname,permission,phonenumber,address,realname,user_head); + int result = userService.registerUser(User); + if (result >= 1){ + message = "success"; + } + jsonObject.put("message",message); + return jsonObject; + } + + //用户修改个人信息 + @RequestMapping(value = "/updateUser") + public Object updateUser(HttpServletRequest request, HttpServletResponse response){ + String username = request.getParameter("username"); + String nickname = request.getParameter("nickname"); + String realname = request.getParameter("realname"); + String phonenumber = request.getParameter("phonenumber"); + String address = request.getParameter("address"); + String user_head = request.getParameter("user_head"); + JSONObject jsonObject = new JSONObject(); + User newUser = new User(username,nickname,phonenumber,address,realname,user_head); + int result = userService.updateUser(newUser); + if (result >= 1){ + message = "success"; + } + jsonObject.put("message",message); + return jsonObject; + } + + //卖家查看买家信息 + @RequestMapping(value = "/searchAllUser") + public Object searchAllUser(HttpServletRequest request, HttpServletResponse response){ + JSONObject jsonObject = new JSONObject(); + List UserList = userService.searchAllUser(); + message = "success"; + jsonObject.put("users",UserList); +// jsonObject.put("User",userService.searchAllUser()); + jsonObject.put("message",message); + return jsonObject; + } } diff --git a/back-end_code/src/main/java/com/shop/entity/Class.java b/back-end_code/src/main/java/com/shop/entity/Class.java new file mode 100644 index 0000000..5667578 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/Class.java @@ -0,0 +1,49 @@ +package com.shop.entity; + +public class Class { + private int class_id; + private String class_name; + private int parentClass_id; + + @Override + public String toString() { + return "Class{" + + "class_id=" + class_id + + ", class_name='" + class_name + '\'' + + ", parentClass_id=" + parentClass_id + + '}'; + } + + public int getClass_id() { + return class_id; + } + + public void setClass_id(int class_id) { + this.class_id = class_id; + } + + public String getClass_name() { + return class_name; + } + + public void setClass_name(String class_name) { + this.class_name = class_name; + } + + public int getParentClass_id() { + return parentClass_id; + } + + public void setParentClass_id(int parentClass_id) { + this.parentClass_id = parentClass_id; + } + + public Class(int class_id, String class_name, int parentClass_id) { + this.class_id = class_id; + this.class_name = class_name; + this.parentClass_id = parentClass_id; + } + + public Class() { + } +} diff --git a/src/main/java/com/shop/entity/GO.java b/back-end_code/src/main/java/com/shop/entity/GO.java similarity index 100% rename from src/main/java/com/shop/entity/GO.java rename to back-end_code/src/main/java/com/shop/entity/GO.java diff --git a/src/main/java/com/shop/entity/Goods.java b/back-end_code/src/main/java/com/shop/entity/Goods.java similarity index 74% rename from src/main/java/com/shop/entity/Goods.java rename to back-end_code/src/main/java/com/shop/entity/Goods.java index 21ca59d..2d47148 100644 --- a/src/main/java/com/shop/entity/Goods.java +++ b/back-end_code/src/main/java/com/shop/entity/Goods.java @@ -7,7 +7,7 @@ public class Goods { private int goods_stock; private String goods_img; private String goods_discribe; - private String goods_class; + private int goods_class; private float goods_price; private int goods_state;//int型 1表示在售,2表示冻结,3表示下架 @@ -24,6 +24,16 @@ public class Goods { this.goods_price = goods_price; } + public Goods(int item_id, String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_class, float goods_price) { + this.item_id = item_id; + this.goods_name = goods_name; + this.seller_username = seller_username; + this.goods_stock = goods_stock; + this.goods_img = goods_img; + this.goods_discribe = goods_discribe; + this.goods_class = goods_class; + this.goods_price = goods_price; + } public Goods(int item_id, String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, float goods_price, int goods_state) { this.item_id = item_id; @@ -109,6 +119,24 @@ public class Goods { this.goods_state = goods_state; } + public Goods(String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_class, float goods_price) { + this.goods_name = goods_name; + this.seller_username = seller_username; + this.goods_stock = goods_stock; + this.goods_img = goods_img; + this.goods_discribe = goods_discribe; + this.goods_class = goods_class; + this.goods_price = goods_price; + } + + public int getGoods_class() { + return goods_class; + } + + public void setGoods_class(int goods_class) { + this.goods_class = goods_class; + } + @Override public String toString() { return "Goods{" + @@ -118,6 +146,7 @@ public class Goods { ", goods_stock=" + goods_stock + ", goods_img='" + goods_img + '\'' + ", goods_discribe='" + goods_discribe + '\'' + + ", goods_class=" + goods_class + ", goods_price=" + goods_price + ", goods_state=" + goods_state + '}'; diff --git a/src/main/java/com/shop/entity/Goods_buyerRealname.java b/back-end_code/src/main/java/com/shop/entity/Goods_buyerRealname.java similarity index 100% rename from src/main/java/com/shop/entity/Goods_buyerRealname.java rename to back-end_code/src/main/java/com/shop/entity/Goods_buyerRealname.java diff --git a/src/main/java/com/shop/entity/Order.java b/back-end_code/src/main/java/com/shop/entity/Order.java similarity index 79% rename from src/main/java/com/shop/entity/Order.java rename to back-end_code/src/main/java/com/shop/entity/Order.java index 6923be3..8536312 100644 --- a/src/main/java/com/shop/entity/Order.java +++ b/back-end_code/src/main/java/com/shop/entity/Order.java @@ -3,8 +3,8 @@ package com.shop.entity; public class Order { private int order_id; private int item_id; - private String seller_username ; - private String buyer_username ; + private String seller_username; + private String buyer_username; private String buyer_realname; private String buyer_phonenumber; private String buyer_address; @@ -31,6 +31,18 @@ public class Order { this.finish_time = finish_time; } + public Order(int item_id, String seller_username, String buyer_username, String buyer_realname, String buyer_phonenumber, String buyer_address, int buy_sum, int state, String create_time) { + this.item_id = item_id; + this.seller_username = seller_username; + this.buyer_username = buyer_username; + this.buyer_realname = buyer_realname; + this.buyer_phonenumber = buyer_phonenumber; + this.buyer_address = buyer_address; + this.buy_sum = buy_sum; + this.state = state; + this.create_time = create_time; + } + public int getOrder_id() { return order_id; } @@ -68,6 +80,22 @@ public class Order { this.finish_time = finish_time; } + public String getSeller_username() { + return seller_username; + } + + public void setSeller_username(String seller_username) { + this.seller_username = seller_username; + } + + public String getBuyer_username() { + return buyer_username; + } + + public void setBuyer_username(String buyer_username) { + this.buyer_username = buyer_username; + } + public String getBuyer_realname() { return buyer_realname; } diff --git a/src/main/java/com/shop/entity/Order_Goods.java b/back-end_code/src/main/java/com/shop/entity/Order_Goods.java similarity index 100% rename from src/main/java/com/shop/entity/Order_Goods.java rename to back-end_code/src/main/java/com/shop/entity/Order_Goods.java diff --git a/src/main/java/com/shop/entity/User.java b/back-end_code/src/main/java/com/shop/entity/User.java similarity index 88% rename from src/main/java/com/shop/entity/User.java rename to back-end_code/src/main/java/com/shop/entity/User.java index 3e51c57..83acf6f 100644 --- a/src/main/java/com/shop/entity/User.java +++ b/back-end_code/src/main/java/com/shop/entity/User.java @@ -14,6 +14,16 @@ public class User { super(); } + + public User(String username, String nickname, String phonenumber, String address, String realname, String user_head) { + this.username = username; + this.nickname = nickname; + this.phonenumber = phonenumber; + this.address = address; + this.realname = realname; + this.user_head = user_head; + } + public User(String username, String password, String nickname, int permission, String phonenumber, String address, String realname, String user_head) { this.username = username; this.password = password; @@ -89,6 +99,7 @@ public class User { this.user_head = user_head; } + @Override public String toString() { return "User{" + diff --git a/src/main/java/com/shop/impl/UploadImageServiceImpl.java b/back-end_code/src/main/java/com/shop/impl/UploadImageServiceImpl.java similarity index 100% rename from src/main/java/com/shop/impl/UploadImageServiceImpl.java rename to back-end_code/src/main/java/com/shop/impl/UploadImageServiceImpl.java diff --git a/back-end_code/src/main/java/com/shop/mapper/ClassMapper.java b/back-end_code/src/main/java/com/shop/mapper/ClassMapper.java new file mode 100644 index 0000000..adc8403 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/mapper/ClassMapper.java @@ -0,0 +1,45 @@ +package com.shop.mapper; + +import com.shop.entity.Class; +import com.shop.entity.GO; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ClassMapper { + /** + * 添加类别 + * @param class_name + * @param parentClass_id + * @return + */ + int addClass(String class_name,int parentClass_id); + + /** + * 查询父类别 + * @return + */ + List searchParentClass(); + + /** + * 根据parentClass_id查询子类别 + * @param parentClass_id + * @return + */ + List searchChildClass(int parentClass_id); + + /** + * 根据classId删除Class + * @param class_id + * @return + */ + int deleteClassByItemId(int class_id); + + /** + * 根据classId修改Class + * @param Class + * @return + */ + int updateClass(Class Class); +} diff --git a/src/main/java/com/shop/mapper/GOMapper.java b/back-end_code/src/main/java/com/shop/mapper/GOMapper.java similarity index 75% rename from src/main/java/com/shop/mapper/GOMapper.java rename to back-end_code/src/main/java/com/shop/mapper/GOMapper.java index 36e81b1..4805708 100644 --- a/src/main/java/com/shop/mapper/GOMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/GOMapper.java @@ -8,7 +8,7 @@ import org.springframework.stereotype.Repository; @Repository public interface GOMapper { /** - * 根据Goods向Goods表中添加信息 + * 根据item_id,order_id向GO表中添加信息 * @param item_id * @param order_id * @return @@ -16,28 +16,28 @@ public interface GOMapper { int addGO(int item_id,int order_id); /** - * 根据Goods向Goods表中添加信息 + * 根据item_id向GO表中查询信息 * @param item_id * @return */ GO searchGOByItemId(int item_id); /** - * 根据Goods向Goods表中添加信息 + * 根据order_id向GO表中查询信息 * @param order_id * @return */ GO searchGOByOrderId(int order_id); /** - * 根据Goods向Goods表中添加信息 + * 根据item_id删除GO表中信息 * @param item_id * @return */ int deleteGOByItemId(int item_id); /** - * 根据Goods向Goods表中添加信息 + * 根据order_id删除GO表中信息 * @param order_id * @return */ diff --git a/src/main/java/com/shop/mapper/GoodsMapper.java b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java similarity index 70% rename from src/main/java/com/shop/mapper/GoodsMapper.java rename to back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java index 788344b..cb7ddcd 100644 --- a/src/main/java/com/shop/mapper/GoodsMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java @@ -38,18 +38,16 @@ public interface GoodsMapper { Goods isHaveSellingGoods(String username); /** * 在Goods表中查找所有正在出售的商品 - * @param page * @return */ - List searchSellingGoods(int page); + List searchSellingGoods(); /** * 在Goods表中查找所有商品 * @param seller_username - * @param page * @return */ - List searchHistoryGoods(String seller_username,int page); + List searchHistoryGoods(String seller_username); /** * 在Goods表中查找所有商品(welcome) @@ -67,12 +65,30 @@ public interface GoodsMapper { /** * 查询冻结商品 * @param seller_username - * @param page * @return */ + List searchFreezingGoods(String seller_username); - List searchFreezingGoods(String seller_username,int page); + /** + * 通过类别查询商品 + * @param goods_class + * @return + */ + List searchGoodsByClass(int goods_class); + /** + * 通过类别查询商品 + * @param key_name + * @return + */ + List searchGoodsByKeyName(String key_name); + /** + * 修改库存数量 + * @param item_id + * @param new_stock + * @return + */ + int updateGoodStock(int item_id,int new_stock); } diff --git a/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java similarity index 82% rename from src/main/java/com/shop/mapper/OrderMapper.java rename to back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 20f4b58..632ac47 100644 --- a/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -41,17 +41,17 @@ public interface OrderMapper { /** * 完成交易(下架) - * @param item_id + * @param order_id * @return */ - int finishOrder(String seller_username,int item_id,String finish_time); + int finishOrder(String seller_username,int order_id,String finish_time); /** * 取消交易(恢复) - * @param item_id + * @param order_id * @return */ - int cancelOrder(String seller_username,int item_id); + int cancelOrder(String seller_username,int order_id); /** * 通过订单id查询订单 @@ -96,12 +96,16 @@ public interface OrderMapper { /** * 根据item_id(商品ID)有意向的购买者下单 - * @param item_id - * @param seller_username - * @param buyer_realname - * @param buyer_phonenumber - * @param buyer_address + * @param order + * @return + */ + int addToOrderWanted(Order order); + + /** + * 根据用户名查看历史购买记录 + * @param buyer_username + * @param * @return */ - int addToOrderWanted(int item_id,String seller_username, String buyer_realname,String buyer_phonenumber,String buyer_address,int buy_sum,String create_time); + List searchFinishOrderByBuyerName(String buyer_username); } diff --git a/src/main/java/com/shop/mapper/UserMapper.java b/back-end_code/src/main/java/com/shop/mapper/UserMapper.java similarity index 58% rename from src/main/java/com/shop/mapper/UserMapper.java rename to back-end_code/src/main/java/com/shop/mapper/UserMapper.java index cc62b62..30aa7b1 100644 --- a/src/main/java/com/shop/mapper/UserMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/UserMapper.java @@ -3,6 +3,8 @@ package com.shop.mapper; import com.shop.entity.User; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface UserMapper { /** @@ -14,18 +16,39 @@ public interface UserMapper { User login( String username, String password); /** - * + * 获取用户信息 * @param username * @return */ User getUserInfo(String username); /** - * + * 修改密码 * @param username * @param newPassword * @return */ int updatePassword(String username,String newPassword); + /** + * 注册用户 + * @param User + * @return + */ + int registerUser(User User); + + /** + * 修改用户信息 + * @param User + * @return + */ + int updateUser(User User); + + /** + * 卖家查看买家信息 + * @param + * @return + */ + List searchAllUser(); + } diff --git a/back-end_code/src/main/java/com/shop/service/ClassService.java b/back-end_code/src/main/java/com/shop/service/ClassService.java new file mode 100644 index 0000000..ee1994f --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/ClassService.java @@ -0,0 +1,22 @@ +package com.shop.service; + +import com.shop.entity.Class; +import com.shop.entity.GO; +import com.shop.mapper.ClassMapper; +import com.shop.mapper.GOMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ClassService { + @Autowired + private ClassMapper classMapper; + + public int addClass(String class_name,int parentClass_id){return classMapper.addClass(class_name,parentClass_id);} + public List searchParentClass(){return classMapper.searchParentClass();} + public List searchChildClass(int parentClass_id){return classMapper.searchChildClass(parentClass_id);} + public int deleteClassByItemId(int class_id){return classMapper.deleteClassByItemId(class_id);} + public int updateClass(Class Class){return classMapper.updateClass(Class);} +} diff --git a/src/main/java/com/shop/service/GOService.java b/back-end_code/src/main/java/com/shop/service/GOService.java similarity index 100% rename from src/main/java/com/shop/service/GOService.java rename to back-end_code/src/main/java/com/shop/service/GOService.java diff --git a/src/main/java/com/shop/service/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java similarity index 51% rename from src/main/java/com/shop/service/GoodsService.java rename to back-end_code/src/main/java/com/shop/service/GoodsService.java index 23fafc0..3b9a608 100644 --- a/src/main/java/com/shop/service/GoodsService.java +++ b/back-end_code/src/main/java/com/shop/service/GoodsService.java @@ -19,9 +19,9 @@ public class GoodsService { public int updateGoodsState(String seller_username,int item_id,int newstate){ return goodsMapper.updateGoodsState(seller_username,item_id, newstate); } - public List searchSellingGoods(int page){return goodsMapper.searchSellingGoods(page);}//一页8条 - public List searchFreezingGoods(String seller_username,int page){return goodsMapper.searchFreezingGoods(seller_username,page);}//一页10条 - public List searchHistoryGoods(String seller_username, int page){ return goodsMapper.searchHistoryGoods(seller_username,page);}//一页10条 + public List searchSellingGoods(){return goodsMapper.searchSellingGoods();}//一页8条 + public List searchFreezingGoods(String seller_username){return goodsMapper.searchFreezingGoods(seller_username);}//一页10条 + public List searchHistoryGoods(String seller_username){ return goodsMapper.searchHistoryGoods(seller_username);}//一页10条 public int updateGoods(Goods newgoods){ return goodsMapper.updateGoods(newgoods);} public List searchWelcomeGoods(){return goodsMapper.searchWelcomeGoods();} public boolean isHaveSellingGoods(String username){ @@ -31,4 +31,17 @@ public class GoodsService { return true; } } + public List searchGoodsByClass(int goods_class){return goodsMapper.searchGoodsByClass(goods_class);} + public List searchGoodsByKeyName(String key_name){return goodsMapper.searchGoodsByKeyName(key_name);} +// public int reduceGoodStock(int item_id,int reduce_sum){ +// Goods good = goodsMapper.searchGoods(item_id); +// int new_stock = good.getGoods_stock()-reduce_sum; +// return goodsMapper.updateGoodStock(item_id,new_stock); +// } +// public int addGoodStock(int item_id,int add_sum){ +// Goods good = goodsMapper.searchGoods(item_id); +// int new_stock = good.getGoods_stock()+add_sum; +// return goodsMapper.updateGoodStock(item_id,new_stock); +// } + public int updateGoodStock(int item_id,int new_stock){return goodsMapper.updateGoodStock(item_id,new_stock);} } diff --git a/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java similarity index 72% rename from src/main/java/com/shop/service/OrderService.java rename to back-end_code/src/main/java/com/shop/service/OrderService.java index 7e3c19b..05d4212 100644 --- a/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -20,6 +20,8 @@ public class OrderService { private OrderMapper orderMapper; @Autowired private GoodsMapper goodsMapper; + @Autowired + private GoodsService goodsService; public static String hideCardNo(String str) { int length = str.length(); @@ -67,12 +69,26 @@ public class OrderService { public Order searchOrderByOrderId(String seller_username,int order_id){return orderMapper.searchOrderByOrderId(seller_username,order_id);} public List searchFinishOrder(String seller_username,int page){return orderMapper.searchFinishOrder(seller_username,page);} public List searchDealingOrder(String seller_username,int page){return orderMapper.searchDealingOrder(seller_username,page);} - public int cancelOrder(String seller_username,int item_id){ - int result = orderMapper.cancelOrder(seller_username,item_id); - goodsMapper.updateGoodsState(seller_username,item_id,1); + public int cancelOrder(String seller_username,int order_id){ + int result = orderMapper.cancelOrder(seller_username,order_id); + Order order = orderMapper.searchOrderByOrderId(seller_username,order_id); + Goods good = goodsMapper.searchGoods(order.getItem_id()); + int new_stock = good.getGoods_stock()+order.getBuy_sum(); + goodsMapper.updateGoodStock(good.getItem_id(),new_stock); + if (good.getGoods_stock() == 0){ + goodsMapper.updateGoodsState(seller_username,order_id,1); + } return result; } - public int addToOrderWanted(int item_id,String seller_username ,String buyer_realname,String buyer_phonenumber,String buyer_address,int buy_sum,String create_time){ - return orderMapper.addToOrderWanted(item_id, seller_username,buyer_realname, buyer_phonenumber, buyer_address,buy_sum,create_time); + public int addToOrderWanted(Order order){ + Goods good = goodsMapper.searchGoods(order.getItem_id()); + int new_stock = good.getGoods_stock()-order.getBuy_sum(); + goodsMapper.updateGoodStock(order.getItem_id(),new_stock); + if (new_stock == 0){ + goodsMapper.updateGoodsState(order.getSeller_username(),order.getItem_id(),3); + } + int result = orderMapper.addToOrderWanted(order); + return result; } + public List searchFinishOrderByBuyerName(String buyer_username){return orderMapper.searchFinishOrderByBuyerName(buyer_username);} } diff --git a/src/main/java/com/shop/service/UploadImageService.java b/back-end_code/src/main/java/com/shop/service/UploadImageService.java similarity index 100% rename from src/main/java/com/shop/service/UploadImageService.java rename to back-end_code/src/main/java/com/shop/service/UploadImageService.java diff --git a/src/main/java/com/shop/service/UserService.java b/back-end_code/src/main/java/com/shop/service/UserService.java similarity index 70% rename from src/main/java/com/shop/service/UserService.java rename to back-end_code/src/main/java/com/shop/service/UserService.java index 0b5cc8e..d661dfd 100644 --- a/src/main/java/com/shop/service/UserService.java +++ b/back-end_code/src/main/java/com/shop/service/UserService.java @@ -5,6 +5,8 @@ import com.shop.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class UserService { @Autowired @@ -13,4 +15,7 @@ public class UserService { public User login(String username, String password){ return userMapper.login(username,password); } public User getUserInfo(String username){ return userMapper.getUserInfo(username); } public int updatePassword(String username,String newPassword){ return userMapper.updatePassword(username,newPassword); } + public int registerUser(User User){return userMapper.registerUser(User);} + public int updateUser(User User){return userMapper.updateUser(User);} + public List searchAllUser(){return userMapper.searchAllUser();} } diff --git a/src/main/java/com/shop/token/AuthenticationInterceptor.java b/back-end_code/src/main/java/com/shop/token/AuthenticationInterceptor.java similarity index 100% rename from src/main/java/com/shop/token/AuthenticationInterceptor.java rename to back-end_code/src/main/java/com/shop/token/AuthenticationInterceptor.java diff --git a/src/main/java/com/shop/token/InterceptorConfig.java b/back-end_code/src/main/java/com/shop/token/InterceptorConfig.java similarity index 100% rename from src/main/java/com/shop/token/InterceptorConfig.java rename to back-end_code/src/main/java/com/shop/token/InterceptorConfig.java diff --git a/src/main/java/com/shop/token/TokenService.java b/back-end_code/src/main/java/com/shop/token/TokenService.java similarity index 100% rename from src/main/java/com/shop/token/TokenService.java rename to back-end_code/src/main/java/com/shop/token/TokenService.java diff --git a/src/main/java/com/shop/utils/StringUtil.java b/back-end_code/src/main/java/com/shop/utils/StringUtil.java similarity index 100% rename from src/main/java/com/shop/utils/StringUtil.java rename to back-end_code/src/main/java/com/shop/utils/StringUtil.java diff --git a/src/main/resources/application-dev.yml b/back-end_code/src/main/resources/application-dev.yml similarity index 75% rename from src/main/resources/application-dev.yml rename to back-end_code/src/main/resources/application-dev.yml index 4d3eb4a..8fa5d15 100644 --- a/src/main/resources/application-dev.yml +++ b/back-end_code/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 8082 + port: 8083 spring: datasource: username: xiangwan password: dingwanren #url中database为对应的数据库名称 - url: jdbc:mysql://47.103.214.177:3306/soft_engineering?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC + url: jdbc:mysql://47.103.214.177:3306/service2.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver mybatis: diff --git a/src/main/resources/application.yml b/back-end_code/src/main/resources/application.yml similarity index 100% rename from src/main/resources/application.yml rename to back-end_code/src/main/resources/application.yml diff --git a/back-end_code/src/main/resources/mapping/ClassMapper.xml b/back-end_code/src/main/resources/mapping/ClassMapper.xml new file mode 100644 index 0000000..d216f90 --- /dev/null +++ b/back-end_code/src/main/resources/mapping/ClassMapper.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + insert into class + + + + className, + + + parentClassId, + + + + + + + #{class_name,jdbcType=VARCHAR}, + + + #{parentClass_id,jdbcType=INTEGER}, + + + + + + + + + + + + + delete from class where classId = #{class_id} + + + + + update class + + + className = #{class_name,jdbcType=VARCHAR}, + + + parentClassId = #{parentClass_id,jdbcType=INTEGER}, + + + where classId = #{class_id,jdbcType=INTEGER} + + + \ No newline at end of file diff --git a/src/main/resources/mapping/GOMapper.xml b/back-end_code/src/main/resources/mapping/GOMapper.xml similarity index 100% rename from src/main/resources/mapping/GOMapper.xml rename to back-end_code/src/main/resources/mapping/GOMapper.xml diff --git a/src/main/resources/mapping/GoodsMapper.xml b/back-end_code/src/main/resources/mapping/GoodsMapper.xml similarity index 82% rename from src/main/resources/mapping/GoodsMapper.xml rename to back-end_code/src/main/resources/mapping/GoodsMapper.xml index cbad4f6..5709cc0 100644 --- a/src/main/resources/mapping/GoodsMapper.xml +++ b/back-end_code/src/main/resources/mapping/GoodsMapper.xml @@ -8,6 +8,7 @@ + @@ -32,6 +33,9 @@ goodsDiscribe, + + goodsClass, + goodsPrice, @@ -55,6 +59,9 @@ #{goods_discribe,jdbcType=VARCHAR}, + + #{goods_class,jdbcType=VARCHAR}, + #{goods_price,jdbcType=REAL}, @@ -77,12 +84,18 @@ sellerUsername = #{seller_username,jdbcType=VARCHAR}, + + goodsStock = #{goods_stock,jdbcType=INTEGER}, + goodsImg = #{goods_img,jdbcType=VARCHAR}, goodsDiscribe = #{goods_discribe,jdbcType=VARCHAR}, + + goodsClass = #{goods_class,jdbcType=INTEGER}, + goodsPrice = #{goods_price,jdbcType=REAL}, @@ -103,7 +116,7 @@ @@ -113,7 +126,7 @@ @@ -123,7 +136,17 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml similarity index 88% rename from src/main/resources/mapping/OrderMapper.xml rename to back-end_code/src/main/resources/mapping/OrderMapper.xml index 0c1da6c..2534599 100644 --- a/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -47,12 +47,12 @@ - update orders set state = 2 , finishTime = #{finish_time} where itemId = #{item_id} and state = 1 and sellerUsername = #{seller_username} + update orders set state = 2 , finishTime = #{finish_time} where orderId = #{order_id} and state = 1 and sellerUsername = #{seller_username} - + - update orders set state = 4 where itemId = #{item_id} and state = 1 and sellerUsername = #{seller_username} + update orders set state = 4 where orderId = #{order_id} and state = 1 and sellerUsername = #{seller_username} @@ -62,12 +62,12 @@ @@ -93,7 +93,9 @@ buySum, - state, + + state, + createTime, @@ -118,10 +120,18 @@ #{buy_sum ,jdbcType=INTEGER}, - 5, + + #{state ,jdbcType=INTEGER}, + #{create_time ,jdbcType=VARCHAR}, + + + + \ No newline at end of file diff --git a/back-end_code/src/main/resources/mapping/UserMapper.xml b/back-end_code/src/main/resources/mapping/UserMapper.xml new file mode 100644 index 0000000..70d3984 --- /dev/null +++ b/back-end_code/src/main/resources/mapping/UserMapper.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + update user set password = #{newPassword} where username = #{username} + + + + + + + + + + + insert into user + + + + userName, + + + passWord, + + + nickName, + + + realName, + + + phoneNumber, + + + address, + + + permission, + + + userHead, + + + + + + + #{username,jdbcType=VARCHAR}, + + + #{password,jdbcType=VARCHAR}, + + + #{nickname,jdbcType=VARCHAR}, + + + #{realname,jdbcType=VARCHAR}, + + + #{phonenumber,jdbcType=VARCHAR}, + + + #{address,jdbcType=VARCHAR}, + + + #{permission,jdbcType=INTEGER}, + + + #{user_head,jdbcType=VARCHAR}, + + + + + + + update user + + + nickName = #{nickname,jdbcType=VARCHAR}, + + + permission = #{permission,jdbcType=INTEGER}, + + + phoneNumber = #{phonenumber,jdbcType=VARCHAR}, + + + address = #{address,jdbcType=VARCHAR}, + + + realName = #{realname,jdbcType=VARCHAR}, + + + userHead = #{user_head,jdbcType=VARCHAR}, + + + where userName = #{username,jdbcType=VARCHAR} + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/back-end_code/src/main/resources/templates/index.html similarity index 100% rename from src/main/resources/templates/index.html rename to back-end_code/src/main/resources/templates/index.html diff --git a/src/test/java/com/shop/service/ServiceApplicationTests.java b/back-end_code/src/test/java/com/shop/service/ServiceApplicationTests.java similarity index 100% rename from src/test/java/com/shop/service/ServiceApplicationTests.java rename to back-end_code/src/test/java/com/shop/service/ServiceApplicationTests.java -- Gitee From 44a33aeaba27bd4ae16ea4b9fd078f627b546742 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B9=E5=AE=97?= <2937021973@qq.com> Date: Mon, 15 Nov 2021 06:38:10 +0000 Subject: [PATCH 005/133] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20?= =?UTF-8?q?src/main/resources/mapping?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapping/UserMapper.xml | 29 ----------------------- 1 file changed, 29 deletions(-) delete mode 100644 src/main/resources/mapping/UserMapper.xml diff --git a/src/main/resources/mapping/UserMapper.xml b/src/main/resources/mapping/UserMapper.xml deleted file mode 100644 index fcf7dfc..0000000 --- a/src/main/resources/mapping/UserMapper.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - update user set password = #{newPassword} where username = #{username} - - - - - - - - \ No newline at end of file -- Gitee From 1a14a43d746034ee60c663e52e0e58480f84d168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B9=E5=AE=97?= <2937021973@qq.com> Date: Mon, 15 Nov 2021 07:44:26 +0000 Subject: [PATCH 006/133] =?UTF-8?q?!1=20=E5=90=8E=E7=AB=AF:=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=80=9A=E8=BF=87=E7=B1=BB=E5=88=AB=E5=92=8C=E5=85=B3?= =?UTF-8?q?=E9=94=AE=E8=AF=8D=E6=90=9C=E7=B4=A2=E5=8A=9F=E8=83=BD=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20*=20=E6=B7=BB=E5=8A=A0=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E7=B1=BB=E5=88=AB=E5=92=8C=E5=85=B3=E9=94=AE=E8=AF=8D=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E5=95=86=E5=93=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/shop/controller/GoodsController.java | 13 +++++++++++++ .../src/main/java/com/shop/mapper/GoodsMapper.java | 8 ++++++++ .../main/java/com/shop/service/GoodsService.java | 1 + .../src/main/resources/mapping/GoodsMapper.xml | 5 +++++ 4 files changed, 27 insertions(+) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 04da698..0b0942d 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -240,6 +240,19 @@ public class GoodsController { return jsonObject; } + //通过类别和关键词查询商品 + @RequestMapping(value = "/searchGoodsByClassAndKeyName") + public Object searchGoodsByClassAndKeyName(HttpServletRequest request, HttpServletResponse response){ + int goods_class = Integer.getInteger(request.getParameter("goods_class")); + String key_name = request.getParameter("key_name"); + JSONObject jsonObject = new JSONObject(); + List goodsList =goodsService.searchGoodsByClassAndKeyName(goods_class,key_name); + message = "success"; + jsonObject.put("goods",goodsList); + jsonObject.put("message",message); + return jsonObject; + } + //修改商品库存 @RequestMapping(value = "/updateGoodStock") public Object updateGoodStock(HttpServletRequest request, HttpServletResponse response){ diff --git a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java index cb7ddcd..f777990 100644 --- a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java @@ -91,4 +91,12 @@ public interface GoodsMapper { */ int updateGoodStock(int item_id,int new_stock); + /** + * 通过类别和关键词查询商品 + * @param goods_class + * @param key_name + * @return + */ + List searchGoodsByClassAndKeyName(int goods_class,String key_name); + } diff --git a/back-end_code/src/main/java/com/shop/service/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java index 3b9a608..dabb988 100644 --- a/back-end_code/src/main/java/com/shop/service/GoodsService.java +++ b/back-end_code/src/main/java/com/shop/service/GoodsService.java @@ -44,4 +44,5 @@ public class GoodsService { // return goodsMapper.updateGoodStock(item_id,new_stock); // } public int updateGoodStock(int item_id,int new_stock){return goodsMapper.updateGoodStock(item_id,new_stock);} + public List searchGoodsByClassAndKeyName(int goods_class,String key_name){return searchGoodsByClassAndKeyName(goods_class,key_name);} } diff --git a/back-end_code/src/main/resources/mapping/GoodsMapper.xml b/back-end_code/src/main/resources/mapping/GoodsMapper.xml index 5709cc0..d557517 100644 --- a/back-end_code/src/main/resources/mapping/GoodsMapper.xml +++ b/back-end_code/src/main/resources/mapping/GoodsMapper.xml @@ -149,4 +149,9 @@ select * from goods where goodsName like '%${key_name}%' + + + \ No newline at end of file -- Gitee From fc201bc795a852faf1093111d7d1bdbe130e9863 Mon Sep 17 00:00:00 2001 From: WenZongX <2937021973@qq.com> Date: Tue, 16 Nov 2021 11:17:47 +0800 Subject: [PATCH 007/133] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=BF=94=E5=9B=9Emes?= =?UTF-8?q?sage=E7=9A=84bug=20=E4=BF=AE=E5=A4=8D=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=84=8F=E5=90=91=E4=B9=B0=E5=AE=B6=E5=B0=B1=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E7=9A=84=E9=80=BB=E8=BE=91bug=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=B7=BB=E5=8A=A0=E6=84=8F=E5=90=91=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E6=9C=AA=E6=B7=BB=E5=8A=A0=E4=B9=B0=E5=AE=B6=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=90=8Dbug=20=E4=BF=AE=E5=A4=8D=E6=B7=BB=E5=8A=A0=E6=84=8F?= =?UTF-8?q?=E5=90=91=E4=B9=B0=E5=AE=B6=E6=9C=AA=E4=BC=A0=E6=94=B6=E8=B4=A7?= =?UTF-8?q?=E4=BA=BA=E4=BF=A1=E6=81=AF=E8=80=8C=E5=AF=BC=E8=87=B4=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=89=A7=E8=A1=8Cbug=20=E4=BF=AE=E5=A4=8D=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=95=86=E5=93=81=E7=8A=B6=E6=80=81=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=90=8Dbug=20=E4=BF=AE=E5=A4=8D=E5=90=8C=E6=84=8F=E6=84=8F?= =?UTF-8?q?=E5=90=91=E4=B9=B0=E5=AE=B6=E6=93=8D=E4=BD=9Cbug(=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E5=85=B6=E4=BB=96=E5=95=86=E5=93=81=E8=AE=A2=E5=8D=95?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/ClassController.java | 7 ++- .../com/shop/controller/GOController.java | 11 ++-- .../com/shop/controller/GoodsController.java | 58 +++++++++++++------ .../com/shop/controller/OrderController.java | 44 ++++++++------ .../com/shop/controller/UserController.java | 9 ++- .../java/com/shop/mapper/GoodsMapper.java | 4 +- .../java/com/shop/service/GoodsService.java | 6 +- .../java/com/shop/service/OrderService.java | 25 +++----- .../main/resources/mapping/GoodsMapper.xml | 21 +++++-- .../main/resources/mapping/OrderMapper.xml | 6 ++ 10 files changed, 119 insertions(+), 72 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/ClassController.java b/back-end_code/src/main/java/com/shop/controller/ClassController.java index acfe5fe..c833e57 100644 --- a/back-end_code/src/main/java/com/shop/controller/ClassController.java +++ b/back-end_code/src/main/java/com/shop/controller/ClassController.java @@ -16,14 +16,13 @@ import java.util.List; @RequestMapping("/class") public class ClassController { - private String message = "error"; - @Autowired private ClassService ClassService; //添加类别 @RequestMapping(value = "/addClass") public Object addClass(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String class_name = request.getParameter("class_name"); int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); JSONObject jsonObject = new JSONObject(); @@ -40,6 +39,7 @@ public class ClassController { //查询父类别 @RequestMapping(value = "/searchParentClass") public Object searchParentClass(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; JSONObject jsonObject = new JSONObject(); List classList = ClassService.searchParentClass(); if(classList != null){ @@ -55,6 +55,7 @@ public class ClassController { //根据parentClass_id查询子类别 @RequestMapping(value = "/searchChildClass") public Object searchChildClass(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); JSONObject jsonObject = new JSONObject(); List classList = ClassService.searchChildClass(parentClass_id); @@ -71,6 +72,7 @@ public class ClassController { //根据classId删除Class @RequestMapping(value = "/deleteClassByItemId") public Object deleteClassByItemId(HttpServletRequest request, HttpServletResponse response) { + String message = "error"; int class_id = Integer.parseInt(request.getParameter("class_id")); JSONObject jsonObject = new JSONObject(); int result = ClassService.deleteClassByItemId(class_id); @@ -84,6 +86,7 @@ public class ClassController { //根据classId修改Class @RequestMapping(value = "/updateClass") public Object updateClass(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; JSONObject jsonObject = new JSONObject(); int class_id = Integer.parseInt(request.getParameter("class_id")); String class_name = request.getParameter("class_name"); diff --git a/back-end_code/src/main/java/com/shop/controller/GOController.java b/back-end_code/src/main/java/com/shop/controller/GOController.java index de5ba9f..ffb45d1 100644 --- a/back-end_code/src/main/java/com/shop/controller/GOController.java +++ b/back-end_code/src/main/java/com/shop/controller/GOController.java @@ -20,20 +20,19 @@ import javax.servlet.http.HttpServletResponse; @RequestMapping("/go") public class GOController { - private String message = "error"; - @Autowired private GOService GOService; @RequestMapping(value = "/addGO") public Object addGO(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); int result = GOService.addGO(item_id,order_id); if(result>=1){ message = "success"; - } else{ + }else { message = "error"; } jsonObject.put("message",message); @@ -41,6 +40,7 @@ public class GOController { } @RequestMapping(value = "/searchGOByItemId") public Object searchGOByItemId(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); // int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); @@ -48,7 +48,7 @@ public class GOController { if(go != null){ message = "success"; jsonObject.put("GO",go); - } else{ + }else { message = "error"; } jsonObject.put("message",message); @@ -57,6 +57,7 @@ public class GOController { //@RequestMapping(value = "/searchGOByItemId") public Object searchGOByOrderId(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; // int item_id = Integer.parseInt(request.getParameter("item_id")); int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); @@ -64,7 +65,7 @@ public class GOController { if(go != null){ message = "success"; jsonObject.put("GO",go); - } else{ + }else { message = "error"; } jsonObject.put("message",message); diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 0b0942d..c2d4866 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -25,7 +25,6 @@ import java.util.List; @RequestMapping("/goods") public class GoodsController { - private String message = "error"; @Autowired private GoodsService goodsService; @@ -42,6 +41,7 @@ public class GoodsController { //向Goods表中添加商品 @RequestMapping(value = "/addGoods") public Object addGoods(HttpServletRequest request, HttpServletResponse response) { + String message = "error"; String goods_name = request.getParameter("goods_name"); String seller_username = "admin"; int goods_stock = Integer.parseInt(request.getParameter("goods_stock")); @@ -74,6 +74,7 @@ public class GoodsController { //买家在goods表中查询goods详细信息 @RequestMapping(value = "/searchGoods") public Object searchGoods(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); JSONObject jsonObject = new JSONObject(); Goods good = goodsService.searchGoods(item_id); @@ -91,11 +92,12 @@ public class GoodsController { //修改商品状态 @RequestMapping(value = "/updateGoodsState") public Object updateGoodsState(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); int item_id = Integer.parseInt(request.getParameter("item_id")); - int newstate = Integer.parseInt(request.getParameter("newstate")); + int new_state = Integer.parseInt(request.getParameter("new_state")); JSONObject jsonObject = new JSONObject(); - int result = goodsService.updateGoodsState(seller_username,item_id, newstate); + int result = goodsService.updateGoodsState(seller_username,item_id, new_state); if (result >= 1) { message = "success"; }else { @@ -105,9 +107,10 @@ public class GoodsController { return jsonObject; } - //在goods表中查找所有正在出售的商品。 + //在goods表中查找所有正在出售的商品 @RequestMapping(value = "/searchSellingGoods") public Object searchSellingGoods(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; JSONObject jsonObject = new JSONObject(); List goods= goodsService.searchSellingGoods(); message = "success"; @@ -119,6 +122,7 @@ public class GoodsController { //在goods表中查找所有正在出售的商品。 @RequestMapping(value = "/searchWelcomeGoods") public Object searchWelcomeGoods(){ + String message = "error"; JSONObject jsonObject = new JSONObject(); List goods = goodsService.searchWelcomeGoods(); List stringList = orderService.searchSellingGoodsBuyerRealname(); @@ -132,6 +136,7 @@ public class GoodsController { //在goods表中查询所有商品 @RequestMapping(value = "/searchHistoryGoods") public Object searchHistoryGoods(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); JSONObject jsonObject = new JSONObject(); List goodsList = goodsService.searchHistoryGoods(seller_username); @@ -166,6 +171,7 @@ public class GoodsController { //修改商品信息 @RequestMapping(value = "/updateGoods") public Object updateGoods(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); String goods_name = request.getParameter("goods_name"); String seller_username = "admin"; @@ -176,12 +182,20 @@ public class GoodsController { int goods_class = Integer.parseInt(request.getParameter("goods_class")); float goods_price = Float.parseFloat(request.getParameter("goods_price")); JSONObject jsonObject = new JSONObject(); - Goods newgoods = new Goods(item_id,goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_class,goods_price); - int result = goodsService.updateGoods(newgoods); - if (result >= 1) { - message = "success"; - }else { - message = "error"; + if (goods_name.length() >= 2 && goods_name.length() <= 20 && + goods_stock >= 0 && + goods_img.length() <= 2000 && + goods_discribe.length() >= 2 && goods_discribe.length() <= 2000 && + goods_price >= 0 && + goods_class >= 0 + ){ + Goods newgoods = new Goods(item_id,goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_class,goods_price); + int result = goodsService.updateGoods(newgoods); + if (result >= 1) { + message = "success"; + }else { + message = "error"; + } } jsonObject.put("message",message); return jsonObject; @@ -190,6 +204,7 @@ public class GoodsController { //查看冻结商品 @RequestMapping(value = "/searchFreezingGoods") public Object searchFreezingGoods(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); JSONObject jsonObject = new JSONObject(); List goodsList = goodsService.searchFreezingGoods(seller_username); @@ -219,7 +234,9 @@ public class GoodsController { //通过类别查询商品 @RequestMapping(value = "/searchGoodsByClass") public Object searchGoodsByClass(HttpServletRequest request, HttpServletResponse response){ - int goods_class = Integer.getInteger(request.getParameter("goods_class")); + String message = "error"; + int goods_class = Integer.parseInt(request.getParameter("goods_class")); + System.out.println(goods_class); JSONObject jsonObject = new JSONObject(); List goodsList =goodsService.searchGoodsByClass(goods_class); message = "success"; @@ -231,6 +248,7 @@ public class GoodsController { //通过关键词查询商品 @RequestMapping(value = "/searchGoodsByKeyName") public Object searchGoodsByKeyName(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String key_name = request.getParameter("key_name"); JSONObject jsonObject = new JSONObject(); List goodsList =goodsService.searchGoodsByKeyName(key_name); @@ -243,10 +261,11 @@ public class GoodsController { //通过类别和关键词查询商品 @RequestMapping(value = "/searchGoodsByClassAndKeyName") public Object searchGoodsByClassAndKeyName(HttpServletRequest request, HttpServletResponse response){ - int goods_class = Integer.getInteger(request.getParameter("goods_class")); + String message = "error"; + int goods_class = Integer.parseInt(request.getParameter("goods_class")); String key_name = request.getParameter("key_name"); JSONObject jsonObject = new JSONObject(); - List goodsList =goodsService.searchGoodsByClassAndKeyName(goods_class,key_name); + List goodsList = goodsService.searchGoodsByClassAndKeyName(goods_class,key_name); message = "success"; jsonObject.put("goods",goodsList); jsonObject.put("message",message); @@ -256,18 +275,21 @@ public class GoodsController { //修改商品库存 @RequestMapping(value = "/updateGoodStock") public Object updateGoodStock(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); int new_stock = Integer.parseInt(request.getParameter("new_stock")); Goods good = goodsService.searchGoods(item_id); + JSONObject jsonObject = new JSONObject(); + System.out.println(message); if (new_stock > 0 ){ goodsService.updateGoodsState(good.getSeller_username(),item_id,1); - }else if (new_stock <= 0){ + message = "success"; + goodsService.updateGoodStock(item_id,new_stock); + }else if (new_stock == 0){ goodsService.updateGoodsState(good.getSeller_username(),item_id,3); + message = "success"; + goodsService.updateGoodStock(item_id,new_stock); } - goodsService.updateGoodStock(item_id,new_stock); - JSONObject jsonObject = new JSONObject(); - goodsService.updateGoodStock(item_id,new_stock); - message = "success"; jsonObject.put("message",message); return jsonObject; } diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 38740cd..9bc488b 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -25,8 +25,6 @@ import java.util.List; @RequestMapping("/order") public class OrderController { - private String message = "error"; - @Autowired private UserService userService; @@ -42,6 +40,7 @@ public class OrderController { //查看商品意向购买买家 @RequestMapping(value = "/searchBuyerlist") public Object searchBuyerlist(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); int item_id = Integer.parseInt(request.getParameter("item_id")); JSONObject jsonObject = new JSONObject(); @@ -55,11 +54,12 @@ public class OrderController { //查看商品意向购买买家名 @RequestMapping(value = "/searchSellingGoodsBuyerRealname") public Object searchSellingGoodsBuyerRealname(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); JSONObject jsonObject = new JSONObject(); List stringList = orderService.searchSellingGoodsBuyerRealname(); message = "success"; - jsonObject.put("stringList",stringList); + jsonObject.put("strings",stringList); jsonObject.put("message",message); return jsonObject; } @@ -67,6 +67,7 @@ public class OrderController { //查看交易中的某商品对应的订单信息 @RequestMapping(value = "/searchFreezeGoodsBuyer") public Object searchFreezeGoodsBuyer(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); int item_id = Integer.parseInt(request.getParameter("item_id")); JSONObject jsonObject = new JSONObject(); @@ -84,19 +85,21 @@ public class OrderController { //查看已完成交易商品的历史意向买家 @RequestMapping(value = "/searchHistoryGoodsUnFinishedOrder") public Object searchHistoryGoodsUnFinishedOrder(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); int item_id = Integer.parseInt(request.getParameter("item_id")); JSONObject jsonObject = new JSONObject(); List orderList = orderService.searchHistoryGoodsUnFinishedOrder(seller_username,item_id); message = "success"; jsonObject.put("message",message); - jsonObject.put("orderList",orderList); + jsonObject.put("orders",orderList); return jsonObject; } //同意意向买家 @RequestMapping(value = "/agreeOrderwanted") public Object agreeOrderwanted(HttpServletRequest request, HttpServletResponse response) { + String message = "error"; String seller_username = request.getParameter("seller_username"); int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); @@ -118,11 +121,12 @@ public class OrderController { //完成交易(下架) @RequestMapping(value = "/finishOrder") public Object finishOrder(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); - int item_id = Integer.parseInt(request.getParameter("item_id")); + int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); String finish_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - int result = orderService.finishOrder(seller_username,item_id,finish_time); + int result = orderService.finishOrder(seller_username,order_id,finish_time); if (result >=1){ message = "success"; }else { @@ -135,11 +139,12 @@ public class OrderController { //取消交易(恢复) @RequestMapping(value = "/cancelOrder") public Object cancelOrder(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); - int item_id = Integer.parseInt(request.getParameter("item_id")); + int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); - goService.deleteGOByItemId(item_id); - int result = orderService.cancelOrder(seller_username,item_id); + goService.deleteGOByOrderId(order_id); + int result = orderService.cancelOrder(seller_username,order_id); if (result >=1){ message = "success"; }else { @@ -153,6 +158,7 @@ public class OrderController { //意向购买者下单 @RequestMapping(value = "/addToOrderWanted") public Object addToOrderWanted(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); Goods good = goodsService.searchGoods(item_id); String seller_username = good.getSeller_username(); @@ -161,10 +167,16 @@ public class OrderController { String buyer_realname = request.getParameter("buyer_realname"); String buyer_phonenumber = request.getParameter("buyer_phonenumber"); String buyer_address = request.getParameter("buyer_address"); -// String buyer_realname = user.getRealname(); -// String buyer_phonenumber = user.getPhonenumber(); -// String buyer_address = user.getAddress(); - int buy_sum = Integer.getInteger(request.getParameter("buy_sum")); + if (buyer_realname == null){ + buyer_realname = user.getRealname(); + } + if (buyer_phonenumber == null){ + buyer_phonenumber = user.getPhonenumber(); + } + if (buyer_address == null){ + buyer_address = user.getAddress(); + } + int buy_sum = Integer.parseInt(request.getParameter("buy_sum")); String create_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); JSONObject jsonObject = new JSONObject(); Order order = new Order(item_id,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,5,create_time); @@ -175,15 +187,15 @@ public class OrderController { }else { message = "error"; } - } jsonObject.put("message",message); return jsonObject; } //根据用户名查看历史购买记录 - @RequestMapping("/searchFinishOrderByBuyerName") + @RequestMapping("/searchFinishOrderByBuyerUserName") public Object searchFinishOrderByBuyerName(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String buyer_username = request.getParameter("buyer_username"); JSONObject jsonObject = new JSONObject(); List orderList = orderService.searchFinishOrderByBuyerName(buyer_username); @@ -192,6 +204,4 @@ public class OrderController { jsonObject.put("message",message); return jsonObject; } - - } diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index 2a240a8..aa12079 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -26,8 +26,6 @@ import java.util.Map; @CrossOrigin public class UserController { - private String message = "error"; - @Autowired private UserService userService; @Autowired @@ -36,6 +34,7 @@ public class UserController { //登录验证账号密码 @RequestMapping(value = "/login") public Object loginByPassword(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String username = request.getParameter("username"); String password = request.getParameter("password"); JSONObject jsonObject = new JSONObject(); @@ -58,6 +57,7 @@ public class UserController { //获取用户信息 @RequestMapping(value = "/getUserInfo") public Object getUserInfo(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String username = request.getParameter("username"); JSONObject jsonObject = new JSONObject(); User user = userService.getUserInfo(username); @@ -68,6 +68,7 @@ public class UserController { //修改密码 @RequestMapping(value = "/updatePassword") public Object updatePasswordByUsername(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String username = request.getParameter("username"); String oldPassword = request.getParameter("oldPassword"); String newPassword = request.getParameter("newPassword"); @@ -90,6 +91,7 @@ public class UserController { @UserLoginToken @RequestMapping("/getMessage") public Object getMessage(){ + String message = "error"; message = "success"; JSONObject jsonObject = new JSONObject(); jsonObject.put("message",message); @@ -99,6 +101,7 @@ public class UserController { //用户注册 @RequestMapping(value = "/registerUser") public Object registerUser(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String username = request.getParameter("username"); String password = request.getParameter("password"); String nickname = request.getParameter("nickname"); @@ -120,6 +123,7 @@ public class UserController { //用户修改个人信息 @RequestMapping(value = "/updateUser") public Object updateUser(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String username = request.getParameter("username"); String nickname = request.getParameter("nickname"); String realname = request.getParameter("realname"); @@ -139,6 +143,7 @@ public class UserController { //卖家查看买家信息 @RequestMapping(value = "/searchAllUser") public Object searchAllUser(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; JSONObject jsonObject = new JSONObject(); List UserList = userService.searchAllUser(); message = "success"; diff --git a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java index f777990..e550cfc 100644 --- a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java @@ -25,10 +25,10 @@ public interface GoodsMapper { * 根据item_id(商品ID),newstate(商品状态)向Goods表中更新商品状态信息 * @param seller_username * @param item_id - * @param newstate + * @param new_state * @return */ - int updateGoodsState(String seller_username,int item_id,int newstate); + int updateGoodsState(String seller_username,int item_id,int new_state); /** *根据username查找此用户是否有正在出售的商品 diff --git a/back-end_code/src/main/java/com/shop/service/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java index dabb988..f74aed6 100644 --- a/back-end_code/src/main/java/com/shop/service/GoodsService.java +++ b/back-end_code/src/main/java/com/shop/service/GoodsService.java @@ -16,9 +16,7 @@ public class GoodsService { return goodsMapper.addGoods(Goods); } public Goods searchGoods(int item_id){ return goodsMapper.searchGoods(item_id); } - public int updateGoodsState(String seller_username,int item_id,int newstate){ - return goodsMapper.updateGoodsState(seller_username,item_id, newstate); - } + public int updateGoodsState(String seller_username,int item_id,int new_state){return goodsMapper.updateGoodsState(seller_username,item_id, new_state);} public List searchSellingGoods(){return goodsMapper.searchSellingGoods();}//一页8条 public List searchFreezingGoods(String seller_username){return goodsMapper.searchFreezingGoods(seller_username);}//一页10条 public List searchHistoryGoods(String seller_username){ return goodsMapper.searchHistoryGoods(seller_username);}//一页10条 @@ -44,5 +42,5 @@ public class GoodsService { // return goodsMapper.updateGoodStock(item_id,new_stock); // } public int updateGoodStock(int item_id,int new_stock){return goodsMapper.updateGoodStock(item_id,new_stock);} - public List searchGoodsByClassAndKeyName(int goods_class,String key_name){return searchGoodsByClassAndKeyName(goods_class,key_name);} + public List searchGoodsByClassAndKeyName(int goods_class,String key_name){return goodsMapper.searchGoodsByClassAndKeyName(goods_class,key_name);} } diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index 05d4212..240f5bc 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -45,8 +45,12 @@ public class OrderService { public Order agreeOrderwanted(String seller_username,int order_id){ int result = orderMapper.agreeOrderwanted(seller_username,order_id); Order order = orderMapper.searchOrderByOrderId(seller_username,order_id); - orderMapper.updateOtherOrders(seller_username,order.getItem_id()); - goodsMapper.updateGoodsState(seller_username,order.getItem_id(),2); + Goods good = goodsMapper.searchGoods(order.getItem_id()); + int new_stock = good.getGoods_stock()-order.getBuy_sum(); + goodsMapper.updateGoodStock(order.getItem_id(),new_stock); + if (new_stock == 0){ + goodsMapper.updateGoodsState(order.getSeller_username(),order.getItem_id(),3); + } return order; } public List searchSellingGoodsBuyerRealname(){ @@ -61,11 +65,7 @@ public class OrderService { public List searchHistoryGoodsUnFinishedOrder(String seller_username,int item_id){ return orderMapper.searchHistoryGoodsUnFinishedOrder(seller_username,item_id); } - public int finishOrder(String seller_username,int item_id,String finish_time){ - int result = orderMapper.finishOrder(seller_username,item_id,finish_time); - goodsMapper.updateGoodsState(seller_username,item_id,3); - return result; - } + public int finishOrder(String seller_username,int item_id,String finish_time){ return orderMapper.finishOrder(seller_username,item_id,finish_time); } public Order searchOrderByOrderId(String seller_username,int order_id){return orderMapper.searchOrderByOrderId(seller_username,order_id);} public List searchFinishOrder(String seller_username,int page){return orderMapper.searchFinishOrder(seller_username,page);} public List searchDealingOrder(String seller_username,int page){return orderMapper.searchDealingOrder(seller_username,page);} @@ -80,15 +80,6 @@ public class OrderService { } return result; } - public int addToOrderWanted(Order order){ - Goods good = goodsMapper.searchGoods(order.getItem_id()); - int new_stock = good.getGoods_stock()-order.getBuy_sum(); - goodsMapper.updateGoodStock(order.getItem_id(),new_stock); - if (new_stock == 0){ - goodsMapper.updateGoodsState(order.getSeller_username(),order.getItem_id(),3); - } - int result = orderMapper.addToOrderWanted(order); - return result; - } + public int addToOrderWanted(Order order){return orderMapper.addToOrderWanted(order); } public List searchFinishOrderByBuyerName(String buyer_username){return orderMapper.searchFinishOrderByBuyerName(buyer_username);} } diff --git a/back-end_code/src/main/resources/mapping/GoodsMapper.xml b/back-end_code/src/main/resources/mapping/GoodsMapper.xml index d557517..1096c23 100644 --- a/back-end_code/src/main/resources/mapping/GoodsMapper.xml +++ b/back-end_code/src/main/resources/mapping/GoodsMapper.xml @@ -107,8 +107,8 @@ update goods - - goodsState = #{newstate,jdbcType=INTEGER}, + + goodsState = #{new_state,jdbcType=INTEGER}, where itemId = #{item_id,jdbcType=INTEGER} @@ -141,17 +141,28 @@ + + + update goods + + + goodsStock = #{new_stock,jdbcType=INTEGER}, + + + where itemId = #{item_id,jdbcType=INTEGER} + + \ No newline at end of file diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 2534599..238afb9 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -81,6 +81,9 @@ sellerUsername, + + buyerUsername, + buyerRealname, @@ -108,6 +111,9 @@ #{seller_username,jdbcType=VARCHAR}, + + #{buyer_username,jdbcType=VARCHAR}, + #{buyer_realname,jdbcType=VARCHAR}, -- Gitee From 73b3b42aa224cd19aaef353ecab1dd22b4a19f29 Mon Sep 17 00:00:00 2001 From: WenZongX <2937021973@qq.com> Date: Tue, 16 Nov 2021 11:20:44 +0800 Subject: [PATCH 008/133] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\345\217\243\346\226\207\346\241\243.pdf" | Bin 158632 -> 252916 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git "a/\346\216\245\345\217\243\346\226\207\346\241\243.pdf" "b/\346\216\245\345\217\243\346\226\207\346\241\243.pdf" index a85856fab8b0b3efc6aa51fb96dc4d7b84ee3773..7c382e7a6747c7bc70e9001f748d8c5ea98e7c93 100644 GIT binary patch literal 252916 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 oe*D)jzx`3){QVz({OOOs{_~f6-#Pc)ci*3x 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

tc@1j6u*ZxiDB%9|)+U{TEv$ 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 Z;F4S*7vwW^M*v%dCYHQhs;aL3ZUEWNH2VMm -- Gitee From e4262b141606b1a16c143462628a25508dc6552f Mon Sep 17 00:00:00 2001 From: WenZongX <2937021973@qq.com> Date: Mon, 22 Nov 2021 15:31:42 +0800 Subject: [PATCH 009/133] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E5=8F=A3=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E8=BF=9B=E8=A1=8C=E6=A0=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\345\217\243\346\226\207\346\241\243.pdf" | Bin 252916 -> 534103 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git "a/\346\216\245\345\217\243\346\226\207\346\241\243.pdf" "b/\346\216\245\345\217\243\346\226\207\346\241\243.pdf" index 7c382e7a6747c7bc70e9001f748d8c5ea98e7c93..0c35d559f8fc3aa8d5baf6f876c51c316cd17ef9 100644 GIT binary patch literal 534103 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�Ay$1Z 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 z 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 i{g?BwU;px(Z-4cR@BhsgUXZssA6~aR(j% -- Gitee From c279acf15dc2657140f9c03d16705cb48063f397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B9=E5=AE=97?= <2937021973@qq.com> Date: Wed, 24 Nov 2021 01:41:59 +0000 Subject: [PATCH 010/133] =?UTF-8?q?!6=20=E4=BF=AE=E5=A4=8D=E7=BC=BA?= =?UTF-8?q?=E9=99=B7=20*=20=E5=88=A0=E9=99=A4=E6=B5=8B=E8=AF=95=20*=20?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B5=8B=E8=AF=95=20*=20=E5=9C=A8Goods?= =?UTF-8?q?=E7=B1=BB=E4=B8=AD=E6=B7=BB=E5=8A=A0=E4=BA=86=E6=80=BB=E9=87=91?= =?UTF-8?q?=E9=A2=9Dfloat=E7=B1=BB=E5=9E=8B=20*=20=E3=80=82=E3=80=82=20*?= =?UTF-8?q?=20add=20back-end=5Fcode/src/Test.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/OrderController.java | 7 +++++- .../src/main/java/com/shop/entity/Order.java | 22 +++++++++++++++++++ .../main/resources/mapping/OrderMapper.xml | 7 ++++++ .../shop/service/ServiceApplicationTests.java | 13 ----------- 4 files changed, 35 insertions(+), 14 deletions(-) delete mode 100644 back-end_code/src/test/java/com/shop/service/ServiceApplicationTests.java diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 9bc488b..56e074f 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -177,9 +177,14 @@ public class OrderController { buyer_address = user.getAddress(); } int buy_sum = Integer.parseInt(request.getParameter("buy_sum")); + float buy_amount; + if (buy_sum*good.getGoods_price() == Float.parseFloat(request.getParameter("buy_amount"))){ + buy_amount = Float.parseFloat(request.getParameter("buy_amount")); + }else + buy_amount = buy_sum*good.getGoods_price(); String create_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); JSONObject jsonObject = new JSONObject(); - Order order = new Order(item_id,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,5,create_time); + Order order = new Order(item_id,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,buy_amount,5,create_time); if (buyer_phonenumber.length() == 11 && buyer_address.length() >= 2 && buyer_address.length() <= 100 && good.getGoods_stock() >= buy_sum){ int result = orderService.addToOrderWanted(order); if (result >=1){ diff --git a/back-end_code/src/main/java/com/shop/entity/Order.java b/back-end_code/src/main/java/com/shop/entity/Order.java index 8536312..e8384ac 100644 --- a/back-end_code/src/main/java/com/shop/entity/Order.java +++ b/back-end_code/src/main/java/com/shop/entity/Order.java @@ -9,6 +9,7 @@ public class Order { private String buyer_phonenumber; private String buyer_address; private int buy_sum; + private float buy_amount; private int state;//int,1表示进行中,2表示交易成功,3表示买家退款,4表示卖家关闭交易,5表示申请中 private String create_time; private String finish_time; @@ -17,6 +18,27 @@ public class Order { super(); } + public float getBuy_amount() { + return buy_amount; + } + + public void setBuy_amount(float buy_amount) { + this.buy_amount = buy_amount; + } + + public Order(int item_id, String seller_username, String buyer_username, String buyer_realname, String buyer_phonenumber, String buyer_address, int buy_sum, float buy_amount, int state, String create_time) { + this.item_id = item_id; + this.seller_username = seller_username; + this.buyer_username = buyer_username; + this.buyer_realname = buyer_realname; + this.buyer_phonenumber = buyer_phonenumber; + this.buyer_address = buyer_address; + this.buy_sum = buy_sum; + this.buy_amount = buy_amount; + this.state = state; + this.create_time = create_time; + } + public Order(int order_id, int item_id, String seller_username, String buyer_username, String buyer_realname, String buyer_phonenumber, String buyer_address, int buy_sum, int state, String create_time, String finish_time) { this.order_id = order_id; this.item_id = item_id; diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 238afb9..2c5140e 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -10,6 +10,7 @@ + @@ -96,6 +97,9 @@ buySum, + + buyAmount, + state, @@ -126,6 +130,9 @@ #{buy_sum ,jdbcType=INTEGER}, + + #{buy_amount ,jdbcType=REAL}, + #{state ,jdbcType=INTEGER}, diff --git a/back-end_code/src/test/java/com/shop/service/ServiceApplicationTests.java b/back-end_code/src/test/java/com/shop/service/ServiceApplicationTests.java deleted file mode 100644 index ac56d4a..0000000 --- a/back-end_code/src/test/java/com/shop/service/ServiceApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.shop.service; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class ServiceApplicationTests { - - @Test - void contextLoads() { - } - -} -- Gitee From cfe98370b1aaed13f551a4adc6ead826e0f502de Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 27 Nov 2021 14:37:15 +0800 Subject: [PATCH 011/133] =?UTF-8?q?=E5=B0=86=E7=B1=BBclass=E6=94=B9?= =?UTF-8?q?=E6=88=90category?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ontroller.java => CategoryController.java} | 73 +++++++++---------- .../main/java/com/shop/entity/Category.java | 40 ++++++++++ .../src/main/java/com/shop/entity/Class.java | 49 ------------- .../{ClassMapper.java => CategoryMapper.java} | 31 ++++---- .../com/shop/service/CategoryService.java | 20 +++++ .../java/com/shop/service/ClassService.java | 22 ------ .../main/resources/mapping/CategoryMapper.xml | 63 ++++++++++++++++ .../main/resources/mapping/ClassMapper.xml | 63 ---------------- 8 files changed, 174 insertions(+), 187 deletions(-) rename back-end_code/src/main/java/com/shop/controller/{ClassController.java => CategoryController.java} (41%) create mode 100644 back-end_code/src/main/java/com/shop/entity/Category.java delete mode 100644 back-end_code/src/main/java/com/shop/entity/Class.java rename back-end_code/src/main/java/com/shop/mapper/{ClassMapper.java => CategoryMapper.java} (34%) create mode 100644 back-end_code/src/main/java/com/shop/service/CategoryService.java delete mode 100644 back-end_code/src/main/java/com/shop/service/ClassService.java create mode 100644 back-end_code/src/main/resources/mapping/CategoryMapper.xml delete mode 100644 back-end_code/src/main/resources/mapping/ClassMapper.xml diff --git a/back-end_code/src/main/java/com/shop/controller/ClassController.java b/back-end_code/src/main/java/com/shop/controller/CategoryController.java similarity index 41% rename from back-end_code/src/main/java/com/shop/controller/ClassController.java rename to back-end_code/src/main/java/com/shop/controller/CategoryController.java index c833e57..9bf433f 100644 --- a/back-end_code/src/main/java/com/shop/controller/ClassController.java +++ b/back-end_code/src/main/java/com/shop/controller/CategoryController.java @@ -1,11 +1,10 @@ package com.shop.controller; -import com.shop.entity.Class; -import com.shop.service.ClassService; +import com.shop.entity.Category; +import com.shop.service.CategoryService; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -13,20 +12,20 @@ import java.util.List; @RestController -@RequestMapping("/class") -public class ClassController { +@RequestMapping("/category") +public class CategoryController { @Autowired - private ClassService ClassService; + private CategoryService CategoryService; //添加类别 - @RequestMapping(value = "/addClass") - public Object addClass(HttpServletRequest request, HttpServletResponse response){ + @PostMapping(value = "/addCategory") + public Object addCategory(@RequestBody Category category){ String message = "error"; - String class_name = request.getParameter("class_name"); - int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); + String category_name = category.getCategory_name(); + int parentCategory_id = category.getParentCategory_id(); JSONObject jsonObject = new JSONObject(); - int result = ClassService.addClass(class_name,parentClass_id); + int result = CategoryService.addCategory(category_name,parentCategory_id); if(result>=1){ message = "success"; } else{ @@ -37,14 +36,14 @@ public class ClassController { } //查询父类别 - @RequestMapping(value = "/searchParentClass") - public Object searchParentClass(HttpServletRequest request, HttpServletResponse response){ + @GetMapping(value = "/searchParentCategory") + public Object searchParentCategory(){ String message = "error"; JSONObject jsonObject = new JSONObject(); - List classList = ClassService.searchParentClass(); - if(classList != null){ + List categoryList = CategoryService.searchParentCategory(); + if(categoryList != null){ message = "success"; - jsonObject.put("classs",classList); + jsonObject.put("categorys", categoryList); } else{ message = "error"; } @@ -52,16 +51,16 @@ public class ClassController { return jsonObject; } - //根据parentClass_id查询子类别 - @RequestMapping(value = "/searchChildClass") - public Object searchChildClass(HttpServletRequest request, HttpServletResponse response){ + //根据parentCategory_id查询子类别 + @GetMapping(value = "/searchChildCategory") + public Object searchChildCategory(HttpServletRequest request, HttpServletResponse response){ String message = "error"; - int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); + int parentCategory_id = Integer.parseInt(request.getParameter("parentCategory_id")); JSONObject jsonObject = new JSONObject(); - List classList = ClassService.searchChildClass(parentClass_id); - if(classList != null){ + List categoryList = CategoryService.searchChildCategory(parentCategory_id); + if(categoryList != null){ message = "success"; - jsonObject.put("classs",classList); + jsonObject.put("categorys", categoryList); } else{ message = "error"; } @@ -69,13 +68,13 @@ public class ClassController { return jsonObject; } - //根据classId删除Class - @RequestMapping(value = "/deleteClassByItemId") - public Object deleteClassByItemId(HttpServletRequest request, HttpServletResponse response) { + //根据categoryId删除Category + @DeleteMapping(value = "/deleteCategoryByItemId") + public Object deleteCategoryByItemId(HttpServletRequest request, HttpServletResponse response) { String message = "error"; - int class_id = Integer.parseInt(request.getParameter("class_id")); + int category_id = Integer.parseInt(request.getParameter("category_id")); JSONObject jsonObject = new JSONObject(); - int result = ClassService.deleteClassByItemId(class_id); + int result = CategoryService.deleteCategoryByItemId(category_id); if (result >= 1){ message = "success"; } @@ -83,16 +82,16 @@ public class ClassController { return jsonObject; } - //根据classId修改Class - @RequestMapping(value = "/updateClass") - public Object updateClass(HttpServletRequest request, HttpServletResponse response){ + //根据categoryId修改Category + @PutMapping(value = "/updateCategory") + public Object updateCategory(HttpServletRequest request, HttpServletResponse response){ String message = "error"; JSONObject jsonObject = new JSONObject(); - int class_id = Integer.parseInt(request.getParameter("class_id")); - String class_name = request.getParameter("class_name"); - int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); - Class Class = new Class(class_id,class_name,parentClass_id); - int result = ClassService.updateClass(Class); + int category_id = Integer.parseInt(request.getParameter("category_id")); + String category_name = request.getParameter("category_name"); + int parentCategory_id = Integer.parseInt(request.getParameter("parentCategory_id")); + Category Category = new Category(category_id,category_name,parentCategory_id); + int result = CategoryService.updateCategory(Category); if (result >= 1){ message = "success"; } diff --git a/back-end_code/src/main/java/com/shop/entity/Category.java b/back-end_code/src/main/java/com/shop/entity/Category.java new file mode 100644 index 0000000..304d0f2 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/Category.java @@ -0,0 +1,40 @@ +package com.shop.entity; + +public class Category { + private int category_id; + private String category_name; + private int parentCategory_id; + + public int getCategory_id() { + return category_id; + } + + public void setCategory_id(int category_id) { + this.category_id = category_id; + } + + public String getCategory_name() { + return category_name; + } + + public void setCategory_name(String category_name) { + this.category_name = category_name; + } + + public int getParentCategory_id() { + return parentCategory_id; + } + + public void setParentCategory_id(int parentCategory_id) { + this.parentCategory_id = parentCategory_id; + } + + public Category() { + } + + public Category(int category_id, String category_name, int parentCategory_id) { + this.category_id = category_id; + this.category_name = category_name; + this.parentCategory_id = parentCategory_id; + } +} diff --git a/back-end_code/src/main/java/com/shop/entity/Class.java b/back-end_code/src/main/java/com/shop/entity/Class.java deleted file mode 100644 index 5667578..0000000 --- a/back-end_code/src/main/java/com/shop/entity/Class.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.shop.entity; - -public class Class { - private int class_id; - private String class_name; - private int parentClass_id; - - @Override - public String toString() { - return "Class{" + - "class_id=" + class_id + - ", class_name='" + class_name + '\'' + - ", parentClass_id=" + parentClass_id + - '}'; - } - - public int getClass_id() { - return class_id; - } - - public void setClass_id(int class_id) { - this.class_id = class_id; - } - - public String getClass_name() { - return class_name; - } - - public void setClass_name(String class_name) { - this.class_name = class_name; - } - - public int getParentClass_id() { - return parentClass_id; - } - - public void setParentClass_id(int parentClass_id) { - this.parentClass_id = parentClass_id; - } - - public Class(int class_id, String class_name, int parentClass_id) { - this.class_id = class_id; - this.class_name = class_name; - this.parentClass_id = parentClass_id; - } - - public Class() { - } -} diff --git a/back-end_code/src/main/java/com/shop/mapper/ClassMapper.java b/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java similarity index 34% rename from back-end_code/src/main/java/com/shop/mapper/ClassMapper.java rename to back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java index adc8403..8e9b7d2 100644 --- a/back-end_code/src/main/java/com/shop/mapper/ClassMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java @@ -1,45 +1,44 @@ package com.shop.mapper; -import com.shop.entity.Class; -import com.shop.entity.GO; +import com.shop.entity.Category; import org.springframework.stereotype.Repository; import java.util.List; @Repository -public interface ClassMapper { +public interface CategoryMapper { /** * 添加类别 - * @param class_name - * @param parentClass_id + * @param category_name + * @param parentCategory_id * @return */ - int addClass(String class_name,int parentClass_id); + int addCategory(String category_name,int parentCategory_id); /** * 查询父类别 * @return */ - List searchParentClass(); + List searchParentCategory(); /** - * 根据parentClass_id查询子类别 - * @param parentClass_id + * 根据parentCategory_id查询子类别 + * @param parentCategory_id * @return */ - List searchChildClass(int parentClass_id); + List searchChildCategory(int parentCategory_id); /** - * 根据classId删除Class - * @param class_id + * 根据categoryId删除Category + * @param category_id * @return */ - int deleteClassByItemId(int class_id); + int deleteCategoryByItemId(int category_id); /** - * 根据classId修改Class - * @param Class + * 根据categoryId修改Category + * @param Category * @return */ - int updateClass(Class Class); + int updateCategory(Category Category); } diff --git a/back-end_code/src/main/java/com/shop/service/CategoryService.java b/back-end_code/src/main/java/com/shop/service/CategoryService.java new file mode 100644 index 0000000..034d8d1 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/CategoryService.java @@ -0,0 +1,20 @@ +package com.shop.service; + +import com.shop.entity.Category; +import com.shop.mapper.CategoryMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class CategoryService { + @Autowired + private CategoryMapper categoryMapper; + + public int addCategory(String category_name,int parentCategory_id){return categoryMapper.addCategory(category_name,parentCategory_id);} + public List searchParentCategory(){return categoryMapper.searchParentCategory();} + public List searchChildCategory(int parentCategory_id){return categoryMapper.searchChildCategory(parentCategory_id);} + public int deleteCategoryByItemId(int category_id){return categoryMapper.deleteCategoryByItemId(category_id);} + public int updateCategory(Category category){return categoryMapper.updateCategory(category);} +} diff --git a/back-end_code/src/main/java/com/shop/service/ClassService.java b/back-end_code/src/main/java/com/shop/service/ClassService.java deleted file mode 100644 index ee1994f..0000000 --- a/back-end_code/src/main/java/com/shop/service/ClassService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.shop.service; - -import com.shop.entity.Class; -import com.shop.entity.GO; -import com.shop.mapper.ClassMapper; -import com.shop.mapper.GOMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public class ClassService { - @Autowired - private ClassMapper classMapper; - - public int addClass(String class_name,int parentClass_id){return classMapper.addClass(class_name,parentClass_id);} - public List searchParentClass(){return classMapper.searchParentClass();} - public List searchChildClass(int parentClass_id){return classMapper.searchChildClass(parentClass_id);} - public int deleteClassByItemId(int class_id){return classMapper.deleteClassByItemId(class_id);} - public int updateClass(Class Class){return classMapper.updateClass(Class);} -} diff --git a/back-end_code/src/main/resources/mapping/CategoryMapper.xml b/back-end_code/src/main/resources/mapping/CategoryMapper.xml new file mode 100644 index 0000000..9d0e15f --- /dev/null +++ b/back-end_code/src/main/resources/mapping/CategoryMapper.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + insert into category + + + + categoryName, + + + parentCategoryId, + + + + + + + #{category_name,jdbcType=VARCHAR}, + + + #{parentCategory_id,jdbcType=INTEGER}, + + + + + + + + + + + + + delete from category where categoryId = #{category_id} + + + + + update category + + + categoryName = #{category_name,jdbcType=VARCHAR}, + + + parentCategoryId = #{parentCategory_id,jdbcType=INTEGER}, + + + where categoryId = #{category_id,jdbcType=INTEGER} + + + \ No newline at end of file diff --git a/back-end_code/src/main/resources/mapping/ClassMapper.xml b/back-end_code/src/main/resources/mapping/ClassMapper.xml deleted file mode 100644 index d216f90..0000000 --- a/back-end_code/src/main/resources/mapping/ClassMapper.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - insert into class - - - - className, - - - parentClassId, - - - - - - - #{class_name,jdbcType=VARCHAR}, - - - #{parentClass_id,jdbcType=INTEGER}, - - - - - - - - - - - - - delete from class where classId = #{class_id} - - - - - update class - - - className = #{class_name,jdbcType=VARCHAR}, - - - parentClassId = #{parentClass_id,jdbcType=INTEGER}, - - - where classId = #{class_id,jdbcType=INTEGER} - - - \ No newline at end of file -- Gitee From 4e14170a99514af59861358ac004022fee35799c Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 30 Nov 2021 20:58:55 +0800 Subject: [PATCH 012/133] =?UTF-8?q?1.=E5=B0=86category=E7=9A=84controller?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E6=88=90post,put,get=E7=AD=89=E5=BD=A2?= =?UTF-8?q?=E5=BC=8F=202.=E6=AF=8F=E4=B8=AA=E6=8E=A5=E5=8F=A3=E9=83=BD?= =?UTF-8?q?=E9=80=9A=E8=BF=87postman=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shop/controller/CategoryController.java | 21 +++++++++++-------- .../main/java/com/shop/entity/Category.java | 9 ++++++++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/CategoryController.java b/back-end_code/src/main/java/com/shop/controller/CategoryController.java index 9bf433f..44ed071 100644 --- a/back-end_code/src/main/java/com/shop/controller/CategoryController.java +++ b/back-end_code/src/main/java/com/shop/controller/CategoryController.java @@ -53,14 +53,13 @@ public class CategoryController { //根据parentCategory_id查询子类别 @GetMapping(value = "/searchChildCategory") - public Object searchChildCategory(HttpServletRequest request, HttpServletResponse response){ + public Object searchChildCategory(@RequestParam (defaultValue = "1") Integer parentCategory_id){ String message = "error"; - int parentCategory_id = Integer.parseInt(request.getParameter("parentCategory_id")); JSONObject jsonObject = new JSONObject(); List categoryList = CategoryService.searchChildCategory(parentCategory_id); if(categoryList != null){ message = "success"; - jsonObject.put("categorys", categoryList); + jsonObject.put("categories", categoryList); } else{ message = "error"; } @@ -70,13 +69,14 @@ public class CategoryController { //根据categoryId删除Category @DeleteMapping(value = "/deleteCategoryByItemId") - public Object deleteCategoryByItemId(HttpServletRequest request, HttpServletResponse response) { + public Object deleteCategoryByItemId(@RequestParam(defaultValue = "1") Integer category_id) { String message = "error"; - int category_id = Integer.parseInt(request.getParameter("category_id")); JSONObject jsonObject = new JSONObject(); int result = CategoryService.deleteCategoryByItemId(category_id); if (result >= 1){ message = "success"; + }else { + message = "error"; } jsonObject.put("message",message); return jsonObject; @@ -84,16 +84,19 @@ public class CategoryController { //根据categoryId修改Category @PutMapping(value = "/updateCategory") - public Object updateCategory(HttpServletRequest request, HttpServletResponse response){ + public Object updateCategory(@RequestBody Category category){ String message = "error"; JSONObject jsonObject = new JSONObject(); - int category_id = Integer.parseInt(request.getParameter("category_id")); - String category_name = request.getParameter("category_name"); - int parentCategory_id = Integer.parseInt(request.getParameter("parentCategory_id")); + int category_id = category.getCategory_id(); + String category_name = category.getCategory_name(); + int parentCategory_id = category.getParentCategory_id(); Category Category = new Category(category_id,category_name,parentCategory_id); + System.out.println(Category); int result = CategoryService.updateCategory(Category); if (result >= 1){ message = "success"; + }else { + message = "error"; } jsonObject.put("message",message); return jsonObject; diff --git a/back-end_code/src/main/java/com/shop/entity/Category.java b/back-end_code/src/main/java/com/shop/entity/Category.java index 304d0f2..d6002b7 100644 --- a/back-end_code/src/main/java/com/shop/entity/Category.java +++ b/back-end_code/src/main/java/com/shop/entity/Category.java @@ -37,4 +37,13 @@ public class Category { this.category_name = category_name; this.parentCategory_id = parentCategory_id; } + + @Override + public String toString() { + return "Category{" + + "category_id=" + category_id + + ", category_name='" + category_name + '\'' + + ", parentCategory_id=" + parentCategory_id + + '}'; + } } -- Gitee From 360932140819b17da39cfbbcefad6924c9a2e70b Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 30 Nov 2021 21:04:11 +0800 Subject: [PATCH 013/133] =?UTF-8?q?=E5=B0=86goods=E4=B8=AD=E5=90=AB?= =?UTF-8?q?=E6=9C=89class=E7=9A=84=E5=9C=B0=E6=96=B9=E6=94=B9=E6=88=90cate?= =?UTF-8?q?gory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/entity/Goods.java | 18 +++++++-------- .../java/com/shop/mapper/GoodsMapper.java | 8 +++---- .../java/com/shop/service/GoodsService.java | 4 ++-- .../main/resources/mapping/GoodsMapper.xml | 22 +++++++++---------- 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/entity/Goods.java b/back-end_code/src/main/java/com/shop/entity/Goods.java index 2d47148..ccbf9b9 100644 --- a/back-end_code/src/main/java/com/shop/entity/Goods.java +++ b/back-end_code/src/main/java/com/shop/entity/Goods.java @@ -7,7 +7,7 @@ public class Goods { private int goods_stock; private String goods_img; private String goods_discribe; - private int goods_class; + private int goods_category; private float goods_price; private int goods_state;//int型 1表示在售,2表示冻结,3表示下架 @@ -24,14 +24,14 @@ public class Goods { this.goods_price = goods_price; } - public Goods(int item_id, String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_class, float goods_price) { + public Goods(int item_id, String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_category, float goods_price) { this.item_id = item_id; this.goods_name = goods_name; this.seller_username = seller_username; this.goods_stock = goods_stock; this.goods_img = goods_img; this.goods_discribe = goods_discribe; - this.goods_class = goods_class; + this.goods_category = goods_category; this.goods_price = goods_price; } @@ -119,22 +119,22 @@ public class Goods { this.goods_state = goods_state; } - public Goods(String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_class, float goods_price) { + public Goods(String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_category, float goods_price) { this.goods_name = goods_name; this.seller_username = seller_username; this.goods_stock = goods_stock; this.goods_img = goods_img; this.goods_discribe = goods_discribe; - this.goods_class = goods_class; + this.goods_category = goods_category; this.goods_price = goods_price; } public int getGoods_class() { - return goods_class; + return goods_category; } - public void setGoods_class(int goods_class) { - this.goods_class = goods_class; + public void setGoods_class(int goods_category) { + this.goods_category = goods_category; } @Override @@ -146,7 +146,7 @@ public class Goods { ", goods_stock=" + goods_stock + ", goods_img='" + goods_img + '\'' + ", goods_discribe='" + goods_discribe + '\'' + - ", goods_class=" + goods_class + + ", goods_category=" + goods_category + ", goods_price=" + goods_price + ", goods_state=" + goods_state + '}'; diff --git a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java index e550cfc..e9b44ed 100644 --- a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java @@ -71,10 +71,10 @@ public interface GoodsMapper { /** * 通过类别查询商品 - * @param goods_class + * @param goods_category * @return */ - List searchGoodsByClass(int goods_class); + List searchGoodsByCategory(int goods_category); /** * 通过类别查询商品 @@ -93,10 +93,10 @@ public interface GoodsMapper { /** * 通过类别和关键词查询商品 - * @param goods_class + * @param goods_category * @param key_name * @return */ - List searchGoodsByClassAndKeyName(int goods_class,String key_name); + List searchGoodsByCategoryAndKeyName(int goods_category,String key_name); } diff --git a/back-end_code/src/main/java/com/shop/service/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java index f74aed6..55962b5 100644 --- a/back-end_code/src/main/java/com/shop/service/GoodsService.java +++ b/back-end_code/src/main/java/com/shop/service/GoodsService.java @@ -29,7 +29,7 @@ public class GoodsService { return true; } } - public List searchGoodsByClass(int goods_class){return goodsMapper.searchGoodsByClass(goods_class);} + public List searchGoodsByCategory(int goods_category){return goodsMapper.searchGoodsByCategory(goods_category);} public List searchGoodsByKeyName(String key_name){return goodsMapper.searchGoodsByKeyName(key_name);} // public int reduceGoodStock(int item_id,int reduce_sum){ // Goods good = goodsMapper.searchGoods(item_id); @@ -42,5 +42,5 @@ public class GoodsService { // return goodsMapper.updateGoodStock(item_id,new_stock); // } public int updateGoodStock(int item_id,int new_stock){return goodsMapper.updateGoodStock(item_id,new_stock);} - public List searchGoodsByClassAndKeyName(int goods_class,String key_name){return goodsMapper.searchGoodsByClassAndKeyName(goods_class,key_name);} + public List searchGoodsByCategoryAndKeyName(int goods_category,String key_name){return goodsMapper.searchGoodsByCategoryAndKeyName(goods_category,key_name);} } diff --git a/back-end_code/src/main/resources/mapping/GoodsMapper.xml b/back-end_code/src/main/resources/mapping/GoodsMapper.xml index 1096c23..1e45344 100644 --- a/back-end_code/src/main/resources/mapping/GoodsMapper.xml +++ b/back-end_code/src/main/resources/mapping/GoodsMapper.xml @@ -8,7 +8,7 @@ - + @@ -33,8 +33,8 @@ goodsDiscribe, - - goodsClass, + + goodsCategory, goodsPrice, @@ -59,8 +59,8 @@ #{goods_discribe,jdbcType=VARCHAR}, - - #{goods_class,jdbcType=VARCHAR}, + + #{goods_category,jdbcType=VARCHAR}, #{goods_price,jdbcType=REAL}, @@ -93,8 +93,8 @@ goodsDiscribe = #{goods_discribe,jdbcType=VARCHAR}, - - goodsClass = #{goods_class,jdbcType=INTEGER}, + + goodsCategory = #{goods_category,jdbcType=INTEGER}, goodsPrice = #{goods_price,jdbcType=REAL}, @@ -140,8 +140,8 @@ - + select * from goods where goodsCategory = #{goods_category} and goodsState = 1 @@ -150,8 +150,8 @@ - + select * from goods where goodsName like '%${key_name}%' and goodsCategory = #{goods_category} and goodsState = 1 -- Gitee From b90aab18af9e45c6a1fc692194a3e2b91711caf8 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 30 Nov 2021 21:05:17 +0800 Subject: [PATCH 014/133] =?UTF-8?q?=E5=B0=86goods=E4=B8=AD=E5=90=AB?= =?UTF-8?q?=E6=9C=89class=E7=9A=84=E5=9C=B0=E6=96=B9=E6=94=B9=E6=88=90cate?= =?UTF-8?q?gory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/GoodsController.java | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index c2d4866..210b2ab 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -49,16 +49,16 @@ public class GoodsController { String goods_img = request.getParameter("goods_img"); String goods_discribe = request.getParameter("goods_discribe"); float goods_price = Float.parseFloat(request.getParameter("goods_price")); - int goods_class = Integer.parseInt(request.getParameter("goods_class")); + int goods_category = Integer.parseInt(request.getParameter("goods_category")); JSONObject jsonObject = new JSONObject(); if (goods_name.length() >= 2 && goods_name.length() <= 20 && goods_stock >= 0 && goods_img.length() <= 2000 && goods_discribe.length() >= 2 && goods_discribe.length() <= 2000 && goods_price >= 0 && - goods_class >= 0 + goods_category >= 0 ){ - Goods goods = new Goods(goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_class,goods_price); + Goods goods = new Goods(goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_category,goods_price); int result = goodsService.addGoods( goods); if (result >= 1) { message = "success"; @@ -179,7 +179,7 @@ public class GoodsController { // String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); String goods_img = request.getParameter("goods_img"); String goods_discribe = request.getParameter("goods_discribe"); - int goods_class = Integer.parseInt(request.getParameter("goods_class")); + int goods_category = Integer.parseInt(request.getParameter("goods_category")); float goods_price = Float.parseFloat(request.getParameter("goods_price")); JSONObject jsonObject = new JSONObject(); if (goods_name.length() >= 2 && goods_name.length() <= 20 && @@ -187,9 +187,9 @@ public class GoodsController { goods_img.length() <= 2000 && goods_discribe.length() >= 2 && goods_discribe.length() <= 2000 && goods_price >= 0 && - goods_class >= 0 + goods_category >= 0 ){ - Goods newgoods = new Goods(item_id,goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_class,goods_price); + Goods newgoods = new Goods(item_id,goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_category,goods_price); int result = goodsService.updateGoods(newgoods); if (result >= 1) { message = "success"; @@ -232,13 +232,13 @@ public class GoodsController { } //通过类别查询商品 - @RequestMapping(value = "/searchGoodsByClass") - public Object searchGoodsByClass(HttpServletRequest request, HttpServletResponse response){ + @RequestMapping(value = "/searchGoodsByCategory") + public Object searchGoodsByCategory(HttpServletRequest request, HttpServletResponse response){ String message = "error"; - int goods_class = Integer.parseInt(request.getParameter("goods_class")); - System.out.println(goods_class); + int goods_category = Integer.parseInt(request.getParameter("goods_category")); + System.out.println(goods_category); JSONObject jsonObject = new JSONObject(); - List goodsList =goodsService.searchGoodsByClass(goods_class); + List goodsList =goodsService.searchGoodsByCategory(goods_category); message = "success"; jsonObject.put("goods",goodsList); jsonObject.put("message",message); @@ -259,13 +259,13 @@ public class GoodsController { } //通过类别和关键词查询商品 - @RequestMapping(value = "/searchGoodsByClassAndKeyName") - public Object searchGoodsByClassAndKeyName(HttpServletRequest request, HttpServletResponse response){ + @RequestMapping(value = "/searchGoodsByCategoryAndKeyName") + public Object searchGoodsByCategoryAndKeyName(HttpServletRequest request, HttpServletResponse response){ String message = "error"; - int goods_class = Integer.parseInt(request.getParameter("goods_class")); + int goods_category = Integer.parseInt(request.getParameter("goods_category")); String key_name = request.getParameter("key_name"); JSONObject jsonObject = new JSONObject(); - List goodsList = goodsService.searchGoodsByClassAndKeyName(goods_class,key_name); + List goodsList = goodsService.searchGoodsByCategoryAndKeyName(goods_category,key_name); message = "success"; jsonObject.put("goods",goodsList); jsonObject.put("message",message); -- Gitee From 081cdf764b58c8a0a2f855e170a722e6411b3698 Mon Sep 17 00:00:00 2001 From: Souldays Date: Fri, 3 Dec 2021 05:12:38 +0000 Subject: [PATCH 015/133] =?UTF-8?q?!7=20=E8=A7=84=E8=8C=83=E6=96=B0?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3&class=E6=94=B9=E6=88=90category=20*=20?= =?UTF-8?q?=E5=B0=86goodmap=E4=B8=AD=E5=90=AB=E6=9C=89class=E7=9A=84?= =?UTF-8?q?=E5=9C=B0=E6=96=B9=E6=94=B9=E6=88=90category=20*=20=E5=B0=86goo?= =?UTF-8?q?ds=E7=B1=BB=E5=8F=8A=E5=85=B6=E6=89=80=E5=B1=9E=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=B8=AD=E5=90=AB=E6=9C=89class=E7=9A=84=E5=9C=B0?= =?UTF-8?q?=E6=96=B9=E6=94=B9=E6=88=90category=20*=201.=E5=B0=86category?= =?UTF-8?q?=E7=9A=84controller=E8=A7=84=E8=8C=83=E6=88=90post,put,get?= =?UTF-8?q?=E7=AD=89=E5=BD=A2=E5=BC=8F=20*=20=E5=B0=86=E7=B1=BBclass?= =?UTF-8?q?=E6=94=B9=E6=88=90category?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ontroller.java => CategoryController.java} | 76 ++++++++++--------- .../com/shop/controller/GoodsController.java | 30 ++++---- .../main/java/com/shop/entity/Category.java | 49 ++++++++++++ .../src/main/java/com/shop/entity/Class.java | 49 ------------ .../src/main/java/com/shop/entity/Goods.java | 18 ++--- .../{ClassMapper.java => CategoryMapper.java} | 31 ++++---- .../java/com/shop/mapper/GoodsMapper.java | 8 +- .../com/shop/service/CategoryService.java | 20 +++++ .../java/com/shop/service/ClassService.java | 22 ------ .../java/com/shop/service/GoodsService.java | 4 +- .../main/resources/mapping/CategoryMapper.xml | 63 +++++++++++++++ .../main/resources/mapping/ClassMapper.xml | 63 --------------- .../main/resources/mapping/GoodsMapper.xml | 22 +++--- 13 files changed, 227 insertions(+), 228 deletions(-) rename back-end_code/src/main/java/com/shop/controller/{ClassController.java => CategoryController.java} (41%) create mode 100644 back-end_code/src/main/java/com/shop/entity/Category.java delete mode 100644 back-end_code/src/main/java/com/shop/entity/Class.java rename back-end_code/src/main/java/com/shop/mapper/{ClassMapper.java => CategoryMapper.java} (34%) create mode 100644 back-end_code/src/main/java/com/shop/service/CategoryService.java delete mode 100644 back-end_code/src/main/java/com/shop/service/ClassService.java create mode 100644 back-end_code/src/main/resources/mapping/CategoryMapper.xml delete mode 100644 back-end_code/src/main/resources/mapping/ClassMapper.xml diff --git a/back-end_code/src/main/java/com/shop/controller/ClassController.java b/back-end_code/src/main/java/com/shop/controller/CategoryController.java similarity index 41% rename from back-end_code/src/main/java/com/shop/controller/ClassController.java rename to back-end_code/src/main/java/com/shop/controller/CategoryController.java index c833e57..44ed071 100644 --- a/back-end_code/src/main/java/com/shop/controller/ClassController.java +++ b/back-end_code/src/main/java/com/shop/controller/CategoryController.java @@ -1,11 +1,10 @@ package com.shop.controller; -import com.shop.entity.Class; -import com.shop.service.ClassService; +import com.shop.entity.Category; +import com.shop.service.CategoryService; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -13,20 +12,20 @@ import java.util.List; @RestController -@RequestMapping("/class") -public class ClassController { +@RequestMapping("/category") +public class CategoryController { @Autowired - private ClassService ClassService; + private CategoryService CategoryService; //添加类别 - @RequestMapping(value = "/addClass") - public Object addClass(HttpServletRequest request, HttpServletResponse response){ + @PostMapping(value = "/addCategory") + public Object addCategory(@RequestBody Category category){ String message = "error"; - String class_name = request.getParameter("class_name"); - int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); + String category_name = category.getCategory_name(); + int parentCategory_id = category.getParentCategory_id(); JSONObject jsonObject = new JSONObject(); - int result = ClassService.addClass(class_name,parentClass_id); + int result = CategoryService.addCategory(category_name,parentCategory_id); if(result>=1){ message = "success"; } else{ @@ -37,14 +36,14 @@ public class ClassController { } //查询父类别 - @RequestMapping(value = "/searchParentClass") - public Object searchParentClass(HttpServletRequest request, HttpServletResponse response){ + @GetMapping(value = "/searchParentCategory") + public Object searchParentCategory(){ String message = "error"; JSONObject jsonObject = new JSONObject(); - List classList = ClassService.searchParentClass(); - if(classList != null){ + List categoryList = CategoryService.searchParentCategory(); + if(categoryList != null){ message = "success"; - jsonObject.put("classs",classList); + jsonObject.put("categorys", categoryList); } else{ message = "error"; } @@ -52,16 +51,15 @@ public class ClassController { return jsonObject; } - //根据parentClass_id查询子类别 - @RequestMapping(value = "/searchChildClass") - public Object searchChildClass(HttpServletRequest request, HttpServletResponse response){ + //根据parentCategory_id查询子类别 + @GetMapping(value = "/searchChildCategory") + public Object searchChildCategory(@RequestParam (defaultValue = "1") Integer parentCategory_id){ String message = "error"; - int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); JSONObject jsonObject = new JSONObject(); - List classList = ClassService.searchChildClass(parentClass_id); - if(classList != null){ + List categoryList = CategoryService.searchChildCategory(parentCategory_id); + if(categoryList != null){ message = "success"; - jsonObject.put("classs",classList); + jsonObject.put("categories", categoryList); } else{ message = "error"; } @@ -69,32 +67,36 @@ public class ClassController { return jsonObject; } - //根据classId删除Class - @RequestMapping(value = "/deleteClassByItemId") - public Object deleteClassByItemId(HttpServletRequest request, HttpServletResponse response) { + //根据categoryId删除Category + @DeleteMapping(value = "/deleteCategoryByItemId") + public Object deleteCategoryByItemId(@RequestParam(defaultValue = "1") Integer category_id) { String message = "error"; - int class_id = Integer.parseInt(request.getParameter("class_id")); JSONObject jsonObject = new JSONObject(); - int result = ClassService.deleteClassByItemId(class_id); + int result = CategoryService.deleteCategoryByItemId(category_id); if (result >= 1){ message = "success"; + }else { + message = "error"; } jsonObject.put("message",message); return jsonObject; } - //根据classId修改Class - @RequestMapping(value = "/updateClass") - public Object updateClass(HttpServletRequest request, HttpServletResponse response){ + //根据categoryId修改Category + @PutMapping(value = "/updateCategory") + public Object updateCategory(@RequestBody Category category){ String message = "error"; JSONObject jsonObject = new JSONObject(); - int class_id = Integer.parseInt(request.getParameter("class_id")); - String class_name = request.getParameter("class_name"); - int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); - Class Class = new Class(class_id,class_name,parentClass_id); - int result = ClassService.updateClass(Class); + int category_id = category.getCategory_id(); + String category_name = category.getCategory_name(); + int parentCategory_id = category.getParentCategory_id(); + Category Category = new Category(category_id,category_name,parentCategory_id); + System.out.println(Category); + int result = CategoryService.updateCategory(Category); if (result >= 1){ message = "success"; + }else { + message = "error"; } jsonObject.put("message",message); return jsonObject; diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index c2d4866..210b2ab 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -49,16 +49,16 @@ public class GoodsController { String goods_img = request.getParameter("goods_img"); String goods_discribe = request.getParameter("goods_discribe"); float goods_price = Float.parseFloat(request.getParameter("goods_price")); - int goods_class = Integer.parseInt(request.getParameter("goods_class")); + int goods_category = Integer.parseInt(request.getParameter("goods_category")); JSONObject jsonObject = new JSONObject(); if (goods_name.length() >= 2 && goods_name.length() <= 20 && goods_stock >= 0 && goods_img.length() <= 2000 && goods_discribe.length() >= 2 && goods_discribe.length() <= 2000 && goods_price >= 0 && - goods_class >= 0 + goods_category >= 0 ){ - Goods goods = new Goods(goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_class,goods_price); + Goods goods = new Goods(goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_category,goods_price); int result = goodsService.addGoods( goods); if (result >= 1) { message = "success"; @@ -179,7 +179,7 @@ public class GoodsController { // String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); String goods_img = request.getParameter("goods_img"); String goods_discribe = request.getParameter("goods_discribe"); - int goods_class = Integer.parseInt(request.getParameter("goods_class")); + int goods_category = Integer.parseInt(request.getParameter("goods_category")); float goods_price = Float.parseFloat(request.getParameter("goods_price")); JSONObject jsonObject = new JSONObject(); if (goods_name.length() >= 2 && goods_name.length() <= 20 && @@ -187,9 +187,9 @@ public class GoodsController { goods_img.length() <= 2000 && goods_discribe.length() >= 2 && goods_discribe.length() <= 2000 && goods_price >= 0 && - goods_class >= 0 + goods_category >= 0 ){ - Goods newgoods = new Goods(item_id,goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_class,goods_price); + Goods newgoods = new Goods(item_id,goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_category,goods_price); int result = goodsService.updateGoods(newgoods); if (result >= 1) { message = "success"; @@ -232,13 +232,13 @@ public class GoodsController { } //通过类别查询商品 - @RequestMapping(value = "/searchGoodsByClass") - public Object searchGoodsByClass(HttpServletRequest request, HttpServletResponse response){ + @RequestMapping(value = "/searchGoodsByCategory") + public Object searchGoodsByCategory(HttpServletRequest request, HttpServletResponse response){ String message = "error"; - int goods_class = Integer.parseInt(request.getParameter("goods_class")); - System.out.println(goods_class); + int goods_category = Integer.parseInt(request.getParameter("goods_category")); + System.out.println(goods_category); JSONObject jsonObject = new JSONObject(); - List goodsList =goodsService.searchGoodsByClass(goods_class); + List goodsList =goodsService.searchGoodsByCategory(goods_category); message = "success"; jsonObject.put("goods",goodsList); jsonObject.put("message",message); @@ -259,13 +259,13 @@ public class GoodsController { } //通过类别和关键词查询商品 - @RequestMapping(value = "/searchGoodsByClassAndKeyName") - public Object searchGoodsByClassAndKeyName(HttpServletRequest request, HttpServletResponse response){ + @RequestMapping(value = "/searchGoodsByCategoryAndKeyName") + public Object searchGoodsByCategoryAndKeyName(HttpServletRequest request, HttpServletResponse response){ String message = "error"; - int goods_class = Integer.parseInt(request.getParameter("goods_class")); + int goods_category = Integer.parseInt(request.getParameter("goods_category")); String key_name = request.getParameter("key_name"); JSONObject jsonObject = new JSONObject(); - List goodsList = goodsService.searchGoodsByClassAndKeyName(goods_class,key_name); + List goodsList = goodsService.searchGoodsByCategoryAndKeyName(goods_category,key_name); message = "success"; jsonObject.put("goods",goodsList); jsonObject.put("message",message); diff --git a/back-end_code/src/main/java/com/shop/entity/Category.java b/back-end_code/src/main/java/com/shop/entity/Category.java new file mode 100644 index 0000000..d6002b7 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/Category.java @@ -0,0 +1,49 @@ +package com.shop.entity; + +public class Category { + private int category_id; + private String category_name; + private int parentCategory_id; + + public int getCategory_id() { + return category_id; + } + + public void setCategory_id(int category_id) { + this.category_id = category_id; + } + + public String getCategory_name() { + return category_name; + } + + public void setCategory_name(String category_name) { + this.category_name = category_name; + } + + public int getParentCategory_id() { + return parentCategory_id; + } + + public void setParentCategory_id(int parentCategory_id) { + this.parentCategory_id = parentCategory_id; + } + + public Category() { + } + + public Category(int category_id, String category_name, int parentCategory_id) { + this.category_id = category_id; + this.category_name = category_name; + this.parentCategory_id = parentCategory_id; + } + + @Override + public String toString() { + return "Category{" + + "category_id=" + category_id + + ", category_name='" + category_name + '\'' + + ", parentCategory_id=" + parentCategory_id + + '}'; + } +} diff --git a/back-end_code/src/main/java/com/shop/entity/Class.java b/back-end_code/src/main/java/com/shop/entity/Class.java deleted file mode 100644 index 5667578..0000000 --- a/back-end_code/src/main/java/com/shop/entity/Class.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.shop.entity; - -public class Class { - private int class_id; - private String class_name; - private int parentClass_id; - - @Override - public String toString() { - return "Class{" + - "class_id=" + class_id + - ", class_name='" + class_name + '\'' + - ", parentClass_id=" + parentClass_id + - '}'; - } - - public int getClass_id() { - return class_id; - } - - public void setClass_id(int class_id) { - this.class_id = class_id; - } - - public String getClass_name() { - return class_name; - } - - public void setClass_name(String class_name) { - this.class_name = class_name; - } - - public int getParentClass_id() { - return parentClass_id; - } - - public void setParentClass_id(int parentClass_id) { - this.parentClass_id = parentClass_id; - } - - public Class(int class_id, String class_name, int parentClass_id) { - this.class_id = class_id; - this.class_name = class_name; - this.parentClass_id = parentClass_id; - } - - public Class() { - } -} diff --git a/back-end_code/src/main/java/com/shop/entity/Goods.java b/back-end_code/src/main/java/com/shop/entity/Goods.java index 2d47148..ccbf9b9 100644 --- a/back-end_code/src/main/java/com/shop/entity/Goods.java +++ b/back-end_code/src/main/java/com/shop/entity/Goods.java @@ -7,7 +7,7 @@ public class Goods { private int goods_stock; private String goods_img; private String goods_discribe; - private int goods_class; + private int goods_category; private float goods_price; private int goods_state;//int型 1表示在售,2表示冻结,3表示下架 @@ -24,14 +24,14 @@ public class Goods { this.goods_price = goods_price; } - public Goods(int item_id, String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_class, float goods_price) { + public Goods(int item_id, String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_category, float goods_price) { this.item_id = item_id; this.goods_name = goods_name; this.seller_username = seller_username; this.goods_stock = goods_stock; this.goods_img = goods_img; this.goods_discribe = goods_discribe; - this.goods_class = goods_class; + this.goods_category = goods_category; this.goods_price = goods_price; } @@ -119,22 +119,22 @@ public class Goods { this.goods_state = goods_state; } - public Goods(String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_class, float goods_price) { + public Goods(String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_category, float goods_price) { this.goods_name = goods_name; this.seller_username = seller_username; this.goods_stock = goods_stock; this.goods_img = goods_img; this.goods_discribe = goods_discribe; - this.goods_class = goods_class; + this.goods_category = goods_category; this.goods_price = goods_price; } public int getGoods_class() { - return goods_class; + return goods_category; } - public void setGoods_class(int goods_class) { - this.goods_class = goods_class; + public void setGoods_class(int goods_category) { + this.goods_category = goods_category; } @Override @@ -146,7 +146,7 @@ public class Goods { ", goods_stock=" + goods_stock + ", goods_img='" + goods_img + '\'' + ", goods_discribe='" + goods_discribe + '\'' + - ", goods_class=" + goods_class + + ", goods_category=" + goods_category + ", goods_price=" + goods_price + ", goods_state=" + goods_state + '}'; diff --git a/back-end_code/src/main/java/com/shop/mapper/ClassMapper.java b/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java similarity index 34% rename from back-end_code/src/main/java/com/shop/mapper/ClassMapper.java rename to back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java index adc8403..8e9b7d2 100644 --- a/back-end_code/src/main/java/com/shop/mapper/ClassMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java @@ -1,45 +1,44 @@ package com.shop.mapper; -import com.shop.entity.Class; -import com.shop.entity.GO; +import com.shop.entity.Category; import org.springframework.stereotype.Repository; import java.util.List; @Repository -public interface ClassMapper { +public interface CategoryMapper { /** * 添加类别 - * @param class_name - * @param parentClass_id + * @param category_name + * @param parentCategory_id * @return */ - int addClass(String class_name,int parentClass_id); + int addCategory(String category_name,int parentCategory_id); /** * 查询父类别 * @return */ - List searchParentClass(); + List searchParentCategory(); /** - * 根据parentClass_id查询子类别 - * @param parentClass_id + * 根据parentCategory_id查询子类别 + * @param parentCategory_id * @return */ - List searchChildClass(int parentClass_id); + List searchChildCategory(int parentCategory_id); /** - * 根据classId删除Class - * @param class_id + * 根据categoryId删除Category + * @param category_id * @return */ - int deleteClassByItemId(int class_id); + int deleteCategoryByItemId(int category_id); /** - * 根据classId修改Class - * @param Class + * 根据categoryId修改Category + * @param Category * @return */ - int updateClass(Class Class); + int updateCategory(Category Category); } diff --git a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java index e550cfc..e9b44ed 100644 --- a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java @@ -71,10 +71,10 @@ public interface GoodsMapper { /** * 通过类别查询商品 - * @param goods_class + * @param goods_category * @return */ - List searchGoodsByClass(int goods_class); + List searchGoodsByCategory(int goods_category); /** * 通过类别查询商品 @@ -93,10 +93,10 @@ public interface GoodsMapper { /** * 通过类别和关键词查询商品 - * @param goods_class + * @param goods_category * @param key_name * @return */ - List searchGoodsByClassAndKeyName(int goods_class,String key_name); + List searchGoodsByCategoryAndKeyName(int goods_category,String key_name); } diff --git a/back-end_code/src/main/java/com/shop/service/CategoryService.java b/back-end_code/src/main/java/com/shop/service/CategoryService.java new file mode 100644 index 0000000..034d8d1 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/CategoryService.java @@ -0,0 +1,20 @@ +package com.shop.service; + +import com.shop.entity.Category; +import com.shop.mapper.CategoryMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class CategoryService { + @Autowired + private CategoryMapper categoryMapper; + + public int addCategory(String category_name,int parentCategory_id){return categoryMapper.addCategory(category_name,parentCategory_id);} + public List searchParentCategory(){return categoryMapper.searchParentCategory();} + public List searchChildCategory(int parentCategory_id){return categoryMapper.searchChildCategory(parentCategory_id);} + public int deleteCategoryByItemId(int category_id){return categoryMapper.deleteCategoryByItemId(category_id);} + public int updateCategory(Category category){return categoryMapper.updateCategory(category);} +} diff --git a/back-end_code/src/main/java/com/shop/service/ClassService.java b/back-end_code/src/main/java/com/shop/service/ClassService.java deleted file mode 100644 index ee1994f..0000000 --- a/back-end_code/src/main/java/com/shop/service/ClassService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.shop.service; - -import com.shop.entity.Class; -import com.shop.entity.GO; -import com.shop.mapper.ClassMapper; -import com.shop.mapper.GOMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public class ClassService { - @Autowired - private ClassMapper classMapper; - - public int addClass(String class_name,int parentClass_id){return classMapper.addClass(class_name,parentClass_id);} - public List searchParentClass(){return classMapper.searchParentClass();} - public List searchChildClass(int parentClass_id){return classMapper.searchChildClass(parentClass_id);} - public int deleteClassByItemId(int class_id){return classMapper.deleteClassByItemId(class_id);} - public int updateClass(Class Class){return classMapper.updateClass(Class);} -} diff --git a/back-end_code/src/main/java/com/shop/service/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java index f74aed6..55962b5 100644 --- a/back-end_code/src/main/java/com/shop/service/GoodsService.java +++ b/back-end_code/src/main/java/com/shop/service/GoodsService.java @@ -29,7 +29,7 @@ public class GoodsService { return true; } } - public List searchGoodsByClass(int goods_class){return goodsMapper.searchGoodsByClass(goods_class);} + public List searchGoodsByCategory(int goods_category){return goodsMapper.searchGoodsByCategory(goods_category);} public List searchGoodsByKeyName(String key_name){return goodsMapper.searchGoodsByKeyName(key_name);} // public int reduceGoodStock(int item_id,int reduce_sum){ // Goods good = goodsMapper.searchGoods(item_id); @@ -42,5 +42,5 @@ public class GoodsService { // return goodsMapper.updateGoodStock(item_id,new_stock); // } public int updateGoodStock(int item_id,int new_stock){return goodsMapper.updateGoodStock(item_id,new_stock);} - public List searchGoodsByClassAndKeyName(int goods_class,String key_name){return goodsMapper.searchGoodsByClassAndKeyName(goods_class,key_name);} + public List searchGoodsByCategoryAndKeyName(int goods_category,String key_name){return goodsMapper.searchGoodsByCategoryAndKeyName(goods_category,key_name);} } diff --git a/back-end_code/src/main/resources/mapping/CategoryMapper.xml b/back-end_code/src/main/resources/mapping/CategoryMapper.xml new file mode 100644 index 0000000..9d0e15f --- /dev/null +++ b/back-end_code/src/main/resources/mapping/CategoryMapper.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + insert into category + + + + categoryName, + + + parentCategoryId, + + + + + + + #{category_name,jdbcType=VARCHAR}, + + + #{parentCategory_id,jdbcType=INTEGER}, + + + + + + + + + + + + + delete from category where categoryId = #{category_id} + + + + + update category + + + categoryName = #{category_name,jdbcType=VARCHAR}, + + + parentCategoryId = #{parentCategory_id,jdbcType=INTEGER}, + + + where categoryId = #{category_id,jdbcType=INTEGER} + + + \ No newline at end of file diff --git a/back-end_code/src/main/resources/mapping/ClassMapper.xml b/back-end_code/src/main/resources/mapping/ClassMapper.xml deleted file mode 100644 index d216f90..0000000 --- a/back-end_code/src/main/resources/mapping/ClassMapper.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - insert into class - - - - className, - - - parentClassId, - - - - - - - #{class_name,jdbcType=VARCHAR}, - - - #{parentClass_id,jdbcType=INTEGER}, - - - - - - - - - - - - - delete from class where classId = #{class_id} - - - - - update class - - - className = #{class_name,jdbcType=VARCHAR}, - - - parentClassId = #{parentClass_id,jdbcType=INTEGER}, - - - where classId = #{class_id,jdbcType=INTEGER} - - - \ No newline at end of file diff --git a/back-end_code/src/main/resources/mapping/GoodsMapper.xml b/back-end_code/src/main/resources/mapping/GoodsMapper.xml index 1096c23..1e45344 100644 --- a/back-end_code/src/main/resources/mapping/GoodsMapper.xml +++ b/back-end_code/src/main/resources/mapping/GoodsMapper.xml @@ -8,7 +8,7 @@ - + @@ -33,8 +33,8 @@ goodsDiscribe, - - goodsClass, + + goodsCategory, goodsPrice, @@ -59,8 +59,8 @@ #{goods_discribe,jdbcType=VARCHAR}, - - #{goods_class,jdbcType=VARCHAR}, + + #{goods_category,jdbcType=VARCHAR}, #{goods_price,jdbcType=REAL}, @@ -93,8 +93,8 @@ goodsDiscribe = #{goods_discribe,jdbcType=VARCHAR}, - - goodsClass = #{goods_class,jdbcType=INTEGER}, + + goodsCategory = #{goods_category,jdbcType=INTEGER}, goodsPrice = #{goods_price,jdbcType=REAL}, @@ -140,8 +140,8 @@ - + select * from goods where goodsCategory = #{goods_category} and goodsState = 1 @@ -150,8 +150,8 @@ - + select * from goods where goodsName like '%${key_name}%' and goodsCategory = #{goods_category} and goodsState = 1 -- Gitee From f861b341ed5e2d2074a9056245ee6eab738b78b3 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 3 Dec 2021 19:17:46 +0800 Subject: [PATCH 016/133] =?UTF-8?q?1.UserService=E4=B8=AD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=B3=A8=E5=86=8C=E5=8A=9F=E8=83=BD=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=202.UserController=E4=B8=AD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=BF=94=E5=9B=9E=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/UserController.java | 19 ++++++++++++++ .../java/com/shop/service/UserService.java | 25 ++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index aa12079..fc2388b 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -115,6 +115,25 @@ public class UserController { int result = userService.registerUser(User); if (result >= 1){ message = "success"; + }else if (result==-1){ + message = "用户名长度错误"; + }else if (result==-2){ + message = "用户名重复"; + } + else if (result==-3){ + message = "用户名包含非数字或字母"; + } + else if (result==-4){ + message = "密码长度错误"; + } + else if (result==-5){ + message = "真实姓名长度过长"; + } + else if (result==-6){ + message = "电话号码格式不对"; + } + else if (result==-7){ + message = "地址过长"; } jsonObject.put("message",message); return jsonObject; diff --git a/back-end_code/src/main/java/com/shop/service/UserService.java b/back-end_code/src/main/java/com/shop/service/UserService.java index d661dfd..1e9b2af 100644 --- a/back-end_code/src/main/java/com/shop/service/UserService.java +++ b/back-end_code/src/main/java/com/shop/service/UserService.java @@ -15,7 +15,30 @@ public class UserService { public User login(String username, String password){ return userMapper.login(username,password); } public User getUserInfo(String username){ return userMapper.getUserInfo(username); } public int updatePassword(String username,String newPassword){ return userMapper.updatePassword(username,newPassword); } - public int registerUser(User User){return userMapper.registerUser(User);} + public int registerUser(User user){ + String username=user.getUserName(); + String password=user.getPassword(); + String realName=user.getRealname(); + String phoneNumber=user.getPhonenumber(); + String address=user.getAddress(); + final String STR_ENG_PATTERN="^[a-z0-9A-Z]+$"; + if(username.length()>11||username.length()<3){ + return -1;//用户名长度错误 + }else if(userMapper.getUserInfo(username)!=null){ + return -2;//用户名重复 + }else if(!username.matches(STR_ENG_PATTERN)){ + return -3;//用户名包含非数字或字母 + }else if(password.length()<7||password.length()>15){ + return -4;//密码长度错误 + }else if(realName.length()>10){ + return -5;//真实姓名长度过长 + }else if(phoneNumber.length()!=11||phoneNumber.matches("^[0-9]+$")){ + return -6;//电话号码格式不对 + }else if(address.length()>50){ + return -7;//地址过长 + } + return userMapper.registerUser(user); + } public int updateUser(User User){return userMapper.updateUser(User);} public List searchAllUser(){return userMapper.searchAllUser();} } -- Gitee From 1b3504ed1b5db204c9fea966f701a752c81271f7 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 3 Dec 2021 19:23:38 +0800 Subject: [PATCH 017/133] =?UTF-8?q?=E7=94=B5=E8=AF=9D=E5=8F=B7=E7=A0=81?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E6=9C=89=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/src/main/java/com/shop/service/UserService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/back-end_code/src/main/java/com/shop/service/UserService.java b/back-end_code/src/main/java/com/shop/service/UserService.java index 1e9b2af..202e42f 100644 --- a/back-end_code/src/main/java/com/shop/service/UserService.java +++ b/back-end_code/src/main/java/com/shop/service/UserService.java @@ -32,7 +32,7 @@ public class UserService { return -4;//密码长度错误 }else if(realName.length()>10){ return -5;//真实姓名长度过长 - }else if(phoneNumber.length()!=11||phoneNumber.matches("^[0-9]+$")){ + }else if(phoneNumber.length()!=11||!phoneNumber.matches("^[0-9]+$")){ return -6;//电话号码格式不对 }else if(address.length()>50){ return -7;//地址过长 -- Gitee From 98b121c16593d21879c5b93f58eb19967fa7ac20 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 3 Dec 2021 19:25:34 +0800 Subject: [PATCH 018/133] =?UTF-8?q?1.postman=E6=B5=8B=E8=AF=95=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E6=8E=A5=E5=8F=A3=202.=E7=94=B5=E8=AF=9D=E5=8F=B7?= =?UTF-8?q?=E7=A0=81=E6=A0=A1=E9=AA=8C=E6=9C=89=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D,=E5=85=B6=E4=BB=96=E6=97=A0=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/src/main/java/com/shop/service/UserService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/back-end_code/src/main/java/com/shop/service/UserService.java b/back-end_code/src/main/java/com/shop/service/UserService.java index 202e42f..1982763 100644 --- a/back-end_code/src/main/java/com/shop/service/UserService.java +++ b/back-end_code/src/main/java/com/shop/service/UserService.java @@ -33,7 +33,7 @@ public class UserService { }else if(realName.length()>10){ return -5;//真实姓名长度过长 }else if(phoneNumber.length()!=11||!phoneNumber.matches("^[0-9]+$")){ - return -6;//电话号码格式不对 + return -6;//电话号码格式错误 }else if(address.length()>50){ return -7;//地址过长 } -- Gitee From 89e4ebad16fc5c3a4f9b8ef01586d3fbbda2436c Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 3 Dec 2021 19:55:52 +0800 Subject: [PATCH 019/133] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0info=E5=B1=9E=E6=80=A7=EF=BC=8C=E7=94=A8?= =?UTF-8?q?=E6=9D=A5=E4=BF=9D=E5=AD=98=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/shop/controller/UserController.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index fc2388b..d8f0610 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -102,6 +102,7 @@ public class UserController { @RequestMapping(value = "/registerUser") public Object registerUser(HttpServletRequest request, HttpServletResponse response){ String message = "error"; + String info="注册成功"; String username = request.getParameter("username"); String password = request.getParameter("password"); String nickname = request.getParameter("nickname"); @@ -116,26 +117,27 @@ public class UserController { if (result >= 1){ message = "success"; }else if (result==-1){ - message = "用户名长度错误"; + info = "用户名长度错误"; }else if (result==-2){ - message = "用户名重复"; + info = "用户名重复"; } else if (result==-3){ - message = "用户名包含非数字或字母"; + info = "用户名包含非数字或字母"; } else if (result==-4){ - message = "密码长度错误"; + info = "密码长度错误"; } else if (result==-5){ - message = "真实姓名长度过长"; + info = "真实姓名长度过长"; } else if (result==-6){ - message = "电话号码格式不对"; + info = "电话号码格式不对"; } else if (result==-7){ - message = "地址过长"; + info = "地址过长"; } jsonObject.put("message",message); + jsonObject.put("info",info); return jsonObject; } -- Gitee From 87f790ba91954942da81fbef13c906e571ea2ba9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B9=E5=AE=97?= <2937021973@qq.com> Date: Sun, 5 Dec 2021 05:46:31 +0000 Subject: [PATCH 020/133] =?UTF-8?q?!8=20=E4=BF=AE=E5=A4=8Dbug&=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=8E=A5=E5=8F=A3=E6=96=87=E6=A1=A3=20*=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E8=B0=83=E8=AF=95=E8=AF=AD=E5=8F=A5=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=8E=A5=E5=8F=A3=E6=96=87=E6=A1=A3=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E4=BF=AE=E6=94=B9=E5=95=86=E5=93=81=E6=97=B6=E5=80=99?= =?UTF-8?q?=E5=B0=86=E5=95=86=E5=93=81=E6=95=B0=E9=87=8F=E4=B8=BA0?= =?UTF-8?q?=E8=80=8C=E5=95=86=E5=93=81=E4=B8=8D=E4=B8=8B=E6=9E=B6=E7=9A=84?= =?UTF-8?q?bug=20=E4=BF=AE=E5=A4=8D=E9=80=9A=E8=BF=87=E7=B1=BB=E5=88=AB?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=95=86=E5=93=81=E4=B8=8D=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=88=B6=E7=B1=BB=E6=9F=A5=E8=AF=A2=E7=9A=84bug=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E9=80=9A=E8=BF=87=E7=B1=BB=E5=88=AB=E5=92=8C=E5=85=B3?= =?UTF-8?q?=E9=94=AE=E8=AF=8D=E6=9F=A5=E8=AF=A2=E5=95=86=E5=93=81=E4=B8=8D?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=88=B6=E7=B1=BB=E6=9F=A5=E8=AF=A2=E7=9A=84?= =?UTF-8?q?bug=20=E5=88=A0=E9=99=A4Good=E7=B1=BB=E4=B8=AD=E5=85=B3?= =?UTF-8?q?=E4=BA=8Eclass(category=E7=9A=84=E5=89=8D=E8=BA=AB)=E7=9A=84?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=20=E4=BF=AE=E5=A4=8D=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E5=A4=B1=E8=B4=A5=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5=E4=B8=BA=E6=9C=89=E7=9B=B8=E5=BA=94=E5=A4=84?= =?UTF-8?q?=E7=90=86=E7=9A=84bug=20*=20=E4=BF=9D=E5=AD=98=E5=95=86?= =?UTF-8?q?=E5=93=81=E4=BF=A1=E6=81=AF=E8=87=B3=E8=AE=A2=E5=8D=95=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shop/controller/CategoryController.java | 2 +- .../com/shop/controller/GoodsController.java | 44 +- .../com/shop/controller/OrderController.java | 10 +- .../com/shop/controller/UserController.java | 10 +- .../src/main/java/com/shop/entity/Goods.java | 15 +- .../src/main/java/com/shop/entity/Order.java | 58 + .../java/com/shop/service/GoodsService.java | 41 +- .../main/resources/mapping/OrderMapper.xml | 28 + ...45\345\217\243\346\226\207\346\241\243.md" | 1532 +++++++++++++++++ 9 files changed, 1702 insertions(+), 38 deletions(-) create mode 100644 "\346\216\245\345\217\243\346\226\207\346\241\243.md" diff --git a/back-end_code/src/main/java/com/shop/controller/CategoryController.java b/back-end_code/src/main/java/com/shop/controller/CategoryController.java index 44ed071..bad8c58 100644 --- a/back-end_code/src/main/java/com/shop/controller/CategoryController.java +++ b/back-end_code/src/main/java/com/shop/controller/CategoryController.java @@ -69,7 +69,7 @@ public class CategoryController { //根据categoryId删除Category @DeleteMapping(value = "/deleteCategoryByItemId") - public Object deleteCategoryByItemId(@RequestParam(defaultValue = "1") Integer category_id) { + public Object deleteCategoryByItemId(@RequestParam Integer category_id) { String message = "error"; JSONObject jsonObject = new JSONObject(); int result = CategoryService.deleteCategoryByItemId(category_id); diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 210b2ab..f8e8e92 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -63,7 +63,6 @@ public class GoodsController { if (result >= 1) { message = "success"; }else { - System.out.println("aa"); message = "error"; } } @@ -78,7 +77,6 @@ public class GoodsController { int item_id = Integer.parseInt(request.getParameter("item_id")); JSONObject jsonObject = new JSONObject(); Goods good = goodsService.searchGoods(item_id); - System.out.println(good.getGoods_price()); if (good != null){ message = "success"; jsonObject.put("good",good); @@ -133,34 +131,34 @@ public class GoodsController { return jsonObject; } - //在goods表中查询所有商品 + //在goods表中查询历史商品 @RequestMapping(value = "/searchHistoryGoods") public Object searchHistoryGoods(HttpServletRequest request, HttpServletResponse response){ String message = "error"; String seller_username = request.getParameter("seller_username"); JSONObject jsonObject = new JSONObject(); List goodsList = goodsService.searchHistoryGoods(seller_username); - List list = new ArrayList(); - for (int i=0;i < goodsList.size();i++){ - Goods good = (Goods) goodsList.get(i); - GO go = goService.searchGOByItemId(good.getItem_id()); - Order order = orderService.searchOrderByOrderId(seller_username, go.getOrder_id()); - Order_Goods order_goods = new Order_Goods( - order.getOrder_id(), - order.getBuyer_realname(), - order.getBuyer_phonenumber(), - order.getBuyer_address(), - order.getFinish_time(), - good.getItem_id(), - good.getGoods_name(), - good.getGoods_price(), - good.getGoods_img(), - good.getGoods_discribe()); - list.add(order_goods); - } +// List list = new ArrayList(); +// for (int i=0;i < goodsList.size();i++){ +// Goods good = (Goods) goodsList.get(i); +// GO go = goService.searchGOByItemId(good.getItem_id()); +// Order order = orderService.searchOrderByOrderId(seller_username, go.getOrder_id()); +// Order_Goods order_goods = new Order_Goods( +// order.getOrder_id(), +// order.getBuyer_realname(), +// order.getBuyer_phonenumber(), +// order.getBuyer_address(), +// order.getFinish_time(), +// good.getItem_id(), +// good.getGoods_name(), +// good.getGoods_price(), +// good.getGoods_img(), +// good.getGoods_discribe()); +// list.add(order_goods); +// } message = "success"; jsonObject.put("message",message); - jsonObject.put("list",list); + jsonObject.put("goods",goodsList); return jsonObject; } @@ -236,7 +234,7 @@ public class GoodsController { public Object searchGoodsByCategory(HttpServletRequest request, HttpServletResponse response){ String message = "error"; int goods_category = Integer.parseInt(request.getParameter("goods_category")); - System.out.println(goods_category); +// System.out.println(goods_category); JSONObject jsonObject = new JSONObject(); List goodsList =goodsService.searchGoodsByCategory(goods_category); message = "success"; diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 56e074f..05afba3 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -38,8 +38,8 @@ public class OrderController { private GOService goService; //查看商品意向购买买家 - @RequestMapping(value = "/searchBuyerlist") - public Object searchBuyerlist(HttpServletRequest request, HttpServletResponse response){ + @RequestMapping(value = "/searchWantBuyerlistByItemId") + public Object searchWantBuyerlistByItemId(HttpServletRequest request, HttpServletResponse response){ String message = "error"; String seller_username = request.getParameter("seller_username"); int item_id = Integer.parseInt(request.getParameter("item_id")); @@ -161,6 +161,10 @@ public class OrderController { String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); Goods good = goodsService.searchGoods(item_id); + String goods_name = good.getGoods_name(); + String goods_img = good.getGoods_img(); + String goods_discribe = good.getGoods_discribe(); + float goods_price = good.getGoods_price(); String seller_username = good.getSeller_username(); String buyer_username = request.getParameter("buyer_username"); User user = userService.getUserInfo(buyer_username); @@ -184,7 +188,7 @@ public class OrderController { buy_amount = buy_sum*good.getGoods_price(); String create_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); JSONObject jsonObject = new JSONObject(); - Order order = new Order(item_id,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,buy_amount,5,create_time); + Order order = new Order(item_id,goods_name,goods_img,goods_discribe,goods_price,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,buy_amount,5,create_time); if (buyer_phonenumber.length() == 11 && buyer_address.length() >= 2 && buyer_address.length() <= 100 && good.getGoods_stock() >= buy_sum){ int result = orderService.addToOrderWanted(order); if (result >=1){ diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index aa12079..a931ae9 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -61,7 +61,13 @@ public class UserController { String username = request.getParameter("username"); JSONObject jsonObject = new JSONObject(); User user = userService.getUserInfo(username); - jsonObject.put("user",user); + if (user != null){ + message = "success"; + jsonObject.put("user",user); + }else{ + message = "error"; + } + jsonObject.put("message",message); return jsonObject; } @@ -115,6 +121,8 @@ public class UserController { int result = userService.registerUser(User); if (result >= 1){ message = "success"; + }else { + message = "error"; } jsonObject.put("message",message); return jsonObject; diff --git a/back-end_code/src/main/java/com/shop/entity/Goods.java b/back-end_code/src/main/java/com/shop/entity/Goods.java index ccbf9b9..a79dcc8 100644 --- a/back-end_code/src/main/java/com/shop/entity/Goods.java +++ b/back-end_code/src/main/java/com/shop/entity/Goods.java @@ -24,6 +24,14 @@ public class Goods { this.goods_price = goods_price; } + public int getGoods_category() { + return goods_category; + } + + public void setGoods_category(int goods_category) { + this.goods_category = goods_category; + } + public Goods(int item_id, String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_category, float goods_price) { this.item_id = item_id; this.goods_name = goods_name; @@ -129,13 +137,6 @@ public class Goods { this.goods_price = goods_price; } - public int getGoods_class() { - return goods_category; - } - - public void setGoods_class(int goods_category) { - this.goods_category = goods_category; - } @Override public String toString() { diff --git a/back-end_code/src/main/java/com/shop/entity/Order.java b/back-end_code/src/main/java/com/shop/entity/Order.java index e8384ac..6b7e05a 100644 --- a/back-end_code/src/main/java/com/shop/entity/Order.java +++ b/back-end_code/src/main/java/com/shop/entity/Order.java @@ -3,6 +3,10 @@ package com.shop.entity; public class Order { private int order_id; private int item_id; + private String goods_name; + private String goods_img; + private String goods_discribe; + private float goods_price; private String seller_username; private String buyer_username; private String buyer_realname; @@ -18,6 +22,55 @@ public class Order { super(); } + public Order(int item_id, String goods_name, String goods_img, String goods_discribe, float goods_price, String seller_username, String buyer_username, String buyer_realname, String buyer_phonenumber, String buyer_address, int buy_sum, float buy_amount, int state, String create_time) { + this.item_id = item_id; + this.goods_name = goods_name; + this.goods_img = goods_img; + this.goods_discribe = goods_discribe; + this.goods_price = goods_price; + this.seller_username = seller_username; + this.buyer_username = buyer_username; + this.buyer_realname = buyer_realname; + this.buyer_phonenumber = buyer_phonenumber; + this.buyer_address = buyer_address; + this.buy_sum = buy_sum; + this.buy_amount = buy_amount; + this.state = state; + this.create_time = create_time; + } + + public String getGoods_name() { + return goods_name; + } + + public void setGoods_name(String goods_name) { + this.goods_name = goods_name; + } + + public String getGoods_img() { + return goods_img; + } + + public void setGoods_img(String goods_img) { + this.goods_img = goods_img; + } + + public String getGoods_discribe() { + return goods_discribe; + } + + public void setGoods_discribe(String goods_discribe) { + this.goods_discribe = goods_discribe; + } + + public float getGoods_price() { + return goods_price; + } + + public void setGoods_price(float goods_price) { + this.goods_price = goods_price; + } + public float getBuy_amount() { return buy_amount; } @@ -172,12 +225,17 @@ public class Order { return "Order{" + "order_id=" + order_id + ", item_id=" + item_id + + ", goods_name='" + goods_name + '\'' + + ", goods_img='" + goods_img + '\'' + + ", goods_discribe='" + goods_discribe + '\'' + + ", goods_price=" + goods_price + ", seller_username='" + seller_username + '\'' + ", buyer_username='" + buyer_username + '\'' + ", buyer_realname='" + buyer_realname + '\'' + ", buyer_phonenumber='" + buyer_phonenumber + '\'' + ", buyer_address='" + buyer_address + '\'' + ", buy_sum=" + buy_sum + + ", buy_amount=" + buy_amount + ", state=" + state + ", create_time='" + create_time + '\'' + ", finish_time='" + finish_time + '\'' + diff --git a/back-end_code/src/main/java/com/shop/service/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java index 55962b5..f56b6df 100644 --- a/back-end_code/src/main/java/com/shop/service/GoodsService.java +++ b/back-end_code/src/main/java/com/shop/service/GoodsService.java @@ -1,16 +1,21 @@ package com.shop.service; +import com.shop.entity.Category; import com.shop.entity.Goods; +import com.shop.mapper.CategoryMapper; import com.shop.mapper.GoodsMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; @Service public class GoodsService { @Autowired private GoodsMapper goodsMapper; + @Autowired + private CategoryMapper categoryMapper; public int addGoods(Goods Goods){ return goodsMapper.addGoods(Goods); @@ -20,7 +25,13 @@ public class GoodsService { public List searchSellingGoods(){return goodsMapper.searchSellingGoods();}//一页8条 public List searchFreezingGoods(String seller_username){return goodsMapper.searchFreezingGoods(seller_username);}//一页10条 public List searchHistoryGoods(String seller_username){ return goodsMapper.searchHistoryGoods(seller_username);}//一页10条 - public int updateGoods(Goods newgoods){ return goodsMapper.updateGoods(newgoods);} + public int updateGoods(Goods newgoods){ + if (newgoods.getGoods_stock() == 0){ + goodsMapper.updateGoodsState(newgoods.getSeller_username(),newgoods.getItem_id(),3); + }else if (newgoods.getGoods_stock() > 0){ + goodsMapper.updateGoodsState(newgoods.getSeller_username(),newgoods.getItem_id(),1); + } + return goodsMapper.updateGoods(newgoods);} public List searchWelcomeGoods(){return goodsMapper.searchWelcomeGoods();} public boolean isHaveSellingGoods(String username){ if(goodsMapper.isHaveSellingGoods(username)==null){ @@ -29,7 +40,19 @@ public class GoodsService { return true; } } - public List searchGoodsByCategory(int goods_category){return goodsMapper.searchGoodsByCategory(goods_category);} + public List searchGoodsByCategory(int goods_category){ + List goodsList = new ArrayList(); + List categoryList = categoryMapper.searchChildCategory(goods_category); + if (categoryList != null){ + for (Category category:categoryList + ) { + List goods = goodsMapper.searchGoodsByCategory(category.getCategory_id()); + goodsList.addAll(goods); + } + }else + goodsList = goodsMapper.searchGoodsByCategory(goods_category); + return goodsList; + } public List searchGoodsByKeyName(String key_name){return goodsMapper.searchGoodsByKeyName(key_name);} // public int reduceGoodStock(int item_id,int reduce_sum){ // Goods good = goodsMapper.searchGoods(item_id); @@ -42,5 +65,17 @@ public class GoodsService { // return goodsMapper.updateGoodStock(item_id,new_stock); // } public int updateGoodStock(int item_id,int new_stock){return goodsMapper.updateGoodStock(item_id,new_stock);} - public List searchGoodsByCategoryAndKeyName(int goods_category,String key_name){return goodsMapper.searchGoodsByCategoryAndKeyName(goods_category,key_name);} + public List searchGoodsByCategoryAndKeyName(int goods_category,String key_name){ + List goodsList = null; + List categoryList = categoryMapper.searchChildCategory(goods_category); + if (categoryList != null){ + for (Category category:categoryList + ) { + List goods = goodsMapper.searchGoodsByCategoryAndKeyName(category.getCategory_id(),key_name); + goodsList.addAll(goods); + } + }else + goodsList = goodsMapper.searchGoodsByCategoryAndKeyName(goods_category,key_name); + return goodsList; + } } diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 2c5140e..e82961a 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -4,6 +4,10 @@ + + + + @@ -79,6 +83,18 @@ itemId, + + goodsName, + + + goodsImg, + + + goodsDiscribe, + + + goodsPrice, + sellerUsername, @@ -112,6 +128,18 @@ #{item_id,jdbcType=INTEGER}, + + #{goods_name,jdbcType=VARCHAR}, + + + #{goods_img,jdbcType=VARCHAR}, + + + #{goods_discribe,jdbcType=VARCHAR}, + + + #{goods_price,jdbcType=REAL}, + #{seller_username,jdbcType=VARCHAR}, diff --git "a/\346\216\245\345\217\243\346\226\207\346\241\243.md" "b/\346\216\245\345\217\243\346\226\207\346\241\243.md" new file mode 100644 index 0000000..da7e75e --- /dev/null +++ "b/\346\216\245\345\217\243\346\226\207\346\241\243.md" @@ -0,0 +1,1532 @@ +# User + +## 登陆 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/login + +#### 线上 +>http://souldays.top:8083/user/login + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入用户名和密码 +* 实现登陆功能 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| +|password|密码|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "permission": 2, + "message": "success", + "username ": "admin", + "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJhZG1pbiIsImV4cCI6MTYzODU4NDk2NSwiaWF0IjoxNjM4NTQxNzY1LCJ1c2VybmFtZSI6ImFkbWluIn0.eYprmaSIWmPd8mzI58dKpXVEwZ-uc-eggJl3MeaX2Ik" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|permission|权限|int|-| +|token|token|String|-| +|username|用户名|String|-| +|message|调用信息|String|-| + + + +## 获取用户信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/getUserInfo + +#### 线上 +>http://souldays.top:8083/user/getUserInfo + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入用户名 +* 获取用户信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success", + "user": { + "password": "wxy123", + "permission": 1, + "phonenumber": "12345678900", + "address": "浙江工商大学", + "realname": "纹宗", + "userName": "xyWei", + "userHead": "http://cdn.souldays.top/image/2021-11-14-9565b3f30f124a02acc5e46da020afff.jpg", + "nickName": "纹宗" + } +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|user|用户信息|User|-| +|message|调用信息|String|-| + + + +## 修改密码 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/updatePassword + +#### 线上 +>http://souldays.top:8083/user/updatePassword + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入用户名,旧密码,新密码 +* 实现修改密码 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| +|oldPassword|旧密码|String|Y|-| +|newPassword|新密码|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 注册 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/registerUser + +#### 线上 +>http://souldays.top:8083/user/registerUser + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入注册用户信息 +* 实现注册用户 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| +|password|密码|String|Y|-| +|nickname|昵称|String|Y|-| +|phonenumber|电话|String|Y|-| +|address|地址|String|Y|-| +|realname|真实姓名|String|Y|-| +|user_head|头像|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 修改用户信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/updateUser + +#### 线上 +>http://souldays.top:8083/user/updateUser + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入新用户信息 +* 实现用户修改个人信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| +|nickname|昵称|String|Y|-| +|phonenumber|电话|String|Y|-| +|address|地址|String|Y|-| +|realname|真实姓名|String|Y|-| +|user_head|头像|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 卖家查看买家信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/searchAllUser + +#### 线上 +>http://souldays.top:8083/user/searchAllUser + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 实现查看全部用户信息 + +### 4) 请求参数: + +#### POST参数: 无 + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success", + "users": [ + { + "password": null, + "permission": 1, + "phonenumber": "17395711129", + "address": "翻斗花园", + "realname": "陈国栋", + "userName": "cgd", + "nickName": "cgd", + "userHead": "" + }, + { + "password": null, + "permission": 1, + "phonenumber": "12345678900", + "address": "浙江工商大学", + "realname": "纹宗", + "userName": "xyWei", + "nickName": "纹宗", + "userHead": "http://cdn.souldays.top/image/2021-11-14-9565b3f30f124a02acc5e46da020afff.jpg" + } + ] +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|users|用户信息表|List\|-| + + + +# Goods + +## 添加商品 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/addGoods + +#### 线上 +>http://souldays.top:8083/goods/addGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入商品信息 +* 实现添加商品 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|goods_name|商品名称|String|Y|-| +|goods_stock|商品数量|int|Y|-| +|goods_img|商品图片|String|Y|-| +|goods_discribe|商品描述|String|Y|-| +|goods_price|商品价格|float|Y|-| +|goods_category|商品类别|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 查询商品 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchGoods + +#### 线上 +>http://souldays.top:8083/goods/searchGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入商品编号 +* 实现查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|item_id|商品编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success", + "good": { + "item_id": 2, + "goods_name": "红牛", + "seller_username": "admin", + "goods_stock": 90, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-5715365be9f84bf191e6c10f7d02fb31.jpg", + "goods_discribe": "我出钱你出命,咱们一块神经病", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + } +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|good|商品信息|Good|-| +|message|调用信息|String|-| + + + +## 修改商品状态 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/updateGoodsState + +#### 线上 +>http://souldays.top:8083/goods/updateGoodsState + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入商品编号 +* 实现查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|买家用户名|String|Y|-| +|item_id|商品编号|int|Y|-| +|new_state|新商品状态|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + + +## 查找正在出售的商品 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchSellingGoods + +#### 线上 +>http://souldays.top:8083/goods/searchSellingGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 实现查询正在出售的商品信息 + +### 4) 请求参数: + +#### POST参数: 无 + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + }, + { + "item_id": 2, + "goods_name": "红牛", + "seller_username": "admin", + "goods_stock": 90, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-5715365be9f84bf191e6c10f7d02fb31.jpg", + "goods_discribe": "我出钱你出命,咱们一块神经病", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|goods|商品信息表|List\|-| + + + +## 查找正在出售的商品(首页使用) + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchWelcomeGoods + +#### 线上 +>http://souldays.top:8083/goods/searchWelcomeGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 实现查询正在出售的商品信息 + +### 4) 请求参数: + +#### POST参数: 无 + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + }, + { + "item_id": 2, + "goods_name": "红牛", + "seller_username": "admin", + "goods_stock": 90, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-5715365be9f84bf191e6c10f7d02fb31.jpg", + "goods_discribe": "我出钱你出命,咱们一块神经病", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + } + ], + "message": "success", + "Strings": [ + "纹***", + "纹***", + "纹***" + ] +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|goods|商品信息表|List\|-| +|Strings|加密后的已下单用户名|List\|-| + + + +## 查找已下架的商品 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchHistoryGoods + +#### 线上 +>http://souldays.top:8083/goods/searchHistoryGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入卖家用户名 +* 实现查询已下架的商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 3, + "goods_name": "AD钙奶", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-12-04-a1db84bba9ea4ed69736c756ec6955cf.jpg", + "goods_discribe": "童年的 味道", + "goods_price": 8.0, + "goods_state": 3, + "goods_category": 4 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|goods|商品信息表|List\|-| + + + +## 通过类别查询商品信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchGoodsByCategory + +#### 线上 +>http://souldays.top:8083/goods/searchGoodsByCategory + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的类别 +* 实现通过类别查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|goods_category|商品类别|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_category": 2, + "goods_price": 6.0, + "goods_state": 1 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|goods|商品信息表|List\|-| + + +## 通过关键词查询商品信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchGoodsByKeyName + +#### 线上 +>http://souldays.top:8083/goods/searchGoodsByKeyName + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的关键词 +* 实现通过关键词查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|key_name|商品关键词|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_category": 2, + "goods_price": 6.0, + "goods_state": 1 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|goods|商品信息表|List\|-| +|message|调用信息|String|-| + + + +## 通过类别和关键词查询商品信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchGoodsByCategoryAndKeyName + +#### 线上 +>http://souldays.top:8083/goods/searchGoodsByCategoryAndKeyName + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的类别和关键词 +* 实现通过类别和关键词查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|goods_category|商品类别|int|Y|-| +|key_name|商品关键词|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_category": 2, + "goods_price": 6.0, + "goods_state": 1 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|goods|商品信息表|List\|-| +|message|调用信息|String|-| + + + +## 修改商品库存 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/updateGoodStock + +#### 线上 +>http://souldays.top:8083/goods/updateGoodStock + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要修改的商品编号和新的库存 +* 实现通过类别和关键词查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|new_stock|商品库存|int|Y|-| +|item_id|商品编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +# Order + +## 查看商品意向购买买家 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/searchWantBuyerlistByItemId + +#### 线上 +>http://souldays.top:8083/order/searchWantBuyerlistByItemId + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的商品编号和卖家用户名 +* 实现通过商品编号查询商品意向买家 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| +|item_id|商品编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "orders": [ + { + "order_id": 158, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 5, + "create_time": "2021-11-15 21:16:08", + "finish_time": null + }, + { + "order_id": 160, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 5, + "create_time": "2021-11-15 21:17:20", + "finish_time": null + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|orders|订单信息表|List\|-| +|message|调用信息|String|-| + + + +## 同意意向购买买家 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/agreeOrderwanted + +#### 线上 +>http://souldays.top:8083/order/agreeOrderwanted + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要同意的订单编号和卖家用户名 +* 实现同意商品意向买家 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| +|order_id|订单编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success", + "order": { + "order_id": 158, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 1, + "create_time": "2021-11-15 21:16:08", + "finish_time": null + } +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|order|订单信息|Order|-| +|message|调用信息|String|-| + + + +## 完成交易 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/finishOrder + +#### 线上 +>http://souldays.top:8083/order/finishOrder + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要完成的订单编号和卖家用户名 +* 实现完成奖交易 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| +|order_id|订单编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 取消交易 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/cancelOrder + +#### 线上 +>http://souldays.top:8083/order/cancelOrder + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要取消的订单编号和卖家用户名 +* 实现取消交易 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| +|order_id|订单编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 意向买家下单 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/addToOrderWanted + +#### 线上 +>http://souldays.top:8083/order/addToOrderWanted + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要取消的订单编号和卖家用户名 +* 实现取消交易 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|buyer_username|买家用户名|String|Y|-| +|item_id|商品编号|int|Y|-| +|buyer_realname|买家真实姓名|String|N|-| +|buyer_phonenumber|买家电话|int|N|-| +|buyer_address|买家地址|String|N|-| +|buy_sum|购买数量|int|Y|-| +|buy_amount|订单总金额|float|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 查看历史购买记录 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/searchFinishOrderByBuyerUserName + +#### 线上 +>http://souldays.top:8083/order/searchFinishOrderByBuyerUserName + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的家买用户名 +* 实现查看历史购买记录 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|buyer_username|买家用户名|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "orders": [ + { + "order_id": 157, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 2, + "create_time": "2021-11-15 20:58:48", + "finish_time": "2021-11-15 22:59:04" + }, + { + "order_id": 158, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 2, + "create_time": "2021-11-15 21:16:08", + "finish_time": "2021-12-04 10:39:17" + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|orders|订单信息表|List\|-| +|message|调用信息|String|-| + + + +# Category + +## 添加类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/addCategory + +#### 线上 +>http://souldays.top:8083/category/addCategory + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要添加的类别类 +* 实现添加类别 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|category_name|类别名|String|Y|-| +|parentCategory_id|父类别编号|int|N|无参为父类别| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 查询父类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/searchParentCategory + +#### 线上 +>http://souldays.top:8083/category/searchParentCategory + +### 2) 调用方式:HTTP get + +### 3) 接口描述: + +* 实现查询父类别 + +### 4) 请求参数: + +#### GET参数: 无 + +### 5) 请求返回结果: + +``` +成功 +{ + "categorys": [ + { + "category_id": 1, + "category_name": "饮料茶水", + "parentCategory_id": 0 + }, + { + "category_id": 5, + "category_name": "娃哈哈", + "parentCategory_id": 0 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|categorys|类别信息表|List\|-| +|message|调用信息|String|-| + + + +## 查询子类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/searchChildCategory + +#### 线上 +>http://souldays.top:8083/category/searchChildCategory + +### 2) 调用方式:HTTP get + +### 3) 接口描述: + +* 传入需要查询的父类别编号 +* 实现查询子类别 + +### 4) 请求参数: + +#### GET参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|parentCategory_id|父类别编号|int|Y|| + +### 5) 请求返回结果: + +``` +成功 +{ + "categories": [ + { + "category_id": 2, + "category_name": "白酒", + "parentCategory_id": 1 + }, + { + "category_id": 3, + "category_name": "茶饮料", + "parentCategory_id": 1 + }, + { + "category_id": 4, + "category_name": "牛奶", + "parentCategory_id": 1 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|categorys|类别信息表|List\|-| +|message|调用信息|String|-| + + + +## 查询子类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/deleteCategoryByItemId + +#### 线上 +>http://souldays.top:8083/category/deleteCategoryByItemId + +### 2) 调用方式:HTTP delete + +### 3) 接口描述: + +* 传入需要删除的类别编号 +* 实现删除类别 + +### 4) 请求参数: + +#### DELETE参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|category_id|类别编号|int|Y|| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------|、 +|message|调用信息|String|-| + + + +## 修改类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/updateCategory + +#### 线上 +>http://souldays.top:8083/category/updateCategory + +### 2) 调用方式:HTTP delete + +### 3) 接口描述: + +* 传入需要修改的类别类 +* 实现修改类别 + +### 4) 请求参数: + +#### DELETE参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|category_id|类别编号|int|Y|| +|parentCategory_id|类别编号|int|Y|| +|category_name|类别编号|String|Y|| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| \ No newline at end of file -- Gitee From 638f77fdd6026f80f418b619cdc3f8a8527ef938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B9=E5=AE=97?= <2937021973@qq.com> Date: Mon, 6 Dec 2021 08:12:23 +0000 Subject: [PATCH 021/133] =?UTF-8?q?!9=20=E6=B3=A8=E5=86=8C=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E7=94=A8=E6=88=B7=E9=BB=98=E8=AE=A4=E5=A4=B4=E5=83=8F?= =?UTF-8?q?=20*=20=E6=B3=A8=E5=86=8C=E8=AE=BE=E7=BD=AE=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=A4=B4=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/UserController.java | 3 +++ "\346\216\245\345\217\243\346\226\207\346\241\243.md" | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index a931ae9..6e5e780 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -116,6 +116,9 @@ public class UserController { String address = request.getParameter("address"); String realname = request.getParameter("realname"); String user_head = request.getParameter("user_head"); + if (user_head == null){ + user_head = "http://cdn.souldays.top/image/2021-12-06-eb3ac6b8edac4612806b08f967b88963.jpg"; + } JSONObject jsonObject = new JSONObject(); User User = new User(username,password,nickname,permission,phonenumber,address,realname,user_head); int result = userService.registerUser(User); diff --git "a/\346\216\245\345\217\243\346\226\207\346\241\243.md" "b/\346\216\245\345\217\243\346\226\207\346\241\243.md" index da7e75e..f1f9497 100644 --- "a/\346\216\245\345\217\243\346\226\207\346\241\243.md" +++ "b/\346\216\245\345\217\243\346\226\207\346\241\243.md" @@ -183,7 +183,7 @@ |phonenumber|电话|String|Y|-| |address|地址|String|Y|-| |realname|真实姓名|String|Y|-| -|user_head|头像|String|Y|-| +|user_head|头像|String|N|-| ### 5) 请求返回结果: @@ -1529,4 +1529,4 @@ ### 6) 请求返回结果参数说明: |字段名称 |字段说明 |类型 |备注 | | -------------|--------------|--------------|------| -|message|调用信息|String|-| \ No newline at end of file +|message|调用信息|String|-| -- Gitee From 878658d9a75c0bc1cd5f8c24f0ffd21dcf8fa1da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B9=E5=AE=97?= <2937021973@qq.com> Date: Wed, 8 Dec 2021 00:33:12 +0000 Subject: [PATCH 022/133] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...45\345\217\243\346\226\207\346\241\243.md" | 1532 +++++++++++++++++ 1 file changed, 1532 insertions(+) create mode 100644 "\346\216\245\345\217\243\346\226\207\346\241\243.md" diff --git "a/\346\216\245\345\217\243\346\226\207\346\241\243.md" "b/\346\216\245\345\217\243\346\226\207\346\241\243.md" new file mode 100644 index 0000000..b6f8473 --- /dev/null +++ "b/\346\216\245\345\217\243\346\226\207\346\241\243.md" @@ -0,0 +1,1532 @@ +# User + +## 登陆 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/login + +#### 线上 +>http://souldays.top:8083/user/login + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入用户名和密码 +* 实现登陆功能 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| +|password|密码|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "permission": 2, + "message": "success", + "username ": "admin", + "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJhZG1pbiIsImV4cCI6MTYzODU4NDk2NSwiaWF0IjoxNjM4NTQxNzY1LCJ1c2VybmFtZSI6ImFkbWluIn0.eYprmaSIWmPd8mzI58dKpXVEwZ-uc-eggJl3MeaX2Ik" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|permission|权限|int|-| +|token|token|String|-| +|username|用户名|String|-| +|message|调用信息|String|-| + + + +## 获取用户信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/getUserInfo + +#### 线上 +>http://souldays.top:8083/user/getUserInfo + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入用户名 +* 获取用户信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success", + "user": { + "password": "wxy123", + "permission": 1, + "phonenumber": "12345678900", + "address": "浙江工商大学", + "realname": "纹宗", + "userName": "xyWei", + "userHead": "http://cdn.souldays.top/image/2021-11-14-9565b3f30f124a02acc5e46da020afff.jpg", + "nickName": "纹宗" + } +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|user|用户信息|User|-| +|message|调用信息|String|-| + + + +## 修改密码 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/updatePassword + +#### 线上 +>http://souldays.top:8083/user/updatePassword + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入用户名,旧密码,新密码 +* 实现修改密码 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| +|oldPassword|旧密码|String|Y|-| +|newPassword|新密码|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 注册 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/registerUser + +#### 线上 +>http://souldays.top:8083/user/registerUser + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入注册用户信息 +* 实现注册用户 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| +|password|密码|String|Y|-| +|nickname|昵称|String|Y|-| +|phonenumber|电话|String|Y|-| +|address|地址|String|Y|-| +|realname|真实姓名|String|Y|-| +|user_head|头像|String|N|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 修改用户信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/updateUser + +#### 线上 +>http://souldays.top:8083/user/updateUser + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入新用户信息 +* 实现用户修改个人信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| +|nickname|昵称|String|Y|-| +|phonenumber|电话|String|Y|-| +|address|地址|String|Y|-| +|realname|真实姓名|String|Y|-| +|user_head|头像|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 卖家查看买家信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/searchAllUser + +#### 线上 +>http://souldays.top:8083/user/searchAllUser + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 实现查看全部用户信息 + +### 4) 请求参数: + +#### POST参数: 无 + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success", + "users": [ + { + "password": null, + "permission": 1, + "phonenumber": "17395711129", + "address": "翻斗花园", + "realname": "陈国栋", + "userName": "cgd", + "nickName": "cgd", + "userHead": "" + }, + { + "password": null, + "permission": 1, + "phonenumber": "12345678900", + "address": "浙江工商大学", + "realname": "纹宗", + "userName": "xyWei", + "nickName": "纹宗", + "userHead": "http://cdn.souldays.top/image/2021-11-14-9565b3f30f124a02acc5e46da020afff.jpg" + } + ] +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|users|用户信息表|List\|-| + + + +# Goods + +## 添加商品 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/addGoods + +#### 线上 +>http://souldays.top:8083/goods/addGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入商品信息 +* 实现添加商品 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|goods_name|商品名称|String|Y|-| +|goods_stock|商品数量|int|Y|-| +|goods_img|商品图片|String|Y|-| +|goods_discribe|商品描述|String|Y|-| +|goods_price|商品价格|float|Y|-| +|goods_category|商品类别|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 查询商品 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchGoods + +#### 线上 +>http://souldays.top:8083/goods/searchGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入商品编号 +* 实现查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|item_id|商品编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success", + "good": { + "item_id": 2, + "goods_name": "红牛", + "seller_username": "admin", + "goods_stock": 90, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-5715365be9f84bf191e6c10f7d02fb31.jpg", + "goods_discribe": "我出钱你出命,咱们一块神经病", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + } +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|good|商品信息|Good|-| +|message|调用信息|String|-| + + + +## 修改商品状态 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/updateGoodsState + +#### 线上 +>http://souldays.top:8083/goods/updateGoodsState + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入商品编号 +* 实现查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|买家用户名|String|Y|-| +|item_id|商品编号|int|Y|-| +|new_state|新商品状态|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + + +## 查找正在出售的商品 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchSellingGoods + +#### 线上 +>http://souldays.top:8083/goods/searchSellingGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 实现查询正在出售的商品信息 + +### 4) 请求参数: + +#### POST参数: 无 + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + }, + { + "item_id": 2, + "goods_name": "红牛", + "seller_username": "admin", + "goods_stock": 90, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-5715365be9f84bf191e6c10f7d02fb31.jpg", + "goods_discribe": "我出钱你出命,咱们一块神经病", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|goods|商品信息表|List\|-| + + + +## 查找正在出售的商品(首页使用) + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchWelcomeGoods + +#### 线上 +>http://souldays.top:8083/goods/searchWelcomeGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 实现查询正在出售的商品信息 + +### 4) 请求参数: + +#### POST参数: 无 + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + }, + { + "item_id": 2, + "goods_name": "红牛", + "seller_username": "admin", + "goods_stock": 90, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-5715365be9f84bf191e6c10f7d02fb31.jpg", + "goods_discribe": "我出钱你出命,咱们一块神经病", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + } + ], + "message": "success", + "Strings": [ + "纹***", + "纹***", + "纹***" + ] +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|goods|商品信息表|List\|-| +|Strings|加密后的已下单用户名|List\|-| + + + +## 查找已下架的商品 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchHistoryGoods + +#### 线上 +>http://souldays.top:8083/goods/searchHistoryGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入卖家用户名 +* 实现查询已下架的商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 3, + "goods_name": "AD钙奶", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-12-04-a1db84bba9ea4ed69736c756ec6955cf.jpg", + "goods_discribe": "童年的 味道", + "goods_price": 8.0, + "goods_state": 3, + "goods_category": 4 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|goods|商品信息表|List\|-| + + + +## 通过类别查询商品信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchGoodsByCategory + +#### 线上 +>http://souldays.top:8083/goods/searchGoodsByCategory + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的类别 +* 实现通过类别查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|goods_category|商品类别|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_category": 2, + "goods_price": 6.0, + "goods_state": 1 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|goods|商品信息表|List\|-| + + +## 通过关键词查询商品信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchGoodsByKeyName + +#### 线上 +>http://souldays.top:8083/goods/searchGoodsByKeyName + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的关键词 +* 实现通过关键词查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|key_name|商品关键词|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_category": 2, + "goods_price": 6.0, + "goods_state": 1 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|goods|商品信息表|List\|-| +|message|调用信息|String|-| + + + +## 通过类别和关键词查询商品信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchGoodsByCategoryAndKeyName + +#### 线上 +>http://souldays.top:8083/goods/searchGoodsByCategoryAndKeyName + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的类别和关键词 +* 实现通过类别和关键词查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|goods_category|商品类别|int|Y|-| +|key_name|商品关键词|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_category": 2, + "goods_price": 6.0, + "goods_state": 1 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|goods|商品信息表|List\|-| +|message|调用信息|String|-| + + + +## 修改商品库存 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/updateGoodStock + +#### 线上 +>http://souldays.top:8083/goods/updateGoodStock + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要修改的商品编号和新的库存 +* 实现通过类别和关键词查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|new_stock|商品库存|int|Y|-| +|item_id|商品编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +# Order + +## 查看商品意向购买买家 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/searchWantBuyerlistByItemId + +#### 线上 +>http://souldays.top:8083/order/searchWantBuyerlistByItemId + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的商品编号和卖家用户名 +* 实现通过商品编号查询商品意向买家 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| +|item_id|商品编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "orders": [ + { + "order_id": 158, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 5, + "create_time": "2021-11-15 21:16:08", + "finish_time": null + }, + { + "order_id": 160, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 5, + "create_time": "2021-11-15 21:17:20", + "finish_time": null + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|orders|订单信息表|List\|-| +|message|调用信息|String|-| + + + +## 同意意向购买买家 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/agreeOrderwanted + +#### 线上 +>http://souldays.top:8083/order/agreeOrderwanted + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要同意的订单编号和卖家用户名 +* 实现同意商品意向买家 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| +|order_id|订单编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success", + "order": { + "order_id": 158, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 1, + "create_time": "2021-11-15 21:16:08", + "finish_time": null + } +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|order|订单信息|Order|-| +|message|调用信息|String|-| + + + +## 完成交易 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/finishOrder + +#### 线上 +>http://souldays.top:8083/order/finishOrder + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要完成的订单编号和卖家用户名 +* 实现完成奖交易 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| +|order_id|订单编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 取消交易 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/cancelOrder + +#### 线上 +>http://souldays.top:8083/order/cancelOrder + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要取消的订单编号和卖家用户名 +* 实现取消交易 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| +|order_id|订单编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 意向买家下单 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/addToOrderWanted + +#### 线上 +>http://souldays.top:8083/order/addToOrderWanted + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要取消的订单编号和卖家用户名 +* 实现取消交易 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|buyer_username|买家用户名|String|Y|-| +|item_id|商品编号|int|Y|-| +|buyer_realname|买家真实姓名|String|N|-| +|buyer_phonenumber|买家电话|int|N|-| +|buyer_address|买家地址|String|N|-| +|buy_sum|购买数量|int|Y|-| +|buy_amount|订单总金额|float|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 查看历史购买记录 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/searchFinishOrderByBuyerUserName + +#### 线上 +>http://souldays.top:8083/order/searchFinishOrderByBuyerUserName + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的家买用户名 +* 实现查看历史购买记录 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|buyer_username|买家用户名|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "orders": [ + { + "order_id": 157, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 2, + "create_time": "2021-11-15 20:58:48", + "finish_time": "2021-11-15 22:59:04" + }, + { + "order_id": 158, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 2, + "create_time": "2021-11-15 21:16:08", + "finish_time": "2021-12-04 10:39:17" + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|orders|订单信息表|List\|-| +|message|调用信息|String|-| + + + +# Category + +## 添加类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/addCategory + +#### 线上 +>http://souldays.top:8083/category/addCategory + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要添加的类别类 +* 实现添加类别 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|category_name|类别名|String|Y|-| +|parentCategory_id|父类别编号|int|N|无参为父类别| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 查询父类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/searchParentCategory + +#### 线上 +>http://souldays.top:8083/category/searchParentCategory + +### 2) 调用方式:HTTP get + +### 3) 接口描述: + +* 实现查询父类别 + +### 4) 请求参数: + +#### GET参数: 无 + +### 5) 请求返回结果: + +``` +成功 +{ + "categorys": [ + { + "category_id": 1, + "category_name": "饮料茶水", + "parentCategory_id": 0 + }, + { + "category_id": 5, + "category_name": "娃哈哈", + "parentCategory_id": 0 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|categorys|类别信息表|List\|-| +|message|调用信息|String|-| + + + +## 查询子类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/searchChildCategory + +#### 线上 +>http://souldays.top:8083/category/searchChildCategory + +### 2) 调用方式:HTTP get + +### 3) 接口描述: + +* 传入需要查询的父类别编号 +* 实现查询子类别 + +### 4) 请求参数: + +#### GET参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|parentCategory_id|父类别编号|int|Y|| + +### 5) 请求返回结果: + +``` +成功 +{ + "categories": [ + { + "category_id": 2, + "category_name": "白酒", + "parentCategory_id": 1 + }, + { + "category_id": 3, + "category_name": "茶饮料", + "parentCategory_id": 1 + }, + { + "category_id": 4, + "category_name": "牛奶", + "parentCategory_id": 1 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|categorys|类别信息表|List\|-| +|message|调用信息|String|-| + + + +## 查询子类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/deleteCategoryByItemId + +#### 线上 +>http://souldays.top:8083/category/deleteCategoryByItemId + +### 2) 调用方式:HTTP delete + +### 3) 接口描述: + +* 传入需要删除的类别编号 +* 实现删除类别 + +### 4) 请求参数: + +#### DELETE参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|category_id|类别编号|int|Y|| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------|、 +|message|调用信息|String|-| + + + +## 修改类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/updateCategory + +#### 线上 +>http://souldays.top:8083/category/updateCategory + +### 2) 调用方式:HTTP delete + +### 3) 接口描述: + +* 传入需要修改的类别类 +* 实现修改类别 + +### 4) 请求参数: + +#### DELETE参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|category_id|类别编号|int|Y|| +|parentCategory_id|类别编号|int|Y|| +|category_name|类别编号|String|Y|| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| -- Gitee From 86ed3515c636e1e66746b68145aec0edc1566fab Mon Sep 17 00:00:00 2001 From: WenZongX <2937021973@qq.com> Date: Wed, 8 Dec 2021 09:01:23 +0800 Subject: [PATCH 023/133] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=B8=AD=E7=9A=84=E6=8A=A5=E9=94=99=E4=BF=A1?= =?UTF-8?q?=E6=81=AFinfo=E7=9A=84=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/UserController.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index 293726b..29a9853 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -108,6 +108,7 @@ public class UserController { @RequestMapping(value = "/registerUser") public Object registerUser(HttpServletRequest request, HttpServletResponse response){ String message = "error"; + String info="注册成功"; String username = request.getParameter("username"); String password = request.getParameter("password"); String nickname = request.getParameter("nickname"); @@ -144,6 +145,9 @@ public class UserController { else if (result==-7){ info = "地址过长"; } + if (info != null){ + jsonObject.put("info",info); + } jsonObject.put("message",message); return jsonObject; } -- Gitee From 61ab098aab2287eae86b749560bc787234526a4c Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 11 Dec 2021 11:19:27 +0800 Subject: [PATCH 024/133] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E6=B3=A8=E5=86=8Cr?= =?UTF-8?q?equestMapping=E6=94=B9=E6=88=90postMapping?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/UserController.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index 29a9853..40a7684 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -105,24 +105,26 @@ public class UserController { } //用户注册 - @RequestMapping(value = "/registerUser") - public Object registerUser(HttpServletRequest request, HttpServletResponse response){ + @PostMapping(value = "/registerUser") + public Object registerUser(@RequestBody User user){ String message = "error"; String info="注册成功"; - String username = request.getParameter("username"); - String password = request.getParameter("password"); - String nickname = request.getParameter("nickname"); + String username = user.getUserName(); + String password = user.getPassword(); + String nickname = user.getNickName(); int permission = 1; - String phonenumber = request.getParameter("phonenumber"); - String address = request.getParameter("address"); - String realname = request.getParameter("realname"); - String user_head = request.getParameter("user_head"); + String phonenumber = user.getPhonenumber(); + String address = user.getAddress(); + String realname = user.getRealname(); + String user_head = user.getUserHead(); if (user_head == null){ user_head = "http://cdn.souldays.top/image/2021-12-06-eb3ac6b8edac4612806b08f967b88963.jpg"; } JSONObject jsonObject = new JSONObject(); - User User = new User(username,password,nickname,permission,phonenumber,address,realname,user_head); - int result = userService.registerUser(User); + User newUser = new User(username,password,nickname,permission,phonenumber,address,realname,user_head); + System.out.println(user); + System.out.println(newUser); + int result = userService.registerUser(newUser); if (result >= 1){ message = "success"; }else if (result==-1){ -- Gitee From c086d2116edc54336b3c1819ff04a04635950523 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 11 Dec 2021 11:30:02 +0800 Subject: [PATCH 025/133] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E6=B3=A8=E5=86=8Cr?= =?UTF-8?q?equestMapping=E6=94=B9=E6=88=90postMapping?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/UserController.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index 40a7684..9106a37 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -122,8 +122,6 @@ public class UserController { } JSONObject jsonObject = new JSONObject(); User newUser = new User(username,password,nickname,permission,phonenumber,address,realname,user_head); - System.out.println(user); - System.out.println(newUser); int result = userService.registerUser(newUser); if (result >= 1){ message = "success"; -- Gitee From 5c23e6bc66de8ec8a56d7dd665d59238fbded5dd Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 11 Dec 2021 12:27:26 +0800 Subject: [PATCH 026/133] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=88=B0postMapping?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/UserController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index 9106a37..e7c2ad9 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -32,11 +32,11 @@ public class UserController { private TokenService tokenService; //登录验证账号密码 - @RequestMapping(value = "/login") - public Object loginByPassword(HttpServletRequest request, HttpServletResponse response){ + @PostMapping(value = "/login") + public Object loginByPassword(@RequestBody User tryingUser){ String message = "error"; - String username = request.getParameter("username"); - String password = request.getParameter("password"); + String username =tryingUser.getUserName(); + String password = tryingUser.getPassword(); JSONObject jsonObject = new JSONObject(); if(username.length()<=10&&username.length()>=3&&password.length()>=7&&password.length()<=15){ User user = userService.login(username,password); -- Gitee From 2838d6b4a3a0464be1e50e02cf1cf146d8f38198 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 11 Dec 2021 23:24:23 +0800 Subject: [PATCH 027/133] =?UTF-8?q?=E8=A7=84=E8=8C=83controller=201.?= =?UTF-8?q?=E4=BF=AE=E6=94=B9getUserInfo=202.=E4=BF=AE=E6=94=B9updatePassw?= =?UTF-8?q?ord=203.=E4=BF=AE=E6=94=B9updateUser=204.=E4=BF=AE=E6=94=B9sear?= =?UTF-8?q?chFinishOrderByUserName?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/OrderController.java | 7 +++-- .../com/shop/controller/UserController.java | 30 +++++++++---------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 05afba3..934b149 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -10,7 +10,9 @@ import com.shop.service.OrderService; import com.shop.service.UserService; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; @@ -202,10 +204,9 @@ public class OrderController { } //根据用户名查看历史购买记录 - @RequestMapping("/searchFinishOrderByBuyerUserName") - public Object searchFinishOrderByBuyerName(HttpServletRequest request, HttpServletResponse response){ + @GetMapping("/searchFinishOrderByBuyerUserName") + public Object searchFinishOrderByBuyerName(@RequestParam String buyer_username){ String message = "error"; - String buyer_username = request.getParameter("buyer_username"); JSONObject jsonObject = new JSONObject(); List orderList = orderService.searchFinishOrderByBuyerName(buyer_username); message = "success"; diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index e7c2ad9..dd6e453 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -55,10 +55,9 @@ public class UserController { } //获取用户信息 - @RequestMapping(value = "/getUserInfo") - public Object getUserInfo(HttpServletRequest request, HttpServletResponse response){ + @GetMapping(value = "/getUserInfo") + public Object getUserInfo(@RequestParam (defaultValue = "1") String username){ String message = "error"; - String username = request.getParameter("username"); JSONObject jsonObject = new JSONObject(); User user = userService.getUserInfo(username); if (user != null){ @@ -72,12 +71,11 @@ public class UserController { } //修改密码 - @RequestMapping(value = "/updatePassword") - public Object updatePasswordByUsername(HttpServletRequest request, HttpServletResponse response){ + @PutMapping(value = "/updatePassword") + public Object updatePasswordByUsername(@RequestParam String username, + @RequestParam String oldPassword, + @RequestParam String newPassword){ String message = "error"; - String username = request.getParameter("username"); - String oldPassword = request.getParameter("oldPassword"); - String newPassword = request.getParameter("newPassword"); JSONObject jsonObject = new JSONObject(); User user = userService.login(username,oldPassword); int result = 0; @@ -153,15 +151,15 @@ public class UserController { } //用户修改个人信息 - @RequestMapping(value = "/updateUser") - public Object updateUser(HttpServletRequest request, HttpServletResponse response){ + @PutMapping(value = "/updateUser") + public Object updateUser(@RequestBody User user){ String message = "error"; - String username = request.getParameter("username"); - String nickname = request.getParameter("nickname"); - String realname = request.getParameter("realname"); - String phonenumber = request.getParameter("phonenumber"); - String address = request.getParameter("address"); - String user_head = request.getParameter("user_head"); + String username = user.getUserName(); + String nickname = user.getNickName(); + String realname = user.getRealname(); + String phonenumber = user.getPhonenumber(); + String address = user.getAddress(); + String user_head = user.getUserHead(); JSONObject jsonObject = new JSONObject(); User newUser = new User(username,nickname,phonenumber,address,realname,user_head); int result = userService.updateUser(newUser); -- Gitee From c1c8d7922698bd087a24ca31374a8545c94aa8ee Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 16 Dec 2021 21:48:45 +0800 Subject: [PATCH 028/133] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E7=9A=84=E5=8F=82=E6=95=B0=E6=94=B9=E4=B8=BA=E4=BD=BF=E7=94=A8?= =?UTF-8?q?requestBody?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/UserController.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index dd6e453..1e5bf95 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -72,15 +72,13 @@ public class UserController { //修改密码 @PutMapping(value = "/updatePassword") - public Object updatePasswordByUsername(@RequestParam String username, - @RequestParam String oldPassword, - @RequestParam String newPassword){ + public Object updatePasswordByUsername(@RequestBody Map json){ String message = "error"; JSONObject jsonObject = new JSONObject(); - User user = userService.login(username,oldPassword); + User user = userService.login(json.get("userName"),json.get("oldPassword")); int result = 0; if(user!=null){ - result = userService.updatePassword(username,newPassword); + result = userService.updatePassword(json.get("userName"),json.get("newPassword")); } if(result>=1){ message = "success"; -- Gitee From 26d673ff4cd31db8c3bdb816a640771f9d3e5b8a Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 17 Dec 2021 18:04:51 +0800 Subject: [PATCH 029/133] =?UTF-8?q?1.=E5=B0=86=E6=9F=A5=E7=9C=8B=E4=B9=B0?= =?UTF-8?q?=E5=AE=B6=E4=BF=A1=E6=81=AF=E7=9A=84=E6=8E=A5=E5=8F=A3=E8=A7=84?= =?UTF-8?q?=E8=8C=83=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/UserController.java | 6 +++--- back-end_code/src/main/java/com/shop/mapper/UserMapper.java | 2 +- .../src/main/java/com/shop/service/UserService.java | 2 +- back-end_code/src/main/resources/mapping/UserMapper.xml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index 1e5bf95..1b6258c 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -169,11 +169,11 @@ public class UserController { } //卖家查看买家信息 - @RequestMapping(value = "/searchAllUser") - public Object searchAllUser(HttpServletRequest request, HttpServletResponse response){ + @GetMapping(value = "/searchAllBuyer") + public Object searchAllBuyer(){ String message = "error"; JSONObject jsonObject = new JSONObject(); - List UserList = userService.searchAllUser(); + List UserList = userService.searchAllBuyer(); message = "success"; jsonObject.put("users",UserList); // jsonObject.put("User",userService.searchAllUser()); diff --git a/back-end_code/src/main/java/com/shop/mapper/UserMapper.java b/back-end_code/src/main/java/com/shop/mapper/UserMapper.java index 30aa7b1..567a515 100644 --- a/back-end_code/src/main/java/com/shop/mapper/UserMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/UserMapper.java @@ -49,6 +49,6 @@ public interface UserMapper { * @param * @return */ - List searchAllUser(); + List searchAllBuyer(); } diff --git a/back-end_code/src/main/java/com/shop/service/UserService.java b/back-end_code/src/main/java/com/shop/service/UserService.java index 1982763..e49061d 100644 --- a/back-end_code/src/main/java/com/shop/service/UserService.java +++ b/back-end_code/src/main/java/com/shop/service/UserService.java @@ -40,5 +40,5 @@ public class UserService { return userMapper.registerUser(user); } public int updateUser(User User){return userMapper.updateUser(User);} - public List searchAllUser(){return userMapper.searchAllUser();} + public List searchAllBuyer(){return userMapper.searchAllBuyer();} } diff --git a/back-end_code/src/main/resources/mapping/UserMapper.xml b/back-end_code/src/main/resources/mapping/UserMapper.xml index 70d3984..7b08e5f 100644 --- a/back-end_code/src/main/resources/mapping/UserMapper.xml +++ b/back-end_code/src/main/resources/mapping/UserMapper.xml @@ -114,7 +114,7 @@ - select userName,nickName,phoneNumber,address,realName,userHead,permission from user where permission = 1 -- Gitee From 1c11fc9275a3affc2460d0e4ea8481839c956dfe Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 17 Dec 2021 21:03:30 +0800 Subject: [PATCH 030/133] =?UTF-8?q?1.=E5=B0=86=E6=9F=A5=E7=9C=8B=E5=86=BB?= =?UTF-8?q?=E7=BB=93=E5=95=86=E5=93=81=E6=94=B9=E6=88=90getMapping?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/GoodsController.java | 6 +++--- .../src/main/java/com/shop/service/UserService.java | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index f8e8e92..85cc817 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -8,6 +8,7 @@ import com.shop.service.UploadImageService; import com.shop.utils.StringUtil; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -200,10 +201,9 @@ public class GoodsController { } //查看冻结商品 - @RequestMapping(value = "/searchFreezingGoods") - public Object searchFreezingGoods(HttpServletRequest request, HttpServletResponse response){ + @GetMapping(value = "/searchFreezingGoods") + public Object searchFreezingGoods(@RequestParam String seller_username){ String message = "error"; - String seller_username = request.getParameter("seller_username"); JSONObject jsonObject = new JSONObject(); List goodsList = goodsService.searchFreezingGoods(seller_username); List list = new ArrayList(); diff --git a/back-end_code/src/main/java/com/shop/service/UserService.java b/back-end_code/src/main/java/com/shop/service/UserService.java index e49061d..e95dd79 100644 --- a/back-end_code/src/main/java/com/shop/service/UserService.java +++ b/back-end_code/src/main/java/com/shop/service/UserService.java @@ -41,4 +41,5 @@ public class UserService { } public int updateUser(User User){return userMapper.updateUser(User);} public List searchAllBuyer(){return userMapper.searchAllBuyer();} + } -- Gitee From 7d6fa118f1d2b74e6b0501cf4b7e711a07cb2818 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 19 Dec 2021 17:11:12 +0800 Subject: [PATCH 031/133] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E5=95=86=E5=93=81?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=94=B9=E6=88=90putMapping?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/shop/controller/GoodsController.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 85cc817..b92dbd9 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -8,10 +8,7 @@ import com.shop.service.UploadImageService; import com.shop.utils.StringUtil; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -89,12 +86,11 @@ public class GoodsController { } //修改商品状态 - @RequestMapping(value = "/updateGoodsState") - public Object updateGoodsState(HttpServletRequest request, HttpServletResponse response){ + @PutMapping (value = "/updateGoodsState") + public Object updateGoodsState(@RequestParam String seller_username, + @RequestParam int item_id, + @RequestParam int new_state){ String message = "error"; - String seller_username = request.getParameter("seller_username"); - int item_id = Integer.parseInt(request.getParameter("item_id")); - int new_state = Integer.parseInt(request.getParameter("new_state")); JSONObject jsonObject = new JSONObject(); int result = goodsService.updateGoodsState(seller_username,item_id, new_state); if (result >= 1) { -- Gitee From 09e4bfa8caaf13e87de3b1e28b4a061d9dab69f7 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 19 Dec 2021 20:57:50 +0800 Subject: [PATCH 032/133] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E5=95=86=E5=93=81?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=9A=84RequestBody=E6=94=B9=E6=88=90Map?= =?UTF-8?q?=E5=BD=A2=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/GoodsController.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index b92dbd9..6d04732 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -18,6 +18,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/goods") @@ -87,12 +88,10 @@ public class GoodsController { //修改商品状态 @PutMapping (value = "/updateGoodsState") - public Object updateGoodsState(@RequestParam String seller_username, - @RequestParam int item_id, - @RequestParam int new_state){ + public Object updateGoodsState(@RequestBody Map json){ String message = "error"; JSONObject jsonObject = new JSONObject(); - int result = goodsService.updateGoodsState(seller_username,item_id, new_state); + int result = goodsService.updateGoodsState(json.get("seller_username"),Integer.parseInt(json.get("item_id")), Integer.parseInt(json.get("new_state"))); if (result >= 1) { message = "success"; }else { -- Gitee From c603ef165a3fc8d3883a52ac5c746486fbd01f0d Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 19 Dec 2021 22:22:59 +0800 Subject: [PATCH 033/133] =?UTF-8?q?1.=E9=80=9A=E8=BF=87=E7=B1=BB=E5=88=AB?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=95=86=E5=93=81=E6=94=B9=E6=88=90getMappin?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/GoodsController.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 6d04732..68737ba 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -225,10 +225,9 @@ public class GoodsController { } //通过类别查询商品 - @RequestMapping(value = "/searchGoodsByCategory") - public Object searchGoodsByCategory(HttpServletRequest request, HttpServletResponse response){ + @GetMapping(value = "/searchGoodsByCategory") + public Object searchGoodsByCategory(@RequestParam Integer goods_category){ String message = "error"; - int goods_category = Integer.parseInt(request.getParameter("goods_category")); // System.out.println(goods_category); JSONObject jsonObject = new JSONObject(); List goodsList =goodsService.searchGoodsByCategory(goods_category); -- Gitee From 33822a2ad954c73da2260d1b34ae67533fa80113 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 19 Dec 2021 22:48:24 +0800 Subject: [PATCH 034/133] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E7=B1=BB=E5=88=AB?= =?UTF-8?q?=E6=97=B6=E5=A2=9E=E5=8A=A0=E9=87=8D=E5=A4=8D=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=EF=BC=8C=E5=A6=82=E6=9E=9C=E9=87=8D=E5=A4=8D=E5=88=99=E4=B8=8D?= =?UTF-8?q?=E7=BB=99=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/CategoryController.java | 17 +++++++++++------ .../java/com/shop/mapper/CategoryMapper.java | 7 ++++++- .../java/com/shop/service/CategoryService.java | 1 + .../main/resources/mapping/CategoryMapper.xml | 3 +++ 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/CategoryController.java b/back-end_code/src/main/java/com/shop/controller/CategoryController.java index bad8c58..7a50eb0 100644 --- a/back-end_code/src/main/java/com/shop/controller/CategoryController.java +++ b/back-end_code/src/main/java/com/shop/controller/CategoryController.java @@ -23,13 +23,18 @@ public class CategoryController { public Object addCategory(@RequestBody Category category){ String message = "error"; String category_name = category.getCategory_name(); - int parentCategory_id = category.getParentCategory_id(); JSONObject jsonObject = new JSONObject(); - int result = CategoryService.addCategory(category_name,parentCategory_id); - if(result>=1){ - message = "success"; - } else{ - message = "error"; + Category categoryExist = CategoryService.searchCategoryByName(category_name); + if(categoryExist!=null){ + message="类别已存在"; + }else { + int parentCategory_id = category.getParentCategory_id(); + int result = CategoryService.addCategory(category_name,parentCategory_id); + if(result>=1){ + message = "success"; + } else{ + message = "error"; + } } jsonObject.put("message",message); return jsonObject; diff --git a/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java b/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java index 8e9b7d2..061e6c5 100644 --- a/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java @@ -34,7 +34,12 @@ public interface CategoryMapper { * @return */ int deleteCategoryByItemId(int category_id); - + /** + * 根据categoryName查找category + * @param category_name + * @return + */ + Category searchCategoryByName(String category_name); /** * 根据categoryId修改Category * @param Category diff --git a/back-end_code/src/main/java/com/shop/service/CategoryService.java b/back-end_code/src/main/java/com/shop/service/CategoryService.java index 034d8d1..32be5d2 100644 --- a/back-end_code/src/main/java/com/shop/service/CategoryService.java +++ b/back-end_code/src/main/java/com/shop/service/CategoryService.java @@ -17,4 +17,5 @@ public class CategoryService { public List searchChildCategory(int parentCategory_id){return categoryMapper.searchChildCategory(parentCategory_id);} public int deleteCategoryByItemId(int category_id){return categoryMapper.deleteCategoryByItemId(category_id);} public int updateCategory(Category category){return categoryMapper.updateCategory(category);} + public Category searchCategoryByName(String category_name){return categoryMapper.searchCategoryByName(category_name);} } diff --git a/back-end_code/src/main/resources/mapping/CategoryMapper.xml b/back-end_code/src/main/resources/mapping/CategoryMapper.xml index 9d0e15f..0a26548 100644 --- a/back-end_code/src/main/resources/mapping/CategoryMapper.xml +++ b/back-end_code/src/main/resources/mapping/CategoryMapper.xml @@ -40,6 +40,9 @@ + -- Gitee From db0c628f021664707248e87773302020db970618 Mon Sep 17 00:00:00 2001 From: WenZongX <2937021973@qq.com> Date: Sun, 19 Dec 2021 23:37:12 +0800 Subject: [PATCH 035/133] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E7=B1=BB=E5=88=AB=E7=B1=BB=EF=BC=8C=E5=B9=B6=E5=AF=B9=E5=85=B6?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9F=A5=E6=94=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ShowCategoryController.java | 52 ++++++++++++++ .../java/com/shop/entity/ShowCategory.java | 67 +++++++++++++++++++ .../com/shop/mapper/ShowCategoryMapper.java | 25 +++++++ .../com/shop/service/ShowCategoryService.java | 32 +++++++++ .../resources/mapping/ShowCategoryMapper.xml | 27 ++++++++ 5 files changed, 203 insertions(+) create mode 100644 back-end_code/src/main/java/com/shop/controller/ShowCategoryController.java create mode 100644 back-end_code/src/main/java/com/shop/entity/ShowCategory.java create mode 100644 back-end_code/src/main/java/com/shop/mapper/ShowCategoryMapper.java create mode 100644 back-end_code/src/main/java/com/shop/service/ShowCategoryService.java create mode 100644 back-end_code/src/main/resources/mapping/ShowCategoryMapper.xml diff --git a/back-end_code/src/main/java/com/shop/controller/ShowCategoryController.java b/back-end_code/src/main/java/com/shop/controller/ShowCategoryController.java new file mode 100644 index 0000000..b260bd9 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/ShowCategoryController.java @@ -0,0 +1,52 @@ +package com.shop.controller; + +import com.shop.entity.Category; +import com.shop.entity.ShowCategory; +import com.shop.service.ShowCategoryService; +import net.minidev.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +@RestController +@RequestMapping("/showcategory") +public class ShowCategoryController { + + @Autowired + private ShowCategoryService ShowCategoryService; + + //查询ShowCategory + @GetMapping(value = "/searchCategory") + public Object searchShowCategory(){ + String message = "error"; + JSONObject jsonObject = new JSONObject(); + List ShowCategoryList = ShowCategoryService.searchShowCategory(); + if(ShowCategoryList != null){ + message = "success"; + jsonObject.put("showcategorys", ShowCategoryList); + } else{ + message = "error"; + } + jsonObject.put("message",message); + return jsonObject; + } + + //修改ShowCategory + @PutMapping(value = "/updateShowCategory") + public Object updateShowCategory(@RequestBody List Categorys){ + String message = "error"; + JSONObject jsonObject = new JSONObject(); + System.out.println(Categorys); + int result = ShowCategoryService.updateShowCategory(Categorys); + if (result >= 1){ + message = "success"; + }else { + message = "error"; + } + jsonObject.put("message",message); + return jsonObject; + } + +} diff --git a/back-end_code/src/main/java/com/shop/entity/ShowCategory.java b/back-end_code/src/main/java/com/shop/entity/ShowCategory.java new file mode 100644 index 0000000..49bd292 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/ShowCategory.java @@ -0,0 +1,67 @@ +package com.shop.entity; + +public class ShowCategory { + private int show_id; + private int sequence; + private int category_id; + private String category_name; + + public ShowCategory(int sequence, int category_id, String category_name) { + this.sequence = sequence; + this.category_id = category_id; + this.category_name = category_name; + } + + public ShowCategory() { + } + + public ShowCategory(int show_id, int sequence) { + this.show_id = show_id; + this.sequence = sequence; + this.category_id = 0; + this.category_name = null; + } + + public int getShow_id() { + return show_id; + } + + public ShowCategory(int show_id) { + this.show_id = show_id; + } + + public void setShow_id(int show_id) { + this.show_id = show_id; + } + + public ShowCategory(int show_id, int sequence, int category_id, String category_name) { + this.show_id = show_id; + this.sequence = sequence; + this.category_id = category_id; + this.category_name = category_name; + } + + public int getSequence() { + return sequence; + } + + public void setSequence(int sequence) { + this.sequence = sequence; + } + + public int getCategory_id() { + return category_id; + } + + public void setCategory_id(int category_id) { + this.category_id = category_id; + } + + public String getCategory_name() { + return category_name; + } + + public void setCategory_name(String category_name) { + this.category_name = category_name; + } +} diff --git a/back-end_code/src/main/java/com/shop/mapper/ShowCategoryMapper.java b/back-end_code/src/main/java/com/shop/mapper/ShowCategoryMapper.java new file mode 100644 index 0000000..948e372 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/mapper/ShowCategoryMapper.java @@ -0,0 +1,25 @@ +package com.shop.mapper; + +import com.shop.entity.Category; +import com.shop.entity.ShowCategory; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ShowCategoryMapper { + + /** + * 修改ShowCategory + * @param ShowCategory + * @return + */ + int updateShowCategory(ShowCategory ShowCategory); + + /** + * 查询ShowCategory + * @param + * @return + */ + List searchShowCategory(); +} diff --git a/back-end_code/src/main/java/com/shop/service/ShowCategoryService.java b/back-end_code/src/main/java/com/shop/service/ShowCategoryService.java new file mode 100644 index 0000000..e860ab6 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/ShowCategoryService.java @@ -0,0 +1,32 @@ +package com.shop.service; + +import com.shop.entity.Category; +import com.shop.entity.ShowCategory; +import com.shop.mapper.ShowCategoryMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ShowCategoryService { + @Autowired + private ShowCategoryMapper ShowCategoryMapper; + + public List searchShowCategory(){return ShowCategoryMapper.searchShowCategory();} + public int updateShowCategory(List Categorys){ + int i = 1,sequence=1; + for (Category Category:Categorys + ) { + if (Category.getParentCategory_id() == 0 && Category.getCategory_name() != null){ + ShowCategory showCategory = new ShowCategory(i,sequence,Category.getCategory_id(),Category.getCategory_name()); + ShowCategoryMapper.updateShowCategory(showCategory); + sequence++;i++; + } + } + for (;i<=5;i++){ + ShowCategory showCategory = new ShowCategory(i,0); + ShowCategoryMapper.updateShowCategory(showCategory); + } + return 1;} +} diff --git a/back-end_code/src/main/resources/mapping/ShowCategoryMapper.xml b/back-end_code/src/main/resources/mapping/ShowCategoryMapper.xml new file mode 100644 index 0000000..fe62f36 --- /dev/null +++ b/back-end_code/src/main/resources/mapping/ShowCategoryMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + update showcategory + + Sequence = #{sequence,jdbcType=INTEGER}, + categoryId = #{category_id,jdbcType=INTEGER}, + categoryName = #{category_name,jdbcType=VARCHAR}, + + where ShowId = #{show_id,jdbcType=INTEGER} + + + + + + -- Gitee From eaf36e755f8b6379ab479db787be5efb51ee1556 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 20 Dec 2021 12:55:28 +0800 Subject: [PATCH 036/133] =?UTF-8?q?1.=E6=9F=A5=E8=AF=A2=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E5=95=86=E5=93=81=E6=94=B9=E6=88=90getMapping=202.=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=A0=B9=E6=8D=AE=E5=8D=96=E5=AE=B6=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=90=8D=E6=9F=A5=E8=AF=A2=E6=89=80=E6=9C=89=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=B9=B6=E6=B5=8B=E8=AF=95=E9=80=9A=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/shop/controller/GoodsController.java | 6 +++--- .../java/com/shop/controller/OrderController.java | 11 +++++++++++ .../src/main/java/com/shop/mapper/OrderMapper.java | 10 +++++++--- .../src/main/java/com/shop/service/OrderService.java | 3 ++- .../src/main/resources/mapping/OrderMapper.xml | 7 +++++-- 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 68737ba..a40e5b7 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -92,6 +92,7 @@ public class GoodsController { String message = "error"; JSONObject jsonObject = new JSONObject(); int result = goodsService.updateGoodsState(json.get("seller_username"),Integer.parseInt(json.get("item_id")), Integer.parseInt(json.get("new_state"))); + if (result >= 1) { message = "success"; }else { @@ -128,10 +129,9 @@ public class GoodsController { } //在goods表中查询历史商品 - @RequestMapping(value = "/searchHistoryGoods") - public Object searchHistoryGoods(HttpServletRequest request, HttpServletResponse response){ + @GetMapping(value = "/searchHistoryGoods") + public Object searchHistoryGoods(@RequestParam String seller_username){ String message = "error"; - String seller_username = request.getParameter("seller_username"); JSONObject jsonObject = new JSONObject(); List goodsList = goodsService.searchHistoryGoods(seller_username); // List list = new ArrayList(); diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 934b149..89b19a1 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -214,4 +214,15 @@ public class OrderController { jsonObject.put("message",message); return jsonObject; } + //根据卖家用户名查找所有订单 + @GetMapping("/searchOrdersBySellerName") + public Object searchOrdersBySellerName(@RequestParam String seller_username){ + String message = "error"; + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.searchOrdersBySellerName(seller_username); + message = "success"; + jsonObject.put("orders",orderList); + jsonObject.put("message",message); + return jsonObject; + } } diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 632ac47..614eb42 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -64,11 +64,15 @@ public interface OrderMapper { /** * 查询完成订单 * @param seller_username - * @param page * @return */ - List searchFinishOrder(String seller_username,int page); - + List searchFinishOrder(String seller_username); + /** + * 按卖家查询所有订单 + * @param seller_username + * @return + */ + List searchOrdersBySellerUserName(String seller_username); /** * 在Order表中查找已完成交易商品的历史意向买家 * @param seller_username diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index 240f5bc..9749d29 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -67,7 +67,7 @@ public class OrderService { } public int finishOrder(String seller_username,int item_id,String finish_time){ return orderMapper.finishOrder(seller_username,item_id,finish_time); } public Order searchOrderByOrderId(String seller_username,int order_id){return orderMapper.searchOrderByOrderId(seller_username,order_id);} - public List searchFinishOrder(String seller_username,int page){return orderMapper.searchFinishOrder(seller_username,page);} + public List searchFinishOrder(String seller_username){return orderMapper.searchFinishOrder(seller_username);} public List searchDealingOrder(String seller_username,int page){return orderMapper.searchDealingOrder(seller_username,page);} public int cancelOrder(String seller_username,int order_id){ int result = orderMapper.cancelOrder(seller_username,order_id); @@ -82,4 +82,5 @@ public class OrderService { } public int addToOrderWanted(Order order){return orderMapper.addToOrderWanted(order); } public List searchFinishOrderByBuyerName(String buyer_username){return orderMapper.searchFinishOrderByBuyerName(buyer_username);} + public List searchOrdersBySellerName(String seller_username){return orderMapper.searchOrdersBySellerUserName(seller_username);} } diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index e82961a..9171276 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -30,7 +30,7 @@ select * from orders where itemId = #{item_id,jdbcType=INTEGER} and state = 2 and sellerUsername = #{seller_username} - + @@ -70,7 +70,7 @@ select * from orders where sellerUsername = #{seller_username} and state = 2 - + @@ -174,5 +174,8 @@ + \ No newline at end of file -- Gitee From 8d20f6f83644fd86870be8a5d40b9c11ab432f35 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 20 Dec 2021 22:26:33 +0800 Subject: [PATCH 037/133] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E6=89=80=E6=9C=89?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=B1=BB=E5=88=AB=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/CategoryController.java | 15 +++++++++++++++ .../main/java/com/shop/mapper/CategoryMapper.java | 5 +++++ .../main/java/com/shop/mapper/GoodsMapper.java | 1 + .../java/com/shop/service/CategoryService.java | 1 + .../src/main/resources/mapping/CategoryMapper.xml | 3 +++ .../src/main/resources/mapping/GoodsMapper.xml | 1 + 6 files changed, 26 insertions(+) diff --git a/back-end_code/src/main/java/com/shop/controller/CategoryController.java b/back-end_code/src/main/java/com/shop/controller/CategoryController.java index 7a50eb0..dd834fb 100644 --- a/back-end_code/src/main/java/com/shop/controller/CategoryController.java +++ b/back-end_code/src/main/java/com/shop/controller/CategoryController.java @@ -56,6 +56,21 @@ public class CategoryController { return jsonObject; } + //查询所有类别 + @GetMapping("/searchAllCategory") + public Object searchAllCategory(){ + String message = "error"; + JSONObject jsonObject = new JSONObject(); + List categoryList = CategoryService.searchAllCategory(); + if(categoryList != null){ + message = "success"; + jsonObject.put("categories", categoryList); + } else{ + message = "error"; + } + jsonObject.put("message",message); + return jsonObject; + } //根据parentCategory_id查询子类别 @GetMapping(value = "/searchChildCategory") public Object searchChildCategory(@RequestParam (defaultValue = "1") Integer parentCategory_id){ diff --git a/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java b/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java index 061e6c5..907c798 100644 --- a/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java @@ -21,6 +21,11 @@ public interface CategoryMapper { */ List searchParentCategory(); + /** + * 查询所有类别 + * @return + */ + List searchAllCategory(); /** * 根据parentCategory_id查询子类别 * @param parentCategory_id diff --git a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java index e9b44ed..f660172 100644 --- a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java @@ -69,6 +69,7 @@ public interface GoodsMapper { */ List searchFreezingGoods(String seller_username); + /** * 通过类别查询商品 * @param goods_category diff --git a/back-end_code/src/main/java/com/shop/service/CategoryService.java b/back-end_code/src/main/java/com/shop/service/CategoryService.java index 32be5d2..69af2ab 100644 --- a/back-end_code/src/main/java/com/shop/service/CategoryService.java +++ b/back-end_code/src/main/java/com/shop/service/CategoryService.java @@ -18,4 +18,5 @@ public class CategoryService { public int deleteCategoryByItemId(int category_id){return categoryMapper.deleteCategoryByItemId(category_id);} public int updateCategory(Category category){return categoryMapper.updateCategory(category);} public Category searchCategoryByName(String category_name){return categoryMapper.searchCategoryByName(category_name);} + public List searchAllCategory(){return categoryMapper.searchAllCategory();} } diff --git a/back-end_code/src/main/resources/mapping/CategoryMapper.xml b/back-end_code/src/main/resources/mapping/CategoryMapper.xml index 0a26548..5f1a153 100644 --- a/back-end_code/src/main/resources/mapping/CategoryMapper.xml +++ b/back-end_code/src/main/resources/mapping/CategoryMapper.xml @@ -43,6 +43,9 @@ + diff --git a/back-end_code/src/main/resources/mapping/GoodsMapper.xml b/back-end_code/src/main/resources/mapping/GoodsMapper.xml index 1e45344..5932718 100644 --- a/back-end_code/src/main/resources/mapping/GoodsMapper.xml +++ b/back-end_code/src/main/resources/mapping/GoodsMapper.xml @@ -154,6 +154,7 @@ select * from goods where goodsName like '%${key_name}%' and goodsCategory = #{goods_category} and goodsState = 1 + update goods -- Gitee From b0cd3bd9c14704861dec00cb77c374d0153d3099 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 21 Dec 2021 11:29:45 +0800 Subject: [PATCH 038/133] =?UTF-8?q?=E9=80=9A=E8=BF=87=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E8=AF=8D=E6=9F=A5=E8=AF=A2=E4=B8=8A=E6=9E=B6=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=94=B9=E6=88=90getMapping?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/GoodsController.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index a40e5b7..5dcc9b0 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -237,11 +237,10 @@ public class GoodsController { return jsonObject; } - //通过关键词查询商品 - @RequestMapping(value = "/searchGoodsByKeyName") - public Object searchGoodsByKeyName(HttpServletRequest request, HttpServletResponse response){ + //通过关键词查询上架商品 + @GetMapping(value = "/searchGoodsByKeyName") + public Object searchGoodsByKeyName(@RequestParam String key_name){ String message = "error"; - String key_name = request.getParameter("key_name"); JSONObject jsonObject = new JSONObject(); List goodsList =goodsService.searchGoodsByKeyName(key_name); message = "success"; -- Gitee From 62ea129f916e7ef9e00027709a25b2b1e804693d Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 21 Dec 2021 20:41:45 +0800 Subject: [PATCH 039/133] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=94=B9=E6=88=90postMapping?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/GoodsController.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 5dcc9b0..447956a 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -38,17 +38,17 @@ public class GoodsController { UploadImageService uploadImageService; //向Goods表中添加商品 - @RequestMapping(value = "/addGoods") - public Object addGoods(HttpServletRequest request, HttpServletResponse response) { + @PostMapping(value = "/addGoods") + public Object addGoods(@RequestBody Goods goods) { String message = "error"; - String goods_name = request.getParameter("goods_name"); + String goods_name = goods.getGoods_name(); String seller_username = "admin"; - int goods_stock = Integer.parseInt(request.getParameter("goods_stock")); + int goods_stock =goods.getGoods_stock(); // String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); - String goods_img = request.getParameter("goods_img"); - String goods_discribe = request.getParameter("goods_discribe"); - float goods_price = Float.parseFloat(request.getParameter("goods_price")); - int goods_category = Integer.parseInt(request.getParameter("goods_category")); + String goods_img = goods.getGoods_img(); + String goods_discribe = goods.getGoods_discribe(); + float goods_price = goods.getGoods_price(); + int goods_category = goods.getGoods_category(); JSONObject jsonObject = new JSONObject(); if (goods_name.length() >= 2 && goods_name.length() <= 20 && goods_stock >= 0 && @@ -57,8 +57,8 @@ public class GoodsController { goods_price >= 0 && goods_category >= 0 ){ - Goods goods = new Goods(goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_category,goods_price); - int result = goodsService.addGoods( goods); + Goods newGoods = new Goods(goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_category,goods_price); + int result = goodsService.addGoods( newGoods); if (result >= 1) { message = "success"; }else { -- Gitee From 9b3b03b925f95a49262ccd04e1f33e9ff922b0be Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 21 Dec 2021 20:46:06 +0800 Subject: [PATCH 040/133] =?UTF-8?q?1.searchGoods=E6=94=B9=E6=88=90GetMappi?= =?UTF-8?q?ng?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/GoodsController.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 447956a..17b0735 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -70,10 +70,9 @@ public class GoodsController { } //买家在goods表中查询goods详细信息 - @RequestMapping(value = "/searchGoods") - public Object searchGoods(HttpServletRequest request, HttpServletResponse response){ + @GetMapping(value = "/searchGoods") + public Object searchGoods(@RequestParam int item_id){ String message = "error"; - int item_id = Integer.parseInt(request.getParameter("item_id")); JSONObject jsonObject = new JSONObject(); Goods good = goodsService.searchGoods(item_id); if (good != null){ -- Gitee From af612aa99581decd0293863c88a0afb7b6bd4626 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 21 Dec 2021 21:10:30 +0800 Subject: [PATCH 041/133] =?UTF-8?q?1.updateGoods=E6=94=B9=E6=88=90PostMapp?= =?UTF-8?q?ing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/GoodsController.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 17b0735..f419bca 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -162,18 +162,29 @@ public class GoodsController { public boolean isHaveSellingGoods(String username){return goodsService.isHaveSellingGoods(username);} //修改商品信息 - @RequestMapping(value = "/updateGoods") - public Object updateGoods(HttpServletRequest request, HttpServletResponse response){ + @PostMapping(value = "/updateGoods") + public Object updateGoods(@RequestBody Goods goods){ String message = "error"; - int item_id = Integer.parseInt(request.getParameter("item_id")); - String goods_name = request.getParameter("goods_name"); +// int item_id = Integer.parseInt(request.getParameter("item_id")); +// String goods_name = request.getParameter("goods_name"); +// String seller_username = "admin"; +// int goods_stock = Integer.parseInt(request.getParameter("goods_stock")); +// String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); +// String goods_img = request.getParameter("goods_img"); +// String goods_discribe = request.getParameter("goods_discribe"); +// int goods_category = Integer.parseInt(request.getParameter("goods_category")); +// float goods_price = Float.parseFloat(request.getParameter("goods_price")); +// // + int item_id = goods.getItem_id(); + String goods_name = goods.getGoods_name(); String seller_username = "admin"; - int goods_stock = Integer.parseInt(request.getParameter("goods_stock")); + int goods_stock =goods.getGoods_stock(); // String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); - String goods_img = request.getParameter("goods_img"); - String goods_discribe = request.getParameter("goods_discribe"); - int goods_category = Integer.parseInt(request.getParameter("goods_category")); - float goods_price = Float.parseFloat(request.getParameter("goods_price")); + String goods_img = goods.getGoods_img(); + String goods_discribe = goods.getGoods_discribe(); + float goods_price = goods.getGoods_price(); + int goods_category = goods.getGoods_category(); + // JSONObject jsonObject = new JSONObject(); if (goods_name.length() >= 2 && goods_name.length() <= 20 && goods_stock >= 0 && -- Gitee From 35a256867e55e9253dc350a91ad4e9b77675e914 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 21 Dec 2021 22:53:46 +0800 Subject: [PATCH 042/133] =?UTF-8?q?1.addToOrderWanted=E6=94=B9=E6=88=90Pos?= =?UTF-8?q?tMapping?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/OrderController.java | 26 +++++++++---------- .../src/main/java/com/shop/entity/Order.java | 2 +- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 89b19a1..9ee1d0e 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -10,10 +10,7 @@ import com.shop.service.OrderService; import com.shop.service.UserService; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -22,6 +19,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/order") @@ -158,21 +156,21 @@ public class OrderController { } //意向购买者下单 - @RequestMapping(value = "/addToOrderWanted") - public Object addToOrderWanted(HttpServletRequest request, HttpServletResponse response){ + @PostMapping(value = "/addToOrderWanted") + public Object addToOrderWanted(@RequestBody Map request){ String message = "error"; - int item_id = Integer.parseInt(request.getParameter("item_id")); + int item_id = Integer.parseInt(request.get("item_id")); Goods good = goodsService.searchGoods(item_id); String goods_name = good.getGoods_name(); String goods_img = good.getGoods_img(); String goods_discribe = good.getGoods_discribe(); float goods_price = good.getGoods_price(); String seller_username = good.getSeller_username(); - String buyer_username = request.getParameter("buyer_username"); + String buyer_username = request.get("buyer_username"); User user = userService.getUserInfo(buyer_username); - String buyer_realname = request.getParameter("buyer_realname"); - String buyer_phonenumber = request.getParameter("buyer_phonenumber"); - String buyer_address = request.getParameter("buyer_address"); + String buyer_realname = request.get("buyer_realname"); + String buyer_phonenumber = request.get("buyer_phonenumber"); + String buyer_address = request.get("buyer_address"); if (buyer_realname == null){ buyer_realname = user.getRealname(); } @@ -182,10 +180,10 @@ public class OrderController { if (buyer_address == null){ buyer_address = user.getAddress(); } - int buy_sum = Integer.parseInt(request.getParameter("buy_sum")); + int buy_sum = Integer.parseInt(request.get("buy_sum")); float buy_amount; - if (buy_sum*good.getGoods_price() == Float.parseFloat(request.getParameter("buy_amount"))){ - buy_amount = Float.parseFloat(request.getParameter("buy_amount")); + if (buy_sum*good.getGoods_price() == Float.parseFloat(request.get("buy_amount"))){ + buy_amount = Float.parseFloat(request.get("buy_amount")); }else buy_amount = buy_sum*good.getGoods_price(); String create_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); diff --git a/back-end_code/src/main/java/com/shop/entity/Order.java b/back-end_code/src/main/java/com/shop/entity/Order.java index 6b7e05a..4246ea6 100644 --- a/back-end_code/src/main/java/com/shop/entity/Order.java +++ b/back-end_code/src/main/java/com/shop/entity/Order.java @@ -13,7 +13,7 @@ public class Order { private String buyer_phonenumber; private String buyer_address; private int buy_sum; - private float buy_amount; + private float buy_amount;//总价 private int state;//int,1表示进行中,2表示交易成功,3表示买家退款,4表示卖家关闭交易,5表示申请中 private String create_time; private String finish_time; -- Gitee From c0731e4ff23397bba743d8561ad1b94dd1cac5d3 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 21 Dec 2021 23:18:24 +0800 Subject: [PATCH 043/133] =?UTF-8?q?1.addToOrderWanted=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E8=B4=AD=E4=B9=B0=E6=80=BB=E4=BB=B7=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/OrderController.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 9ee1d0e..6c0d5bb 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -182,10 +182,7 @@ public class OrderController { } int buy_sum = Integer.parseInt(request.get("buy_sum")); float buy_amount; - if (buy_sum*good.getGoods_price() == Float.parseFloat(request.get("buy_amount"))){ - buy_amount = Float.parseFloat(request.get("buy_amount")); - }else - buy_amount = buy_sum*good.getGoods_price(); + buy_amount = buy_sum*good.getGoods_price(); String create_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); JSONObject jsonObject = new JSONObject(); Order order = new Order(item_id,goods_name,goods_img,goods_discribe,goods_price,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,buy_amount,5,create_time); -- Gitee From 48e5e43d7e7cc2e792ea097682d7d094d48cb588 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 29 Dec 2021 22:30:24 +0800 Subject: [PATCH 044/133] =?UTF-8?q?1.=E6=96=B0=E5=A2=9EResult=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB=EF=BC=8C=E7=94=A8=E4=BA=8E=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/utils/Result.java | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 back-end_code/src/main/java/com/shop/utils/Result.java diff --git a/back-end_code/src/main/java/com/shop/utils/Result.java b/back-end_code/src/main/java/com/shop/utils/Result.java new file mode 100644 index 0000000..ebc988b --- /dev/null +++ b/back-end_code/src/main/java/com/shop/utils/Result.java @@ -0,0 +1,68 @@ +package com.shop.utils; + +import net.minidev.json.JSONObject; + +public class Result extends JSONObject { + + public static final String SUCCESS = "success"; + public static final String FAILURE = "error"; + + private boolean result; + private String msg; + private Object data; + + private Result() {} + + public static Result ok() { + return Result.ok(SUCCESS); + } + + public static Result ok(String msg) { + Result result = new Result(); + result.put("msg:",msg); + return result; + } + + + public static Result ok(String dataName, Object data) { + Result result = new Result(); + result.put("msg:",SUCCESS); + result.put(dataName,data); + return result; + } + + public static Result fail() { + return Result.fail(FAILURE); + } + + public static Result fail(String msg) { + return Result.fail("msg", msg); + } + + + public static Result fail(String dataName, Object data) { + Result result = new Result(); + result.put("msg:",FAILURE); + result.put(dataName,data); + return result; + } + + public boolean isResult() { + return result; + } + public void setResult(boolean result) { + this.result = result; + } + public String getMsg() { + return msg; + } + public void setMsg(String msg) { + this.msg = msg; + } + public Object getData() { + return data; + } + public void setData(Object data) { + this.data = data; + } +} -- Gitee From 46b8a7cf713e0ed9d8d8523d0b3914368ba26c73 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 29 Dec 2021 23:54:58 +0800 Subject: [PATCH 045/133] =?UTF-8?q?1.=E5=AE=8C=E6=88=90=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=8E=A5=E5=8F=A3=202.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E8=B7=AF=E5=BE=84=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=203.StringUtil=E5=A2=9E=E5=8A=A0=E7=94=9F=E6=88=90UUI?= =?UTF-8?q?D=E4=B8=8D=E5=B8=A6img=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/FileController.java | 39 +++++++++++++++++++ .../main/java/com/shop/utils/StringUtil.java | 16 ++++++++ .../src/main/resources/application-dev.yml | 6 ++- .../src/main/resources/application-pro.yml | 31 +++++++++++++++ 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 back-end_code/src/main/java/com/shop/controller/FileController.java create mode 100644 back-end_code/src/main/resources/application-pro.yml diff --git a/back-end_code/src/main/java/com/shop/controller/FileController.java b/back-end_code/src/main/java/com/shop/controller/FileController.java new file mode 100644 index 0000000..6380a1f --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/FileController.java @@ -0,0 +1,39 @@ +package com.shop.controller; + +import com.shop.utils.Result; +import com.shop.utils.StringUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.PropertySource; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; + +@RestController +@RequestMapping("/file") +@PropertySource("classpath:application.yml")//读取application.yml文件 +public class FileController { + + @Value("${filepath.bin}") + private String fileBinPath; + + @RequestMapping("/uploadBin") + public Result uploadBin(@RequestParam MultipartFile file){ + + String filename=file.getOriginalFilename(); + String newFilename = StringUtil.getRandomName(filename); + String fullPath = fileBinPath+newFilename; + File dest = new File(fullPath); + try { + file.transferTo(dest); + return Result.ok("path",fullPath); + } catch (IOException e) { + e.printStackTrace(); + return Result.fail(); + } + + } +} diff --git a/back-end_code/src/main/java/com/shop/utils/StringUtil.java b/back-end_code/src/main/java/com/shop/utils/StringUtil.java index 8f4dcc1..c247858 100644 --- a/back-end_code/src/main/java/com/shop/utils/StringUtil.java +++ b/back-end_code/src/main/java/com/shop/utils/StringUtil.java @@ -31,4 +31,20 @@ public class StringUtil { String path = "image/" + DateUtil.today() + "-" + uuid + suffix; return path; } + + public static String getRandomName(String fileName) { + + int index = fileName.lastIndexOf("."); + + if ((fileName == null || fileName.isEmpty()) || index == -1){ + throw new IllegalArgumentException(); + } + // 获取文件后缀 + String suffix = fileName.substring(index); + // 生成UUID + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + // 生成文件名 + String path = DateUtil.today() + "-" + uuid + suffix; + return path; + } } diff --git a/back-end_code/src/main/resources/application-dev.yml b/back-end_code/src/main/resources/application-dev.yml index 8fa5d15..55c39ba 100644 --- a/back-end_code/src/main/resources/application-dev.yml +++ b/back-end_code/src/main/resources/application-dev.yml @@ -24,4 +24,8 @@ oss: domain: http://cdn.souldays.top # 访问域名(默认使用七牛云测试域名) accessKey: KJb6ZIW_mplRncSOOFRDf5efUF_EY6LMwdD09uMb # 公钥 secretKey: _3ZryKtRPL3X66byb5evv7OC4X6ddgpdwpQRLJfI # 私钥 - bucketName: shop-software #存储空间名称 \ No newline at end of file + bucketName: shop-software #存储空间名称 + +#文件上传路径 +filepath: + bin: "E:/file/bin/" \ No newline at end of file diff --git a/back-end_code/src/main/resources/application-pro.yml b/back-end_code/src/main/resources/application-pro.yml new file mode 100644 index 0000000..55c39ba --- /dev/null +++ b/back-end_code/src/main/resources/application-pro.yml @@ -0,0 +1,31 @@ +server: + port: 8083 + +spring: + datasource: + username: xiangwan + password: dingwanren + #url中database为对应的数据库名称 + url: jdbc:mysql://47.103.214.177:3306/service2.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC + driver-class-name: com.mysql.cj.jdbc.Driver + +mybatis: + mapper-locations: classpath:mapping/*.xml + type-aliases-package: com.shop.entity + +#showSql +logging: + level: + com.example.demo.mapper: debug + +# 七牛云存储 +oss: + qiniu: + domain: http://cdn.souldays.top # 访问域名(默认使用七牛云测试域名) + accessKey: KJb6ZIW_mplRncSOOFRDf5efUF_EY6LMwdD09uMb # 公钥 + secretKey: _3ZryKtRPL3X66byb5evv7OC4X6ddgpdwpQRLJfI # 私钥 + bucketName: shop-software #存储空间名称 + +#文件上传路径 +filepath: + bin: "E:/file/bin/" \ No newline at end of file -- Gitee From 0437ffc7598c4d02feb0abb8e3042236a3724fc7 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 3 Jan 2022 16:05:24 +0800 Subject: [PATCH 046/133] =?UTF-8?q?1.=E5=B0=86msg=E6=94=B9=E6=88=90message?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/utils/Result.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/utils/Result.java b/back-end_code/src/main/java/com/shop/utils/Result.java index ebc988b..fa52d53 100644 --- a/back-end_code/src/main/java/com/shop/utils/Result.java +++ b/back-end_code/src/main/java/com/shop/utils/Result.java @@ -8,7 +8,7 @@ public class Result extends JSONObject { public static final String FAILURE = "error"; private boolean result; - private String msg; + private String message; private Object data; private Result() {} @@ -17,16 +17,16 @@ public class Result extends JSONObject { return Result.ok(SUCCESS); } - public static Result ok(String msg) { + public static Result ok(String message) { Result result = new Result(); - result.put("msg:",msg); + result.put("message:",message); return result; } public static Result ok(String dataName, Object data) { Result result = new Result(); - result.put("msg:",SUCCESS); + result.put("message:",SUCCESS); result.put(dataName,data); return result; } @@ -35,14 +35,14 @@ public class Result extends JSONObject { return Result.fail(FAILURE); } - public static Result fail(String msg) { - return Result.fail("msg", msg); + public static Result fail(String message) { + return Result.fail("message", message); } public static Result fail(String dataName, Object data) { Result result = new Result(); - result.put("msg:",FAILURE); + result.put("message:",FAILURE); result.put(dataName,data); return result; } @@ -54,10 +54,10 @@ public class Result extends JSONObject { this.result = result; } public String getMsg() { - return msg; + return message; } - public void setMsg(String msg) { - this.msg = msg; + public void setMsg(String message) { + this.message = message; } public Object getData() { return data; -- Gitee From af28fac9343f86dc64b25d690f670e4f6ff3e3a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B9=E5=AE=97?= <2937021973@qq.com> Date: Sun, 27 Feb 2022 07:02:32 +0000 Subject: [PATCH 047/133] =?UTF-8?q?!15=20=E4=BF=AE=E6=94=B9=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=20*=20=E4=BF=AE=E6=94=B9pom.xml=E4=BD=8D=E7=BD=AE=20*?= =?UTF-8?q?=201.=E4=BF=AE=E6=94=B9=E9=85=8D=E7=BD=AE=E6=88=90=E9=80=82?= =?UTF-8?q?=E5=90=88=E8=BF=90=E8=A1=8C=E5=9C=A8=E8=99=9A=E6=8B=9F=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml => back-end_code/pom.xml | 2 +- back-end_code/src/main/resources/application-pro.yml | 8 ++++---- back-end_code/src/main/resources/application.yml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) rename pom.xml => back-end_code/pom.xml (98%) diff --git a/pom.xml b/back-end_code/pom.xml similarity index 98% rename from pom.xml rename to back-end_code/pom.xml index 2d58506..f3b0005 100644 --- a/pom.xml +++ b/back-end_code/pom.xml @@ -10,7 +10,7 @@ com.shop service - 0.0.1-SNAPSHOT + 1.0.1-SNAPSHOT com.shop.service 购物网站后台 diff --git a/back-end_code/src/main/resources/application-pro.yml b/back-end_code/src/main/resources/application-pro.yml index 55c39ba..2124426 100644 --- a/back-end_code/src/main/resources/application-pro.yml +++ b/back-end_code/src/main/resources/application-pro.yml @@ -3,10 +3,10 @@ server: spring: datasource: - username: xiangwan - password: dingwanren + username: root + password: jiaxintang #url中database为对应的数据库名称 - url: jdbc:mysql://47.103.214.177:3306/service2.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC + url: jdbc:mysql://localhost:3306/service2.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver mybatis: @@ -28,4 +28,4 @@ oss: #文件上传路径 filepath: - bin: "E:/file/bin/" \ No newline at end of file + bin: "C:/file/bin/" \ No newline at end of file diff --git a/back-end_code/src/main/resources/application.yml b/back-end_code/src/main/resources/application.yml index caf4dfc..fc3033b 100644 --- a/back-end_code/src/main/resources/application.yml +++ b/back-end_code/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: dev \ No newline at end of file + active: pro \ No newline at end of file -- Gitee From 5a453dec323a1242e7117b97384d7b2dbdb3ea88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B9=E5=AE=97?= <2937021973@qq.com> Date: Sun, 27 Feb 2022 07:06:31 +0000 Subject: [PATCH 048/133] =?UTF-8?q?!16=20=E5=A4=A7=E6=AD=A5=E8=BF=AD?= =?UTF-8?q?=E4=BB=A3=20*=20!15=20=E4=BF=AE=E6=94=B9=E9=85=8D=E7=BD=AE=20*?= =?UTF-8?q?=20!14=20=E4=B8=80=E4=BA=9B=E4=BF=AE=E6=94=B9=20*=20=E5=B0=86ms?= =?UTF-8?q?g=E6=94=B9=E6=88=90message=20*=20=E5=AE=8C=E6=88=90=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E6=8E=A5=E5=8F=A3=20*=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9EResult=E5=B7=A5=E5=85=B7=E7=B1=BB=EF=BC=8C=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=20*=20addToOrderWanted=E5=8E=BB=E6=8E=89=E8=B4=AD=E4=B9=B0?= =?UTF-8?q?=E6=80=BB=E4=BB=B7=E5=8F=82=E6=95=B0=20*=20addToOrderWanted?= =?UTF-8?q?=E6=94=B9=E6=88=90PostMapping=20*=20updateGoods=E6=94=B9?= =?UTF-8?q?=E6=88=90PostMapping=20*=20searchGoods=E6=94=B9=E6=88=90GetMapp?= =?UTF-8?q?ing=20*=20=E6=B7=BB=E5=8A=A0=E5=95=86=E5=93=81=E6=94=B9?= =?UTF-8?q?=E6=88=90postMapping=20*=20=E9=80=9A=E8=BF=87=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E8=AF=8D=E6=9F=A5=E8=AF=A2=E4=B8=8A=E6=9E=B6=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=94=B9=E6=88=90getMapping=20*=20=E5=A2=9E=E5=8A=A0=E6=89=80?= =?UTF-8?q?=E6=9C=89=E6=9F=A5=E8=AF=A2=E7=B1=BB=E5=88=AB=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20*=20=E6=9F=A5=E8=AF=A2=E5=8E=86=E5=8F=B2=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=94=B9=E6=88=90getMapping=20*=20=E6=96=B0=E5=A2=9E=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E7=B1=BB=E5=88=AB=E7=B1=BB=EF=BC=8C=E5=B9=B6=E5=AF=B9?= =?UTF-8?q?=E5=85=B6=E5=A2=9E=E5=8A=A0=E6=9F=A5=E6=94=B9=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20*=201.=E6=B7=BB=E5=8A=A0=E7=B1=BB=E5=88=AB=E6=97=B6=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=87=8D=E5=A4=8D=E6=A0=A1=E9=AA=8C=EF=BC=8C=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E9=87=8D=E5=A4=8D=E5=88=99=E4=B8=8D=E7=BB=99=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20*=20!12=20=E4=B8=80=E4=BA=9B=E4=BF=AE=E6=94=B9=20*?= =?UTF-8?q?=20=E9=80=9A=E8=BF=87=E7=B1=BB=E5=88=AB=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=95=86=E5=93=81=E6=94=B9=E6=88=90getMapping=20*=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=95=86=E5=93=81=E7=8A=B6=E6=80=81=E7=9A=84RequestBo?= =?UTF-8?q?dy=E6=94=B9=E6=88=90Map=E5=BD=A2=E5=BC=8F=20*=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=95=86=E5=93=81=E7=8A=B6=E6=80=81=E6=94=B9=E6=88=90?= =?UTF-8?q?putMapping=20*=20=E5=B0=86=E6=9F=A5=E7=9C=8B=E5=86=BB=E7=BB=93?= =?UTF-8?q?=E5=95=86=E5=93=81=E6=94=B9=E6=88=90getMapping=20*=20=E5=B0=86?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E4=B9=B0=E5=AE=B6=E4=BF=A1=E6=81=AF=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=A7=84=E8=8C=83=E5=8C=96=20*=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=AF=86=E7=A0=81=E7=9A=84=E5=8F=82=E6=95=B0=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E4=BD=BF=E7=94=A8requestBody=20*=20!11=20=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E6=8E=A5=E5=8F=A3=E6=9B=B4=E6=94=B9=20*=20=E8=A7=84?= =?UTF-8?q?=E8=8C=83controller=20*=20=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=88=B0postMapping=20*=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=B3=A8=E5=86=8CrequestMapping=E6=94=B9=E6=88=90postMapping?= =?UTF-8?q?=20*=20=E6=B7=BB=E5=8A=A0=E6=B3=A8=E5=86=8C=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E6=8A=A5=E9=94=99=E4=BF=A1=E6=81=AFinfo?= =?UTF-8?q?=E7=9A=84=E5=AE=9A=E4=B9=89=20*=20=E4=B8=8A=E4=BC=A0=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=96=87=E6=A1=A3=20*=20!9=20=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E7=94=A8=E6=88=B7=E9=BB=98=E8=AE=A4=E5=A4=B4?= =?UTF-8?q?=E5=83=8F=20*=20!8=20=E4=BF=AE=E5=A4=8Dbug&=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=96=87=E6=A1=A3=20*=20=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=B7=BB=E5=8A=A0info=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=EF=BC=8C=E7=94=A8=E6=9D=A5=E4=BF=9D=E5=AD=98=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=20*=20postman=E6=B5=8B=E8=AF=95=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E6=8E=A5=E5=8F=A3=20*=20=E7=94=B5=E8=AF=9D=E5=8F=B7?= =?UTF-8?q?=E7=A0=81=E6=A0=A1=E9=AA=8Cbug=E4=BF=AE=E5=A4=8D=20*=20UserServ?= =?UTF-8?q?ice=E4=B8=AD=E6=B7=BB=E5=8A=A0=E6=B3=A8=E5=86=8C=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=95=B0=E6=8D=AE=E6=A0=A1=E9=AA=8C=20*=20!7=20?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E6=96=B0=E6=8E=A5=E5=8F=A3&class=E6=94=B9?= =?UTF-8?q?=E6=88=90category=20*=20=E5=B0=86goods=E4=B8=AD=E5=90=AB?= =?UTF-8?q?=E6=9C=89class=E7=9A=84=E5=9C=B0=E6=96=B9=E6=94=B9=E6=88=90cate?= =?UTF-8?q?gory=20*=20=E5=B0=86goods=E4=B8=AD=E5=90=AB=E6=9C=89class?= =?UTF-8?q?=E7=9A=84=E5=9C=B0=E6=96=B9=E6=94=B9=E6=88=90category=20*=20?= =?UTF-8?q?=E5=B0=86category=E7=9A=84controller=E8=A7=84=E8=8C=83=E6=88=90?= =?UTF-8?q?post,put,get=E7=AD=89=E5=BD=A2=E5=BC=8F=20*=20=E5=B0=86?= =?UTF-8?q?=E7=B1=BBclass=E6=94=B9=E6=88=90category=20*=20!6=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E7=BC=BA=E9=99=B7=20*=20=E5=AF=B9=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E8=BF=9B=E8=A1=8C=E6=A0=87=E6=B3=A8=20*=20?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=8E=A5=E5=8F=A3=E6=96=87=E6=A1=A3=20*=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=BF=94=E5=9B=9Emessage=E7=9A=84bug=20*=20!?= =?UTF-8?q?1=20=E5=90=8E=E7=AB=AF:=E6=B7=BB=E5=8A=A0=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E7=B1=BB=E5=88=AB=E5=92=8C=E5=85=B3=E9=94=AE=E8=AF=8D=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E5=8A=9F=E8=83=BD=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml => back-end_code/pom.xml | 2 +- ...ontroller.java => CategoryController.java} | 109 +- .../com/shop/controller/FileController.java | 39 + .../com/shop/controller/GOController.java | 11 +- .../com/shop/controller/GoodsController.java | 198 ++- .../com/shop/controller/OrderController.java | 88 +- .../controller/ShowCategoryController.java | 52 + .../com/shop/controller/UserController.java | 111 +- .../main/java/com/shop/entity/Category.java | 49 + .../src/main/java/com/shop/entity/Class.java | 49 - .../src/main/java/com/shop/entity/Goods.java | 27 +- .../src/main/java/com/shop/entity/Order.java | 80 + .../java/com/shop/entity/ShowCategory.java | 67 + .../java/com/shop/mapper/CategoryMapper.java | 54 + .../java/com/shop/mapper/ClassMapper.java | 45 - .../java/com/shop/mapper/GoodsMapper.java | 17 +- .../java/com/shop/mapper/OrderMapper.java | 10 +- .../com/shop/mapper/ShowCategoryMapper.java | 25 + .../main/java/com/shop/mapper/UserMapper.java | 2 +- .../com/shop/service/CategoryService.java | 22 + .../java/com/shop/service/ClassService.java | 22 - .../java/com/shop/service/GoodsService.java | 44 +- .../java/com/shop/service/OrderService.java | 28 +- .../com/shop/service/ShowCategoryService.java | 32 + .../java/com/shop/service/UserService.java | 28 +- .../src/main/java/com/shop/utils/Result.java | 68 + .../main/java/com/shop/utils/StringUtil.java | 16 + .../src/main/resources/application-dev.yml | 6 +- .../src/main/resources/application-pro.yml | 31 + .../src/main/resources/application.yml | 2 +- .../main/resources/mapping/CategoryMapper.xml | 69 + .../main/resources/mapping/ClassMapper.xml | 63 - .../main/resources/mapping/GoodsMapper.xml | 41 +- .../main/resources/mapping/OrderMapper.xml | 48 +- .../resources/mapping/ShowCategoryMapper.xml | 27 + .../src/main/resources/mapping/UserMapper.xml | 2 +- .../shop/service/ServiceApplicationTests.java | 13 - ...45\345\217\243\346\226\207\346\241\243.md" | 1533 +++++++++++++++++ ...5\345\217\243\346\226\207\346\241\243.pdf" | Bin 158632 -> 534103 bytes 39 files changed, 2676 insertions(+), 454 deletions(-) rename pom.xml => back-end_code/pom.xml (98%) rename back-end_code/src/main/java/com/shop/controller/{ClassController.java => CategoryController.java} (31%) create mode 100644 back-end_code/src/main/java/com/shop/controller/FileController.java create mode 100644 back-end_code/src/main/java/com/shop/controller/ShowCategoryController.java create mode 100644 back-end_code/src/main/java/com/shop/entity/Category.java delete mode 100644 back-end_code/src/main/java/com/shop/entity/Class.java create mode 100644 back-end_code/src/main/java/com/shop/entity/ShowCategory.java create mode 100644 back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java delete mode 100644 back-end_code/src/main/java/com/shop/mapper/ClassMapper.java create mode 100644 back-end_code/src/main/java/com/shop/mapper/ShowCategoryMapper.java create mode 100644 back-end_code/src/main/java/com/shop/service/CategoryService.java delete mode 100644 back-end_code/src/main/java/com/shop/service/ClassService.java create mode 100644 back-end_code/src/main/java/com/shop/service/ShowCategoryService.java create mode 100644 back-end_code/src/main/java/com/shop/utils/Result.java create mode 100644 back-end_code/src/main/resources/application-pro.yml create mode 100644 back-end_code/src/main/resources/mapping/CategoryMapper.xml delete mode 100644 back-end_code/src/main/resources/mapping/ClassMapper.xml create mode 100644 back-end_code/src/main/resources/mapping/ShowCategoryMapper.xml delete mode 100644 back-end_code/src/test/java/com/shop/service/ServiceApplicationTests.java create mode 100644 "\346\216\245\345\217\243\346\226\207\346\241\243.md" diff --git a/pom.xml b/back-end_code/pom.xml similarity index 98% rename from pom.xml rename to back-end_code/pom.xml index 2d58506..f3b0005 100644 --- a/pom.xml +++ b/back-end_code/pom.xml @@ -10,7 +10,7 @@ com.shop service - 0.0.1-SNAPSHOT + 1.0.1-SNAPSHOT com.shop.service 购物网站后台 diff --git a/back-end_code/src/main/java/com/shop/controller/ClassController.java b/back-end_code/src/main/java/com/shop/controller/CategoryController.java similarity index 31% rename from back-end_code/src/main/java/com/shop/controller/ClassController.java rename to back-end_code/src/main/java/com/shop/controller/CategoryController.java index acfe5fe..dd834fb 100644 --- a/back-end_code/src/main/java/com/shop/controller/ClassController.java +++ b/back-end_code/src/main/java/com/shop/controller/CategoryController.java @@ -1,11 +1,10 @@ package com.shop.controller; -import com.shop.entity.Class; -import com.shop.service.ClassService; +import com.shop.entity.Category; +import com.shop.service.CategoryService; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -13,23 +12,43 @@ import java.util.List; @RestController -@RequestMapping("/class") -public class ClassController { - - private String message = "error"; +@RequestMapping("/category") +public class CategoryController { @Autowired - private ClassService ClassService; + private CategoryService CategoryService; //添加类别 - @RequestMapping(value = "/addClass") - public Object addClass(HttpServletRequest request, HttpServletResponse response){ - String class_name = request.getParameter("class_name"); - int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); + @PostMapping(value = "/addCategory") + public Object addCategory(@RequestBody Category category){ + String message = "error"; + String category_name = category.getCategory_name(); + JSONObject jsonObject = new JSONObject(); + Category categoryExist = CategoryService.searchCategoryByName(category_name); + if(categoryExist!=null){ + message="类别已存在"; + }else { + int parentCategory_id = category.getParentCategory_id(); + int result = CategoryService.addCategory(category_name,parentCategory_id); + if(result>=1){ + message = "success"; + } else{ + message = "error"; + } + } + jsonObject.put("message",message); + return jsonObject; + } + + //查询父类别 + @GetMapping(value = "/searchParentCategory") + public Object searchParentCategory(){ + String message = "error"; JSONObject jsonObject = new JSONObject(); - int result = ClassService.addClass(class_name,parentClass_id); - if(result>=1){ + List categoryList = CategoryService.searchParentCategory(); + if(categoryList != null){ message = "success"; + jsonObject.put("categorys", categoryList); } else{ message = "error"; } @@ -37,30 +56,30 @@ public class ClassController { return jsonObject; } - //查询父类别 - @RequestMapping(value = "/searchParentClass") - public Object searchParentClass(HttpServletRequest request, HttpServletResponse response){ + //查询所有类别 + @GetMapping("/searchAllCategory") + public Object searchAllCategory(){ + String message = "error"; JSONObject jsonObject = new JSONObject(); - List classList = ClassService.searchParentClass(); - if(classList != null){ + List categoryList = CategoryService.searchAllCategory(); + if(categoryList != null){ message = "success"; - jsonObject.put("classs",classList); + jsonObject.put("categories", categoryList); } else{ message = "error"; } jsonObject.put("message",message); return jsonObject; } - - //根据parentClass_id查询子类别 - @RequestMapping(value = "/searchChildClass") - public Object searchChildClass(HttpServletRequest request, HttpServletResponse response){ - int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); + //根据parentCategory_id查询子类别 + @GetMapping(value = "/searchChildCategory") + public Object searchChildCategory(@RequestParam (defaultValue = "1") Integer parentCategory_id){ + String message = "error"; JSONObject jsonObject = new JSONObject(); - List classList = ClassService.searchChildClass(parentClass_id); - if(classList != null){ + List categoryList = CategoryService.searchChildCategory(parentCategory_id); + if(categoryList != null){ message = "success"; - jsonObject.put("classs",classList); + jsonObject.put("categories", categoryList); } else{ message = "error"; } @@ -68,30 +87,36 @@ public class ClassController { return jsonObject; } - //根据classId删除Class - @RequestMapping(value = "/deleteClassByItemId") - public Object deleteClassByItemId(HttpServletRequest request, HttpServletResponse response) { - int class_id = Integer.parseInt(request.getParameter("class_id")); + //根据categoryId删除Category + @DeleteMapping(value = "/deleteCategoryByItemId") + public Object deleteCategoryByItemId(@RequestParam Integer category_id) { + String message = "error"; JSONObject jsonObject = new JSONObject(); - int result = ClassService.deleteClassByItemId(class_id); + int result = CategoryService.deleteCategoryByItemId(category_id); if (result >= 1){ message = "success"; + }else { + message = "error"; } jsonObject.put("message",message); return jsonObject; } - //根据classId修改Class - @RequestMapping(value = "/updateClass") - public Object updateClass(HttpServletRequest request, HttpServletResponse response){ + //根据categoryId修改Category + @PutMapping(value = "/updateCategory") + public Object updateCategory(@RequestBody Category category){ + String message = "error"; JSONObject jsonObject = new JSONObject(); - int class_id = Integer.parseInt(request.getParameter("class_id")); - String class_name = request.getParameter("class_name"); - int parentClass_id = Integer.parseInt(request.getParameter("parentClass_id")); - Class Class = new Class(class_id,class_name,parentClass_id); - int result = ClassService.updateClass(Class); + int category_id = category.getCategory_id(); + String category_name = category.getCategory_name(); + int parentCategory_id = category.getParentCategory_id(); + Category Category = new Category(category_id,category_name,parentCategory_id); + System.out.println(Category); + int result = CategoryService.updateCategory(Category); if (result >= 1){ message = "success"; + }else { + message = "error"; } jsonObject.put("message",message); return jsonObject; diff --git a/back-end_code/src/main/java/com/shop/controller/FileController.java b/back-end_code/src/main/java/com/shop/controller/FileController.java new file mode 100644 index 0000000..6380a1f --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/FileController.java @@ -0,0 +1,39 @@ +package com.shop.controller; + +import com.shop.utils.Result; +import com.shop.utils.StringUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.PropertySource; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; + +@RestController +@RequestMapping("/file") +@PropertySource("classpath:application.yml")//读取application.yml文件 +public class FileController { + + @Value("${filepath.bin}") + private String fileBinPath; + + @RequestMapping("/uploadBin") + public Result uploadBin(@RequestParam MultipartFile file){ + + String filename=file.getOriginalFilename(); + String newFilename = StringUtil.getRandomName(filename); + String fullPath = fileBinPath+newFilename; + File dest = new File(fullPath); + try { + file.transferTo(dest); + return Result.ok("path",fullPath); + } catch (IOException e) { + e.printStackTrace(); + return Result.fail(); + } + + } +} diff --git a/back-end_code/src/main/java/com/shop/controller/GOController.java b/back-end_code/src/main/java/com/shop/controller/GOController.java index de5ba9f..ffb45d1 100644 --- a/back-end_code/src/main/java/com/shop/controller/GOController.java +++ b/back-end_code/src/main/java/com/shop/controller/GOController.java @@ -20,20 +20,19 @@ import javax.servlet.http.HttpServletResponse; @RequestMapping("/go") public class GOController { - private String message = "error"; - @Autowired private GOService GOService; @RequestMapping(value = "/addGO") public Object addGO(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); int result = GOService.addGO(item_id,order_id); if(result>=1){ message = "success"; - } else{ + }else { message = "error"; } jsonObject.put("message",message); @@ -41,6 +40,7 @@ public class GOController { } @RequestMapping(value = "/searchGOByItemId") public Object searchGOByItemId(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); // int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); @@ -48,7 +48,7 @@ public class GOController { if(go != null){ message = "success"; jsonObject.put("GO",go); - } else{ + }else { message = "error"; } jsonObject.put("message",message); @@ -57,6 +57,7 @@ public class GOController { //@RequestMapping(value = "/searchGOByItemId") public Object searchGOByOrderId(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; // int item_id = Integer.parseInt(request.getParameter("item_id")); int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); @@ -64,7 +65,7 @@ public class GOController { if(go != null){ message = "success"; jsonObject.put("GO",go); - } else{ + }else { message = "error"; } jsonObject.put("message",message); diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 04da698..f419bca 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -8,9 +8,7 @@ import com.shop.service.UploadImageService; import com.shop.utils.StringUtil; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -20,12 +18,12 @@ import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/goods") public class GoodsController { - private String message = "error"; @Autowired private GoodsService goodsService; @@ -40,30 +38,30 @@ public class GoodsController { UploadImageService uploadImageService; //向Goods表中添加商品 - @RequestMapping(value = "/addGoods") - public Object addGoods(HttpServletRequest request, HttpServletResponse response) { - String goods_name = request.getParameter("goods_name"); + @PostMapping(value = "/addGoods") + public Object addGoods(@RequestBody Goods goods) { + String message = "error"; + String goods_name = goods.getGoods_name(); String seller_username = "admin"; - int goods_stock = Integer.parseInt(request.getParameter("goods_stock")); + int goods_stock =goods.getGoods_stock(); // String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); - String goods_img = request.getParameter("goods_img"); - String goods_discribe = request.getParameter("goods_discribe"); - float goods_price = Float.parseFloat(request.getParameter("goods_price")); - int goods_class = Integer.parseInt(request.getParameter("goods_class")); + String goods_img = goods.getGoods_img(); + String goods_discribe = goods.getGoods_discribe(); + float goods_price = goods.getGoods_price(); + int goods_category = goods.getGoods_category(); JSONObject jsonObject = new JSONObject(); if (goods_name.length() >= 2 && goods_name.length() <= 20 && goods_stock >= 0 && goods_img.length() <= 2000 && goods_discribe.length() >= 2 && goods_discribe.length() <= 2000 && goods_price >= 0 && - goods_class >= 0 + goods_category >= 0 ){ - Goods goods = new Goods(goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_class,goods_price); - int result = goodsService.addGoods( goods); + Goods newGoods = new Goods(goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_category,goods_price); + int result = goodsService.addGoods( newGoods); if (result >= 1) { message = "success"; }else { - System.out.println("aa"); message = "error"; } } @@ -72,12 +70,11 @@ public class GoodsController { } //买家在goods表中查询goods详细信息 - @RequestMapping(value = "/searchGoods") - public Object searchGoods(HttpServletRequest request, HttpServletResponse response){ - int item_id = Integer.parseInt(request.getParameter("item_id")); + @GetMapping(value = "/searchGoods") + public Object searchGoods(@RequestParam int item_id){ + String message = "error"; JSONObject jsonObject = new JSONObject(); Goods good = goodsService.searchGoods(item_id); - System.out.println(good.getGoods_price()); if (good != null){ message = "success"; jsonObject.put("good",good); @@ -89,13 +86,12 @@ public class GoodsController { } //修改商品状态 - @RequestMapping(value = "/updateGoodsState") - public Object updateGoodsState(HttpServletRequest request, HttpServletResponse response){ - String seller_username = request.getParameter("seller_username"); - int item_id = Integer.parseInt(request.getParameter("item_id")); - int newstate = Integer.parseInt(request.getParameter("newstate")); + @PutMapping (value = "/updateGoodsState") + public Object updateGoodsState(@RequestBody Map json){ + String message = "error"; JSONObject jsonObject = new JSONObject(); - int result = goodsService.updateGoodsState(seller_username,item_id, newstate); + int result = goodsService.updateGoodsState(json.get("seller_username"),Integer.parseInt(json.get("item_id")), Integer.parseInt(json.get("new_state"))); + if (result >= 1) { message = "success"; }else { @@ -105,9 +101,10 @@ public class GoodsController { return jsonObject; } - //在goods表中查找所有正在出售的商品。 + //在goods表中查找所有正在出售的商品 @RequestMapping(value = "/searchSellingGoods") public Object searchSellingGoods(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; JSONObject jsonObject = new JSONObject(); List goods= goodsService.searchSellingGoods(); message = "success"; @@ -119,6 +116,7 @@ public class GoodsController { //在goods表中查找所有正在出售的商品。 @RequestMapping(value = "/searchWelcomeGoods") public Object searchWelcomeGoods(){ + String message = "error"; JSONObject jsonObject = new JSONObject(); List goods = goodsService.searchWelcomeGoods(); List stringList = orderService.searchSellingGoodsBuyerRealname(); @@ -129,33 +127,33 @@ public class GoodsController { return jsonObject; } - //在goods表中查询所有商品 - @RequestMapping(value = "/searchHistoryGoods") - public Object searchHistoryGoods(HttpServletRequest request, HttpServletResponse response){ - String seller_username = request.getParameter("seller_username"); + //在goods表中查询历史商品 + @GetMapping(value = "/searchHistoryGoods") + public Object searchHistoryGoods(@RequestParam String seller_username){ + String message = "error"; JSONObject jsonObject = new JSONObject(); List goodsList = goodsService.searchHistoryGoods(seller_username); - List list = new ArrayList(); - for (int i=0;i < goodsList.size();i++){ - Goods good = (Goods) goodsList.get(i); - GO go = goService.searchGOByItemId(good.getItem_id()); - Order order = orderService.searchOrderByOrderId(seller_username, go.getOrder_id()); - Order_Goods order_goods = new Order_Goods( - order.getOrder_id(), - order.getBuyer_realname(), - order.getBuyer_phonenumber(), - order.getBuyer_address(), - order.getFinish_time(), - good.getItem_id(), - good.getGoods_name(), - good.getGoods_price(), - good.getGoods_img(), - good.getGoods_discribe()); - list.add(order_goods); - } +// List list = new ArrayList(); +// for (int i=0;i < goodsList.size();i++){ +// Goods good = (Goods) goodsList.get(i); +// GO go = goService.searchGOByItemId(good.getItem_id()); +// Order order = orderService.searchOrderByOrderId(seller_username, go.getOrder_id()); +// Order_Goods order_goods = new Order_Goods( +// order.getOrder_id(), +// order.getBuyer_realname(), +// order.getBuyer_phonenumber(), +// order.getBuyer_address(), +// order.getFinish_time(), +// good.getItem_id(), +// good.getGoods_name(), +// good.getGoods_price(), +// good.getGoods_img(), +// good.getGoods_discribe()); +// list.add(order_goods); +// } message = "success"; jsonObject.put("message",message); - jsonObject.put("list",list); + jsonObject.put("goods",goodsList); return jsonObject; } @@ -164,33 +162,53 @@ public class GoodsController { public boolean isHaveSellingGoods(String username){return goodsService.isHaveSellingGoods(username);} //修改商品信息 - @RequestMapping(value = "/updateGoods") - public Object updateGoods(HttpServletRequest request, HttpServletResponse response){ - int item_id = Integer.parseInt(request.getParameter("item_id")); - String goods_name = request.getParameter("goods_name"); + @PostMapping(value = "/updateGoods") + public Object updateGoods(@RequestBody Goods goods){ + String message = "error"; +// int item_id = Integer.parseInt(request.getParameter("item_id")); +// String goods_name = request.getParameter("goods_name"); +// String seller_username = "admin"; +// int goods_stock = Integer.parseInt(request.getParameter("goods_stock")); +// String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); +// String goods_img = request.getParameter("goods_img"); +// String goods_discribe = request.getParameter("goods_discribe"); +// int goods_category = Integer.parseInt(request.getParameter("goods_category")); +// float goods_price = Float.parseFloat(request.getParameter("goods_price")); +// // + int item_id = goods.getItem_id(); + String goods_name = goods.getGoods_name(); String seller_username = "admin"; - int goods_stock = Integer.parseInt(request.getParameter("goods_stock")); + int goods_stock =goods.getGoods_stock(); // String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); - String goods_img = request.getParameter("goods_img"); - String goods_discribe = request.getParameter("goods_discribe"); - int goods_class = Integer.parseInt(request.getParameter("goods_class")); - float goods_price = Float.parseFloat(request.getParameter("goods_price")); + String goods_img = goods.getGoods_img(); + String goods_discribe = goods.getGoods_discribe(); + float goods_price = goods.getGoods_price(); + int goods_category = goods.getGoods_category(); + // JSONObject jsonObject = new JSONObject(); - Goods newgoods = new Goods(item_id,goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_class,goods_price); - int result = goodsService.updateGoods(newgoods); - if (result >= 1) { - message = "success"; - }else { - message = "error"; + if (goods_name.length() >= 2 && goods_name.length() <= 20 && + goods_stock >= 0 && + goods_img.length() <= 2000 && + goods_discribe.length() >= 2 && goods_discribe.length() <= 2000 && + goods_price >= 0 && + goods_category >= 0 + ){ + Goods newgoods = new Goods(item_id,goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_category,goods_price); + int result = goodsService.updateGoods(newgoods); + if (result >= 1) { + message = "success"; + }else { + message = "error"; + } } jsonObject.put("message",message); return jsonObject; } //查看冻结商品 - @RequestMapping(value = "/searchFreezingGoods") - public Object searchFreezingGoods(HttpServletRequest request, HttpServletResponse response){ - String seller_username = request.getParameter("seller_username"); + @GetMapping(value = "/searchFreezingGoods") + public Object searchFreezingGoods(@RequestParam String seller_username){ + String message = "error"; JSONObject jsonObject = new JSONObject(); List goodsList = goodsService.searchFreezingGoods(seller_username); List list = new ArrayList(); @@ -217,21 +235,22 @@ public class GoodsController { } //通过类别查询商品 - @RequestMapping(value = "/searchGoodsByClass") - public Object searchGoodsByClass(HttpServletRequest request, HttpServletResponse response){ - int goods_class = Integer.getInteger(request.getParameter("goods_class")); + @GetMapping(value = "/searchGoodsByCategory") + public Object searchGoodsByCategory(@RequestParam Integer goods_category){ + String message = "error"; +// System.out.println(goods_category); JSONObject jsonObject = new JSONObject(); - List goodsList =goodsService.searchGoodsByClass(goods_class); + List goodsList =goodsService.searchGoodsByCategory(goods_category); message = "success"; jsonObject.put("goods",goodsList); jsonObject.put("message",message); return jsonObject; } - //通过关键词查询商品 - @RequestMapping(value = "/searchGoodsByKeyName") - public Object searchGoodsByKeyName(HttpServletRequest request, HttpServletResponse response){ - String key_name = request.getParameter("key_name"); + //通过关键词查询上架商品 + @GetMapping(value = "/searchGoodsByKeyName") + public Object searchGoodsByKeyName(@RequestParam String key_name){ + String message = "error"; JSONObject jsonObject = new JSONObject(); List goodsList =goodsService.searchGoodsByKeyName(key_name); message = "success"; @@ -240,21 +259,38 @@ public class GoodsController { return jsonObject; } + //通过类别和关键词查询商品 + @RequestMapping(value = "/searchGoodsByCategoryAndKeyName") + public Object searchGoodsByCategoryAndKeyName(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; + int goods_category = Integer.parseInt(request.getParameter("goods_category")); + String key_name = request.getParameter("key_name"); + JSONObject jsonObject = new JSONObject(); + List goodsList = goodsService.searchGoodsByCategoryAndKeyName(goods_category,key_name); + message = "success"; + jsonObject.put("goods",goodsList); + jsonObject.put("message",message); + return jsonObject; + } + //修改商品库存 @RequestMapping(value = "/updateGoodStock") public Object updateGoodStock(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); int new_stock = Integer.parseInt(request.getParameter("new_stock")); Goods good = goodsService.searchGoods(item_id); + JSONObject jsonObject = new JSONObject(); + System.out.println(message); if (new_stock > 0 ){ goodsService.updateGoodsState(good.getSeller_username(),item_id,1); - }else if (new_stock <= 0){ + message = "success"; + goodsService.updateGoodStock(item_id,new_stock); + }else if (new_stock == 0){ goodsService.updateGoodsState(good.getSeller_username(),item_id,3); + message = "success"; + goodsService.updateGoodStock(item_id,new_stock); } - goodsService.updateGoodStock(item_id,new_stock); - JSONObject jsonObject = new JSONObject(); - goodsService.updateGoodStock(item_id,new_stock); - message = "success"; jsonObject.put("message",message); return jsonObject; } diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 38740cd..6c0d5bb 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -10,8 +10,7 @@ import com.shop.service.OrderService; import com.shop.service.UserService; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -20,13 +19,12 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/order") public class OrderController { - private String message = "error"; - @Autowired private UserService userService; @@ -40,8 +38,9 @@ public class OrderController { private GOService goService; //查看商品意向购买买家 - @RequestMapping(value = "/searchBuyerlist") - public Object searchBuyerlist(HttpServletRequest request, HttpServletResponse response){ + @RequestMapping(value = "/searchWantBuyerlistByItemId") + public Object searchWantBuyerlistByItemId(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); int item_id = Integer.parseInt(request.getParameter("item_id")); JSONObject jsonObject = new JSONObject(); @@ -55,11 +54,12 @@ public class OrderController { //查看商品意向购买买家名 @RequestMapping(value = "/searchSellingGoodsBuyerRealname") public Object searchSellingGoodsBuyerRealname(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); JSONObject jsonObject = new JSONObject(); List stringList = orderService.searchSellingGoodsBuyerRealname(); message = "success"; - jsonObject.put("stringList",stringList); + jsonObject.put("strings",stringList); jsonObject.put("message",message); return jsonObject; } @@ -67,6 +67,7 @@ public class OrderController { //查看交易中的某商品对应的订单信息 @RequestMapping(value = "/searchFreezeGoodsBuyer") public Object searchFreezeGoodsBuyer(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); int item_id = Integer.parseInt(request.getParameter("item_id")); JSONObject jsonObject = new JSONObject(); @@ -84,19 +85,21 @@ public class OrderController { //查看已完成交易商品的历史意向买家 @RequestMapping(value = "/searchHistoryGoodsUnFinishedOrder") public Object searchHistoryGoodsUnFinishedOrder(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); int item_id = Integer.parseInt(request.getParameter("item_id")); JSONObject jsonObject = new JSONObject(); List orderList = orderService.searchHistoryGoodsUnFinishedOrder(seller_username,item_id); message = "success"; jsonObject.put("message",message); - jsonObject.put("orderList",orderList); + jsonObject.put("orders",orderList); return jsonObject; } //同意意向买家 @RequestMapping(value = "/agreeOrderwanted") public Object agreeOrderwanted(HttpServletRequest request, HttpServletResponse response) { + String message = "error"; String seller_username = request.getParameter("seller_username"); int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); @@ -118,11 +121,12 @@ public class OrderController { //完成交易(下架) @RequestMapping(value = "/finishOrder") public Object finishOrder(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); - int item_id = Integer.parseInt(request.getParameter("item_id")); + int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); String finish_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - int result = orderService.finishOrder(seller_username,item_id,finish_time); + int result = orderService.finishOrder(seller_username,order_id,finish_time); if (result >=1){ message = "success"; }else { @@ -135,11 +139,12 @@ public class OrderController { //取消交易(恢复) @RequestMapping(value = "/cancelOrder") public Object cancelOrder(HttpServletRequest request, HttpServletResponse response){ + String message = "error"; String seller_username = request.getParameter("seller_username"); - int item_id = Integer.parseInt(request.getParameter("item_id")); + int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); - goService.deleteGOByItemId(item_id); - int result = orderService.cancelOrder(seller_username,item_id); + goService.deleteGOByOrderId(order_id); + int result = orderService.cancelOrder(seller_username,order_id); if (result >=1){ message = "success"; }else { @@ -151,23 +156,36 @@ public class OrderController { } //意向购买者下单 - @RequestMapping(value = "/addToOrderWanted") - public Object addToOrderWanted(HttpServletRequest request, HttpServletResponse response){ - int item_id = Integer.parseInt(request.getParameter("item_id")); + @PostMapping(value = "/addToOrderWanted") + public Object addToOrderWanted(@RequestBody Map request){ + String message = "error"; + int item_id = Integer.parseInt(request.get("item_id")); Goods good = goodsService.searchGoods(item_id); + String goods_name = good.getGoods_name(); + String goods_img = good.getGoods_img(); + String goods_discribe = good.getGoods_discribe(); + float goods_price = good.getGoods_price(); String seller_username = good.getSeller_username(); - String buyer_username = request.getParameter("buyer_username"); + String buyer_username = request.get("buyer_username"); User user = userService.getUserInfo(buyer_username); - String buyer_realname = request.getParameter("buyer_realname"); - String buyer_phonenumber = request.getParameter("buyer_phonenumber"); - String buyer_address = request.getParameter("buyer_address"); -// String buyer_realname = user.getRealname(); -// String buyer_phonenumber = user.getPhonenumber(); -// String buyer_address = user.getAddress(); - int buy_sum = Integer.getInteger(request.getParameter("buy_sum")); + String buyer_realname = request.get("buyer_realname"); + String buyer_phonenumber = request.get("buyer_phonenumber"); + String buyer_address = request.get("buyer_address"); + if (buyer_realname == null){ + buyer_realname = user.getRealname(); + } + if (buyer_phonenumber == null){ + buyer_phonenumber = user.getPhonenumber(); + } + if (buyer_address == null){ + buyer_address = user.getAddress(); + } + int buy_sum = Integer.parseInt(request.get("buy_sum")); + float buy_amount; + buy_amount = buy_sum*good.getGoods_price(); String create_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); JSONObject jsonObject = new JSONObject(); - Order order = new Order(item_id,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,5,create_time); + Order order = new Order(item_id,goods_name,goods_img,goods_discribe,goods_price,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,buy_amount,5,create_time); if (buyer_phonenumber.length() == 11 && buyer_address.length() >= 2 && buyer_address.length() <= 100 && good.getGoods_stock() >= buy_sum){ int result = orderService.addToOrderWanted(order); if (result >=1){ @@ -175,16 +193,15 @@ public class OrderController { }else { message = "error"; } - } jsonObject.put("message",message); return jsonObject; } //根据用户名查看历史购买记录 - @RequestMapping("/searchFinishOrderByBuyerName") - public Object searchFinishOrderByBuyerName(HttpServletRequest request, HttpServletResponse response){ - String buyer_username = request.getParameter("buyer_username"); + @GetMapping("/searchFinishOrderByBuyerUserName") + public Object searchFinishOrderByBuyerName(@RequestParam String buyer_username){ + String message = "error"; JSONObject jsonObject = new JSONObject(); List orderList = orderService.searchFinishOrderByBuyerName(buyer_username); message = "success"; @@ -192,6 +209,15 @@ public class OrderController { jsonObject.put("message",message); return jsonObject; } - - + //根据卖家用户名查找所有订单 + @GetMapping("/searchOrdersBySellerName") + public Object searchOrdersBySellerName(@RequestParam String seller_username){ + String message = "error"; + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.searchOrdersBySellerName(seller_username); + message = "success"; + jsonObject.put("orders",orderList); + jsonObject.put("message",message); + return jsonObject; + } } diff --git a/back-end_code/src/main/java/com/shop/controller/ShowCategoryController.java b/back-end_code/src/main/java/com/shop/controller/ShowCategoryController.java new file mode 100644 index 0000000..b260bd9 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/ShowCategoryController.java @@ -0,0 +1,52 @@ +package com.shop.controller; + +import com.shop.entity.Category; +import com.shop.entity.ShowCategory; +import com.shop.service.ShowCategoryService; +import net.minidev.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +@RestController +@RequestMapping("/showcategory") +public class ShowCategoryController { + + @Autowired + private ShowCategoryService ShowCategoryService; + + //查询ShowCategory + @GetMapping(value = "/searchCategory") + public Object searchShowCategory(){ + String message = "error"; + JSONObject jsonObject = new JSONObject(); + List ShowCategoryList = ShowCategoryService.searchShowCategory(); + if(ShowCategoryList != null){ + message = "success"; + jsonObject.put("showcategorys", ShowCategoryList); + } else{ + message = "error"; + } + jsonObject.put("message",message); + return jsonObject; + } + + //修改ShowCategory + @PutMapping(value = "/updateShowCategory") + public Object updateShowCategory(@RequestBody List Categorys){ + String message = "error"; + JSONObject jsonObject = new JSONObject(); + System.out.println(Categorys); + int result = ShowCategoryService.updateShowCategory(Categorys); + if (result >= 1){ + message = "success"; + }else { + message = "error"; + } + jsonObject.put("message",message); + return jsonObject; + } + +} diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index 2a240a8..1b6258c 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -26,18 +26,17 @@ import java.util.Map; @CrossOrigin public class UserController { - private String message = "error"; - @Autowired private UserService userService; @Autowired private TokenService tokenService; //登录验证账号密码 - @RequestMapping(value = "/login") - public Object loginByPassword(HttpServletRequest request, HttpServletResponse response){ - String username = request.getParameter("username"); - String password = request.getParameter("password"); + @PostMapping(value = "/login") + public Object loginByPassword(@RequestBody User tryingUser){ + String message = "error"; + String username =tryingUser.getUserName(); + String password = tryingUser.getPassword(); JSONObject jsonObject = new JSONObject(); if(username.length()<=10&&username.length()>=3&&password.length()>=7&&password.length()<=15){ User user = userService.login(username,password); @@ -56,26 +55,30 @@ public class UserController { } //获取用户信息 - @RequestMapping(value = "/getUserInfo") - public Object getUserInfo(HttpServletRequest request, HttpServletResponse response){ - String username = request.getParameter("username"); + @GetMapping(value = "/getUserInfo") + public Object getUserInfo(@RequestParam (defaultValue = "1") String username){ + String message = "error"; JSONObject jsonObject = new JSONObject(); User user = userService.getUserInfo(username); - jsonObject.put("user",user); + if (user != null){ + message = "success"; + jsonObject.put("user",user); + }else{ + message = "error"; + } + jsonObject.put("message",message); return jsonObject; } //修改密码 - @RequestMapping(value = "/updatePassword") - public Object updatePasswordByUsername(HttpServletRequest request, HttpServletResponse response){ - String username = request.getParameter("username"); - String oldPassword = request.getParameter("oldPassword"); - String newPassword = request.getParameter("newPassword"); + @PutMapping(value = "/updatePassword") + public Object updatePasswordByUsername(@RequestBody Map json){ + String message = "error"; JSONObject jsonObject = new JSONObject(); - User user = userService.login(username,oldPassword); + User user = userService.login(json.get("userName"),json.get("oldPassword")); int result = 0; if(user!=null){ - result = userService.updatePassword(username,newPassword); + result = userService.updatePassword(json.get("userName"),json.get("newPassword")); } if(result>=1){ message = "success"; @@ -90,6 +93,7 @@ public class UserController { @UserLoginToken @RequestMapping("/getMessage") public Object getMessage(){ + String message = "error"; message = "success"; JSONObject jsonObject = new JSONObject(); jsonObject.put("message",message); @@ -97,35 +101,63 @@ public class UserController { } //用户注册 - @RequestMapping(value = "/registerUser") - public Object registerUser(HttpServletRequest request, HttpServletResponse response){ - String username = request.getParameter("username"); - String password = request.getParameter("password"); - String nickname = request.getParameter("nickname"); + @PostMapping(value = "/registerUser") + public Object registerUser(@RequestBody User user){ + String message = "error"; + String info="注册成功"; + String username = user.getUserName(); + String password = user.getPassword(); + String nickname = user.getNickName(); int permission = 1; - String phonenumber = request.getParameter("phonenumber"); - String address = request.getParameter("address"); - String realname = request.getParameter("realname"); - String user_head = request.getParameter("user_head"); + String phonenumber = user.getPhonenumber(); + String address = user.getAddress(); + String realname = user.getRealname(); + String user_head = user.getUserHead(); + if (user_head == null){ + user_head = "http://cdn.souldays.top/image/2021-12-06-eb3ac6b8edac4612806b08f967b88963.jpg"; + } JSONObject jsonObject = new JSONObject(); - User User = new User(username,password,nickname,permission,phonenumber,address,realname,user_head); - int result = userService.registerUser(User); + User newUser = new User(username,password,nickname,permission,phonenumber,address,realname,user_head); + int result = userService.registerUser(newUser); if (result >= 1){ message = "success"; + }else if (result==-1){ + info = "用户名长度错误"; + }else if (result==-2){ + info = "用户名重复"; + } + else if (result==-3){ + info = "用户名包含非数字或字母"; + } + else if (result==-4){ + info = "密码长度错误"; + } + else if (result==-5){ + info = "真实姓名长度过长"; + } + else if (result==-6){ + info = "电话号码格式不对"; + } + else if (result==-7){ + info = "地址过长"; + } + if (info != null){ + jsonObject.put("info",info); } jsonObject.put("message",message); return jsonObject; } //用户修改个人信息 - @RequestMapping(value = "/updateUser") - public Object updateUser(HttpServletRequest request, HttpServletResponse response){ - String username = request.getParameter("username"); - String nickname = request.getParameter("nickname"); - String realname = request.getParameter("realname"); - String phonenumber = request.getParameter("phonenumber"); - String address = request.getParameter("address"); - String user_head = request.getParameter("user_head"); + @PutMapping(value = "/updateUser") + public Object updateUser(@RequestBody User user){ + String message = "error"; + String username = user.getUserName(); + String nickname = user.getNickName(); + String realname = user.getRealname(); + String phonenumber = user.getPhonenumber(); + String address = user.getAddress(); + String user_head = user.getUserHead(); JSONObject jsonObject = new JSONObject(); User newUser = new User(username,nickname,phonenumber,address,realname,user_head); int result = userService.updateUser(newUser); @@ -137,10 +169,11 @@ public class UserController { } //卖家查看买家信息 - @RequestMapping(value = "/searchAllUser") - public Object searchAllUser(HttpServletRequest request, HttpServletResponse response){ + @GetMapping(value = "/searchAllBuyer") + public Object searchAllBuyer(){ + String message = "error"; JSONObject jsonObject = new JSONObject(); - List UserList = userService.searchAllUser(); + List UserList = userService.searchAllBuyer(); message = "success"; jsonObject.put("users",UserList); // jsonObject.put("User",userService.searchAllUser()); diff --git a/back-end_code/src/main/java/com/shop/entity/Category.java b/back-end_code/src/main/java/com/shop/entity/Category.java new file mode 100644 index 0000000..d6002b7 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/Category.java @@ -0,0 +1,49 @@ +package com.shop.entity; + +public class Category { + private int category_id; + private String category_name; + private int parentCategory_id; + + public int getCategory_id() { + return category_id; + } + + public void setCategory_id(int category_id) { + this.category_id = category_id; + } + + public String getCategory_name() { + return category_name; + } + + public void setCategory_name(String category_name) { + this.category_name = category_name; + } + + public int getParentCategory_id() { + return parentCategory_id; + } + + public void setParentCategory_id(int parentCategory_id) { + this.parentCategory_id = parentCategory_id; + } + + public Category() { + } + + public Category(int category_id, String category_name, int parentCategory_id) { + this.category_id = category_id; + this.category_name = category_name; + this.parentCategory_id = parentCategory_id; + } + + @Override + public String toString() { + return "Category{" + + "category_id=" + category_id + + ", category_name='" + category_name + '\'' + + ", parentCategory_id=" + parentCategory_id + + '}'; + } +} diff --git a/back-end_code/src/main/java/com/shop/entity/Class.java b/back-end_code/src/main/java/com/shop/entity/Class.java deleted file mode 100644 index 5667578..0000000 --- a/back-end_code/src/main/java/com/shop/entity/Class.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.shop.entity; - -public class Class { - private int class_id; - private String class_name; - private int parentClass_id; - - @Override - public String toString() { - return "Class{" + - "class_id=" + class_id + - ", class_name='" + class_name + '\'' + - ", parentClass_id=" + parentClass_id + - '}'; - } - - public int getClass_id() { - return class_id; - } - - public void setClass_id(int class_id) { - this.class_id = class_id; - } - - public String getClass_name() { - return class_name; - } - - public void setClass_name(String class_name) { - this.class_name = class_name; - } - - public int getParentClass_id() { - return parentClass_id; - } - - public void setParentClass_id(int parentClass_id) { - this.parentClass_id = parentClass_id; - } - - public Class(int class_id, String class_name, int parentClass_id) { - this.class_id = class_id; - this.class_name = class_name; - this.parentClass_id = parentClass_id; - } - - public Class() { - } -} diff --git a/back-end_code/src/main/java/com/shop/entity/Goods.java b/back-end_code/src/main/java/com/shop/entity/Goods.java index 2d47148..a79dcc8 100644 --- a/back-end_code/src/main/java/com/shop/entity/Goods.java +++ b/back-end_code/src/main/java/com/shop/entity/Goods.java @@ -7,7 +7,7 @@ public class Goods { private int goods_stock; private String goods_img; private String goods_discribe; - private int goods_class; + private int goods_category; private float goods_price; private int goods_state;//int型 1表示在售,2表示冻结,3表示下架 @@ -24,14 +24,22 @@ public class Goods { this.goods_price = goods_price; } - public Goods(int item_id, String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_class, float goods_price) { + public int getGoods_category() { + return goods_category; + } + + public void setGoods_category(int goods_category) { + this.goods_category = goods_category; + } + + public Goods(int item_id, String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_category, float goods_price) { this.item_id = item_id; this.goods_name = goods_name; this.seller_username = seller_username; this.goods_stock = goods_stock; this.goods_img = goods_img; this.goods_discribe = goods_discribe; - this.goods_class = goods_class; + this.goods_category = goods_category; this.goods_price = goods_price; } @@ -119,23 +127,16 @@ public class Goods { this.goods_state = goods_state; } - public Goods(String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_class, float goods_price) { + public Goods(String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_category, float goods_price) { this.goods_name = goods_name; this.seller_username = seller_username; this.goods_stock = goods_stock; this.goods_img = goods_img; this.goods_discribe = goods_discribe; - this.goods_class = goods_class; + this.goods_category = goods_category; this.goods_price = goods_price; } - public int getGoods_class() { - return goods_class; - } - - public void setGoods_class(int goods_class) { - this.goods_class = goods_class; - } @Override public String toString() { @@ -146,7 +147,7 @@ public class Goods { ", goods_stock=" + goods_stock + ", goods_img='" + goods_img + '\'' + ", goods_discribe='" + goods_discribe + '\'' + - ", goods_class=" + goods_class + + ", goods_category=" + goods_category + ", goods_price=" + goods_price + ", goods_state=" + goods_state + '}'; diff --git a/back-end_code/src/main/java/com/shop/entity/Order.java b/back-end_code/src/main/java/com/shop/entity/Order.java index 8536312..4246ea6 100644 --- a/back-end_code/src/main/java/com/shop/entity/Order.java +++ b/back-end_code/src/main/java/com/shop/entity/Order.java @@ -3,12 +3,17 @@ package com.shop.entity; public class Order { private int order_id; private int item_id; + private String goods_name; + private String goods_img; + private String goods_discribe; + private float goods_price; private String seller_username; private String buyer_username; private String buyer_realname; private String buyer_phonenumber; private String buyer_address; private int buy_sum; + private float buy_amount;//总价 private int state;//int,1表示进行中,2表示交易成功,3表示买家退款,4表示卖家关闭交易,5表示申请中 private String create_time; private String finish_time; @@ -17,6 +22,76 @@ public class Order { super(); } + public Order(int item_id, String goods_name, String goods_img, String goods_discribe, float goods_price, String seller_username, String buyer_username, String buyer_realname, String buyer_phonenumber, String buyer_address, int buy_sum, float buy_amount, int state, String create_time) { + this.item_id = item_id; + this.goods_name = goods_name; + this.goods_img = goods_img; + this.goods_discribe = goods_discribe; + this.goods_price = goods_price; + this.seller_username = seller_username; + this.buyer_username = buyer_username; + this.buyer_realname = buyer_realname; + this.buyer_phonenumber = buyer_phonenumber; + this.buyer_address = buyer_address; + this.buy_sum = buy_sum; + this.buy_amount = buy_amount; + this.state = state; + this.create_time = create_time; + } + + public String getGoods_name() { + return goods_name; + } + + public void setGoods_name(String goods_name) { + this.goods_name = goods_name; + } + + public String getGoods_img() { + return goods_img; + } + + public void setGoods_img(String goods_img) { + this.goods_img = goods_img; + } + + public String getGoods_discribe() { + return goods_discribe; + } + + public void setGoods_discribe(String goods_discribe) { + this.goods_discribe = goods_discribe; + } + + public float getGoods_price() { + return goods_price; + } + + public void setGoods_price(float goods_price) { + this.goods_price = goods_price; + } + + public float getBuy_amount() { + return buy_amount; + } + + public void setBuy_amount(float buy_amount) { + this.buy_amount = buy_amount; + } + + public Order(int item_id, String seller_username, String buyer_username, String buyer_realname, String buyer_phonenumber, String buyer_address, int buy_sum, float buy_amount, int state, String create_time) { + this.item_id = item_id; + this.seller_username = seller_username; + this.buyer_username = buyer_username; + this.buyer_realname = buyer_realname; + this.buyer_phonenumber = buyer_phonenumber; + this.buyer_address = buyer_address; + this.buy_sum = buy_sum; + this.buy_amount = buy_amount; + this.state = state; + this.create_time = create_time; + } + public Order(int order_id, int item_id, String seller_username, String buyer_username, String buyer_realname, String buyer_phonenumber, String buyer_address, int buy_sum, int state, String create_time, String finish_time) { this.order_id = order_id; this.item_id = item_id; @@ -150,12 +225,17 @@ public class Order { return "Order{" + "order_id=" + order_id + ", item_id=" + item_id + + ", goods_name='" + goods_name + '\'' + + ", goods_img='" + goods_img + '\'' + + ", goods_discribe='" + goods_discribe + '\'' + + ", goods_price=" + goods_price + ", seller_username='" + seller_username + '\'' + ", buyer_username='" + buyer_username + '\'' + ", buyer_realname='" + buyer_realname + '\'' + ", buyer_phonenumber='" + buyer_phonenumber + '\'' + ", buyer_address='" + buyer_address + '\'' + ", buy_sum=" + buy_sum + + ", buy_amount=" + buy_amount + ", state=" + state + ", create_time='" + create_time + '\'' + ", finish_time='" + finish_time + '\'' + diff --git a/back-end_code/src/main/java/com/shop/entity/ShowCategory.java b/back-end_code/src/main/java/com/shop/entity/ShowCategory.java new file mode 100644 index 0000000..49bd292 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/ShowCategory.java @@ -0,0 +1,67 @@ +package com.shop.entity; + +public class ShowCategory { + private int show_id; + private int sequence; + private int category_id; + private String category_name; + + public ShowCategory(int sequence, int category_id, String category_name) { + this.sequence = sequence; + this.category_id = category_id; + this.category_name = category_name; + } + + public ShowCategory() { + } + + public ShowCategory(int show_id, int sequence) { + this.show_id = show_id; + this.sequence = sequence; + this.category_id = 0; + this.category_name = null; + } + + public int getShow_id() { + return show_id; + } + + public ShowCategory(int show_id) { + this.show_id = show_id; + } + + public void setShow_id(int show_id) { + this.show_id = show_id; + } + + public ShowCategory(int show_id, int sequence, int category_id, String category_name) { + this.show_id = show_id; + this.sequence = sequence; + this.category_id = category_id; + this.category_name = category_name; + } + + public int getSequence() { + return sequence; + } + + public void setSequence(int sequence) { + this.sequence = sequence; + } + + public int getCategory_id() { + return category_id; + } + + public void setCategory_id(int category_id) { + this.category_id = category_id; + } + + public String getCategory_name() { + return category_name; + } + + public void setCategory_name(String category_name) { + this.category_name = category_name; + } +} diff --git a/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java b/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java new file mode 100644 index 0000000..907c798 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/mapper/CategoryMapper.java @@ -0,0 +1,54 @@ +package com.shop.mapper; + +import com.shop.entity.Category; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface CategoryMapper { + /** + * 添加类别 + * @param category_name + * @param parentCategory_id + * @return + */ + int addCategory(String category_name,int parentCategory_id); + + /** + * 查询父类别 + * @return + */ + List searchParentCategory(); + + /** + * 查询所有类别 + * @return + */ + List searchAllCategory(); + /** + * 根据parentCategory_id查询子类别 + * @param parentCategory_id + * @return + */ + List searchChildCategory(int parentCategory_id); + + /** + * 根据categoryId删除Category + * @param category_id + * @return + */ + int deleteCategoryByItemId(int category_id); + /** + * 根据categoryName查找category + * @param category_name + * @return + */ + Category searchCategoryByName(String category_name); + /** + * 根据categoryId修改Category + * @param Category + * @return + */ + int updateCategory(Category Category); +} diff --git a/back-end_code/src/main/java/com/shop/mapper/ClassMapper.java b/back-end_code/src/main/java/com/shop/mapper/ClassMapper.java deleted file mode 100644 index adc8403..0000000 --- a/back-end_code/src/main/java/com/shop/mapper/ClassMapper.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.shop.mapper; - -import com.shop.entity.Class; -import com.shop.entity.GO; -import org.springframework.stereotype.Repository; - -import java.util.List; - -@Repository -public interface ClassMapper { - /** - * 添加类别 - * @param class_name - * @param parentClass_id - * @return - */ - int addClass(String class_name,int parentClass_id); - - /** - * 查询父类别 - * @return - */ - List searchParentClass(); - - /** - * 根据parentClass_id查询子类别 - * @param parentClass_id - * @return - */ - List searchChildClass(int parentClass_id); - - /** - * 根据classId删除Class - * @param class_id - * @return - */ - int deleteClassByItemId(int class_id); - - /** - * 根据classId修改Class - * @param Class - * @return - */ - int updateClass(Class Class); -} diff --git a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java index cb7ddcd..f660172 100644 --- a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java @@ -25,10 +25,10 @@ public interface GoodsMapper { * 根据item_id(商品ID),newstate(商品状态)向Goods表中更新商品状态信息 * @param seller_username * @param item_id - * @param newstate + * @param new_state * @return */ - int updateGoodsState(String seller_username,int item_id,int newstate); + int updateGoodsState(String seller_username,int item_id,int new_state); /** *根据username查找此用户是否有正在出售的商品 @@ -69,12 +69,13 @@ public interface GoodsMapper { */ List searchFreezingGoods(String seller_username); + /** * 通过类别查询商品 - * @param goods_class + * @param goods_category * @return */ - List searchGoodsByClass(int goods_class); + List searchGoodsByCategory(int goods_category); /** * 通过类别查询商品 @@ -91,4 +92,12 @@ public interface GoodsMapper { */ int updateGoodStock(int item_id,int new_stock); + /** + * 通过类别和关键词查询商品 + * @param goods_category + * @param key_name + * @return + */ + List searchGoodsByCategoryAndKeyName(int goods_category,String key_name); + } diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 632ac47..614eb42 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -64,11 +64,15 @@ public interface OrderMapper { /** * 查询完成订单 * @param seller_username - * @param page * @return */ - List searchFinishOrder(String seller_username,int page); - + List searchFinishOrder(String seller_username); + /** + * 按卖家查询所有订单 + * @param seller_username + * @return + */ + List searchOrdersBySellerUserName(String seller_username); /** * 在Order表中查找已完成交易商品的历史意向买家 * @param seller_username diff --git a/back-end_code/src/main/java/com/shop/mapper/ShowCategoryMapper.java b/back-end_code/src/main/java/com/shop/mapper/ShowCategoryMapper.java new file mode 100644 index 0000000..948e372 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/mapper/ShowCategoryMapper.java @@ -0,0 +1,25 @@ +package com.shop.mapper; + +import com.shop.entity.Category; +import com.shop.entity.ShowCategory; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ShowCategoryMapper { + + /** + * 修改ShowCategory + * @param ShowCategory + * @return + */ + int updateShowCategory(ShowCategory ShowCategory); + + /** + * 查询ShowCategory + * @param + * @return + */ + List searchShowCategory(); +} diff --git a/back-end_code/src/main/java/com/shop/mapper/UserMapper.java b/back-end_code/src/main/java/com/shop/mapper/UserMapper.java index 30aa7b1..567a515 100644 --- a/back-end_code/src/main/java/com/shop/mapper/UserMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/UserMapper.java @@ -49,6 +49,6 @@ public interface UserMapper { * @param * @return */ - List searchAllUser(); + List searchAllBuyer(); } diff --git a/back-end_code/src/main/java/com/shop/service/CategoryService.java b/back-end_code/src/main/java/com/shop/service/CategoryService.java new file mode 100644 index 0000000..69af2ab --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/CategoryService.java @@ -0,0 +1,22 @@ +package com.shop.service; + +import com.shop.entity.Category; +import com.shop.mapper.CategoryMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class CategoryService { + @Autowired + private CategoryMapper categoryMapper; + + public int addCategory(String category_name,int parentCategory_id){return categoryMapper.addCategory(category_name,parentCategory_id);} + public List searchParentCategory(){return categoryMapper.searchParentCategory();} + public List searchChildCategory(int parentCategory_id){return categoryMapper.searchChildCategory(parentCategory_id);} + public int deleteCategoryByItemId(int category_id){return categoryMapper.deleteCategoryByItemId(category_id);} + public int updateCategory(Category category){return categoryMapper.updateCategory(category);} + public Category searchCategoryByName(String category_name){return categoryMapper.searchCategoryByName(category_name);} + public List searchAllCategory(){return categoryMapper.searchAllCategory();} +} diff --git a/back-end_code/src/main/java/com/shop/service/ClassService.java b/back-end_code/src/main/java/com/shop/service/ClassService.java deleted file mode 100644 index ee1994f..0000000 --- a/back-end_code/src/main/java/com/shop/service/ClassService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.shop.service; - -import com.shop.entity.Class; -import com.shop.entity.GO; -import com.shop.mapper.ClassMapper; -import com.shop.mapper.GOMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public class ClassService { - @Autowired - private ClassMapper classMapper; - - public int addClass(String class_name,int parentClass_id){return classMapper.addClass(class_name,parentClass_id);} - public List searchParentClass(){return classMapper.searchParentClass();} - public List searchChildClass(int parentClass_id){return classMapper.searchChildClass(parentClass_id);} - public int deleteClassByItemId(int class_id){return classMapper.deleteClassByItemId(class_id);} - public int updateClass(Class Class){return classMapper.updateClass(Class);} -} diff --git a/back-end_code/src/main/java/com/shop/service/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java index 3b9a608..f56b6df 100644 --- a/back-end_code/src/main/java/com/shop/service/GoodsService.java +++ b/back-end_code/src/main/java/com/shop/service/GoodsService.java @@ -1,28 +1,37 @@ package com.shop.service; +import com.shop.entity.Category; import com.shop.entity.Goods; +import com.shop.mapper.CategoryMapper; import com.shop.mapper.GoodsMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; @Service public class GoodsService { @Autowired private GoodsMapper goodsMapper; + @Autowired + private CategoryMapper categoryMapper; public int addGoods(Goods Goods){ return goodsMapper.addGoods(Goods); } public Goods searchGoods(int item_id){ return goodsMapper.searchGoods(item_id); } - public int updateGoodsState(String seller_username,int item_id,int newstate){ - return goodsMapper.updateGoodsState(seller_username,item_id, newstate); - } + public int updateGoodsState(String seller_username,int item_id,int new_state){return goodsMapper.updateGoodsState(seller_username,item_id, new_state);} public List searchSellingGoods(){return goodsMapper.searchSellingGoods();}//一页8条 public List searchFreezingGoods(String seller_username){return goodsMapper.searchFreezingGoods(seller_username);}//一页10条 public List searchHistoryGoods(String seller_username){ return goodsMapper.searchHistoryGoods(seller_username);}//一页10条 - public int updateGoods(Goods newgoods){ return goodsMapper.updateGoods(newgoods);} + public int updateGoods(Goods newgoods){ + if (newgoods.getGoods_stock() == 0){ + goodsMapper.updateGoodsState(newgoods.getSeller_username(),newgoods.getItem_id(),3); + }else if (newgoods.getGoods_stock() > 0){ + goodsMapper.updateGoodsState(newgoods.getSeller_username(),newgoods.getItem_id(),1); + } + return goodsMapper.updateGoods(newgoods);} public List searchWelcomeGoods(){return goodsMapper.searchWelcomeGoods();} public boolean isHaveSellingGoods(String username){ if(goodsMapper.isHaveSellingGoods(username)==null){ @@ -31,7 +40,19 @@ public class GoodsService { return true; } } - public List searchGoodsByClass(int goods_class){return goodsMapper.searchGoodsByClass(goods_class);} + public List searchGoodsByCategory(int goods_category){ + List goodsList = new ArrayList(); + List categoryList = categoryMapper.searchChildCategory(goods_category); + if (categoryList != null){ + for (Category category:categoryList + ) { + List goods = goodsMapper.searchGoodsByCategory(category.getCategory_id()); + goodsList.addAll(goods); + } + }else + goodsList = goodsMapper.searchGoodsByCategory(goods_category); + return goodsList; + } public List searchGoodsByKeyName(String key_name){return goodsMapper.searchGoodsByKeyName(key_name);} // public int reduceGoodStock(int item_id,int reduce_sum){ // Goods good = goodsMapper.searchGoods(item_id); @@ -44,4 +65,17 @@ public class GoodsService { // return goodsMapper.updateGoodStock(item_id,new_stock); // } public int updateGoodStock(int item_id,int new_stock){return goodsMapper.updateGoodStock(item_id,new_stock);} + public List searchGoodsByCategoryAndKeyName(int goods_category,String key_name){ + List goodsList = null; + List categoryList = categoryMapper.searchChildCategory(goods_category); + if (categoryList != null){ + for (Category category:categoryList + ) { + List goods = goodsMapper.searchGoodsByCategoryAndKeyName(category.getCategory_id(),key_name); + goodsList.addAll(goods); + } + }else + goodsList = goodsMapper.searchGoodsByCategoryAndKeyName(goods_category,key_name); + return goodsList; + } } diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index 05d4212..9749d29 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -45,8 +45,12 @@ public class OrderService { public Order agreeOrderwanted(String seller_username,int order_id){ int result = orderMapper.agreeOrderwanted(seller_username,order_id); Order order = orderMapper.searchOrderByOrderId(seller_username,order_id); - orderMapper.updateOtherOrders(seller_username,order.getItem_id()); - goodsMapper.updateGoodsState(seller_username,order.getItem_id(),2); + Goods good = goodsMapper.searchGoods(order.getItem_id()); + int new_stock = good.getGoods_stock()-order.getBuy_sum(); + goodsMapper.updateGoodStock(order.getItem_id(),new_stock); + if (new_stock == 0){ + goodsMapper.updateGoodsState(order.getSeller_username(),order.getItem_id(),3); + } return order; } public List searchSellingGoodsBuyerRealname(){ @@ -61,13 +65,9 @@ public class OrderService { public List searchHistoryGoodsUnFinishedOrder(String seller_username,int item_id){ return orderMapper.searchHistoryGoodsUnFinishedOrder(seller_username,item_id); } - public int finishOrder(String seller_username,int item_id,String finish_time){ - int result = orderMapper.finishOrder(seller_username,item_id,finish_time); - goodsMapper.updateGoodsState(seller_username,item_id,3); - return result; - } + public int finishOrder(String seller_username,int item_id,String finish_time){ return orderMapper.finishOrder(seller_username,item_id,finish_time); } public Order searchOrderByOrderId(String seller_username,int order_id){return orderMapper.searchOrderByOrderId(seller_username,order_id);} - public List searchFinishOrder(String seller_username,int page){return orderMapper.searchFinishOrder(seller_username,page);} + public List searchFinishOrder(String seller_username){return orderMapper.searchFinishOrder(seller_username);} public List searchDealingOrder(String seller_username,int page){return orderMapper.searchDealingOrder(seller_username,page);} public int cancelOrder(String seller_username,int order_id){ int result = orderMapper.cancelOrder(seller_username,order_id); @@ -80,15 +80,7 @@ public class OrderService { } return result; } - public int addToOrderWanted(Order order){ - Goods good = goodsMapper.searchGoods(order.getItem_id()); - int new_stock = good.getGoods_stock()-order.getBuy_sum(); - goodsMapper.updateGoodStock(order.getItem_id(),new_stock); - if (new_stock == 0){ - goodsMapper.updateGoodsState(order.getSeller_username(),order.getItem_id(),3); - } - int result = orderMapper.addToOrderWanted(order); - return result; - } + public int addToOrderWanted(Order order){return orderMapper.addToOrderWanted(order); } public List searchFinishOrderByBuyerName(String buyer_username){return orderMapper.searchFinishOrderByBuyerName(buyer_username);} + public List searchOrdersBySellerName(String seller_username){return orderMapper.searchOrdersBySellerUserName(seller_username);} } diff --git a/back-end_code/src/main/java/com/shop/service/ShowCategoryService.java b/back-end_code/src/main/java/com/shop/service/ShowCategoryService.java new file mode 100644 index 0000000..e860ab6 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/ShowCategoryService.java @@ -0,0 +1,32 @@ +package com.shop.service; + +import com.shop.entity.Category; +import com.shop.entity.ShowCategory; +import com.shop.mapper.ShowCategoryMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ShowCategoryService { + @Autowired + private ShowCategoryMapper ShowCategoryMapper; + + public List searchShowCategory(){return ShowCategoryMapper.searchShowCategory();} + public int updateShowCategory(List Categorys){ + int i = 1,sequence=1; + for (Category Category:Categorys + ) { + if (Category.getParentCategory_id() == 0 && Category.getCategory_name() != null){ + ShowCategory showCategory = new ShowCategory(i,sequence,Category.getCategory_id(),Category.getCategory_name()); + ShowCategoryMapper.updateShowCategory(showCategory); + sequence++;i++; + } + } + for (;i<=5;i++){ + ShowCategory showCategory = new ShowCategory(i,0); + ShowCategoryMapper.updateShowCategory(showCategory); + } + return 1;} +} diff --git a/back-end_code/src/main/java/com/shop/service/UserService.java b/back-end_code/src/main/java/com/shop/service/UserService.java index d661dfd..e95dd79 100644 --- a/back-end_code/src/main/java/com/shop/service/UserService.java +++ b/back-end_code/src/main/java/com/shop/service/UserService.java @@ -15,7 +15,31 @@ public class UserService { public User login(String username, String password){ return userMapper.login(username,password); } public User getUserInfo(String username){ return userMapper.getUserInfo(username); } public int updatePassword(String username,String newPassword){ return userMapper.updatePassword(username,newPassword); } - public int registerUser(User User){return userMapper.registerUser(User);} + public int registerUser(User user){ + String username=user.getUserName(); + String password=user.getPassword(); + String realName=user.getRealname(); + String phoneNumber=user.getPhonenumber(); + String address=user.getAddress(); + final String STR_ENG_PATTERN="^[a-z0-9A-Z]+$"; + if(username.length()>11||username.length()<3){ + return -1;//用户名长度错误 + }else if(userMapper.getUserInfo(username)!=null){ + return -2;//用户名重复 + }else if(!username.matches(STR_ENG_PATTERN)){ + return -3;//用户名包含非数字或字母 + }else if(password.length()<7||password.length()>15){ + return -4;//密码长度错误 + }else if(realName.length()>10){ + return -5;//真实姓名长度过长 + }else if(phoneNumber.length()!=11||!phoneNumber.matches("^[0-9]+$")){ + return -6;//电话号码格式错误 + }else if(address.length()>50){ + return -7;//地址过长 + } + return userMapper.registerUser(user); + } public int updateUser(User User){return userMapper.updateUser(User);} - public List searchAllUser(){return userMapper.searchAllUser();} + public List searchAllBuyer(){return userMapper.searchAllBuyer();} + } diff --git a/back-end_code/src/main/java/com/shop/utils/Result.java b/back-end_code/src/main/java/com/shop/utils/Result.java new file mode 100644 index 0000000..fa52d53 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/utils/Result.java @@ -0,0 +1,68 @@ +package com.shop.utils; + +import net.minidev.json.JSONObject; + +public class Result extends JSONObject { + + public static final String SUCCESS = "success"; + public static final String FAILURE = "error"; + + private boolean result; + private String message; + private Object data; + + private Result() {} + + public static Result ok() { + return Result.ok(SUCCESS); + } + + public static Result ok(String message) { + Result result = new Result(); + result.put("message:",message); + return result; + } + + + public static Result ok(String dataName, Object data) { + Result result = new Result(); + result.put("message:",SUCCESS); + result.put(dataName,data); + return result; + } + + public static Result fail() { + return Result.fail(FAILURE); + } + + public static Result fail(String message) { + return Result.fail("message", message); + } + + + public static Result fail(String dataName, Object data) { + Result result = new Result(); + result.put("message:",FAILURE); + result.put(dataName,data); + return result; + } + + public boolean isResult() { + return result; + } + public void setResult(boolean result) { + this.result = result; + } + public String getMsg() { + return message; + } + public void setMsg(String message) { + this.message = message; + } + public Object getData() { + return data; + } + public void setData(Object data) { + this.data = data; + } +} diff --git a/back-end_code/src/main/java/com/shop/utils/StringUtil.java b/back-end_code/src/main/java/com/shop/utils/StringUtil.java index 8f4dcc1..c247858 100644 --- a/back-end_code/src/main/java/com/shop/utils/StringUtil.java +++ b/back-end_code/src/main/java/com/shop/utils/StringUtil.java @@ -31,4 +31,20 @@ public class StringUtil { String path = "image/" + DateUtil.today() + "-" + uuid + suffix; return path; } + + public static String getRandomName(String fileName) { + + int index = fileName.lastIndexOf("."); + + if ((fileName == null || fileName.isEmpty()) || index == -1){ + throw new IllegalArgumentException(); + } + // 获取文件后缀 + String suffix = fileName.substring(index); + // 生成UUID + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + // 生成文件名 + String path = DateUtil.today() + "-" + uuid + suffix; + return path; + } } diff --git a/back-end_code/src/main/resources/application-dev.yml b/back-end_code/src/main/resources/application-dev.yml index 8fa5d15..55c39ba 100644 --- a/back-end_code/src/main/resources/application-dev.yml +++ b/back-end_code/src/main/resources/application-dev.yml @@ -24,4 +24,8 @@ oss: domain: http://cdn.souldays.top # 访问域名(默认使用七牛云测试域名) accessKey: KJb6ZIW_mplRncSOOFRDf5efUF_EY6LMwdD09uMb # 公钥 secretKey: _3ZryKtRPL3X66byb5evv7OC4X6ddgpdwpQRLJfI # 私钥 - bucketName: shop-software #存储空间名称 \ No newline at end of file + bucketName: shop-software #存储空间名称 + +#文件上传路径 +filepath: + bin: "E:/file/bin/" \ No newline at end of file diff --git a/back-end_code/src/main/resources/application-pro.yml b/back-end_code/src/main/resources/application-pro.yml new file mode 100644 index 0000000..2124426 --- /dev/null +++ b/back-end_code/src/main/resources/application-pro.yml @@ -0,0 +1,31 @@ +server: + port: 8083 + +spring: + datasource: + username: root + password: jiaxintang + #url中database为对应的数据库名称 + url: jdbc:mysql://localhost:3306/service2.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC + driver-class-name: com.mysql.cj.jdbc.Driver + +mybatis: + mapper-locations: classpath:mapping/*.xml + type-aliases-package: com.shop.entity + +#showSql +logging: + level: + com.example.demo.mapper: debug + +# 七牛云存储 +oss: + qiniu: + domain: http://cdn.souldays.top # 访问域名(默认使用七牛云测试域名) + accessKey: KJb6ZIW_mplRncSOOFRDf5efUF_EY6LMwdD09uMb # 公钥 + secretKey: _3ZryKtRPL3X66byb5evv7OC4X6ddgpdwpQRLJfI # 私钥 + bucketName: shop-software #存储空间名称 + +#文件上传路径 +filepath: + bin: "C:/file/bin/" \ No newline at end of file diff --git a/back-end_code/src/main/resources/application.yml b/back-end_code/src/main/resources/application.yml index caf4dfc..fc3033b 100644 --- a/back-end_code/src/main/resources/application.yml +++ b/back-end_code/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: dev \ No newline at end of file + active: pro \ No newline at end of file diff --git a/back-end_code/src/main/resources/mapping/CategoryMapper.xml b/back-end_code/src/main/resources/mapping/CategoryMapper.xml new file mode 100644 index 0000000..5f1a153 --- /dev/null +++ b/back-end_code/src/main/resources/mapping/CategoryMapper.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + insert into category + + + + categoryName, + + + parentCategoryId, + + + + + + + #{category_name,jdbcType=VARCHAR}, + + + #{parentCategory_id,jdbcType=INTEGER}, + + + + + + + + + + + + + + + delete from category where categoryId = #{category_id} + + + + + update category + + + categoryName = #{category_name,jdbcType=VARCHAR}, + + + parentCategoryId = #{parentCategory_id,jdbcType=INTEGER}, + + + where categoryId = #{category_id,jdbcType=INTEGER} + + + \ No newline at end of file diff --git a/back-end_code/src/main/resources/mapping/ClassMapper.xml b/back-end_code/src/main/resources/mapping/ClassMapper.xml deleted file mode 100644 index d216f90..0000000 --- a/back-end_code/src/main/resources/mapping/ClassMapper.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - insert into class - - - - className, - - - parentClassId, - - - - - - - #{class_name,jdbcType=VARCHAR}, - - - #{parentClass_id,jdbcType=INTEGER}, - - - - - - - - - - - - - delete from class where classId = #{class_id} - - - - - update class - - - className = #{class_name,jdbcType=VARCHAR}, - - - parentClassId = #{parentClass_id,jdbcType=INTEGER}, - - - where classId = #{class_id,jdbcType=INTEGER} - - - \ No newline at end of file diff --git a/back-end_code/src/main/resources/mapping/GoodsMapper.xml b/back-end_code/src/main/resources/mapping/GoodsMapper.xml index 5709cc0..5932718 100644 --- a/back-end_code/src/main/resources/mapping/GoodsMapper.xml +++ b/back-end_code/src/main/resources/mapping/GoodsMapper.xml @@ -8,7 +8,7 @@ - + @@ -33,8 +33,8 @@ goodsDiscribe, - - goodsClass, + + goodsCategory, goodsPrice, @@ -59,8 +59,8 @@ #{goods_discribe,jdbcType=VARCHAR}, - - #{goods_class,jdbcType=VARCHAR}, + + #{goods_category,jdbcType=VARCHAR}, #{goods_price,jdbcType=REAL}, @@ -93,8 +93,8 @@ goodsDiscribe = #{goods_discribe,jdbcType=VARCHAR}, - - goodsClass = #{goods_class,jdbcType=INTEGER}, + + goodsCategory = #{goods_category,jdbcType=INTEGER}, goodsPrice = #{goods_price,jdbcType=REAL}, @@ -107,8 +107,8 @@ update goods - - goodsState = #{newstate,jdbcType=INTEGER}, + + goodsState = #{new_state,jdbcType=INTEGER}, where itemId = #{item_id,jdbcType=INTEGER} @@ -140,13 +140,30 @@ - + select * from goods where goodsCategory = #{goods_category} and goodsState = 1 + + + + + + + update goods + + + goodsStock = #{new_stock,jdbcType=INTEGER}, + + + where itemId = #{item_id,jdbcType=INTEGER} + + \ No newline at end of file diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 2534599..9171276 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -4,12 +4,17 @@ + + + + + @@ -25,7 +30,7 @@ select * from orders where itemId = #{item_id,jdbcType=INTEGER} and state = 2 and sellerUsername = #{seller_username} - + @@ -65,7 +70,7 @@ select * from orders where sellerUsername = #{seller_username} and state = 2 - + @@ -78,9 +83,24 @@ itemId, + + goodsName, + + + goodsImg, + + + goodsDiscribe, + + + goodsPrice, + sellerUsername, + + buyerUsername, + buyerRealname, @@ -93,6 +113,9 @@ buySum, + + buyAmount, + state, @@ -105,9 +128,24 @@ #{item_id,jdbcType=INTEGER}, + + #{goods_name,jdbcType=VARCHAR}, + + + #{goods_img,jdbcType=VARCHAR}, + + + #{goods_discribe,jdbcType=VARCHAR}, + + + #{goods_price,jdbcType=REAL}, + #{seller_username,jdbcType=VARCHAR}, + + #{buyer_username,jdbcType=VARCHAR}, + #{buyer_realname,jdbcType=VARCHAR}, @@ -120,6 +158,9 @@ #{buy_sum ,jdbcType=INTEGER}, + + #{buy_amount ,jdbcType=REAL}, + #{state ,jdbcType=INTEGER}, @@ -133,5 +174,8 @@ + \ No newline at end of file diff --git a/back-end_code/src/main/resources/mapping/ShowCategoryMapper.xml b/back-end_code/src/main/resources/mapping/ShowCategoryMapper.xml new file mode 100644 index 0000000..fe62f36 --- /dev/null +++ b/back-end_code/src/main/resources/mapping/ShowCategoryMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + update showcategory + + Sequence = #{sequence,jdbcType=INTEGER}, + categoryId = #{category_id,jdbcType=INTEGER}, + categoryName = #{category_name,jdbcType=VARCHAR}, + + where ShowId = #{show_id,jdbcType=INTEGER} + + + + + + diff --git a/back-end_code/src/main/resources/mapping/UserMapper.xml b/back-end_code/src/main/resources/mapping/UserMapper.xml index 70d3984..7b08e5f 100644 --- a/back-end_code/src/main/resources/mapping/UserMapper.xml +++ b/back-end_code/src/main/resources/mapping/UserMapper.xml @@ -114,7 +114,7 @@ - select userName,nickName,phoneNumber,address,realName,userHead,permission from user where permission = 1 diff --git a/back-end_code/src/test/java/com/shop/service/ServiceApplicationTests.java b/back-end_code/src/test/java/com/shop/service/ServiceApplicationTests.java deleted file mode 100644 index ac56d4a..0000000 --- a/back-end_code/src/test/java/com/shop/service/ServiceApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.shop.service; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class ServiceApplicationTests { - - @Test - void contextLoads() { - } - -} diff --git "a/\346\216\245\345\217\243\346\226\207\346\241\243.md" "b/\346\216\245\345\217\243\346\226\207\346\241\243.md" new file mode 100644 index 0000000..3524a69 --- /dev/null +++ "b/\346\216\245\345\217\243\346\226\207\346\241\243.md" @@ -0,0 +1,1533 @@ +<<<<<<< HEAD +# User + +## 登陆 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/login + +#### 线上 +>http://souldays.top:8083/user/login + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入用户名和密码 +* 实现登陆功能 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| +|password|密码|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "permission": 2, + "message": "success", + "username ": "admin", + "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJhZG1pbiIsImV4cCI6MTYzODU4NDk2NSwiaWF0IjoxNjM4NTQxNzY1LCJ1c2VybmFtZSI6ImFkbWluIn0.eYprmaSIWmPd8mzI58dKpXVEwZ-uc-eggJl3MeaX2Ik" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|permission|权限|int|-| +|token|token|String|-| +|username|用户名|String|-| +|message|调用信息|String|-| + + + +## 获取用户信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/getUserInfo + +#### 线上 +>http://souldays.top:8083/user/getUserInfo + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入用户名 +* 获取用户信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success", + "user": { + "password": "wxy123", + "permission": 1, + "phonenumber": "12345678900", + "address": "浙江工商大学", + "realname": "纹宗", + "userName": "xyWei", + "userHead": "http://cdn.souldays.top/image/2021-11-14-9565b3f30f124a02acc5e46da020afff.jpg", + "nickName": "纹宗" + } +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|user|用户信息|User|-| +|message|调用信息|String|-| + + + +## 修改密码 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/updatePassword + +#### 线上 +>http://souldays.top:8083/user/updatePassword + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入用户名,旧密码,新密码 +* 实现修改密码 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| +|oldPassword|旧密码|String|Y|-| +|newPassword|新密码|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 注册 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/registerUser + +#### 线上 +>http://souldays.top:8083/user/registerUser + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入注册用户信息 +* 实现注册用户 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| +|password|密码|String|Y|-| +|nickname|昵称|String|Y|-| +|phonenumber|电话|String|Y|-| +|address|地址|String|Y|-| +|realname|真实姓名|String|Y|-| +|user_head|头像|String|N|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 修改用户信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/updateUser + +#### 线上 +>http://souldays.top:8083/user/updateUser + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入新用户信息 +* 实现用户修改个人信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|username|用户名|String|Y|-| +|nickname|昵称|String|Y|-| +|phonenumber|电话|String|Y|-| +|address|地址|String|Y|-| +|realname|真实姓名|String|Y|-| +|user_head|头像|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 卖家查看买家信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/user/searchAllUser + +#### 线上 +>http://souldays.top:8083/user/searchAllUser + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 实现查看全部用户信息 + +### 4) 请求参数: + +#### POST参数: 无 + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success", + "users": [ + { + "password": null, + "permission": 1, + "phonenumber": "17395711129", + "address": "翻斗花园", + "realname": "陈国栋", + "userName": "cgd", + "nickName": "cgd", + "userHead": "" + }, + { + "password": null, + "permission": 1, + "phonenumber": "12345678900", + "address": "浙江工商大学", + "realname": "纹宗", + "userName": "xyWei", + "nickName": "纹宗", + "userHead": "http://cdn.souldays.top/image/2021-11-14-9565b3f30f124a02acc5e46da020afff.jpg" + } + ] +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|users|用户信息表|List\|-| + + + +# Goods + +## 添加商品 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/addGoods + +#### 线上 +>http://souldays.top:8083/goods/addGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入商品信息 +* 实现添加商品 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|goods_name|商品名称|String|Y|-| +|goods_stock|商品数量|int|Y|-| +|goods_img|商品图片|String|Y|-| +|goods_discribe|商品描述|String|Y|-| +|goods_price|商品价格|float|Y|-| +|goods_category|商品类别|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 查询商品 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchGoods + +#### 线上 +>http://souldays.top:8083/goods/searchGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入商品编号 +* 实现查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|item_id|商品编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success", + "good": { + "item_id": 2, + "goods_name": "红牛", + "seller_username": "admin", + "goods_stock": 90, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-5715365be9f84bf191e6c10f7d02fb31.jpg", + "goods_discribe": "我出钱你出命,咱们一块神经病", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + } +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|good|商品信息|Good|-| +|message|调用信息|String|-| + + + +## 修改商品状态 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/updateGoodsState + +#### 线上 +>http://souldays.top:8083/goods/updateGoodsState + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入商品编号 +* 实现查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|买家用户名|String|Y|-| +|item_id|商品编号|int|Y|-| +|new_state|新商品状态|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + + +## 查找正在出售的商品 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchSellingGoods + +#### 线上 +>http://souldays.top:8083/goods/searchSellingGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 实现查询正在出售的商品信息 + +### 4) 请求参数: + +#### POST参数: 无 + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + }, + { + "item_id": 2, + "goods_name": "红牛", + "seller_username": "admin", + "goods_stock": 90, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-5715365be9f84bf191e6c10f7d02fb31.jpg", + "goods_discribe": "我出钱你出命,咱们一块神经病", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|goods|商品信息表|List\|-| + + + +## 查找正在出售的商品(首页使用) + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchWelcomeGoods + +#### 线上 +>http://souldays.top:8083/goods/searchWelcomeGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 实现查询正在出售的商品信息 + +### 4) 请求参数: + +#### POST参数: 无 + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + }, + { + "item_id": 2, + "goods_name": "红牛", + "seller_username": "admin", + "goods_stock": 90, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-5715365be9f84bf191e6c10f7d02fb31.jpg", + "goods_discribe": "我出钱你出命,咱们一块神经病", + "goods_price": 6.0, + "goods_state": 1, + "goods_category": 2 + } + ], + "message": "success", + "Strings": [ + "纹***", + "纹***", + "纹***" + ] +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|goods|商品信息表|List\|-| +|Strings|加密后的已下单用户名|List\|-| + + + +## 查找已下架的商品 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchHistoryGoods + +#### 线上 +>http://souldays.top:8083/goods/searchHistoryGoods + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入卖家用户名 +* 实现查询已下架的商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 3, + "goods_name": "AD钙奶", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-12-04-a1db84bba9ea4ed69736c756ec6955cf.jpg", + "goods_discribe": "童年的 味道", + "goods_price": 8.0, + "goods_state": 3, + "goods_category": 4 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|goods|商品信息表|List\|-| + + + +## 通过类别查询商品信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchGoodsByCategory + +#### 线上 +>http://souldays.top:8083/goods/searchGoodsByCategory + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的类别 +* 实现通过类别查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|goods_category|商品类别|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_category": 2, + "goods_price": 6.0, + "goods_state": 1 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| +|goods|商品信息表|List\|-| + + +## 通过关键词查询商品信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchGoodsByKeyName + +#### 线上 +>http://souldays.top:8083/goods/searchGoodsByKeyName + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的关键词 +* 实现通过关键词查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|key_name|商品关键词|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_category": 2, + "goods_price": 6.0, + "goods_state": 1 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|goods|商品信息表|List\|-| +|message|调用信息|String|-| + + + +## 通过类别和关键词查询商品信息 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/searchGoodsByCategoryAndKeyName + +#### 线上 +>http://souldays.top:8083/goods/searchGoodsByCategoryAndKeyName + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的类别和关键词 +* 实现通过类别和关键词查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|goods_category|商品类别|int|Y|-| +|key_name|商品关键词|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "goods": [ + { + "item_id": 1, + "goods_name": "魔爪", + "seller_username": "admin", + "goods_stock": 100, + "goods_img": "http://cdn.souldays.top/image/2021-10-26-bfe7515322954c53a89cd6b93dfdd4f6.jpg", + "goods_discribe": "不怕红牛不要命,就怕魔爪技术硬", + "goods_category": 2, + "goods_price": 6.0, + "goods_state": 1 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|goods|商品信息表|List\|-| +|message|调用信息|String|-| + + + +## 修改商品库存 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/goods/updateGoodStock + +#### 线上 +>http://souldays.top:8083/goods/updateGoodStock + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要修改的商品编号和新的库存 +* 实现通过类别和关键词查询商品信息 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|new_stock|商品库存|int|Y|-| +|item_id|商品编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +# Order + +## 查看商品意向购买买家 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/searchWantBuyerlistByItemId + +#### 线上 +>http://souldays.top:8083/order/searchWantBuyerlistByItemId + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的商品编号和卖家用户名 +* 实现通过商品编号查询商品意向买家 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| +|item_id|商品编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "orders": [ + { + "order_id": 158, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 5, + "create_time": "2021-11-15 21:16:08", + "finish_time": null + }, + { + "order_id": 160, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 5, + "create_time": "2021-11-15 21:17:20", + "finish_time": null + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|orders|订单信息表|List\|-| +|message|调用信息|String|-| + + + +## 同意意向购买买家 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/agreeOrderwanted + +#### 线上 +>http://souldays.top:8083/order/agreeOrderwanted + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要同意的订单编号和卖家用户名 +* 实现同意商品意向买家 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| +|order_id|订单编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success", + "order": { + "order_id": 158, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 1, + "create_time": "2021-11-15 21:16:08", + "finish_time": null + } +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|order|订单信息|Order|-| +|message|调用信息|String|-| + + + +## 完成交易 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/finishOrder + +#### 线上 +>http://souldays.top:8083/order/finishOrder + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要完成的订单编号和卖家用户名 +* 实现完成奖交易 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| +|order_id|订单编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 取消交易 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/cancelOrder + +#### 线上 +>http://souldays.top:8083/order/cancelOrder + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要取消的订单编号和卖家用户名 +* 实现取消交易 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|seller_username|卖家用户名|String|Y|-| +|order_id|订单编号|int|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 意向买家下单 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/addToOrderWanted + +#### 线上 +>http://souldays.top:8083/order/addToOrderWanted + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要取消的订单编号和卖家用户名 +* 实现取消交易 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|buyer_username|买家用户名|String|Y|-| +|item_id|商品编号|int|Y|-| +|buyer_realname|买家真实姓名|String|N|-| +|buyer_phonenumber|买家电话|int|N|-| +|buyer_address|买家地址|String|N|-| +|buy_sum|购买数量|int|Y|-| +|buy_amount|订单总金额|float|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 查看历史购买记录 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/order/searchFinishOrderByBuyerUserName + +#### 线上 +>http://souldays.top:8083/order/searchFinishOrderByBuyerUserName + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要查询的家买用户名 +* 实现查看历史购买记录 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|buyer_username|买家用户名|String|Y|-| + +### 5) 请求返回结果: + +``` +成功 +{ + "orders": [ + { + "order_id": 157, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 2, + "create_time": "2021-11-15 20:58:48", + "finish_time": "2021-11-15 22:59:04" + }, + { + "order_id": 158, + "item_id": 2, + "goods_name": "", + "goods_img": "", + "goods_discribe": null, + "goods_price": 0.0, + "seller_username": "admin", + "buyer_username": "xyWei", + "buyer_realname": "纹宗", + "buyer_phonenumber": "12345678900", + "buyer_address": "浙江工商大学", + "buy_sum": 10, + "buy_amount": 0.0, + "state": 2, + "create_time": "2021-11-15 21:16:08", + "finish_time": "2021-12-04 10:39:17" + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|orders|订单信息表|List\|-| +|message|调用信息|String|-| + + + +# Category + +## 添加类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/addCategory + +#### 线上 +>http://souldays.top:8083/category/addCategory + +### 2) 调用方式:HTTP post + +### 3) 接口描述: + +* 传入需要添加的类别类 +* 实现添加类别 + +### 4) 请求参数: + +#### POST参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|category_name|类别名|String|Y|-| +|parentCategory_id|父类别编号|int|N|无参为父类别| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| + + + +## 查询父类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/searchParentCategory + +#### 线上 +>http://souldays.top:8083/category/searchParentCategory + +### 2) 调用方式:HTTP get + +### 3) 接口描述: + +* 实现查询父类别 + +### 4) 请求参数: + +#### GET参数: 无 + +### 5) 请求返回结果: + +``` +成功 +{ + "categorys": [ + { + "category_id": 1, + "category_name": "饮料茶水", + "parentCategory_id": 0 + }, + { + "category_id": 5, + "category_name": "娃哈哈", + "parentCategory_id": 0 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|categorys|类别信息表|List\|-| +|message|调用信息|String|-| + + + +## 查询子类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/searchChildCategory + +#### 线上 +>http://souldays.top:8083/category/searchChildCategory + +### 2) 调用方式:HTTP get + +### 3) 接口描述: + +* 传入需要查询的父类别编号 +* 实现查询子类别 + +### 4) 请求参数: + +#### GET参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|parentCategory_id|父类别编号|int|Y|| + +### 5) 请求返回结果: + +``` +成功 +{ + "categories": [ + { + "category_id": 2, + "category_name": "白酒", + "parentCategory_id": 1 + }, + { + "category_id": 3, + "category_name": "茶饮料", + "parentCategory_id": 1 + }, + { + "category_id": 4, + "category_name": "牛奶", + "parentCategory_id": 1 + } + ], + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|categorys|类别信息表|List\|-| +|message|调用信息|String|-| + + + +## 查询子类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/deleteCategoryByItemId + +#### 线上 +>http://souldays.top:8083/category/deleteCategoryByItemId + +### 2) 调用方式:HTTP delete + +### 3) 接口描述: + +* 传入需要删除的类别编号 +* 实现删除类别 + +### 4) 请求参数: + +#### DELETE参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|category_id|类别编号|int|Y|| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------|、 +|message|调用信息|String|-| + + + +## 修改类别 + +### 1) 请求地址 + +#### 本地 +>http://localhost:8083/category/updateCategory + +#### 线上 +>http://souldays.top:8083/category/updateCategory + +### 2) 调用方式:HTTP delete + +### 3) 接口描述: + +* 传入需要修改的类别类 +* 实现修改类别 + +### 4) 请求参数: + +#### DELETE参数: +|字段名称 |字段说明 |类型 |必填 |备注 | +| -------------|--------------|--------------|--------------| ------| +|category_id|类别编号|int|Y|| +|parentCategory_id|类别编号|int|Y|| +|category_name|类别编号|String|Y|| + +### 5) 请求返回结果: + +``` +成功 +{ + "message": "success" +} + +失败 +{ + "message": "error" +} +``` + +### 6) 请求返回结果参数说明: +|字段名称 |字段说明 |类型 |备注 | +| -------------|--------------|--------------|------| +|message|调用信息|String|-| diff --git "a/\346\216\245\345\217\243\346\226\207\346\241\243.pdf" "b/\346\216\245\345\217\243\346\226\207\346\241\243.pdf" index a85856fab8b0b3efc6aa51fb96dc4d7b84ee3773..0c35d559f8fc3aa8d5baf6f876c51c316cd17ef9 100644 GIT binary patch literal 534103 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�Ay$1Z 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 z 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 -- Gitee From f180da067d35b3db1492c3119745e863ba15b07d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B9=E5=AE=97?= <2937021973@qq.com> Date: Mon, 28 Feb 2022 02:45:02 +0000 Subject: [PATCH 049/133] =?UTF-8?q?!17=20=E5=AE=8C=E5=96=84Result=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB=20*=20=E5=AE=8C=E5=96=84Result=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/FileController.java | 5 ++- .../com/shop/controller/GoodsController.java | 44 ++++++++++--------- .../src/main/java/com/shop/utils/Result.java | 39 +++++++++------- .../src/main/resources/application.yml | 2 +- 4 files changed, 52 insertions(+), 38 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/FileController.java b/back-end_code/src/main/java/com/shop/controller/FileController.java index 6380a1f..1ea4cfc 100644 --- a/back-end_code/src/main/java/com/shop/controller/FileController.java +++ b/back-end_code/src/main/java/com/shop/controller/FileController.java @@ -2,6 +2,7 @@ package com.shop.controller; import com.shop.utils.Result; import com.shop.utils.StringUtil; +import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.web.bind.annotation.RequestMapping; @@ -28,8 +29,10 @@ public class FileController { String fullPath = fileBinPath+newFilename; File dest = new File(fullPath); try { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("path",fullPath); file.transferTo(dest); - return Result.ok("path",fullPath); + return Result.ok(jsonObject); } catch (IOException e) { e.printStackTrace(); return Result.fail(); diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index f419bca..3c72a8c 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -5,6 +5,7 @@ import com.shop.service.GOService; import com.shop.service.GoodsService; import com.shop.service.OrderService; import com.shop.service.UploadImageService; +import com.shop.utils.Result; import com.shop.utils.StringUtil; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; @@ -102,29 +103,32 @@ public class GoodsController { } //在goods表中查找所有正在出售的商品 - @RequestMapping(value = "/searchSellingGoods") - public Object searchSellingGoods(HttpServletRequest request, HttpServletResponse response){ - String message = "error"; - JSONObject jsonObject = new JSONObject(); - List goods= goodsService.searchSellingGoods(); - message = "success"; - jsonObject.put("message",message); - jsonObject.put("goods",goods); - return jsonObject; + @GetMapping(value = "/searchSellingGoods") + public Object searchSellingGoods(){ + try { + JSONObject jsonObject = new JSONObject(); + List goods= goodsService.searchSellingGoods(); + jsonObject.put("goods",goods); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } } - //在goods表中查找所有正在出售的商品。 - @RequestMapping(value = "/searchWelcomeGoods") + //在goods表中查找欢迎界面商品 + @GetMapping(value = "/searchWelcomeGoods") public Object searchWelcomeGoods(){ - String message = "error"; - JSONObject jsonObject = new JSONObject(); - List goods = goodsService.searchWelcomeGoods(); - List stringList = orderService.searchSellingGoodsBuyerRealname(); - message = "success"; - jsonObject.put("goods",goods); - jsonObject.put("Strings",stringList); - jsonObject.put("message",message); - return jsonObject; + try{ + JSONObject jsonObject = new JSONObject(); + List goods = goodsService.searchWelcomeGoods(); + List stringList = orderService.searchSellingGoodsBuyerRealname(); + jsonObject.put("goods",goods); + jsonObject.put("Strings",stringList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } //在goods表中查询历史商品 diff --git a/back-end_code/src/main/java/com/shop/utils/Result.java b/back-end_code/src/main/java/com/shop/utils/Result.java index fa52d53..9259986 100644 --- a/back-end_code/src/main/java/com/shop/utils/Result.java +++ b/back-end_code/src/main/java/com/shop/utils/Result.java @@ -14,39 +14,46 @@ public class Result extends JSONObject { private Result() {} public static Result ok() { - return Result.ok(SUCCESS); - } - - public static Result ok(String message) { Result result = new Result(); - result.put("message:",message); + result.put("code:",200); return result; } - - public static Result ok(String dataName, Object data) { + public static Result ok(Object data) { Result result = new Result(); - result.put("message:",SUCCESS); - result.put(dataName,data); + result.put("code:",200); + result.put("data:",data); return result; } + +// public static Result ok(String message, Object data) { +// Result result = new Result(); +// result.put("code:",200); +// result.put("data:",data); +// return result; +// } + public static Result fail() { return Result.fail(FAILURE); } public static Result fail(String message) { - return Result.fail("message", message); - } - - - public static Result fail(String dataName, Object data) { Result result = new Result(); - result.put("message:",FAILURE); - result.put(dataName,data); + result.put("code:",500); + result.put("message:",message); return result; } + +// public static Result fail(String dataName, Object data) { +// Result result = new Result(); +// result.put("code:",500); +// result.put("message:",FAILURE); +// result.put(dataName,data); +// return result; +// } + public boolean isResult() { return result; } diff --git a/back-end_code/src/main/resources/application.yml b/back-end_code/src/main/resources/application.yml index fc3033b..caf4dfc 100644 --- a/back-end_code/src/main/resources/application.yml +++ b/back-end_code/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: pro \ No newline at end of file + active: dev \ No newline at end of file -- Gitee From 7a6cdd9cb7bf2e8a2413643b8df6d89535b75766 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Tue, 1 Mar 2022 08:49:26 +0800 Subject: [PATCH 050/133] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=AB=AF=E5=8F=A3?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E6=95=B0=E6=8D=AE=E5=BA=93=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=94=A8=E4=BA=8E=E5=8D=87=E7=BA=A7=E5=8C=85B=E7=9A=84?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/src/main/resources/application-dev.yml | 6 +++--- back-end_code/src/main/resources/application-pro.yml | 6 +++--- back-end_code/src/main/resources/application.yml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/back-end_code/src/main/resources/application-dev.yml b/back-end_code/src/main/resources/application-dev.yml index 55c39ba..a5efde6 100644 --- a/back-end_code/src/main/resources/application-dev.yml +++ b/back-end_code/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 8083 + port: 8084 spring: datasource: username: xiangwan password: dingwanren #url中database为对应的数据库名称 - url: jdbc:mysql://47.103.214.177:3306/service2.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC + url: jdbc:mysql://47.103.214.177:3306/service3.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver mybatis: @@ -28,4 +28,4 @@ oss: #文件上传路径 filepath: - bin: "E:/file/bin/" \ No newline at end of file + bin: "E:/file/bin/" diff --git a/back-end_code/src/main/resources/application-pro.yml b/back-end_code/src/main/resources/application-pro.yml index 2124426..9b61ba7 100644 --- a/back-end_code/src/main/resources/application-pro.yml +++ b/back-end_code/src/main/resources/application-pro.yml @@ -1,12 +1,12 @@ server: - port: 8083 + port: 8084 spring: datasource: username: root password: jiaxintang #url中database为对应的数据库名称 - url: jdbc:mysql://localhost:3306/service2.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC + url: jdbc:mysql://localhost:3306/service3.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver mybatis: @@ -28,4 +28,4 @@ oss: #文件上传路径 filepath: - bin: "C:/file/bin/" \ No newline at end of file + bin: "C:/file/bin/" diff --git a/back-end_code/src/main/resources/application.yml b/back-end_code/src/main/resources/application.yml index fc3033b..3d7808a 100644 --- a/back-end_code/src/main/resources/application.yml +++ b/back-end_code/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: pro \ No newline at end of file + active: dev -- Gitee From bfe3b29bffefdbfe2235f425d570ab21f83cb010 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 1 Mar 2022 14:07:12 +0800 Subject: [PATCH 051/133] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E8=B4=AD=E7=89=A9?= =?UTF-8?q?=E8=BD=A6=E5=AE=9E=E4=BD=93=E7=B1=BB=202.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=B9=B6=E6=B5=8B=E8=AF=95=E9=80=9A=E8=BF=87=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=9AsearchCartByUsername=20addToCart=20updateCartCount=20d?= =?UTF-8?q?eleteCart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/CartController.java | 71 ++++++++++++++++ .../src/main/java/com/shop/entity/Cart.java | 83 +++++++++++++++++++ .../main/java/com/shop/mapper/CartMapper.java | 54 ++++++++++++ .../java/com/shop/service/CartService.java | 32 +++++++ .../src/main/java/com/shop/utils/Result.java | 1 + .../src/main/resources/mapping/CartMapper.xml | 69 +++++++++++++++ 6 files changed, 310 insertions(+) create mode 100644 back-end_code/src/main/java/com/shop/controller/CartController.java create mode 100644 back-end_code/src/main/java/com/shop/entity/Cart.java create mode 100644 back-end_code/src/main/java/com/shop/mapper/CartMapper.java create mode 100644 back-end_code/src/main/java/com/shop/service/CartService.java create mode 100644 back-end_code/src/main/resources/mapping/CartMapper.xml diff --git a/back-end_code/src/main/java/com/shop/controller/CartController.java b/back-end_code/src/main/java/com/shop/controller/CartController.java new file mode 100644 index 0000000..0265cff --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/CartController.java @@ -0,0 +1,71 @@ +package com.shop.controller; + +import com.shop.entity.Cart; +import com.shop.service.CartService; +import com.shop.service.GoodsService; +import com.shop.utils.Result; +import net.minidev.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/cart") +public class CartController { + @Autowired + private CartService cartService; + @Autowired + private GoodsService goodsService; + //查看当前用户购物车内所有商品 + @GetMapping("/searchCartByUsername") + public Object searchCartByUsername(@RequestParam String username){ + try{ + JSONObject jsonObject = new JSONObject(); + List carts =cartService.searchCartByUsername(username); + jsonObject.put("carts:",carts); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(e.toString()); + } + } + //将商品添加到购物车(如果已存在,数量+1) + @PostMapping("/addToCart") + public Object addToCart(@RequestBody Cart cart){ + try{ + //如果购物车中已有该商品,数量+1 + Cart existCart = cartService.searchCart(cart.getBuyer_username(),cart.getItem_id()); + if(existCart!=null){ + cartService.updateCartCount(existCart.getCart_id(), existCart.getCount()+1); + }else { + cartService.addToCart(cart.getBuyer_username(),cart.getSeller_username(), cart.getItem_id(),cart.getCount()); + } + return Result.ok(); + }catch (Exception e){ + return Result.fail(); + } + } + + //更新购物车商品数量 + @PutMapping("/updateCartCount") + public Object updateCartCount(@RequestBody Cart cart){ + try { + cartService.updateCartCount(cart.getCart_id(),cart.getCount()); + return Result.ok(); + } catch (Exception e) { + return Result.fail(e.toString()); + } + } + //购物车删除商品 + @DeleteMapping("/deleteCart") + public Object deleteCart(@RequestParam int cart_id){ + try { + cartService.deleteCart(cart_id); + return Result.ok(); + } catch (Exception e) { + return Result.fail(e.toString()); + } + } + //购物车商品转为收藏 + +} diff --git a/back-end_code/src/main/java/com/shop/entity/Cart.java b/back-end_code/src/main/java/com/shop/entity/Cart.java new file mode 100644 index 0000000..dcbac0b --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/Cart.java @@ -0,0 +1,83 @@ +package com.shop.entity; + +import java.io.Serializable; +import lombok.Data; + +/** + * cart + * @author + */ +@Data +public class Cart { + private int cart_id; + + private int item_id; + + private String buyer_username; + + private int count; + + private String seller_username; + + public Cart() { + } + + public Cart(int cart_id, int item_id, String buyer_username, int count, String seller_username) { + this.cart_id = cart_id; + this.item_id = item_id; + this.buyer_username = buyer_username; + this.count = count; + this.seller_username = seller_username; + } + + public int getCart_id() { + return cart_id; + } + + public void setCart_id(int cart_id) { + this.cart_id = cart_id; + } + + public int getItem_id() { + return item_id; + } + + public void setItem_id(int item_id) { + this.item_id = item_id; + } + + public String getBuyer_username() { + return buyer_username; + } + + public void setBuyer_username(String buyer_username) { + this.buyer_username = buyer_username; + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } + + public String getSeller_username() { + return seller_username; + } + + public void setSeller_username(String seller_username) { + this.seller_username = seller_username; + } + + @Override + public String toString() { + return "Cart{" + + "cart_id=" + cart_id + + ", item_id=" + item_id + + ", buyer_username='" + buyer_username + '\'' + + ", count=" + count + + ", seller_username='" + seller_username + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/back-end_code/src/main/java/com/shop/mapper/CartMapper.java b/back-end_code/src/main/java/com/shop/mapper/CartMapper.java new file mode 100644 index 0000000..0794b95 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/mapper/CartMapper.java @@ -0,0 +1,54 @@ +package com.shop.mapper; + +import com.shop.entity.Cart; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * + * @param + * + * @return + */ +@Repository +public interface CartMapper { + + /** + * 根据买家username查找购物车商品列表 + * @param buyer_username + * @return + */ + List searchCartByBuyerUsername(String buyer_username); + + /** + * 添加商品到收藏 + * @param buyer_username + * @param seller_username + * @param item_id + * @param count + * @return + */ + int addToCart(String buyer_username,String seller_username,int item_id,int count); + /** + *根据买家id和商品id查找购物车(用于判断购物车中是否已有该商品 + * @param buyer_username + * @param item_id + * @return + */ + Cart searchCart(String buyer_username,int item_id); + + /** + *更新购物车数量 + * @param cart_id + * @param count + * @return + */ + int updateCart(int cart_id,int count); + /** + *购物车删除商品 + * @param cart_id + * @return + */ + int deleteCart(int cart_id); +} diff --git a/back-end_code/src/main/java/com/shop/service/CartService.java b/back-end_code/src/main/java/com/shop/service/CartService.java new file mode 100644 index 0000000..dd8ef07 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/CartService.java @@ -0,0 +1,32 @@ +package com.shop.service; + +import com.shop.entity.Cart; +import com.shop.mapper.CartMapper; +import com.shop.mapper.GoodsMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class CartService { + @Autowired + private CartMapper cartMapper; + @Autowired + private GoodsMapper goodsMapper; + + public List searchCartByUsername(String buyer_username){ + + return cartMapper.searchCartByBuyerUsername(buyer_username); + } + + public int addToCart(String buyer_username,String seller_username,int item_id,int count){ + return cartMapper.addToCart(buyer_username,seller_username,item_id,count); + } + + public Cart searchCart(String buyer_username,int item_id){return cartMapper.searchCart(buyer_username,item_id);} + + public int updateCartCount(int cart_id,int count){return cartMapper.updateCart(cart_id,count);} + + public int deleteCart(int cart_id){return cartMapper.deleteCart(cart_id);} +} diff --git a/back-end_code/src/main/java/com/shop/utils/Result.java b/back-end_code/src/main/java/com/shop/utils/Result.java index 9259986..021c0f7 100644 --- a/back-end_code/src/main/java/com/shop/utils/Result.java +++ b/back-end_code/src/main/java/com/shop/utils/Result.java @@ -16,6 +16,7 @@ public class Result extends JSONObject { public static Result ok() { Result result = new Result(); result.put("code:",200); + result.put("message:",SUCCESS); return result; } diff --git a/back-end_code/src/main/resources/mapping/CartMapper.xml b/back-end_code/src/main/resources/mapping/CartMapper.xml new file mode 100644 index 0000000..265e678 --- /dev/null +++ b/back-end_code/src/main/resources/mapping/CartMapper.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + insert into cart + + + + buyerUsername, + + + sellerUsername, + + + itemId, + + + count, + + + + + + + #{buyer_username,jdbcType=VARCHAR}, + + + #{seller_username,jdbcType=VARCHAR}, + + + #{item_id,jdbcType=INTEGER}, + + + #{count,jdbcType=INTEGER}, + + + + + update cart + + + count = #{count,jdbcType=INTEGER}, + + + where cartId = #{cart_id,jdbcType=INTEGER} + + + delete from cart where cartId = #{cart_id} + + + + + \ No newline at end of file -- Gitee From 01c6bb6364674d3bfa133533b6f81a2fc3531266 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 1 Mar 2022 14:21:36 +0800 Subject: [PATCH 052/133] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=83=AD=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/pom.xml | 7 +++++++ back-end_code/src/main/resources/application-dev.yml | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/back-end_code/pom.xml b/back-end_code/pom.xml index f3b0005..b724e01 100644 --- a/back-end_code/pom.xml +++ b/back-end_code/pom.xml @@ -74,6 +74,13 @@ net.minidev json-smart + + + org.springframework.boot + spring-boot-devtools + true + true + diff --git a/back-end_code/src/main/resources/application-dev.yml b/back-end_code/src/main/resources/application-dev.yml index a5efde6..9fefad8 100644 --- a/back-end_code/src/main/resources/application-dev.yml +++ b/back-end_code/src/main/resources/application-dev.yml @@ -8,6 +8,13 @@ spring: #url中database为对应的数据库名称 url: jdbc:mysql://47.103.214.177:3306/service3.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver + devtools: + restart: + enabled: true #设置开启热部署 + additional-paths: src/main/java #重启目录 + exclude: WEB-INF/** + freemarker: + cache: false #页面不加载缓存,修改即时生效 mybatis: mapper-locations: classpath:mapping/*.xml -- Gitee From 71202ea3e3ef7972fdd493c16ab24d42e77f2c1f Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Wed, 2 Mar 2022 22:57:19 +0800 Subject: [PATCH 053/133] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E5=8C=85B=E7=9A=84=E8=AE=A2=E5=8D=95=E9=99=A4=E4=B8=8B?= =?UTF-8?q?=E5=8D=95=E4=BB=A5=E5=A4=96=E7=9A=84=E6=89=80=E6=9C=89=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3:=20=E6=9B=B4=E6=96=B0=E8=AE=A2=E5=8D=95=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=9A=84=E7=8A=B6=E6=80=81=E7=A0=81=20=E6=89=80?= =?UTF-8?q?=E6=9C=89=E8=AE=A2=E5=8D=95=E5=AF=B9=E4=B8=8B=E4=B8=80=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=94=B9=E5=8F=98=E7=9A=84=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E4=B9=B0=E5=AE=B6=E5=8D=96=E5=AE=B6=E6=9F=A5=E8=AF=A2=E5=90=84?= =?UTF-8?q?=E4=B8=AA=E7=8A=B6=E6=80=81=E4=B8=8B=E7=9A=84=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=20=E4=B9=B0=E5=AE=B6=E5=8D=96=E5=AE=B6=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/OrderController.java | 301 +++++++++++++++--- .../src/main/java/com/shop/entity/User.java | 6 + .../java/com/shop/mapper/OrderMapper.java | 129 +++++++- .../java/com/shop/service/OrderService.java | 19 +- .../main/resources/mapping/OrderMapper.xml | 113 ++++++- 5 files changed, 497 insertions(+), 71 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 6c0d5bb..0a33411 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -8,6 +8,7 @@ import com.shop.service.GOService; import com.shop.service.GoodsService; import com.shop.service.OrderService; import com.shop.service.UserService; +import com.shop.utils.Result; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -118,47 +119,35 @@ public class OrderController { return jsonObject; } - //完成交易(下架) - @RequestMapping(value = "/finishOrder") - public Object finishOrder(HttpServletRequest request, HttpServletResponse response){ + //根据用户名查看历史购买记录 + @GetMapping("/searchFinishOrderByBuyerUserName") + public Object searchFinishOrderByBuyerName(@RequestParam String buyer_username){ String message = "error"; - String seller_username = request.getParameter("seller_username"); - int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); - String finish_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - int result = orderService.finishOrder(seller_username,order_id,finish_time); - if (result >=1){ - message = "success"; - }else { - message = "error"; - } + List orderList = orderService.searchFinishOrderByBuyerName(buyer_username); + message = "success"; + jsonObject.put("orders",orderList); jsonObject.put("message",message); return jsonObject; } - //取消交易(恢复) - @RequestMapping(value = "/cancelOrder") - public Object cancelOrder(HttpServletRequest request, HttpServletResponse response){ + //根据卖家用户名查找所有订单 + @GetMapping("/searchOrdersBySellerName") + public Object searchOrdersBySellerName(@RequestParam String seller_username){ String message = "error"; - String seller_username = request.getParameter("seller_username"); - int order_id = Integer.parseInt(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); - goService.deleteGOByOrderId(order_id); - int result = orderService.cancelOrder(seller_username,order_id); - if (result >=1){ - message = "success"; - }else { - message = "error"; - } + List orderList = orderService.searchOrdersBySellerName(seller_username); + message = "success"; + jsonObject.put("orders",orderList); jsonObject.put("message",message); return jsonObject; - } //意向购买者下单 - @PostMapping(value = "/addToOrderWanted") - public Object addToOrderWanted(@RequestBody Map request){ + @PostMapping(value = "/addOrder") + public Object addOrder(@RequestBody Map request){ String message = "error"; + int buy_sum = 0; int item_id = Integer.parseInt(request.get("item_id")); Goods good = goodsService.searchGoods(item_id); String goods_name = good.getGoods_name(); @@ -180,7 +169,7 @@ public class OrderController { if (buyer_address == null){ buyer_address = user.getAddress(); } - int buy_sum = Integer.parseInt(request.get("buy_sum")); + buy_sum = Integer.parseInt(request.get("buy_sum")); float buy_amount; buy_amount = buy_sum*good.getGoods_price(); String create_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); @@ -198,26 +187,242 @@ public class OrderController { return jsonObject; } - //根据用户名查看历史购买记录 - @GetMapping("/searchFinishOrderByBuyerUserName") - public Object searchFinishOrderByBuyerName(@RequestParam String buyer_username){ - String message = "error"; - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.searchFinishOrderByBuyerName(buyer_username); - message = "success"; - jsonObject.put("orders",orderList); - jsonObject.put("message",message); - return jsonObject; + //买家查询待确认的订单 + @GetMapping("/buyerSearchUnconfirmedOrder") + public Object buyerSearchUnconfirmedOrder(@RequestParam String buyer_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.buyerSearchUnconfirmedOrder(buyer_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } } - //根据卖家用户名查找所有订单 - @GetMapping("/searchOrdersBySellerName") - public Object searchOrdersBySellerName(@RequestParam String seller_username){ - String message = "error"; - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.searchOrdersBySellerName(seller_username); - message = "success"; - jsonObject.put("orders",orderList); - jsonObject.put("message",message); - return jsonObject; + + //卖家查询待确认的订单 + @GetMapping("/sellerSearchUnconfirmedOrder") + public Object sellerSearchUnconfirmedOrder(@RequestParam String seller_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchUnconfirmedOrder(seller_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } + + //卖家确认待确认的订单 + @PutMapping(value = "/confirmOrder") + public Object confirmOrder(@RequestBody Map request){ + try { + JSONObject jsonObject = new JSONObject(); + String seller_username = request.get("seller_username"); + int order_id = Integer.parseInt(request.get("order_id")); + int result = orderService.confirmOrder(seller_username,order_id); + if (result != 0){ + return Result.ok(); + }else { + return Result.fail(); + } + }catch (Exception e){ + return Result.fail(); + } + } + + //买家查询待备货的订单 + @GetMapping("/buyerSearchUnpickOrder") + public Object buyerSearchUnpickOrder(@RequestParam String buyer_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.buyerSearchUnpickOrder(buyer_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } + + //卖家查询待备货的订单 + @GetMapping("/sellerSearchUnpickOrder") + public Object sellerSearchUnpickOrder(@RequestParam String seller_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchUnpickOrder(seller_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } + + //卖家完成备货订单 + @PutMapping(value = "/pickOrder") + public Object pickOrder(@RequestBody Map request){ + try { + JSONObject jsonObject = new JSONObject(); + String seller_username = request.get("seller_username"); + int order_id = Integer.parseInt(request.get("order_id")); + int result = orderService.pickOrder(seller_username,order_id); + if (result >= 1){ + return Result.ok(); + }else { + return Result.fail(); + } + }catch (Exception e){ + return Result.fail(); + } + } + + //买家查询待备货的订单 + @GetMapping("/buyerSearchUndeliverOrder") + public Object buyerSearchUndeliverOrder(@RequestParam String buyer_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.buyerSearchUndeliverOrder(buyer_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } + + //买家修改待发货的订单收货人信息 + @PutMapping(value = "/buyerUpdateUndeliverOrder") + public Object buyerUpdateUndeliverOrder(@RequestBody Map request){ + try { + JSONObject jsonObject = new JSONObject(); + String username = request.get("username"); + String buyer_realname = request.get("buyer_realname"); + String buyer_phonenumber = request.get("buyer_phonenumber"); + String buyer_address = request.get("buyer_address"); + User user = new User(username,buyer_realname,buyer_phonenumber,buyer_address); + int order_id = Integer.parseInt(request.get("order_id")); + int result = orderService.buyerUpdateUndeliverOrder(order_id,user); + if (result >= 1){ + return Result.ok(); + }else { + return Result.fail(); + } + }catch (Exception e){ + return Result.fail(); + } + } + + //卖家查询待备货的订单 + @GetMapping("/sellerSearchUndeliverOrder") + public Object sellerSearchUndeliverOrder(@RequestParam String seller_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchUndeliverOrder(seller_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } } + + //卖家发货订单 + @PutMapping(value = "/deliverOrder") + public Object deliverOrder(@RequestBody Map request){ + try { + JSONObject jsonObject = new JSONObject(); + String seller_username = request.get("seller_username"); + int order_id = Integer.parseInt(request.get("order_id")); + int result = orderService.deliverOrder(seller_username,order_id); + if (result >= 1){ + return Result.ok(); + }else { + return Result.fail(); + } + }catch (Exception e){ + return Result.fail(); + } + } + + //买家查询待待收货的订单 + @GetMapping("/buyerSearchUnfinishOrder") + public Object buyerSearchUnfinishOrder(@RequestParam String buyer_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.buyerSearchUnfinishOrder(buyer_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } + + //卖家查询待收货的订单 + @GetMapping("/sellerSearchUnfinishOrder") + public Object sellerSearchUnfinishOrder(@RequestParam String seller_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchUnfinishOrder(seller_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } + + + //买家根据order_id(订单ID)完成交易 + @PutMapping(value = "/finishOrder") + public Object finishOrder(@RequestBody Map request) { + try { + String seller_username = request.get("seller_username"); + int order_id = Integer.parseInt(request.get("order_id")); + JSONObject jsonObject = new JSONObject(); + String finish_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + int result = orderService.finishOrder(seller_username, order_id, finish_time); + if (result >= 1) { + return Result.ok(); + } else { + return Result.fail(); + } + }catch (Exception e) { + return Result.fail(); + } + } + + //卖家根据order_id(订单ID)取消订单 + @PutMapping(value = "/sellerCancelOrder") + public Object sellerCancelOrder(@RequestBody Map request){ + try { + String seller_username = request.get("seller_username"); + int order_id = Integer.parseInt(request.get("order_id")); + JSONObject jsonObject = new JSONObject(); + goService.deleteGOByOrderId(order_id); + int result = orderService.sellerCancelOrder(order_id,seller_username); + if (result >= 1) { + return Result.ok(); + } else { + return Result.fail(); + } + }catch (Exception e) { + return Result.fail(); + } + } + + //买家根据order_id(订单ID)取消订单 + @PutMapping(value = "/buyerCancelOrder") + public Object buyerCancelOrder(@RequestBody Map request){ + try { + String buyer_username = request.get("buyer_username"); + int order_id = Integer.parseInt(request.get("order_id")); + JSONObject jsonObject = new JSONObject(); + goService.deleteGOByOrderId(order_id); + int result = orderService.buyerCancelOrder(order_id,buyer_username); + if (result >= 1) { + return Result.ok(); + } else { + return Result.fail(); + } + }catch (Exception e) { + return Result.fail(); + } + } + } diff --git a/back-end_code/src/main/java/com/shop/entity/User.java b/back-end_code/src/main/java/com/shop/entity/User.java index 83acf6f..9d95cb8 100644 --- a/back-end_code/src/main/java/com/shop/entity/User.java +++ b/back-end_code/src/main/java/com/shop/entity/User.java @@ -14,6 +14,12 @@ public class User { super(); } + public User(String username, String realname, String phonenumber, String address) { + this.username = username; + this.phonenumber = phonenumber; + this.address = address; + this.realname = realname; + } public User(String username, String nickname, String phonenumber, String address, String realname, String user_head) { this.username = username; diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 614eb42..6e8693c 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -39,13 +39,6 @@ public interface OrderMapper { */ int agreeOrderwanted(String seller_username,int order_id); - /** - * 完成交易(下架) - * @param order_id - * @return - */ - int finishOrder(String seller_username,int order_id,String finish_time); - /** * 取消交易(恢复) * @param order_id @@ -112,4 +105,126 @@ public interface OrderMapper { * @return */ List searchFinishOrderByBuyerName(String buyer_username); + + /** + * 买家下单 + * @param order + * @return + */ + int addOrder(Order order); + + /** + * 买家查询待确认的订单 + * @param buyer_username + * @return + */ + List buyerSearchUnconfirmedOrder(String buyer_username); + + /** + * 卖家查询待确认的订单 + * @param seller_username + * @return + */ + List sellerSearchUnconfirmedOrder(String seller_username); + + /** + * 卖家确认待确认的订单 + * @param order_id + * @return + */ + int confirmOrder(String seller_username,int order_id); + + /** + * 买家查询待备货的订单 + * @param buyer_username + * @return + */ + List buyerSearchUnpickOrder(String buyer_username); + + /** + * 卖家查询待备货的订单 + * @param seller_username + * @return + */ + List sellerSearchUnpickOrder(String seller_username); + + /** + * 卖家完成备货订单 + * @param order_id + * @return + */ + int pickOrder(String seller_username,int order_id); + + /** + * 买家查询待发货的订单 + * @param buyer_username + * @return + */ + List buyerSearchUndeliverOrder(String buyer_username); + + /** + * 买家修改待发货的订单收货人信息 + * @param order_id + * @param user + * @return + */ + int buyerUpdateUndeliverOrder(int order_id,User user); + + /** + * 卖家查询待发货的订单 + * @param seller_username + * @return + */ + List sellerSearchUndeliverOrder(String seller_username); + + /** + * 卖家发货订单 + * @param order_id + * @return + */ + int deliverOrder(String seller_username,int order_id); + + /** + * 买家查询待待收货的订单 + * @param buyer_username + * @return + */ + List buyerSearchUnfinishOrder(String buyer_username); + + /** + * 卖家查询待收货的订单 + * @param seller_username + * @return + */ + List sellerSearchUnfinishOrder(String seller_username); + + /** + * 买家根据order_id(订单ID)完成交易 + * @param order_id + * @param buyer_username + * @return + */ + int finishOrder(String buyer_username,int order_id,String finish_time); + + /** + * 卖家根据order_id(订单ID)取消订单 + * @param order_id + * @param seller_username + * @return + */ + int sellerCancelOrder(int order_id,String seller_username); + + /** + * 买家根据order_id(订单ID)取消订单 + * @param order_id + * @param buyer_username + * @return + */ + int buyerCancelOrder(int order_id,String buyer_username); + + + + + + } diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index 9749d29..8753cc2 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -65,7 +65,6 @@ public class OrderService { public List searchHistoryGoodsUnFinishedOrder(String seller_username,int item_id){ return orderMapper.searchHistoryGoodsUnFinishedOrder(seller_username,item_id); } - public int finishOrder(String seller_username,int item_id,String finish_time){ return orderMapper.finishOrder(seller_username,item_id,finish_time); } public Order searchOrderByOrderId(String seller_username,int order_id){return orderMapper.searchOrderByOrderId(seller_username,order_id);} public List searchFinishOrder(String seller_username){return orderMapper.searchFinishOrder(seller_username);} public List searchDealingOrder(String seller_username,int page){return orderMapper.searchDealingOrder(seller_username,page);} @@ -83,4 +82,22 @@ public class OrderService { public int addToOrderWanted(Order order){return orderMapper.addToOrderWanted(order); } public List searchFinishOrderByBuyerName(String buyer_username){return orderMapper.searchFinishOrderByBuyerName(buyer_username);} public List searchOrdersBySellerName(String seller_username){return orderMapper.searchOrdersBySellerUserName(seller_username);} + public int addOrder(Order order){return orderMapper.addOrder(order);} + public List buyerSearchUnconfirmedOrder(String buyer_username){return orderMapper.buyerSearchUnconfirmedOrder(buyer_username);} + public List sellerSearchUnconfirmedOrder(String seller_username){return orderMapper.sellerSearchUnconfirmedOrder(seller_username);} + public int confirmOrder(String seller_username,int order_id){return orderMapper.confirmOrder(seller_username,order_id);} + public List buyerSearchUnpickOrder(String buyer_username){return orderMapper.buyerSearchUnpickOrder(buyer_username);} + public List sellerSearchUnpickOrder(String seller_username){return orderMapper.sellerSearchUnpickOrder(seller_username);} + public int pickOrder(String seller_username,int order_id){return orderMapper.pickOrder(seller_username,order_id);} + public List buyerSearchUndeliverOrder(String buyer_username){return orderMapper.buyerSearchUndeliverOrder(buyer_username);} + public int buyerUpdateUndeliverOrder(int order_id,User user){return orderMapper.buyerUpdateUndeliverOrder(order_id,user);} + public List sellerSearchUndeliverOrder(String seller_username){return orderMapper.sellerSearchUndeliverOrder(seller_username);} + public int deliverOrder(String seller_username,int order_id){return orderMapper.deliverOrder(seller_username,order_id);} + public List buyerSearchUnfinishOrder(String buyer_username){return orderMapper.buyerSearchUnfinishOrder(buyer_username);} + public List sellerSearchUnfinishOrder(String seller_username){return orderMapper.sellerSearchUnfinishOrder(seller_username);} + public int finishOrder(String buyer_username,int order_id,String finish_time){ return orderMapper.finishOrder(buyer_username,order_id,finish_time); } + public int sellerCancelOrder(int order_id,String seller_username){return orderMapper.sellerCancelOrder(order_id,seller_username);} + public int buyerCancelOrder(int order_id,String buyer_username){return orderMapper.buyerCancelOrder(order_id,buyer_username);} + + } diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 9171276..896bd66 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -32,7 +32,7 @@ @@ -50,14 +50,9 @@ update orders set state = 4 where itemId = #{item_id} and state = 5 and sellerUsername = #{seller_username} - - - update orders set state = 2 , finishTime = #{finish_time} where orderId = #{order_id} and state = 1 and sellerUsername = #{seller_username} - - - update orders set state = 4 where orderId = #{order_id} and state = 1 and sellerUsername = #{seller_username} + update orders set state = 6 where orderId = #{order_id} and state = 1 and sellerUsername = #{seller_username} @@ -67,7 +62,7 @@ @@ -75,8 +70,17 @@ select * from orders where sellerUsername = #{seller_username} and state = 1 - - + + + + + + + insert into orders @@ -170,12 +174,91 @@ - - + select * from orders where buyerUsername = #{buyer_username} and state = 1 + + + + + + + + update orders set state = 2 where orderId = #{order_id} and state = 1 and sellerUsername = #{seller_username} + + + + - + select * from orders where sellerUsername = #{seller_username} and state = 2 - \ No newline at end of file + + + update orders set state = 3 where orderId = #{order_id} and state = 2 and sellerUsername = #{seller_username} + + + + + + + + update orders + + + phoneNumber = #{phonenumber,jdbcType=VARCHAR}, + + + address = #{address,jdbcType=VARCHAR}, + + + realName = #{realname,jdbcType=VARCHAR}, + + + where orderId = #{order_id} and state = 2 and buyerUsername = #{buyer_username} + + + + + + + + update orders set state = 4 where orderId = #{order_id} and state = 3 and sellerUsername = #{seller_username} + + + + + + + + + + + update orders set state = 5 , finishTime = #{finish_time} where orderId = #{order_id} and state = 4 and buyerUsername = #{buyer_username} + + + + + update orders set state = 6 where orderId = #{order_id} and sellerUsername = #{seller_username} + + + + + update orders set state = 7 where orderId = #{order_id} and buyerUsername = #{buyer_username} + + + -- Gitee From b174f05038bcc64a6de14149d001ece7f0bcbc47 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Thu, 3 Mar 2022 11:35:08 +0800 Subject: [PATCH 054/133] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=B8=8B=E5=8D=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/GoodsController.java | 13 +--- .../com/shop/controller/OrderController.java | 75 ++++++++++--------- .../java/com/shop/service/GoodsService.java | 9 ++- 3 files changed, 50 insertions(+), 47 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 3c72a8c..9953595 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -283,18 +283,9 @@ public class GoodsController { String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); int new_stock = Integer.parseInt(request.getParameter("new_stock")); - Goods good = goodsService.searchGoods(item_id); JSONObject jsonObject = new JSONObject(); - System.out.println(message); - if (new_stock > 0 ){ - goodsService.updateGoodsState(good.getSeller_username(),item_id,1); - message = "success"; - goodsService.updateGoodStock(item_id,new_stock); - }else if (new_stock == 0){ - goodsService.updateGoodsState(good.getSeller_username(),item_id,3); - message = "success"; - goodsService.updateGoodStock(item_id,new_stock); - } + message = "success"; + goodsService.updateGoodStock(item_id,new_stock); jsonObject.put("message",message); return jsonObject; } diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 0a33411..652bd4f 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -4,6 +4,7 @@ import com.shop.entity.GO; import com.shop.entity.Goods; import com.shop.entity.Order; import com.shop.entity.User; +import com.shop.mapper.GoodsMapper; import com.shop.service.GOService; import com.shop.service.GoodsService; import com.shop.service.OrderService; @@ -146,45 +147,49 @@ public class OrderController { //意向购买者下单 @PostMapping(value = "/addOrder") public Object addOrder(@RequestBody Map request){ - String message = "error"; int buy_sum = 0; - int item_id = Integer.parseInt(request.get("item_id")); - Goods good = goodsService.searchGoods(item_id); - String goods_name = good.getGoods_name(); - String goods_img = good.getGoods_img(); - String goods_discribe = good.getGoods_discribe(); - float goods_price = good.getGoods_price(); - String seller_username = good.getSeller_username(); - String buyer_username = request.get("buyer_username"); - User user = userService.getUserInfo(buyer_username); - String buyer_realname = request.get("buyer_realname"); - String buyer_phonenumber = request.get("buyer_phonenumber"); - String buyer_address = request.get("buyer_address"); - if (buyer_realname == null){ - buyer_realname = user.getRealname(); - } - if (buyer_phonenumber == null){ - buyer_phonenumber = user.getPhonenumber(); - } - if (buyer_address == null){ - buyer_address = user.getAddress(); + String[] item_id_list = request.get("item_id_list").split(","); + String[] item_num_list = request.get("item_num_list").split(","); + if (item_id_list.length != item_num_list.length){ + return Result.fail(); } - buy_sum = Integer.parseInt(request.get("buy_sum")); - float buy_amount; - buy_amount = buy_sum*good.getGoods_price(); - String create_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - JSONObject jsonObject = new JSONObject(); - Order order = new Order(item_id,goods_name,goods_img,goods_discribe,goods_price,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,buy_amount,5,create_time); - if (buyer_phonenumber.length() == 11 && buyer_address.length() >= 2 && buyer_address.length() <= 100 && good.getGoods_stock() >= buy_sum){ - int result = orderService.addToOrderWanted(order); - if (result >=1){ - message = "success"; - }else { - message = "error"; + for (int i =0;i< item_id_list.length;i++){ + int item_id = Integer.parseInt(item_id_list[i]); + Goods good = goodsService.searchGoods(item_id); + String goods_name = good.getGoods_name(); + String goods_img = good.getGoods_img(); + String goods_discribe = good.getGoods_discribe(); + float goods_price = good.getGoods_price(); + String seller_username = good.getSeller_username(); + String buyer_username = request.get("buyer_username"); + User user = userService.getUserInfo(buyer_username); + String buyer_realname = request.get("buyer_realname"); + String buyer_phonenumber = request.get("buyer_phonenumber"); + String buyer_address = request.get("buyer_address"); + if (buyer_realname == null){ + buyer_realname = user.getRealname(); + } + if (buyer_phonenumber == null){ + buyer_phonenumber = user.getPhonenumber(); + } + if (buyer_address == null){ + buyer_address = user.getAddress(); } + buy_sum = Integer.parseInt(item_num_list[i]); + if (buy_sum > good.getGoods_stock()) + return Result.fail(); + float buy_amount; + buy_amount = buy_sum*good.getGoods_price(); + String create_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + Order order = new Order(item_id,goods_name,goods_img,goods_discribe,goods_price,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,buy_amount,1,create_time); + if (buyer_phonenumber.length() == 11 && buyer_address.length() >= 2 && buyer_address.length() <= 100 && good.getGoods_stock() >= buy_sum){ + if(orderService.addOrder(order) < 1) + return Result.fail(); + else + goodsService.updateGoodStock(good.getItem_id(),good.getGoods_stock()-buy_sum); } - jsonObject.put("message",message); - return jsonObject; + } + return Result.ok(); } //买家查询待确认的订单 diff --git a/back-end_code/src/main/java/com/shop/service/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java index f56b6df..ab79246 100644 --- a/back-end_code/src/main/java/com/shop/service/GoodsService.java +++ b/back-end_code/src/main/java/com/shop/service/GoodsService.java @@ -64,7 +64,14 @@ public class GoodsService { // int new_stock = good.getGoods_stock()+add_sum; // return goodsMapper.updateGoodStock(item_id,new_stock); // } - public int updateGoodStock(int item_id,int new_stock){return goodsMapper.updateGoodStock(item_id,new_stock);} + public int updateGoodStock(int item_id,int new_stock){ + Goods good = searchGoods(item_id); + if (new_stock > 0 ){ + updateGoodsState(good.getSeller_username(),item_id,1); + }else if (new_stock == 0){ + updateGoodsState(good.getSeller_username(),item_id,3); + } + return goodsMapper.updateGoodStock(item_id,new_stock);} public List searchGoodsByCategoryAndKeyName(int goods_category,String key_name){ List goodsList = null; List categoryList = categoryMapper.searchChildCategory(goods_category); -- Gitee From d88825ac1da55a8110978ac6fbe31dd8ccf4a2b9 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Thu, 3 Mar 2022 17:15:32 +0800 Subject: [PATCH 055/133] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E5=9C=A8=E5=8F=91=E8=B4=A7=E5=89=8D=E4=BF=AE=E6=94=B9=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E7=9A=84=E6=8E=A5=E5=8F=A3=20Order=E7=B1=BB=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=83=A8=E5=88=86=E5=8F=82=E6=95=B0=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E7=B1=BB=E7=9A=84=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/OrderController.java | 24 +++++++++++-------- .../src/main/java/com/shop/entity/Order.java | 9 +++++++ .../java/com/shop/mapper/OrderMapper.java | 5 ++-- .../java/com/shop/service/OrderService.java | 2 +- .../main/resources/mapping/OrderMapper.xml | 18 +++++++------- 5 files changed, 35 insertions(+), 23 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 652bd4f..481152f 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -151,11 +151,14 @@ public class OrderController { String[] item_id_list = request.get("item_id_list").split(","); String[] item_num_list = request.get("item_num_list").split(","); if (item_id_list.length != item_num_list.length){ - return Result.fail(); + return Result.fail("商品编号长度和购买数量长度不匹配"); } for (int i =0;i< item_id_list.length;i++){ int item_id = Integer.parseInt(item_id_list[i]); Goods good = goodsService.searchGoods(item_id); + if (good.getGoods_state() != 1){ + return Result.fail("存在非在售商品:"+good.getGoods_name()); + } String goods_name = good.getGoods_name(); String goods_img = good.getGoods_img(); String goods_discribe = good.getGoods_discribe(); @@ -177,14 +180,14 @@ public class OrderController { } buy_sum = Integer.parseInt(item_num_list[i]); if (buy_sum > good.getGoods_stock()) - return Result.fail(); + return Result.fail("商品:"+good.getGoods_name()+"购买数量超出库存"); float buy_amount; buy_amount = buy_sum*good.getGoods_price(); String create_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); Order order = new Order(item_id,goods_name,goods_img,goods_discribe,goods_price,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,buy_amount,1,create_time); if (buyer_phonenumber.length() == 11 && buyer_address.length() >= 2 && buyer_address.length() <= 100 && good.getGoods_stock() >= buy_sum){ if(orderService.addOrder(order) < 1) - return Result.fail(); + return Result.fail("商品:"+good.getGoods_name()+"下单失败"); else goodsService.updateGoodStock(good.getItem_id(),good.getGoods_stock()-buy_sum); } @@ -280,7 +283,7 @@ public class OrderController { } } - //买家查询待备货的订单 + //买家查询待发货的订单 @GetMapping("/buyerSearchUndeliverOrder") public Object buyerSearchUndeliverOrder(@RequestParam String buyer_username){ try{ @@ -298,13 +301,14 @@ public class OrderController { public Object buyerUpdateUndeliverOrder(@RequestBody Map request){ try { JSONObject jsonObject = new JSONObject(); - String username = request.get("username"); + String buyer_username = request.get("buyer_username"); String buyer_realname = request.get("buyer_realname"); String buyer_phonenumber = request.get("buyer_phonenumber"); String buyer_address = request.get("buyer_address"); - User user = new User(username,buyer_realname,buyer_phonenumber,buyer_address); int order_id = Integer.parseInt(request.get("order_id")); - int result = orderService.buyerUpdateUndeliverOrder(order_id,user); + Order order = new Order(order_id,buyer_username,buyer_realname,buyer_phonenumber,buyer_address); + System.out.println(order); + int result = orderService.buyerUpdateUndeliverOrder(order); if (result >= 1){ return Result.ok(); }else { @@ -315,7 +319,7 @@ public class OrderController { } } - //卖家查询待备货的订单 + //卖家查询待发货的订单 @GetMapping("/sellerSearchUndeliverOrder") public Object sellerSearchUndeliverOrder(@RequestParam String seller_username){ try{ @@ -377,11 +381,11 @@ public class OrderController { @PutMapping(value = "/finishOrder") public Object finishOrder(@RequestBody Map request) { try { - String seller_username = request.get("seller_username"); + String buyer_username = request.get("buyer_username"); int order_id = Integer.parseInt(request.get("order_id")); JSONObject jsonObject = new JSONObject(); String finish_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - int result = orderService.finishOrder(seller_username, order_id, finish_time); + int result = orderService.finishOrder(buyer_username, order_id, finish_time); if (result >= 1) { return Result.ok(); } else { diff --git a/back-end_code/src/main/java/com/shop/entity/Order.java b/back-end_code/src/main/java/com/shop/entity/Order.java index 4246ea6..4347ab8 100644 --- a/back-end_code/src/main/java/com/shop/entity/Order.java +++ b/back-end_code/src/main/java/com/shop/entity/Order.java @@ -8,6 +8,15 @@ public class Order { private String goods_discribe; private float goods_price; private String seller_username; + + public Order(int order_id, String buyer_username, String buyer_realname, String buyer_phonenumber, String buyer_address) { + this.order_id = order_id; + this.buyer_username = buyer_username; + this.buyer_realname = buyer_realname; + this.buyer_phonenumber = buyer_phonenumber; + this.buyer_address = buyer_address; + } + private String buyer_username; private String buyer_realname; private String buyer_phonenumber; diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 6e8693c..5204e00 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -164,11 +164,10 @@ public interface OrderMapper { /** * 买家修改待发货的订单收货人信息 - * @param order_id - * @param user + * @param order * @return */ - int buyerUpdateUndeliverOrder(int order_id,User user); + int buyerUpdateUndeliverOrder(Order order); /** * 卖家查询待发货的订单 diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index 8753cc2..a2e1a78 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -90,7 +90,7 @@ public class OrderService { public List sellerSearchUnpickOrder(String seller_username){return orderMapper.sellerSearchUnpickOrder(seller_username);} public int pickOrder(String seller_username,int order_id){return orderMapper.pickOrder(seller_username,order_id);} public List buyerSearchUndeliverOrder(String buyer_username){return orderMapper.buyerSearchUndeliverOrder(buyer_username);} - public int buyerUpdateUndeliverOrder(int order_id,User user){return orderMapper.buyerUpdateUndeliverOrder(order_id,user);} + public int buyerUpdateUndeliverOrder(Order order){return orderMapper.buyerUpdateUndeliverOrder(order);} public List sellerSearchUndeliverOrder(String seller_username){return orderMapper.sellerSearchUndeliverOrder(seller_username);} public int deliverOrder(String seller_username,int order_id){return orderMapper.deliverOrder(seller_username,order_id);} public List buyerSearchUnfinishOrder(String buyer_username){return orderMapper.buyerSearchUnfinishOrder(buyer_username);} diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 896bd66..037f883 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -213,17 +213,17 @@ update orders - - phoneNumber = #{phonenumber,jdbcType=VARCHAR}, + + buyerPhonenumber = #{buyer_phonenumber,jdbcType=VARCHAR}, - - address = #{address,jdbcType=VARCHAR}, + + buyerAddress = #{buyer_address,jdbcType=VARCHAR}, - - realName = #{realname,jdbcType=VARCHAR}, + + buyerRealname = #{buyer_realname,jdbcType=VARCHAR}, - where orderId = #{order_id} and state = 2 and buyerUsername = #{buyer_username} + where orderId = #{order_id} and state = 3 and buyerUsername = #{buyer_username} @@ -253,12 +253,12 @@ - update orders set state = 6 where orderId = #{order_id} and sellerUsername = #{seller_username} + update orders set state = 6 where orderId = #{order_id} and sellerUsername = #{seller_username} and state < 4 - update orders set state = 7 where orderId = #{order_id} and buyerUsername = #{buyer_username} + update orders set state = 7 where orderId = #{order_id} and buyerUsername = #{buyer_username} and state < 5 -- Gitee From ffe924d708688b19cff1063c400f81ba8d65530d Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Thu, 3 Mar 2022 23:21:14 +0800 Subject: [PATCH 056/133] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B7=B2=E5=AE=8C=E6=88=90/=E6=9C=AA?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=AE=A2=E5=8D=95=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/OrderController.java | 43 +++++++++++++------ .../java/com/shop/mapper/OrderMapper.java | 20 ++++++--- .../java/com/shop/service/OrderService.java | 3 +- .../main/resources/mapping/OrderMapper.xml | 16 ++++--- 4 files changed, 56 insertions(+), 26 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 481152f..5d00c44 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -350,19 +350,6 @@ public class OrderController { } } - //买家查询待待收货的订单 - @GetMapping("/buyerSearchUnfinishOrder") - public Object buyerSearchUnfinishOrder(@RequestParam String buyer_username){ - try{ - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.buyerSearchUnfinishOrder(buyer_username); - jsonObject.put("orders",orderList); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(); - } - } - //卖家查询待收货的订单 @GetMapping("/sellerSearchUnfinishOrder") public Object sellerSearchUnfinishOrder(@RequestParam String seller_username){ @@ -434,4 +421,34 @@ public class OrderController { } } + + //买家查询未完成的订单 + @GetMapping("/buyerSearchUnfinishOrder") + public Object buyerSearchUnfinishOrder(@RequestParam String buyer_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.buyerSearchUnfinishOrder(buyer_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } + + + //买家查询已完成的订单 + @GetMapping("/buyerSearchFinishOrder") + public Object buyerSearchFinishOrder(@RequestParam String buyer_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.buyerSearchFinishOrder(buyer_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } + + + } diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 5204e00..624eaee 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -183,13 +183,6 @@ public interface OrderMapper { */ int deliverOrder(String seller_username,int order_id); - /** - * 买家查询待待收货的订单 - * @param buyer_username - * @return - */ - List buyerSearchUnfinishOrder(String buyer_username); - /** * 卖家查询待收货的订单 * @param seller_username @@ -221,6 +214,19 @@ public interface OrderMapper { */ int buyerCancelOrder(int order_id,String buyer_username); + /** + * 买家查询未完成的订单 + * @param buyer_username + * @return + */ + List buyerSearchUnfinishOrder(String buyer_username); + + /** + * 买家查询已完成的订单 + * @param buyer_username + * @return + */ + List buyerSearchFinishOrder(String buyer_username); diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index a2e1a78..e81c2b5 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -93,11 +93,12 @@ public class OrderService { public int buyerUpdateUndeliverOrder(Order order){return orderMapper.buyerUpdateUndeliverOrder(order);} public List sellerSearchUndeliverOrder(String seller_username){return orderMapper.sellerSearchUndeliverOrder(seller_username);} public int deliverOrder(String seller_username,int order_id){return orderMapper.deliverOrder(seller_username,order_id);} - public List buyerSearchUnfinishOrder(String buyer_username){return orderMapper.buyerSearchUnfinishOrder(buyer_username);} public List sellerSearchUnfinishOrder(String seller_username){return orderMapper.sellerSearchUnfinishOrder(seller_username);} public int finishOrder(String buyer_username,int order_id,String finish_time){ return orderMapper.finishOrder(buyer_username,order_id,finish_time); } public int sellerCancelOrder(int order_id,String seller_username){return orderMapper.sellerCancelOrder(order_id,seller_username);} public int buyerCancelOrder(int order_id,String buyer_username){return orderMapper.buyerCancelOrder(order_id,buyer_username);} + public List buyerSearchUnfinishOrder(String buyer_username){return orderMapper.buyerSearchUnfinishOrder(buyer_username);} + public List buyerSearchFinishOrder(String buyer_username){return orderMapper.buyerSearchFinishOrder(buyer_username);} } diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 037f883..1145bfd 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -236,11 +236,6 @@ update orders set state = 4 where orderId = #{order_id} and state = 3 and sellerUsername = #{seller_username} - - - + select * from orders where buyerUsername = #{buyer_username} and state < 5 + + + + + + -- Gitee From fdecd0c0787979a1b0086d9eed2515fd45aeefd9 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Fri, 4 Mar 2022 20:16:03 +0800 Subject: [PATCH 057/133] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=B8=8B=E5=8D=95=E6=8E=A5=E5=8F=A3bug=E5=B9=B6=E6=94=B9?= =?UTF-8?q?=E5=96=84=E4=BD=BF=E5=85=B6=E6=94=AF=E6=8C=81=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6=E4=B8=8B=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/CartController.java | 7 +- .../com/shop/controller/OrderController.java | 93 +++++++------------ .../main/java/com/shop/mapper/CartMapper.java | 5 +- .../java/com/shop/service/CartService.java | 2 +- .../src/main/resources/mapping/CartMapper.xml | 4 +- 5 files changed, 46 insertions(+), 65 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/CartController.java b/back-end_code/src/main/java/com/shop/controller/CartController.java index 0265cff..244cc94 100644 --- a/back-end_code/src/main/java/com/shop/controller/CartController.java +++ b/back-end_code/src/main/java/com/shop/controller/CartController.java @@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/cart") @@ -58,9 +59,11 @@ public class CartController { } //购物车删除商品 @DeleteMapping("/deleteCart") - public Object deleteCart(@RequestParam int cart_id){ + public Object deleteCart(@RequestBody Map request){ try { - cartService.deleteCart(cart_id); + String buyer_username = request.get("buyer_username"); + int item_id = Integer.parseInt(request.get("item_id")); + cartService.deleteCart(buyer_username,item_id); return Result.ok(); } catch (Exception e) { return Result.fail(e.toString()); diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 5d00c44..1eb9fe7 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -5,11 +5,9 @@ import com.shop.entity.Goods; import com.shop.entity.Order; import com.shop.entity.User; import com.shop.mapper.GoodsMapper; -import com.shop.service.GOService; -import com.shop.service.GoodsService; -import com.shop.service.OrderService; -import com.shop.service.UserService; +import com.shop.service.*; import com.shop.utils.Result; +import net.minidev.json.JSONArray; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -19,9 +17,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; @RestController @RequestMapping("/order") @@ -39,6 +35,9 @@ public class OrderController { @Autowired private GOService goService; + @Autowired + private CartService cartService; + //查看商品意向购买买家 @RequestMapping(value = "/searchWantBuyerlistByItemId") public Object searchWantBuyerlistByItemId(HttpServletRequest request, HttpServletResponse response){ @@ -144,57 +143,6 @@ public class OrderController { return jsonObject; } - //意向购买者下单 - @PostMapping(value = "/addOrder") - public Object addOrder(@RequestBody Map request){ - int buy_sum = 0; - String[] item_id_list = request.get("item_id_list").split(","); - String[] item_num_list = request.get("item_num_list").split(","); - if (item_id_list.length != item_num_list.length){ - return Result.fail("商品编号长度和购买数量长度不匹配"); - } - for (int i =0;i< item_id_list.length;i++){ - int item_id = Integer.parseInt(item_id_list[i]); - Goods good = goodsService.searchGoods(item_id); - if (good.getGoods_state() != 1){ - return Result.fail("存在非在售商品:"+good.getGoods_name()); - } - String goods_name = good.getGoods_name(); - String goods_img = good.getGoods_img(); - String goods_discribe = good.getGoods_discribe(); - float goods_price = good.getGoods_price(); - String seller_username = good.getSeller_username(); - String buyer_username = request.get("buyer_username"); - User user = userService.getUserInfo(buyer_username); - String buyer_realname = request.get("buyer_realname"); - String buyer_phonenumber = request.get("buyer_phonenumber"); - String buyer_address = request.get("buyer_address"); - if (buyer_realname == null){ - buyer_realname = user.getRealname(); - } - if (buyer_phonenumber == null){ - buyer_phonenumber = user.getPhonenumber(); - } - if (buyer_address == null){ - buyer_address = user.getAddress(); - } - buy_sum = Integer.parseInt(item_num_list[i]); - if (buy_sum > good.getGoods_stock()) - return Result.fail("商品:"+good.getGoods_name()+"购买数量超出库存"); - float buy_amount; - buy_amount = buy_sum*good.getGoods_price(); - String create_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - Order order = new Order(item_id,goods_name,goods_img,goods_discribe,goods_price,seller_username,buyer_username,buyer_realname,buyer_phonenumber,buyer_address,buy_sum,buy_amount,1,create_time); - if (buyer_phonenumber.length() == 11 && buyer_address.length() >= 2 && buyer_address.length() <= 100 && good.getGoods_stock() >= buy_sum){ - if(orderService.addOrder(order) < 1) - return Result.fail("商品:"+good.getGoods_name()+"下单失败"); - else - goodsService.updateGoodStock(good.getItem_id(),good.getGoods_stock()-buy_sum); - } - } - return Result.ok(); - } - //买家查询待确认的订单 @GetMapping("/buyerSearchUnconfirmedOrder") public Object buyerSearchUnconfirmedOrder(@RequestParam String buyer_username){ @@ -450,5 +398,34 @@ public class OrderController { } + //意向购买者下单 + @PostMapping("/addOrder") + public Object addOrder(@RequestBody Order[] data){ + for (Order order:data) { + Goods good = goodsService.searchGoods(order.getItem_id()); + if (good.getGoods_state() != 1){ + return Result.fail("存在非在售商品:"+good.getGoods_name()); + } + if (order.getBuy_sum() > good.getGoods_stock()) + return Result.fail("商品:"+good.getGoods_name()+"购买数量超出库存"); + order.setGoods_name(good.getGoods_name()); + order.setGoods_discribe(good.getGoods_discribe()); + order.setGoods_price(good.getGoods_price()); + order.setSeller_username(good.getSeller_username()); + order.setBuy_amount(order.getBuy_sum()*good.getGoods_price()); + order.setGoods_img(good.getGoods_img()); + order.setState(1); + if (order.getBuyer_phonenumber().length() != 11 && order.getBuyer_address().length() < 2 && order.getBuyer_address().length() > 100) + return Result.fail("用户信息输入有误"); + order.setCreate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + if(orderService.addOrder(order) < 1) + return Result.fail("商品:"+good.getGoods_name()+"下单失败"); + else + cartService.deleteCart(order.getBuyer_username(), order.getItem_id()); + goodsService.updateGoodStock(good.getItem_id(),good.getGoods_stock()-order.getBuy_sum()); + } + return Result.ok(); + } + } diff --git a/back-end_code/src/main/java/com/shop/mapper/CartMapper.java b/back-end_code/src/main/java/com/shop/mapper/CartMapper.java index 0794b95..a7c703e 100644 --- a/back-end_code/src/main/java/com/shop/mapper/CartMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/CartMapper.java @@ -47,8 +47,9 @@ public interface CartMapper { int updateCart(int cart_id,int count); /** *购物车删除商品 - * @param cart_id + * @param buyer_username + * @param item_id * @return */ - int deleteCart(int cart_id); + int deleteCart(String buyer_username,int item_id); } diff --git a/back-end_code/src/main/java/com/shop/service/CartService.java b/back-end_code/src/main/java/com/shop/service/CartService.java index dd8ef07..509e20c 100644 --- a/back-end_code/src/main/java/com/shop/service/CartService.java +++ b/back-end_code/src/main/java/com/shop/service/CartService.java @@ -28,5 +28,5 @@ public class CartService { public int updateCartCount(int cart_id,int count){return cartMapper.updateCart(cart_id,count);} - public int deleteCart(int cart_id){return cartMapper.deleteCart(cart_id);} + public int deleteCart(String buyer_username,int item_id){return cartMapper.deleteCart(buyer_username,item_id);} } diff --git a/back-end_code/src/main/resources/mapping/CartMapper.xml b/back-end_code/src/main/resources/mapping/CartMapper.xml index 265e678..804a64f 100644 --- a/back-end_code/src/main/resources/mapping/CartMapper.xml +++ b/back-end_code/src/main/resources/mapping/CartMapper.xml @@ -52,7 +52,7 @@ where cartId = #{cart_id,jdbcType=INTEGER} - delete from cart where cartId = #{cart_id} + delete from cart where buyerUsername = #{buyer_username} and itemId = #{item_id} - \ No newline at end of file + -- Gitee From b2cd5dae51ecf82a415485fc5b7f6d9ff41f2c27 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 5 Mar 2022 20:08:57 +0800 Subject: [PATCH 058/133] =?UTF-8?q?1.=E5=B0=86=E8=AE=A2=E5=8D=95=E7=9A=84a?= =?UTF-8?q?pi=E6=94=B9=E6=88=90restful=E9=A3=8E=E6=A0=BC=202.=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=94=B6=E8=97=8F=E5=8A=9F=E8=83=BD=EF=BC=9A=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=94=B6=E8=97=8F=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E7=9B=AE=E6=A0=87=E7=94=A8=E6=88=B7=E6=94=B6?= =?UTF-8?q?=E8=97=8F=E5=A4=B9=E5=88=97=E8=A1=A8=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=E5=8F=96=E6=B6=88=E6=94=B6=E8=97=8F=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=E4=BB=8E=E8=B4=AD=E7=89=A9=E8=BD=A6=E8=BD=AC=E4=B8=BA?= =?UTF-8?q?=E6=94=B6=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shop/controller/FavoriteController.java | 76 +++++++++++++++++++ .../com/shop/controller/OrderController.java | 67 ++++++++-------- .../main/java/com/shop/entity/Favorite.java | 59 ++++++++++++++ .../java/com/shop/mapper/FavoriteMapper.java | 20 +++++ .../com/shop/service/FavoriteService.java | 45 +++++++++++ .../main/resources/mapping/FavoriteMapper.xml | 58 ++++++++++++++ 6 files changed, 293 insertions(+), 32 deletions(-) create mode 100644 back-end_code/src/main/java/com/shop/controller/FavoriteController.java create mode 100644 back-end_code/src/main/java/com/shop/entity/Favorite.java create mode 100644 back-end_code/src/main/java/com/shop/mapper/FavoriteMapper.java create mode 100644 back-end_code/src/main/java/com/shop/service/FavoriteService.java create mode 100644 back-end_code/src/main/resources/mapping/FavoriteMapper.xml diff --git a/back-end_code/src/main/java/com/shop/controller/FavoriteController.java b/back-end_code/src/main/java/com/shop/controller/FavoriteController.java new file mode 100644 index 0000000..df44d4e --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/FavoriteController.java @@ -0,0 +1,76 @@ +package com.shop.controller; + +import com.shop.entity.Favorite; +import com.shop.service.CartService; +import com.shop.service.FavoriteService; +import com.shop.utils.Result; +import net.minidev.json.JSONArray; +import net.minidev.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; + +@RestController +@RequestMapping("/favorites") +public class FavoriteController { + + private static FavoriteService favoriteService; + private static CartService cartService; + //添加收藏 + @PostMapping("/#") + public Object insertFavorite(@RequestBody Favorite favorite){ + try { + favoriteService.insert(favorite); + return Result.ok(); + } catch (Exception e) { + return Result.fail(e.toString()); + } + } + //按用户名查询收藏夹列表 + @GetMapping("/{username}") + public Object searchFavoriteByUsername(@PathVariable("username") String username){ + try { + List favoriteList = favoriteService.searchFavoritesByUsername(username); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("favorites:",favoriteList); + return Result.ok(jsonObject); + } catch (Exception e) { + return Result.fail(e.toString()); + } + } + //按收藏夹id取消收藏 + @DeleteMapping("/{id}") + public Object deleteFavorite(@PathVariable("id") Integer id){ + try { + favoriteService.deleteByPrimaryKey(id); + return Result.ok(); + } catch (Exception e) { + return Result.fail(e.toString()); + } + } + //从购物车转为收藏 + @PostMapping("/addFromCart") + public Object addFromCart(@RequestBody Favorite[] favorites){ + try { + for(Favorite favorite:favorites){ + favoriteService.insert(favorite); + cartService.deleteCart(favorite.getBuyer_username(),favorite.getItem_id()); + } + return Result.ok(); + } catch (Exception e) { + return Result.fail(e.toString()); + } + } + @Autowired + public void setFavoriteService(FavoriteService favoriteService){ + FavoriteController.favoriteService = favoriteService; + } + @Autowired + public void setCartService(CartService cartService){ + FavoriteController.cartService = cartService; + } +} diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 1eb9fe7..aeeba44 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -98,8 +98,8 @@ public class OrderController { } //同意意向买家 - @RequestMapping(value = "/agreeOrderwanted") - public Object agreeOrderwanted(HttpServletRequest request, HttpServletResponse response) { + @RequestMapping(value = "/agreeOrderWanted") + public Object agreeOrderWanted(HttpServletRequest request, HttpServletResponse response) { String message = "error"; String seller_username = request.getParameter("seller_username"); int order_id = Integer.parseInt(request.getParameter("order_id")); @@ -120,8 +120,8 @@ public class OrderController { } //根据用户名查看历史购买记录 - @GetMapping("/searchFinishOrderByBuyerUserName") - public Object searchFinishOrderByBuyerName(@RequestParam String buyer_username){ + @GetMapping("/buyer/finished/{buyer_username}") + public Object searchFinishOrderByBuyerName(@PathVariable("buyer_username") String buyer_username){ String message = "error"; JSONObject jsonObject = new JSONObject(); List orderList = orderService.searchFinishOrderByBuyerName(buyer_username); @@ -132,8 +132,8 @@ public class OrderController { } //根据卖家用户名查找所有订单 - @GetMapping("/searchOrdersBySellerName") - public Object searchOrdersBySellerName(@RequestParam String seller_username){ + @GetMapping("/seller/{seller_username}") + public Object searchOrdersBySellerName(@PathVariable("seller_username") String seller_username){ String message = "error"; JSONObject jsonObject = new JSONObject(); List orderList = orderService.searchOrdersBySellerName(seller_username); @@ -144,7 +144,7 @@ public class OrderController { } //买家查询待确认的订单 - @GetMapping("/buyerSearchUnconfirmedOrder") + @GetMapping("/buyer/unconfirmed") public Object buyerSearchUnconfirmedOrder(@RequestParam String buyer_username){ try{ JSONObject jsonObject = new JSONObject(); @@ -157,7 +157,7 @@ public class OrderController { } //卖家查询待确认的订单 - @GetMapping("/sellerSearchUnconfirmedOrder") + @GetMapping("/seller/unconfirmed") public Object sellerSearchUnconfirmedOrder(@RequestParam String seller_username){ try{ JSONObject jsonObject = new JSONObject(); @@ -170,7 +170,7 @@ public class OrderController { } //卖家确认待确认的订单 - @PutMapping(value = "/confirmOrder") + @PutMapping(value = "/seller/confirm") public Object confirmOrder(@RequestBody Map request){ try { JSONObject jsonObject = new JSONObject(); @@ -188,7 +188,7 @@ public class OrderController { } //买家查询待备货的订单 - @GetMapping("/buyerSearchUnpickOrder") + @GetMapping("/buyer/unpicked") public Object buyerSearchUnpickOrder(@RequestParam String buyer_username){ try{ JSONObject jsonObject = new JSONObject(); @@ -201,7 +201,7 @@ public class OrderController { } //卖家查询待备货的订单 - @GetMapping("/sellerSearchUnpickOrder") + @GetMapping("/seller/unpicked") public Object sellerSearchUnpickOrder(@RequestParam String seller_username){ try{ JSONObject jsonObject = new JSONObject(); @@ -214,7 +214,7 @@ public class OrderController { } //卖家完成备货订单 - @PutMapping(value = "/pickOrder") + @PutMapping(value = "/seller/pick") public Object pickOrder(@RequestBody Map request){ try { JSONObject jsonObject = new JSONObject(); @@ -232,8 +232,8 @@ public class OrderController { } //买家查询待发货的订单 - @GetMapping("/buyerSearchUndeliverOrder") - public Object buyerSearchUndeliverOrder(@RequestParam String buyer_username){ + @GetMapping("/buyer/undelivered") + public Object buyerSearchUndeliveredOrder(@RequestParam String buyer_username){ try{ JSONObject jsonObject = new JSONObject(); List orderList = orderService.buyerSearchUndeliverOrder(buyer_username); @@ -245,8 +245,8 @@ public class OrderController { } //买家修改待发货的订单收货人信息 - @PutMapping(value = "/buyerUpdateUndeliverOrder") - public Object buyerUpdateUndeliverOrder(@RequestBody Map request){ + @PutMapping(value = "/buyer/undelivered") + public Object buyerUpdateUndeliveredOrder(@RequestBody Map request){ try { JSONObject jsonObject = new JSONObject(); String buyer_username = request.get("buyer_username"); @@ -268,8 +268,8 @@ public class OrderController { } //卖家查询待发货的订单 - @GetMapping("/sellerSearchUndeliverOrder") - public Object sellerSearchUndeliverOrder(@RequestParam String seller_username){ + @GetMapping("/seller/Undelivered") + public Object sellerSearchUndeliveredOrder(@RequestParam String seller_username){ try{ JSONObject jsonObject = new JSONObject(); List orderList = orderService.sellerSearchUndeliverOrder(seller_username); @@ -281,7 +281,7 @@ public class OrderController { } //卖家发货订单 - @PutMapping(value = "/deliverOrder") + @PutMapping(value = "/seller/deliver") public Object deliverOrder(@RequestBody Map request){ try { JSONObject jsonObject = new JSONObject(); @@ -299,8 +299,8 @@ public class OrderController { } //卖家查询待收货的订单 - @GetMapping("/sellerSearchUnfinishOrder") - public Object sellerSearchUnfinishOrder(@RequestParam String seller_username){ + @GetMapping("/seller/Unfinished") + public Object sellerSearchUnfinishedOrder(@RequestParam String seller_username){ try{ JSONObject jsonObject = new JSONObject(); List orderList = orderService.sellerSearchUnfinishOrder(seller_username); @@ -313,7 +313,7 @@ public class OrderController { //买家根据order_id(订单ID)完成交易 - @PutMapping(value = "/finishOrder") + @PutMapping(value = "/buyer/finish") public Object finishOrder(@RequestBody Map request) { try { String buyer_username = request.get("buyer_username"); @@ -332,7 +332,7 @@ public class OrderController { } //卖家根据order_id(订单ID)取消订单 - @PutMapping(value = "/sellerCancelOrder") + @PutMapping(value = "/seller/cancel") public Object sellerCancelOrder(@RequestBody Map request){ try { String seller_username = request.get("seller_username"); @@ -351,7 +351,7 @@ public class OrderController { } //买家根据order_id(订单ID)取消订单 - @PutMapping(value = "/buyerCancelOrder") + @PutMapping(value = "/buyer/cancel") public Object buyerCancelOrder(@RequestBody Map request){ try { String buyer_username = request.get("buyer_username"); @@ -371,8 +371,8 @@ public class OrderController { //买家查询未完成的订单 - @GetMapping("/buyerSearchUnfinishOrder") - public Object buyerSearchUnfinishOrder(@RequestParam String buyer_username){ + @GetMapping("/buyer/unfinished") + public Object buyerSearchUnfinishedOrder(@RequestParam String buyer_username){ try{ JSONObject jsonObject = new JSONObject(); List orderList = orderService.buyerSearchUnfinishOrder(buyer_username); @@ -385,7 +385,7 @@ public class OrderController { //买家查询已完成的订单 - @GetMapping("/buyerSearchFinishOrder") + @GetMapping("/buyer/finished") public Object buyerSearchFinishOrder(@RequestParam String buyer_username){ try{ JSONObject jsonObject = new JSONObject(); @@ -399,15 +399,16 @@ public class OrderController { //意向购买者下单 - @PostMapping("/addOrder") + @PostMapping("/buyer/orders") public Object addOrder(@RequestBody Order[] data){ for (Order order:data) { Goods good = goodsService.searchGoods(order.getItem_id()); if (good.getGoods_state() != 1){ return Result.fail("存在非在售商品:"+good.getGoods_name()); } - if (order.getBuy_sum() > good.getGoods_stock()) + if (order.getBuy_sum() > good.getGoods_stock()) { return Result.fail("商品:"+good.getGoods_name()+"购买数量超出库存"); + } order.setGoods_name(good.getGoods_name()); order.setGoods_discribe(good.getGoods_discribe()); order.setGoods_price(good.getGoods_price()); @@ -415,14 +416,16 @@ public class OrderController { order.setBuy_amount(order.getBuy_sum()*good.getGoods_price()); order.setGoods_img(good.getGoods_img()); order.setState(1); - if (order.getBuyer_phonenumber().length() != 11 && order.getBuyer_address().length() < 2 && order.getBuyer_address().length() > 100) + if (order.getBuyer_phonenumber().length() != 11 && order.getBuyer_address().length() < 2 && order.getBuyer_address().length() > 100) { return Result.fail("用户信息输入有误"); + } order.setCreate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - if(orderService.addOrder(order) < 1) + if(orderService.addOrder(order) < 1) { return Result.fail("商品:"+good.getGoods_name()+"下单失败"); - else + } else { cartService.deleteCart(order.getBuyer_username(), order.getItem_id()); goodsService.updateGoodStock(good.getItem_id(),good.getGoods_stock()-order.getBuy_sum()); + } } return Result.ok(); } diff --git a/back-end_code/src/main/java/com/shop/entity/Favorite.java b/back-end_code/src/main/java/com/shop/entity/Favorite.java new file mode 100644 index 0000000..27d635a --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/Favorite.java @@ -0,0 +1,59 @@ +package com.shop.entity; + +import java.io.Serializable; +import lombok.Data; + +/** + * favorite + * @author + */ +@Data +public class Favorite implements Serializable { + private Integer favorite_id; + + private Integer item_id; + + private String buyer_username; + + public Favorite() { + } + + public Favorite(Integer favorite_id, Integer item_id, String buyer_username) { + this.favorite_id = favorite_id; + this.item_id = item_id; + this.buyer_username = buyer_username; + } + + public Integer getFavorite_id() { + return favorite_id; + } + + public void setFavorite_id(Integer favorite_id) { + this.favorite_id = favorite_id; + } + + public Integer getItem_id() { + return item_id; + } + + public void setItem_id(Integer item_id) { + this.item_id = item_id; + } + + public String getBuyer_username() { + return buyer_username; + } + + public void setBuyer_username(String buyer_username) { + this.buyer_username = buyer_username; + } + + @Override + public String toString() { + return "Favorite{" + + "favorite_id=" + favorite_id + + ", item_id=" + item_id + + ", buyer_username='" + buyer_username + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/back-end_code/src/main/java/com/shop/mapper/FavoriteMapper.java b/back-end_code/src/main/java/com/shop/mapper/FavoriteMapper.java new file mode 100644 index 0000000..504032e --- /dev/null +++ b/back-end_code/src/main/java/com/shop/mapper/FavoriteMapper.java @@ -0,0 +1,20 @@ +package com.shop.mapper; + +import com.shop.entity.Favorite; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface FavoriteMapper { + int deleteByPrimaryKey(Integer favorite_id); + + int insert(Favorite favorite); + + Favorite selectByPrimaryKey(Integer favorite_id); + + int updateByPrimaryKey(Favorite favorite); + + Favorite selectByUsernameAndItemId(String buyer_username,Integer item_id); + List searchFavoritesByUsername(String buyer_username); +} \ No newline at end of file diff --git a/back-end_code/src/main/java/com/shop/service/FavoriteService.java b/back-end_code/src/main/java/com/shop/service/FavoriteService.java new file mode 100644 index 0000000..fb950a6 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/FavoriteService.java @@ -0,0 +1,45 @@ +package com.shop.service; + +import com.shop.entity.Favorite; +import com.shop.mapper.FavoriteMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class FavoriteService { + + private static FavoriteMapper favoriteMapper; + + public int deleteByPrimaryKey(Integer favorite_id) { + return favoriteMapper.deleteByPrimaryKey(favorite_id); + } + + public void insert(Favorite favorite) { + if (favoriteMapper.selectByUsernameAndItemId(favorite.getBuyer_username(), favorite.getItem_id()) != null) { + favoriteMapper.insert(favorite); + } + } + + public Favorite selectByPrimaryKey(Integer favorite_id) { + return favoriteMapper.selectByPrimaryKey(favorite_id); + } + + public int updateByPrimaryKey(Favorite favorite) { + return favoriteMapper.updateByPrimaryKey(favorite); + } + + public Favorite selectByUsernameAndItemId(String buyer_username, Integer item_id) { + return favoriteMapper.selectByUsernameAndItemId(buyer_username, item_id); + } + + public List searchFavoritesByUsername(String buyer_username) { + return favoriteMapper.searchFavoritesByUsername(buyer_username); + } + + @Autowired + public void setFavoriteMapper(FavoriteMapper favoriteMapper) { + FavoriteService.favoriteMapper = favoriteMapper; + } +} diff --git a/back-end_code/src/main/resources/mapping/FavoriteMapper.xml b/back-end_code/src/main/resources/mapping/FavoriteMapper.xml new file mode 100644 index 0000000..6167180 --- /dev/null +++ b/back-end_code/src/main/resources/mapping/FavoriteMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + delete from favorite + where favoriteId = #{favorite_id,jdbcType=INTEGER} + + + + insert into favorite + + + itemId, + + + buyerUsername, + + + + + #{item_id,jdbcType=INTEGER}, + + + #{buyer_username,jdbcType=VARCHAR}, + + + + + update favorite + + + itemId = #{item_id,jdbcType=INTEGER}, + + + buyerUsername = #{buyer_username,jdbcType=VARCHAR}, + + + where favoriteId = #{favorite_id,jdbcType=INTEGER} + + + \ No newline at end of file -- Gitee From dde9753e5a4fd0909fd65dadc0948f80707ebc90 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sat, 5 Mar 2022 20:50:50 +0800 Subject: [PATCH 059/133] =?UTF-8?q?=E8=A7=84=E8=8C=83order=E7=B1=BB?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3=E5=91=BD=E5=90=8D=E5=92=8C=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/shop/controller/OrderController.java | 10 ++-------- .../src/main/resources/mapping/OrderMapper.xml | 8 ++++---- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index aeeba44..58ba82c 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -122,25 +122,19 @@ public class OrderController { //根据用户名查看历史购买记录 @GetMapping("/buyer/finished/{buyer_username}") public Object searchFinishOrderByBuyerName(@PathVariable("buyer_username") String buyer_username){ - String message = "error"; JSONObject jsonObject = new JSONObject(); List orderList = orderService.searchFinishOrderByBuyerName(buyer_username); - message = "success"; jsonObject.put("orders",orderList); - jsonObject.put("message",message); - return jsonObject; + return Result.ok(jsonObject); } //根据卖家用户名查找所有订单 @GetMapping("/seller/{seller_username}") public Object searchOrdersBySellerName(@PathVariable("seller_username") String seller_username){ - String message = "error"; JSONObject jsonObject = new JSONObject(); List orderList = orderService.searchOrdersBySellerName(seller_username); - message = "success"; jsonObject.put("orders",orderList); - jsonObject.put("message",message); - return jsonObject; + return Result.ok(jsonObject); } //买家查询待确认的订单 diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 1145bfd..67bf813 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -27,7 +27,7 @@ @@ -37,7 +37,7 @@ @@ -67,12 +67,12 @@ - select * from user where username = #{username} and password = #{password} + select * from user where username = #{username} -- Gitee From d0c482ef5768560416a63e361cdd46ee2079df0f Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 10 Mar 2022 21:17:05 +0800 Subject: [PATCH 065/133] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=BB=99=E5=AF=86=E7=A0=81=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/service/UserService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/back-end_code/src/main/java/com/shop/service/UserService.java b/back-end_code/src/main/java/com/shop/service/UserService.java index c2f3333..4909617 100644 --- a/back-end_code/src/main/java/com/shop/service/UserService.java +++ b/back-end_code/src/main/java/com/shop/service/UserService.java @@ -47,7 +47,10 @@ public class UserService { user.setPassword(JasyptUtil.encryptPwd("xiebo",user.getPassword())); return userMapper.registerUser(user); } - public int updateUser(User User){return userMapper.updateUser(User);} + public int updateUser(User user){ + user.setPassword(JasyptUtil.encryptPwd("xiebo",user.getPassword())); + return userMapper.updateUser(user); + } public List searchAllBuyer(){return userMapper.searchAllBuyer();} } -- Gitee From dba81b9d84b34ce76caea85bd8a5f1e69f0a0472 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sat, 12 Mar 2022 16:55:07 +0800 Subject: [PATCH 066/133] =?UTF-8?q?=E4=BF=AE=E6=94=B9order=E7=B1=BB?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3=E4=BD=BF=E5=BE=97=E5=8D=96=E5=AE=B6?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=20=E6=89=B9=E9=87=8F=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E5=BE=85=E7=A1=AE=E8=AE=A4=E8=AE=A2=E5=8D=95=20=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=AE=8C=E6=88=90=E5=A4=87=E8=B4=A7=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=20=E6=89=B9=E9=87=8F=E5=8F=91=E8=B4=A7=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/OrderController.java | 53 ++++++------------- 1 file changed, 16 insertions(+), 37 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 58ba82c..1696e71 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -165,20 +165,13 @@ public class OrderController { //卖家确认待确认的订单 @PutMapping(value = "/seller/confirm") - public Object confirmOrder(@RequestBody Map request){ - try { - JSONObject jsonObject = new JSONObject(); - String seller_username = request.get("seller_username"); - int order_id = Integer.parseInt(request.get("order_id")); - int result = orderService.confirmOrder(seller_username,order_id); - if (result != 0){ - return Result.ok(); - }else { - return Result.fail(); + public Object confirmOrder(@RequestBody Order[] orders){ + for (Order order:orders) { + if(orderService.confirmOrder(order.getSeller_username(),order.getOrder_id()) < 1) { + return Result.fail("订单号为"+order.getItem_id()+"的"+order.getGoods_name()+"确认失败,后续确认被迫中止"); } - }catch (Exception e){ - return Result.fail(); } + return Result.ok(); } //买家查询待备货的订单 @@ -209,20 +202,13 @@ public class OrderController { //卖家完成备货订单 @PutMapping(value = "/seller/pick") - public Object pickOrder(@RequestBody Map request){ - try { - JSONObject jsonObject = new JSONObject(); - String seller_username = request.get("seller_username"); - int order_id = Integer.parseInt(request.get("order_id")); - int result = orderService.pickOrder(seller_username,order_id); - if (result >= 1){ - return Result.ok(); - }else { - return Result.fail(); + public Object pickOrder(@RequestBody Order[] orders){ + for (Order order:orders) { + if(orderService.pickOrder(order.getSeller_username(),order.getOrder_id()) < 1) { + return Result.fail("订单号为"+order.getItem_id()+"的"+order.getGoods_name()+"完成备货失败,后续确认被迫中止"); } - }catch (Exception e){ - return Result.fail(); } + return Result.ok(); } //买家查询待发货的订单 @@ -276,20 +262,13 @@ public class OrderController { //卖家发货订单 @PutMapping(value = "/seller/deliver") - public Object deliverOrder(@RequestBody Map request){ - try { - JSONObject jsonObject = new JSONObject(); - String seller_username = request.get("seller_username"); - int order_id = Integer.parseInt(request.get("order_id")); - int result = orderService.deliverOrder(seller_username,order_id); - if (result >= 1){ - return Result.ok(); - }else { - return Result.fail(); + public Object deliverOrder(@RequestBody Order[] orders){ + for (Order order:orders) { + if(orderService.deliverOrder(order.getSeller_username(),order.getOrder_id()) < 1) { + return Result.fail("订单号为"+order.getItem_id()+"的"+order.getGoods_name()+"发货失败,后续确认被迫中止"); } - }catch (Exception e){ - return Result.fail(); } + return Result.ok(); } //卖家查询待收货的订单 @@ -415,7 +394,7 @@ public class OrderController { } order.setCreate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); if(orderService.addOrder(order) < 1) { - return Result.fail("商品:"+good.getGoods_name()+"下单失败"); + return Result.fail("商品:"+good.getGoods_name()+"下单失败,后续下单被迫中止"); } else { cartService.deleteCart(order.getBuyer_username(), order.getItem_id()); goodsService.updateGoodStock(good.getItem_id(),good.getGoods_stock()-order.getBuy_sum()); -- Gitee From 57538d41cb8b9de838322b0cea672860e1bc9279 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Tue, 15 Mar 2022 09:50:18 +0800 Subject: [PATCH 067/133] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=8D=96=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B7=B2=E5=AE=8C=E6=88=90=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/shop/controller/OrderController.java | 14 ++++++++++++++ .../src/main/java/com/shop/mapper/OrderMapper.java | 7 +++++++ .../main/java/com/shop/service/OrderService.java | 2 +- .../src/main/resources/mapping/OrderMapper.xml | 5 +++++ 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 1696e71..bdf869f 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -370,6 +370,20 @@ public class OrderController { } } + //卖家查询已完成的订单 + @GetMapping("/seller/finished") + public Object sellerSearchFinishOrder(@RequestParam String seller_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchFinishOrder(seller_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } + + //意向购买者下单 @PostMapping("/buyer/orders") diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 624eaee..7c76d8a 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -228,6 +228,13 @@ public interface OrderMapper { */ List buyerSearchFinishOrder(String buyer_username); + /** + * 卖家查询已完成的订单 + * @param seller_username + * @return + */ + List sellerSearchFinishOrder(String seller_username); + diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index e81c2b5..1555999 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -99,6 +99,6 @@ public class OrderService { public int buyerCancelOrder(int order_id,String buyer_username){return orderMapper.buyerCancelOrder(order_id,buyer_username);} public List buyerSearchUnfinishOrder(String buyer_username){return orderMapper.buyerSearchUnfinishOrder(buyer_username);} public List buyerSearchFinishOrder(String buyer_username){return orderMapper.buyerSearchFinishOrder(buyer_username);} - + public List sellerSearchFinishOrder(String seller_username){return orderMapper.sellerSearchFinishOrder(seller_username);} } diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 67bf813..4d10a34 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -266,5 +266,10 @@ select * from orders where buyerUsername = #{buyer_username} and state = 5 + + + -- Gitee From f8328e3f9b189b497b33e855be06d25325e86804 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sat, 19 Mar 2022 17:36:59 +0800 Subject: [PATCH 068/133] =?UTF-8?q?=E4=BF=AE=E6=94=B9Order=E7=B1=BB?= =?UTF-8?q?=E7=9A=84=E5=8D=96=E5=AE=B6=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=94=AF=E6=8C=81=E6=89=B9=E9=87=8F=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/OrderController.java | 24 +++++++------------ 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index bdf869f..7e458ac 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -168,7 +168,7 @@ public class OrderController { public Object confirmOrder(@RequestBody Order[] orders){ for (Order order:orders) { if(orderService.confirmOrder(order.getSeller_username(),order.getOrder_id()) < 1) { - return Result.fail("订单号为"+order.getItem_id()+"的"+order.getGoods_name()+"确认失败,后续确认被迫中止"); + return Result.fail("订单号为"+order.getOrder_id()+"的"+order.getGoods_name()+"确认失败,后续订单操作被迫中止"); } } return Result.ok(); @@ -205,7 +205,7 @@ public class OrderController { public Object pickOrder(@RequestBody Order[] orders){ for (Order order:orders) { if(orderService.pickOrder(order.getSeller_username(),order.getOrder_id()) < 1) { - return Result.fail("订单号为"+order.getItem_id()+"的"+order.getGoods_name()+"完成备货失败,后续确认被迫中止"); + return Result.fail("订单号为"+order.getOrder_id()+"的"+order.getGoods_name()+"完成备货失败,后续订单操作被迫中止"); } } return Result.ok(); @@ -265,7 +265,7 @@ public class OrderController { public Object deliverOrder(@RequestBody Order[] orders){ for (Order order:orders) { if(orderService.deliverOrder(order.getSeller_username(),order.getOrder_id()) < 1) { - return Result.fail("订单号为"+order.getItem_id()+"的"+order.getGoods_name()+"发货失败,后续确认被迫中止"); + return Result.fail("订单号为"+order.getOrder_id()+"的"+order.getGoods_name()+"发货失败,后续订单操作被迫中止"); } } return Result.ok(); @@ -306,21 +306,13 @@ public class OrderController { //卖家根据order_id(订单ID)取消订单 @PutMapping(value = "/seller/cancel") - public Object sellerCancelOrder(@RequestBody Map request){ - try { - String seller_username = request.get("seller_username"); - int order_id = Integer.parseInt(request.get("order_id")); - JSONObject jsonObject = new JSONObject(); - goService.deleteGOByOrderId(order_id); - int result = orderService.sellerCancelOrder(order_id,seller_username); - if (result >= 1) { - return Result.ok(); - } else { - return Result.fail(); + public Object sellerCancelOrder(@RequestBody Order[] orders){ + for (Order order:orders) { + if(orderService.sellerCancelOrder(order.getOrder_id(),order.getSeller_username()) < 1) { + return Result.fail("订单号为"+order.getOrder_id()+"的"+order.getGoods_name()+"取消失败,后续订单操作被迫中止"); } - }catch (Exception e) { - return Result.fail(); } + return Result.ok(); } //买家根据order_id(订单ID)取消订单 -- Gitee From 14de2b20a278ea9dca5a23744b32abf9be12519f Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 19 Mar 2022 23:16:53 +0800 Subject: [PATCH 069/133] =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E6=94=B6=E8=97=8F?= =?UTF-8?q?=E5=A4=B9=E7=9A=84=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E=E6=9B=B4?= =?UTF-8?q?=E5=A4=9A=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/FavoriteController.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/FavoriteController.java b/back-end_code/src/main/java/com/shop/controller/FavoriteController.java index 2b0e100..159d7a9 100644 --- a/back-end_code/src/main/java/com/shop/controller/FavoriteController.java +++ b/back-end_code/src/main/java/com/shop/controller/FavoriteController.java @@ -1,18 +1,17 @@ package com.shop.controller; import com.shop.entity.Favorite; +import com.shop.entity.Goods; import com.shop.service.CartService; import com.shop.service.FavoriteService; +import com.shop.service.GoodsService; import com.shop.utils.Result; import net.minidev.json.JSONArray; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.Collection; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; +import java.util.*; @RestController @RequestMapping("/favorites") @@ -20,6 +19,7 @@ public class FavoriteController { private static FavoriteService favoriteService; private static CartService cartService; + private static GoodsService goodsService; //添加收藏 @PostMapping("/favorite") public Object insertFavorite(@RequestBody Favorite favorite){ @@ -35,7 +35,12 @@ public class FavoriteController { public Object searchFavoriteByUsername(@PathVariable("username") String username){ try { List favoriteList = favoriteService.searchFavoritesByUsername(username); + List goods = new ArrayList<>(); JSONObject jsonObject = new JSONObject(); + for(int i = 0;i Date: Sun, 20 Mar 2022 12:36:10 +0800 Subject: [PATCH 070/133] =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6get=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=BF=94=E5=9B=9E=E5=85=B7=E4=BD=93=E5=95=86=E5=93=81?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/CartController.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/back-end_code/src/main/java/com/shop/controller/CartController.java b/back-end_code/src/main/java/com/shop/controller/CartController.java index c0a5556..e21df1c 100644 --- a/back-end_code/src/main/java/com/shop/controller/CartController.java +++ b/back-end_code/src/main/java/com/shop/controller/CartController.java @@ -1,6 +1,7 @@ package com.shop.controller; import com.shop.entity.Cart; +import com.shop.entity.Goods; import com.shop.service.CartService; import com.shop.service.GoodsService; import com.shop.utils.Result; @@ -8,6 +9,7 @@ import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -23,8 +25,13 @@ public class CartController { public Object searchCartByUsername(@PathVariable String username){ try{ JSONObject jsonObject = new JSONObject(); + List goods = new ArrayList<>(); List carts =cartService.searchCartByUsername(username); + for(int i = 0;i Date: Sun, 20 Mar 2022 21:42:27 +0800 Subject: [PATCH 071/133] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84=E5=86=92=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/CartController.java | 2 +- .../src/main/java/com/shop/controller/FavoriteController.java | 4 ++-- .../src/main/java/com/shop/controller/UploadController.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/CartController.java b/back-end_code/src/main/java/com/shop/controller/CartController.java index e21df1c..f3b518b 100644 --- a/back-end_code/src/main/java/com/shop/controller/CartController.java +++ b/back-end_code/src/main/java/com/shop/controller/CartController.java @@ -30,7 +30,7 @@ public class CartController { for(int i = 0;i Date: Mon, 21 Mar 2022 23:18:49 +0800 Subject: [PATCH 072/133] =?UTF-8?q?=E6=96=B0=E5=BB=BAAddress=E7=B1=BB?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E6=8E=A5=E5=8F=A3:=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=9C=B0=E5=9D=80;=20=E6=A0=B9=E6=8D=AE=E4=B9=B0=E5=AE=B6usern?= =?UTF-8?q?ame=E6=9F=A5=E6=89=BE=E5=9C=B0=E5=9D=80;=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=9C=B0=E5=9D=80;=20=E5=88=A0=E9=99=A4=E5=9C=B0=E5=9D=80;=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/pom.xml | 2 +- .../shop/controller/AddressController.java | 88 +++++++++++++++++ .../main/java/com/shop/entity/Address.java | 81 ++++++++++++++++ .../java/com/shop/mapper/AddressMapper.java | 59 ++++++++++++ .../java/com/shop/service/AddressService.java | 22 +++++ .../src/main/resources/application-dev.yml | 4 +- .../src/main/resources/application-pro.yml | 4 +- .../main/resources/mapping/AddressMapper.xml | 96 +++++++++++++++++++ 8 files changed, 351 insertions(+), 5 deletions(-) create mode 100644 back-end_code/src/main/java/com/shop/controller/AddressController.java create mode 100644 back-end_code/src/main/java/com/shop/entity/Address.java create mode 100644 back-end_code/src/main/java/com/shop/mapper/AddressMapper.java create mode 100644 back-end_code/src/main/java/com/shop/service/AddressService.java create mode 100644 back-end_code/src/main/resources/mapping/AddressMapper.xml diff --git a/back-end_code/pom.xml b/back-end_code/pom.xml index 3bde7b4..4218273 100644 --- a/back-end_code/pom.xml +++ b/back-end_code/pom.xml @@ -10,7 +10,7 @@ com.shop service - 1.0.1-SNAPSHOT + 3.1.1-SNAPSHOT com.shop.service 购物网站后台 diff --git a/back-end_code/src/main/java/com/shop/controller/AddressController.java b/back-end_code/src/main/java/com/shop/controller/AddressController.java new file mode 100644 index 0000000..b13cb41 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/AddressController.java @@ -0,0 +1,88 @@ +package com.shop.controller; + +import com.shop.entity.Address; +import com.shop.entity.Cart; +import com.shop.entity.Goods; +import com.shop.service.AddressService; +import com.shop.service.CartService; +import com.shop.service.GoodsService; +import com.shop.utils.Result; +import net.minidev.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/address") +public class AddressController { + @Autowired + private AddressService addressService; + + //添加地址 + @PostMapping("/Address") + public Object addAddress(@RequestBody Address address){ + try{ + if (addressService.addAddress(address) < 1) + return Result.fail(); + }catch (Exception e){ + return Result.fail(e.toString()); + } + return Result.ok(); + } + + //根据买家username查找地址 + @GetMapping("/{username}") + public Object searchUserAddress(@PathVariable String username){ + try{ + JSONObject jsonObject = new JSONObject(); + List

addresses =addressService.searchUserAddress(username); + jsonObject.put("addresses",addresses); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(e.toString()); + } + } + + //更新地址 + @PutMapping("/Address") + public Object updateAddress(@RequestBody Address address){ + try { + if (addressService.updateAddress(address) < 1) + return Result.fail("更新地址失败"); + } catch (Exception e) { + return Result.fail(e.toString()); + } + return Result.ok(); + } + + //删除地址 + @DeleteMapping("/Address") + public Object deleteAddressByAddressId(@PathVariable String username,@PathVariable int address_id){ + try { + if (addressService.deleteAddressByAddressId(username,address_id) < 1) + return Result.fail("删除地址失败"); + } catch (Exception e) { + return Result.fail(e.toString()); + } + return Result.ok(); + } + + //修改默认地址 + @PutMapping("/{address_id}") + public Object updateSelected(@PathVariable int address_id){ + try { + Address address = addressService.searcAddressById(address_id); + if (addressService.setUnselected(address.getUsername()) < 1) + return Result.fail("更新地址失败"); + if (addressService.setselected(address_id,address.getUsername()) < 1) + return Result.fail("更新地址失败"); + } catch (Exception e) { + return Result.fail(e.toString()); + } + return Result.ok(); + } + + +} diff --git a/back-end_code/src/main/java/com/shop/entity/Address.java b/back-end_code/src/main/java/com/shop/entity/Address.java new file mode 100644 index 0000000..640e236 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/Address.java @@ -0,0 +1,81 @@ +package com.shop.entity; + +public class Address { + private int address_id; + private String username; + private String realname; + private String address; + private String phonenumber; + private int selected; + + public Address(String username, String realname, String address, String phonenumber, int selected) { + this.username = username; + this.realname = realname; + this.address = address; + this.phonenumber = phonenumber; + this.selected = selected; + } + + public int getAddress_id() { + return address_id; + } + + public void setAddress_id(int address_id) { + this.address_id = address_id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getRealname() { + return realname; + } + + public void setRealname(String realname) { + this.realname = realname; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getPhonenumber() { + return phonenumber; + } + + public void setPhonenumber(String phonenumber) { + this.phonenumber = phonenumber; + } + + public int getSelected() { + return selected; + } + + public void setSelected(int selected) { + this.selected = selected; + } + + public Address() { + } + + @Override + public String toString() { + return "Address{" + + "address_id=" + address_id + + ", username='" + username + '\'' + + ", realname='" + realname + '\'' + + ", address='" + address + '\'' + + ", phonenumber='" + phonenumber + '\'' + + ", selected=" + selected + + '}'; + } +} diff --git a/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java b/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java new file mode 100644 index 0000000..97e0b60 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java @@ -0,0 +1,59 @@ +package com.shop.mapper; + +import com.shop.entity.Address; +import org.springframework.stereotype.Repository; + +import java.util.List; +@Repository +public interface AddressMapper { + + + /** + * 添加地址 + * @return + */ + int addAddress(Address address); + + /** + * 根据买家username查找地址 + * @param username + * @return + */ + List
searchUserAddress(String username); + + /** + *更新地址 + * @param address + * @return + */ + int updateAddress(Address address); + + /** + *删除地址 + * @param username + * @param address_id + * @return + */ + int deleteAddressByAddressId(String username,int address_id); + + /** + *根据AddressId修改Address为默认地址 + * @param address_id + * @param username + * @return + */ + int setselected(int address_id,String username); + + /** + *根据AddressId查询Address + * @param address_id + * @return + */ + Address searcAddressById(int address_id); + /** + *根据username修改Address不为默认地址 + * @param username + * @return + */ + int setUnselected(String username); +} diff --git a/back-end_code/src/main/java/com/shop/service/AddressService.java b/back-end_code/src/main/java/com/shop/service/AddressService.java new file mode 100644 index 0000000..e1c09af --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/AddressService.java @@ -0,0 +1,22 @@ +package com.shop.service; + +import com.shop.entity.Address; +import com.shop.mapper.AddressMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class AddressService { + @Autowired + private AddressMapper addressMapper; + + public int addAddress(Address address){return addressMapper.addAddress(address); } + public List
searchUserAddress(String username){ return addressMapper.searchUserAddress(username); } + public int updateAddress(Address address){return addressMapper.updateAddress(address);} + public int setselected(int address_id,String username){return addressMapper.setselected(address_id,username);} + public Address searcAddressById(int address_id){return addressMapper.searcAddressById(address_id);} + public int setUnselected(String username){return addressMapper.setUnselected(username);} + public int deleteAddressByAddressId(String username,int address_id){return addressMapper.deleteAddressByAddressId(username,address_id);} +} diff --git a/back-end_code/src/main/resources/application-dev.yml b/back-end_code/src/main/resources/application-dev.yml index e5d3982..87a4aa2 100644 --- a/back-end_code/src/main/resources/application-dev.yml +++ b/back-end_code/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 8084 + port: 8085 spring: datasource: username: xiangwan password: dingwanren #url中database为对应的数据库名称 - url: jdbc:mysql://47.103.214.177:3306/service3.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC + url: jdbc:mysql://47.103.214.177:3306/service4.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver devtools: restart: diff --git a/back-end_code/src/main/resources/application-pro.yml b/back-end_code/src/main/resources/application-pro.yml index 9b61ba7..2baead9 100644 --- a/back-end_code/src/main/resources/application-pro.yml +++ b/back-end_code/src/main/resources/application-pro.yml @@ -1,12 +1,12 @@ server: - port: 8084 + port: 8085 spring: datasource: username: root password: jiaxintang #url中database为对应的数据库名称 - url: jdbc:mysql://localhost:3306/service3.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC + url: jdbc:mysql://localhost:3306/service4.0?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver mybatis: diff --git a/back-end_code/src/main/resources/mapping/AddressMapper.xml b/back-end_code/src/main/resources/mapping/AddressMapper.xml new file mode 100644 index 0000000..76d1526 --- /dev/null +++ b/back-end_code/src/main/resources/mapping/AddressMapper.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + insert into address + + + + username, + + + realname, + + + address, + + + phonenumber, + + + selected, + + + + + + + #{username,jdbcType=VARCHAR}, + + + #{realname,jdbcType=VARCHAR}, + + + #{address,jdbcType=VARCHAR}, + + + #{phonenumber,jdbcType=VARCHAR}, + + + #{selected,jdbcType=INTEGER}, + + + + + + + + + + delete from address where addressId = #{address_id} and username = #{username} + + + + + update address + + + realname = #{realname,jdbcType=VARCHAR}, + + + address = #{address,jdbcType=VARCHAR}, + + + phonenumber = #{phonenumber,jdbcType=VARCHAR}, + + + selected = #{selected,jdbcType=INTEGER}, + + + where addressId = #{address_id,jdbcType=INTEGER} + + + + + update address set selected = 1 where addressId = #{address_id,jdbcType=INTEGER} and username = #{username} and selected = 2 + + + + + update address set selected = 2 where addressId = #{address_id,jdbcType=INTEGER} and username = #{username} and selected = 1 + + + + -- Gitee From 70106afb99f1bc391dd631f2bb8444dc27d5931b Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Tue, 22 Mar 2022 10:32:31 +0800 Subject: [PATCH 073/133] =?UTF-8?q?=E4=BF=AE=E6=94=B9Order=E7=B1=BB?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3=EF=BC=9A=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=B9=B0=E5=AE=B6=E6=9F=A5=E8=AF=A2=E5=BE=85=E6=94=B6=E8=B4=A7?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=20=E4=BF=AE=E6=94=B9=E5=8D=96=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=BE=85=E6=94=B6=E8=B4=A7=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9Address=E7=B1=BB=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=9A=20=E5=88=A0=E9=99=A4=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E7=9A=84=E6=8E=A5=E6=94=B6=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shop/controller/AddressController.java | 7 ++++--- .../com/shop/controller/OrderController.java | 19 ++++++++++++++++--- .../java/com/shop/mapper/OrderMapper.java | 9 ++++++++- .../java/com/shop/service/OrderService.java | 3 ++- .../main/resources/mapping/OrderMapper.xml | 7 ++++++- 5 files changed, 36 insertions(+), 9 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AddressController.java b/back-end_code/src/main/java/com/shop/controller/AddressController.java index b13cb41..7efb323 100644 --- a/back-end_code/src/main/java/com/shop/controller/AddressController.java +++ b/back-end_code/src/main/java/com/shop/controller/AddressController.java @@ -58,10 +58,11 @@ public class AddressController { } //删除地址 - @DeleteMapping("/Address") - public Object deleteAddressByAddressId(@PathVariable String username,@PathVariable int address_id){ + @DeleteMapping("/{address_id}") + public Object deleteAddressByAddressId(@PathVariable int address_id){ try { - if (addressService.deleteAddressByAddressId(username,address_id) < 1) + Address address = addressService.searcAddressById(address_id); + if (addressService.deleteAddressByAddressId(address.getUsername(),address_id) < 1) return Result.fail("删除地址失败"); } catch (Exception e) { return Result.fail(e.toString()); diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 7e458ac..d44e69e 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -272,11 +272,24 @@ public class OrderController { } //卖家查询待收货的订单 - @GetMapping("/seller/Unfinished") - public Object sellerSearchUnfinishedOrder(@RequestParam String seller_username){ + @GetMapping("/seller/Unarrive") + public Object sellerSearchUnarriveOrder(@RequestParam String seller_username){ try{ JSONObject jsonObject = new JSONObject(); - List orderList = orderService.sellerSearchUnfinishOrder(seller_username); + List orderList = orderService.sellerSearchUnarriveOrder(seller_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } + + //买家查询待收货的订单 + @GetMapping("/buyer/Unarrive") + public Object buyerSearchUnarriveOrder(@RequestParam String buyer_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchUnarriveOrder(buyer_username); jsonObject.put("orders",orderList); return Result.ok(jsonObject); }catch (Exception e){ diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 7c76d8a..445f1c4 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -188,7 +188,14 @@ public interface OrderMapper { * @param seller_username * @return */ - List sellerSearchUnfinishOrder(String seller_username); + List sellerSearchUnarriveOrder(String seller_username); + + /** + * 卖家查询待收货的订单 + * @param buyer_username + * @return + */ + List buyerSearchUnarriveOrder(String buyer_username); /** * 买家根据order_id(订单ID)完成交易 diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index 1555999..a21194b 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -93,7 +93,8 @@ public class OrderService { public int buyerUpdateUndeliverOrder(Order order){return orderMapper.buyerUpdateUndeliverOrder(order);} public List sellerSearchUndeliverOrder(String seller_username){return orderMapper.sellerSearchUndeliverOrder(seller_username);} public int deliverOrder(String seller_username,int order_id){return orderMapper.deliverOrder(seller_username,order_id);} - public List sellerSearchUnfinishOrder(String seller_username){return orderMapper.sellerSearchUnfinishOrder(seller_username);} + public List sellerSearchUnarriveOrder(String seller_username){return orderMapper.sellerSearchUnarriveOrder(seller_username);} + public List buyerSearchUnarriveOrder(String buyer_username){return orderMapper.buyerSearchUnarriveOrder(buyer_username);} public int finishOrder(String buyer_username,int order_id,String finish_time){ return orderMapper.finishOrder(buyer_username,order_id,finish_time); } public int sellerCancelOrder(int order_id,String seller_username){return orderMapper.sellerCancelOrder(order_id,seller_username);} public int buyerCancelOrder(int order_id,String buyer_username){return orderMapper.buyerCancelOrder(order_id,buyer_username);} diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 4d10a34..7b73aab 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -237,10 +237,15 @@ - select * from orders where sellerUsername = #{seller_username} and state = 4 + + + update orders set state = 5 , finishTime = #{finish_time} where orderId = #{order_id} and state = 4 and buyerUsername = #{buyer_username} -- Gitee From 3ae4fddc2a65711eee4610e81e4454e428d201ae Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 27 Mar 2022 17:56:03 +0800 Subject: [PATCH 074/133] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E6=97=B6=E5=80=99=E6=9D=83=E9=99=90=E4=B8=BA=E5=95=86=E5=AE=B6?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/UserController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index 9c2328a..f9b708a 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -109,7 +109,7 @@ public class UserController { String username = user.getUserName(); String password = user.getPassword(); String nickname = user.getNickName(); - int permission = 1; + int permission = 2; String phonenumber = user.getPhonenumber(); String address = user.getAddress(); String realname = user.getRealname(); -- Gitee From 68fc7aad4ffe939c6b6905d6a591a4b779d843f3 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Tue, 12 Apr 2022 00:00:09 +0800 Subject: [PATCH 075/133] =?UTF-8?q?Order=E7=B1=BB=EF=BC=9A=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=B9=B0=E5=AE=B6=E6=9F=A5=E8=AF=A2=E5=B7=B2=E9=80=80?= =?UTF-8?q?=E6=AC=BE=E8=AE=A2=E5=8D=95=E7=9A=84=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8D=96=E5=AE=B6=E6=9F=A5=E8=AF=A2=E5=B7=B2?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E8=AE=A2=E5=8D=95=E7=9A=84=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E5=8D=96=E5=AE=B6=E5=90=8C=E6=84=8F?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=9A=84=E6=8E=A5=E5=8F=A3=20pom.xml=EF=BC=9A=20?= =?UTF-8?q?=E5=BC=95=E5=85=A5=E9=98=BF=E9=87=8C=E7=9A=84JSONobject?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=20=E6=96=B0=E5=A2=9EAftApplication=E7=B1=BB?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E7=94=A8=E6=88=B7=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E7=94=B3=E8=AF=89=E7=9A=84=E6=8E=A5=E5=8F=A3=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=B9=B0=E5=AE=B6=E6=8C=89=E6=9D=A1=E4=BB=B6=E6=9F=A5?= =?UTF-8?q?=E6=89=BE=E7=94=B3=E8=AF=89=E7=9A=84=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8D=96=E5=AE=B6=E6=8C=89=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E6=9F=A5=E6=89=BE=E7=94=B3=E8=AF=89=E7=9A=84=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E4=B9=B0=E5=AE=B6=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=94=B3=E8=AF=89=E7=9A=84=E6=8E=A5=E5=8F=A3=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=B9=B0=E5=AE=B6=E5=8F=96=E6=B6=88=E7=94=B3=E8=AF=89?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3=20=E6=96=B0=E5=A2=9E=E5=8D=96?= =?UTF-8?q?=E5=AE=B6=E5=90=8C=E6=84=8F=E7=94=B3=E8=AF=89=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/pom.xml | 6 + .../com/shop/Enum/AftApplicationState.java | 20 +++ .../com/shop/Enum/AftApplicationType.java | 18 ++ .../main/java/com/shop/Enum/PackageState.java | 19 +++ .../controller/AftApplicationController.java | 140 ++++++++++++++++ .../com/shop/controller/OrderController.java | 24 +++ .../java/com/shop/entity/AftApplication.java | 122 ++++++++++++++ .../com/shop/mapper/AftApplicationMapper.java | 80 +++++++++ .../java/com/shop/mapper/OrderMapper.java | 22 ++- .../shop/service/AftApplicationService.java | 29 ++++ .../java/com/shop/service/OrderService.java | 3 + .../mapping/AftApplicationMapper.xml | 158 ++++++++++++++++++ .../main/resources/mapping/OrderMapper.xml | 16 +- 13 files changed, 655 insertions(+), 2 deletions(-) create mode 100644 back-end_code/src/main/java/com/shop/Enum/AftApplicationState.java create mode 100644 back-end_code/src/main/java/com/shop/Enum/AftApplicationType.java create mode 100644 back-end_code/src/main/java/com/shop/Enum/PackageState.java create mode 100644 back-end_code/src/main/java/com/shop/controller/AftApplicationController.java create mode 100644 back-end_code/src/main/java/com/shop/entity/AftApplication.java create mode 100644 back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java create mode 100644 back-end_code/src/main/java/com/shop/service/AftApplicationService.java create mode 100644 back-end_code/src/main/resources/mapping/AftApplicationMapper.xml diff --git a/back-end_code/pom.xml b/back-end_code/pom.xml index 4218273..c9cc5f0 100644 --- a/back-end_code/pom.xml +++ b/back-end_code/pom.xml @@ -47,6 +47,12 @@ qiniu-java-sdk 7.2.7 + + + com.alibaba + fastjson + 1.2.47 + diff --git a/back-end_code/src/main/java/com/shop/Enum/AftApplicationState.java b/back-end_code/src/main/java/com/shop/Enum/AftApplicationState.java new file mode 100644 index 0000000..03ac63b --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/AftApplicationState.java @@ -0,0 +1,20 @@ +package com.shop.Enum; + +public enum AftApplicationState { + Process, // 处理中 + Finish, // 已完成 + Cancel; // 已关闭 + + AftApplicationState() { + } + public static AftApplicationState toenum(String str){ + if (str.equals("Process")){ + return Process; + }else if (str.equals("Finish")){ + return Finish; + }else if (str.equals("Cancel")){ + return Cancel; + }else + return null; + } +} diff --git a/back-end_code/src/main/java/com/shop/Enum/AftApplicationType.java b/back-end_code/src/main/java/com/shop/Enum/AftApplicationType.java new file mode 100644 index 0000000..124ec2a --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/AftApplicationType.java @@ -0,0 +1,18 @@ +package com.shop.Enum; + +public enum AftApplicationType { + Refund, //退款 + UnRefund; //不退款 + + AftApplicationType() { + } + + public static AftApplicationType toenum(String str){ + if (str.equals("Refund")){ + return Refund; + }else if (str.equals("UnRefund")){ + return UnRefund; + }else + return null; + } +} diff --git a/back-end_code/src/main/java/com/shop/Enum/PackageState.java b/back-end_code/src/main/java/com/shop/Enum/PackageState.java new file mode 100644 index 0000000..a53a721 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/PackageState.java @@ -0,0 +1,19 @@ +package com.shop.Enum; + +public enum PackageState { + Finished, + //已收到货 + UnFinished; + //未收到货 + + PackageState() { + } + public static PackageState toenum(String str){ + if (str.equals("Finished")){ + return Finished; + }else if (str.equals("UnFinished")){ + return UnFinished; + }else + return null; + } +} diff --git a/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java new file mode 100644 index 0000000..7a8ecfc --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java @@ -0,0 +1,140 @@ +package com.shop.controller; + +import com.shop.Enum.AftApplicationState; +import com.shop.Enum.AftApplicationType; +import com.shop.entity.AftApplication; +import com.shop.entity.Order; +import com.shop.service.AftApplicationService; +import com.shop.service.OrderService; +import com.shop.utils.Result; +import com.alibaba.fastjson.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/aftApplication") +public class AftApplicationController { + @Autowired + private AftApplicationService aftApplicationService; + @Autowired + private OrderService orderService; + + + @PutMapping("/test") + public Object test(@RequestParam String aftApplication_buyerusername, @RequestParam(defaultValue = "null") String type, @RequestParam(defaultValue = "null") String state){ + System.out.println("aftApplication_buyerusername:"+aftApplication_buyerusername); + AftApplicationType aftApplication_type = AftApplicationType.toenum(type); + AftApplicationState aftApplication_state = AftApplicationState.toenum(state); + System.out.println("aftApplication_type:"+aftApplication_type); + System.out.println("aftApplication_state:"+aftApplication_state); + return null; + } + @PutMapping("/test1") + public Object test1(@RequestBody AftApplication aftApplication){ + System.out.println("aftApplication_buyerusername:"+aftApplication.getAftApplication_buyerusername()); + return null; + } + + //添加申诉 + @PostMapping("/AftApplication") + public Object addAftApplication(@RequestBody AftApplication aftApplication){ + JSONObject jsonObject = new JSONObject(); + aftApplication.setCreate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + try{ + if (aftApplicationService.isAftApplicationById(aftApplication.getOrder_id()) != null){ + return Result.fail("重复添加"); + } + if (aftApplicationService.addAftApplication(aftApplication) < 1) + return Result.fail("添加申诉失败"); + }catch (Exception e){ + return Result.fail(e.toString()); + } + Order order = orderService.searchOrderByOrderId(aftApplication.getAftApplication_sellerusername(),aftApplication.getOrder_id()); + jsonObject.put("order",order); + return Result.ok(jsonObject); + } + + //买家根据aftApplication_buyerusername,aftApplication_type,aftApplication_state查找申诉 + @PutMapping("/buyer") + public Object searchBuyerAftApplication(@RequestParam String buyerusername, @RequestParam(defaultValue = "null") String type, @RequestParam(defaultValue = "null") String state){ + try{ + JSONObject jsonObject = new JSONObject(); + String aftApplication_buyerusername = buyerusername; + AftApplicationType aftApplication_type = AftApplicationType.toenum(type); + AftApplicationState aftApplication_state = AftApplicationState.toenum(state); + List aftApplicationes =aftApplicationService.searchBuyerAftApplication(aftApplication_buyerusername,aftApplication_type,aftApplication_state); + jsonObject.put("aftApplicationes",aftApplicationes); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(e.toString()); + } + } + + //卖家根据aftApplication_buyerusername,aftApplication_type,aftApplication_state查找申诉 + @PutMapping("/seller") + public Object searchSellerAftApplication(@RequestParam String sellerusername, @RequestParam(defaultValue = "null") String type, @RequestParam(defaultValue = "null") String state){ + try{ + JSONObject jsonObject = new JSONObject(); + String aftApplication_sellerusername = sellerusername; + AftApplicationType aftApplication_type = AftApplicationType.toenum(type); + AftApplicationState aftApplication_state = AftApplicationState.toenum(state); + List aftApplicationes =aftApplicationService.searchSellerAftApplication(aftApplication_sellerusername,aftApplication_type,aftApplication_state); + jsonObject.put("aftApplicationes",aftApplicationes); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(e.toString()); + } + } + + //买家修改申诉 + @PutMapping("/update") + public Object updateAftApplication(@RequestBody AftApplication aftApplication){ + try { + if (aftApplicationService.updateAftApplication(aftApplication) < 1) + return Result.fail("更新申诉失败"); + } catch (Exception e) { + return Result.fail(e.toString()); + } + return Result.ok(); + } + + //买家取消申诉 + @PutMapping("/cancel") + public Object cancelAftApplication(@RequestParam int aftApplication_id,@RequestParam String buyerusername){ + try { + AftApplication aftApplication = new AftApplication(); + aftApplication.setAftApplication_id(aftApplication_id); + aftApplication.setAftApplication_buyerusername(buyerusername); + if (aftApplicationService.cancelAftApplication(aftApplication) < 1) + return Result.fail("更新申诉失败"); + } catch (Exception e) { + return Result.fail(e.toString()); + } + return Result.ok(); + } + + //卖家同意申诉 + @PutMapping("/accept") + public Object acceptAftApplication(@RequestParam int aftApplication_id,@RequestParam String sellerusername){ + try { + AftApplication aftApplication = aftApplicationService.searcAftApplicationById(aftApplication_id); + aftApplication.setAftApplication_id(aftApplication_id); + aftApplication.setAftApplication_sellerusername(sellerusername); + aftApplication.setFinish_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + if (aftApplicationService.acceptAftApplication(aftApplication) < 1) + return Result.fail("更新申诉失败"); + if (orderService.sellerAcceptAftApplication(aftApplication.getOrder_id(),sellerusername) < 1){ + aftApplicationService.acceptAftApplicationBack(aftApplication); + return Result.fail("同意申诉失败"); + } + } catch (Exception e) { + return Result.fail(e.toString()); + } + return Result.ok(); + } + +} diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index d44e69e..9c453a0 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -422,5 +422,29 @@ public class OrderController { return Result.ok(); } + //买家查询已退款的订单 + @GetMapping("/buyer/refunded") + public Object buyerSearchRefundedOrder(@RequestParam String buyer_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.buyerSearchRefundedOrder(buyer_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } + //卖家查询已退款的订单 + @GetMapping("/seller/refunded") + public Object sellerSearchRefundedOrder(@RequestParam String seller_username){ + try{ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchRefundedOrder(seller_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(); + } + } } diff --git a/back-end_code/src/main/java/com/shop/entity/AftApplication.java b/back-end_code/src/main/java/com/shop/entity/AftApplication.java new file mode 100644 index 0000000..46986c4 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/AftApplication.java @@ -0,0 +1,122 @@ +package com.shop.entity; + +import com.shop.Enum.AftApplicationState; +import com.shop.Enum.AftApplicationType; +import com.shop.Enum.PackageState; + +public class AftApplication { + private Integer aftApplication_id; + private int order_id; + private String aftApplication_buyerusername; + private String aftApplication_sellerusername; + private PackageState package_state;// 快递状态 + private AftApplicationType aftApplication_type;// 申诉类型 + private String aftApplication_reason; + private String aftApplication_images; + private AftApplicationState aftApplication_state; // 申诉状态 + private String create_time; + private String finish_time; + + public AftApplication() { + } + + public AftApplication(int order_id, String aftApplication_buyerusername, String aftApplication_sellerusername, PackageState package_state, AftApplicationType aftApplication_type, String aftApplication_reason, String aftApplication_images, AftApplicationState aftApplication_state, String create_time) { + this.order_id = order_id; + this.aftApplication_buyerusername = aftApplication_buyerusername; + this.aftApplication_sellerusername = aftApplication_sellerusername; + this.package_state = package_state; + this.aftApplication_type = aftApplication_type; + this.aftApplication_reason = aftApplication_reason; + this.aftApplication_images = aftApplication_images; + this.aftApplication_state = aftApplication_state; + this.create_time = create_time; + } + + public Integer getAftApplication_id() { + return aftApplication_id; + } + + public void setAftApplication_id(Integer aftApplication_id) { + this.aftApplication_id = aftApplication_id; + } + + public int getOrder_id() { + return order_id; + } + + public void setOrder_id(int order_id) { + this.order_id = order_id; + } + + public String getAftApplication_buyerusername() { + return aftApplication_buyerusername; + } + + public void setAftApplication_buyerusername(String aftApplication_buyerusername) { + this.aftApplication_buyerusername = aftApplication_buyerusername; + } + + public String getAftApplication_sellerusername() { + return aftApplication_sellerusername; + } + + public void setAftApplication_sellerusername(String aftApplication_sellerusername) { + this.aftApplication_sellerusername = aftApplication_sellerusername; + } + + public PackageState getPackage_state() { + return package_state; + } + + public void setPackage_state(PackageState package_state) { + this.package_state = package_state; + } + + public AftApplicationType getAftApplication_type() { + return aftApplication_type; + } + + public void setAftApplication_type(AftApplicationType aftApplication_type) { + this.aftApplication_type = aftApplication_type; + } + + public String getAftApplication_reason() { + return aftApplication_reason; + } + + public void setAftApplication_reason(String aftApplication_reason) { + this.aftApplication_reason = aftApplication_reason; + } + + public String getAftApplication_images() { + return aftApplication_images; + } + + public void setAftApplication_images(String aftApplication_images) { + this.aftApplication_images = aftApplication_images; + } + + public AftApplicationState getAftApplication_state() { + return aftApplication_state; + } + + public void setAftApplication_state(AftApplicationState aftApplication_state) { + this.aftApplication_state = aftApplication_state; + } + + public String getCreate_time() { + return create_time; + } + + public void setCreate_time(String create_time) { + this.create_time = create_time; + } + + public String getFinish_time() { + return finish_time; + } + + public void setFinish_time(String finish_time) { + this.finish_time = finish_time; + } +} diff --git a/back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java b/back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java new file mode 100644 index 0000000..61c3a4a --- /dev/null +++ b/back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java @@ -0,0 +1,80 @@ +package com.shop.mapper; + +import com.shop.Enum.AftApplicationState; +import com.shop.Enum.AftApplicationType; +import com.shop.entity.AftApplication; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface AftApplicationMapper { + + + /** + * 提交申诉 + * @return + */ + int addAftApplication(AftApplication aftApplication); + + /** + * 根据买家aftApplication_buyerusername,aftApplication_type,aftApplication_state查找申诉 + * @param aftApplication_buyerusername + * @param aftApplication_type + * @param aftApplication_state + * @return + */ + List searchBuyerAftApplication(String aftApplication_buyerusername, AftApplicationType aftApplication_type, AftApplicationState aftApplication_state); + + /** + * 根据卖家aftApplication_sellerusername,aftApplication_type,aftApplication_state查找申诉 + * @param aftApplication_sellerusername + * @param aftApplication_type + * @param aftApplication_state + * @return + */ + List searchSellerAftApplication(String aftApplication_sellerusername, AftApplicationType aftApplication_type, AftApplicationState aftApplication_state); + + + /** + * 买家修改申诉 + * @param aftApplication + * @return + */ + int updateAftApplication(AftApplication aftApplication); + + /** + * 买家取消申诉 + * @param aftApplication + * @return + */ + int cancelAftApplication(AftApplication aftApplication); + + /** + * 卖家同意申诉 + * @param aftApplication + * @return + */ + int acceptAftApplication(AftApplication aftApplication); + + /** + * 卖家同意申诉回退 + * @param aftApplication + * @return + */ + int acceptAftApplicationBack(AftApplication aftApplication); + + /** + * 根据AftApplicationId查询AftApplication + * @param aftApplication_id + * @return + */ + AftApplication searcAftApplicationById(Integer aftApplication_id); + + /** + * 根据order_id查询AftApplication是否存在 + * @param order_id + * @return + */ + AftApplication isAftApplicationById(Integer order_id); +} diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 445f1c4..82fac62 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -191,7 +191,7 @@ public interface OrderMapper { List sellerSearchUnarriveOrder(String seller_username); /** - * 卖家查询待收货的订单 + * 买家查询待收货的订单 * @param buyer_username * @return */ @@ -242,7 +242,27 @@ public interface OrderMapper { */ List sellerSearchFinishOrder(String seller_username); + /** + * 卖家查询待已退款的订单 + * @param seller_username + * @return + */ + List sellerSearchRefundedOrder(String seller_username); + /** + * 买家查询已退款的订单 + * @param buyer_username + * @return + */ + List buyerSearchRefundedOrder(String buyer_username); + + /** + * 卖家根据order_id(订单ID)同意退款 + * @param order_id + * @param seller_username + * @return + */ + int sellerAcceptAftApplication(int order_id,String seller_username); diff --git a/back-end_code/src/main/java/com/shop/service/AftApplicationService.java b/back-end_code/src/main/java/com/shop/service/AftApplicationService.java new file mode 100644 index 0000000..4204d23 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/AftApplicationService.java @@ -0,0 +1,29 @@ +package com.shop.service; + +import com.shop.Enum.AftApplicationState; +import com.shop.Enum.AftApplicationType; +import com.shop.entity.AftApplication; +import com.shop.mapper.AftApplicationMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class AftApplicationService { + @Autowired + private AftApplicationMapper aftApplicationMapper; + + public int addAftApplication(AftApplication aftApplication){return aftApplicationMapper.addAftApplication(aftApplication); } + public List searchBuyerAftApplication(String aftApplication_buyerusername, AftApplicationType aftApplication_type, AftApplicationState aftApplication_state){ + return aftApplicationMapper.searchBuyerAftApplication(aftApplication_buyerusername,aftApplication_type,aftApplication_state); } + public List searchSellerAftApplication(String aftApplication_sellerusername, AftApplicationType aftApplication_type, AftApplicationState aftApplication_state){ + return aftApplicationMapper.searchSellerAftApplication(aftApplication_sellerusername,aftApplication_type,aftApplication_state); } + public int updateAftApplication(AftApplication aftApplication){return aftApplicationMapper.updateAftApplication(aftApplication);} + public int cancelAftApplication(AftApplication aftApplication){return aftApplicationMapper.cancelAftApplication(aftApplication);} + public int acceptAftApplication(AftApplication aftApplication){return aftApplicationMapper.acceptAftApplication(aftApplication);} + public int acceptAftApplicationBack(AftApplication aftApplication){return aftApplicationMapper.acceptAftApplication(aftApplication);} + public AftApplication searcAftApplicationById(Integer aftApplication_id){return aftApplicationMapper.searcAftApplicationById(aftApplication_id);} + public AftApplication isAftApplicationById(Integer order_id){return aftApplicationMapper.isAftApplicationById(order_id);} + +} diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index a21194b..64af4ea 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -101,5 +101,8 @@ public class OrderService { public List buyerSearchUnfinishOrder(String buyer_username){return orderMapper.buyerSearchUnfinishOrder(buyer_username);} public List buyerSearchFinishOrder(String buyer_username){return orderMapper.buyerSearchFinishOrder(buyer_username);} public List sellerSearchFinishOrder(String seller_username){return orderMapper.sellerSearchFinishOrder(seller_username);} + public List sellerSearchRefundedOrder(String seller_username){return orderMapper.sellerSearchRefundedOrder(seller_username);} + public List buyerSearchRefundedOrder(String buyer_username){return orderMapper.buyerSearchRefundedOrder(buyer_username);} + public int sellerAcceptAftApplication(int order_id,String seller_username){return orderMapper.sellerAcceptAftApplication(order_id,seller_username);} } diff --git a/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml b/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml new file mode 100644 index 0000000..3f294aa --- /dev/null +++ b/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + insert into aftapplication + + + orderId, + + + aftApplicationBuyerusername, + + + aftApplicationSellerusername, + + + packageState, + + + aftApplicationType, + + + aftApplicationReason, + + + aftApplicationImages, + + + aftApplicationState, + + + createTime, + + + + + + + + 46, + + + #{aftApplication_buyerusername,jdbcType=VARCHAR}, + + + #{aftApplication_sellerusername,jdbcType=VARCHAR}, + + + #{package_state,jdbcType=VARCHAR}, + + + #{aftApplication_type,jdbcType=VARCHAR}, + + + #{aftApplication_reason,jdbcType=VARCHAR}, + + + #{aftApplication_images,jdbcType=VARCHAR}, + + + #{aftApplication_state,jdbcType=VARCHAR}, + + + #{create_time,jdbcType=TIMESTAMP}, + + + + + + + + + + + + + update aftapplication + + + where aftApplicationId = #{aftApplication_id} and aftApplicationBuyerusername = #{aftApplication_buyerusername} and + + + + + update aftapplication + + + aftApplicationReason = #{aftApplication_reason,jdbcType=VARCHAR}, + + + aftApplicationImages = #{aftApplication_images,jdbcType=VARCHAR}, + + + where aftApplicationId = #{aftApplication_id,jdbcType=INTEGER} and aftApplicationBuyerusername = #{aftApplication_buyerusername} and + + + + + update aftapplication + + + + finishTime = #{finish_time,jdbcType=TIMESTAMP}, + + where aftApplicationId = #{aftApplication_id} and aftApplicationSellerusername = #{aftApplication_sellerusername} and + + + + + update aftapplication + + + where aftApplicationId = #{aftApplication_id} and aftApplicationSellerusername = #{aftApplication_sellerusername} and + + + + + + + + + + diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 7b73aab..b0ae28e 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -271,10 +271,24 @@ select * from orders where buyerUsername = #{buyer_username} and state = 5 - + + + + + + + + + + update orders set state = 8 where orderId = #{order_id} and sellerUsername = #{seller_username} and state < 5 + -- Gitee From 52f31df88c92792d6e915ce60ee9b62f6a6b4b3e Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Wed, 13 Apr 2022 23:14:46 +0800 Subject: [PATCH 076/133] =?UTF-8?q?Address:=20Address=E7=B1=BB=E7=9A=84?= =?UTF-8?q?=E4=BB=8E=E6=94=B9=E4=B8=BAenum(Select)=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9C=B0=E5=9D=80=E7=9A=84=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AF=B9=E4=BA=8E=E6=96=B0=E5=A2=9E=E5=9C=B0=E5=9D=80=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=88=A4=E6=96=AD=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=BB=98=E8=AE=A4=E5=9C=B0=E5=9D=80=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E7=9A=84=E9=80=BB=E8=BE=91=E5=88=A4=E6=96=AD?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E4=B9=B0=E5=AE=B6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=9C=B0=E5=9D=80=E7=9A=84=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20AftApplication:=20=E4=BF=AE=E6=94=B9=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E7=94=B3=E8=AF=89=E7=9A=84=E6=8E=A5=E5=8F=A3=E5=AF=B9=E4=BA=8E?= =?UTF-8?q?=E7=94=B3=E8=AF=89=E7=9A=84=E9=BB=98=E8=AE=A4=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E8=AE=BE=E7=BD=AE=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=90=8C=E6=84=8F=E7=94=B3=E8=AF=89=E6=9C=AA=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=BB=93=E6=9D=9F=E6=97=B6=E9=97=B4=E7=9A=84?= =?UTF-8?q?BUG=20User:=20=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E7=9A=84=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8=E4=BB=A5?= =?UTF-8?q?=E5=90=8E=E6=8F=90=E4=BA=A4=E6=95=B0=E6=8D=AE=E8=BD=AC=E4=B8=BA?= =?UTF-8?q?User=E7=B1=BB=E6=95=B0=E6=8D=AE=E7=BC=BA=E5=A4=B1BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/Enum/Select.java | 18 +++++++ .../shop/controller/AddressController.java | 35 +++++++++--- .../controller/AftApplicationController.java | 53 ++++++++++++++++--- .../com/shop/controller/UserController.java | 31 ++++------- .../main/java/com/shop/entity/Address.java | 11 ++-- .../java/com/shop/mapper/AddressMapper.java | 22 +++++--- .../java/com/shop/mapper/OrderMapper.java | 3 +- .../java/com/shop/service/AddressService.java | 3 +- .../java/com/shop/service/OrderService.java | 7 +-- .../main/resources/mapping/AddressMapper.xml | 25 ++++++--- .../mapping/AftApplicationMapper.xml | 7 ++- .../main/resources/mapping/OrderMapper.xml | 2 +- 12 files changed, 155 insertions(+), 62 deletions(-) create mode 100644 back-end_code/src/main/java/com/shop/Enum/Select.java diff --git a/back-end_code/src/main/java/com/shop/Enum/Select.java b/back-end_code/src/main/java/com/shop/Enum/Select.java new file mode 100644 index 0000000..e545a9f --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/Select.java @@ -0,0 +1,18 @@ +package com.shop.Enum; + +public enum Select { + Selected, + // 已选择 + UnSelected; + // 未选择 + Select() { + } + public static Select toenum(String str){ + if (str.equals("Selected")){ + return Selected; + }else if (str.equals("UnSelected")){ + return UnSelected; + }else + return null; + } +} diff --git a/back-end_code/src/main/java/com/shop/controller/AddressController.java b/back-end_code/src/main/java/com/shop/controller/AddressController.java index 7efb323..e9b2740 100644 --- a/back-end_code/src/main/java/com/shop/controller/AddressController.java +++ b/back-end_code/src/main/java/com/shop/controller/AddressController.java @@ -1,17 +1,13 @@ package com.shop.controller; +import com.shop.Enum.Select; import com.shop.entity.Address; -import com.shop.entity.Cart; -import com.shop.entity.Goods; import com.shop.service.AddressService; -import com.shop.service.CartService; -import com.shop.service.GoodsService; import com.shop.utils.Result; import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; import java.util.List; @RestController @@ -24,8 +20,14 @@ public class AddressController { @PostMapping("/Address") public Object addAddress(@RequestBody Address address){ try{ + if (addressService.searchUserSelectedAddress(address.getUsername()).isEmpty()) { + address.setSelected(Select.Selected); + } + else { + address.setSelected(Select.UnSelected); + } if (addressService.addAddress(address) < 1) - return Result.fail(); + return Result.fail("添加地址失败"); }catch (Exception e){ return Result.fail(e.toString()); } @@ -45,6 +47,19 @@ public class AddressController { } } + //根据买家username查找默认地址 + @GetMapping("/Selected/{username}") + public Object searchUserSelectedAddress(@PathVariable String username){ + try{ + JSONObject jsonObject = new JSONObject(); + List
addresses =addressService.searchUserSelectedAddress(username); + jsonObject.put("addresses",addresses); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(e.toString()); + } + } + //更新地址 @PutMapping("/Address") public Object updateAddress(@RequestBody Address address){ @@ -75,10 +90,14 @@ public class AddressController { public Object updateSelected(@PathVariable int address_id){ try { Address address = addressService.searcAddressById(address_id); - if (addressService.setUnselected(address.getUsername()) < 1) + List
addressList = addressService.searchUserSelectedAddress(address.getUsername()); + if (addressService.setUnselected(address.getUsername()) < 1 && !addressService.searchUserSelectedAddress(address.getUsername()).isEmpty()) return Result.fail("更新地址失败"); - if (addressService.setselected(address_id,address.getUsername()) < 1) + if (addressService.setSelected(address_id,address.getUsername()) < 1){ + addressService.setSelected(addressList.get(0).getAddress_id(),addressList.get(0).getUsername()); return Result.fail("更新地址失败"); + } + } catch (Exception e) { return Result.fail(e.toString()); } diff --git a/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java index 7a8ecfc..14f3f57 100644 --- a/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java +++ b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java @@ -6,11 +6,13 @@ import com.shop.entity.AftApplication; import com.shop.entity.Order; import com.shop.service.AftApplicationService; import com.shop.service.OrderService; +import com.shop.service.SFService; import com.shop.utils.Result; import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @@ -25,14 +27,50 @@ public class AftApplicationController { @PutMapping("/test") - public Object test(@RequestParam String aftApplication_buyerusername, @RequestParam(defaultValue = "null") String type, @RequestParam(defaultValue = "null") String state){ - System.out.println("aftApplication_buyerusername:"+aftApplication_buyerusername); - AftApplicationType aftApplication_type = AftApplicationType.toenum(type); - AftApplicationState aftApplication_state = AftApplicationState.toenum(state); - System.out.println("aftApplication_type:"+aftApplication_type); - System.out.println("aftApplication_state:"+aftApplication_state); - return null; + public Object test() throws UnsupportedEncodingException { + String msgData = "{\n" + + "\t\"cargoDetails\": [{\n" + + "\t\t\"amount\": \"3080.0\",\n" + + "\t\t\"count\": 2.0,\n" + + "\t\t\"name\": \"君宝牌地毯\",\n" + + "\t\t\"unit\": \"个\",\n" + + "\t\t\"volume\": \"0.0\",\n" + + "\t\t\"weight\": \"0.1\"\n" + + "\t}],\n" + + "\t\"contactInfoList\": [{\n" + + "\t\t\"address\": \"十堰市丹江口市公园路155号\",\n" + + "\t\t\"city\": \"十堰市\",\n" + + "\t\t\"company\": \"清雅轩保健品专营店\",\n" + + "\t\t\"contact\": \"张三丰\",\n" + + "\t\t\"contactType\": 1,\n" + + "\t\t\"county\": \"武当山风景区\",\n" + + "\t\t\"mobile\": \"17006805888\",\n" + + "\t\t\"province\": \"湖北省\"\n" + + "\t}, {\n" + + "\t\t\"address\": \"湖北省襄阳市襄城区环城东路122号\",\n" + + "\t\t\"city\": \"襄阳市\",\n" + + "\t\t\"contact\": \"郭襄阳\",\n" + + "\t\t\"county\": \"襄城区\",\n" + + "\t\t\"contactType\": \"2\",\n" + + "\t\t\"mobile\": \"18963828829\",\n" + + "\t\t\"province\": \"湖北省\"\n" + + "\t}],\n" + + "\t\"customsInfo\": {},\n" + + "\t\"expressTypeId\": \"2\",\n" + + "\t\"extraInfoList\": [],\n" + + "\t\"isOneselfPickup\": 0,\n" + + "\t\"language\": \"zh-CN\",\n" + + "\t\"orderId\": \"QIAO-20200618-00530\",\n" + + "\t\"parcelQty\": \"1\",\n" + + "\t\"payMethod\": \"1\",\n" + + "\t\"totalWeight\": \"6\",\n" + + "\t\"monthlyCard\":\"7551234567\"\n" + + "\t}"; + SFService sfService = new SFService(); + JSONObject jsonObject = (JSONObject) sfService.EXP_RECE_CREATE_ORDER(msgData); + return Result.ok(jsonObject); } + @PutMapping("/test1") public Object test1(@RequestBody AftApplication aftApplication){ System.out.println("aftApplication_buyerusername:"+aftApplication.getAftApplication_buyerusername()); @@ -48,6 +86,7 @@ public class AftApplicationController { if (aftApplicationService.isAftApplicationById(aftApplication.getOrder_id()) != null){ return Result.fail("重复添加"); } + aftApplication.setAftApplication_state(AftApplicationState.Process); if (aftApplicationService.addAftApplication(aftApplication) < 1) return Result.fail("添加申诉失败"); }catch (Exception e){ diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index f9b708a..b22584d 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -1,23 +1,13 @@ package com.shop.controller; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.shop.annotation.PassToken; import com.shop.annotation.UserLoginToken; import com.shop.entity.User; import com.shop.token.TokenService; -import com.shop.utils.JasyptUtil; -import net.minidev.json.JSONObject; +import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.shop.service.UserService; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import java.io.IOException; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -103,21 +93,22 @@ public class UserController { //用户注册 @PostMapping(value = "/registerUser") - public Object registerUser(@RequestBody User user){ + public Object registerUser(@RequestBody JSONObject jsonObject){ + System.out.println(jsonObject); String message = "error"; String info="注册成功"; - String username = user.getUserName(); - String password = user.getPassword(); - String nickname = user.getNickName(); + String username = jsonObject.getString("username"); + String password = jsonObject.getString("password"); + String nickname = jsonObject.getString("nickname"); int permission = 2; - String phonenumber = user.getPhonenumber(); - String address = user.getAddress(); - String realname = user.getRealname(); - String user_head = user.getUserHead(); + String phonenumber = jsonObject.getString("phonenumber"); + String address = jsonObject.getString("address"); + String realname = jsonObject.getString("realname"); + String user_head = jsonObject.getString("user_head"); if (user_head == null){ user_head = "http://cdn.souldays.top/image/2021-12-06-eb3ac6b8edac4612806b08f967b88963.jpg"; } - JSONObject jsonObject = new JSONObject(); + jsonObject = new JSONObject(); User newUser = new User(username,password,nickname,permission,phonenumber,address,realname,user_head); int result = userService.registerUser(newUser); if (result >= 1){ diff --git a/back-end_code/src/main/java/com/shop/entity/Address.java b/back-end_code/src/main/java/com/shop/entity/Address.java index 640e236..648fb0d 100644 --- a/back-end_code/src/main/java/com/shop/entity/Address.java +++ b/back-end_code/src/main/java/com/shop/entity/Address.java @@ -1,14 +1,17 @@ package com.shop.entity; +import com.shop.Enum.Select; + public class Address { private int address_id; private String username; private String realname; private String address; private String phonenumber; - private int selected; + private Select selected; - public Address(String username, String realname, String address, String phonenumber, int selected) { + public Address(int address_id, String username, String realname, String address, String phonenumber, Select selected) { + this.address_id = address_id; this.username = username; this.realname = realname; this.address = address; @@ -56,11 +59,11 @@ public class Address { this.phonenumber = phonenumber; } - public int getSelected() { + public Select getSelected() { return selected; } - public void setSelected(int selected) { + public void setSelected(Select selected) { this.selected = selected; } diff --git a/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java b/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java index 97e0b60..2305fea 100644 --- a/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java @@ -21,6 +21,13 @@ public interface AddressMapper { */ List
searchUserAddress(String username); + /** + * 查找买家默认地址 + * @param username + * @return + */ + List
searchUserSelectedAddress(String username); + /** *更新地址 * @param address @@ -42,18 +49,19 @@ public interface AddressMapper { * @param username * @return */ - int setselected(int address_id,String username); + int setSelected(int address_id,String username); - /** - *根据AddressId查询Address - * @param address_id - * @return - */ - Address searcAddressById(int address_id); /** *根据username修改Address不为默认地址 * @param username * @return */ int setUnselected(String username); + + /** + *根据AddressId查询Address + * @param address_id + * @return + */ + Address searcAddressById(int address_id); } diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 82fac62..60b38b5 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -260,9 +260,10 @@ public interface OrderMapper { * 卖家根据order_id(订单ID)同意退款 * @param order_id * @param seller_username + * @param finish_time * @return */ - int sellerAcceptAftApplication(int order_id,String seller_username); + int sellerAcceptAftApplication(int order_id,String seller_username,String finish_time); diff --git a/back-end_code/src/main/java/com/shop/service/AddressService.java b/back-end_code/src/main/java/com/shop/service/AddressService.java index e1c09af..3fb9e75 100644 --- a/back-end_code/src/main/java/com/shop/service/AddressService.java +++ b/back-end_code/src/main/java/com/shop/service/AddressService.java @@ -14,8 +14,9 @@ public class AddressService { public int addAddress(Address address){return addressMapper.addAddress(address); } public List
searchUserAddress(String username){ return addressMapper.searchUserAddress(username); } + public List
searchUserSelectedAddress(String username){ return addressMapper.searchUserSelectedAddress(username); } public int updateAddress(Address address){return addressMapper.updateAddress(address);} - public int setselected(int address_id,String username){return addressMapper.setselected(address_id,username);} + public int setSelected(int address_id,String username){return addressMapper.setSelected(address_id,username);} public Address searcAddressById(int address_id){return addressMapper.searcAddressById(address_id);} public int setUnselected(String username){return addressMapper.setUnselected(username);} public int deleteAddressByAddressId(String username,int address_id){return addressMapper.deleteAddressByAddressId(username,address_id);} diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index 64af4ea..09afcc5 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -2,13 +2,12 @@ package com.shop.service; import com.shop.entity.Goods; import com.shop.entity.Order; -import com.shop.entity.User; import com.shop.mapper.GoodsMapper; import com.shop.mapper.OrderMapper; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.format.annotation.DateTimeFormat; import org.springframework.stereotype.Service; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -103,6 +102,8 @@ public class OrderService { public List sellerSearchFinishOrder(String seller_username){return orderMapper.sellerSearchFinishOrder(seller_username);} public List sellerSearchRefundedOrder(String seller_username){return orderMapper.sellerSearchRefundedOrder(seller_username);} public List buyerSearchRefundedOrder(String buyer_username){return orderMapper.buyerSearchRefundedOrder(buyer_username);} - public int sellerAcceptAftApplication(int order_id,String seller_username){return orderMapper.sellerAcceptAftApplication(order_id,seller_username);} + public int sellerAcceptAftApplication(int order_id,String seller_username){ + String finish_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + return orderMapper.sellerAcceptAftApplication(order_id,seller_username,finish_time);} } diff --git a/back-end_code/src/main/resources/mapping/AddressMapper.xml b/back-end_code/src/main/resources/mapping/AddressMapper.xml index 76d1526..ec98899 100644 --- a/back-end_code/src/main/resources/mapping/AddressMapper.xml +++ b/back-end_code/src/main/resources/mapping/AddressMapper.xml @@ -7,7 +7,7 @@ - + @@ -47,7 +47,7 @@ #{phonenumber,jdbcType=VARCHAR}, - #{selected,jdbcType=INTEGER}, + #{selected,jdbcType=VARCHAR}, @@ -57,6 +57,11 @@ select * from address where username = #{username} + + + delete from address where addressId = #{address_id} and username = #{username} @@ -76,21 +81,29 @@ phonenumber = #{phonenumber,jdbcType=VARCHAR}, - selected = #{selected,jdbcType=INTEGER}, + selected = #{selected,jdbcType=VARCHAR}, where addressId = #{address_id,jdbcType=INTEGER} - - update address set selected = 1 where addressId = #{address_id,jdbcType=INTEGER} and username = #{username} and selected = 2 + + update address set where addressId = #{address_id,jdbcType=INTEGER} and username = #{username} and - update address set selected = 2 where addressId = #{address_id,jdbcType=INTEGER} and username = #{username} and selected = 1 + update address set where username = #{username} and + + + + + + diff --git a/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml b/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml index 3f294aa..bd68348 100644 --- a/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml +++ b/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml @@ -50,10 +50,9 @@ - - - 46, - + + #{order_id}, + #{aftApplication_buyerusername,jdbcType=VARCHAR}, diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index b0ae28e..1266a43 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -288,7 +288,7 @@ - update orders set state = 8 where orderId = #{order_id} and sellerUsername = #{seller_username} and state < 5 + update orders set state = 8 , finishTime = #{finish_time} where orderId = #{order_id} and sellerUsername = #{seller_username} and state < 5 -- Gitee From 1d970c94681e05939a0f1c8696f09b5d45bad4b3 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Mon, 25 Apr 2022 15:11:01 +0800 Subject: [PATCH 077/133] =?UTF-8?q?Address:=20=E6=96=B0=E5=A2=9E=E6=8E=A5?= =?UTF-8?q?=E5=8F=97JSONObject=E7=9A=84=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复添加地址接口中bug 修复查找默认地址返回值从List
变为Address 修复接口名拼写错误bug 新增查询新增地址接口 --- .../shop/controller/AddressController.java | 19 ++++++++--------- .../main/java/com/shop/entity/Address.java | 21 ++++++++++++++++++- .../java/com/shop/mapper/AddressMapper.java | 11 ++++++++-- .../java/com/shop/service/AddressService.java | 5 +++-- .../main/resources/mapping/AddressMapper.xml | 9 +++++++- 5 files changed, 49 insertions(+), 16 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AddressController.java b/back-end_code/src/main/java/com/shop/controller/AddressController.java index e9b2740..f695b34 100644 --- a/back-end_code/src/main/java/com/shop/controller/AddressController.java +++ b/back-end_code/src/main/java/com/shop/controller/AddressController.java @@ -20,7 +20,7 @@ public class AddressController { @PostMapping("/Address") public Object addAddress(@RequestBody Address address){ try{ - if (addressService.searchUserSelectedAddress(address.getUsername()).isEmpty()) { + if (addressService.searchUserSelectedAddress(address.getUsername()) == null) { address.setSelected(Select.Selected); } else { @@ -52,8 +52,8 @@ public class AddressController { public Object searchUserSelectedAddress(@PathVariable String username){ try{ JSONObject jsonObject = new JSONObject(); - List
addresses =addressService.searchUserSelectedAddress(username); - jsonObject.put("addresses",addresses); + Address address =addressService.searchUserSelectedAddress(username); + jsonObject.put("address",address); return Result.ok(jsonObject); }catch (Exception e){ return Result.fail(e.toString()); @@ -76,7 +76,7 @@ public class AddressController { @DeleteMapping("/{address_id}") public Object deleteAddressByAddressId(@PathVariable int address_id){ try { - Address address = addressService.searcAddressById(address_id); + Address address = addressService.searchAddressById(address_id); if (addressService.deleteAddressByAddressId(address.getUsername(),address_id) < 1) return Result.fail("删除地址失败"); } catch (Exception e) { @@ -89,19 +89,18 @@ public class AddressController { @PutMapping("/{address_id}") public Object updateSelected(@PathVariable int address_id){ try { - Address address = addressService.searcAddressById(address_id); - List
addressList = addressService.searchUserSelectedAddress(address.getUsername()); - if (addressService.setUnselected(address.getUsername()) < 1 && !addressService.searchUserSelectedAddress(address.getUsername()).isEmpty()) + Address address = addressService.searchAddressById(address_id); + Address addressSelected= addressService.searchUserSelectedAddress(address.getUsername()); + if (addressService.setUnselected(address.getUsername()) < 1 && !(addressService.searchUserSelectedAddress(address.getUsername()) == null)) return Result.fail("更新地址失败"); if (addressService.setSelected(address_id,address.getUsername()) < 1){ - addressService.setSelected(addressList.get(0).getAddress_id(),addressList.get(0).getUsername()); + addressService.setSelected(addressSelected.getAddress_id(),addressSelected.getUsername()); return Result.fail("更新地址失败"); } - } catch (Exception e) { return Result.fail(e.toString()); } - return Result.ok(); + return Result.ok("更新地址成功"); } diff --git a/back-end_code/src/main/java/com/shop/entity/Address.java b/back-end_code/src/main/java/com/shop/entity/Address.java index 648fb0d..97da670 100644 --- a/back-end_code/src/main/java/com/shop/entity/Address.java +++ b/back-end_code/src/main/java/com/shop/entity/Address.java @@ -1,14 +1,33 @@ package com.shop.entity; +import com.alibaba.fastjson.JSONObject; import com.shop.Enum.Select; +import java.util.Iterator; + public class Address { private int address_id; private String username; private String realname; private String address; private String phonenumber; - private Select selected; + private Select selected ; + + public Address(JSONObject jsonObject) { + Iterator objectIterator; + if (jsonObject.getInteger("address_id") != null) + this.address_id = jsonObject.getInteger("address_id"); + if (jsonObject.getString("username") != null) + this.username = jsonObject.getString("username"); + if (jsonObject.getString("realname") != null) + this.realname = jsonObject.getString("realname"); + if (jsonObject.getString("address") != null) + this.address = jsonObject.getString("address"); + if (jsonObject.getString("phonenumber") != null) + this.phonenumber = jsonObject.getString("phonenumber"); + if (jsonObject.getString("selected") != null) + this.selected = Select.toenum(jsonObject.getString("selected")); + } public Address(int address_id, String username, String realname, String address, String phonenumber, Select selected) { this.address_id = address_id; diff --git a/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java b/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java index 2305fea..08634c6 100644 --- a/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java @@ -26,7 +26,7 @@ public interface AddressMapper { * @param username * @return */ - List
searchUserSelectedAddress(String username); + Address searchUserSelectedAddress(String username); /** *更新地址 @@ -63,5 +63,12 @@ public interface AddressMapper { * @param address_id * @return */ - Address searcAddressById(int address_id); + Address searchAddressById(int address_id); + + /** + *根据Address查询Address + * @param address + * @return + */ + Address searchAddressByAddress(Address address); } diff --git a/back-end_code/src/main/java/com/shop/service/AddressService.java b/back-end_code/src/main/java/com/shop/service/AddressService.java index 3fb9e75..6fab768 100644 --- a/back-end_code/src/main/java/com/shop/service/AddressService.java +++ b/back-end_code/src/main/java/com/shop/service/AddressService.java @@ -14,10 +14,11 @@ public class AddressService { public int addAddress(Address address){return addressMapper.addAddress(address); } public List
searchUserAddress(String username){ return addressMapper.searchUserAddress(username); } - public List
searchUserSelectedAddress(String username){ return addressMapper.searchUserSelectedAddress(username); } + public Address searchUserSelectedAddress(String username){ return addressMapper.searchUserSelectedAddress(username); } public int updateAddress(Address address){return addressMapper.updateAddress(address);} public int setSelected(int address_id,String username){return addressMapper.setSelected(address_id,username);} - public Address searcAddressById(int address_id){return addressMapper.searcAddressById(address_id);} + public Address searchAddressById(int address_id){return addressMapper.searchAddressById(address_id);} public int setUnselected(String username){return addressMapper.setUnselected(username);} public int deleteAddressByAddressId(String username,int address_id){return addressMapper.deleteAddressByAddressId(username,address_id);} + public Address searchAddressByAddress(Address address){return addressMapper.searchAddressByAddress(address);} } diff --git a/back-end_code/src/main/resources/mapping/AddressMapper.xml b/back-end_code/src/main/resources/mapping/AddressMapper.xml index ec98899..015a005 100644 --- a/back-end_code/src/main/resources/mapping/AddressMapper.xml +++ b/back-end_code/src/main/resources/mapping/AddressMapper.xml @@ -98,10 +98,17 @@ - select * from address where addressId = #{address_id} + + + -- Gitee From 6c15cd26e709940fbca85ff96460dae98a3c9ec0 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Mon, 25 Apr 2022 15:19:04 +0800 Subject: [PATCH 078/133] =?UTF-8?q?Goods:=20=E4=BF=AE=E5=A4=8Ddescribe?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=90=8D=E6=8B=BC=E5=86=99=E9=94=99=E8=AF=AF?= =?UTF-8?q?=20=E9=87=8D=E6=9E=84=E5=95=86=E5=93=81=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E4=BB=8Eint=E8=BD=AC=E4=B8=BAenum=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=8E=A5=E5=8F=97JSONObject=E7=9A=84=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重构添加商品接口 重构修改商品接口 新增查询新增商品接口 --- .../main/java/com/shop/Enum/GoodState.java | 24 +++ .../com/shop/controller/GoodsController.java | 155 ++++++------------ .../src/main/java/com/shop/entity/Goods.java | 147 ++++++++--------- .../java/com/shop/mapper/GoodsMapper.java | 9 + .../java/com/shop/service/GoodsService.java | 1 + .../main/resources/mapping/GoodsMapper.xml | 25 +-- 6 files changed, 164 insertions(+), 197 deletions(-) create mode 100644 back-end_code/src/main/java/com/shop/Enum/GoodState.java diff --git a/back-end_code/src/main/java/com/shop/Enum/GoodState.java b/back-end_code/src/main/java/com/shop/Enum/GoodState.java new file mode 100644 index 0000000..52eb27b --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/GoodState.java @@ -0,0 +1,24 @@ +package com.shop.Enum; + +public enum GoodState { + Selling, + // 在售 + Sell_out, + // 售罄 + Sell_down; + // 下架 + + GoodState() { + } + public static GoodState toenum(String str){ + if (str.equals("Selling")){ + return Selling; + }else if (str.equals("Sell_out")){ + return Sell_out; + }else if (str.equals("Sell_down")){ + return Sell_down; + }else + return null; + } + +} diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 9953595..0873d84 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -1,31 +1,22 @@ package com.shop.controller; import com.shop.entity.*; -import com.shop.service.GOService; -import com.shop.service.GoodsService; -import com.shop.service.OrderService; -import com.shop.service.UploadImageService; +import com.shop.service.*; import com.shop.utils.Result; -import com.shop.utils.StringUtil; -import net.minidev.json.JSONObject; +import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.Map; @RestController @RequestMapping("/goods") public class GoodsController { - - @Autowired private GoodsService goodsService; @@ -35,39 +26,42 @@ public class GoodsController { @Autowired private GOService goService; + @Autowired + private SnapshotService snapshotService; + @Resource UploadImageService uploadImageService; //向Goods表中添加商品 - @PostMapping(value = "/addGoods") - public Object addGoods(@RequestBody Goods goods) { - String message = "error"; - String goods_name = goods.getGoods_name(); - String seller_username = "admin"; - int goods_stock =goods.getGoods_stock(); -// String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); - String goods_img = goods.getGoods_img(); - String goods_discribe = goods.getGoods_discribe(); - float goods_price = goods.getGoods_price(); - int goods_category = goods.getGoods_category(); - JSONObject jsonObject = new JSONObject(); - if (goods_name.length() >= 2 && goods_name.length() <= 20 && - goods_stock >= 0 && - goods_img.length() <= 2000 && - goods_discribe.length() >= 2 && goods_discribe.length() <= 2000 && - goods_price >= 0 && - goods_category >= 0 - ){ - Goods newGoods = new Goods(goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_category,goods_price); - int result = goodsService.addGoods( newGoods); - if (result >= 1) { - message = "success"; - }else { - message = "error"; + @PostMapping("/Good") + public Object addGoods(@RequestBody JSONObject jsonObject) { + String seller_username = jsonObject.getString("seller_username"); + Iterator objectIterator = jsonObject.getJSONArray("goods").iterator(); + JSONObject jb = null; + Goods good = null; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + jb = (JSONObject) objectIterator.next(); + good = new Goods(jb,seller_username); + if (good.getGoods_name().length() >= 2 && good.getGoods_name().length() <= 20 && + good.getGoods_stock() >= 0 && + good.getGoods_img().length() <= 2000 && + good.getGoods_describe().length() >= 2 && good.getGoods_describe().length() <= 2000 && + good.getGoods_price() >= 0 && + good.getGoods_category() >= 0 + ){ + if (goodsService.addGoods(good) >= 1) { + snapshotService.addSnapshot(goodsService.getNewItem(good.getGoods_name(),good.getGoods_img(),good.getGoods_describe())); + sb.append("商品: ").append(good.getGoods_name()).append(" 添加成功\n"); + continue; + }else { + sb.append("商品: ").append(good.getGoods_name()).append(" 添加失败\n"); + continue; + } } + } - jsonObject.put("message",message); - return jsonObject; + return Result.ok(sb.toString()); } //买家在goods表中查询goods详细信息 @@ -121,9 +115,7 @@ public class GoodsController { try{ JSONObject jsonObject = new JSONObject(); List goods = goodsService.searchWelcomeGoods(); - List stringList = orderService.searchSellingGoodsBuyerRealname(); jsonObject.put("goods",goods); - jsonObject.put("Strings",stringList); return Result.ok(jsonObject); }catch (Exception e){ return Result.fail(); @@ -166,76 +158,27 @@ public class GoodsController { public boolean isHaveSellingGoods(String username){return goodsService.isHaveSellingGoods(username);} //修改商品信息 - @PostMapping(value = "/updateGoods") - public Object updateGoods(@RequestBody Goods goods){ + @PutMapping("/Good") + public Object updateGoods(@RequestBody JSONObject jsonObject){ + Goods good = new Goods(jsonObject); String message = "error"; -// int item_id = Integer.parseInt(request.getParameter("item_id")); -// String goods_name = request.getParameter("goods_name"); -// String seller_username = "admin"; -// int goods_stock = Integer.parseInt(request.getParameter("goods_stock")); -// String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); -// String goods_img = request.getParameter("goods_img"); -// String goods_discribe = request.getParameter("goods_discribe"); -// int goods_category = Integer.parseInt(request.getParameter("goods_category")); -// float goods_price = Float.parseFloat(request.getParameter("goods_price")); -// // - int item_id = goods.getItem_id(); - String goods_name = goods.getGoods_name(); - String seller_username = "admin"; - int goods_stock =goods.getGoods_stock(); -// String goods_img = uploadImageService.uploadQNImg((FileInputStream) file.getInputStream(), StringUtil.getRandomImgName(file.getOriginalFilename())); - String goods_img = goods.getGoods_img(); - String goods_discribe = goods.getGoods_discribe(); - float goods_price = goods.getGoods_price(); - int goods_category = goods.getGoods_category(); - // - JSONObject jsonObject = new JSONObject(); - if (goods_name.length() >= 2 && goods_name.length() <= 20 && - goods_stock >= 0 && - goods_img.length() <= 2000 && - goods_discribe.length() >= 2 && goods_discribe.length() <= 2000 && - goods_price >= 0 && - goods_category >= 0 + if (good.getGoods_name().length() >= 2 && good.getGoods_name().length() <= 20 && + good.getGoods_stock() >= 0 && + good.getGoods_img().length() <= 2000 && + good.getGoods_describe().length() >= 2 && good.getGoods_describe().length() <= 2000 && + good.getGoods_price() >= 0 && + good.getGoods_category() >= 0 ){ - Goods newgoods = new Goods(item_id,goods_name,seller_username,goods_stock,goods_img,goods_discribe,goods_category,goods_price); - int result = goodsService.updateGoods(newgoods); - if (result >= 1) { - message = "success"; + if (goodsService.updateGoods(good) >= 1) { + snapshotService.addSnapshot(goodsService.getNewItem(good.getGoods_name(),good.getGoods_img(),good.getGoods_describe())); + message = "商品:"+good.getGoods_name()+"修改成功"; }else { - message = "error"; + message = "商品:"+good.getGoods_name()+"修改失败";; } + }else { + return Result.fail("商品:"+good.getGoods_name()+"数据不合法修改失败"); } - jsonObject.put("message",message); - return jsonObject; - } - - //查看冻结商品 - @GetMapping(value = "/searchFreezingGoods") - public Object searchFreezingGoods(@RequestParam String seller_username){ - String message = "error"; - JSONObject jsonObject = new JSONObject(); - List goodsList = goodsService.searchFreezingGoods(seller_username); - List list = new ArrayList(); - for (int i=0;i < goodsList.size();i++){ - Goods good = (Goods) goodsList.get(i); - GO go = goService.searchGOByItemId(good.getItem_id()); - Order order = orderService.searchOrderByOrderId(seller_username, go.getOrder_id()); - Order_Goods order_goods = new Order_Goods( - order.getOrder_id(), - order.getBuyer_realname(), - order.getBuyer_phonenumber(), - order.getBuyer_address(), - good.getItem_id(), - good.getGoods_name(), - good.getGoods_price(), - good.getGoods_img(), - good.getGoods_discribe()); - list.add(order_goods); - } - message = "success"; - jsonObject.put("message",message); - jsonObject.put("list",list); - return jsonObject; + return Result.ok(message); } //通过类别查询商品 diff --git a/back-end_code/src/main/java/com/shop/entity/Goods.java b/back-end_code/src/main/java/com/shop/entity/Goods.java index a79dcc8..b53e981 100644 --- a/back-end_code/src/main/java/com/shop/entity/Goods.java +++ b/back-end_code/src/main/java/com/shop/entity/Goods.java @@ -1,74 +1,69 @@ package com.shop.entity; +import com.alibaba.fastjson.JSONObject; +import com.shop.Enum.GoodState; + +import java.util.Iterator; + public class Goods { private int item_id; private String goods_name; private String seller_username; private int goods_stock; private String goods_img; - private String goods_discribe; + private String goods_describe; private int goods_category; private float goods_price; - private int goods_state;//int型 1表示在售,2表示冻结,3表示下架 + private GoodState goods_state; public Goods() { super(); } - public Goods(String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, float goods_price) { - this.goods_name = goods_name; - this.seller_username = seller_username; - this.goods_stock = goods_stock; - this.goods_img = goods_img; - this.goods_discribe = goods_discribe; - this.goods_price = goods_price; - } - - public int getGoods_category() { - return goods_category; - } - - public void setGoods_category(int goods_category) { - this.goods_category = goods_category; - } - - public Goods(int item_id, String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_category, float goods_price) { + public Goods(int item_id, String goods_name, String seller_username, int goods_stock, String goods_img, String goods_describe, int goods_category, float goods_price, GoodState goods_state) { this.item_id = item_id; this.goods_name = goods_name; this.seller_username = seller_username; this.goods_stock = goods_stock; this.goods_img = goods_img; - this.goods_discribe = goods_discribe; + this.goods_describe = goods_describe; this.goods_category = goods_category; this.goods_price = goods_price; - } - - public Goods(int item_id, String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, float goods_price, int goods_state) { - this.item_id = item_id; - this.goods_name = goods_name; - this.seller_username = seller_username; - this.goods_stock = goods_stock; - this.goods_img = goods_img; - this.goods_discribe = goods_discribe; - this.goods_price = goods_price; this.goods_state = goods_state; } - public Goods(int item_id, String goods_name, String seller_username, String goods_img, String goods_discribe, float goods_price) { - this.item_id = item_id; - this.goods_name = goods_name; + public Goods(JSONObject jsonObject) { + Iterator objectIterator; + if (jsonObject.getInteger("item_id") != null) + this.item_id = jsonObject.getInteger("item_id"); + if (jsonObject.getString("goods_name") != null) + this.goods_name = jsonObject.getString("goods_name"); + if (jsonObject.getString("seller_username") != null) + this.seller_username = jsonObject.getString("seller_username"); + if (jsonObject.getInteger("goods_stock") != null) + this.goods_stock = jsonObject.getInteger("goods_stock"); + if (jsonObject.getString("goods_img") != null) + this.goods_img = jsonObject.getString("goods_img"); + if (jsonObject.getString("goods_describe") != null) + this.goods_describe = jsonObject.getString("goods_describe"); + if (jsonObject.getInteger("goods_category") != null) + this.goods_category = jsonObject.getInteger("goods_category"); + if (jsonObject.getFloat("goods_price") != null) + this.goods_price = jsonObject.getFloatValue("goods_price"); + if (jsonObject.getString("goods_state") != null) + this.goods_state = GoodState.toenum(jsonObject.getString("goods_state")); + } + + public Goods(JSONObject jsonObject, String seller_username) { + Iterator objectIterator; + this.item_id = jsonObject.getInteger("item_id"); + this.goods_name = jsonObject.getString("goods_name"); this.seller_username = seller_username; - this.goods_img = goods_img; - this.goods_discribe = goods_discribe; - this.goods_price = goods_price; - } - - public float getGoods_price() { - return goods_price; - } - - public void setGoods_price(float goods_price) { - this.goods_price = goods_price; + this.goods_stock = jsonObject.getInteger("goods_stock"); + this.goods_img = jsonObject.getString("goods_img"); + this.goods_describe = jsonObject.getString("goods_describe"); + this.goods_category = jsonObject.getInteger("goods_category"); + this.goods_price = jsonObject.getFloatValue("goods_price"); } public int getItem_id() { @@ -79,14 +74,6 @@ public class Goods { this.item_id = item_id; } - public int getGoods_stock() { - return goods_stock; - } - - public void setGoods_stock(int goods_stock) { - this.goods_stock = goods_stock; - } - public String getGoods_name() { return goods_name; } @@ -103,6 +90,14 @@ public class Goods { this.seller_username = seller_username; } + public int getGoods_stock() { + return goods_stock; + } + + public void setGoods_stock(int goods_stock) { + this.goods_stock = goods_stock; + } + public String getGoods_img() { return goods_img; } @@ -111,45 +106,35 @@ public class Goods { this.goods_img = goods_img; } - public String getGoods_discribe() { - return goods_discribe; + public String getGoods_describe() { + return goods_describe; } - public void setGoods_discribe(String goods_discribe) { - this.goods_discribe = goods_discribe; + public void setGoods_describe(String goods_describe) { + this.goods_describe = goods_describe; } - public int getGoods_state() { - return goods_state; + public int getGoods_category() { + return goods_category; } - public void setGoods_state(int goods_state) { - this.goods_state = goods_state; + public void setGoods_category(int goods_category) { + this.goods_category = goods_category; } - public Goods(String goods_name, String seller_username, int goods_stock, String goods_img, String goods_discribe, int goods_category, float goods_price) { - this.goods_name = goods_name; - this.seller_username = seller_username; - this.goods_stock = goods_stock; - this.goods_img = goods_img; - this.goods_discribe = goods_discribe; - this.goods_category = goods_category; + public float getGoods_price() { + return goods_price; + } + + public void setGoods_price(float goods_price) { this.goods_price = goods_price; } + public GoodState getGoods_state() { + return goods_state; + } - @Override - public String toString() { - return "Goods{" + - "item_id=" + item_id + - ", goods_name='" + goods_name + '\'' + - ", seller_username='" + seller_username + '\'' + - ", goods_stock=" + goods_stock + - ", goods_img='" + goods_img + '\'' + - ", goods_discribe='" + goods_discribe + '\'' + - ", goods_category=" + goods_category + - ", goods_price=" + goods_price + - ", goods_state=" + goods_state + - '}'; + public void setGoods_state(GoodState goods_state) { + this.goods_state = goods_state; } } diff --git a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java index f660172..9c715a8 100644 --- a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java @@ -14,6 +14,15 @@ public interface GoodsMapper { */ int addGoods(Goods Goods); + /** + * 获取item_id(商品ID) + * @param goods_name + * @param goods_img + * @param goods_describe + * @return + */ + Goods getNewItem(String goods_name, String goods_img,String goods_describe); + /** * 根据item_id(商品ID)向Godds表中查询详细信息 * @param item_id diff --git a/back-end_code/src/main/java/com/shop/service/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java index ab79246..d9095f5 100644 --- a/back-end_code/src/main/java/com/shop/service/GoodsService.java +++ b/back-end_code/src/main/java/com/shop/service/GoodsService.java @@ -20,6 +20,7 @@ public class GoodsService { public int addGoods(Goods Goods){ return goodsMapper.addGoods(Goods); } + public Goods getNewItem(String goods_name, String goods_img,String goods_describe){ return goodsMapper.getNewItem(goods_name,goods_img,goods_describe);} public Goods searchGoods(int item_id){ return goodsMapper.searchGoods(item_id); } public int updateGoodsState(String seller_username,int item_id,int new_state){return goodsMapper.updateGoodsState(seller_username,item_id, new_state);} public List searchSellingGoods(){return goodsMapper.searchSellingGoods();}//一页8条 diff --git a/back-end_code/src/main/resources/mapping/GoodsMapper.xml b/back-end_code/src/main/resources/mapping/GoodsMapper.xml index 5932718..9e2df59 100644 --- a/back-end_code/src/main/resources/mapping/GoodsMapper.xml +++ b/back-end_code/src/main/resources/mapping/GoodsMapper.xml @@ -7,10 +7,10 @@ - + - + @@ -30,8 +30,8 @@ goodsImg, - - goodsDiscribe, + + goodsDescribe, goodsCategory, @@ -56,8 +56,8 @@ #{goods_img,jdbcType=VARCHAR}, - - #{goods_discribe,jdbcType=VARCHAR}, + + #{goods_describe,jdbcType=VARCHAR}, #{goods_category,jdbcType=VARCHAR}, @@ -65,10 +65,15 @@ #{goods_price,jdbcType=REAL}, - 1, + , + + + + select * + from orderdetail ,snapshot + where orderId = #{order_id} and orderdetail.snapshotId = snapshot.snapshotId + + + + + + + + + diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 1266a43..6ceedbb 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -1,192 +1,158 @@ - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - update orders set state = 1 where orderId = #{order_id} and sellerUsername = #{seller_username} - - - - - update orders set state = 4 where itemId = #{item_id} and state = 5 and sellerUsername = #{seller_username} - - - - - update orders set state = 6 where orderId = #{order_id} and state = 1 and sellerUsername = #{seller_username} - - - - - - - - - - - - - - - - + insert into orders - - - itemId, - - - goodsName, - - - goodsImg, - - - goodsDiscribe, - - - goodsPrice, - sellerUsername, buyerUsername, - - buyerRealname, - - - buyerPhonenumber, - - - buyerAddress, - - - buySum, + + addressId, buyAmount, - - state, - createTime, - - #{item_id,jdbcType=INTEGER}, - - - #{goods_name,jdbcType=VARCHAR}, - - - #{goods_img,jdbcType=VARCHAR}, - - - #{goods_discribe,jdbcType=VARCHAR}, - - - #{goods_price,jdbcType=REAL}, - #{seller_username,jdbcType=VARCHAR}, #{buyer_username,jdbcType=VARCHAR}, - - #{buyer_realname,jdbcType=VARCHAR}, - - - #{buyer_phonenumber,jdbcType=VARCHAR}, - - - #{buyer_address ,jdbcType=VARCHAR}, - - - #{buy_sum ,jdbcType=INTEGER}, + + #{address.address_id,jdbcType=INTEGER}, #{buy_amount ,jdbcType=REAL}, - - #{state ,jdbcType=INTEGER}, - #{create_time ,jdbcType=VARCHAR}, + + + + + + + + + + + + + + + + + + update orders + set + where orderId = #{order_id} and buyerUsername = #{buyer_username} and + + - - update orders set state = 2 where orderId = #{order_id} and state = 1 and sellerUsername = #{seller_username} + + update orders + set + where orderId = #{order_id} and sellerUsername = #{seller_username} and diff --git a/back-end_code/src/main/resources/mapping/SnapshotMapper.xml b/back-end_code/src/main/resources/mapping/SnapshotMapper.xml new file mode 100644 index 0000000..fc517ac --- /dev/null +++ b/back-end_code/src/main/resources/mapping/SnapshotMapper.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + insert into snapshot + + + + itemId, + + + goodsName, + + + goodsImg, + + + goodsDescribe, + + + goodsCategory, + + + goodsPrice, + + + snapshotTime, + + + + + + + #{item_id,jdbcType=INTEGER}, + + + #{goods_name,jdbcType=VARCHAR}, + + + #{goods_img,jdbcType=VARCHAR}, + + + #{goods_describe,jdbcType=VARCHAR}, + + + #{goods_category,jdbcType=INTEGER}, + + + #{goods_price,jdbcType=REAL}, + + + #{snapshot_time,jdbcType=VARCHAR}, + + + + + + + delete from snapshot where snapshotId = #{snapshot_id} + + + + + update snapshot + + + goodsName = #{goods_name,jdbcType=VARCHAR}, + + + goodsImg = #{goods_img,jdbcType=VARCHAR}, + + + goodsDescribe = #{goods_describe,jdbcType=VARCHAR}, + + + goodsCategory = #{goods_category,jdbcType=INTEGER}, + + + goodsPrice = #{goods_price,jdbcType=REAL}, + + + goodsState = #{goods_state,jdbcType=VARCHAR}, + + + where snapshotId = #{snapshot_id,jdbcType=INTEGER} + + + + + + + + + + + + -- Gitee From 36b9da6f48300dcf13bc55430c21b4862dbf3651 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Mon, 25 Apr 2022 15:39:02 +0800 Subject: [PATCH 080/133] =?UTF-8?q?=E8=A1=A5=E5=85=85OrderController?= =?UTF-8?q?=E4=B8=ADimport=E7=BC=BA=E5=A4=B1=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/shop/controller/OrderController.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 747e93b..e4fdb44 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -1,14 +1,10 @@ package com.shop.controller; -import com.shop.entity.GO; -import com.shop.entity.Goods; -import com.shop.entity.Order; -import com.shop.entity.User; -import com.shop.mapper.GoodsMapper; +import com.shop.Enum.GoodState; +import com.shop.entity.*; import com.shop.service.*; import com.shop.utils.Result; -import net.minidev.json.JSONArray; -import net.minidev.json.JSONObject; +import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -- Gitee From 30a77dbf2975f2efd02a27d12c5bd98968601128 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Fri, 6 May 2022 18:41:48 +0800 Subject: [PATCH 081/133] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AftApplicationController.java | 53 ------------------- 1 file changed, 53 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java index 14f3f57..6d18685 100644 --- a/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java +++ b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java @@ -6,7 +6,6 @@ import com.shop.entity.AftApplication; import com.shop.entity.Order; import com.shop.service.AftApplicationService; import com.shop.service.OrderService; -import com.shop.service.SFService; import com.shop.utils.Result; import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; @@ -25,58 +24,6 @@ public class AftApplicationController { @Autowired private OrderService orderService; - - @PutMapping("/test") - public Object test() throws UnsupportedEncodingException { - String msgData = "{\n" + - "\t\"cargoDetails\": [{\n" + - "\t\t\"amount\": \"3080.0\",\n" + - "\t\t\"count\": 2.0,\n" + - "\t\t\"name\": \"君宝牌地毯\",\n" + - "\t\t\"unit\": \"个\",\n" + - "\t\t\"volume\": \"0.0\",\n" + - "\t\t\"weight\": \"0.1\"\n" + - "\t}],\n" + - "\t\"contactInfoList\": [{\n" + - "\t\t\"address\": \"十堰市丹江口市公园路155号\",\n" + - "\t\t\"city\": \"十堰市\",\n" + - "\t\t\"company\": \"清雅轩保健品专营店\",\n" + - "\t\t\"contact\": \"张三丰\",\n" + - "\t\t\"contactType\": 1,\n" + - "\t\t\"county\": \"武当山风景区\",\n" + - "\t\t\"mobile\": \"17006805888\",\n" + - "\t\t\"province\": \"湖北省\"\n" + - "\t}, {\n" + - "\t\t\"address\": \"湖北省襄阳市襄城区环城东路122号\",\n" + - "\t\t\"city\": \"襄阳市\",\n" + - "\t\t\"contact\": \"郭襄阳\",\n" + - "\t\t\"county\": \"襄城区\",\n" + - "\t\t\"contactType\": \"2\",\n" + - "\t\t\"mobile\": \"18963828829\",\n" + - "\t\t\"province\": \"湖北省\"\n" + - "\t}],\n" + - "\t\"customsInfo\": {},\n" + - "\t\"expressTypeId\": \"2\",\n" + - "\t\"extraInfoList\": [],\n" + - "\t\"isOneselfPickup\": 0,\n" + - "\t\"language\": \"zh-CN\",\n" + - "\t\"orderId\": \"QIAO-20200618-00530\",\n" + - "\t\"parcelQty\": \"1\",\n" + - "\t\"payMethod\": \"1\",\n" + - "\t\"totalWeight\": \"6\",\n" + - "\t\"monthlyCard\":\"7551234567\"\n" + - "\t}"; - SFService sfService = new SFService(); - JSONObject jsonObject = (JSONObject) sfService.EXP_RECE_CREATE_ORDER(msgData); - return Result.ok(jsonObject); - } - - @PutMapping("/test1") - public Object test1(@RequestBody AftApplication aftApplication){ - System.out.println("aftApplication_buyerusername:"+aftApplication.getAftApplication_buyerusername()); - return null; - } - //添加申诉 @PostMapping("/AftApplication") public Object addAftApplication(@RequestBody AftApplication aftApplication){ -- Gitee From 6c336ae0cd3bc5aeed0ab81f1a56603d984e9e70 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sat, 7 May 2022 09:08:13 +0800 Subject: [PATCH 082/133] =?UTF-8?q?Order=20=E9=87=8D=E6=9E=84Order?= =?UTF-8?q?=E7=B1=BB=E4=B8=AD=E8=AE=A2=E5=8D=95=E7=8A=B6=E6=80=81,?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=80=80=E6=AC=BE=E7=B1=BB=E5=9E=8B=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重构买家查询待备货订单接口; 重构卖家查询待备货订单接口; 重构卖家完成备货订单接口; 重构买家查询待发货订单接口; 重构买家修改待发货订单收货人信息接口; 重构卖家查询待发货订单接口; 重构卖家发货订单接口; 重构卖家查询待收货订单接口; 重构买家查询待收货订单接口; 重构买家完成交易接口; 重构买家取消订单接口; 重构卖家取消订单接口; 重构卖家查询退款订单接口; 重构卖家查询拒绝退款订单接口; 新增卖家设置订单总金额接口; --- .../main/java/com/shop/Enum/OrderState.java | 14 +- .../main/java/com/shop/Enum/RefundState.java | 18 + .../com/shop/controller/OrderController.java | 428 +++++++++--------- .../src/main/java/com/shop/entity/Order.java | 15 +- .../java/com/shop/mapper/OrderMapper.java | 105 +++-- .../java/com/shop/service/OrderService.java | 45 +- .../main/resources/mapping/OrderMapper.xml | 194 +++++--- 7 files changed, 475 insertions(+), 344 deletions(-) create mode 100644 back-end_code/src/main/java/com/shop/Enum/RefundState.java diff --git a/back-end_code/src/main/java/com/shop/Enum/OrderState.java b/back-end_code/src/main/java/com/shop/Enum/OrderState.java index cbce691..aa56820 100644 --- a/back-end_code/src/main/java/com/shop/Enum/OrderState.java +++ b/back-end_code/src/main/java/com/shop/Enum/OrderState.java @@ -15,14 +15,8 @@ public enum OrderState { // 交易成功 SCancel, // 商家取消订单 - BCancel, + BCancel; // 买家取消订单 - AftProcess, - // 售后处理中 - Refund_Ok, - // 退款成功 - Refund_Fail; - // 退款失败 OrderState() { } @@ -43,12 +37,6 @@ public enum OrderState { return SCancel; }else if (str.equals("BCancel")){ return BCancel; - }else if (str.equals("AftProcess")){ - return AftProcess; - }else if (str.equals("Refund_Ok")){ - return Refund_Ok; - }else if (str.equals("Refund_Fail")){ - return Refund_Fail; }else return null; } diff --git a/back-end_code/src/main/java/com/shop/Enum/RefundState.java b/back-end_code/src/main/java/com/shop/Enum/RefundState.java new file mode 100644 index 0000000..f85a8df --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/RefundState.java @@ -0,0 +1,18 @@ +package com.shop.Enum; + +public enum RefundState { + Success, + // 退款成功 + Fail; + // 退款失败 + RefundState() { + } + public static RefundState toenum(String str){ + if (str.equals("Success")){ + return Success; + }else if (str.equals("Fail")){ + return Fail; + }else + return null; + } +} diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index e4fdb44..c7c437f 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -8,10 +8,6 @@ import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -47,8 +43,6 @@ public class OrderController { //用户下单 @PostMapping("/Orders") public Object addOrder(@RequestBody JSONObject jsonObject){ - - Order order = new Order(jsonObject); boolean cart = jsonObject.getBoolean("cart"); order.setCreate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); @@ -89,7 +83,8 @@ public class OrderController { } sb.append("商品: ").append(good.getGoods_name()).append(" 下单成功\n"); } - orderService.setAmountByOrderId(order.getOrder_id(), buy_amount); + if (jsonObject.getFloat("buy_amount") == null) + orderService.setAmountByOrderId(order.getOrder_id(),order.getSeller_username(), buy_amount); return Result.ok(sb.toString()); } @@ -197,275 +192,268 @@ public class OrderController { //买家查询待备货的订单 @GetMapping("/buyer/unpicked") - public Object buyerSearchUnpickOrder(@RequestParam String buyer_username){ - try{ - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.buyerSearchUnpickOrder(buyer_username); - jsonObject.put("orders",orderList); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(); - } + public Object buyerSearchUnpickedOrder(@RequestBody JSONObject jsonObject){ + String buyer_username = jsonObject.getString("buyer_username"); + List orderList = orderService.buyerSearchUnpickedOrder(buyer_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); } //卖家查询待备货的订单 @GetMapping("/seller/unpicked") - public Object sellerSearchUnpickOrder(@RequestParam String seller_username){ - try{ - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.sellerSearchUnpickOrder(seller_username); - jsonObject.put("orders",orderList); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(); - } + public Object sellerSearchUnpickedOrder(@RequestBody JSONObject jsonObject){ + String seller_username = jsonObject.getString("seller_username"); + List orderList = orderService.sellerSearchUnpickedOrder(seller_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); } //卖家完成备货订单 @PutMapping(value = "/seller/pick") - public Object pickOrder(@RequestBody Order[] orders){ - for (Order order:orders) { - if(orderService.pickOrder(order.getSeller_username(),order.getOrder_id()) < 1) { - return Result.fail("订单号为"+order.getOrder_id()+"的"+order.getGoods_name()+"完成备货失败,后续订单操作被迫中止"); + public Object sellerPickOrder(@RequestBody JSONObject jsonObject){ + Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); + String seller_username = jsonObject.getString("seller_username"); + Integer order_id; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + order_id = jb.getInteger("order_id"); + if(orderService.sellerPickOrder(seller_username,order_id) < 1) { + sb.append("订单号: ").append(order_id).append(" 备货失败\n"); + continue; + }else{ + sb.append("订单号: ").append(order_id).append(" 备货成功\n"); + continue; } } - return Result.ok(); + return Result.ok(sb); } //买家查询待发货的订单 @GetMapping("/buyer/undelivered") - public Object buyerSearchUndeliveredOrder(@RequestParam String buyer_username){ - try{ - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.buyerSearchUndeliverOrder(buyer_username); - jsonObject.put("orders",orderList); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(); - } + public Object buyerSearchUndeliveredOrder(@RequestBody JSONObject jsonObject){ + String buyer_username = jsonObject.getString("buyer_username"); + List orderList = orderService.buyerSearchUndeliveredOrder(buyer_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + } + + //卖家查询待发货的订单 + @GetMapping("/seller/undelivered") + public Object sellerSearchUndeliveredOrder(@RequestBody JSONObject jsonObject){ + String seller_username = jsonObject.getString("seller_username"); + List orderList = orderService.sellerSearchUndeliveredOrder(seller_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); } //买家修改待发货的订单收货人信息 @PutMapping(value = "/buyer/undelivered") - public Object buyerUpdateUndeliveredOrder(@RequestBody Map request){ - try { - JSONObject jsonObject = new JSONObject(); - String buyer_username = request.get("buyer_username"); - String buyer_realname = request.get("buyer_realname"); - String buyer_phonenumber = request.get("buyer_phonenumber"); - String buyer_address = request.get("buyer_address"); - int order_id = Integer.parseInt(request.get("order_id")); - Order order = new Order(order_id,buyer_username,buyer_realname,buyer_phonenumber,buyer_address); - System.out.println(order); - int result = orderService.buyerUpdateUndeliverOrder(order); - if (result >= 1){ - return Result.ok(); - }else { - return Result.fail(); - } - }catch (Exception e){ - return Result.fail(); + public Object buyerUpdateUndeliveredOrder(@RequestBody JSONObject jsonObject){ + Order order = new Order(jsonObject); + if (jsonObject.getJSONObject("address").getInteger("address_id") == null){ + Address address = new Address(jsonObject.getJSONObject("address")); + addressService.addAddress(address); + address = addressService.searchAddressByAddress(address); + System.out.println(address); + order.setAddress(address); } - } - - //卖家查询待发货的订单 - @GetMapping("/seller/Undelivered") - public Object sellerSearchUndeliveredOrder(@RequestParam String seller_username){ - try{ - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.sellerSearchUndeliverOrder(seller_username); - jsonObject.put("orders",orderList); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(); + if (orderService.buyerUpdateUndeliveredOrder(order) >= 1){ + return Result.ok("订单:"+order.getOrder_id()+"地址修改成功\n"); + }else { + return Result.fail("订单:"+order.getOrder_id()+"地址修改失败\n"); } } //卖家发货订单 @PutMapping(value = "/seller/deliver") - public Object deliverOrder(@RequestBody Order[] orders){ - for (Order order:orders) { - if(orderService.deliverOrder(order.getSeller_username(),order.getOrder_id()) < 1) { - return Result.fail("订单号为"+order.getOrder_id()+"的"+order.getGoods_name()+"发货失败,后续订单操作被迫中止"); + public Object sellerDeliverOrder(@RequestBody JSONObject jsonObject){ + Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); + String seller_username = jsonObject.getString("seller_username"); + Integer order_id; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + order_id = jb.getInteger("order_id"); + if(orderService.sellerDeliverOrder(seller_username,order_id) < 1) { + sb.append("订单号: ").append(order_id).append(" 发货失败\n"); + continue; + }else{ + sb.append("订单号: ").append(order_id).append(" 发货成功\n"); + continue; } } - return Result.ok(); - } - - //卖家查询待收货的订单 - @GetMapping("/seller/Unarrive") - public Object sellerSearchUnarriveOrder(@RequestParam String seller_username){ - try{ - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.sellerSearchUnarriveOrder(seller_username); - jsonObject.put("orders",orderList); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(); - } + return Result.ok(sb); } //买家查询待收货的订单 - @GetMapping("/buyer/Unarrive") - public Object buyerSearchUnarriveOrder(@RequestParam String buyer_username){ - try{ - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.sellerSearchUnarriveOrder(buyer_username); - jsonObject.put("orders",orderList); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(); - } + @GetMapping("/buyer/unarrived") + public Object buyerSearchUnarrivedOrder(@RequestBody JSONObject jsonObject){ + String buyer_username = jsonObject.getString("buyer_username"); + List orderList = orderService.buyerSearchUnarrivedOrder(buyer_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); } + //卖家查询待收货的订单 + @GetMapping("/seller/unarrived") + public Object sellerSearchUnarrivedOrder(@RequestBody JSONObject jsonObject){ + String seller_username = jsonObject.getString("seller_username"); + List orderList = orderService.sellerSearchUnarrivedOrder(seller_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + } //买家根据order_id(订单ID)完成交易 @PutMapping(value = "/buyer/finish") - public Object finishOrder(@RequestBody Map request) { - try { - String buyer_username = request.get("buyer_username"); - int order_id = Integer.parseInt(request.get("order_id")); - JSONObject jsonObject = new JSONObject(); - String finish_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - int result = orderService.finishOrder(buyer_username, order_id, finish_time); - if (result >= 1) { - return Result.ok(); - } else { - return Result.fail(); + public Object buyerFinishOrder(@RequestBody JSONObject jsonObject) { + Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); + String buyer_username = jsonObject.getString("buyer_username"); + Integer order_id; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + order_id = jb.getInteger("order_id"); + if(orderService.buyerFinishOrder(buyer_username, order_id, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())) < 1) { + sb.append("订单号: ").append(order_id).append(" 确认收货失败\n"); + continue; + }else{ + sb.append("订单号: ").append(order_id).append(" 确认收货成功\n"); + continue; } - }catch (Exception e) { - return Result.fail(); } - } + return Result.ok(sb); - //卖家根据order_id(订单ID)取消订单 - @PutMapping(value = "/seller/cancel") - public Object sellerCancelOrder(@RequestBody Order[] orders){ - for (Order order:orders) { - if(orderService.sellerCancelOrder(order.getOrder_id(),order.getSeller_username()) < 1) { - return Result.fail("订单号为"+order.getOrder_id()+"的"+order.getGoods_name()+"取消失败,后续订单操作被迫中止"); - } - } - return Result.ok(); } //买家根据order_id(订单ID)取消订单 @PutMapping(value = "/buyer/cancel") - public Object buyerCancelOrder(@RequestBody Map request){ - try { - String buyer_username = request.get("buyer_username"); - int order_id = Integer.parseInt(request.get("order_id")); - JSONObject jsonObject = new JSONObject(); - goService.deleteGOByOrderId(order_id); - int result = orderService.buyerCancelOrder(order_id,buyer_username); - if (result >= 1) { - return Result.ok(); - } else { - return Result.fail(); + public Object buyerCancelOrder(@RequestBody JSONObject jsonObject) { + Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); + String buyer_username = jsonObject.getString("buyer_username"); + Integer order_id; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + order_id = jb.getInteger("order_id"); + if(orderService.buyerCancelOrder(buyer_username, order_id) < 1) { + sb.append("订单号: ").append(order_id).append(" 买家取消订单失败\n"); + continue; + }else{ + sb.append("订单号: ").append(order_id).append(" 买家取消订单成功\n"); + continue; } - }catch (Exception e) { - return Result.fail(); } + return Result.ok(sb); } - - //买家查询未完成的订单 - @GetMapping("/buyer/unfinished") - public Object buyerSearchUnfinishedOrder(@RequestParam String buyer_username){ - try{ - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.buyerSearchUnfinishOrder(buyer_username); - jsonObject.put("orders",orderList); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(); + //卖家根据order_id(订单ID )取消订单 + @PutMapping(value = "/seller/cancel") + public Object sellerCancelOrder(@RequestBody JSONObject jsonObject) { + Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); + String seller_username = jsonObject.getString("seller_username"); + Integer order_id; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + order_id = jb.getInteger("order_id"); + if(orderService.sellerCancelOrder(seller_username, order_id) < 1) { + sb.append("订单号: ").append(order_id).append(" 卖家取消订单失败\n"); + continue; + }else{ + sb.append("订单号: ").append(order_id).append(" 卖家取消订单成功\n"); + continue; + } } + return Result.ok(sb); } + //买家查询售后处理中的订单 + /*@GetMapping("/buyer/dealing") + public Object buyerSearchDealingOrder(@RequestBody JSONObject jsonObject){ + String buyer_username = jsonObject.getString("buyer_username"); + List orderList = orderService.buyerSearchDealingOrder(buyer_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }*/ - //买家查询已完成的订单 - @GetMapping("/buyer/finished") - public Object buyerSearchFinishOrder(@RequestParam String buyer_username){ - try{ - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.buyerSearchFinishOrder(buyer_username); - jsonObject.put("orders",orderList); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(); - } - } - - //卖家查询已完成的订单 - @GetMapping("/seller/finished") - public Object sellerSearchFinishOrder(@RequestParam String seller_username){ - try{ - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.sellerSearchFinishOrder(seller_username); - jsonObject.put("orders",orderList); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(); - } - } + //卖家查询售后处理中的订单 + /*@GetMapping("/seller/dealing") + public Object sellerSearchDealingOrder(@RequestBody JSONObject jsonObject){ + String seller_username = jsonObject.getString("seller_username"); + List orderList = orderService.sellerSearchDealingOrder(seller_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }*/ + //买家查询售后处理的订单 + /*@GetMapping("/buyer/aftApplication") + public Object buyerSearchAfterOrder(@RequestBody JSONObject jsonObject){ + String buyer_username = jsonObject.getString("buyer_username"); + List orderList = orderService.buyerSearchAfterOrder(buyer_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }*/ + //卖家查询售后处理的订单 + /*@GetMapping("/seller/aftApplication") + public Object sellerSearchAfterOrder(@RequestBody JSONObject jsonObject){ + String seller_username = jsonObject.getString("seller_username"); + List orderList = orderService.sellerSearchAfterOrder(seller_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }*/ - //意向购买者下单 - @PostMapping("/buyer/orders") - public Object addOrder(@RequestBody Order[] data){ - for (Order order:data) { - Goods good = goodsService.searchGoods(order.getItem_id()); - if (good.getGoods_state() != 1){ - return Result.fail("存在非在售商品:"+good.getGoods_name()); - } - if (order.getBuy_sum() > good.getGoods_stock()) { - return Result.fail("商品:"+good.getGoods_name()+"购买数量超出库存"); - } - order.setGoods_name(good.getGoods_name()); - order.setGoods_discribe(good.getGoods_discribe()); - order.setGoods_price(good.getGoods_price()); - order.setSeller_username(good.getSeller_username()); - order.setBuy_amount(order.getBuy_sum()*good.getGoods_price()); - order.setGoods_img(good.getGoods_img()); - order.setState(1); - if (order.getBuyer_phonenumber().length() != 11 && order.getBuyer_address().length() < 2 && order.getBuyer_address().length() > 100) { - return Result.fail("用户信息输入有误"); - } - order.setCreate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - if(orderService.addOrder(order) < 1) { - return Result.fail("商品:"+good.getGoods_name()+"下单失败,后续下单被迫中止"); - } else { - cartService.deleteCart(order.getBuyer_username(), order.getItem_id()); - goodsService.updateGoodStock(good.getItem_id(),good.getGoods_stock()-order.getBuy_sum()); - } - } - return Result.ok(); + //卖家查询同意退款的订单 + @GetMapping("/seller/aft_ok") + public Object sellerSearchAfterOkrOrder(@RequestBody JSONObject jsonObject){ + String seller_username = jsonObject.getString("seller_username"); + List orderList = orderService.sellerSearchAfterOkrOrder(seller_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); } - //买家查询已退款的订单 - @GetMapping("/buyer/refunded") - public Object buyerSearchRefundedOrder(@RequestParam String buyer_username){ - try{ - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.buyerSearchRefundedOrder(buyer_username); - jsonObject.put("orders",orderList); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(); - } + //卖家查询拒绝退款的订单 + @GetMapping("/seller/aft_fail") + public Object sellerSearchAfterFailOrder(@RequestBody JSONObject jsonObject){ + String seller_username = jsonObject.getString("seller_username"); + List orderList = orderService.sellerSearchAfterFailOrder(seller_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); } - //卖家查询已退款的订单 - @GetMapping("/seller/refunded") - public Object sellerSearchRefundedOrder(@RequestParam String seller_username){ - try{ - JSONObject jsonObject = new JSONObject(); - List orderList = orderService.sellerSearchRefundedOrder(seller_username); - jsonObject.put("orders",orderList); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(); + //卖家根据order_id(订单ID)设置订单总金额 + @PutMapping(value = "/seller/amount") + public Object setAmountByOrderId(@RequestBody JSONObject jsonObject) { + String seller_username = jsonObject.getString("seller_username"); + Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); + Integer order_id; + Float buy_amount; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + order_id = jb.getInteger("order_id"); + buy_amount = jb.getFloatValue("buy_amount"); + if(orderService.setAmountByOrderId(order_id, seller_username, buy_amount) < 1) { + sb.append("订单号: ").append(order_id).append(" 设置金额失败\n"); + continue; + }else{ + sb.append("订单号: ").append(order_id).append(" 设置金额成功\n"); + continue; + } } + return Result.ok(sb); } } diff --git a/back-end_code/src/main/java/com/shop/entity/Order.java b/back-end_code/src/main/java/com/shop/entity/Order.java index 952a3ae..3924f40 100644 --- a/back-end_code/src/main/java/com/shop/entity/Order.java +++ b/back-end_code/src/main/java/com/shop/entity/Order.java @@ -1,9 +1,9 @@ package com.shop.entity; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.shop.Enum.OrderState; import com.shop.Enum.PackageState; +import com.shop.Enum.RefundState; import java.util.Iterator; import java.util.List; @@ -17,6 +17,7 @@ public class Order { private Float buy_amount;//总价 private String seller_username; private OrderState order_state; + private RefundState refund_state; // 申诉状态 private PackageState package_state; private String package_number; private String create_time; @@ -52,12 +53,14 @@ public class Order { this.address = new Address(jsonObject.getJSONObject("address")); if (jsonObject.getString("remark") != null) this.remark = jsonObject.getString("remark"); - if (jsonObject.getInteger("buy_amount") != null) + if (jsonObject.getFloat("buy_amount") != null) this.buy_amount = jsonObject.getFloatValue("buy_amount"); if (jsonObject.getString("seller_username") != null) this.seller_username = jsonObject.getString("seller_username"); if (jsonObject.getString("order_state") != null) this.order_state = OrderState.toenum(jsonObject.getString("order_state")); + if (jsonObject.getString("refund_state") != null) + this.refund_state = RefundState.toenum(jsonObject.getString("refund_state")); if (jsonObject.getString("package_state") != null) this.package_state = PackageState.toenum(jsonObject.getString("package_state")); if (jsonObject.getString("package_number") != null) @@ -132,6 +135,14 @@ public class Order { this.seller_username = seller_username; } + public RefundState getRefund_state() { + return refund_state; + } + + public void setRefund_state(RefundState refund_state) { + this.refund_state = refund_state; + } + public PackageState getPackage_state() { return package_state; } diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index f8f381c..e45891d 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -90,63 +90,63 @@ public interface OrderMapper { * @param buyer_username * @return */ - List buyerSearchUnpickOrder(String buyer_username); + List buyerSearchUnpickedOrder(String buyer_username); /** * 卖家查询待备货的订单 * @param seller_username * @return */ - List sellerSearchUnpickOrder(String seller_username); + List sellerSearchUnpickedOrder(String seller_username); /** * 卖家完成备货订单 * @param order_id * @return */ - int pickOrder(String seller_username,int order_id); + Integer sellerPickOrder(String seller_username,Integer order_id); /** * 买家查询待发货的订单 * @param buyer_username * @return */ - List buyerSearchUndeliverOrder(String buyer_username); + List buyerSearchUndeliveredOrder(String buyer_username); /** - * 买家修改待发货的订单收货人信息 - * @param order + * 卖家查询待发货的订单 + * @param seller_username * @return */ - int buyerUpdateUndeliverOrder(Order order); + List sellerSearchUndeliveredOrder(String seller_username); /** - * 卖家查询待发货的订单 - * @param seller_username + * 买家修改待发货的订单收货人信息 + * @param order * @return */ - List sellerSearchUndeliverOrder(String seller_username); + Integer buyerUpdateUndeliveredOrder(Order order); /** * 卖家发货订单 * @param order_id * @return */ - int deliverOrder(String seller_username,int order_id); + Integer sellerDeliverOrder(String seller_username,Integer order_id); /** * 卖家查询待收货的订单 * @param seller_username * @return */ - List sellerSearchUnarriveOrder(String seller_username); + List sellerSearchUnarrivedOrder(String seller_username); /** * 买家查询待收货的订单 * @param buyer_username * @return */ - List buyerSearchUnarriveOrder(String buyer_username); + List buyerSearchUnarrivedOrder(String buyer_username); /** * 买家根据order_id(订单ID)完成交易 @@ -154,68 +154,105 @@ public interface OrderMapper { * @param buyer_username * @return */ - int finishOrder(String buyer_username,int order_id,String finish_time); + Integer buyerFinishOrder(String buyer_username,Integer order_id,String finish_time); /** - * 卖家根据order_id(订单ID)取消订单 + * 买家根据order_id(订单ID)取消订单 + * @param buyer_username * @param order_id - * @param seller_username * @return */ - int sellerCancelOrder(int order_id,String seller_username); + Integer buyerCancelOrder(String buyer_username, Integer order_id); /** - * 买家根据order_id(订单ID)取消订单 + * 卖家根据order_id(订单ID)取消订单 + * @param seller_username * @param order_id - * @param buyer_username * @return */ - int buyerCancelOrder(int order_id,String buyer_username); + Integer sellerCancelOrder(String seller_username, Integer order_id); + /** - * 买家查询未完成的订单 + * 买家根据order_id(订单ID)申请订单售后 * @param buyer_username + * @param order_id * @return */ - List buyerSearchUnfinishOrder(String buyer_username); + Integer buyerSubmitAftApplication(String buyer_username, Integer order_id); /** - * 买家查询已完成的订单 + * 买家查询售后处理中的订单 * @param buyer_username * @return */ - List buyerSearchFinishOrder(String buyer_username); + List buyerSearchDealingOrder(String buyer_username); /** - * 卖家查询已完成的订单 + * 卖家查询售后处理中的订单 * @param seller_username * @return */ - List sellerSearchFinishOrder(String seller_username); + List sellerSearchDealingOrder(String seller_username); /** - * 卖家查询待已退款的订单 + * 卖家根据order_id(订单ID)同意订单退款 * @param seller_username + * @param order_id * @return */ - List sellerSearchRefundedOrder(String seller_username); + Integer sellerAcceptAftApplication(String seller_username, Integer order_id,String finish_time); /** - * 买家查询已退款的订单 + * 卖家根据order_id(订单ID)拒绝订单退款 + * @param seller_username + * @param order_id + * @return + */ + Integer sellerRefuseAftApplication(String seller_username, Integer order_id,String finish_time); + + /** + * 买家查询售后处理的订单 * @param buyer_username * @return */ - List buyerSearchRefundedOrder(String buyer_username); + List buyerSearchAfterOrder(String buyer_username); /** - * 卖家根据order_id(订单ID)同意退款 - * @param order_id + * 卖家查询售后处理的订单 + * @param seller_username + * @return + */ + List sellerSearchAfterOrder(String seller_username); + + /** + * 卖家查询同意退款的订单 + * @param seller_username + * @return + */ + List sellerSearchAfterOkrOrder(String seller_username); + + /** + * 卖家查询拒绝退款的订单 * @param seller_username - * @param finish_time * @return */ - int sellerAcceptAftApplication(int order_id,String seller_username,String finish_time); + List sellerSearchAfterFailOrder(String seller_username); + /** + * 根据查找最新订单 + * @param order + * @return + */ + Order searchNewOrder(Order order); + /** + *根据OrderId设置Amount + * @param order_id + * @param seller_username + * @param buy_amount + * @return + */ + Integer setAmountByOrderId(Integer order_id,String seller_username,Float buy_amount); } diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index 242659b..ca6ce28 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -42,26 +42,27 @@ public class OrderService { public Integer sellerConfirmOrder(String seller_username,Integer order_id){return orderMapper.sellerConfirmOrder(seller_username,order_id);} public List buyerSearchUnconfirmedOrder(String buyer_username){return orderMapper.buyerSearchUnconfirmedOrder(buyer_username);} public List sellerSearchUnconfirmedOrder(String seller_username){return orderMapper.sellerSearchUnconfirmedOrder(seller_username);} - public int confirmOrder(String seller_username,int order_id){return orderMapper.confirmOrder(seller_username,order_id);} - public List buyerSearchUnpickOrder(String buyer_username){return orderMapper.buyerSearchUnpickOrder(buyer_username);} - public List sellerSearchUnpickOrder(String seller_username){return orderMapper.sellerSearchUnpickOrder(seller_username);} - public int pickOrder(String seller_username,int order_id){return orderMapper.pickOrder(seller_username,order_id);} - public List buyerSearchUndeliverOrder(String buyer_username){return orderMapper.buyerSearchUndeliverOrder(buyer_username);} - public int buyerUpdateUndeliverOrder(Order order){return orderMapper.buyerUpdateUndeliverOrder(order);} - public List sellerSearchUndeliverOrder(String seller_username){return orderMapper.sellerSearchUndeliverOrder(seller_username);} - public int deliverOrder(String seller_username,int order_id){return orderMapper.deliverOrder(seller_username,order_id);} - public List sellerSearchUnarriveOrder(String seller_username){return orderMapper.sellerSearchUnarriveOrder(seller_username);} - public List buyerSearchUnarriveOrder(String buyer_username){return orderMapper.buyerSearchUnarriveOrder(buyer_username);} - public int finishOrder(String buyer_username,int order_id,String finish_time){ return orderMapper.finishOrder(buyer_username,order_id,finish_time); } - public int sellerCancelOrder(int order_id,String seller_username){return orderMapper.sellerCancelOrder(order_id,seller_username);} - public int buyerCancelOrder(int order_id,String buyer_username){return orderMapper.buyerCancelOrder(order_id,buyer_username);} - public List buyerSearchUnfinishOrder(String buyer_username){return orderMapper.buyerSearchUnfinishOrder(buyer_username);} - public List buyerSearchFinishOrder(String buyer_username){return orderMapper.buyerSearchFinishOrder(buyer_username);} - public List sellerSearchFinishOrder(String seller_username){return orderMapper.sellerSearchFinishOrder(seller_username);} - public List sellerSearchRefundedOrder(String seller_username){return orderMapper.sellerSearchRefundedOrder(seller_username);} - public List buyerSearchRefundedOrder(String buyer_username){return orderMapper.buyerSearchRefundedOrder(buyer_username);} - public int sellerAcceptAftApplication(int order_id,String seller_username){ - String finish_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - return orderMapper.sellerAcceptAftApplication(order_id,seller_username,finish_time);} - + public List buyerSearchUnpickedOrder(String buyer_username){return orderMapper.buyerSearchUnpickedOrder(buyer_username);} + public List sellerSearchUnpickedOrder(String seller_username){return orderMapper.sellerSearchUnpickedOrder(seller_username);} + public Integer sellerPickOrder(String seller_username,Integer order_id){return orderMapper.sellerPickOrder(seller_username,order_id);} + public List buyerSearchUndeliveredOrder(String buyer_username){return orderMapper.buyerSearchUndeliveredOrder(buyer_username);} + public List sellerSearchUndeliveredOrder(String seller_username){return orderMapper.sellerSearchUndeliveredOrder(seller_username);} + public Integer buyerUpdateUndeliveredOrder(Order order){return orderMapper.buyerUpdateUndeliveredOrder(order);} + public Integer sellerDeliverOrder(String seller_username,Integer order_id){return orderMapper.sellerDeliverOrder(seller_username,order_id);} + public List sellerSearchUnarrivedOrder(String seller_username){return orderMapper.sellerSearchUnarrivedOrder(seller_username);} + public List buyerSearchUnarrivedOrder(String buyer_username){return orderMapper.buyerSearchUnarrivedOrder(buyer_username);} + public Integer buyerFinishOrder(String buyer_username,Integer order_id,String finish_time){ return orderMapper.buyerFinishOrder(buyer_username,order_id,finish_time); } + public Integer buyerCancelOrder(String buyer_username,Integer order_id){return orderMapper.buyerCancelOrder(buyer_username,order_id);} + public Integer sellerCancelOrder(String seller_username,Integer order_id){return orderMapper.sellerCancelOrder(seller_username,order_id);} +// public Integer buyerSubmitAftApplication(String buyer_username, Integer order_id){ return orderMapper.buyerSubmitAftApplication(buyer_username, order_id);}; + public List buyerSearchDealingOrder(String buyer_username){return orderMapper.buyerSearchDealingOrder(buyer_username);} + public List sellerSearchDealingOrder(String seller_username){ return orderMapper.sellerSearchDealingOrder(seller_username);} + public Integer sellerAcceptAftApplication(String seller_username, Integer order_id){ return orderMapper.sellerAcceptAftApplication(seller_username, order_id,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}; + public Integer sellerRefuseAftApplication(String seller_username, Integer order_id){ return orderMapper.sellerRefuseAftApplication(seller_username, order_id,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}; + public List buyerSearchAfterOrder(String buyer_username){return orderMapper.buyerSearchAfterOrder(buyer_username);} + public List sellerSearchAfterOrder(String seller_username){ return orderMapper.sellerSearchAfterOrder(seller_username);} + public List sellerSearchAfterOkrOrder(String seller_username){ return orderMapper.sellerSearchAfterOkrOrder(seller_username);} + public List sellerSearchAfterFailOrder(String seller_username){ return orderMapper.sellerSearchAfterFailOrder(seller_username);} + public Order searchNewOrder(Order order){ return orderMapper.searchNewOrder(order); } + public Integer setAmountByOrderId(Integer order_id,String seller_username,Float buy_amount){ return orderMapper.setAmountByOrderId(order_id,seller_username,buy_amount);} } diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 6ceedbb..3f8b30f 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -37,6 +37,7 @@ + @@ -156,105 +157,192 @@ - + select * + from orders ,address ,orderdetail ,snapshot + where orders.buyerUsername = #{buyer_username} and orderdetail.orderId = orders.orderId and orders.addressId = address.addressId and orderdetail.snapshotId = snapshot.snapshotId + and - + select * + from orders ,address ,orderdetail ,snapshot + where orders.sellerUsername = #{seller_username} and orderdetail.orderId = orders.orderId and orders.addressId = address.addressId and orderdetail.snapshotId = snapshot.snapshotId + and - - update orders set state = 3 where orderId = #{order_id} and state = 2 and sellerUsername = #{seller_username} + + update orders + set + where orderId = #{order_id} and sellerUsername = #{seller_username} and - + select * + from orders ,address ,orderdetail ,snapshot + where orders.buyerUsername = #{buyer_username} and orderdetail.orderId = orders.orderId and orders.addressId = address.addressId and orderdetail.snapshotId = snapshot.snapshotId + and + + + + - + update orders - - buyerPhonenumber = #{buyer_phonenumber,jdbcType=VARCHAR}, - - - buyerAddress = #{buyer_address,jdbcType=VARCHAR}, - - - buyerRealname = #{buyer_realname,jdbcType=VARCHAR}, + + addressId = #{address.address_id,jdbcType=INTEGER}, - where orderId = #{order_id} and state = 3 and buyerUsername = #{buyer_username} + where orderId = #{order_id} and buyerUsername = #{buyer_username} + and - - - - - update orders set state = 4 where orderId = #{order_id} and state = 3 and sellerUsername = #{seller_username} + + update orders + set + where orderId = #{order_id} and sellerUsername = #{seller_username} and - - + select * + from orders ,address ,orderdetail ,snapshot + where orders.buyerUsername = #{buyer_username} and orderdetail.orderId = orders.orderId and orders.addressId = address.addressId and orderdetail.snapshotId = snapshot.snapshotId + and - + select * + from orders ,address ,orderdetail ,snapshot + where orders.sellerUsername = #{seller_username} and orderdetail.orderId = orders.orderId and orders.addressId = address.addressId and orderdetail.snapshotId = snapshot.snapshotId + and - - update orders set state = 5 , finishTime = #{finish_time} where orderId = #{order_id} and state = 4 and buyerUsername = #{buyer_username} + + update orders + set + where orderId = #{order_id} and buyerUsername = #{buyer_username} and + + + + + update orders + set + where orderId = #{order_id} and buyerUsername = #{buyer_username} + and - update orders set state = 6 where orderId = #{order_id} and sellerUsername = #{seller_username} and state < 4 + update orders + set + where orderId = #{order_id} and sellerUsername = #{seller_username} + and - - - update orders set state = 7 where orderId = #{order_id} and buyerUsername = #{buyer_username} and state < 5 + + + + update orders + set + where orderId = #{order_id} and buyerUsername = #{buyer_username} - - + select * + from orders ,address ,orderdetail ,snapshot + where orders.buyerUsername = #{buyer_username} and orderdetail.orderId = orders.orderId and orders.addressId = address.addressId and orderdetail.snapshotId = snapshot.snapshotId + and + + + + + + + update orders + set ,finishTime = #{finish_time} + where orderId = #{order_id} and sellerUsername = #{seller_username} + + + + + update orders + set ,finishTime = #{finish_time} + where orderId = #{order_id} and sellerUsername = #{seller_username} + + - + select * + from orders ,address ,orderdetail ,snapshot + where orders.buyerUsername = #{buyer_username} and orderdetail.orderId = orders.orderId and orders.addressId = address.addressId and orderdetail.snapshotId = snapshot.snapshotId + and + + + + + + + - - + select * + from orders ,address ,orderdetail ,snapshot + where orders.sellerUsername = #{seller_username} and orderdetail.orderId = orders.orderId and orders.addressId = address.addressId and orderdetail.snapshotId = snapshot.snapshotId + and - - + select * + from orders ,address ,orderdetail ,snapshot + where orders.sellerUsername = #{seller_username} and orderdetail.orderId = orders.orderId and orders.addressId = address.addressId and orderdetail.snapshotId = snapshot.snapshotId + and - - + select * from orders + where buyerUsername = #{buyer_username} and addressId = #{address.address_id} + and sellerUsername = #{seller_username} and createTime = #{create_time} + order by orderId DESC limit 1 - - - update orders set state = 8 , finishTime = #{finish_time} where orderId = #{order_id} and sellerUsername = #{seller_username} and state < 5 + + + update orders set buyAmount = #{buy_amount} + where orderId = #{order_id} and sellerUsername = #{seller_username} and -- Gitee From a9c136b764b96f57399e31047193ebded615313f Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sat, 7 May 2022 09:12:06 +0800 Subject: [PATCH 083/133] =?UTF-8?q?AftApplication=20=E6=96=B0=E5=A2=9EJSON?= =?UTF-8?q?Object=E7=9A=84=E6=9E=84=E9=80=A0=E6=96=B9=E6=B3=95=20=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E7=94=B3=E8=AF=89=E7=B1=BB=E5=9E=8B=20=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E7=94=B3=E8=AF=89=E7=8A=B6=E6=80=81=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重构添加申诉接口; 重构买家查询申诉接口; 重构卖家查询申诉接口; 重构买家修改申诉接口; 重构买家取消申诉接口; 重构卖家同意申诉接口; 重构卖家拒绝申诉接口; --- .../com/shop/Enum/AftApplicationState.java | 17 ++- .../com/shop/Enum/AftApplicationType.java | 10 +- .../controller/AftApplicationController.java | 113 ++++++++---------- .../java/com/shop/entity/AftApplication.java | 31 +++++ .../com/shop/mapper/AftApplicationMapper.java | 27 ++++- .../shop/service/AftApplicationService.java | 6 +- .../mapping/AftApplicationMapper.xml | 60 ++++++---- 7 files changed, 161 insertions(+), 103 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/Enum/AftApplicationState.java b/back-end_code/src/main/java/com/shop/Enum/AftApplicationState.java index 03ac63b..4a606fb 100644 --- a/back-end_code/src/main/java/com/shop/Enum/AftApplicationState.java +++ b/back-end_code/src/main/java/com/shop/Enum/AftApplicationState.java @@ -1,17 +1,24 @@ package com.shop.Enum; public enum AftApplicationState { - Process, // 处理中 - Finish, // 已完成 - Cancel; // 已关闭 + Process, + // 处理中 + Accept, + // 同意 + Refuse, + // 拒绝 + Cancel; + // 已关闭 AftApplicationState() { } public static AftApplicationState toenum(String str){ if (str.equals("Process")){ return Process; - }else if (str.equals("Finish")){ - return Finish; + }else if (str.equals("Accept")){ + return Accept; + }else if (str.equals("Refuse")){ + return Refuse; }else if (str.equals("Cancel")){ return Cancel; }else diff --git a/back-end_code/src/main/java/com/shop/Enum/AftApplicationType.java b/back-end_code/src/main/java/com/shop/Enum/AftApplicationType.java index 124ec2a..1c56024 100644 --- a/back-end_code/src/main/java/com/shop/Enum/AftApplicationType.java +++ b/back-end_code/src/main/java/com/shop/Enum/AftApplicationType.java @@ -1,8 +1,10 @@ package com.shop.Enum; public enum AftApplicationType { - Refund, //退款 - UnRefund; //不退款 + Refund, + //退款 + Return; + //退货 AftApplicationType() { } @@ -10,8 +12,8 @@ public enum AftApplicationType { public static AftApplicationType toenum(String str){ if (str.equals("Refund")){ return Refund; - }else if (str.equals("UnRefund")){ - return UnRefund; + }else if (str.equals("Return")){ + return Return; }else return null; } diff --git a/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java index 6d18685..44acc03 100644 --- a/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java +++ b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java @@ -11,7 +11,6 @@ import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @@ -26,100 +25,84 @@ public class AftApplicationController { //添加申诉 @PostMapping("/AftApplication") - public Object addAftApplication(@RequestBody AftApplication aftApplication){ - JSONObject jsonObject = new JSONObject(); + public Object addAftApplication(@RequestBody JSONObject jsonObject){ + Order order = orderService.searchOrderByOrderId(jsonObject.getInteger("order_id")); + AftApplication aftApplication = new AftApplication(jsonObject); aftApplication.setCreate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - try{ + aftApplication.setAftApplication_buyerusername(order.getBuyer_username()); + aftApplication.setAftApplication_sellerusername(order.getSeller_username()); if (aftApplicationService.isAftApplicationById(aftApplication.getOrder_id()) != null){ return Result.fail("重复添加"); } - aftApplication.setAftApplication_state(AftApplicationState.Process); if (aftApplicationService.addAftApplication(aftApplication) < 1) return Result.fail("添加申诉失败"); - }catch (Exception e){ - return Result.fail(e.toString()); - } - Order order = orderService.searchOrderByOrderId(aftApplication.getAftApplication_sellerusername(),aftApplication.getOrder_id()); + order = orderService.searchOrderByOrderId(aftApplication.getOrder_id()); jsonObject.put("order",order); return Result.ok(jsonObject); } //买家根据aftApplication_buyerusername,aftApplication_type,aftApplication_state查找申诉 @PutMapping("/buyer") - public Object searchBuyerAftApplication(@RequestParam String buyerusername, @RequestParam(defaultValue = "null") String type, @RequestParam(defaultValue = "null") String state){ - try{ - JSONObject jsonObject = new JSONObject(); - String aftApplication_buyerusername = buyerusername; - AftApplicationType aftApplication_type = AftApplicationType.toenum(type); - AftApplicationState aftApplication_state = AftApplicationState.toenum(state); - List aftApplicationes =aftApplicationService.searchBuyerAftApplication(aftApplication_buyerusername,aftApplication_type,aftApplication_state); - jsonObject.put("aftApplicationes",aftApplicationes); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(e.toString()); - } + public Object searchBuyerAftApplication(@RequestBody JSONObject jsonObject){ + String aftApplication_buyerusername = jsonObject.getString("buyer_username"); + AftApplicationType aftApplication_type = AftApplicationType.toenum(jsonObject.getString("type")); + AftApplicationState aftApplication_state = AftApplicationState.toenum(jsonObject.getString("state")); + List aftApplications =aftApplicationService.searchBuyerAftApplication(aftApplication_buyerusername,aftApplication_type,aftApplication_state); + jsonObject.clear(); + jsonObject.put("aftApplications",aftApplications); + return Result.ok(jsonObject); } //卖家根据aftApplication_buyerusername,aftApplication_type,aftApplication_state查找申诉 @PutMapping("/seller") - public Object searchSellerAftApplication(@RequestParam String sellerusername, @RequestParam(defaultValue = "null") String type, @RequestParam(defaultValue = "null") String state){ - try{ - JSONObject jsonObject = new JSONObject(); - String aftApplication_sellerusername = sellerusername; - AftApplicationType aftApplication_type = AftApplicationType.toenum(type); - AftApplicationState aftApplication_state = AftApplicationState.toenum(state); - List aftApplicationes =aftApplicationService.searchSellerAftApplication(aftApplication_sellerusername,aftApplication_type,aftApplication_state); - jsonObject.put("aftApplicationes",aftApplicationes); - return Result.ok(jsonObject); - }catch (Exception e){ - return Result.fail(e.toString()); - } + public Object searchSellerAftApplication(@RequestBody JSONObject jsonObject){ + String aftApplication_sellerusername = jsonObject.getString("seller_username"); + AftApplicationType aftApplication_type = AftApplicationType.toenum(jsonObject.getString("type")); + AftApplicationState aftApplication_state = AftApplicationState.toenum(jsonObject.getString("state")); + List aftApplications =aftApplicationService.searchSellerAftApplication(aftApplication_sellerusername,aftApplication_type,aftApplication_state); + jsonObject.clear(); + jsonObject.put("aftApplications",aftApplications); + return Result.ok(jsonObject); } //买家修改申诉 @PutMapping("/update") - public Object updateAftApplication(@RequestBody AftApplication aftApplication){ - try { - if (aftApplicationService.updateAftApplication(aftApplication) < 1) - return Result.fail("更新申诉失败"); - } catch (Exception e) { - return Result.fail(e.toString()); - } + public Object updateAftApplication(@RequestBody JSONObject jsonObject){ + AftApplication aftApplication = new AftApplication(jsonObject); + if (aftApplicationService.updateAftApplication(aftApplication) < 1) + return Result.fail("更新申诉失败"); return Result.ok(); } //买家取消申诉 @PutMapping("/cancel") - public Object cancelAftApplication(@RequestParam int aftApplication_id,@RequestParam String buyerusername){ - try { - AftApplication aftApplication = new AftApplication(); - aftApplication.setAftApplication_id(aftApplication_id); - aftApplication.setAftApplication_buyerusername(buyerusername); - if (aftApplicationService.cancelAftApplication(aftApplication) < 1) - return Result.fail("更新申诉失败"); - } catch (Exception e) { - return Result.fail(e.toString()); - } + public Object cancelAftApplication(@RequestBody JSONObject jsonObject){ + AftApplication aftApplication = new AftApplication(jsonObject); + aftApplication.setFinish_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + if (aftApplicationService.cancelAftApplication(aftApplication) < 1) + return Result.fail("更新申诉失败"); return Result.ok(); } //卖家同意申诉 @PutMapping("/accept") - public Object acceptAftApplication(@RequestParam int aftApplication_id,@RequestParam String sellerusername){ - try { - AftApplication aftApplication = aftApplicationService.searcAftApplicationById(aftApplication_id); - aftApplication.setAftApplication_id(aftApplication_id); - aftApplication.setAftApplication_sellerusername(sellerusername); - aftApplication.setFinish_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - if (aftApplicationService.acceptAftApplication(aftApplication) < 1) - return Result.fail("更新申诉失败"); - if (orderService.sellerAcceptAftApplication(aftApplication.getOrder_id(),sellerusername) < 1){ - aftApplicationService.acceptAftApplicationBack(aftApplication); - return Result.fail("同意申诉失败"); - } - } catch (Exception e) { - return Result.fail(e.toString()); - } + public Object acceptAftApplication(@RequestBody JSONObject jsonObject){ + AftApplication aftApplication = new AftApplication(jsonObject); + aftApplication.setFinish_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + if (aftApplicationService.acceptAftApplication(aftApplication) < 1 + && orderService.sellerAcceptAftApplication(aftApplication.getAftApplication_sellerusername(),aftApplication.getOrder_id()) < 1) + return Result.fail("同意申诉失败"); + return Result.ok(); + } + + //卖家拒绝申诉 + @PutMapping("/refuse") + public Object refuseAftApplication(@RequestBody JSONObject jsonObject){ + AftApplication aftApplication = new AftApplication(jsonObject); + aftApplication.setFinish_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + if (aftApplicationService.refuseAftApplication(aftApplication) < 1 + && orderService.sellerRefuseAftApplication(aftApplication.getAftApplication_sellerusername(),aftApplication.getOrder_id()) < 1) + return Result.fail("拒绝申诉失败"); return Result.ok(); } diff --git a/back-end_code/src/main/java/com/shop/entity/AftApplication.java b/back-end_code/src/main/java/com/shop/entity/AftApplication.java index 46986c4..b6bc8c8 100644 --- a/back-end_code/src/main/java/com/shop/entity/AftApplication.java +++ b/back-end_code/src/main/java/com/shop/entity/AftApplication.java @@ -1,8 +1,12 @@ package com.shop.entity; +import com.alibaba.fastjson.JSONObject; import com.shop.Enum.AftApplicationState; import com.shop.Enum.AftApplicationType; import com.shop.Enum.PackageState; +import com.shop.service.OrderService; + +import java.util.Iterator; public class AftApplication { private Integer aftApplication_id; @@ -20,6 +24,33 @@ public class AftApplication { public AftApplication() { } + public AftApplication(JSONObject jsonObject) { + Iterator objectIterator; + Order order = new OrderService().searchOrderByOrderId(jsonObject.getInteger("order_id")); + if (jsonObject.getInteger("aftApplication_id") != null) + this.aftApplication_id = jsonObject.getInteger("aftApplication_id"); + if (jsonObject.getInteger("order_id") != null) + this.order_id = jsonObject.getInteger("order_id"); + if (jsonObject.getString("aftApplication_buyerusername") != null) + this.aftApplication_buyerusername = jsonObject.getString("aftApplication_buyerusername"); + if (jsonObject.getString("aftApplication_sellerusername") != null) + this.aftApplication_sellerusername = jsonObject.getString("aftApplication_sellerusername"); + if (jsonObject.getString("package_state") != null) + this.package_state = PackageState.toenum(jsonObject.getString("package_state")); + if (jsonObject.getString("aftApplication_type") != null) + this.aftApplication_type = AftApplicationType.toenum(jsonObject.getString("aftApplication_type")); + if (jsonObject.getString("aftApplication_reason") != null) + this.aftApplication_reason = jsonObject.getString("aftApplication_reason"); + if (jsonObject.getString("aftApplication_images") != null) + this.aftApplication_images = jsonObject.getString("aftApplication_images"); + if (jsonObject.getString("aftApplication_state") != null) + this.aftApplication_state = AftApplicationState.toenum(jsonObject.getString("aftApplication_state")); + if (jsonObject.getString("create_time") != null) + this.create_time = jsonObject.getString("create_time"); + if (jsonObject.getString("finish_time") != null) + this.finish_time = jsonObject.getString("finish_time"); + } + public AftApplication(int order_id, String aftApplication_buyerusername, String aftApplication_sellerusername, PackageState package_state, AftApplicationType aftApplication_type, String aftApplication_reason, String aftApplication_images, AftApplicationState aftApplication_state, String create_time) { this.order_id = order_id; this.aftApplication_buyerusername = aftApplication_buyerusername; diff --git a/back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java b/back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java index 61c3a4a..72e251d 100644 --- a/back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java @@ -35,6 +35,19 @@ public interface AftApplicationMapper { */ List searchSellerAftApplication(String aftApplication_sellerusername, AftApplicationType aftApplication_type, AftApplicationState aftApplication_state); + /** + * 根据AftApplicationId查询AftApplication + * @param aftApplication_id + * @return + */ + AftApplication searchAftApplicationById(Integer aftApplication_id); + + /** + * 根据order_id查询AftApplication是否存在 + * @param order_id + * @return + */ + AftApplication isAftApplicationById(Integer order_id); /** * 买家修改申诉 @@ -65,16 +78,18 @@ public interface AftApplicationMapper { int acceptAftApplicationBack(AftApplication aftApplication); /** - * 根据AftApplicationId查询AftApplication - * @param aftApplication_id + * 卖家拒绝申诉 + * @param aftApplication * @return */ - AftApplication searcAftApplicationById(Integer aftApplication_id); + int refuseAftApplication(AftApplication aftApplication); /** - * 根据order_id查询AftApplication是否存在 - * @param order_id + * 卖家拒绝申诉回退 + * @param aftApplication * @return */ - AftApplication isAftApplicationById(Integer order_id); + int refuseAftApplicationBack(AftApplication aftApplication); + + } diff --git a/back-end_code/src/main/java/com/shop/service/AftApplicationService.java b/back-end_code/src/main/java/com/shop/service/AftApplicationService.java index 4204d23..a396d78 100644 --- a/back-end_code/src/main/java/com/shop/service/AftApplicationService.java +++ b/back-end_code/src/main/java/com/shop/service/AftApplicationService.java @@ -19,11 +19,13 @@ public class AftApplicationService { return aftApplicationMapper.searchBuyerAftApplication(aftApplication_buyerusername,aftApplication_type,aftApplication_state); } public List searchSellerAftApplication(String aftApplication_sellerusername, AftApplicationType aftApplication_type, AftApplicationState aftApplication_state){ return aftApplicationMapper.searchSellerAftApplication(aftApplication_sellerusername,aftApplication_type,aftApplication_state); } + public AftApplication searchAftApplicationById(Integer aftApplication_id){return aftApplicationMapper.searchAftApplicationById(aftApplication_id);} + public AftApplication isAftApplicationById(Integer order_id){return aftApplicationMapper.isAftApplicationById(order_id);} public int updateAftApplication(AftApplication aftApplication){return aftApplicationMapper.updateAftApplication(aftApplication);} public int cancelAftApplication(AftApplication aftApplication){return aftApplicationMapper.cancelAftApplication(aftApplication);} public int acceptAftApplication(AftApplication aftApplication){return aftApplicationMapper.acceptAftApplication(aftApplication);} public int acceptAftApplicationBack(AftApplication aftApplication){return aftApplicationMapper.acceptAftApplication(aftApplication);} - public AftApplication searcAftApplicationById(Integer aftApplication_id){return aftApplicationMapper.searcAftApplicationById(aftApplication_id);} - public AftApplication isAftApplicationById(Integer order_id){return aftApplicationMapper.isAftApplicationById(order_id);} + public int refuseAftApplication(AftApplication aftApplication){return aftApplicationMapper.refuseAftApplication(aftApplication);} + public int refuseAftApplicationBack(AftApplication aftApplication){return aftApplicationMapper.refuseAftApplicationBack(aftApplication);} } diff --git a/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml b/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml index bd68348..6b5d23e 100644 --- a/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml +++ b/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml @@ -40,9 +40,7 @@ aftApplicationImages, - aftApplicationState, - createTime, @@ -71,9 +69,7 @@ #{aftApplication_images,jdbcType=VARCHAR}, - - #{aftApplication_state,jdbcType=VARCHAR}, - + #{create_time,jdbcType=TIMESTAMP}, @@ -102,13 +98,15 @@ - - - update aftapplication - - - where aftApplicationId = #{aftApplication_id} and aftApplicationBuyerusername = #{aftApplication_buyerusername} and - + + + + + @@ -124,11 +122,22 @@ where aftApplicationId = #{aftApplication_id,jdbcType=INTEGER} and aftApplicationBuyerusername = #{aftApplication_buyerusername} and + + + update aftapplication + + + + finishTime = #{finish_time,jdbcType=TIMESTAMP}, + + where aftApplicationId = #{aftApplication_id} and aftApplicationBuyerusername = #{aftApplication_buyerusername} and + + update aftapplication - + finishTime = #{finish_time,jdbcType=TIMESTAMP}, @@ -143,15 +152,24 @@ where aftApplicationId = #{aftApplication_id} and aftApplicationSellerusername = #{aftApplication_sellerusername} and - - + + + update aftapplication + + + + finishTime = #{finish_time,jdbcType=TIMESTAMP}, + + where aftApplicationId = #{aftApplication_id} and aftApplicationSellerusername = #{aftApplication_sellerusername} and + - - + + + update aftapplication + + + where aftApplicationId = #{aftApplication_id} and aftApplicationSellerusername = #{aftApplication_sellerusername} and + -- Gitee From 74f154315f05db0699d12d9490066e331bfdbc3f Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sat, 7 May 2022 10:46:42 +0800 Subject: [PATCH 084/133] =?UTF-8?q?=E4=B8=8E=E9=A1=BA=E4=B8=B0=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5=E4=B8=8B=E5=8D=95=E6=8E=A5=E5=8F=A3=E5=AE=8C=E6=88=90?= =?UTF-8?q?=20=E5=90=8C=E6=AD=A5=E9=87=8D=E6=9E=84Order=E7=9A=84=E5=8D=96?= =?UTF-8?q?=E5=AE=B6=E5=8F=91=E8=B4=A7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/pom.xml | 23 ++ .../main/java/com/shop/Enum/ContactType.java | 47 +++ .../com/shop/controller/OrderController.java | 19 +- .../com/shop/entity/sf/ApiResultData.java | 56 ++++ .../java/com/shop/entity/sf/CargoDetail.java | 246 ++++++++++++++ .../java/com/shop/entity/sf/ContactInfo.java | 309 ++++++++++++++++++ .../java/com/shop/entity/sf/CreateOrder.java | 171 ++++++++++ .../java/com/shop/entity/sf/ResultData.java | 56 ++++ .../com/shop/entity/sf/WaybillNoInfo.java | 38 +++ .../main/java/com/shop/entity/sf/msgDate.java | 43 +++ .../java/com/shop/mapper/OrderMapper.java | 9 + .../java/com/shop/service/OrderService.java | 1 + .../main/java/com/shop/service/SFService.java | 57 ++++ .../src/main/java/com/shop/sflib/SF-CSIM.jar | Bin 0 -> 23371 bytes .../java/com/shop/sflib/commons-codec-1.9.jar | Bin 0 -> 263965 bytes .../com/shop/sflib/commons-logging-1.2.jar | Bin 0 -> 61829 bytes .../java/com/shop/sflib/httpclient-4.3.4.jar | Bin 0 -> 590004 bytes .../java/com/shop/sflib/httpcore-4.3.2.jar | Bin 0 -> 282269 bytes .../java/com/shop/sflib/slf4j-api-1.7.7.jar | Bin 0 -> 29257 bytes .../main/resources/mapping/OrderMapper.xml | 10 +- 20 files changed, 1079 insertions(+), 6 deletions(-) create mode 100644 back-end_code/src/main/java/com/shop/Enum/ContactType.java create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/ApiResultData.java create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/CargoDetail.java create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/ContactInfo.java create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/CreateOrder.java create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/ResultData.java create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/WaybillNoInfo.java create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/msgDate.java create mode 100644 back-end_code/src/main/java/com/shop/service/SFService.java create mode 100644 back-end_code/src/main/java/com/shop/sflib/SF-CSIM.jar create mode 100644 back-end_code/src/main/java/com/shop/sflib/commons-codec-1.9.jar create mode 100644 back-end_code/src/main/java/com/shop/sflib/commons-logging-1.2.jar create mode 100644 back-end_code/src/main/java/com/shop/sflib/httpclient-4.3.4.jar create mode 100644 back-end_code/src/main/java/com/shop/sflib/httpcore-4.3.2.jar create mode 100644 back-end_code/src/main/java/com/shop/sflib/slf4j-api-1.7.7.jar diff --git a/back-end_code/pom.xml b/back-end_code/pom.xml index c9cc5f0..41c366b 100644 --- a/back-end_code/pom.xml +++ b/back-end_code/pom.xml @@ -53,6 +53,14 @@ fastjson 1.2.47 + + + com.sf + sfExpress + 2.1.7 + system + ${project.basedir}/src/main/java/com/shop/sflib/SF-CSIM.jar + @@ -96,6 +104,21 @@ + + + + src/main/java/com/shop/sflib + + + lib + + + + *.jar + + + + org.springframework.boot diff --git a/back-end_code/src/main/java/com/shop/Enum/ContactType.java b/back-end_code/src/main/java/com/shop/Enum/ContactType.java new file mode 100644 index 0000000..a2f6839 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/ContactType.java @@ -0,0 +1,47 @@ +package com.shop.Enum; + +public enum ContactType { + Buyer, + //买家 + Seller; + //卖家 + + ContactType() { + } + + public static ContactType toenum(String str){ + if (str.equals("Buyer")){ + return Buyer; + }else if (str.equals("Seller")){ + return Seller; + }else + return null; + } + + public static Integer toInteger(String str){ + if (str.equals("Buyer")){ + return 2; + }else if (str.equals("Seller")){ + return 1; + }else + return 0; + } + + public static Integer toInteger(ContactType str){ + if (str == ContactType.Buyer){ + return 2; + }else if (str == ContactType.Seller){ + return 1; + }else + return 0; + } + + public static String toString(ContactType str){ + if (str == ContactType.Buyer){ + return "buyer"; + }else if (str == ContactType.Seller){ + return "seller"; + }else + return null; + } +} diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index c7c437f..523b424 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -2,12 +2,14 @@ package com.shop.controller; import com.shop.Enum.GoodState; import com.shop.entity.*; +import com.shop.entity.sf.ResultData; import com.shop.service.*; import com.shop.utils.Result; import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.*; @@ -39,6 +41,9 @@ public class OrderController { @Autowired private AddressService addressService; + @Autowired + private SFService sfService; + //用户下单 @PostMapping("/Orders") @@ -271,19 +276,25 @@ public class OrderController { //卖家发货订单 @PutMapping(value = "/seller/deliver") - public Object sellerDeliverOrder(@RequestBody JSONObject jsonObject){ + public Object sellerDeliverOrder(@RequestBody JSONObject jsonObject) throws UnsupportedEncodingException { Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); String seller_username = jsonObject.getString("seller_username"); Integer order_id; + Order order; + ResultData resultData; StringBuilder sb = new StringBuilder(); while (objectIterator.hasNext()) { JSONObject jb = (JSONObject) objectIterator.next(); order_id = jb.getInteger("order_id"); - if(orderService.sellerDeliverOrder(seller_username,order_id) < 1) { - sb.append("订单号: ").append(order_id).append(" 发货失败\n"); + order = orderService.searchOrderByOrderId(order_id); + resultData = (ResultData) sfService.EXP_RECE_CREATE_ORDER(order); + if(resultData.getApiResultData().getSuccess() && orderService.sellerDeliverOrder(seller_username,order_id) >= 1) { + System.out.println(resultData.getApiResultData().getMsgData().getWaybillNoInfoList().get(0).getWaybillNo()); + orderService.setPackageNumberByOrderId(order_id,seller_username,resultData.getApiResultData().getMsgData().getWaybillNoInfoList().get(0).getWaybillNo()); + sb.append("订单号: ").append(order_id).append(" 发货成功\n"); continue; }else{ - sb.append("订单号: ").append(order_id).append(" 发货成功\n"); + sb.append("订单号: ").append(order_id).append(" 发货失败\n"); continue; } } diff --git a/back-end_code/src/main/java/com/shop/entity/sf/ApiResultData.java b/back-end_code/src/main/java/com/shop/entity/sf/ApiResultData.java new file mode 100644 index 0000000..d480598 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/ApiResultData.java @@ -0,0 +1,56 @@ +package com.shop.entity.sf; + +import com.alibaba.fastjson.JSONObject; + +import java.util.Iterator; + +public class ApiResultData { + private Boolean success; + private String errorCode; + private String errorMsg; + private msgDate msgData; + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public String getErrorCode() { + return errorCode; + } + + public void setErrorCode(String errorCode) { + this.errorCode = errorCode; + } + + public String getErrorMsg() { + return errorMsg; + } + + public msgDate getMsgData() { + return msgData; + } + + public void setMsgData(msgDate msgData) { + this.msgData = msgData; + } + + public void setErrorMsg(String errorMsg) { + this.errorMsg = errorMsg; + } + + public ApiResultData(JSONObject jsonObject) { + Iterator objectIterator; + if (jsonObject.getBoolean("success") != null) + this.success = jsonObject.getBoolean("success"); + if (jsonObject.getString("errorCode") != null) + this.errorCode = jsonObject.getString("errorCode"); + if (jsonObject.getString("errorMsg") != null) + this.errorMsg = jsonObject.getString("errorMsg"); + if (jsonObject.getJSONObject("msgData") != null) + this.msgData = new msgDate(jsonObject.getJSONObject("msgData")); + } +} diff --git a/back-end_code/src/main/java/com/shop/entity/sf/CargoDetail.java b/back-end_code/src/main/java/com/shop/entity/sf/CargoDetail.java new file mode 100644 index 0000000..c482673 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/CargoDetail.java @@ -0,0 +1,246 @@ +package com.shop.entity.sf; + +import com.alibaba.fastjson.JSONObject; +import com.shop.entity.OrderDetail; + +import java.util.Iterator; + +public class CargoDetail { + private String name; //货物名称,如果需要生成电子运单,则为必填. T-128 +// private String count; //货物数量 跨境件报关需要填写 C-5 +// private String unit; //货物单位,如:个、台、本,跨境件报关需要填写. C-30 +// private String weight; //订单货物单位重量,包含子母件,单位千克,精确到小数点后3位跨境件报关需要填写 C-16,3 +// private String amount; //货物单价,精确到小数点后3位,跨境件报关需要填写 C-17,3 +// private String taxNo; //商品行邮税号 F +// private String length; //托寄物长 F-16,3 +// private String width; //托寄物宽 F-16,3 +// private String height; //托寄物高 F-16,3 +// private String volume; //托寄物体积 F-16,2 +// private String cargoDeclaredValue; //托寄物声明价值 F-16,5 +// private String declaredValueDeclaredCurrency; // 托寄物声明价值币别 F-5 + + + public CargoDetail(JSONObject jsonObject) { + Iterator objectIterator; + if (jsonObject.getString("name") != null) + this.name = jsonObject.getString("name"); + } + + public CargoDetail(OrderDetail orderDetail) { + this.name = orderDetail.getSnapshot().getGoods_name(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String toString() { + final StringBuilder sb = new StringBuilder("{\n"); + int num = 0; + if (this.name != null) { + if (num == 0) { + sb.append("\t\t\"name\": \"").append(name).append("\""); + } else { + sb.append(",\n").append("\t\"name\": \"").append(name).append("\""); + } + num = num + 1; + } + sb.append("\n\t}"); + return sb.toString(); + } + /*public String getCount() { + return count; + } + + public void setCount(String count) { + this.count = count; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + public String getWeight() { + return weight; + } + + public void setWeight(String weight) { + this.weight = weight; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getTaxNo() { + return taxNo; + } + + public void setTaxNo(String taxNo) { + this.taxNo = taxNo; + } + + public String getLength() { + return length; + } + + public void setLength(String length) { + this.length = length; + } + + public String getWidth() { + return width; + } + + public void setWidth(String width) { + this.width = width; + } + + public String getHeight() { + return height; + } + + public void setHeight(String height) { + this.height = height; + } + + public String getVolume() { + return volume; + } + + public void setVolume(String volume) { + this.volume = volume; + } + + public String getCargoDeclaredValue() { + return cargoDeclaredValue; + } + + public void setCargoDeclaredValue(String cargoDeclaredValue) { + this.cargoDeclaredValue = cargoDeclaredValue; + } + + public String getDeclaredValueDeclaredCurrency() { + return declaredValueDeclaredCurrency; + } + + public void setDeclaredValueDeclaredCurrency(String declaredValueDeclaredCurrency) { + this.declaredValueDeclaredCurrency = declaredValueDeclaredCurrency; + }*/ + + /*@Override + public String toString() { + final StringBuilder sb = new StringBuilder("{\n"); + int num = 0; + if (this.name != null) { + if (num == 0) { + sb.append("\t\t\"name\": \"").append(name).append("\""); + } else { + sb.append(",\n").append("\t\"name\": \"").append(name).append("\""); + } + num = num + 1; + } + if (this.count != null) { + if (num == 0) { + sb.append("\t\t\"count\": \"").append(count).append("\""); + } else { + sb.append(",\n").append("\t\"count\": \"").append(count).append("\""); + } + num = num + 1; + } + if (this.unit != null) { + if (num == 0) { + sb.append("\t\t\"unit\": \"").append(unit).append("\""); + } else { + sb.append(",\n").append("\t\"unit\": \"").append(unit).append("\""); + } + num = num + 1; + } + if (this.weight != null) { + if (num == 0) { + sb.append("\t\t\"weight\": \"").append(weight).append("\""); + } else { + sb.append(",\n").append("\t\"weight\": \"").append(weight).append("\""); + } + num = num + 1; + } + if (this.amount != null) { + if (num == 0) { + sb.append("\t\t\"amount\": \"").append(amount).append("\""); + } else { + sb.append(",\n").append("\t\"amount\": \"").append(amount).append("\""); + } + num = num + 1; + } + if (this.taxNo != null) { + if (num == 0) { + sb.append("\t\t\"taxNo\": \"").append(taxNo).append("\""); + } else { + sb.append(",\n").append("\t\"taxNo\": \"").append(taxNo).append("\""); + } + num = num + 1; + } + if (this.length != null) { + if (num == 0) { + sb.append("\t\t\"length\": \"").append(length).append("\""); + } else { + sb.append(",\n").append("\t\"length\": \"").append(length).append("\""); + } + num = num + 1; + } + if (this.width != null) { + if (num == 0) { + sb.append("\t\t\"width\": \"").append(width).append("\""); + } else { + sb.append(",\n").append("\t\"width\": \"").append(width).append("\""); + } + num = num + 1; + } + if (this.height != null) { + if (num == 0) { + sb.append("\t\t\"height\": \"").append(height).append("\""); + } else { + sb.append(",\n").append("\t\"height\": \"").append(height).append("\""); + } + num = num + 1; + } + if (this.volume != null) { + if (num == 0) { + sb.append("\t\t\"volume\": \"").append(volume).append("\""); + } else { + sb.append(",\n").append("\t\"volume\": \"").append(volume).append("\""); + } + num = num + 1; + } + if (this.cargoDeclaredValue != null) { + if (num == 0) { + sb.append("\t\t\"cargoDeclaredValue\": \"").append(cargoDeclaredValue).append("\""); + } else { + sb.append(",\n").append("\t\"cargoDeclaredValue\": \"").append(cargoDeclaredValue).append("\""); + } + num = num + 1; + } + if (this.declaredValueDeclaredCurrency != null) { + if (num == 0) { + sb.append("\t\t\"declaredValueDeclaredCurrency\": \"").append(declaredValueDeclaredCurrency).append("\""); + } else { + sb.append(",\n").append("\t\"declaredValueDeclaredCurrency\": \"").append(declaredValueDeclaredCurrency).append("\""); + } + num = num + 1; + } + sb.append("\n\t}"); + return sb.toString(); + }*/ +} diff --git a/back-end_code/src/main/java/com/shop/entity/sf/ContactInfo.java b/back-end_code/src/main/java/com/shop/entity/sf/ContactInfo.java new file mode 100644 index 0000000..bf28fec --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/ContactInfo.java @@ -0,0 +1,309 @@ +package com.shop.entity.sf; + +import com.alibaba.fastjson.JSONObject; +import com.shop.Enum.ContactType; +import com.shop.entity.Address; + +import java.util.Iterator; + +public class ContactInfo { + private String contactType ; //地址类型:1,寄件方信息; 2,到件方信息 T-1 + private String company; //公司名称 C-100 + private String contact; //联系人 C-100 + private String tel; // 联系电话 C-20 + private String mobile; // 手机号码 N-20 + private String zoneCode; // 城市代码或国家代码,跨境件必填 C-30 + private String country; // 国家或地区 2 位代码 T-30 + private String province; // 所在省级行政区名称 F-30 + private String city; // 所在地级行政区名称 F-100 + private String county; // 所在县/区级行政区名称 F-30 + private String address; // 详细地址 T-200 + private String postCode; // 邮编,跨境件必填 C-25 + private String email; // 邮箱地址 F-200 + private String taxNo; // 税号 F-100 + + public ContactInfo() { + } + + public ContactInfo(JSONObject jsonObject) { + Iterator objectIterator; + if (jsonObject.getString("contactType") != null) + this.contactType = jsonObject.getString("contactType"); + if (jsonObject.getString("company") != null) + this.company = jsonObject.getString("company"); + if (jsonObject.getString("contact") != null) + this.contact = jsonObject.getString("contact"); + if (jsonObject.getString("tel") != null) + this.tel = jsonObject.getString("tel"); + if (jsonObject.getString("mobile") != null) + this.mobile = jsonObject.getString("mobile"); + if (jsonObject.getString("zoneCode") != null) + this.zoneCode = jsonObject.getString("zoneCode"); + if (jsonObject.getString("country") != null) + this.country = jsonObject.getString("country"); + if (jsonObject.getString("province") != null) + this.province = jsonObject.getString("province"); + if (jsonObject.getString("city") != null) + this.city = jsonObject.getString("city"); + if (jsonObject.getString("county") != null) + this.county = jsonObject.getString("county"); + if (jsonObject.getString("address") != null) + this.address = jsonObject.getString("address"); + if (jsonObject.getString("postCode") != null) + this.postCode = jsonObject.getString("postCode"); + if (jsonObject.getString("email") != null) + this.email = jsonObject.getString("email"); + if (jsonObject.getString("taxNo") != null) + this.taxNo = jsonObject.getString("taxNo"); + } + + public ContactInfo(Address address, ContactType contactType){ + this.address = address.getAddress(); + this.mobile = address.getPhonenumber(); + this.contact = address.getRealname(); + this.contactType = ContactType.toInteger(contactType).toString(); + } + + public ContactInfo(ContactType contactType){ + if (contactType == ContactType.Seller){ + this.address = "浙江省杭州市钱塘区下沙高教园区学正街18号"; + this.mobile = "18888888888"; + this.contact = "阿格力"; + this.contactType = "1"; + } + } + + public String getContactType() { + return contactType; + } + + public void setContactType(String contactType) { + this.contactType = contactType; + } + + public String getCompany() { + return company; + } + + public void setCompany(String company) { + this.company = company; + } + + public String getContact() { + return contact; + } + + public void setContact(String contact) { + this.contact = contact; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public String getZoneCode() { + return zoneCode; + } + + public void setZoneCode(String zoneCode) { + this.zoneCode = zoneCode; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getCounty() { + return county; + } + + public void setCounty(String county) { + this.county = county; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getPostCode() { + return postCode; + } + + public void setPostCode(String postCode) { + this.postCode = postCode; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getTaxNo() { + return taxNo; + } + + public void setTaxNo(String taxNo) { + this.taxNo = taxNo; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{\n"); + int num = 0; + if (this.contactType != null) { + if (num == 0) { + sb.append("\t\t\"contactType\": \"").append(contactType).append("\""); + } else { + sb.append(",\n").append("\t\"contactType\": \"").append(contactType).append("\""); + } + num = num + 1; + } + if (this.company != null) { + if (num == 0) { + sb.append("\t\t\"company\": \"").append(company).append("\""); + } else { + sb.append(",\n").append("\t\"company\": \"").append(company).append("\""); + } + num = num + 1; + } + if (this.contact != null) { + if (num == 0) { + sb.append("\t\t\"contact\": \"").append(contact).append("\""); + } else { + sb.append(",\n").append("\t\"contact\": \"").append(contact).append("\""); + } + num = num + 1; + } + if (this.tel != null) { + if (num == 0) { + sb.append("\t\t\"tel\": \"").append(tel).append("\""); + } else { + sb.append(",\n").append("\t\"tel\": \"").append(tel).append("\""); + } + num = num + 1; + } + if (this.mobile != null) { + if (num == 0) { + sb.append("\t\t\"mobile\": \"").append(mobile).append("\""); + } else { + sb.append(",\n").append("\t\"mobile\": \"").append(mobile).append("\""); + } + num = num + 1; + } + if (this.zoneCode != null) { + if (num == 0) { + sb.append("\t\t\"zoneCode\": \"").append(zoneCode).append("\""); + } else { + sb.append(",\n").append("\t\"zoneCode\": \"").append(zoneCode).append("\""); + } + num = num + 1; + } + if (this.country != null) { + if (num == 0) { + sb.append("\t\t\"country\": \"").append(country).append("\""); + } else { + sb.append(",\n").append("\t\"country\": \"").append(country).append("\""); + } + num = num + 1; + } + if (this.province != null) { + if (num == 0) { + sb.append("\t\t\"province\": \"").append(province).append("\""); + } else { + sb.append(",\n").append("\t\"province\": \"").append(province).append("\""); + } + num = num + 1; + } + if (this.city != null) { + if (num == 0) { + sb.append("\t\t\"city\": \"").append(city).append("\""); + } else { + sb.append(",\n").append("\t\"city\": \"").append(city).append("\""); + } + num = num + 1; + } + if (this.county != null) { + if (num == 0) { + sb.append("\t\t\"county\": \"").append(county).append("\""); + } else { + sb.append(",\n").append("\t\"county\": \"").append(county).append("\""); + } + num = num + 1; + } + if (this.address != null) { + if (num == 0) { + sb.append("\t\t\"address\": \"").append(address).append("\""); + } else { + sb.append(",\n").append("\t\"address\": \"").append(address).append("\""); + } + num = num + 1; + } + if (this.postCode != null) { + if (num == 0) { + sb.append("\t\t\"postCode\": \"").append(postCode).append("\""); + } else { + sb.append(",\n").append("\t\"postCode\": \"").append(postCode).append("\""); + } + num = num + 1; + } + if (this.email != null) { + if (num == 0) { + sb.append("\t\t\"email\": \"").append(email).append("\""); + } else { + sb.append(",\n").append("\t\"email\": \"").append(email).append("\""); + } + num = num + 1; + } + if (this.taxNo != null) { + if (num == 0) { + sb.append("\t\t\"taxNo\": \"").append(taxNo).append("\""); + } else { + sb.append(",\n").append("\t\"taxNo\": \"").append(taxNo).append("\""); + } + num = num + 1; + } + sb.append("\n\t}"); + return sb.toString(); + } + + +} diff --git a/back-end_code/src/main/java/com/shop/entity/sf/CreateOrder.java b/back-end_code/src/main/java/com/shop/entity/sf/CreateOrder.java new file mode 100644 index 0000000..310f41c --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/CreateOrder.java @@ -0,0 +1,171 @@ +package com.shop.entity.sf; + +import com.alibaba.fastjson.JSONObject; +import com.shop.Enum.ContactType; +import com.shop.entity.Order; +import com.shop.entity.OrderDetail; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class CreateOrder { + private String language = "zh-CN"; + private String orderId; + private String parcelQty; + private String payMethod; + private List cargoDetails; + private List contactInfoList; + + public CreateOrder(Order order) { + this.orderId = order.getOrder_id().toString(); + this.parcelQty = "1"; + this.payMethod = "1"; + List cargoDetails = new ArrayList(); + List contactInfoList = new ArrayList(); + for (OrderDetail orderdetail:order.getOrderDetailList()) { + CargoDetail cargoDetail = new CargoDetail(orderdetail); + cargoDetails.add(cargoDetail); + } + this.cargoDetails = cargoDetails; + ContactInfo contactInfo = new ContactInfo(order.getAddress(), ContactType.Buyer); + contactInfoList.add(contactInfo); + contactInfo = new ContactInfo(ContactType.Seller); + contactInfoList.add(contactInfo); + this.contactInfoList = contactInfoList; + } + + public CreateOrder(JSONObject jsonObject) { + Iterator objectIterator; + if (jsonObject.getString("language") != null) + this.language = jsonObject.getString("language"); + if (jsonObject.getString("orderId") != null) + this.orderId = jsonObject.getString("orderId"); + if (jsonObject.getString("parcelQty") != null) + this.parcelQty = jsonObject.getString("parcelQty"); + if (jsonObject.getString("payMethod") != null) + this.payMethod = jsonObject.getString("payMethod"); + if (jsonObject.getJSONArray("cargoDetails") != null) { + objectIterator = jsonObject.getJSONArray("cargoDetails").iterator(); + CargoDetail CargoDetail; + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + CargoDetail = new CargoDetail(jb); + this.cargoDetails.add(CargoDetail); + } + } + if (jsonObject.getJSONArray("contactInfoList") != null) { + objectIterator = jsonObject.getJSONArray("contactInfoList").iterator(); + ContactInfo ContactInfo; + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + ContactInfo = new ContactInfo(jb); + this.contactInfoList.add(ContactInfo); + } + } + } + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getParcelQty() { + return parcelQty; + } + + public void setParcelQty(String parcelQty) { + this.parcelQty = parcelQty; + } + + public String getPayMethod() { + return payMethod; + } + + public void setPayMethod(String payMethod) { + this.payMethod = payMethod; + } + + public List getCargoDetails() { + return cargoDetails; + } + + public void setCargoDetails(List cargoDetails) { + this.cargoDetails = cargoDetails; + } + + public List getContactInfoList() { + return contactInfoList; + } + + public void setContactInfoList(List contactInfoList) { + this.contactInfoList = contactInfoList; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{\n"); + int num = 0; + if (this.language != null) { + if (num == 0) { + sb.append("\t\"language\": \"").append(language).append("\""); + } else { + sb.append(",\n").append("\t\"language\": \"").append(language).append("\""); + } + num = num + 1; + } + if (this.orderId != null) { + if (num == 0) { + sb.append("\t\"orderId\": \"").append(orderId).append("\""); + } else { + sb.append(",\n").append("\t\"orderId\": \"").append(orderId).append("\""); + } + num = num + 1; + } + if (this.parcelQty != null) { + if (num == 0) { + sb.append("\t\"parcelQty\": \"").append(parcelQty).append("\""); + } else { + sb.append(",\n").append("\t\"parcelQty\": \"").append(parcelQty).append("\""); + } + num = num + 1; + } + if (this.payMethod != null) { + if (num == 0) { + sb.append("\t\"payMethod\": \"").append(payMethod).append("\""); + } else { + sb.append(",\n").append("\t\"payMethod\": \"").append(payMethod).append("\""); + } + num = num + 1; + } + if (this.cargoDetails != null) { + if (num == 0) { + sb.append("\t\"cargoDetails\": ").append(cargoDetails); + } else { + sb.append(",\n").append("\t\"cargoDetails\": ").append(cargoDetails); + } + num = num + 1; + } + if (this.contactInfoList != null) { + if (num == 0) { + sb.append("\t\"contactInfoList\": ").append(contactInfoList); + } else { + sb.append(",\n").append("\t\"contactInfoList\": ").append(contactInfoList); + } + num = num + 1; + } + sb.append("\n}"); + return sb.toString(); + } +} diff --git a/back-end_code/src/main/java/com/shop/entity/sf/ResultData.java b/back-end_code/src/main/java/com/shop/entity/sf/ResultData.java new file mode 100644 index 0000000..d31ae75 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/ResultData.java @@ -0,0 +1,56 @@ +package com.shop.entity.sf; + +import com.alibaba.fastjson.JSONObject; + +import java.util.Iterator; + +public class ResultData { + private String apiErrorMsg; + private String apiResponseID ; + private String apiResultCode ; + private ApiResultData apiResultData; + + public ResultData(JSONObject jsonObject) { + Iterator objectIterator; + if (jsonObject.getString("apiErrorMsg") != null) + this.apiErrorMsg = jsonObject.getString("apiErrorMsg"); + if (jsonObject.getString("apiResponseID") != null) + this.apiResponseID = jsonObject.getString("apiResponseID"); + if (jsonObject.getString("apiResultCode") != null) + this.apiResultCode = jsonObject.getString("apiResultCode"); + if (jsonObject.getJSONObject("apiResultData") != null) + this.apiResultData = new ApiResultData(jsonObject.getJSONObject("apiResultData")); + } + + public String getApiErrorMsg() { + return apiErrorMsg; + } + + public void setApiErrorMsg(String apiErrorMsg) { + this.apiErrorMsg = apiErrorMsg; + } + + public String getApiResponseID() { + return apiResponseID; + } + + public void setApiResponseID(String apiResponseID) { + this.apiResponseID = apiResponseID; + } + + public String getApiResultCode() { + return apiResultCode; + } + + public void setApiResultCode(String apiResultCode) { + this.apiResultCode = apiResultCode; + } + + public ApiResultData getApiResultData() { + return apiResultData; + } + + public void setApiResultData(ApiResultData apiResultData) { + this.apiResultData = apiResultData; + } +} diff --git a/back-end_code/src/main/java/com/shop/entity/sf/WaybillNoInfo.java b/back-end_code/src/main/java/com/shop/entity/sf/WaybillNoInfo.java new file mode 100644 index 0000000..21f17c7 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/WaybillNoInfo.java @@ -0,0 +1,38 @@ +package com.shop.entity.sf; + +import com.alibaba.fastjson.JSONObject; + +import java.util.Iterator; + +public class WaybillNoInfo { + private Integer waybillType; // 运单号类型1:母单;2:子单;3:签回单 T-1 + private String waybillNo; // 运单号 T-15 + + public WaybillNoInfo(JSONObject jsonObject) { + Iterator objectIterator; + this.waybillType = jsonObject.getInteger("waybillType"); + this.waybillNo = jsonObject.getString("waybillNo"); + } + + public WaybillNoInfo(Integer waybillType, String waybillNo) { + this.waybillType = waybillType; + this.waybillNo = waybillNo; + } + + + public Integer getWaybillType() { + return waybillType; + } + + public void setWaybillType(Integer waybillType) { + this.waybillType = waybillType; + } + + public String getWaybillNo() { + return waybillNo; + } + + public void setWaybillNo(String waybillNo) { + this.waybillNo = waybillNo; + } +} diff --git a/back-end_code/src/main/java/com/shop/entity/sf/msgDate.java b/back-end_code/src/main/java/com/shop/entity/sf/msgDate.java new file mode 100644 index 0000000..ec73672 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/msgDate.java @@ -0,0 +1,43 @@ +package com.shop.entity.sf; + +import com.alibaba.fastjson.JSONObject; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class msgDate { + private String orderId; // 客户订单号 T-10 + private List waybillNoInfoList = new ArrayList(); + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public List getWaybillNoInfoList() { + return waybillNoInfoList; + } + + public void setWaybillNoInfoList(List waybillNoInfoList) { + this.waybillNoInfoList = waybillNoInfoList; + } + + public msgDate(JSONObject jsonObject) { + Iterator objectIterator; + if (jsonObject.getString("orderId") != null) + this.orderId = jsonObject.getString("orderId"); + if (jsonObject.getJSONArray("waybillNoInfoList") != null) { + objectIterator = jsonObject.getJSONArray("waybillNoInfoList").iterator(); + WaybillNoInfo WaybillNoInfo; + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + WaybillNoInfo = new WaybillNoInfo(jb); + this.waybillNoInfoList.add(WaybillNoInfo); + } + } + } +} diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index e45891d..0bb0289 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -255,4 +255,13 @@ public interface OrderMapper { */ Integer setAmountByOrderId(Integer order_id,String seller_username,Float buy_amount); + /** + *根据OrderId设置PackageNumber + * @param order_id + * @param seller_username + * @param package_number + * @return + */ + Integer setPackageNumberByOrderId(Integer order_id,String seller_username,String package_number); + } diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index ca6ce28..dd67481 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -65,4 +65,5 @@ public class OrderService { public List sellerSearchAfterFailOrder(String seller_username){ return orderMapper.sellerSearchAfterFailOrder(seller_username);} public Order searchNewOrder(Order order){ return orderMapper.searchNewOrder(order); } public Integer setAmountByOrderId(Integer order_id,String seller_username,Float buy_amount){ return orderMapper.setAmountByOrderId(order_id,seller_username,buy_amount);} + public Integer setPackageNumberByOrderId(Integer order_id,String seller_username,String package_number){ return orderMapper.setPackageNumberByOrderId(order_id,seller_username,package_number);} } diff --git a/back-end_code/src/main/java/com/shop/service/SFService.java b/back-end_code/src/main/java/com/shop/service/SFService.java new file mode 100644 index 0000000..94433dc --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/SFService.java @@ -0,0 +1,57 @@ +package com.shop.service; + +import com.alibaba.fastjson.JSONObject; +import com.sf.csim.express.service.CallExpressServiceTools; +import com.sf.csim.express.service.HttpClientUtil; +import com.shop.entity.Order; +import com.shop.entity.sf.CreateOrder; +import com.shop.entity.sf.ResultData; +import org.springframework.stereotype.Service; + +import java.io.UnsupportedEncodingException; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +@Service +public class SFService { + private static final String CLIENT_CODE = "WXY66kyI8b"; //丰桥平台顾客编码 + private static final String CHECK_WORD = "KGTNUaXkdvedc4UkYGAk6ZEnwgD4JD98";//丰桥平台校验码 + private static final String CALL_URL_BOX = "https://sfapi-sbox.sf-express.com/std/service"; //沙箱环境的地址 -PRO + private static final String CALL_URL_PROD = "https://sfapi.sf-express.com/std/service"; //生产环境的地址 -PRO + private CallExpressServiceTools tools=CallExpressServiceTools.getInstance(); + private String timeStamp ; + private Map params = new HashMap(); + public SFService() { + params.put("partnerID", CLIENT_CODE); // 顾客编码 ,对应丰桥上获取的clientCode + params.put("requestID", UUID.randomUUID().toString().replace("-", "")); + } + public JSONObject tool(String classname, String msgData) throws UnsupportedEncodingException { + timeStamp = String.valueOf(System.currentTimeMillis()); + params.put("serviceCode",classname); + params.put("timestamp", timeStamp); + params.put("msgData", msgData); + params.put("msgDigest", tools.getMsgDigest(msgData,timeStamp,CHECK_WORD)); + System.out.println("===调用实际请求=" + params); + String result = HttpClientUtil.post(CALL_URL_BOX, params); + System.out.println("===调用地址 ==="+CALL_URL_BOX); + System.out.println("===顾客编码 ==="+CLIENT_CODE); + System.out.println("===返回结果:" +result); + JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(result); + return jsonObject; + } + public Object EXP_RECE_CREATE_ORDER(Order order) throws UnsupportedEncodingException { + System.out.println(order.getOrder_id()); + String request = new CreateOrder(order).toString(); + JSONObject temp = SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); + return new ResultData(temp); + } + public Object EXP_RECE_SEARCH_ORDER_RESP(String msgData) throws UnsupportedEncodingException { + return SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),msgData); + } + public Object EXP_RECE_UPDATE_ORDER(String msgData) throws UnsupportedEncodingException { + return SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),msgData); + } + + +} diff --git a/back-end_code/src/main/java/com/shop/sflib/SF-CSIM.jar b/back-end_code/src/main/java/com/shop/sflib/SF-CSIM.jar new file mode 100644 index 0000000000000000000000000000000000000000..f7028c964988e89d7e569f6507933c38548b5ada GIT binary patch literal 23371 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 literal 0 HcmV?d00001 diff --git a/back-end_code/src/main/java/com/shop/sflib/commons-codec-1.9.jar b/back-end_code/src/main/java/com/shop/sflib/commons-codec-1.9.jar new file mode 100644 index 0000000000000000000000000000000000000000..ef35f1c50d7c41278bc31f4b9fcfc8fbd708d55d GIT binary patch literal 263965 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 literal 0 HcmV?d00001 diff --git a/back-end_code/src/main/java/com/shop/sflib/commons-logging-1.2.jar b/back-end_code/src/main/java/com/shop/sflib/commons-logging-1.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..93a3b9f6db406c84e270e19b9a5e70f2e27ca513 GIT binary patch literal 61829 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

?Qscg)P&$+povC*M;449{4wvf+Lu`*i$g8 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

6R?CS7jP_?OetFBKT#*D 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 Sa`OQ?z*ER31cwkn0N{V*NK-8U literal 0 HcmV?d00001 diff --git a/back-end_code/src/main/java/com/shop/sflib/httpclient-4.3.4.jar b/back-end_code/src/main/java/com/shop/sflib/httpclient-4.3.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..f8a7afebb93ee28eb3bc09176175225884e3b5c8 GIT binary patch literal 590004 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 z�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⩔iM6JN1b%yQKAtI&Xc^)4N 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

!ueEnF+b5G^Z2jm=K8 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

_gS27h7o36^s6 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 z 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

-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≶}w5q%W$ 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 literal 0 HcmV?d00001 diff --git a/back-end_code/src/main/java/com/shop/sflib/slf4j-api-1.7.7.jar b/back-end_code/src/main/java/com/shop/sflib/slf4j-api-1.7.7.jar new file mode 100644 index 0000000000000000000000000000000000000000..bebabd961960a011786715026cb86f85df00fe3e GIT binary patch literal 29257 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�!G1$|N4Hpm5DKx*#y!Q?S%({1z84rnd#7Yd#%f1|ALVL#RX8R9JbgP0T@%O3

mw{>;K?~FRsn9!$=wiO0M)t;%P zINdhBLmRvlUF+8-$`Njz%--}yeceI^*Jd2pA4+b_9_Zx!rdZigT> z8K@O0*f!$d=ZQ|Zo{CpTFBRF3MUMk12$LMHSpkPw!zUT2;|d3#FhfGJhjF+xsZVi< zGJoxx8vU_rI3S1<4MwYNO!FZ8P#Pydm)&LV)KU2_{h=nWF1D&4cm)U=xGYV% z39Io#Z31ti{Pu9%*HK@3v4AXA>Igu3G+inkJ)fV)XmY1V{Jc-oI{Roc-DY4$HgT$> zMgyGz-OTa(Rkja)mMw>HDEkPUgV}o-n^I;lLG29PfCS7>#3uq{DF_DFQ%h#?pjh`v z4NLT+cokj71l4Gk+u7C4iHADAgEyGn1*C=owk=YaT_((>XBgB~LxYKn9-``LE7}Rx zbeXCRA6(7Nih1Je3+JXhR^mH)Yo=LLg(uGF^>LzF=D?Dt>F9%G z-dn^FPV@74xnpEm;moP?tcez+0?QG;xh2H%U*M%G!+Zy%stmG6;$v{REC}X^d7xlU zjCt8IrF{I*aOR=1{bIbGG%ysukP`ejY(ll8;LHf8?D8{t+%kCI0a+ z#8&#ADFu33fzQ7oT$%!RS`_Gxo~JEcs`3}xmL*#)4tPp!C;Kv+1-0N$g9Ht7+8F4L zou@5R$_jTH73hxm7uyVXTKRoHYM9fD7DDvW5=Xro+1yR(QWv;W82-)#*(-vDtiZMa z*)?z{7X(?C0lrQ|7h<3!lgTszKX=+Z``;@9r5*keF#KM=vQKcQ0fDcw-(rse6gA^B zv!Cq$F!}*;%;vsh_gKH7%>N8yO6yq}8A{rim>Ajrf51zSyp+v6FPv8fo1H$?2c9gC zx+yueG_NY2wGbAVBA^-{0n<}dJsT$brg>)>K-jO|tSPs@ z=&cO5w~k*vUT-klFxGCRyXM%)mhMPRT$=q&5oa{cn&)jTy)~JT)NX$eIZ`M%U2jAE zxQ*C0l+~gVm&5heEq0QV)_uobuwk9P``kl@R#cCh1hB}D89 zFZRWGGRaPEt8D{xN}eg*(P0dl7SmVL9g_YfAEksvA#lZ4i41(RDj_js=Zly)8{@o-PSdM}%ko0tH0DUOc`&es6x`(q zo@@$0raHw!-ZLpme}WRx55&(PS41GWC2GwheqbPdpaUG)W;0}{xA1-j&V>N7bNQWb z6P!?}-EOeAF1<$Hs;~)pzu|gYO?6v(&{fR;sd=XC{)aEPMG#}G@;xN_zu$f0|3_a? zT1NI?gW_Mfc2@HEH?EB}>@!cQxCurOs?JAV)NoJ)7e=dHri^z>x7#Z@UPqOzm9@do z<$8Y@6oD#(BPE$=%D)hp@bf`mzr*#$@Ewy2-G@<20*JDHr{?Z?^6D*XYs!RWb=qgs z3WygLDhLnY!-x(pupa-K--n&$$e&I$cStc+*x?R>ky#)|A_@Ud1za&2t<6ksBfX@x zWB2RB>B3;X+AfLL)ZYA6+TC1V{~XkBsiAivFiqoBM~sTH)x$Kt=b<659D-8@kFMe* z-O10Fb&g%8hgF}70=RrWy-M;>g%Kj7C=E;abWRw>B3BiB>LPbqeMu6KPpOvVgaQ;s zgkzr4F^a@qQ3a6^W!@2)wQO!eO}Kt6b;>D1za9k8JK`reli*{xEB&UD!T~2In=_lJ zIDtYMGO-1CLQj0Ja#@gd;)Q*EJs4E0y~E>Eo|R1A88MulZQBJEmB66U&@m9;0}MHE z{+kMO`$VLZcXnUYHYN*ORrnsR5`$Z#>-(n=&md)C8oAdf*^n2;l;AUo(W|s8wn?9H zBz?fe3YllP4MXPSYBL#=!M>U@`ttKbDTQ_e8*K$(c`gRKZX)kE&vG3gMQ%Lr+h*cf z;)ar{_#(77hDvD}FIsm3fHyymX)s>m4?lZ)$X+??fIYhB=cyL?fO?*D@W;<%lvt@a z^$064k5BB^T+~xrMLAJ_cRfE=Obp8a>$M(@BR8eQpMs_}f~So|jWb{(mSz*l?j5ww z^aUc)POdc6@9!fl)z18Y3c;Gyc@gY{nXzNJ8wYnusW*kP*Zvm3{s( z(f#0grhOIuY7n?N39Ais5hy6wlYM=WG15CDkeH@xB){#X)eSf^n=H5p88x0`)Es6j zfC%_!PXMu<1W}U;6o`-W?H$>d|DsQ@zBCjf&4(CTiqV&O7LHmpGu-xqs0jrgRD9ob zEfz;&Mfk73_5hCb>}@4gvxED`*{#CM7l0cMB93X1weLQxXf_2>AY@-?x#EzI^*JLws=T-6H%~)(L_Z`sdsGn~*soGZ2d5R9u_ET98%sO8M14A`)1enr@}OCu`B~K}oNN!dfP!5h; zMTK>8j%udaZAx}x1qE8w%-9o+pG=(W_;S%m@O{2-f= z@n{0dg@zoP!G!-D_Vfs<~mqpOj*gHGbxn1CP_%so1(8 z+ygXc%0u5@w*5O*R*s&;TJ72&vm|qIVh%5KSYIMjv6rp}Mq$BF&gAdes*qUdM0sbb zJ!53esMk7)pjUGUHFHl8gSGy@~Tm{6HqVGeNtQkitP#N`~Wzp0FC;U+094e8q zEF~_{`2zgHsVg2J9x&tN?(>1XNs?~^ev(9eT=Z}{J-day^m@6A+HfAPkE8-#)b}U_ zuLGDhRQ5Y7MY1{nd=0pj_o@i?-5opMk=n%nw~12fpCKaha(~5N@wgaeNZQf?%gLqU zA<;8oln~(!O&pKwk}!5`B}tr6SvjoHT-M2_)M2i1xvIq%@Wb%3ooK>9XM2;+{UPB(96;c_I={Unv zuy7-Bk#1?&bBND`n7;6p>pTz}2g|HS<=)d|>x%WWTmN*uuX=e*e9Mb{iwrL&Y#Bh4 z2#jQTP>y+O-LYL};K*yxvhd-|;D0lr4-Gj=dIyu#V3%ZHZ%JP|g1Mv|3|bC(9OMEw z)$r{pK7##YA~g*?m~tKZ7J2v}sEza|+7Ag>(#3N8K#!>R(Y((4`d1xHF9YVl-B5!0 z>p-rm;-I9HBBOY6)n}&PuUEb(i|{}5)gX%UoZ3WEH=D{D4o1+<1|v|&Wdo)UxRm{- z)?B$87vPA$JlvolJlD`%6tW;xEiH+fI-p|EYm73XTtRg_Z?jfdfkE1SXvm9Y73-M< zLo4QGTtgkfyNYCyL#~VcSS7YiwkGaLxeh|>?~=xILAEzjm5Q}fEMhNm%r*xf#`IL* zygmxow^HpW)CCv9qQ;}>*(x3ktjJ@tAHg8!R%19v+2Ertc1`ave3bSmTSnV3QyX-N zYZrM!42Cs>R}bHQ&=IVd0a^(uE78tVTETz8$ZreB`S{10yVIl(Cy({2SP zeFsM~M<++4|Go4UrFz&ZnxGGD(XL9=tr9UKx%0W_DfNM>=BWnZH4p)l<16~}_M)(k zjvDtH%S=HdxmP#+`Q4V=&qLx0A4m5mUQ$x zqTWOGbHst>jeGj3bL*g4OuEbGoDH73_(^_2pqXVZ$x$Qx08*+UxeKfn+y3XiL@ceq zW#BqUE2cf{zV?V$Y&CBeL@Vwsz`jLnwE#|_C(y0bNHg9WJ}e(jFc+X3(k@C**TkH`&Eia6Kc3=mv8@fHPJ<=`E2=G4I zKJo}G{x5&5kPZkpXoaUeqR#Am)??Dx9DN)arn%|kNutiA!UTW)qV-gg(n=SmX3iAq zL-7~OZYvb=7iqpI&X9)uYgbUJ&b`i- zlUH16%jY~U*Cx%=uo&JFy?-nZK^vKg2VlX=ZF0J`WY>ozyfNx;{SQGRJ;ySlfC~QP zUM$6-D@^X4ujvxD zvHf!^Y8H;HX4fW=)&l`UtNzxLwy$MwLBgiwB%y&uYIz>o?3Kw%Y+m^fKr5&{^?rRU zpC?CTJD?#_9i)684K-RUTOu%#ZcFsqtcjuCp=!W_e=hwl zU^z$oJkVnfx2yJNodaFs@jl%_aq^ThijE&~?2vS#y;i`sGPKHbUkXAh5LysbYfH~D zPSTh!F-45?2yx^gT#(7=oTzw{M4Ijpbeev%1AjU|U?tJA-W~+AG@9;MU@Tz}DfRZ( z_lHp;(&Qn=KOnVykT|^+H|OUc1|B>!tt(D^o3-z9mM$w9tu6^`a(lQ=y9Io6#i2tq zW3}xCCO$11NIKU%AkkK|J|itQYtIO6$G%6mjykvKJhyOlHt@8fF`>=OHI#(VnOve_ z004+zr*hg>&>n2g6#1{e51`jAd7iNE>n9{Bu**r9X zjXN}EZ0k5zLbgaNPiPXz(Z{}H+O0I;W1b;#%gtC>twu9tzgdVKPoOK;9B$}{)&RSQ z)*e>aIY6ea-h*+$o}Hwr#*CVl%&e}|W<44tDP^Z|YRHVtGa*3RR(jtzsJ(_aO4I@bpHHi{a!Fis-g|TM?O8LS#V+)!Esg1ns+CDilWrw%p zSiHlNcW9hU$3>|(qH0JYqk~%Fe1ULJ2)1_|%1v3S5B2fqcf?nYjI*XX+(%-`F8iD0?qHrL%XeTxWO+gEi&H`hNzV_fHl>>hBT)4DKd zUvdz39OJvP>r|aS6D*bBST^IzZU zwbt!vuKxb(RPQ)fYsPYG2CI2bL|LCidt?ftpKEQRYZ~p|0g=vDl|QOPR7zwA^_JdI z`*)>+wu=O^7oS#M&oHj_%Wmp;X?9pO`)mmJ2IcpR@-ja-r#`(5J5t3vsN!#KLnvHp z7hFfjfIbL0zmU*rmBF-m2&(sTR$o)TuMXNZs*OzPX3+k07Iv-WzpfLkI=|9f{qJ3W0HmEM+u_OI7r~aJK5)+17lG)Xl4Ng$YHNhL9naSco%=l7UHtDmO@fHjz5v;b&6O^o=7#x`5Tan|BCxeafSofZA?c z75?7if>LWOZAM=!=&w6>n!IzJotL$hEiZq+(UgEhHc1PL&n;?>5~9YJfsQ!q+jwR7 z5-LBRE*BMPcho_lr$m9|>*4tA*$NjCyZW=%gRj3MLw4s4Zdc!yZO!-g0^0v*+5XcU z`J2xXrDXM&jq826c`6P9n!gPRL2wB@_S-*TClx`A<(*D|e>cTCQJ#wWL>=KXxLXi$ z(w}HZCjGe}^2pf+6&AdCvMhsavXMA z@E;~kD3Xn1-dM<@`UZAajKB^my&yPbXQZ5lxoLhsau!*}8kg!SAsMLDI(=SH3QXlm zs};F}H5Dmhjq~h{nw2Xo(@PF>rje@8c;@dLqQ8A*7Q2r|jiim$igXYH8d*K7en2yD z8cMZ74I)y5&>kz1_M0_Pwku|;C|LHuFNmX7k}`3F z11D^elB`BgW)**k1r_Fp5&&dCSgM(#bK|Ct&Pl5AOM&X2#A9Dmo^mxuuwU61b_1`z zR_D*07rW;|g9?}o@1n*nLk`hvIO*Cj=63t2%uOqHZh%(9=14eJq>psW5N<>ABCV?T ziltNmPibzPZypASgFRIXQwZ0>fR>-#QSA^)YK98%bR54&6O=~oKiFe;AFUmPK)mOG z_8mL^DD7;3ou@?Up$-%)zR7)nF{=ZM2ZkcC&>e*Yel!R37CNps;TEU#x%36*7uAa- zDzlDhZxP{?BEWf8#RaDneB-}`6LL=8PJGKUM_lzYWu^?$cCIVA04 z9K0_PZm z`bEONeKY>tIz$7vu_ri%&#*AF4263GrL2Jv^|JkN%ZJ~<$IaXE=iCRsbS;^uIbYkWstbuGdTgus%8Ak zA>7-5D?)Z{A@yi^%B*L7d3YO^0f4<04Dp-fvfhi1hG?>1S+YZYVmdz_(Ps?N3i2pV z#du^^M6Z(xqRlsfGIRKf#J?jrwhcDYcz$0rojI&KXyDd|aNg$FOd|~9AT=a84a4sb z#vZ9+zUNtZQ;zY#PZ2oNBI*DgmB0aI&@WAQ-g?j(J0a~sp%ro8w2*HSkQYB+V+8T;; zE9vWQ;ffU8#eCLRK_I>OrdUw%+SG5_TBha{nI&K?eXBq@s9KHMc^l_57H}4l~-t)E;8zv?> z3&elogbKNPWECJrEe2>MOO=Hpc4(^gqo$f8E%P>`YqTmKcdP?L-{F72I>+QLtl?+I zOjv7?UQA`m^(EMWPOM3XYA)pzQhkk9bc$r+!xvD+G|($o;tf89VLG2%z$r_uz5HXC zY|9O!+y`1#zmk{9))Bb}XcXVY`}o1$z;7MN)p{^IGiq^KFzn8p{;MUiJ@c4xJ(APr zpB|y-t}|cw_wZ@>{^9&>7>WJM0sPyH%lTll%mWGvDgY|&4C?F*3L^|Ub-#d+^L~H7 zKp+gt44qRkP$&42Ind$wu^pd3(cx$zmGhqO__3SGltASb%3&c4TDAQ?m%p#rJdvp= z45}v++M=OvFXk;*gfjvr3<@5|qUa_J`Xi9|Q%tRFl-M#7DiTT(3a@9RZ=`3U2T-5B z22hLyl;t1coe87cAFbcDhxgyLiqE-1%HvxH~16yXXBm518;N$ z!y#d}Ijt>CGRdhnm#Uo20Nu;ZnhOC>>V58Hq3&Lu2}wdz{AW`N^Q|O3N|HG8N@cIqojKfBSYc*G+f*=h`2^0xh0mk$e73aUTfd6OV|Bs%JNCG3-`g%B)rP-D=Sd z=U$(k=OE2sLuSM}ngJrE=_MORYnRu>Pfz5dwYVd-Co=TltpV4|jLZTZm3^T26h=bP z8Kht2e9Y;^SQgnENRu;nSij)EHwktMIFwDzYaIhNjJQv>f$8vnAb6s;K~?5!NK$pvMLKfwky(yb1{#4B)f_UA#;yT`TJgo3two4X z4rxTdv!#krCcNmmjP78JfSdBV7thExvnXlJY!H_(*)a_QYZSv|Wiv}BvCe36p68Il zCY7FJ>C6})>AuQXygWCje~!sYyL#L7*y8lQ^1534-e9;|5^74?Jt$-6UX{*q;)eSX zkTbT?%lhv6Uf}wkz)$;Zmf2M{^DE+}d09s4z zoA;}Hrkni!O8+#3=N0x>Wqu0st4z?RMBbP3v5)6{H_z*@pwBHCm)RJk*IM1zu$k>7 z4EH2!GD(Q~KBNEB+*w9d)ol--kXG^_EiK*M-QC@i(j_P$-Jo=LhjfQXBVE$nNQZR% zkFVDUJ$j#UKfZg6GdLg4{Oz?Cd&Qi427DZqwiic9@iOIEP{7Kn1s~Kj(vddtM`hdN zNQ>7Iacy9_&?)s3-LEdp>3H&N!EAI(4&nJq*Elf;z8U7~F01hB?ya)Gmwr3qyI(RH11_Ldmv%D(p)kAR`x)3?66h)&zW|jLKiJoS=OtB^_FFETqkrDY^YgI$( zTV~F2R=|GX>8n=((6jCCDH*LJ%dLTJDbiGL0*Hl{y~NFwseP{-vi21N3vzAPQL(}t z>(O+itHp$TMr_|Mn%S_=%(9N#sV`fL2O`#r1+)pZ3uP$0LWom!&!}EgJx`=qjQD-S;CKImQD7(-=77p|5#?yGC98=^E=uop8zLu1PkD@#0oU9<1 zN5bzGz{$s-h5H7GiV`nxA&(tL<)oL-K(z`6R?venttfx7$d%qiR&o_uRmcrSd^xAD z`IJFPRPQ;5Np`?#xi2BTY3FH&0*_U&opVK7P!j9fn<`q>YDTLme;@MJSU9Sb$3|>Q za`Bsv-BpUxvr+z5J5kWXJ6k5b`*L!ke(ARMlqgR800+{VqyjtQCmc^gXe_zGzeSyq z0I(sk02LT^h+DGUlmLy5V^dtF5pTGB^@w1&B$jteyhX$rv(9-8BgV#xs~L_nl2Vdf zaJ^gzQL%V4 zlHiQAryz?GR9$r#0CHMmf}`LlqR#LvJ*9>oZQMyP8+AJ*!sRoAq4hqa?9|Xq!Z8U+ zV8-uO47$a4!X3To$_eTwgpe7mmXDi7ls?o}rX30_J&s-aoR5e*;Mfs1Wv>2G@Ve^A zwyVqlnLchjMIHBq>_yM>rFo|i!3ksRAnguTxlaX)Tw+ZGI6Eh#Dm z2$?Sm4vaZm3C!8^I+m(%S2DTtvA9fROsZWTPmrLngK{S=!dxiK(TR5D<42O2cQAcR?rBzW?7wYuM zC;V#0?f4O6lcJUYdh#>H?YJ#>%I1J)1{O_wS#mjP8EGop3azhG7hty5HDsc1VmpTw zFJaH?d<7&h0luxMzK#hSDh;wj7h6y<#B)WXaoboiyo9Wp_cLE~)_M2Uw%N98^}E@#cLdf9df|*w4pNho6ImVlBIPZ$gasHI7VNN83 zF{^4B@zKnPl6kQz!DvWGg_r=Bsctb9-Y&Blq$izE9#KS;<@$k}1v9@CtaLDs?DY9S z`VEVwB#ohpp#GQ{LNXIOUa zBDgLQUbH23mC#ljH9U8zxbVxIV`kvPZGOd+YgJLz zXa1cWW(2Nr%w2MnWNWG&WqA|YTKJzn+by(2##Kj271pKXbIU(2;Lg! z#PE<%5EM%NG1t44eSWwpQ@wAq zIsbVr_odJA5)JY=pEJC?s78w)jdY{#Jyvhki4zQt^IR~Q-}_L}2HVk(3zW7v)Scf> zSk;5uLmLz6?=9~;WJ)FtUKH0tA@3E`hBZlC49i`$PVDF&+9_z)83XRP6lyW0+Q~Vk zRjiRb&~k>e*<#{bwqvH!cIK_@V$8JND0DR0iRTOhB9&IYDl8CKlRH6ar#4#aA5quY zt(;+*;@LsIFBQDjAqfd#1nfkq`C>CerTCjE;tFXt=PzUUr>~2>^8MC2eA}L}C7x1Z@$s)mZ#-KFEQFK~BA#_7p(Y)rg{v2k-%P%?Vd3Da%RVdAi=@LCwwq$Kf zakv1=@ap#$eZeJUhphdyb;l*NwsOlkuZ%xKvFm=ahc}7dNn4@K#^BbRBeD=%gMsN}x2pv zP%N^GAL$Y&3N+nj3bZyp9k1*3K8a&!fU)Untk`Bef};4UMq-DR+Fjr+x}|oM(;$5M z@^nY>)Mo8bmAGW4@p@eTE@jL+?c87~Wmkc_AR1vB(xbRz65-AxE5Wq$&G=Ww32}o; zUqmR2u3%LLqUeTjz%U3|*8{`w88p1vFFM^>`uLzdGU6v3Qz-k=%;3o#ly%Mw3X4D0 z@}2A42@jTiTWcTl*A6H|F4q*M^c4RfUz&bSx z-azY;jbreR;E)XY3s8)?oZR^HNjXdaaPO!HNo*edfaa-$@ zxdV#dL6YO2_*VLRyfZOo=Zo-JL|8&SMbgRc<(L^CbM#|n3N5Tdo+3(aQQ^k!$Wq`= z6s9hbXHv?(gttPA#yKoc*>(Wz&evFlYi^i#@nY#*~uxyup*mDdK7ywZaB5XQiS_$R||R^IOy@#a1&~__e$3 zDmB!XywNt(!=cm!NvH04rBAofYv6ls&H|RK2Z7PsR?KJke zoOMaP#LtQ?s=}CdvswDcF$0smkFeVfS#{#5AFg@CBL?HAhbW;=x0gWrRxW+uNnlST zA*ZO#`-7;{E=x~D!d_uDlyow$$h;-rmp#ox;I(oi&#$;cUt|00!3<4)x)q5|FZH^n zIt6n_pS~-0?63w9L1|;iAM_HKgAJl4Xo|SoPUE-DtzzDyXp1csK@^%8OEgNKq+_^h z(_98#l`3*c?`~!#HI2hp#n$D5HDOGfdHnjRy%pzaIGLDbe4&8Ig*4|LqkPj|fG z4#86EO7rZ^!O)|P5&ys!Q-9)G2csr2$s;bu)@kA8ti3_SEBi56qwu})cy*Cv$^CGY zUUjO@3DYIsM^C(xF{Wv})IpO4lyu`I1$e0aR}L?SqqGJP>c5ONdUlZW2drVkKi(W> zd$T$XjAcCGsPQX2xKnnt zeizuC+Aud0XaCZ*?+!QCox@avXr~c+vLXzj5Z|YZon~XJt|z{9O%1 zrt2ar^|6&u1oW2`y>!deSB9e5_=tHC;!Me}Gasv@FTL1AS8kXV9M*B{6#5_~K2Htbb(-L&cDB9)O0pcCsJ^Kt|~dSDC^ z(@j!#jMsH3O8PU;1xsHKvQ-S?o3YD~(d24bC1`)2RQTsB#h3$h-F zqo@l4TrL>%eT~~-2RXy%;3RL()qirpf+#Cjn`9kYq( zQJRGtA*15*sTR}6GXQYh%JN7n7_AK4(qW_fEm6Ez*J&Vm4Fr~6T)YPwt`dRf>)#Dm zKa6!hjMh$yv$C`NfaG=5BwyPnwGcFF6rR2+1vbj!3X-J4^op6HnRI4$h=b7G{@*x} z+%)m8z;E*lyQSV2f+01oGI5zYhgZM7ySsX_#B_#d$uZ?zMl4@^Ims4Rz0s+mq@OVo z1-UK4h}axELWwB%sP`L*Y*?s_mMB*J6uNqU(hb#p*Zqju<3^obICerTy)%h)MIM(v zOKoRP2&pfknL>17`yWr6qzVos(r~Mw;1jPtdoG~d0LYz;H4h5&vnWg|Ee6qBMtpMl zu?;sF5fUB6+@8r(E>Q|;CJG}^w~+LP1~;7$4khGjQikSyX4Z4N$lco6Va}V|f|jt% z4pzds_)_Is2f<^)h>fm2e@0HPx@5m(&9nU;Z!@{uoHPM(t1&p9l4sF5xfZ@ZELY!R zJo>&VM|q`MoC>Re%r!|XNJv)j@!VP8DlI`A|np_5ZtDQUqW}ZR~ zyN^bQL%iua1l5T}L=i5Px}o#*S*dL^r*dhYdgrKVw4NBn6x_(Poh;hiS}&Z z|BnV}eEi+C^cRDxpOS_W@I~F7HH8dX8*LGKpM_RTIyKP;-ZDfX8m5Z=ixufa-5LEv zM{A{4wfoRgPo@>dRir~Pj#S^#r|=i{ag}b1uLgO}hZfUXz`5J0pzz|ON5TtOxdr>R zRv1xTiieMd+mztO;M?M()BPB-r!dKI0VdW zB#G)p5=JvxjkymDqlO$XJyJ`?HQkamT4l5~@sU>gK$iu2-dn>2 z(}JKboNlxJje${oa1PS9cMT@n&bqU9e&(A|N4eUP@H4MRHZ9>zx1N7e+5al)wMpy6 zGyA0%lc@Yc$0-wf%q=}T^6fLy2BjIl>zQuSrO>2qaGS0@` z1+YG)NghchhthAbC>utyGSPHUH&h-Qii-^eHnq4$}a$J}J#0Q&-wci!FQqQtLWy44z?`A|jX5eE#4pjj=%mqbxOj66ykRqE33-zCK3B zFF`ex0gndgU9?)TM0aQ_)ho6*oX!=m86^&N6&9xZEwd+`YndLeZr?wb-)XdHS0Vmt zV?CDoQj>YhI}TTX5{*sTz{j|jAeq>vDeA~QbQEbf9be*Pg@+(T6XkFrin`e`DJR8s zqJv|K0uQ22tVob6oiGsVbVQ;VR*(SINIG~Ns{t-rg{u&&+6yL%q@oJfN)(&rJ=mmIf<69+){hvniKpOcLJMFW*V>R# z))ZikI3E-HCeW9B250g$gpKviJ$0ds!Nb}*7zo#sr3lP1snVb^w@@YI_{!n0!rm!z zTeJQ;ab3nNm#(c0eOJ=7BFm`RsQuR7p~i-thu%d)&{shbnPTH~AzAgUORV>8uMJ8R;d9gK$tsx*cDz%eau_pceA2@DMn(o$5Q^uS(T~4-BuTabV$Dkml76YPY)*F zfhP+aSE0(Zz_R-_m$-6il3*6uY~ZX-+*3wZ&7B}u8{sS~tyN>?MW%j|0N81E3jp=N z30~$iEuO^_X7JQlvMtGv@JiGlgT;eGwp6HUiWNqWw@|2~pFL}jFaoek@ zh^W=#NauS(9oQ%a!buSnu{`hQ7@qcA3i!n79l%XySrafMc-$&NpT`Wq~kdB3-{Ic`-kEma*zD=0j8|($6 zq?R0jEOkb-qM8F4-$M@o{u1U`bTIScX}kz(M+MSMbcV$FIOPFJ==*L!KZ#kf<3Ui@ zv<6%HV8y9%9)vxM&B@}cCi9P*zGAnuM>QX!q~SFw1Y)kUxfku-budbj&If#>?+KOe zB8c+R>mi~N5>YsJlsA>|OTF8NP*Ha7R;{s=(ius4q)RyAHG2KWOqG0$5~`Y9aY{G# z;A0Nh4-(w6a5TNnE#J7!kIpu|4h2Is=Z$(R&GF1cLMthHm0DDQkZu~0W^d*Khmmz} z%Ao?jg30xbrN zPc?)hC_zyQjbcMJ+ia~P=+dVFI!uv=n9OEeqw`Dko=q5FKFdTZ2K*Wa} z{G}SVC+JB=V)Um<ji-xOZ6IXZSb&k0BkJlPH0YYNdRSDmgZum3D^ZbM{GII-Y_ zF|-K3giT@p@^H7)VLgjiqR;aLH)(AbikZ+a1v6ucIp>8-7A<1}-AEe)Hv8ukw8w|= zgUc5BzLHrpt_efXYUx1~c8Kk`2S)mvL1gXHP$r=_Fu%VGEB36DeF{8ub^|}ZN1=UB zJT7fxWZ-CSV=eH?!2UPSXRC-l**1QF|GiKIM6gcqLGEZUzFqW=4f|ObkKxu( zG<9Ou{d$5U#Pdd%xY-@|bm!;$g&amm#+%b8_3V=_7vOwI(`;Lxw0qP6@Vp}m1L^lK zB*j!yd3Byod>E!vob@1D@Qn$ku7LInuk1OyD-4MI`VNhQqPKauQk988HpiWnh#AJB zkgNhDFVc3cD2UuJhJz_1r!-Ui>xpZWZ3Cy|9k$l}Be>a??h4H>9*Qg;?8+`!>g^1L zO=uQwd+^d5uY+)a>1IorY@+Krn>1EvgLK4Sd<@c^0nM@rt`r3#uL)#A9|yx~ zg&;6~D<^-{fMM|Qt)i-hJsb`(Brzl!BrJV7JtI9+89hCixhgbkIxI0Hmw2)lB#5s; zL0;0@fA8&Yr{Djfw~HN_yW>Rv|MvD!OScITIAu_PXZ_zjE51(~;9=Dv=< zk#NV zZzUI2%z))M?o+C%fF5OD@IUgTfi&{rz7GIf8!K8DE6Yw*t(UX(01vuTzIb{}fMJeS zhP<|bBu6T%T@JXQ|MfZpObr7&vh zwe4j>tFoVxE~*^dSC@PLIhl6E>bDkYx8 z(%{%GE?(0y(h8PM1J!;juJU%fRs$MdknCDeq~E>eQN9ST$!-m+YnOg`;q46fzRWzU zf0eN{ZXT{-W#X>;4g+UY5@iMPxGL-L;+TT*%MSMOxhalwk=!xq#l+89nmwBs%*{zi z*Q?hkiHHZ?S&h?kY2jzI#bG9kPA?sc_bl}w2khmmH@lYimNWv>g0n4FKiW)EAj}p! zN&uD&2NL0EI-ZiDnz%Kt_beMq&6c)rzFCA3hsx(%ooZHiqH=GH8MOVL+ST~kq7HGK zI|VuUm%L8?(Jro6Z2LwaS->O>X!XUdnyMvrt5whxO{Ia-3YdY zg;9ENOmyY9BS;(%qkEj-l05B|XihdtA(>qWqb7M|UOd9C&(64!>%9`{@Ap8erkxKz z8$kH@=*;HrWq(>~e5E1j65r2t0Tzr3Sc~N`>FE{dnQIu!su&rSZJnPWDggI5 z=H+!tDH_Vb{-H{iai&S8&2>q-UOJjX>GAyp%zpQWXwX~BcNMI6x( z7+vdu8zDFZ01~(~058zx=6ms;9~Uy%p1}8S|EwJkVt+5@^B*~|Y_IR9hkwL=Dedz> z_2PkXM5oScjJeOJU{OZ%$@LiHJpdW{5_rj z127f%@B3HaZ?0mXT+lS;58OLoaQ}bff}9;dp`h7sAE3BEi_D+UzvjXPg@Wb*eSn$* zEzy5Me;nuj%nAz11x;-Cz}*L?y88?FuW9c7pn_!1c%ZHVXUd<{zvj^Zg@Wc?cz|9} z{1y6p76wopXu$Xb?mf-F;{NrC0*!fopb`TEMgG!rIeE~tC}=}LV_zST*1%==Pb6sQ z$q%a^C>1n><$-$3@xM_2bre8-{2$;PJb!~fc>IGl6V%Q7f#k{eE9q}e-=Hi|XX^)+ zDF1J)-*lnB4C=^tAeSoGL`~m&1+tHtAo$u<~j|&;>{{E}sFNc<&%G}SL z{7>QU>fD1chS49wz@_LP@zN>c+7} update orders - set + set , finishTime = #{finish_time} where orderId = #{order_id} and buyerUsername = #{buyer_username} and @@ -339,10 +339,16 @@ order by orderId DESC limit 1 - + update orders set buyAmount = #{buy_amount} where orderId = #{order_id} and sellerUsername = #{seller_username} and + + + update orders set packageNumber = #{package_number}, + where orderId = #{order_id} and sellerUsername = #{seller_username} and + + -- Gitee From 6032762124f9cccc5803c586c297ef2c7edbd4d4 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 7 May 2022 13:26:51 +0800 Subject: [PATCH 085/133] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E4=BD=BF=E5=85=B7=E4=BD=93=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E5=92=8C=E7=9C=81=E5=B8=82=E5=8E=BF=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/shop/entity/Address.java | 33 +++++++++++++------ .../main/resources/mapping/AddressMapper.xml | 17 +++++++--- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/entity/Address.java b/back-end_code/src/main/java/com/shop/entity/Address.java index 97da670..dabcf88 100644 --- a/back-end_code/src/main/java/com/shop/entity/Address.java +++ b/back-end_code/src/main/java/com/shop/entity/Address.java @@ -9,7 +9,8 @@ public class Address { private int address_id; private String username; private String realname; - private String address; + private String region; + private String detail; private String phonenumber; private Select selected ; @@ -21,19 +22,22 @@ public class Address { this.username = jsonObject.getString("username"); if (jsonObject.getString("realname") != null) this.realname = jsonObject.getString("realname"); - if (jsonObject.getString("address") != null) - this.address = jsonObject.getString("address"); + if (jsonObject.getString("region") != null) + this.region = jsonObject.getString("region"); + if (jsonObject.getString("detail") != null) + this.detail = jsonObject.getString("detail"); if (jsonObject.getString("phonenumber") != null) this.phonenumber = jsonObject.getString("phonenumber"); if (jsonObject.getString("selected") != null) this.selected = Select.toenum(jsonObject.getString("selected")); } - public Address(int address_id, String username, String realname, String address, String phonenumber, Select selected) { + public Address(int address_id, String username, String realname, String region, String detail, String phonenumber, Select selected) { this.address_id = address_id; this.username = username; this.realname = realname; - this.address = address; + this.region = region; + this.detail = detail; this.phonenumber = phonenumber; this.selected = selected; } @@ -62,12 +66,20 @@ public class Address { this.realname = realname; } - public String getAddress() { - return address; + public String getRegion() { + return region; } - public void setAddress(String address) { - this.address = address; + public void setRegion(String region) { + this.region = region; + } + + public String getDetail() { + return detail; + } + + public void setDetail(String detail) { + this.detail = detail; } public String getPhonenumber() { @@ -95,7 +107,8 @@ public class Address { "address_id=" + address_id + ", username='" + username + '\'' + ", realname='" + realname + '\'' + - ", address='" + address + '\'' + + ", region='" + region + '\'' + + ", detail='" + detail + '\'' + ", phonenumber='" + phonenumber + '\'' + ", selected=" + selected + '}'; diff --git a/back-end_code/src/main/resources/mapping/AddressMapper.xml b/back-end_code/src/main/resources/mapping/AddressMapper.xml index 015a005..fb11e51 100644 --- a/back-end_code/src/main/resources/mapping/AddressMapper.xml +++ b/back-end_code/src/main/resources/mapping/AddressMapper.xml @@ -5,7 +5,8 @@ - + + @@ -21,8 +22,11 @@ realname, - - address, + + region, + + + detail, phonenumber, @@ -40,8 +44,11 @@ #{realname,jdbcType=VARCHAR}, - - #{address,jdbcType=VARCHAR}, + + #{region,jdbcType=VARCHAR}, + + + #{detail,jdbcType=VARCHAR}, #{phonenumber,jdbcType=VARCHAR}, -- Gitee From fb0f306c0d4815a89f339e7ed73072e7b757a172 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 7 May 2022 14:30:04 +0800 Subject: [PATCH 086/133] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E7=9A=84mapper=E6=9B=B4=E6=94=B9=E6=AD=A3=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/src/main/resources/mapping/AddressMapper.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/back-end_code/src/main/resources/mapping/AddressMapper.xml b/back-end_code/src/main/resources/mapping/AddressMapper.xml index fb11e51..7ca371e 100644 --- a/back-end_code/src/main/resources/mapping/AddressMapper.xml +++ b/back-end_code/src/main/resources/mapping/AddressMapper.xml @@ -81,8 +81,11 @@ realname = #{realname,jdbcType=VARCHAR}, - - address = #{address,jdbcType=VARCHAR}, + + region = #{region,jdbcType=VARCHAR}, + + + detail = #{detail,jdbcType=VARCHAR}, phonenumber = #{phonenumber,jdbcType=VARCHAR}, -- Gitee From 44e6e363243d4db07600841a6330233901412371 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sat, 7 May 2022 14:57:46 +0800 Subject: [PATCH 087/133] =?UTF-8?q?=E4=BF=AE=E6=94=B9Address=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E4=BB=A5=E5=90=8E=E4=BC=B4=E9=9A=8F=E7=9A=84=E7=89=A9?= =?UTF-8?q?=E6=B5=81=E4=B8=8B=E5=8D=95ContactInfo=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BB=A5=E5=8F=8AOrder=E6=B6=89=E5=8F=8A?= =?UTF-8?q?=E7=9A=84=E7=9B=B8=E5=85=B3=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/OrderController.java | 7 ----- .../java/com/shop/entity/sf/ContactInfo.java | 31 +++++++++---------- .../java/com/shop/mapper/AddressMapper.java | 7 ----- .../java/com/shop/service/AddressService.java | 1 - .../main/resources/mapping/AddressMapper.xml | 7 ----- .../main/resources/mapping/OrderMapper.xml | 3 +- 6 files changed, 17 insertions(+), 39 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 523b424..8c5bc0d 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -260,13 +260,6 @@ public class OrderController { @PutMapping(value = "/buyer/undelivered") public Object buyerUpdateUndeliveredOrder(@RequestBody JSONObject jsonObject){ Order order = new Order(jsonObject); - if (jsonObject.getJSONObject("address").getInteger("address_id") == null){ - Address address = new Address(jsonObject.getJSONObject("address")); - addressService.addAddress(address); - address = addressService.searchAddressByAddress(address); - System.out.println(address); - order.setAddress(address); - } if (orderService.buyerUpdateUndeliveredOrder(order) >= 1){ return Result.ok("订单:"+order.getOrder_id()+"地址修改成功\n"); }else { diff --git a/back-end_code/src/main/java/com/shop/entity/sf/ContactInfo.java b/back-end_code/src/main/java/com/shop/entity/sf/ContactInfo.java index bf28fec..160aab3 100644 --- a/back-end_code/src/main/java/com/shop/entity/sf/ContactInfo.java +++ b/back-end_code/src/main/java/com/shop/entity/sf/ContactInfo.java @@ -58,7 +58,7 @@ public class ContactInfo { } public ContactInfo(Address address, ContactType contactType){ - this.address = address.getAddress(); + this.address = address.getRegion()+address.getDetail(); this.mobile = address.getPhonenumber(); this.contact = address.getRealname(); this.contactType = ContactType.toInteger(contactType).toString(); @@ -185,7 +185,6 @@ public class ContactInfo { this.taxNo = taxNo; } - @Override public String toString() { final StringBuilder sb = new StringBuilder("{\n"); int num = 0; @@ -193,7 +192,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"contactType\": \"").append(contactType).append("\""); } else { - sb.append(",\n").append("\t\"contactType\": \"").append(contactType).append("\""); + sb.append(",\n").append("\t\t\"contactType\": \"").append(contactType).append("\""); } num = num + 1; } @@ -201,7 +200,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"company\": \"").append(company).append("\""); } else { - sb.append(",\n").append("\t\"company\": \"").append(company).append("\""); + sb.append(",\n").append("\t\t\"company\": \"").append(company).append("\""); } num = num + 1; } @@ -209,7 +208,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"contact\": \"").append(contact).append("\""); } else { - sb.append(",\n").append("\t\"contact\": \"").append(contact).append("\""); + sb.append(",\n").append("\t\t\"contact\": \"").append(contact).append("\""); } num = num + 1; } @@ -217,7 +216,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"tel\": \"").append(tel).append("\""); } else { - sb.append(",\n").append("\t\"tel\": \"").append(tel).append("\""); + sb.append(",\n").append("\t\t\"tel\": \"").append(tel).append("\""); } num = num + 1; } @@ -225,7 +224,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"mobile\": \"").append(mobile).append("\""); } else { - sb.append(",\n").append("\t\"mobile\": \"").append(mobile).append("\""); + sb.append(",\n").append("\t\t\"mobile\": \"").append(mobile).append("\""); } num = num + 1; } @@ -233,7 +232,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"zoneCode\": \"").append(zoneCode).append("\""); } else { - sb.append(",\n").append("\t\"zoneCode\": \"").append(zoneCode).append("\""); + sb.append(",\n").append("\t\t\"zoneCode\": \"").append(zoneCode).append("\""); } num = num + 1; } @@ -241,7 +240,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"country\": \"").append(country).append("\""); } else { - sb.append(",\n").append("\t\"country\": \"").append(country).append("\""); + sb.append(",\n").append("\t\t\"country\": \"").append(country).append("\""); } num = num + 1; } @@ -249,7 +248,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"province\": \"").append(province).append("\""); } else { - sb.append(",\n").append("\t\"province\": \"").append(province).append("\""); + sb.append(",\n").append("\t\t\"province\": \"").append(province).append("\""); } num = num + 1; } @@ -257,7 +256,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"city\": \"").append(city).append("\""); } else { - sb.append(",\n").append("\t\"city\": \"").append(city).append("\""); + sb.append(",\n").append("\t\t\"city\": \"").append(city).append("\""); } num = num + 1; } @@ -265,7 +264,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"county\": \"").append(county).append("\""); } else { - sb.append(",\n").append("\t\"county\": \"").append(county).append("\""); + sb.append(",\n").append("\t\t\"county\": \"").append(county).append("\""); } num = num + 1; } @@ -273,7 +272,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"address\": \"").append(address).append("\""); } else { - sb.append(",\n").append("\t\"address\": \"").append(address).append("\""); + sb.append(",\n").append("\t\t\"address\": \"").append(address).append("\""); } num = num + 1; } @@ -281,7 +280,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"postCode\": \"").append(postCode).append("\""); } else { - sb.append(",\n").append("\t\"postCode\": \"").append(postCode).append("\""); + sb.append(",\n").append("\t\t\"postCode\": \"").append(postCode).append("\""); } num = num + 1; } @@ -289,7 +288,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"email\": \"").append(email).append("\""); } else { - sb.append(",\n").append("\t\"email\": \"").append(email).append("\""); + sb.append(",\n").append("\t\t\"email\": \"").append(email).append("\""); } num = num + 1; } @@ -297,7 +296,7 @@ public class ContactInfo { if (num == 0) { sb.append("\t\t\"taxNo\": \"").append(taxNo).append("\""); } else { - sb.append(",\n").append("\t\"taxNo\": \"").append(taxNo).append("\""); + sb.append(",\n").append("\t\t\"taxNo\": \"").append(taxNo).append("\""); } num = num + 1; } diff --git a/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java b/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java index 08634c6..5980b82 100644 --- a/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java @@ -64,11 +64,4 @@ public interface AddressMapper { * @return */ Address searchAddressById(int address_id); - - /** - *根据Address查询Address - * @param address - * @return - */ - Address searchAddressByAddress(Address address); } diff --git a/back-end_code/src/main/java/com/shop/service/AddressService.java b/back-end_code/src/main/java/com/shop/service/AddressService.java index 6fab768..035573e 100644 --- a/back-end_code/src/main/java/com/shop/service/AddressService.java +++ b/back-end_code/src/main/java/com/shop/service/AddressService.java @@ -20,5 +20,4 @@ public class AddressService { public Address searchAddressById(int address_id){return addressMapper.searchAddressById(address_id);} public int setUnselected(String username){return addressMapper.setUnselected(username);} public int deleteAddressByAddressId(String username,int address_id){return addressMapper.deleteAddressByAddressId(username,address_id);} - public Address searchAddressByAddress(Address address){return addressMapper.searchAddressByAddress(address);} } diff --git a/back-end_code/src/main/resources/mapping/AddressMapper.xml b/back-end_code/src/main/resources/mapping/AddressMapper.xml index 7ca371e..59d4023 100644 --- a/back-end_code/src/main/resources/mapping/AddressMapper.xml +++ b/back-end_code/src/main/resources/mapping/AddressMapper.xml @@ -112,13 +112,6 @@ select * from address where addressId = #{address_id} - - - diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index dfd6769..7537d38 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -26,7 +26,8 @@ - + + -- Gitee From 54818a153d8432e2fb4a4006357a5743325c9750 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 15:38:50 +0800 Subject: [PATCH 088/133] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=89=80=E6=9C=89=E8=AE=A2=E5=8D=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BC=A0=E5=8F=82=E6=96=B9=E5=BC=8F=20=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E5=8D=96=E5=AE=B6=E6=9F=A5=E8=AF=A2=E6=89=80=E6=9C=89?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=8E=A5=E5=8F=A3=E4=BC=A0=E5=8F=82=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/shop/controller/OrderController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 8c5bc0d..5fded99 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -95,8 +95,8 @@ public class OrderController { //根据买家用户名查找所有订单 @GetMapping("/buyer/history") - public Object buyerSearchHistoryOrders(@RequestBody JSONObject jsonObject){ - String buyer_username = jsonObject.getString("buyer_username"); + public Object buyerSearchHistoryOrders(@RequestParam String buyer_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.buyerSearchHistoryOrders(buyer_username); jsonObject.clear(); jsonObject.put("orders",orderList); @@ -105,8 +105,8 @@ public class OrderController { //根据卖家用户名查找所有订单 @GetMapping("/seller/history") - public Object sellerSearchHistoryOrders(@RequestBody JSONObject jsonObject){ - String seller_username = jsonObject.getString("seller_username"); + public Object sellerSearchHistoryOrders(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.sellerSearchHistoryOrders(seller_username); jsonObject.clear(); jsonObject.put("orders",orderList); -- Gitee From f2846c31817b6a65ba9ea76d1c50395f9e6fd68a Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 15:49:29 +0800 Subject: [PATCH 089/133] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=BE=85=E6=94=AF=E4=BB=98=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BC=A0=E5=8F=82=E6=96=B9=E5=BC=8F=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=8D=96=E5=AE=B6=E6=9F=A5=E8=AF=A2=E5=BE=85?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E8=AE=A2=E5=8D=95=E6=8E=A5=E5=8F=A3=E4=BC=A0?= =?UTF-8?q?=E5=8F=82=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/shop/controller/OrderController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 5fded99..df2e5cb 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -115,8 +115,8 @@ public class OrderController { //买家查询待支付的订单 @GetMapping("/buyer/unpaid") - public Object buyerSearchUnpaidOrder(@RequestBody JSONObject jsonObject){ - String buyer_username = jsonObject.getString("buyer_username"); + public Object buyerSearchUnpaidOrder(@RequestParam String buyer_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.buyerSearchUnpaidOrder(buyer_username); jsonObject.clear(); jsonObject.put("orders",orderList); @@ -125,8 +125,8 @@ public class OrderController { //卖家查询待支付的订单 @GetMapping("/seller/unpaid") - public Object sellerSearchUnpaidOrder(@RequestBody JSONObject jsonObject){ - String seller_username = jsonObject.getString("seller_username"); + public Object sellerSearchUnpaidOrder(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.sellerSearchUnpaidOrder(seller_username); jsonObject.clear(); jsonObject.put("orders",orderList); -- Gitee From 4d1af6b0608f41ea9f4610436fab90898407b53c Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 15:55:37 +0800 Subject: [PATCH 090/133] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=BE=85=E7=A1=AE=E8=AE=A4=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BC=A0=E5=8F=82=E6=96=B9=E5=BC=8F=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=8D=96=E5=AE=B6=E6=9F=A5=E8=AF=A2=E5=BE=85?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E8=AE=A2=E5=8D=95=E6=8E=A5=E5=8F=A3=E4=BC=A0?= =?UTF-8?q?=E5=8F=82=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/shop/controller/OrderController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index df2e5cb..4caa231 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -156,8 +156,8 @@ public class OrderController { //买家查询待确认的订单 @GetMapping("/buyer/unconfirmed") - public Object buyerSearchUnconfirmedOrder(@RequestBody JSONObject jsonObject){ - String buyer_username = jsonObject.getString("buyer_username"); + public Object buyerSearchUnconfirmedOrder(@RequestParam String buyer_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.buyerSearchUnconfirmedOrder(buyer_username); jsonObject.clear(); jsonObject.put("orders",orderList); @@ -166,8 +166,8 @@ public class OrderController { //卖家查询待确认的订单 @GetMapping("/seller/unconfirmed") - public Object sellerSearchUnconfirmedOrder(@RequestBody JSONObject jsonObject){ - String seller_username = jsonObject.getString("seller_username"); + public Object sellerSearchUnconfirmedOrder(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.sellerSearchUnconfirmedOrder(seller_username); jsonObject.clear(); jsonObject.put("orders",orderList); -- Gitee From b7b81a26b878241a701320581a644f2be992fbd4 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 16:02:45 +0800 Subject: [PATCH 091/133] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=BE=85=E5=A4=87=E8=B4=A7=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BC=A0=E5=8F=82=E6=96=B9=E5=BC=8F=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=8D=96=E5=AE=B6=E6=9F=A5=E8=AF=A2=E5=BE=85?= =?UTF-8?q?=E5=A4=87=E8=B4=A7=E8=AE=A2=E5=8D=95=E6=8E=A5=E5=8F=A3=E4=BC=A0?= =?UTF-8?q?=E5=8F=82=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/shop/controller/OrderController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 4caa231..80cc25e 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -197,8 +197,8 @@ public class OrderController { //买家查询待备货的订单 @GetMapping("/buyer/unpicked") - public Object buyerSearchUnpickedOrder(@RequestBody JSONObject jsonObject){ - String buyer_username = jsonObject.getString("buyer_username"); + public Object buyerSearchUnpickedOrder(@RequestParam String buyer_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.buyerSearchUnpickedOrder(buyer_username); jsonObject.clear(); jsonObject.put("orders",orderList); @@ -207,8 +207,8 @@ public class OrderController { //卖家查询待备货的订单 @GetMapping("/seller/unpicked") - public Object sellerSearchUnpickedOrder(@RequestBody JSONObject jsonObject){ - String seller_username = jsonObject.getString("seller_username"); + public Object sellerSearchUnpickedOrder(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.sellerSearchUnpickedOrder(seller_username); jsonObject.clear(); jsonObject.put("orders",orderList); -- Gitee From 24d9295156262d5ea8cb1ebad33c92c952d5800c Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 16:04:54 +0800 Subject: [PATCH 092/133] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=BE=85=E5=8F=91=E8=B4=A7=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BC=A0=E5=8F=82=E6=96=B9=E5=BC=8F=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=8D=96=E5=AE=B6=E6=9F=A5=E8=AF=A2=E5=BE=85?= =?UTF-8?q?=E5=8F=91=E8=B4=A7=E8=AE=A2=E5=8D=95=E6=8E=A5=E5=8F=A3=E4=BC=A0?= =?UTF-8?q?=E5=8F=82=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/shop/controller/OrderController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 80cc25e..fa59513 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -238,8 +238,8 @@ public class OrderController { //买家查询待发货的订单 @GetMapping("/buyer/undelivered") - public Object buyerSearchUndeliveredOrder(@RequestBody JSONObject jsonObject){ - String buyer_username = jsonObject.getString("buyer_username"); + public Object buyerSearchUndeliveredOrder(@RequestParam String buyer_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.buyerSearchUndeliveredOrder(buyer_username); jsonObject.clear(); jsonObject.put("orders",orderList); @@ -248,8 +248,8 @@ public class OrderController { //卖家查询待发货的订单 @GetMapping("/seller/undelivered") - public Object sellerSearchUndeliveredOrder(@RequestBody JSONObject jsonObject){ - String seller_username = jsonObject.getString("seller_username"); + public Object sellerSearchUndeliveredOrder(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.sellerSearchUndeliveredOrder(seller_username); jsonObject.clear(); jsonObject.put("orders",orderList); -- Gitee From e84613bbad64c0a93299f835ba5a545fbf0dd42d Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 16:12:38 +0800 Subject: [PATCH 093/133] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=BE=85=E6=94=B6=E8=B4=A7=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BC=A0=E5=8F=82=E6=96=B9=E5=BC=8F=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=8D=96=E5=AE=B6=E6=9F=A5=E8=AF=A2=E5=BE=85?= =?UTF-8?q?=E6=94=B6=E8=B4=A7=E8=AE=A2=E5=8D=95=E6=8E=A5=E5=8F=A3=E4=BC=A0?= =?UTF-8?q?=E5=8F=82=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/shop/controller/OrderController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index fa59513..dc2183e 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -296,8 +296,8 @@ public class OrderController { //买家查询待收货的订单 @GetMapping("/buyer/unarrived") - public Object buyerSearchUnarrivedOrder(@RequestBody JSONObject jsonObject){ - String buyer_username = jsonObject.getString("buyer_username"); + public Object buyerSearchUnarrivedOrder(@RequestParam String buyer_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.buyerSearchUnarrivedOrder(buyer_username); jsonObject.clear(); jsonObject.put("orders",orderList); @@ -306,8 +306,8 @@ public class OrderController { //卖家查询待收货的订单 @GetMapping("/seller/unarrived") - public Object sellerSearchUnarrivedOrder(@RequestBody JSONObject jsonObject){ - String seller_username = jsonObject.getString("seller_username"); + public Object sellerSearchUnarrivedOrder(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.sellerSearchUnarrivedOrder(seller_username); jsonObject.clear(); jsonObject.put("orders",orderList); -- Gitee From 8d2a9d51fab5400faf1af4ffe97c697f93a5e267 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 16:17:53 +0800 Subject: [PATCH 094/133] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95=E6=8E=A5=E5=8F=A3=E9=80=BB?= =?UTF-8?q?=E8=BE=91BUG=20=E9=87=8D=E6=9E=84=E5=8D=96=E5=AE=B6=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E8=AE=A2=E5=8D=95=E6=8E=A5=E5=8F=A3=E9=80=BB=E8=BE=91?= =?UTF-8?q?BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/OrderController.java | 4 ++-- .../src/main/java/com/shop/mapper/OrderMapper.java | 7 ++++--- .../src/main/java/com/shop/service/OrderService.java | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index dc2183e..18377b9 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -346,7 +346,7 @@ public class OrderController { while (objectIterator.hasNext()) { JSONObject jb = (JSONObject) objectIterator.next(); order_id = jb.getInteger("order_id"); - if(orderService.buyerCancelOrder(buyer_username, order_id) < 1) { + if(orderService.buyerCancelOrder(buyer_username, order_id, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())) < 1) { sb.append("订单号: ").append(order_id).append(" 买家取消订单失败\n"); continue; }else{ @@ -367,7 +367,7 @@ public class OrderController { while (objectIterator.hasNext()) { JSONObject jb = (JSONObject) objectIterator.next(); order_id = jb.getInteger("order_id"); - if(orderService.sellerCancelOrder(seller_username, order_id) < 1) { + if(orderService.sellerCancelOrder(seller_username, order_id, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())) < 1) { sb.append("订单号: ").append(order_id).append(" 卖家取消订单失败\n"); continue; }else{ diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 0bb0289..072acb8 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -160,18 +160,19 @@ public interface OrderMapper { * 买家根据order_id(订单ID)取消订单 * @param buyer_username * @param order_id + * @param finish_time * @return */ - Integer buyerCancelOrder(String buyer_username, Integer order_id); + Integer buyerCancelOrder(String buyer_username, Integer order_id,String finish_time); /** * 卖家根据order_id(订单ID)取消订单 * @param seller_username * @param order_id + * @param finish_time * @return */ - Integer sellerCancelOrder(String seller_username, Integer order_id); - + Integer sellerCancelOrder(String seller_username, Integer order_id,String finish_time); /** * 买家根据order_id(订单ID)申请订单售后 diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index dd67481..2870d42 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -52,8 +52,8 @@ public class OrderService { public List sellerSearchUnarrivedOrder(String seller_username){return orderMapper.sellerSearchUnarrivedOrder(seller_username);} public List buyerSearchUnarrivedOrder(String buyer_username){return orderMapper.buyerSearchUnarrivedOrder(buyer_username);} public Integer buyerFinishOrder(String buyer_username,Integer order_id,String finish_time){ return orderMapper.buyerFinishOrder(buyer_username,order_id,finish_time); } - public Integer buyerCancelOrder(String buyer_username,Integer order_id){return orderMapper.buyerCancelOrder(buyer_username,order_id);} - public Integer sellerCancelOrder(String seller_username,Integer order_id){return orderMapper.sellerCancelOrder(seller_username,order_id);} + public Integer buyerCancelOrder(String buyer_username,Integer order_id,String finish_time){return orderMapper.buyerCancelOrder(buyer_username,order_id,finish_time);} + public Integer sellerCancelOrder(String seller_username,Integer order_id,String finish_time){return orderMapper.sellerCancelOrder(seller_username,order_id,finish_time);} // public Integer buyerSubmitAftApplication(String buyer_username, Integer order_id){ return orderMapper.buyerSubmitAftApplication(buyer_username, order_id);}; public List buyerSearchDealingOrder(String buyer_username){return orderMapper.buyerSearchDealingOrder(buyer_username);} public List sellerSearchDealingOrder(String seller_username){ return orderMapper.sellerSearchDealingOrder(seller_username);} -- Gitee From eb8e1f5b51740652272131b71799e9150721c962 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 16:57:36 +0800 Subject: [PATCH 095/133] =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=9F=A5=E6=89=BE?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E6=8E=A5=E5=8F=A3=E8=AE=BF=E9=97=AE=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E5=92=8C=E4=BC=A0=E5=8F=82=E6=96=B9=E5=BC=8F=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=9F=A5=E6=89=BE=E9=BB=98=E8=AE=A4=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E6=8E=A5=E5=8F=A3=E8=AE=BF=E9=97=AE=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E5=92=8C=E4=BC=A0=E5=8F=82=E6=96=B9=E5=BC=8F=20=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E5=88=A0=E9=99=A4=E5=9C=B0=E5=9D=80=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=AE=BF=E9=97=AE=E5=9C=B0=E5=9D=80=E5=92=8C=E4=BC=A0=E5=8F=82?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=20=E9=87=8D=E6=9E=84=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=9C=B0=E5=9D=80=E6=8E=A5=E5=8F=A3=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E5=9C=B0=E5=9D=80=E5=92=8C=E4=BC=A0=E5=8F=82=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/AddressController.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AddressController.java b/back-end_code/src/main/java/com/shop/controller/AddressController.java index f695b34..f8adf09 100644 --- a/back-end_code/src/main/java/com/shop/controller/AddressController.java +++ b/back-end_code/src/main/java/com/shop/controller/AddressController.java @@ -35,8 +35,8 @@ public class AddressController { } //根据买家username查找地址 - @GetMapping("/{username}") - public Object searchUserAddress(@PathVariable String username){ + @GetMapping("/Address") + public Object searchUserAddress(@RequestParam String username){ try{ JSONObject jsonObject = new JSONObject(); List

addresses =addressService.searchUserAddress(username); @@ -48,8 +48,8 @@ public class AddressController { } //根据买家username查找默认地址 - @GetMapping("/Selected/{username}") - public Object searchUserSelectedAddress(@PathVariable String username){ + @GetMapping("/Selected") + public Object searchUserSelectedAddress(@RequestParam String username){ try{ JSONObject jsonObject = new JSONObject(); Address address =addressService.searchUserSelectedAddress(username); @@ -73,8 +73,8 @@ public class AddressController { } //删除地址 - @DeleteMapping("/{address_id}") - public Object deleteAddressByAddressId(@PathVariable int address_id){ + @DeleteMapping("/Address") + public Object deleteAddressByAddressId(@RequestParam int address_id){ try { Address address = addressService.searchAddressById(address_id); if (addressService.deleteAddressByAddressId(address.getUsername(),address_id) < 1) @@ -86,8 +86,8 @@ public class AddressController { } //修改默认地址 - @PutMapping("/{address_id}") - public Object updateSelected(@PathVariable int address_id){ + @PutMapping("/Selected") + public Object updateSelected(@RequestBody int address_id){ try { Address address = addressService.searchAddressById(address_id); Address addressSelected= addressService.searchUserSelectedAddress(address.getUsername()); -- Gitee From 490a770b247524d1976e783de29098faf31dc0d8 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 19:32:57 +0800 Subject: [PATCH 096/133] =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E6=8E=A5=E5=8F=A3=E5=AE=89=E5=85=A8=E9=80=BB?= =?UTF-8?q?=E8=BE=91=20=E9=87=8D=E6=9E=84=E5=88=A0=E9=99=A4=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E6=8E=A5=E5=8F=A3=E4=BC=A0=E5=8F=82=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=92=8C=E5=AE=9E=E7=8E=B0=E6=96=B9=E5=BC=8F=20=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BC=A0=E5=8F=82=E6=95=B0=E6=8D=AE=E5=92=8C?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shop/controller/AddressController.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AddressController.java b/back-end_code/src/main/java/com/shop/controller/AddressController.java index f8adf09..e7eb681 100644 --- a/back-end_code/src/main/java/com/shop/controller/AddressController.java +++ b/back-end_code/src/main/java/com/shop/controller/AddressController.java @@ -64,6 +64,11 @@ public class AddressController { @PutMapping("/Address") public Object updateAddress(@RequestBody Address address){ try { + if (address.getSelected() == Select.Selected) { + if (addressService.setUnselected(address.getUsername()) < 1) { + return Result.fail("更新地址失败"); + } + } if (addressService.updateAddress(address) < 1) return Result.fail("更新地址失败"); } catch (Exception e) { @@ -74,10 +79,9 @@ public class AddressController { //删除地址 @DeleteMapping("/Address") - public Object deleteAddressByAddressId(@RequestParam int address_id){ + public Object deleteAddressByAddressId(@RequestParam String username , @RequestParam int address_id){ try { - Address address = addressService.searchAddressById(address_id); - if (addressService.deleteAddressByAddressId(address.getUsername(),address_id) < 1) + if (addressService.deleteAddressByAddressId(username,address_id) < 1) return Result.fail("删除地址失败"); } catch (Exception e) { return Result.fail(e.toString()); @@ -87,13 +91,12 @@ public class AddressController { //修改默认地址 @PutMapping("/Selected") - public Object updateSelected(@RequestBody int address_id){ + public Object updateSelected(@RequestParam String username , @RequestBody int address_id){ try { - Address address = addressService.searchAddressById(address_id); - Address addressSelected= addressService.searchUserSelectedAddress(address.getUsername()); - if (addressService.setUnselected(address.getUsername()) < 1 && !(addressService.searchUserSelectedAddress(address.getUsername()) == null)) + Address addressSelected= addressService.searchUserSelectedAddress(username); + if (addressService.setUnselected(username) < 1 && !(addressService.searchUserSelectedAddress(username) == null)) return Result.fail("更新地址失败"); - if (addressService.setSelected(address_id,address.getUsername()) < 1){ + if (addressService.setSelected(address_id,username) < 1){ addressService.setSelected(addressSelected.getAddress_id(),addressSelected.getUsername()); return Result.fail("更新地址失败"); } @@ -103,5 +106,4 @@ public class AddressController { return Result.ok("更新地址成功"); } - } -- Gitee From d66d40ec63102ba14f5a6ccaab648f443f2f5f94 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 8 May 2022 19:46:24 +0800 Subject: [PATCH 097/133] =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/pom.xml | 25 ++++ .../com/shop/controller/AlipayController.java | 58 ++++++++ .../java/com/shop/service/AlipayService.java | 56 ++++++++ .../com/shop/service/AlipayServiceImpl.java | 125 ++++++++++++++++++ .../java/com/shop/utils/AlipayConfig.java | 70 ++++++++++ .../main/java/com/shop/utils/AlipayUtil.java | 74 +++++++++++ .../src/main/resources/application-dev.yml | 19 +++ .../src/main/resources/application.yml | 4 + .../src/main/resources/templates/notify.html | 10 ++ .../src/main/resources/templates/pay.html | 10 ++ .../src/main/resources/templates/query.html | 10 ++ 11 files changed, 461 insertions(+) create mode 100644 back-end_code/src/main/java/com/shop/controller/AlipayController.java create mode 100644 back-end_code/src/main/java/com/shop/service/AlipayService.java create mode 100644 back-end_code/src/main/java/com/shop/service/AlipayServiceImpl.java create mode 100644 back-end_code/src/main/java/com/shop/utils/AlipayConfig.java create mode 100644 back-end_code/src/main/java/com/shop/utils/AlipayUtil.java create mode 100644 back-end_code/src/main/resources/templates/notify.html create mode 100644 back-end_code/src/main/resources/templates/pay.html create mode 100644 back-end_code/src/main/resources/templates/query.html diff --git a/back-end_code/pom.xml b/back-end_code/pom.xml index 41c366b..ed8577f 100644 --- a/back-end_code/pom.xml +++ b/back-end_code/pom.xml @@ -101,6 +101,31 @@ jasypt-spring-boot-starter 2.0.0 + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-web + + + com.alipay.sdk + alipay-sdk-java + 4.22.49.ALL + + + + org.springframework.boot + spring-boot-starter-redis + 1.4.7.RELEASE + + + + org.apache.commons + commons-pool2 + diff --git a/back-end_code/src/main/java/com/shop/controller/AlipayController.java b/back-end_code/src/main/java/com/shop/controller/AlipayController.java new file mode 100644 index 0000000..e5712a5 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/AlipayController.java @@ -0,0 +1,58 @@ +package com.shop.controller; + +import com.shop.entity.Order; +import com.shop.utils.AlipayUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @author mumuwei + * @date 0004 + */ +@Controller +public class AlipayController { + + private AlipayUtil alipayUtil; + + @Autowired + public void setAlipayUtil(AlipayUtil alipayUtil) { + this.alipayUtil = alipayUtil; + } + + @GetMapping("/") + public String index(){ + return "index"; + } + + @PostMapping("/create") + public String create(@RequestBody Order order,Model model){ + String id = Integer.toString(order.getOrder_id()); + String title = id; + String price = Float.toString(order.getBuy_amount()); + String pay = alipayUtil.pay(id, price, title); + model.addAttribute("form", pay); + return "pay"; + } + // public String create(String id, String price, String title, Model model){ +// String pay = alipayUtil.pay(id, price, title); +// model.addAttribute("form", pay); +// return "pay"; +// } + @GetMapping("/return") + public String returnNotice(String out_trade_no, Model model){ + String query = alipayUtil.query(out_trade_no); + model.addAttribute("query", query); + return "query"; + } + + @PostMapping("/notify") + public void notifyUrl(String trade_no, String total_amount, String trade_status){ + //System.err.println("支付宝订单编号:" + trade_no + ", 订单金额: " + total_amount + ",订单状态:" + trade_status); + + } +} diff --git a/back-end_code/src/main/java/com/shop/service/AlipayService.java b/back-end_code/src/main/java/com/shop/service/AlipayService.java new file mode 100644 index 0000000..2593da7 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/AlipayService.java @@ -0,0 +1,56 @@ +package com.shop.service; + +import com.alipay.api.AlipayApiException; + +/** + * 支付接口 + * @author lcc + * @data :2018年6月4日 上午10:18:39 + */ +public interface AlipayService { + + /** + * web端订单支付 + * @param outTradeNo 订单编号(唯一) + * @param totalAmount 订单价格 + * @param subject 商品名称 + */ + String webPagePay(String outTradeNo,Integer totalAmount,String subject) throws Exception; + + /** + * app端订单支付 + * @param outTradeNo 订单编号 + * @param totalAmount 订单价格 + * @param subject 商品名称 + */ + String appPagePay(String outTradeNo,Integer totalAmount,String subject) throws Exception; + + /** + * 退款 + * @param outTradeNo 订单编号 + * @param refundReason 退款原因 + * @param refundAmount 退款金额 + * @param outRequestNo 标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传 + */ + String refund(String outTradeNo,String refundReason,Integer refundAmount,String outRequestNo) throws AlipayApiException; + + /** + * 交易查询 + * @param outTradeNo 订单编号(唯一) + */ + String query(String outTradeNo) throws AlipayApiException; + + /** + * 交易关闭 + * @param outTradeNo 订单编号(唯一) + */ + String close(String outTradeNo) throws AlipayApiException; + + /** + * 退款查询 + * @param outTradeNo 订单编号(唯一) + * @param outRequestNo 标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传 + */ + String refundQuery(String outTradeNo,String outRequestNo) throws AlipayApiException; +} + diff --git a/back-end_code/src/main/java/com/shop/service/AlipayServiceImpl.java b/back-end_code/src/main/java/com/shop/service/AlipayServiceImpl.java new file mode 100644 index 0000000..e54a503 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/AlipayServiceImpl.java @@ -0,0 +1,125 @@ +package com.shop.service; + +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.domain.AlipayTradeWapPayModel; +import com.alipay.api.request.*; +import com.shop.utils.AlipayConfig; +import org.springframework.stereotype.Service; + +/** + * 支付实现类 + * @author lcc + * @data :2018年6月4日 上午10:18:07 + */ +@Service("alipayService") +public class AlipayServiceImpl implements AlipayService { + + /** 调取支付宝接口 web端支付*/ + DefaultAlipayClient alipayClient = new DefaultAlipayClient( + AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type); + + /** 调取支付宝接口app端支付*/ + AlipayClient alipayClients = new DefaultAlipayClient( + AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type); + + + @Override + public String webPagePay(String outTradeNo, Integer totalAmount, String subject) throws Exception { + + AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); + /** 同步通知,支付完成后,支付成功页面*/ + alipayRequest.setReturnUrl(AlipayConfig.return_url); + /** 异步通知,支付完成后,需要进行的异步处理*/ + alipayRequest.setNotifyUrl(AlipayConfig.notify_url); + + alipayRequest.setBizContent("{\"out_trade_no\":\""+ outTradeNo +"\"," + + "\"total_amount\":\""+ totalAmount +"\"," + + "\"subject\":\""+ subject +"\"," + + "\"body\":\"商品名称\"," + + "\"timeout_express\":\"90m\"," + + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}"); + + /**转换格式*/ + String result = alipayClient.pageExecute(alipayRequest).getBody().replace('\"','\'').replace('\n',' '); + return result; + } + + @Override + public String refund(String outTradeNo,String refundReason,Integer refundAmount,String outRequestNo) throws AlipayApiException { + AlipayTradeRefundRequest alipayRequest = new AlipayTradeRefundRequest(); + + /** 调取接口*/ + alipayRequest.setBizContent("{\"out_trade_no\":\""+ outTradeNo +"\"," + + "\"refund_amount\":\""+ refundAmount +"\"," + + "\"refund_reason\":\""+ refundReason +"\"," + + "\"out_request_no\":\""+ outRequestNo +"\"}"); + String result = alipayClient.execute(alipayRequest).getBody(); + return result; + } + + @Override + public String query(String outTradeNo) throws AlipayApiException { + AlipayTradeQueryRequest alipayRequest = new AlipayTradeQueryRequest(); + /**请求接口*/ + alipayRequest.setBizContent("{\"out_trade_no\":\""+ outTradeNo +"\","+"\"trade_no\":\""+ "" +"\"}"); + /**转换格式*/ + String result = alipayClient.execute(alipayRequest).getBody(); + return result; + } + + @Override + public String close(String outTradeNo) throws AlipayApiException { + AlipayTradeCloseRequest alipayRequest = new AlipayTradeCloseRequest(); + + alipayRequest.setBizContent("{\"out_trade_no\":\""+ outTradeNo +"\"," +"\"trade_no\":\""+ "" +"\"}"); + + String result = alipayClient.execute(alipayRequest).getBody(); + + return result; + } + + @Override + public String refundQuery(String outTradeNo , String outRequestNo) throws AlipayApiException { + AlipayTradeFastpayRefundQueryRequest alipayRequest = new AlipayTradeFastpayRefundQueryRequest(); + + /** 请求接口*/ + alipayRequest.setBizContent("{\"out_trade_no\":\""+ outTradeNo +"\"," + +"\"out_request_no\":\""+ outRequestNo +"\"}"); + + /** 格式转换*/ + String result = alipayClient.execute(alipayRequest).getBody(); + + return result; + } + + @Override + public String appPagePay(String outTradeNo, Integer totalAmount, String subject) throws Exception { + AlipayTradeWapPayRequest alipayRequest=new AlipayTradeWapPayRequest(); + + /** 同步通知,支付完成后,支付成功页面*/ + alipayRequest.setReturnUrl(AlipayConfig.return_url); + /** 异步通知,支付完成后,需要进行的异步处理*/ + alipayRequest.setNotifyUrl(AlipayConfig.notify_url); + + /**销售产品码(固定)*/ + String productCode="QUICK_WAP_WAY"; + + /** 进行赋值 */ + AlipayTradeWapPayModel wapPayModel=new AlipayTradeWapPayModel(); + wapPayModel.setOutTradeNo(outTradeNo); + wapPayModel.setSubject(subject); + wapPayModel.setTotalAmount(totalAmount.toString()); + wapPayModel.setBody("商品名称"); + wapPayModel.setTimeoutExpress("2m"); + wapPayModel.setProductCode(productCode); + alipayRequest.setBizModel(wapPayModel); + + /** 格式转换*/ + String result = alipayClients.pageExecute(alipayRequest).getBody().replace('\"','\'').replace('\n',' '); + return result; + } + +} + diff --git a/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java b/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java new file mode 100644 index 0000000..f8f5fa5 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java @@ -0,0 +1,70 @@ +package com.shop.utils; + +import java.io.FileWriter; +import java.io.IOException; + +/* * + *类名:AlipayConfig + *功能:基础配置类 + *详细:设置帐户有关信息及返回路径 + *修改日期:2017-04-05 + *说明: + *以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 + *该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 + */ + +public class AlipayConfig { + +//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + + // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号 + public static String app_id = "2021000119638275"; + + // 商户私钥,您的PKCS8格式RSA2私钥 + public static String merchant_private_key = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC13ueKIsQYFhvM9AiT8/4KTPG2RUqWmXyCI90C2MRE13c/H+y8ejiVoYRlnx79lhU+uMXooXxld1KPuUd1YyCcmLcvPGnhkRRDhfoayCY643ODZ5vYrtqQrgpqCPSrYkzc9/j5eVkdIVai3e8hENzcUDJwxSjD1Jat3pdPTo4t6fh/itQiyevDTN5RPRW7m6xsE9BcVum8Q/rgUeyoRNexfktZzgUdxJvSYXIOGxqXNIJ8XnAA+PHu+I4vhCqD8QEtg/JfZpUKf6CnBrN8SPL+YvCUR408izYOMhkr6N1w+/CP/X8vcTAOqtg4wJg/HppqYoglf6hgz65S85bf8BBbAgMBAAECggEAHRPMVQuF6ovuWfBSRsVlwmPW6Vtet4FGpM/zD/d0OcVxLUh/YwrvbQzrzAuKuuR59RM5oR3gc6CGNLBcumnk1uSbtROlogi+AqWy/QEvC4898q5n/lbGXwdUZuuToqsOuu1ygwBhvQSNg3CUQOcfSKIRznHXOKgOhzHlYyqeFLzkBI4PDbJyU/d0biiCCup6wlNCttlvueb8owqeFerhafVwt676d8AQvjAkpONA6RlL+quIxvMMkbqAKuxrjMzcvUJTbdj/liVJBo+bX9LcCPt6x4cY3YmDo88ScBJc6pC8bKXd/kOHcvsNchzumq5NMVedt4pSDC+suRMXN9L84QKBgQD2CAOS4L25oUH19biQ7gSQpVsxTj6gubLuh2fjyKRhS5RC4EyROwramuiQwOVUN7UG7L2RX5UmIJO6TnTW/I4eFhLmnpt8TXrrEZv77b+VqrxmYXlbnIQQX+8kIj0aJ4s0vn7r7zly0iKlbmfCLFXOQhZN2cLko/MBUjp0JgE5iQKBgQC9PWDCaYrNdmM+nMcEpWk7nbk7LHwZ0sKI2lM2QWFxo0RRWknwbEP60k0s0hMWD+Sa+0nOl1P50UAuldfnEbYEN/WMjhxSqdeguOz9pF+KSSgVuvHB5+XkBg2j5SZW1Zd1eARNFBreD5CLNNAlMbF+CDkYjR3quBSBZcdyG8EVwwKBgQCAf50GOJU+/8dIpEb6gyYlOggQD3LMVVDsHhKXuLKKEoRkDWxQKgs4M9Il0Gm2e8Xz0PANnmNy327ozpNdudisRBEpHEvPN1Rss+zJPtpiXCM8Qcq1m2CqgMCRGcTaBS9Co//8UBysKK5pwuk0VB2YtZGapZKSAkMoPH9FLJhVKQKBgE1VbdtFAkIgpUILE5GkfzKrq+ywqy5qYLFId0TuxwGHdP3B5gFoXQd9NaihWMdlS0jCdFEGqnymtJHVDlwRcs6ah7AeyxhE7Cd0KvUkXR7H8qees/lH6Tyb9KsLk/VcZ/7LQwa0tp4Uwj8BICZy/lPAzIRp9tXa0BZpH25URT29AoGBAOzkmsPgrtDrqKX7bXKP9soUfSnT3TqHv4Wau4eapBJdjnJ12i7+v+R5lvJrjgX39gU4zamiKv2Jj4DAYjPMEM82Z1ptr1WcEiMNu3EyOJ2sE7CL8qeFd8VRLC7Y18N4uGSj7oWbd4qNKAP6h9bsou5Nu17F7mYf+1hAINbh33Zq"; + // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 + public static String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqXO3+a2ne7NHY9gvqhkWYZ4iKdK83/S4JRF02xiyXPrF/rTJVefEMPNkJ6lW3/5OPBmx173gxtZ6/1bIX2gj32a8KICbuYW6QlhzkTa6SWk9A7/VD/o7rLuM2jIKA/U2VYzTAGWMYApnvdYL042BPmedplxj0ZJvc/DxCmktdk4E3QP5Xl/tO7ntUVEeZcslA8iFXDP2DCloZ/L/FcYLFCrPHFCijiGb2gMdfWqA9i2FVSd7taSZJNCI5+WJl5LDUDoA3BC/x2FAZ0ZTyX0IVEI4RTARaHXzzc9ROnCyv9YXOHRBvaUooqsM+Pmyj7Y4mHS+SKzvWyyYuPrAZTi8gQIDAQAB"; + // 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 + public static String notify_url = "http://souldays.top:8084/notify"; + + // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 + public static String return_url = "http://localhost:8084/return"; + + // 签名方式 + public static String sign_type = "RSA2"; + + // 字符编码格式 + public static String charset = "utf-8"; + + // 支付宝网关 + public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do"; + + // 日志地址 + public static String log_path = "C:\\"; + + +//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ + + /** + * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库) + * @param sWord 要写入日志里的文本内容 + */ + public static void logResult(String sWord) { + FileWriter writer = null; + try { + writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt"); + writer.write(sWord); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (writer != null) { + try { + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } +} + diff --git a/back-end_code/src/main/java/com/shop/utils/AlipayUtil.java b/back-end_code/src/main/java/com/shop/utils/AlipayUtil.java new file mode 100644 index 0000000..9618f08 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/utils/AlipayUtil.java @@ -0,0 +1,74 @@ +package com.shop.utils; + +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.request.AlipayTradePagePayRequest; +import com.alipay.api.request.AlipayTradeQueryRequest; +import com.alipay.api.response.AlipayTradePagePayResponse; +import com.alipay.api.response.AlipayTradeQueryResponse; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + * @author mumuwei + * @date 0004 + */ +@Component +public class AlipayUtil { + + + + public String pay(String id, String price, String title ){ + AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl,AlipayConfig.app_id, + AlipayConfig.merchant_private_key,"json","UTf-8",AlipayConfig.alipay_public_key,"RSA2"); + AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); + request.setNotifyUrl(AlipayConfig.notify_url); + request.setReturnUrl(AlipayConfig.return_url); + JSONObject bizContent = new JSONObject(); + bizContent.put("out_trade_no", id); + bizContent.put("total_amount", price); + bizContent.put("subject", title); + bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY"); + + request.setBizContent(bizContent.toString()); + AlipayTradePagePayResponse response = null; + String form = null; + try { + response = alipayClient.pageExecute(request); + form = response.getBody(); + } catch (AlipayApiException e) { + e.printStackTrace(); + } + if(response.isSuccess()){ + System.out.println("调用成功"); + } else { + System.out.println("调用失败"); + } + return form; + } + + public String query(String id){ + AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl,AlipayConfig.app_id,AlipayConfig.merchant_private_key, + "json","UTf-8",AlipayConfig.alipay_public_key,"RSA2"); + AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); + JSONObject bizContent = new JSONObject(); + bizContent.put("out_trade_no", id); + request.setBizContent(bizContent.toString()); + AlipayTradeQueryResponse response = null; + String body = null; + try { + response = alipayClient.execute(request); + body = response.getBody(); + } catch (AlipayApiException e) { + e.printStackTrace(); + } + if(response.isSuccess()){ + System.out.println("调用成功"); + } else { + System.out.println("调用失败"); + } + return body; + } +} diff --git a/back-end_code/src/main/resources/application-dev.yml b/back-end_code/src/main/resources/application-dev.yml index 87a4aa2..a7ad658 100644 --- a/back-end_code/src/main/resources/application-dev.yml +++ b/back-end_code/src/main/resources/application-dev.yml @@ -15,6 +15,25 @@ spring: exclude: WEB-INF/** freemarker: cache: false #页面不加载缓存,修改即时生效 + redis: + host: localhost # Redis服务器地址 + database: 0 # Redis数据库索引(默认为0) + port: 6379 # Redis服务器连接端口 + password: # Redis服务器连接密码(默认为空) + jedis: + pool: + max-active: 8 # 连接池最大连接数(使用负值表示没有限制) + max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-idle: 8 # 连接池中的最大空闲连接 + min-idle: 0 # 连接池中的最小空闲连接 + timeout: 3000ms # 连接超时时间(毫秒) +# 自定义redis key +redis: + key: + prefix: + authCode: "portal:authCode:" + expire: + authCode: 120 # 验证码超期时间 mybatis: mapper-locations: classpath:mapping/*.xml diff --git a/back-end_code/src/main/resources/application.yml b/back-end_code/src/main/resources/application.yml index 3d7808a..ba53846 100644 --- a/back-end_code/src/main/resources/application.yml +++ b/back-end_code/src/main/resources/application.yml @@ -1,3 +1,7 @@ spring: profiles: active: dev + thymeleaf: + cache: false + suffix: .html + prefix: classpath:/templates/ \ No newline at end of file diff --git a/back-end_code/src/main/resources/templates/notify.html b/back-end_code/src/main/resources/templates/notify.html new file mode 100644 index 0000000..cb97048 --- /dev/null +++ b/back-end_code/src/main/resources/templates/notify.html @@ -0,0 +1,10 @@ + + + + + Title + + +

支付宝沙箱支付异步通知

+ + \ No newline at end of file diff --git a/back-end_code/src/main/resources/templates/pay.html b/back-end_code/src/main/resources/templates/pay.html new file mode 100644 index 0000000..d8a3be3 --- /dev/null +++ b/back-end_code/src/main/resources/templates/pay.html @@ -0,0 +1,10 @@ + + + + + Title + + +
+ + \ No newline at end of file diff --git a/back-end_code/src/main/resources/templates/query.html b/back-end_code/src/main/resources/templates/query.html new file mode 100644 index 0000000..7654bb8 --- /dev/null +++ b/back-end_code/src/main/resources/templates/query.html @@ -0,0 +1,10 @@ + + + + + Title + + +
+ + \ No newline at end of file -- Gitee From 7f36128a25b318cf44d1fa42890dc45ac9c0f2aa Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 8 May 2022 20:31:07 +0800 Subject: [PATCH 098/133] =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/AlipayController.java | 5 +- .../src/main/resources/templates/index.html | 62 +++---------------- 2 files changed, 11 insertions(+), 56 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AlipayController.java b/back-end_code/src/main/java/com/shop/controller/AlipayController.java index e5712a5..583a8b2 100644 --- a/back-end_code/src/main/java/com/shop/controller/AlipayController.java +++ b/back-end_code/src/main/java/com/shop/controller/AlipayController.java @@ -30,10 +30,7 @@ public class AlipayController { } @PostMapping("/create") - public String create(@RequestBody Order order,Model model){ - String id = Integer.toString(order.getOrder_id()); - String title = id; - String price = Float.toString(order.getBuy_amount()); + public String create(String id, String price, String title, Model model){ String pay = alipayUtil.pay(id, price, title); model.addAttribute("form", pay); return "pay"; diff --git a/back-end_code/src/main/resources/templates/index.html b/back-end_code/src/main/resources/templates/index.html index b7c103a..ca9fcdf 100644 --- a/back-end_code/src/main/resources/templates/index.html +++ b/back-end_code/src/main/resources/templates/index.html @@ -1,58 +1,16 @@ - + - - demo - - - + + Title - - -
- - - -
- +

支付宝沙箱支付

+
+ 订单编号:
+ 订单金额:
+ 订单标题:
+ +
\ No newline at end of file -- Gitee From e8ef4b05fea24b9f6664ccb7351017279645968a Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 20:39:57 +0800 Subject: [PATCH 099/133] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=B8=8B=E5=8D=95=E5=AE=89=E5=85=A8=E6=80=A7=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=20=E4=BF=AE=E5=A4=8D=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95=E6=B2=A1=E6=9C=89=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E8=AE=A2=E5=8D=95=E7=BB=93=E6=9D=9F=E6=97=B6=E9=97=B4?= =?UTF-8?q?BUG=20=E4=BF=AE=E5=A4=8D=E5=8D=96=E5=AE=B6=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=B2=A1=E6=9C=89=E8=AE=BE=E7=BD=AE=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=BB=93=E6=9D=9F=E6=97=B6=E9=97=B4BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/OrderController.java | 31 ++++++++++++++++++- .../main/resources/mapping/OrderMapper.xml | 7 ++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 18377b9..ee39f0d 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -50,6 +50,10 @@ public class OrderController { public Object addOrder(@RequestBody JSONObject jsonObject){ Order order = new Order(jsonObject); boolean cart = jsonObject.getBoolean("cart"); + Address address = addressService.searchAddressById(order.getAddress().getAddress_id()); + if (address == null || !order.getBuyer_username().equals(address.getUsername())){ + return Result.fail("地址有误"); + } order.setCreate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); orderService.addOrder(order); order = orderService.searchNewOrder(order); @@ -67,6 +71,10 @@ public class OrderController { jb = (JSONObject) objectIterator.next(); item_id = jb.getInteger("item_id"); good = goodsService.searchGoods(item_id); + if (good == null){ + sb.append("商品ID: ").append(item_id).append(" 下单失败").append(" ,原因:该商品不存在\n"); + continue; + } if (good.getGoods_state() != GoodState.Selling){ sb.append("商品: ").append(good.getGoods_name()).append(" 下单失败").append(" ,原因:该商品非售\n"); continue; @@ -87,10 +95,17 @@ public class OrderController { cartService.deleteCart(order.getBuyer_username(), good.getItem_id()); } sb.append("商品: ").append(good.getGoods_name()).append(" 下单成功\n"); + good = null; + snapshot = null; + orderDetail = null; } if (jsonObject.getFloat("buy_amount") == null) orderService.setAmountByOrderId(order.getOrder_id(),order.getSeller_username(), buy_amount); - return Result.ok(sb.toString()); + order = orderService.searchOrderByOrderId(order.getOrder_id()); + jsonObject.clear(); + jsonObject.put("result",sb.toString()); + jsonObject.put("order" ,order); + return Result.ok(jsonObject); } //根据买家用户名查找所有订单 @@ -460,4 +475,18 @@ public class OrderController { } return Result.ok(sb); } + + @PostMapping("/test") + public Object test(@RequestBody JSONObject jsonObject) throws UnsupportedEncodingException { + Order order = new Order(jsonObject); + ResultData resultData = (ResultData) sfService.EXP_RECE_SEARCH_ORDER_RESP(order); + jsonObject.clear(); + if (resultData.getApiResultData().getSuccess()){ + jsonObject.put("Deliver_result",true); + jsonObject.put("package_number",resultData.getApiResultData().getMsgData().getWaybillNoInfoList().get(0).getWaybillNo()); + }else { + jsonObject.put("Deliver_result",false); + } + return Result.ok(jsonObject); + } } diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 7537d38..202d85e 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -241,7 +241,7 @@ update orders - set + set , finishTime = #{finish_time} where orderId = #{order_id} and buyerUsername = #{buyer_username} and @@ -249,12 +249,11 @@ update orders - set + set , finishTime = #{finish_time} where orderId = #{order_id} and sellerUsername = #{seller_username} and - update orders @@ -288,7 +287,7 @@ update orders - set ,finishTime = #{finish_time} + set where orderId = #{order_id} and sellerUsername = #{seller_username} -- Gitee From 31c95db5645f11de321f0ab9949c8fa196d58264 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 8 May 2022 20:41:56 +0800 Subject: [PATCH 100/133] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E7=AB=AF=E5=8F=A3?= =?UTF-8?q?=E6=94=B9=E6=88=908085?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/src/main/java/com/shop/utils/AlipayConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java b/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java index f8f5fa5..5edb05b 100644 --- a/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java +++ b/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java @@ -25,10 +25,10 @@ public class AlipayConfig { // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 public static String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqXO3+a2ne7NHY9gvqhkWYZ4iKdK83/S4JRF02xiyXPrF/rTJVefEMPNkJ6lW3/5OPBmx173gxtZ6/1bIX2gj32a8KICbuYW6QlhzkTa6SWk9A7/VD/o7rLuM2jIKA/U2VYzTAGWMYApnvdYL042BPmedplxj0ZJvc/DxCmktdk4E3QP5Xl/tO7ntUVEeZcslA8iFXDP2DCloZ/L/FcYLFCrPHFCijiGb2gMdfWqA9i2FVSd7taSZJNCI5+WJl5LDUDoA3BC/x2FAZ0ZTyX0IVEI4RTARaHXzzc9ROnCyv9YXOHRBvaUooqsM+Pmyj7Y4mHS+SKzvWyyYuPrAZTi8gQIDAQAB"; // 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 - public static String notify_url = "http://souldays.top:8084/notify"; + public static String notify_url = "http://souldays.top:8085/notify"; // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 - public static String return_url = "http://localhost:8084/return"; + public static String return_url = "http://localhost:8085/return"; // 签名方式 public static String sign_type = "RSA2"; -- Gitee From 06b5b35163c7a44d1da73385323dc102b954b1ad Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 20:48:18 +0800 Subject: [PATCH 101/133] =?UTF-8?q?=E9=87=8D=E6=9E=84SF=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E4=B8=8B=E5=8D=95=E6=88=90=E5=8A=9F=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/service/SFService.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/service/SFService.java b/back-end_code/src/main/java/com/shop/service/SFService.java index 94433dc..5596346 100644 --- a/back-end_code/src/main/java/com/shop/service/SFService.java +++ b/back-end_code/src/main/java/com/shop/service/SFService.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.sf.csim.express.service.CallExpressServiceTools; import com.sf.csim.express.service.HttpClientUtil; import com.shop.entity.Order; +import com.shop.entity.sf.ConfirmOrder; import com.shop.entity.sf.CreateOrder; import com.shop.entity.sf.ResultData; import org.springframework.stereotype.Service; @@ -41,13 +42,14 @@ public class SFService { return jsonObject; } public Object EXP_RECE_CREATE_ORDER(Order order) throws UnsupportedEncodingException { - System.out.println(order.getOrder_id()); String request = new CreateOrder(order).toString(); JSONObject temp = SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); return new ResultData(temp); } - public Object EXP_RECE_SEARCH_ORDER_RESP(String msgData) throws UnsupportedEncodingException { - return SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),msgData); + public Object EXP_RECE_SEARCH_ORDER_RESP(Order order) throws UnsupportedEncodingException { + String request = new ConfirmOrder(order).toString(); + JSONObject temp = SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); + return new ResultData(temp); } public Object EXP_RECE_UPDATE_ORDER(String msgData) throws UnsupportedEncodingException { return SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),msgData); -- Gitee From 12ceb7c2603bd92fb10aa8926a0244ffc80ab969 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 20:52:34 +0800 Subject: [PATCH 102/133] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=A1=AE=E5=AE=9A?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E4=B8=8B=E5=8D=95=E6=88=90=E5=8A=9FConfirmOr?= =?UTF-8?q?der=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/shop/entity/sf/ConfirmOrder.java | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/ConfirmOrder.java diff --git a/back-end_code/src/main/java/com/shop/entity/sf/ConfirmOrder.java b/back-end_code/src/main/java/com/shop/entity/sf/ConfirmOrder.java new file mode 100644 index 0000000..c68ce2b --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/ConfirmOrder.java @@ -0,0 +1,73 @@ +package com.shop.entity.sf; + +import com.shop.entity.Order; + +public class ConfirmOrder { + private String searchType; + private String orderId; + private String language = "zh-cn"; + + public ConfirmOrder() { + } + + public ConfirmOrder(Order order) { + this.orderId = order.getOrder_id().toString(); + this.searchType = "1"; + } + + public String getSearchType() { + return searchType; + } + + public void setSearchType(String searchType) { + this.searchType = searchType; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{\n"); + int num = 0; + if (this.searchType != null) { + if (num == 0) { + sb.append("\t\"searchType\": \"").append(searchType).append("\""); + } else { + sb.append(",\n").append("\t\"searchType\": \"").append(searchType).append("\""); + } + num = num + 1; + } + if (this.orderId != null) { + if (num == 0) { + sb.append("\t\"orderId\": \"").append(orderId).append("\""); + } else { + sb.append(",\n").append("\t\"orderId\": \"").append(orderId).append("\""); + } + num = num + 1; + } + if (this.language != null) { + if (num == 0) { + sb.append("\t\"language\": \"").append(language).append("\""); + } else { + sb.append(",\n").append("\t\"language\": \"").append(language).append("\""); + } + num = num + 1; + } + sb.append("\n}"); + return sb.toString(); + } +} -- Gitee From 53ef458156a5d58e8623b2b0072e6c841695c871 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 21:29:44 +0800 Subject: [PATCH 103/133] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=9C=B0=E5=9D=80=E6=8E=A5=E5=8F=A3BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/AddressController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AddressController.java b/back-end_code/src/main/java/com/shop/controller/AddressController.java index e7eb681..438ace4 100644 --- a/back-end_code/src/main/java/com/shop/controller/AddressController.java +++ b/back-end_code/src/main/java/com/shop/controller/AddressController.java @@ -91,7 +91,7 @@ public class AddressController { //修改默认地址 @PutMapping("/Selected") - public Object updateSelected(@RequestParam String username , @RequestBody int address_id){ + public Object updateSelected(@RequestParam String username , @RequestParam int address_id){ try { Address addressSelected= addressService.searchUserSelectedAddress(username); if (addressService.setUnselected(username) < 1 && !(addressService.searchUserSelectedAddress(username) == null)) -- Gitee From e0230c6a4caf1b376ec6e7094ad2d5522a035ece Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 21:47:29 +0800 Subject: [PATCH 104/133] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=9C=B0=E5=9D=80=E4=BC=A0=E5=8F=82=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/shop/controller/AddressController.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AddressController.java b/back-end_code/src/main/java/com/shop/controller/AddressController.java index 438ace4..edf9ac8 100644 --- a/back-end_code/src/main/java/com/shop/controller/AddressController.java +++ b/back-end_code/src/main/java/com/shop/controller/AddressController.java @@ -1,10 +1,10 @@ package com.shop.controller; +import com.alibaba.fastjson.JSONObject; import com.shop.Enum.Select; import com.shop.entity.Address; import com.shop.service.AddressService; import com.shop.utils.Result; -import net.minidev.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -91,8 +91,12 @@ public class AddressController { //修改默认地址 @PutMapping("/Selected") - public Object updateSelected(@RequestParam String username , @RequestParam int address_id){ + public Object updateSelected(@RequestBody JSONObject jsonObject){ try { + String username = jsonObject.getString("username"); + Integer address_id = jsonObject.getInteger("address_id"); + System.out.println(username); + System.out.println(address_id); Address addressSelected= addressService.searchUserSelectedAddress(username); if (addressService.setUnselected(username) < 1 && !(addressService.searchUserSelectedAddress(username) == null)) return Result.fail("更新地址失败"); -- Gitee From 41c45e2c125c4f530df121270f2d0501a18fc4ec Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 21:50:30 +0800 Subject: [PATCH 105/133] =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E8=AF=AD=E5=8F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/AddressController.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AddressController.java b/back-end_code/src/main/java/com/shop/controller/AddressController.java index edf9ac8..0909866 100644 --- a/back-end_code/src/main/java/com/shop/controller/AddressController.java +++ b/back-end_code/src/main/java/com/shop/controller/AddressController.java @@ -95,8 +95,6 @@ public class AddressController { try { String username = jsonObject.getString("username"); Integer address_id = jsonObject.getInteger("address_id"); - System.out.println(username); - System.out.println(address_id); Address addressSelected= addressService.searchUserSelectedAddress(username); if (addressService.setUnselected(username) < 1 && !(addressService.searchUserSelectedAddress(username) == null)) return Result.fail("更新地址失败"); -- Gitee From 208e9fb883a9252492b008da03a4fe9dcfef2a92 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sun, 8 May 2022 22:14:48 +0800 Subject: [PATCH 106/133] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E8=AE=A2=E5=8D=95ID=E6=9F=A5=E8=AF=A2=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/shop/controller/OrderController.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index ee39f0d..0e2f92f 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -8,6 +8,7 @@ import com.shop.utils.Result; import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import sun.text.resources.sk.JavaTimeSupplementary_sk; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; @@ -44,6 +45,16 @@ public class OrderController { @Autowired private SFService sfService; + //根据订单ID查询订单 + @GetMapping("/ID") + public Object searchOrderByOrderId(@RequestParam int order_id){ + JSONObject jsonObject = new JSONObject(); + System.out.println(order_id); + Order order = orderService.searchOrderByOrderId(order_id); + System.out.println(order); + jsonObject.put("order",order); + return Result.ok(jsonObject); + } //用户下单 @PostMapping("/Orders") -- Gitee From b69e07b3a80640b565c77e12a4ca1ddfee244425 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Mon, 9 May 2022 11:10:27 +0800 Subject: [PATCH 107/133] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B7=B2=E7=AD=BE=E6=94=B6=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E6=96=B0=E5=A2=9E=E5=8D=96=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B7=B2=E7=AD=BE=E6=94=B6=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E6=96=B0=E5=A2=9E=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B7=B2=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E6=96=B0=E5=A2=9E=E5=8D=96=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B7=B2=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/OrderController.java | 39 +++++++++++++++++++ .../java/com/shop/mapper/OrderMapper.java | 39 ++++++++++++++++--- .../java/com/shop/service/OrderService.java | 8 +++- .../main/java/com/shop/service/SFService.java | 9 +++++ .../main/resources/mapping/OrderMapper.xml | 32 +++++++++++++++ 5 files changed, 120 insertions(+), 7 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 0e2f92f..43a4f91 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -359,7 +359,26 @@ public class OrderController { } } return Result.ok(sb); + } + + //买家查询已签收的订单 + @GetMapping("/buyer/finish") + public Object buyerSearchFinishOrder(@RequestParam String buyer_username){ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.buyerSearchFinishOrder(buyer_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + } + //卖家查询已签收的订单 + @GetMapping("/seller/finish") + public Object sellerSearchFinishOrder(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchFinishOrder(seller_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); } //买家根据order_id(订单ID)取消订单 @@ -404,6 +423,26 @@ public class OrderController { return Result.ok(sb); } + //买家查询已取消的订单 + @GetMapping("/buyer/cancel") + public Object buyerSearchCancelOrder(@RequestParam String buyer_username){ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.buyerSearchCancelOrder(buyer_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + } + + //卖家查询已取消的订单 + @GetMapping("/seller/cancel") + public Object sellerSearchCancelOrder(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchCancelOrder(seller_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + } + //买家查询售后处理中的订单 /*@GetMapping("/buyer/dealing") public Object buyerSearchDealingOrder(@RequestBody JSONObject jsonObject){ diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 072acb8..cda0e34 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -134,6 +134,13 @@ public interface OrderMapper { */ Integer sellerDeliverOrder(String seller_username,Integer order_id); + /** + * 买家查询待收货的订单 + * @param buyer_username + * @return + */ + List buyerSearchUnarrivedOrder(String buyer_username); + /** * 卖家查询待收货的订单 * @param seller_username @@ -142,19 +149,26 @@ public interface OrderMapper { List sellerSearchUnarrivedOrder(String seller_username); /** - * 买家查询待收货的订单 + * 买家根据order_id(订单ID)完成交易 + * @param order_id * @param buyer_username * @return */ - List buyerSearchUnarrivedOrder(String buyer_username); + Integer buyerFinishOrder(String buyer_username,Integer order_id,String finish_time); /** - * 买家根据order_id(订单ID)完成交易 - * @param order_id + * 买家查询已签收的订单 * @param buyer_username * @return */ - Integer buyerFinishOrder(String buyer_username,Integer order_id,String finish_time); + List buyerSearchFinishOrder(String buyer_username); + + /** + * 卖家查询已签收的订单 + * @param seller_username + * @return + */ + List sellerSearchFinishOrder(String seller_username); /** * 买家根据order_id(订单ID)取消订单 @@ -174,6 +188,21 @@ public interface OrderMapper { */ Integer sellerCancelOrder(String seller_username, Integer order_id,String finish_time); + /** + * 买家查询已取消的订单 + * @param buyer_username + * @return + */ + List buyerSearchCancelOrder(String buyer_username); + + /** + * 卖家查询已取消的订单 + * @param seller_username + * @return + */ + List sellerSearchCancelOrder(String seller_username); + + /** * 买家根据order_id(订单ID)申请订单售后 * @param buyer_username diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index 2870d42..660dffc 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -49,12 +49,16 @@ public class OrderService { public List sellerSearchUndeliveredOrder(String seller_username){return orderMapper.sellerSearchUndeliveredOrder(seller_username);} public Integer buyerUpdateUndeliveredOrder(Order order){return orderMapper.buyerUpdateUndeliveredOrder(order);} public Integer sellerDeliverOrder(String seller_username,Integer order_id){return orderMapper.sellerDeliverOrder(seller_username,order_id);} - public List sellerSearchUnarrivedOrder(String seller_username){return orderMapper.sellerSearchUnarrivedOrder(seller_username);} public List buyerSearchUnarrivedOrder(String buyer_username){return orderMapper.buyerSearchUnarrivedOrder(buyer_username);} + public List sellerSearchUnarrivedOrder(String seller_username){return orderMapper.sellerSearchUnarrivedOrder(seller_username);} public Integer buyerFinishOrder(String buyer_username,Integer order_id,String finish_time){ return orderMapper.buyerFinishOrder(buyer_username,order_id,finish_time); } + public List buyerSearchFinishOrder(String buyer_username){return orderMapper.buyerSearchFinishOrder(buyer_username);} + public List sellerSearchFinishOrder(String seller_username){return orderMapper.sellerSearchFinishOrder(seller_username);} public Integer buyerCancelOrder(String buyer_username,Integer order_id,String finish_time){return orderMapper.buyerCancelOrder(buyer_username,order_id,finish_time);} public Integer sellerCancelOrder(String seller_username,Integer order_id,String finish_time){return orderMapper.sellerCancelOrder(seller_username,order_id,finish_time);} -// public Integer buyerSubmitAftApplication(String buyer_username, Integer order_id){ return orderMapper.buyerSubmitAftApplication(buyer_username, order_id);}; + public List buyerSearchCancelOrder(String buyer_username){return orderMapper.buyerSearchCancelOrder(buyer_username);} + public List sellerSearchCancelOrder(String seller_username){return orderMapper.sellerSearchCancelOrder(seller_username);} + // public Integer buyerSubmitAftApplication(String buyer_username, Integer order_id){ return orderMapper.buyerSubmitAftApplication(buyer_username, order_id);}; public List buyerSearchDealingOrder(String buyer_username){return orderMapper.buyerSearchDealingOrder(buyer_username);} public List sellerSearchDealingOrder(String seller_username){ return orderMapper.sellerSearchDealingOrder(seller_username);} public Integer sellerAcceptAftApplication(String seller_username, Integer order_id){ return orderMapper.sellerAcceptAftApplication(seller_username, order_id,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}; diff --git a/back-end_code/src/main/java/com/shop/service/SFService.java b/back-end_code/src/main/java/com/shop/service/SFService.java index 5596346..1860879 100644 --- a/back-end_code/src/main/java/com/shop/service/SFService.java +++ b/back-end_code/src/main/java/com/shop/service/SFService.java @@ -7,6 +7,7 @@ import com.shop.entity.Order; import com.shop.entity.sf.ConfirmOrder; import com.shop.entity.sf.CreateOrder; import com.shop.entity.sf.ResultData; +import com.shop.entity.sf.SearchOrder; import org.springframework.stereotype.Service; import java.io.UnsupportedEncodingException; @@ -51,6 +52,14 @@ public class SFService { JSONObject temp = SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); return new ResultData(temp); } + public Object EXP_RECE_SEARCH_ROUTES(String package_number) throws UnsupportedEncodingException { + String request = new SearchOrder(package_number).toString(); + return SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); + } + public Object EXP_RECE_SEARCH_ROUTES(int order_id) throws UnsupportedEncodingException { + String request = new SearchOrder(order_id).toString(); + return SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); + } public Object EXP_RECE_UPDATE_ORDER(String msgData) throws UnsupportedEncodingException { return SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),msgData); } diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 202d85e..8d7348a 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -238,6 +238,22 @@ where orderId = #{order_id} and buyerUsername = #{buyer_username} and + + + + + + update orders @@ -254,6 +270,22 @@ and + + + + + + update orders -- Gitee From 987b9405fc2cd38c5fe7f4f7e4b9d9ea458064fe Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Mon, 9 May 2022 11:32:55 +0800 Subject: [PATCH 108/133] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B7=B2=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3BUG=20=E4=BF=AE=E5=A4=8D=E5=8D=96=E5=AE=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B7=B2=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/src/main/resources/mapping/OrderMapper.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 8d7348a..c530e67 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -275,15 +275,15 @@ select * from orders ,address ,orderdetail ,snapshot where orders.buyerUsername = #{buyer_username} and orderdetail.orderId = orders.orderId and orders.addressId = address.addressId and orderdetail.snapshotId = snapshot.snapshotId - and + and -- Gitee From 8c51f075e89ee15e9708442463a64366b42bf4cf Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 9 May 2022 13:03:38 +0800 Subject: [PATCH 109/133] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E4=BD=BF=E4=B9=8B=E8=BF=94=E5=9B=9E?= =?UTF-8?q?form=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/AlipayController.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AlipayController.java b/back-end_code/src/main/java/com/shop/controller/AlipayController.java index 583a8b2..3ee8bed 100644 --- a/back-end_code/src/main/java/com/shop/controller/AlipayController.java +++ b/back-end_code/src/main/java/com/shop/controller/AlipayController.java @@ -30,10 +30,9 @@ public class AlipayController { } @PostMapping("/create") - public String create(String id, String price, String title, Model model){ + public String create(String id, String price, String title){ String pay = alipayUtil.pay(id, price, title); - model.addAttribute("form", pay); - return "pay"; + return pay; } // public String create(String id, String price, String title, Model model){ // String pay = alipayUtil.pay(id, price, title); -- Gitee From 8327f8f2fc0bb809efee243c71bb083eb85d74ef Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Mon, 9 May 2022 15:00:18 +0800 Subject: [PATCH 110/133] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=A1=BA=E4=B8=B0=E8=AE=A2=E5=8D=95=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/shop/entity/sf/SearchOrder.java | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/SearchOrder.java diff --git a/back-end_code/src/main/java/com/shop/entity/sf/SearchOrder.java b/back-end_code/src/main/java/com/shop/entity/sf/SearchOrder.java new file mode 100644 index 0000000..b26afed --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/SearchOrder.java @@ -0,0 +1,104 @@ +package com.shop.entity.sf; + +import java.util.ArrayList; +import java.util.List; + +public class SearchOrder { + private String language = "0"; + private String trackingType; + private List trackingNumber; + private String methodType = "1"; + + public SearchOrder(int order_id) { + this.methodType = "2"; + String track_number = String.valueOf(order_id); + List trackingNumber = new ArrayList(); + trackingNumber.add(track_number); + this.trackingNumber = trackingNumber; + } + public SearchOrder(String package_number) { + this.methodType = "1"; + String track_number = package_number; + List trackingNumber = new ArrayList(); + trackingNumber.add(track_number); + this.trackingNumber = trackingNumber; + } + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } + + public String getTrackingType() { + return trackingType; + } + + public void setTrackingType(String trackingType) { + this.trackingType = trackingType; + } + + public List getTrackingNumber() { + return trackingNumber; + } + + public void setTrackingNumber(List trackingNumber) { + this.trackingNumber = trackingNumber; + } + + public String getMethodType() { + return methodType; + } + + public void setMethodType(String methodType) { + this.methodType = methodType; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{\n"); + int num = 0; + if (this.language != null) { + if (num == 0) { + sb.append("\t\"language\": \"").append(language).append("\""); + } else { + sb.append(",\n").append("\t\"language\": \"").append(language).append("\""); + } + num = num + 1; + } + if (this.trackingType != null) { + if (num == 0) { + sb.append("\t\"trackingType\": \"").append(trackingType).append("\""); + } else { + sb.append(",\n").append("\t\"trackingType\": \"").append(trackingType).append("\""); + } + num = num + 1; + } + if (this.trackingNumber != null) { + if (num == 0) { + sb.append("\t\"trackingNumber\": ").append(trackingNumber); + } else { + sb.append(",\n").append("\t\"trackingNumber\": ").append(trackingNumber); + } + num = num + 1; + } + if (this.methodType != null) { + if (num == 0) { + sb.append("\t\"methodType\": \"").append(methodType).append("\""); + } else { + sb.append(",\n").append("\t\"methodType\": \"").append(methodType).append("\""); + } + num = num + 1; + } + sb.append("\n}"); + return sb.toString(); + } +} +/*{ + "language": "0", + "trackingType": "1", + "trackingNumber": ["0SF7444434587815"], + "methodType": "1", + }*/ -- Gitee From 9268d94e20301c322c2c156206010e256e784e9b Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 9 May 2022 19:19:24 +0800 Subject: [PATCH 111/133] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=80=E4=BA=9Bsna?= =?UTF-8?q?pshot=E9=87=8C=E4=B8=8D=E5=AD=98=E5=9C=A8=E7=9A=84=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapping/OrderDetailMapper.xml | 1 - back-end_code/src/main/resources/mapping/OrderMapper.xml | 1 - back-end_code/src/main/resources/mapping/SnapshotMapper.xml | 4 ---- 3 files changed, 6 deletions(-) diff --git a/back-end_code/src/main/resources/mapping/OrderDetailMapper.xml b/back-end_code/src/main/resources/mapping/OrderDetailMapper.xml index 0c9ff60..ef4e823 100644 --- a/back-end_code/src/main/resources/mapping/OrderDetailMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderDetailMapper.xml @@ -10,7 +10,6 @@ - diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index c530e67..dc3ab45 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -10,7 +10,6 @@ - diff --git a/back-end_code/src/main/resources/mapping/SnapshotMapper.xml b/back-end_code/src/main/resources/mapping/SnapshotMapper.xml index fc517ac..6572f61 100644 --- a/back-end_code/src/main/resources/mapping/SnapshotMapper.xml +++ b/back-end_code/src/main/resources/mapping/SnapshotMapper.xml @@ -9,7 +9,6 @@ - @@ -92,9 +91,6 @@ goodsPrice = #{goods_price,jdbcType=REAL}, - - goodsState = #{goods_state,jdbcType=VARCHAR}, - where snapshotId = #{snapshot_id,jdbcType=INTEGER} -- Gitee From ce85a09cb065d3ac9838b2dd98a3c7f95d7e3448 Mon Sep 17 00:00:00 2001 From: szr <851817852@qq.com> Date: Mon, 9 May 2022 21:00:00 +0800 Subject: [PATCH 112/133] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E6=9E=84?= =?UTF-8?q?=E9=80=A0goods=E6=97=B6=E8=8E=B7=E5=8F=96item=5Fid=E9=80=A0?= =?UTF-8?q?=E6=88=90=E7=9A=84=E7=A9=BA=E6=8C=87=E9=92=88=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/src/main/java/com/shop/entity/Goods.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/back-end_code/src/main/java/com/shop/entity/Goods.java b/back-end_code/src/main/java/com/shop/entity/Goods.java index b53e981..c0c200c 100644 --- a/back-end_code/src/main/java/com/shop/entity/Goods.java +++ b/back-end_code/src/main/java/com/shop/entity/Goods.java @@ -56,7 +56,7 @@ public class Goods { public Goods(JSONObject jsonObject, String seller_username) { Iterator objectIterator; - this.item_id = jsonObject.getInteger("item_id"); + /*this.item_id = jsonObject.getInteger("item_id");*/ this.goods_name = jsonObject.getString("goods_name"); this.seller_username = seller_username; this.goods_stock = jsonObject.getInteger("goods_stock"); -- Gitee From a986d64955da87dd039860db91a24b3f6793887e Mon Sep 17 00:00:00 2001 From: szr <851817852@qq.com> Date: Mon, 9 May 2022 21:21:03 +0800 Subject: [PATCH 113/133] =?UTF-8?q?=E6=9F=A5=E6=89=BE=E5=87=BA=E5=94=AE?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=A2=9E=E5=8A=A0=E5=8D=96=E5=AE=B6=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=90=8D=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/GoodsController.java | 4 ++-- back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java | 2 +- .../src/main/java/com/shop/service/GoodsService.java | 2 +- back-end_code/src/main/resources/mapping/GoodsMapper.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 0873d84..33bafc7 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -98,10 +98,10 @@ public class GoodsController { //在goods表中查找所有正在出售的商品 @GetMapping(value = "/searchSellingGoods") - public Object searchSellingGoods(){ + public Object searchSellingGoods(@RequestParam String seller_username){ try { JSONObject jsonObject = new JSONObject(); - List goods= goodsService.searchSellingGoods(); + List goods= goodsService.searchSellingGoods(seller_username); jsonObject.put("goods",goods); return Result.ok(jsonObject); }catch (Exception e){ diff --git a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java index 9c715a8..19bd6d5 100644 --- a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java @@ -49,7 +49,7 @@ public interface GoodsMapper { * 在Goods表中查找所有正在出售的商品 * @return */ - List searchSellingGoods(); + List searchSellingGoods(String seller_username); /** * 在Goods表中查找所有商品 diff --git a/back-end_code/src/main/java/com/shop/service/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java index d9095f5..778c61c 100644 --- a/back-end_code/src/main/java/com/shop/service/GoodsService.java +++ b/back-end_code/src/main/java/com/shop/service/GoodsService.java @@ -23,7 +23,7 @@ public class GoodsService { public Goods getNewItem(String goods_name, String goods_img,String goods_describe){ return goodsMapper.getNewItem(goods_name,goods_img,goods_describe);} public Goods searchGoods(int item_id){ return goodsMapper.searchGoods(item_id); } public int updateGoodsState(String seller_username,int item_id,int new_state){return goodsMapper.updateGoodsState(seller_username,item_id, new_state);} - public List searchSellingGoods(){return goodsMapper.searchSellingGoods();}//一页8条 + public List searchSellingGoods(String seller_username){return goodsMapper.searchSellingGoods(seller_username);}//一页8条 public List searchFreezingGoods(String seller_username){return goodsMapper.searchFreezingGoods(seller_username);}//一页10条 public List searchHistoryGoods(String seller_username){ return goodsMapper.searchHistoryGoods(seller_username);}//一页10条 public int updateGoods(Goods newgoods){ diff --git a/back-end_code/src/main/resources/mapping/GoodsMapper.xml b/back-end_code/src/main/resources/mapping/GoodsMapper.xml index 9e2df59..c1b7503 100644 --- a/back-end_code/src/main/resources/mapping/GoodsMapper.xml +++ b/back-end_code/src/main/resources/mapping/GoodsMapper.xml @@ -121,7 +121,7 @@ -- Gitee From f7d5117e9aaf57dc57f66ccd62762ba6c396e819 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 9 May 2022 21:24:50 +0800 Subject: [PATCH 114/133] =?UTF-8?q?=E8=BF=94=E5=9B=9Eform?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/AlipayController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AlipayController.java b/back-end_code/src/main/java/com/shop/controller/AlipayController.java index 3ee8bed..3425dad 100644 --- a/back-end_code/src/main/java/com/shop/controller/AlipayController.java +++ b/back-end_code/src/main/java/com/shop/controller/AlipayController.java @@ -34,7 +34,7 @@ public class AlipayController { String pay = alipayUtil.pay(id, price, title); return pay; } - // public String create(String id, String price, String title, Model model){ +// public String create(String id, String price, String title, Model model){ // String pay = alipayUtil.pay(id, price, title); // model.addAttribute("form", pay); // return "pay"; -- Gitee From 89ec2c0733de6ba9173ffebb1f4855c62c64a8ee Mon Sep 17 00:00:00 2001 From: szr <851817852@qq.com> Date: Mon, 9 May 2022 21:28:48 +0800 Subject: [PATCH 115/133] =?UTF-8?q?=E5=9B=9E=E6=BB=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/GoodsController.java | 4 ++-- back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java | 2 +- .../src/main/java/com/shop/service/GoodsService.java | 2 +- back-end_code/src/main/resources/mapping/GoodsMapper.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 33bafc7..0873d84 100644 --- a/back-end_code/src/main/java/com/shop/controller/GoodsController.java +++ b/back-end_code/src/main/java/com/shop/controller/GoodsController.java @@ -98,10 +98,10 @@ public class GoodsController { //在goods表中查找所有正在出售的商品 @GetMapping(value = "/searchSellingGoods") - public Object searchSellingGoods(@RequestParam String seller_username){ + public Object searchSellingGoods(){ try { JSONObject jsonObject = new JSONObject(); - List goods= goodsService.searchSellingGoods(seller_username); + List goods= goodsService.searchSellingGoods(); jsonObject.put("goods",goods); return Result.ok(jsonObject); }catch (Exception e){ diff --git a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java index 19bd6d5..9c715a8 100644 --- a/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java @@ -49,7 +49,7 @@ public interface GoodsMapper { * 在Goods表中查找所有正在出售的商品 * @return */ - List searchSellingGoods(String seller_username); + List searchSellingGoods(); /** * 在Goods表中查找所有商品 diff --git a/back-end_code/src/main/java/com/shop/service/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java index 778c61c..d9095f5 100644 --- a/back-end_code/src/main/java/com/shop/service/GoodsService.java +++ b/back-end_code/src/main/java/com/shop/service/GoodsService.java @@ -23,7 +23,7 @@ public class GoodsService { public Goods getNewItem(String goods_name, String goods_img,String goods_describe){ return goodsMapper.getNewItem(goods_name,goods_img,goods_describe);} public Goods searchGoods(int item_id){ return goodsMapper.searchGoods(item_id); } public int updateGoodsState(String seller_username,int item_id,int new_state){return goodsMapper.updateGoodsState(seller_username,item_id, new_state);} - public List searchSellingGoods(String seller_username){return goodsMapper.searchSellingGoods(seller_username);}//一页8条 + public List searchSellingGoods(){return goodsMapper.searchSellingGoods();}//一页8条 public List searchFreezingGoods(String seller_username){return goodsMapper.searchFreezingGoods(seller_username);}//一页10条 public List searchHistoryGoods(String seller_username){ return goodsMapper.searchHistoryGoods(seller_username);}//一页10条 public int updateGoods(Goods newgoods){ diff --git a/back-end_code/src/main/resources/mapping/GoodsMapper.xml b/back-end_code/src/main/resources/mapping/GoodsMapper.xml index c1b7503..9e2df59 100644 --- a/back-end_code/src/main/resources/mapping/GoodsMapper.xml +++ b/back-end_code/src/main/resources/mapping/GoodsMapper.xml @@ -121,7 +121,7 @@ -- Gitee From 7e7cb106fc8b6baea922938a5d804ffc1be6db00 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 9 May 2022 22:54:20 +0800 Subject: [PATCH 116/133] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E5=89=8D=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/pom.xml | 8 ++--- .../com/shop/controller/AlipayController.java | 30 ++++++++++++------- .../java/com/shop/service/AlipayService.java | 2 +- .../com/shop/service/AlipayServiceImpl.java | 2 +- .../java/com/shop/utils/AlipayConfig.java | 2 +- .../main/java/com/shop/utils/AlipayUtil.java | 2 +- .../src/main/resources/application.yml | 8 ++--- .../src/main/resources/templates/index.html | 3 +- .../src/main/resources/templates/notify.html | 10 ------- 9 files changed, 32 insertions(+), 35 deletions(-) delete mode 100644 back-end_code/src/main/resources/templates/notify.html diff --git a/back-end_code/pom.xml b/back-end_code/pom.xml index ed8577f..89da7f9 100644 --- a/back-end_code/pom.xml +++ b/back-end_code/pom.xml @@ -102,10 +102,10 @@ 2.0.0 - - org.springframework.boot - spring-boot-starter-thymeleaf - + + + + org.springframework.boot spring-boot-starter-web diff --git a/back-end_code/src/main/java/com/shop/controller/AlipayController.java b/back-end_code/src/main/java/com/shop/controller/AlipayController.java index 3425dad..5e089a7 100644 --- a/back-end_code/src/main/java/com/shop/controller/AlipayController.java +++ b/back-end_code/src/main/java/com/shop/controller/AlipayController.java @@ -1,37 +1,45 @@ package com.shop.controller; +import com.alibaba.fastjson.JSONObject; import com.shop.entity.Order; +import com.shop.service.AlipayServiceImpl; import com.shop.utils.AlipayUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.*; /** * @author mumuwei * @date 0004 */ -@Controller +@RestController +@RequestMapping("/pay") public class AlipayController { private AlipayUtil alipayUtil; + @Autowired + private AlipayServiceImpl alipayService; @Autowired public void setAlipayUtil(AlipayUtil alipayUtil) { this.alipayUtil = alipayUtil; } - @GetMapping("/") - public String index(){ - return "index"; - } + @PostMapping("/create") - public String create(String id, String price, String title){ - String pay = alipayUtil.pay(id, price, title); + public String create(@RequestBody JSONObject jsonObject){ + String pay = null; + String id = jsonObject.getString("id"); + Float price= Float.valueOf(jsonObject.getString("price")); + String title= jsonObject.getString("title"); + try { + System.out.println(id + "," + price + ","+title); + pay = alipayService.webPagePay(id, price,title); + } catch (Exception e) { + e.printStackTrace(); + } return pay; } // public String create(String id, String price, String title, Model model){ diff --git a/back-end_code/src/main/java/com/shop/service/AlipayService.java b/back-end_code/src/main/java/com/shop/service/AlipayService.java index 2593da7..8f139ba 100644 --- a/back-end_code/src/main/java/com/shop/service/AlipayService.java +++ b/back-end_code/src/main/java/com/shop/service/AlipayService.java @@ -15,7 +15,7 @@ public interface AlipayService { * @param totalAmount 订单价格 * @param subject 商品名称 */ - String webPagePay(String outTradeNo,Integer totalAmount,String subject) throws Exception; + String webPagePay(String outTradeNo,Float totalAmount,String subject) throws Exception; /** * app端订单支付 diff --git a/back-end_code/src/main/java/com/shop/service/AlipayServiceImpl.java b/back-end_code/src/main/java/com/shop/service/AlipayServiceImpl.java index e54a503..f00ff5d 100644 --- a/back-end_code/src/main/java/com/shop/service/AlipayServiceImpl.java +++ b/back-end_code/src/main/java/com/shop/service/AlipayServiceImpl.java @@ -26,7 +26,7 @@ public class AlipayServiceImpl implements AlipayService { @Override - public String webPagePay(String outTradeNo, Integer totalAmount, String subject) throws Exception { + public String webPagePay(String outTradeNo, Float totalAmount, String subject) throws Exception { AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); /** 同步通知,支付完成后,支付成功页面*/ diff --git a/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java b/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java index 5edb05b..471feca 100644 --- a/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java +++ b/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java @@ -28,7 +28,7 @@ public class AlipayConfig { public static String notify_url = "http://souldays.top:8085/notify"; // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 - public static String return_url = "http://localhost:8085/return"; + public static String return_url = "http://localhost:8069"; // 签名方式 public static String sign_type = "RSA2"; diff --git a/back-end_code/src/main/java/com/shop/utils/AlipayUtil.java b/back-end_code/src/main/java/com/shop/utils/AlipayUtil.java index 9618f08..37d7823 100644 --- a/back-end_code/src/main/java/com/shop/utils/AlipayUtil.java +++ b/back-end_code/src/main/java/com/shop/utils/AlipayUtil.java @@ -20,7 +20,7 @@ public class AlipayUtil { - public String pay(String id, String price, String title ){ + public String pay(Integer id, Float price, Integer title ){ AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl,AlipayConfig.app_id, AlipayConfig.merchant_private_key,"json","UTf-8",AlipayConfig.alipay_public_key,"RSA2"); AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); diff --git a/back-end_code/src/main/resources/application.yml b/back-end_code/src/main/resources/application.yml index ba53846..0cecd7b 100644 --- a/back-end_code/src/main/resources/application.yml +++ b/back-end_code/src/main/resources/application.yml @@ -1,7 +1,7 @@ spring: profiles: active: dev - thymeleaf: - cache: false - suffix: .html - prefix: classpath:/templates/ \ No newline at end of file +# thymeleaf: +# cache: false +# suffix: .html +# prefix: classpath:/templates/ \ No newline at end of file diff --git a/back-end_code/src/main/resources/templates/index.html b/back-end_code/src/main/resources/templates/index.html index ca9fcdf..511f7b2 100644 --- a/back-end_code/src/main/resources/templates/index.html +++ b/back-end_code/src/main/resources/templates/index.html @@ -6,8 +6,7 @@

支付宝沙箱支付

-
- 订单编号:
+ 订单编号:
订单金额:
订单标题:
diff --git a/back-end_code/src/main/resources/templates/notify.html b/back-end_code/src/main/resources/templates/notify.html deleted file mode 100644 index cb97048..0000000 --- a/back-end_code/src/main/resources/templates/notify.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -

支付宝沙箱支付异步通知

- - \ No newline at end of file -- Gitee From a5ce275766c42cdb63c818138f29b2f635e40c3b Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Mon, 16 May 2022 15:07:25 +0800 Subject: [PATCH 117/133] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=95=86=E5=93=81=E6=97=B6=E5=80=99=E9=80=BB=E8=BE=91BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/entity/Goods.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/entity/Goods.java b/back-end_code/src/main/java/com/shop/entity/Goods.java index c0c200c..ccdbde8 100644 --- a/back-end_code/src/main/java/com/shop/entity/Goods.java +++ b/back-end_code/src/main/java/com/shop/entity/Goods.java @@ -56,14 +56,21 @@ public class Goods { public Goods(JSONObject jsonObject, String seller_username) { Iterator objectIterator; - /*this.item_id = jsonObject.getInteger("item_id");*/ - this.goods_name = jsonObject.getString("goods_name"); + if (jsonObject.getInteger("item_id") != null) + this.item_id = jsonObject.getInteger("item_id"); + if (jsonObject.getString("goods_name") != null) + this.goods_name = jsonObject.getString("goods_name"); this.seller_username = seller_username; - this.goods_stock = jsonObject.getInteger("goods_stock"); - this.goods_img = jsonObject.getString("goods_img"); - this.goods_describe = jsonObject.getString("goods_describe"); - this.goods_category = jsonObject.getInteger("goods_category"); - this.goods_price = jsonObject.getFloatValue("goods_price"); + if (jsonObject.getInteger("goods_stock") != null) + this.goods_stock = jsonObject.getInteger("goods_stock"); + if (jsonObject.getString("goods_img") != null) + this.goods_img = jsonObject.getString("goods_img"); + if (jsonObject.getString("goods_describe") != null) + this.goods_describe = jsonObject.getString("goods_describe"); + if (jsonObject.getInteger("goods_category") != null) + this.goods_category = jsonObject.getInteger("goods_category"); + if (jsonObject.getFloat("goods_price") != null) + this.goods_price = jsonObject.getFloatValue("goods_price"); } public int getItem_id() { -- Gitee From e14e813f9f78eb9f072d59d85460b1a07e9f3eba Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Mon, 16 May 2022 17:34:37 +0800 Subject: [PATCH 118/133] =?UTF-8?q?=E6=96=B0=E5=A2=9EPackageController=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=80=9A=E8=BF=87=E7=89=A9=E6=B5=81=E5=8D=95?= =?UTF-8?q?=E5=8F=B7=E6=9F=A5=E8=AF=A2=E7=89=A9=E6=B5=81=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2=E7=89=A9=E6=B5=81?= =?UTF-8?q?=E5=8D=95=E5=8F=B7=E7=9B=B8=E5=85=B3=E7=B1=BB=20=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E5=8D=96=E5=AE=B6=E6=9F=A5=E8=AF=A2=E5=90=8C=E6=84=8F?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E8=AE=A2=E5=8D=95=E4=BC=A0=E5=8F=82=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=20=E9=87=8D=E6=9E=84=E5=8D=96=E5=AE=B6=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=8B=92=E7=BB=9D=E9=80=80=E6=AC=BE=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=BC=A0=E5=8F=82=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/OrderController.java | 25 ++------ .../shop/controller/PackageController.java | 30 +++++++++ .../main/java/com/shop/entity/sf/Route.java | 64 +++++++++++++++++++ .../java/com/shop/entity/sf/RouteResp.java | 61 ++++++++++++++++++ .../shop/entity/sf/RoutesApiResultData.java | 57 +++++++++++++++++ .../com/shop/entity/sf/RoutesResultData.java | 57 +++++++++++++++++ .../com/shop/entity/sf/RoutesmsgDate.java | 40 ++++++++++++ .../java/com/shop/entity/sf/SearchOrder.java | 12 ++-- .../main/java/com/shop/service/SFService.java | 16 ++--- 9 files changed, 328 insertions(+), 34 deletions(-) create mode 100644 back-end_code/src/main/java/com/shop/controller/PackageController.java create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/Route.java create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/RouteResp.java create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/RoutesApiResultData.java create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/RoutesResultData.java create mode 100644 back-end_code/src/main/java/com/shop/entity/sf/RoutesmsgDate.java diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 43a4f91..a776f45 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -8,9 +8,9 @@ import com.shop.utils.Result; import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import sun.text.resources.sk.JavaTimeSupplementary_sk; import java.io.UnsupportedEncodingException; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -485,20 +485,18 @@ public class OrderController { //卖家查询同意退款的订单 @GetMapping("/seller/aft_ok") - public Object sellerSearchAfterOkrOrder(@RequestBody JSONObject jsonObject){ - String seller_username = jsonObject.getString("seller_username"); + public Object sellerSearchAfterOkrOrder(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.sellerSearchAfterOkrOrder(seller_username); - jsonObject.clear(); jsonObject.put("orders",orderList); return Result.ok(jsonObject); } //卖家查询拒绝退款的订单 @GetMapping("/seller/aft_fail") - public Object sellerSearchAfterFailOrder(@RequestBody JSONObject jsonObject){ - String seller_username = jsonObject.getString("seller_username"); + public Object sellerSearchAfterFailOrder(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); List orderList = orderService.sellerSearchAfterFailOrder(seller_username); - jsonObject.clear(); jsonObject.put("orders",orderList); return Result.ok(jsonObject); } @@ -526,17 +524,4 @@ public class OrderController { return Result.ok(sb); } - @PostMapping("/test") - public Object test(@RequestBody JSONObject jsonObject) throws UnsupportedEncodingException { - Order order = new Order(jsonObject); - ResultData resultData = (ResultData) sfService.EXP_RECE_SEARCH_ORDER_RESP(order); - jsonObject.clear(); - if (resultData.getApiResultData().getSuccess()){ - jsonObject.put("Deliver_result",true); - jsonObject.put("package_number",resultData.getApiResultData().getMsgData().getWaybillNoInfoList().get(0).getWaybillNo()); - }else { - jsonObject.put("Deliver_result",false); - } - return Result.ok(jsonObject); - } } diff --git a/back-end_code/src/main/java/com/shop/controller/PackageController.java b/back-end_code/src/main/java/com/shop/controller/PackageController.java new file mode 100644 index 0000000..06a7e1c --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/PackageController.java @@ -0,0 +1,30 @@ +package com.shop.controller; + +import com.alibaba.fastjson.JSONObject; +import com.shop.entity.Order; +import com.shop.entity.sf.ResultData; +import com.shop.entity.sf.RouteResp; +import com.shop.entity.sf.RoutesResultData; +import com.shop.service.SFService; +import com.shop.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.io.UnsupportedEncodingException; +import java.text.ParseException; + +@RestController +@RequestMapping("/package") +public class PackageController { + @Autowired + private SFService sfService; + + @GetMapping("/routes") + public Object SearchRoutes(@RequestParam String package_number) throws UnsupportedEncodingException, ParseException { + JSONObject jsonObject = new JSONObject(); + RoutesResultData resultData = (RoutesResultData) sfService.EXP_RECE_SEARCH_ROUTES(package_number); + RouteResp routeResp = resultData.getApiResultData().getMsgData().getRouteResps().get(0); + jsonObject.put("routes",routeResp); + return Result.ok(jsonObject); + } +} diff --git a/back-end_code/src/main/java/com/shop/entity/sf/Route.java b/back-end_code/src/main/java/com/shop/entity/sf/Route.java new file mode 100644 index 0000000..e694a47 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/Route.java @@ -0,0 +1,64 @@ +package com.shop.entity.sf; + +import com.alibaba.fastjson.JSONObject; + +import java.text.ParseException; +import java.util.Iterator; + +public class Route { + private String acceptTime; //路由节点发生的时间,格式:YYYY- MM-DD HH24:MM:SS,示例:2012-7-30 09:30:00 T + private String acceptAddress; // 路由节点发生的地点 F-100 + private String remark; // 路由节点具体描述 T-150 + private String opCode; // 路由节点操作码 T-50 + + public Route(JSONObject jsonObject) throws ParseException { + Iterator objectIterator; + if (jsonObject.getDate("acceptTime") != null) + this.acceptTime = jsonObject.getString("acceptTime"); + if (jsonObject.getString("acceptAddress") != null) + this.acceptAddress = jsonObject.getString("acceptAddress"); + if (jsonObject.getString("remark") != null) + this.remark = jsonObject.getString("remark"); + if (jsonObject.getString("opCode") != null) + this.opCode = jsonObject.getString("opCode"); + } + + public Route(String acceptTime, String acceptAddress, String remark, String opCode) { + this.acceptTime = acceptTime; + this.acceptAddress = acceptAddress; + this.remark = remark; + this.opCode = opCode; + } + + public String getAcceptTime() { + return acceptTime; + } + + public void setAcceptTime(String acceptTime) { + this.acceptTime = acceptTime; + } + + public String getAcceptAddress() { + return acceptAddress; + } + + public void setAcceptAddress(String acceptAddress) { + this.acceptAddress = acceptAddress; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getOpCode() { + return opCode; + } + + public void setOpCode(String opCode) { + this.opCode = opCode; + } +} diff --git a/back-end_code/src/main/java/com/shop/entity/sf/RouteResp.java b/back-end_code/src/main/java/com/shop/entity/sf/RouteResp.java new file mode 100644 index 0000000..8aea88f --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/RouteResp.java @@ -0,0 +1,61 @@ +package com.shop.entity.sf; + +import com.alibaba.fastjson.JSONObject; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class RouteResp { + private String mailNo; // 顺丰运单号 T-10 + private List routes = new ArrayList(); // 路由信息(列表) + private String orderId; // 客户订单号 T-10 + + public RouteResp(JSONObject jsonObject) throws ParseException { + Iterator objectIterator; + if (jsonObject.getString("mailNo") != null) + this.mailNo = jsonObject.getString("mailNo"); + if (jsonObject.getJSONArray("routes") != null) { + objectIterator = jsonObject.getJSONArray("routes").iterator(); + Route Route; + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + Route = new Route(jb); + this.routes.add(Route); + } + } + if (jsonObject.getString("orderId") != null) + this.orderId = jsonObject.getString("orderId"); + } + + public RouteResp(String mailNo, List routes, String orderId) { + this.mailNo = mailNo; + this.routes = routes; + this.orderId = orderId; + } + + public String getMailNo() { + return mailNo; + } + + public void setMailNo(String mailNo) { + this.mailNo = mailNo; + } + + public List getRoutes() { + return routes; + } + + public void setRoutes(List routes) { + this.routes = routes; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } +} diff --git a/back-end_code/src/main/java/com/shop/entity/sf/RoutesApiResultData.java b/back-end_code/src/main/java/com/shop/entity/sf/RoutesApiResultData.java new file mode 100644 index 0000000..a9516fb --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/RoutesApiResultData.java @@ -0,0 +1,57 @@ +package com.shop.entity.sf; + +import com.alibaba.fastjson.JSONObject; + +import java.text.ParseException; +import java.util.Iterator; + +public class RoutesApiResultData { + private Boolean success; + private String errorCode; + private String errorMsg; + private RoutesmsgDate msgData; + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public String getErrorCode() { + return errorCode; + } + + public void setErrorCode(String errorCode) { + this.errorCode = errorCode; + } + + public String getErrorMsg() { + return errorMsg; + } + + public RoutesmsgDate getMsgData() { + return msgData; + } + + public void setMsgData(RoutesmsgDate msgData) { + this.msgData = msgData; + } + + public void setErrorMsg(String errorMsg) { + this.errorMsg = errorMsg; + } + + public RoutesApiResultData(JSONObject jsonObject) throws ParseException { + Iterator objectIterator; + if (jsonObject.getBoolean("success") != null) + this.success = jsonObject.getBoolean("success"); + if (jsonObject.getString("errorCode") != null) + this.errorCode = jsonObject.getString("errorCode"); + if (jsonObject.getString("errorMsg") != null) + this.errorMsg = jsonObject.getString("errorMsg"); + if (jsonObject.getJSONObject("msgData") != null) + this.msgData = new RoutesmsgDate(jsonObject.getJSONObject("msgData")); + } +} diff --git a/back-end_code/src/main/java/com/shop/entity/sf/RoutesResultData.java b/back-end_code/src/main/java/com/shop/entity/sf/RoutesResultData.java new file mode 100644 index 0000000..6200243 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/RoutesResultData.java @@ -0,0 +1,57 @@ +package com.shop.entity.sf; + +import com.alibaba.fastjson.JSONObject; + +import java.text.ParseException; +import java.util.Iterator; + +public class RoutesResultData { + private String apiErrorMsg; + private String apiResponseID ; + private String apiResultCode ; + private RoutesApiResultData apiResultData; + + public RoutesResultData(JSONObject jsonObject) throws ParseException { + Iterator objectIterator; + if (jsonObject.getString("apiErrorMsg") != null) + this.apiErrorMsg = jsonObject.getString("apiErrorMsg"); + if (jsonObject.getString("apiResponseID") != null) + this.apiResponseID = jsonObject.getString("apiResponseID"); + if (jsonObject.getString("apiResultCode") != null) + this.apiResultCode = jsonObject.getString("apiResultCode"); + if (jsonObject.getJSONObject("apiResultData") != null) + this.apiResultData = new RoutesApiResultData(jsonObject.getJSONObject("apiResultData")); + } + + public String getApiErrorMsg() { + return apiErrorMsg; + } + + public void setApiErrorMsg(String apiErrorMsg) { + this.apiErrorMsg = apiErrorMsg; + } + + public String getApiResponseID() { + return apiResponseID; + } + + public void setApiResponseID(String apiResponseID) { + this.apiResponseID = apiResponseID; + } + + public String getApiResultCode() { + return apiResultCode; + } + + public void setApiResultCode(String apiResultCode) { + this.apiResultCode = apiResultCode; + } + + public RoutesApiResultData getApiResultData() { + return apiResultData; + } + + public void setApiResultData(RoutesApiResultData apiResultData) { + this.apiResultData = apiResultData; + } +} diff --git a/back-end_code/src/main/java/com/shop/entity/sf/RoutesmsgDate.java b/back-end_code/src/main/java/com/shop/entity/sf/RoutesmsgDate.java new file mode 100644 index 0000000..25e0383 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/RoutesmsgDate.java @@ -0,0 +1,40 @@ +package com.shop.entity.sf; + +import com.alibaba.fastjson.JSONObject; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class RoutesmsgDate { + private List routeResps; + + public List getRouteResps() { + return routeResps; + } + + public void setRouteResps(List routeResps) { + this.routeResps = routeResps; + } + + public RoutesmsgDate(List routeResps) { + this.routeResps = routeResps; + } + + public RoutesmsgDate(JSONObject jsonObject) throws ParseException { + Iterator objectIterator; + List routeResps = new ArrayList(); + if (jsonObject.getJSONArray("routeResps") != null) { + objectIterator = jsonObject.getJSONArray("routeResps").iterator(); + RouteResp RouteResp; + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + RouteResp = new RouteResp(jb); + routeResps.add(RouteResp); + } + } + this.routeResps = routeResps; + } + +} diff --git a/back-end_code/src/main/java/com/shop/entity/sf/SearchOrder.java b/back-end_code/src/main/java/com/shop/entity/sf/SearchOrder.java index b26afed..d2b8d5a 100644 --- a/back-end_code/src/main/java/com/shop/entity/sf/SearchOrder.java +++ b/back-end_code/src/main/java/com/shop/entity/sf/SearchOrder.java @@ -10,15 +10,15 @@ public class SearchOrder { private String methodType = "1"; public SearchOrder(int order_id) { - this.methodType = "2"; - String track_number = String.valueOf(order_id); + this.trackingType = "2"; + String track_number = "\"" + String.valueOf(order_id) + "\""; List trackingNumber = new ArrayList(); trackingNumber.add(track_number); this.trackingNumber = trackingNumber; } public SearchOrder(String package_number) { - this.methodType = "1"; - String track_number = package_number; + this.trackingType = "1"; + String track_number = "\"" + package_number + "\""; List trackingNumber = new ArrayList(); trackingNumber.add(track_number); this.trackingNumber = trackingNumber; @@ -78,9 +78,9 @@ public class SearchOrder { } if (this.trackingNumber != null) { if (num == 0) { - sb.append("\t\"trackingNumber\": ").append(trackingNumber); + sb.append("\t\"trackingNumber\": ").append(trackingNumber.toString()); } else { - sb.append(",\n").append("\t\"trackingNumber\": ").append(trackingNumber); + sb.append(",\n").append("\t\"trackingNumber\": ").append(trackingNumber.toString()); } num = num + 1; } diff --git a/back-end_code/src/main/java/com/shop/service/SFService.java b/back-end_code/src/main/java/com/shop/service/SFService.java index 1860879..8eb1cd1 100644 --- a/back-end_code/src/main/java/com/shop/service/SFService.java +++ b/back-end_code/src/main/java/com/shop/service/SFService.java @@ -4,13 +4,11 @@ import com.alibaba.fastjson.JSONObject; import com.sf.csim.express.service.CallExpressServiceTools; import com.sf.csim.express.service.HttpClientUtil; import com.shop.entity.Order; -import com.shop.entity.sf.ConfirmOrder; -import com.shop.entity.sf.CreateOrder; -import com.shop.entity.sf.ResultData; -import com.shop.entity.sf.SearchOrder; +import com.shop.entity.sf.*; import org.springframework.stereotype.Service; import java.io.UnsupportedEncodingException; +import java.text.ParseException; import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -52,13 +50,15 @@ public class SFService { JSONObject temp = SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); return new ResultData(temp); } - public Object EXP_RECE_SEARCH_ROUTES(String package_number) throws UnsupportedEncodingException { + public Object EXP_RECE_SEARCH_ROUTES(String package_number) throws UnsupportedEncodingException, ParseException { String request = new SearchOrder(package_number).toString(); - return SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); + JSONObject temp = SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); + return new RoutesResultData(temp); } - public Object EXP_RECE_SEARCH_ROUTES(int order_id) throws UnsupportedEncodingException { + public Object EXP_RECE_SEARCH_ROUTES(int order_id) throws UnsupportedEncodingException, ParseException { String request = new SearchOrder(order_id).toString(); - return SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); + JSONObject temp = SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); + return new RoutesResultData(temp); } public Object EXP_RECE_UPDATE_ORDER(String msgData) throws UnsupportedEncodingException { return SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),msgData); -- Gitee From 5c9e7f2e3d447e8b5a9bca951b93d6e1f0166bf4 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 17 May 2022 15:13:32 +0800 Subject: [PATCH 119/133] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E4=BB=98=E6=AC=BE?= =?UTF-8?q?=E5=90=8E=E8=87=AA=E5=8A=A8=E5=8F=98=E6=9B=B4=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=BA=E5=B7=B2=E6=94=AF=E4=BB=98=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/AlipayController.java | 55 +++++++++++++++++-- .../com/shop/controller/OrderController.java | 2 +- .../java/com/shop/mapper/OrderMapper.java | 3 +- .../java/com/shop/service/OrderService.java | 3 +- .../java/com/shop/utils/AlipayConfig.java | 2 +- .../main/resources/mapping/OrderMapper.xml | 2 +- 6 files changed, 57 insertions(+), 10 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AlipayController.java b/back-end_code/src/main/java/com/shop/controller/AlipayController.java index 5e089a7..8498668 100644 --- a/back-end_code/src/main/java/com/shop/controller/AlipayController.java +++ b/back-end_code/src/main/java/com/shop/controller/AlipayController.java @@ -1,14 +1,23 @@ package com.shop.controller; import com.alibaba.fastjson.JSONObject; +import com.alipay.api.internal.util.AlipaySignature; import com.shop.entity.Order; import com.shop.service.AlipayServiceImpl; +import com.shop.service.OrderService; import com.shop.utils.AlipayUtil; +import com.shop.utils.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + /** * @author mumuwei * @date 0004 @@ -25,7 +34,8 @@ public class AlipayController { public void setAlipayUtil(AlipayUtil alipayUtil) { this.alipayUtil = alipayUtil; } - + @Autowired + private OrderService orderService; @PostMapping("/create") @@ -54,9 +64,46 @@ public class AlipayController { return "query"; } - @PostMapping("/notify") - public void notifyUrl(String trade_no, String total_amount, String trade_status){ - //System.err.println("支付宝订单编号:" + trade_no + ", 订单金额: " + total_amount + ",订单状态:" + trade_status); +// @PostMapping("/notify") +// public void notifyUrl(String trade_no, String total_amount, String trade_status){ +// System.err.println("支付宝订单编号:" + trade_no + ", 订单金额: " + total_amount + ",订单状态:" + trade_status); +// +// } +@RequestMapping(value="/notify") +public String alipay(HttpServletRequest request, HttpServletResponse response) throws Exception { + //获取支付宝POST过来反馈信息 + Map params = new HashMap(); + Map requestParams = request.getParameterMap(); + for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) { + String name = (String) iter.next(); + String[] values = (String[]) requestParams.get(name); + String valueStr = ""; + for (int i = 0; i < values.length; i++) { + valueStr = (i == values.length - 1) ? valueStr + values[i] + : valueStr + values[i] + ","; + } + //乱码解决,这段代码在出现乱码时使用 +// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8"); + params.put(name, valueStr); } + + // 商户订单号 + String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8"); + // 支付宝交易号 + String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8"); + // 交易状态 + String trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8"); + // 付款金额 + String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8"); + + if (trade_status.equals("TRADE_SUCCESS")){ + orderService.buyerPayOrder(Integer.parseInt(out_trade_no)); + } +// System.out.println("out_trade_no:"+out_trade_no); +// System.out.println("trade_no:"+trade_no); +// System.out.println("trade_status:"+trade_status); +// System.out.println("total_amount:"+total_amount); + return "success"; +} } diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index a776f45..258df56 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -169,7 +169,7 @@ public class OrderController { while (objectIterator.hasNext()) { JSONObject jb = (JSONObject) objectIterator.next(); order_id = jb.getInteger("order_id"); - if(orderService.buyerPayOrder(buyer_username,order_id) < 1) { + if(orderService.buyerPayOrder(order_id) < 1) { sb.append("订单号: ").append(order_id).append(" 支付失败\n"); continue; }else{ diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index cda0e34..ac959a8 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -57,11 +57,10 @@ public interface OrderMapper { /** * 买家支付待支付的订单 - * @param buyer_username * @param order_id * @return */ - Integer buyerPayOrder(String buyer_username,Integer order_id); + Integer buyerPayOrder(Integer order_id); /** * 买家查询待确认的订单 diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index 660dffc..294bb0f 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -2,6 +2,7 @@ package com.shop.service; import com.shop.entity.Order; import com.shop.mapper.OrderMapper; +import com.sun.org.apache.xpath.internal.operations.Or; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -38,7 +39,7 @@ public class OrderService { public List sellerSearchHistoryOrders(String seller_username){return orderMapper.sellerSearchHistoryOrders(seller_username);} public List sellerSearchUnpaidOrder(String seller_username){return orderMapper.sellerSearchUnpaidOrder(seller_username);} public List buyerSearchUnpaidOrder(String buyer_username){return orderMapper.buyerSearchUnpaidOrder(buyer_username);} - public int buyerPayOrder(String buyer_username,int order_id){ return orderMapper.buyerPayOrder(buyer_username,order_id);} + public int buyerPayOrder(int order_id){ return orderMapper.buyerPayOrder(order_id);} public Integer sellerConfirmOrder(String seller_username,Integer order_id){return orderMapper.sellerConfirmOrder(seller_username,order_id);} public List buyerSearchUnconfirmedOrder(String buyer_username){return orderMapper.buyerSearchUnconfirmedOrder(buyer_username);} public List sellerSearchUnconfirmedOrder(String seller_username){return orderMapper.sellerSearchUnconfirmedOrder(seller_username);} diff --git a/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java b/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java index 471feca..6e7b620 100644 --- a/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java +++ b/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java @@ -25,7 +25,7 @@ public class AlipayConfig { // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 public static String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqXO3+a2ne7NHY9gvqhkWYZ4iKdK83/S4JRF02xiyXPrF/rTJVefEMPNkJ6lW3/5OPBmx173gxtZ6/1bIX2gj32a8KICbuYW6QlhzkTa6SWk9A7/VD/o7rLuM2jIKA/U2VYzTAGWMYApnvdYL042BPmedplxj0ZJvc/DxCmktdk4E3QP5Xl/tO7ntUVEeZcslA8iFXDP2DCloZ/L/FcYLFCrPHFCijiGb2gMdfWqA9i2FVSd7taSZJNCI5+WJl5LDUDoA3BC/x2FAZ0ZTyX0IVEI4RTARaHXzzc9ROnCyv9YXOHRBvaUooqsM+Pmyj7Y4mHS+SKzvWyyYuPrAZTi8gQIDAQAB"; // 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 - public static String notify_url = "http://souldays.top:8085/notify"; + public static String notify_url = "http://23791dw357.wicp.vip:80/pay/notify"; // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 public static String return_url = "http://localhost:8069"; diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index dc3ab45..3bf245e 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -130,7 +130,7 @@ update orders set - where orderId = #{order_id} and buyerUsername = #{buyer_username} and + where orderId = #{order_id} and -- Gitee From 73ccfd4ddcd8133d3f2507bf1a6cb1470d04d83c Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 17 May 2022 15:19:47 +0800 Subject: [PATCH 120/133] =?UTF-8?q?=E5=88=A0=E6=8E=89=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/AlipayController.java | 1 - .../src/main/java/com/shop/controller/OrderController.java | 2 -- 2 files changed, 3 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/AlipayController.java b/back-end_code/src/main/java/com/shop/controller/AlipayController.java index 8498668..b4aa874 100644 --- a/back-end_code/src/main/java/com/shop/controller/AlipayController.java +++ b/back-end_code/src/main/java/com/shop/controller/AlipayController.java @@ -45,7 +45,6 @@ public class AlipayController { Float price= Float.valueOf(jsonObject.getString("price")); String title= jsonObject.getString("title"); try { - System.out.println(id + "," + price + ","+title); pay = alipayService.webPagePay(id, price,title); } catch (Exception e) { e.printStackTrace(); diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 258df56..3300b98 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -49,9 +49,7 @@ public class OrderController { @GetMapping("/ID") public Object searchOrderByOrderId(@RequestParam int order_id){ JSONObject jsonObject = new JSONObject(); - System.out.println(order_id); Order order = orderService.searchOrderByOrderId(order_id); - System.out.println(order); jsonObject.put("order",order); return Result.ok(jsonObject); } -- Gitee From 97740539c82d6609b13d56640ffff0c388a23bce Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 18 May 2022 18:32:42 +0800 Subject: [PATCH 121/133] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=E9=93=B6=E8=81=94?= =?UTF-8?q?=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/pom.xml | 21 + .../com/shop/controller/UnipayController.java | 110 +++ .../com/shop/service/UnionPaymentService.java | 53 ++ .../shop/service/UnionPaymentServiceImpl.java | 480 ++++++++++ .../main/java/com/shop/union/DemoBase.java | 211 +++++ .../java/com/shop/union/config/SDKConfig.java | 728 +++++++++++++++ .../shop/union/constants/SDKConstants.java | 391 ++++++++ .../com/shop/union/service/AcpService.java | 673 ++++++++++++++ .../service/BaseHttpSSLSocketFactory.java | 123 +++ .../java/com/shop/union/util/CertUtil.java | 761 +++++++++++++++ .../java/com/shop/union/util/HttpClient.java | 306 +++++++ .../java/com/shop/union/util/LogUtil.java | 116 +++ .../java/com/shop/union/util/SDKUtil.java | 866 ++++++++++++++++++ .../java/com/shop/union/util/SecureUtil.java | 577 ++++++++++++ .../main/java/com/shop/utils/JsonResult.java | 100 ++ .../src/main/resources/certs/acp_test_enc.cer | 25 + .../main/resources/certs/acp_test_middle.cer | 23 + .../main/resources/certs/acp_test_root.cer | 22 + .../main/resources/certs/acp_test_sign.pfx | Bin 0 -> 4898 bytes .../resources/properties/acp_sdk.properties | 77 ++ 20 files changed, 5663 insertions(+) create mode 100644 back-end_code/src/main/java/com/shop/controller/UnipayController.java create mode 100644 back-end_code/src/main/java/com/shop/service/UnionPaymentService.java create mode 100644 back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java create mode 100644 back-end_code/src/main/java/com/shop/union/DemoBase.java create mode 100644 back-end_code/src/main/java/com/shop/union/config/SDKConfig.java create mode 100644 back-end_code/src/main/java/com/shop/union/constants/SDKConstants.java create mode 100644 back-end_code/src/main/java/com/shop/union/service/AcpService.java create mode 100644 back-end_code/src/main/java/com/shop/union/service/BaseHttpSSLSocketFactory.java create mode 100644 back-end_code/src/main/java/com/shop/union/util/CertUtil.java create mode 100644 back-end_code/src/main/java/com/shop/union/util/HttpClient.java create mode 100644 back-end_code/src/main/java/com/shop/union/util/LogUtil.java create mode 100644 back-end_code/src/main/java/com/shop/union/util/SDKUtil.java create mode 100644 back-end_code/src/main/java/com/shop/union/util/SecureUtil.java create mode 100644 back-end_code/src/main/java/com/shop/utils/JsonResult.java create mode 100644 back-end_code/src/main/resources/certs/acp_test_enc.cer create mode 100644 back-end_code/src/main/resources/certs/acp_test_middle.cer create mode 100644 back-end_code/src/main/resources/certs/acp_test_root.cer create mode 100644 back-end_code/src/main/resources/certs/acp_test_sign.pfx create mode 100644 back-end_code/src/main/resources/properties/acp_sdk.properties diff --git a/back-end_code/pom.xml b/back-end_code/pom.xml index 89da7f9..0130055 100644 --- a/back-end_code/pom.xml +++ b/back-end_code/pom.xml @@ -126,6 +126,27 @@ org.apache.commons commons-pool2 + + + org.bouncycastle + bcprov-jdk15on + 1.54 + + + commons-lang + commons-lang + 2.5 + + + commons-codec + commons-codec + 1.6 + + + junit + junit + 4.12 + diff --git a/back-end_code/src/main/java/com/shop/controller/UnipayController.java b/back-end_code/src/main/java/com/shop/controller/UnipayController.java new file mode 100644 index 0000000..6f3900e --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/UnipayController.java @@ -0,0 +1,110 @@ +package com.shop.controller; + +import com.shop.service.UnionPaymentService; +import com.shop.utils.JsonResult; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * Created by wangfei on 2017/4/22. + */ + +@Validated +@RestController +@RequestMapping("/union") +public class UnipayController { + + @Autowired + private UnionPaymentService service; + + /** + * 支付 + * @param request + * @param response + * @throws IOException + */ + @RequestMapping(value = "/pay", method = {RequestMethod.POST, RequestMethod.GET}) + public void pay(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + service.pay(request, response); + + } + + /** + * 后台回调 + * @param request + * @param response + * @throws IOException + */ + @RequestMapping(value = "/backRcvResponse", method = {RequestMethod.GET, RequestMethod.POST}) + public void backRcvResponse(HttpServletRequest request, HttpServletResponse response) throws IOException { + + service.backRcvResponse(request, response); + + } + + /** + * 前台回调 + * @param request + * @param response + * @throws IOException + */ + @RequestMapping(value = "/frontRcvResponse", method = RequestMethod.GET) + public void frontRcvResponse(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + + service.frontRcvResponse(request, response); + + } + + /** + * 成功后跳转 + * @param request + * @param response + * @throws IOException + */ + @RequestMapping(value = "/successRedict", method = RequestMethod.GET) + public void successRedict(HttpServletRequest request, HttpServletResponse response) throws IOException { + + service.successRedict(request, response); + + } + + /** + * 查询、检查交易状态 + * @param request + * @param response + */ + @RequestMapping(value = "/query", method = RequestMethod.POST) + public void query(HttpServletRequest request, HttpServletResponse response) throws IOException { + + service.query(request, response); + + } + + /** + * 交易状态查询 + * @param orderId + */ + @RequestMapping(value = "/check", method = RequestMethod.POST) + public JsonResult check(Long orderId) { + + try { + service.check(orderId); + return JsonResult.resultSuccess("已支付", ""); + } catch (Exception e) { + e.printStackTrace(); + return JsonResult.resultError("未发现支付信息"); + } + + } + + +} diff --git a/back-end_code/src/main/java/com/shop/service/UnionPaymentService.java b/back-end_code/src/main/java/com/shop/service/UnionPaymentService.java new file mode 100644 index 0000000..f2a4b34 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/UnionPaymentService.java @@ -0,0 +1,53 @@ +package com.shop.service; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public interface UnionPaymentService { + + + /** + * 支付 + * @param request + * @param response + */ + void pay(HttpServletRequest request, HttpServletResponse response) throws IOException; + + /** + * 后台回调 + * @param request + * @param response + */ + void backRcvResponse(HttpServletRequest request, HttpServletResponse response) throws IOException; + + /** + * 前台回调 + * @param request + * @param response + * @throws IOException + */ + void frontRcvResponse(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; + + /** + * 交易状态查询 + * @param request + * @param response + */ + void query(HttpServletRequest request, HttpServletResponse response) throws IOException; + + /** + * 支付成功后的跳转 + * @param request + * @param response + */ + void successRedict(HttpServletRequest request, HttpServletResponse response) throws IOException; + + /** + * 检查支付结果 + * @param shopOrderId + * @throws IOException + */ + void check(Long shopOrderId); +} \ No newline at end of file diff --git a/back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java b/back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java new file mode 100644 index 0000000..bc37235 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java @@ -0,0 +1,480 @@ +package com.shop.service; + +import com.shop.union.DemoBase; +import com.shop.union.config.SDKConfig; +import com.shop.union.constants.SDKConstants; +import com.shop.union.service.AcpService; +import com.shop.union.util.CertUtil; +import com.shop.union.util.LogUtil; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * Created by gangsun on 2017/4/12. + */ +@Service +public class UnionPaymentServiceImpl implements com.shop.service.UnionPaymentService { + + @PostConstruct + public void init(){ + System.out.println("银联支付初始化"); + SDKConfig.getConfig().loadPropertiesFromSrc(); //从classpath加载acp_sdk.properties文件 + CertUtil.init(); + } + + //先取商户号 + //private String merId = "777290058110048"; + private String merId = "777290058197286"; + + private String redictUrl = "http://localhost:8069"; + + + /** + * 支付 + * @param request + * @param response + */ + @Override + public void pay(HttpServletRequest request, HttpServletResponse response) throws IOException { + + request.setCharacterEncoding(DemoBase.encoding); + response.setContentType("text/html; charset="+ DemoBase.encoding); + + //String orderId = String.valueOf(System.currentTimeMillis()); //实际上是orderSn + String orderId = request.getParameter("id"); + String txnAmt = null; //订单金额 + String txnTime = null; //订单发送时间 + //交易金额,单位分,不要带小数点 + String price =request.getParameter("price"); + BigDecimal amount = new BigDecimal(price); + amount = amount.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP); + txnAmt = amount.toString(); + + //订单发送时间用于查询用 + Date sendPaymentDate = new Date(); + txnTime = formatTime(sendPaymentDate); + + Map requestData = new HashMap<>(); + + /***银联全渠道系统,产品参数,除了encoding自行选择外其他不需修改***/ + requestData.put("version", DemoBase.version); //版本号,全渠道默认值 + requestData.put("encoding", DemoBase.encoding); //字符集编码,可以使用UTF-8,GBK两种方式 + requestData.put("signMethod", SDKConfig.getConfig().getSignMethod()); //签名方法 + requestData.put("txnType", "01"); //交易类型 ,01:消费 + requestData.put("txnSubType", "01"); //交易子类型, 01:自助消费 + requestData.put("bizType", "000201"); //业务类型,B2C网关支付,手机wap支付 + requestData.put("channelType", "08"); //渠道类型,这个字段区分B2C网关支付和手机wap支付;07:PC,平板 08:手机 + + /***商户接入参数***/ + requestData.put("merId", merId); //商户号码,请改成自己申请的正式商户号或者open上注册得来的777测试商户号 + requestData.put("accessType", "0"); //接入类型,0:直连商户 + requestData.put("orderId", orderId); //商户订单号,8-40位数字字母,不能含“-”或“_”,可以自行定制规则 + requestData.put("txnTime", txnTime); //订单发送时间,取系统时间,格式为YYYYMMDDhhmmss,必须取当前时间,否则会报txnTime无效 + requestData.put("currencyCode", "156"); //交易币种(境内商户一般是156 人民币) + requestData.put("txnAmt", txnAmt); //交易金额,单位分,不要带小数点 + //requestData.put("reqReserved", "透传字段"); //请求方保留域,如需使用请启用即可;透传字段(可以实现商户自定义参数的追踪)本交易的后台通知,对本交易的交易状态查询交易、对账文件中均会原样返回,商户可以按需上传,长度为1-1024个字节。出现&={}[]符号时可能导致查询接口应答报文解析失败,建议尽量只传字母数字并使用|分割,或者可以最外层做一次base64编码(base64编码之后出现的等号不会导致解析失败可以不用管)。 + + //前台通知地址 (需设置为外网能访问 http https均可),支付成功后的页面 点击“返回商户”按钮的时候将异步通知报文post到该地址 + //如果想要实现过几秒中自动跳转回商户页面权限,需联系银联业务申请开通自动返回商户权限 + //异步通知参数详见open.unionpay.com帮助中心 下载 产品接口规范 网关支付产品接口规范 消费交易 商户通知 + requestData.put("frontUrl", DemoBase.frontUrl); + + //后台通知地址(需设置为【外网】能访问 http https均可),支付成功后银联会自动将异步通知报文post到商户上送的该地址,失败的交易银联不会发送后台通知 + //后台通知参数详见open.unionpay.com帮助中心 下载 产品接口规范 网关支付产品接口规范 消费交易 商户通知 + //注意:1.需设置为外网能访问,否则收不到通知 2.http https均可 3.收单后台通知后需要10秒内返回http200或302状态码 + // 4.如果银联通知服务器发送通知后10秒内未收到返回状态码或者应答码非http200,那么银联会间隔一段时间再次发送。总共发送5次,每次的间隔时间为0,1,2,4分钟。 + // 5.后台通知地址如果上送了带有?的参数,例如:http://abc/web?a=b&c=d 在后台通知处理程序验证签名之前需要编写逻辑将这些字段去掉再验签,否则将会验签失败 + requestData.put("backUrl", DemoBase.backUrl); + + // 订单超时时间。 + // 超过此时间后,除网银交易外,其他交易银联系统会拒绝受理,提示超时。 跳转银行网银交易如果超时后交易成功,会自动退款,大约5个工作日金额返还到持卡人账户。 + // 此时间建议取支付时的北京时间加15分钟。 + // 超过超时时间调查询接口应答origRespCode不是A6或者00的就可以判断为失败。 + requestData.put("payTimeout", new SimpleDateFormat("yyyyMMddHHmmss").format(new Date().getTime() + 15 * 60 * 1000)); + + ////////////////////////////////////////////////// + // + // 报文中特殊用法请查看 PCwap网关跳转支付特殊用法.txt + // + ////////////////////////////////////////////////// + + /**请求参数设置完毕,以下对请求参数进行签名并生成html表单,将表单写入浏览器跳转打开银联页面**/ + Map submitFromData = AcpService.sign(requestData,DemoBase.encoding); //报文中certId,signature的值是在signData方法中获取并自动赋值的,只要证书配置正确即可。 + + String requestFrontUrl = SDKConfig.getConfig().getFrontRequestUrl(); //获取请求银联的前台地址:对应属性文件acp_sdk.properties文件中的acpsdk.frontTransUrl + String html = AcpService.createAutoFormHtml(requestFrontUrl, submitFromData,DemoBase.encoding); //生成自动跳转的Html表单 + + LogUtil.writeLog("打印请求HTML,此为请求报文,为联调排查问题的依据:"+html); + //将生成的html写到浏览器中完成自动跳转打开银联支付页面;这里调用signData之后,将html写到浏览器跳转到银联页面之前均不能对html中的表单项的名称和值进行修改,如果修改会导致验签不通过 + response.getWriter().write(html); + + + } + + /** + * 后台回调 + * @param request + * @param response + */ + @Override + public void backRcvResponse(HttpServletRequest request, HttpServletResponse response) throws IOException { + LogUtil.writeLog("BackRcvResponse接收后台通知开始"); + + String encoding = request.getParameter(SDKConstants.param_encoding); + // 获取银联通知服务器发送的后台通知参数 + Map reqParam = getAllRequestParam(request); + + LogUtil.printRequestLog(reqParam); + + Map valideData = null; + if (null != reqParam && !reqParam.isEmpty()) { + Iterator> it = reqParam.entrySet().iterator(); + valideData = new HashMap(reqParam.size()); + while (it.hasNext()) { + Map.Entry e = it.next(); + String key = (String) e.getKey(); + String value = (String) e.getValue(); + value = new String(value.getBytes(encoding), encoding); + valideData.put(key, value); + } + } + + //重要!验证签名前不要修改reqParam中的键值对的内容,否则会验签不过 + if (!AcpService.validate(valideData, encoding)) { + LogUtil.writeLog("验证签名结果[失败]."); + //验签失败,需解决验签问题 + + } else { + LogUtil.writeLog("验证签名结果[成功]."); + //【注:为了安全验签成功才应该写商户的成功处理逻辑】交易成功,更新商户订单状态 + + String orderId =valideData.get("orderId"); //获取后台通知的数据,其他字段也可用类似方式获取 + String orderSn =orderId; //orderId其实存的是Sn + + String respCode = valideData.get("respCode"); + String txnAmt = valideData.get("txnAmt"); + BigDecimal txnAmount = (new BigDecimal(txnAmt)).multiply(new BigDecimal(0.01)); + + String queryId = valideData.get("queryId"); + String traceTime = valideData.get("traceTime"); + String payCardNo = valideData.get("payCardNo"); + String payCardType = valideData.get("payCardType"); //支付卡类型 + String paymentMethodMethod; //PayPaymentMethod里面的method字段 + if(StringUtils.isEmpty(payCardType)){ + paymentMethodMethod = "UNION"; //对之前代码做兼容,如果没有支付卡类型的情况走默认 + }else{ + paymentMethodMethod = "UNION-" + payCardType; + } + + //判断respCode=00、A6后,对涉及资金类的交易,请再发起查询接口查询,确定交易成功后更新数据库。 + if("00".equals(respCode)){ // 00 交易成功 + + //todo 若交易成功 + }else if("A6".equals(respCode)){ // A6 部分成功 + + } + + } + LogUtil.writeLog("BackRcvResponse接收后台通知结束"); + //返回给银联服务器http 200 状态码 + response.getWriter().print("ok"); + } + + @Override + public void frontRcvResponse(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + LogUtil.writeLog("FrontRcvResponse前台接收报文返回开始"); + + String encoding = request.getParameter(SDKConstants.param_encoding); + LogUtil.writeLog("返回报文中encoding=[" + encoding + "]"); + String pageResult = ""; + if (DemoBase.encoding.equalsIgnoreCase(encoding)) { + pageResult = "/utf8_result.jsp"; + } else { + pageResult = "/gbk_result.jsp"; + } + Map respParam = getAllRequestParam(request); + + // 打印请求报文 + LogUtil.printRequestLog(respParam); + + Map valideData = null; + StringBuffer page = new StringBuffer(); + if (null != respParam && !respParam.isEmpty()) { + Iterator> it = respParam.entrySet() + .iterator(); + valideData = new HashMap(respParam.size()); + while (it.hasNext()) { + Map.Entry e = it.next(); + String key = (String) e.getKey(); + String value = (String) e.getValue(); + value = new String(value.getBytes(encoding), encoding); + page.append("" + key + + "(" + key + ")" + value + ""); + valideData.put(key, value); + } + } + if (!AcpService.validate(valideData, encoding)) { + page.append("验证签名结果失败"); + LogUtil.writeLog("验证签名结果[失败]."); + } else { + page.append("验证签名结果成功"); + LogUtil.writeLog("验证签名结果[成功]."); + System.out.println(valideData.get("orderId")); //其他字段也可用类似方式获取 + + String respCode = valideData.get("respCode"); + //判断respCode=00、A6后,对涉及资金类的交易,请再发起查询接口查询,确定交易成功后更新数据库。 + } + request.setAttribute("result", page.toString()); + request.getRequestDispatcher(pageResult).forward(request, response); + + LogUtil.writeLog("FrontRcvResponse前台接收报文返回结束"); + + } + + @Override + public void query(HttpServletRequest request, HttpServletResponse response) throws IOException { + + String orderId = String.valueOf(System.currentTimeMillis()); //实际上是orderSn + String txnTime = null; //订单发送时间 + + //订单发送时间 + Map data = new HashMap(); + + /***银联全渠道系统,产品参数,除了encoding自行选择外其他不需修改***/ + data.put("version", DemoBase.version); //版本号 + data.put("encoding", DemoBase.encoding); //字符集编码 可以使用UTF-8,GBK两种方式 + data.put("signMethod", SDKConfig.getConfig().getSignMethod()); //签名方法 + data.put("txnType", "00"); //交易类型 00-默认 + data.put("txnSubType", "00"); //交易子类型 默认00 + data.put("bizType", "000201"); //业务类型 B2C网关支付,手机wap支付 + + /***商户接入参数***/ + data.put("merId", merId); //商户号码,请改成自己申请的商户号或者open上注册得来的777商户号测试 + data.put("accessType", "0"); //接入类型,商户接入固定填0,不需修改 + + /***要调通交易以下字段必须修改***/ + data.put("orderId", orderId); //****商户订单号,每次发交易测试需修改为被查询的交易的订单号 + data.put("txnTime", txnTime); //****订单发送时间,每次发交易测试需修改为被查询的交易的订单发送时间 + + /**请求参数设置完毕,以下对请求参数进行签名并发送http post请求,接收同步应答报文------------->**/ + + Map reqData = AcpService.sign(data,DemoBase.encoding);//报文中certId,signature的值是在signData方法中获取并自动赋值的,只要证书配置正确即可。 + + String url = SDKConfig.getConfig().getSingleQueryUrl();// 交易请求url从配置文件读取对应属性文件acp_sdk.properties中的 acpsdk.singleQueryUrl + //这里调用signData之后,调用submitUrl之前不能对submitFromData中的键值对做任何修改,如果修改会导致验签不通过 + Map rspData = AcpService.post(reqData,url,DemoBase.encoding); + + /**对应答码的处理,请根据您的业务逻辑来编写程序,以下应答码处理逻辑仅供参考------------->**/ + //应答码规范参考open.unionpay.com帮助中心 下载 产品接口规范 《平台接入接口规范-第5部分-附录》 + if(!rspData.isEmpty()){ + if(AcpService.validate(rspData, DemoBase.encoding)){ + LogUtil.writeLog("验证签名成功"); + if("00".equals(rspData.get("respCode"))){//如果查询交易成功 + //处理被查询交易的应答码逻辑 + String origRespCode = rspData.get("origRespCode"); + if("00".equals(origRespCode)){ + //交易成功,更新商户订单状态 + //TODO + }else if("03".equals(origRespCode) || + "04".equals(origRespCode) || + "05".equals(origRespCode)){ + //需再次发起交易状态查询交易 + //TODO + }else{ + //其他应答码为失败请排查原因 + //TODO + } + }else{//查询交易本身失败,或者未查到原交易,检查查询交易报文要素 + //TODO + } + }else{ + LogUtil.writeErrorLog("验证签名失败"); + //TODO 检查验证签名失败的原因 + } + }else{ + //未返回正确的http状态 + LogUtil.writeErrorLog("未获取到返回报文或返回http状态码非200"); + } + String reqMessage = DemoBase.genHtmlResult(reqData); + String rspMessage = DemoBase.genHtmlResult(rspData); + response.getWriter().write("
请求报文:
"+reqMessage+"
" + "应答报文:
"+rspMessage+""); + + } + + @Override + public void check(Long shopOrderId){ + + String orderId = String.valueOf(System.currentTimeMillis()); //实际上是orderSn + String txnTime = null; //订单发送时间 + + Map data = new HashMap(); + + /***银联全渠道系统,产品参数,除了encoding自行选择外其他不需修改***/ + data.put("version", DemoBase.version); //版本号 + data.put("encoding", DemoBase.encoding); //字符集编码 可以使用UTF-8,GBK两种方式 + data.put("signMethod", SDKConfig.getConfig().getSignMethod()); //签名方法 + data.put("txnType", "00"); //交易类型 00-默认 + data.put("txnSubType", "00"); //交易子类型 默认00 + data.put("bizType", "000201"); //业务类型 B2C网关支付,手机wap支付 + + /***商户接入参数***/ + data.put("merId", merId); //商户号码,请改成自己申请的商户号或者open上注册得来的777商户号测试 + data.put("accessType", "0"); //接入类型,商户接入固定填0,不需修改 + + /***要调通交易以下字段必须修改***/ + data.put("orderId", orderId); //****商户订单号,每次发交易测试需修改为被查询的交易的订单号 + data.put("txnTime", txnTime); //****订单发送时间,每次发交易测试需修改为被查询的交易的订单发送时间 + + /**请求参数设置完毕,以下对请求参数进行签名并发送http post请求,接收同步应答报文------------->**/ + + Map reqData = AcpService.sign(data,DemoBase.encoding);//报文中certId,signature的值是在signData方法中获取并自动赋值的,只要证书配置正确即可。 + LogUtil.writeLog("查询请求数据: " + reqData.toString()); + + String url = SDKConfig.getConfig().getSingleQueryUrl();// 交易请求url从配置文件读取对应属性文件acp_sdk.properties中的 acpsdk.singleQueryUrl + //这里调用signData之后,调用submitUrl之前不能对submitFromData中的键值对做任何修改,如果修改会导致验签不通过 + Map rspData = AcpService.post(reqData,url,DemoBase.encoding); + LogUtil.writeLog("查询响应数据: " + rspData.toString()); + + /**对应答码的处理,请根据您的业务逻辑来编写程序,以下应答码处理逻辑仅供参考------------->**/ + //应答码规范参考open.unionpay.com帮助中心 下载 产品接口规范 《平台接入接口规范-第5部分-附录》 + if(!rspData.isEmpty()){ + if(AcpService.validate(rspData, DemoBase.encoding)){ + LogUtil.writeLog("验证签名成功"); + if("00".equals(rspData.get("respCode"))){//如果查询交易成功 + //处理被查询交易的应答码逻辑 + String origRespCode = rspData.get("origRespCode"); + if("00".equals(origRespCode)){ + //交易成功,更新商户订单状态 + String txnAmt = rspData.get("txnAmt"); + BigDecimal txnAmount = null; + if(!StringUtils.isEmpty(txnAmt)){ + txnAmount = (new BigDecimal(txnAmt)).multiply(new BigDecimal(0.01)); //分转换为元; + } + String queryId = rspData.get("queryId"); + String traceTime = rspData.get("traceTime"); + String payCardNo = rspData.get("payCardNo"); + String payCardType = rspData.get("payCardType"); //支付卡类型 + String paymentMethodMethod; //PayPaymentMethod里面的method字段 + if(StringUtils.isEmpty(payCardType)){ + paymentMethodMethod = "UNION"; //对之前代码做兼容,如果没有支付卡类型的情况走默认 + }else{ + paymentMethodMethod = "UNION-" + payCardType; + } + + //更改支付状态 + + //改变工单状态 + }else if("03".equals(origRespCode) || + "04".equals(origRespCode) || + "05".equals(origRespCode)){ + //需再次发起交易状态查询交易 + throw new RuntimeException("查询结果:订单号" + orderId + "交易失败,应答码为“" + origRespCode + "”"); + }else{ + //其他应答码为失败请排查原因 + throw new RuntimeException("查询结果:订单号" + orderId + "交易失败,应答码为“" + origRespCode + "”"); + } + }else{//查询交易本身失败,或者未查到原交易,检查查询交易报文要素 + throw new RuntimeException("查询失败"); + } + }else{ + LogUtil.writeErrorLog("验证签名失败"); + throw new RuntimeException("验证签名失败"); + //TODO 检查验证签名失败的原因 + } + }else{ + //未返回正确的http状态 + LogUtil.writeErrorLog("未获取到返回报文或返回http状态码非200"); + throw new RuntimeException("未获取到返回报文或返回http状态码非200"); + } + + } + + @Override + public void successRedict(HttpServletRequest request, HttpServletResponse response) throws IOException { + response.sendRedirect(redictUrl); + } + + + //---------------------------------------------------- private ----------------------------------------------------- + + /** + * 获取请求参数中所有的信息 + * + * @param request + * @return + */ + private static Map getAllRequestParam(final HttpServletRequest request) { + Map res = new HashMap(); + Enumeration temp = request.getParameterNames(); + if (null != temp) { + while (temp.hasMoreElements()) { + String en = (String) temp.nextElement(); + String value = request.getParameter(en); + res.put(en, value); + //在报文上送时,如果字段的值为空,则不上送<下面的处理为在获取所有参数数据时,判断若值为空,则删除这个字段> + //System.out.println("ServletUtil类247行 temp数据的键=="+en+" 值==="+value); + if (null == res.get(en) || "".equals(res.get(en))) { + res.remove(en); + } + } + } + return res; + } + + + + //收费比率 精确到分保留两位小数四舍五入 + private BigDecimal getFeeAmount(BigDecimal amount, BigDecimal feeRatio, BigDecimal feeMax) { + BigDecimal fee = new BigDecimal(0); + if(null == amount || null == feeRatio) return fee; + //金额乘以费率 = 手续费 + fee = amount.multiply(feeRatio); + //最大值为feeMax + if(null != feeMax && feeMax.compareTo(new BigDecimal("0")) >= 0) fee = fee.max(feeMax); + //设置精确到分并四舍五入 + fee = fee.setScale(4, BigDecimal.ROUND_HALF_UP); + return fee; + } + + /** + * 时间格式化 + * @param date + * @return + */ + private static String formatTime(Date date){ + return new SimpleDateFormat("yyyyMMddHHmmss").format(date); + } + private static Date formatTime(String dateStr){ + if(null == dateStr) return null; + if(dateStr.length() == 14){ + try { + return new SimpleDateFormat("yyyyMMddHHmmss").parse(dateStr); + } catch (ParseException e) { + e.printStackTrace(); + return null; + } + }else{ + try { + return new SimpleDateFormat("MMddHHmmss").parse(dateStr); + } catch (ParseException e) { + e.printStackTrace(); + return null; + } + + } + + } + + +} diff --git a/back-end_code/src/main/java/com/shop/union/DemoBase.java b/back-end_code/src/main/java/com/shop/union/DemoBase.java new file mode 100644 index 0000000..7b6775d --- /dev/null +++ b/back-end_code/src/main/java/com/shop/union/DemoBase.java @@ -0,0 +1,211 @@ +package com.shop.union; + + +import com.shop.union.config.SDKConfig; +import com.shop.union.constants.SDKConstants; + +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.Map.Entry; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + + +/** + * 名称: demo中用到的方法
+ * 日期: 2015-09
+ * 版本: 1.0.0 + * 版权: 中国银联
+ * 说明:以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考。
+ */ +public class DemoBase { + + //默认配置的是UTF-8 + public static String encoding = "UTF-8"; + + //全渠道固定值 + public static String version = SDKConfig.getConfig().getVersion(); + + //后台服务对应的写法参照 FrontRcvResponse.java + public static String frontUrl = SDKConfig.getConfig().getFrontUrl(); + + //后台服务对应的写法参照 BackRcvResponse.java + public static String backUrl = SDKConfig.getConfig().getBackUrl();//受理方和发卡方自选填写的域[O]--后台通知地址 + + // 商户发送交易时间 格式:YYYYMMDDhhmmss + public static String getCurrentTime() { + return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + } + + // AN8..40 商户订单号,不能含"-"或"_" + public static String getOrderId() { + return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + } + + /** + * 组装请求,返回报文字符串用于显示 + * @param data + * @return + */ + public static String genHtmlResult(Map data){ + + TreeMap tree = new TreeMap(); + Iterator> it = data.entrySet().iterator(); + while (it.hasNext()) { + Entry en = it.next(); + tree.put(en.getKey(), en.getValue()); + } + it = tree.entrySet().iterator(); + StringBuffer sf = new StringBuffer(); + while (it.hasNext()) { + Entry en = it.next(); + String key = en.getKey(); + String value = en.getValue(); + if("respCode".equals(key)){ + sf.append(""+key + SDKConstants.EQUAL + value+"
"); + }else + sf.append(key + SDKConstants.EQUAL + value+"
"); + } + return sf.toString(); + } + /** + * 功能:解析全渠道商户对账文件中的ZM文件并以List方式返回 + * 适用交易:对账文件下载后对文件的查看 + * @param filePath ZM文件全路径 + * @return 包含每一笔交易中 序列号 和 值 的map序列 + */ + public static List parseZMFile(String filePath){ + int lengthArray[] = {3,11,11,6,10,19,12,4,2,21,2,32,2,6,10,13,13,4,15,2,2,6,2,4,32,1,21,15,1,15,32,13,13,8,32,13,13,12,2,1,32,98}; + return parseFile(filePath,lengthArray); + } + + /** + * 功能:解析全渠道商户对账文件中的ZME文件并以List方式返回 + * 适用交易:对账文件下载后对文件的查看 + * @param filePath ZME文件全路径 + * @return 包含每一笔交易中 序列号 和 值 的map序列 + */ + public static List parseZMEFile(String filePath){ + int lengthArray[] = {3,11,11,6,10,19,12,4,2,2,6,10,4,12,13,13,15,15,1,12,2,135}; + return parseFile(filePath,lengthArray); + } + + /** + * 功能:解析全渠道商户 ZM,ZME对账文件 + * @param filePath + * @param lengthArray 参照《全渠道平台接入接口规范 第3部分 文件接口》 全渠道商户对账文件 6.1 ZM文件和6.2 ZME 文件 格式的类型长度组成int型数组 + * @return + */ + private static List parseFile(String filePath,int lengthArray[]){ + List ZmDataList = new ArrayList(); + try { + String encoding="UTF-8"; + File file=new File(filePath); + if(file.isFile() && file.exists()){ //判断文件是否存在 + InputStreamReader read = new InputStreamReader( + new FileInputStream(file),encoding);//考虑到编码格式 + BufferedReader bufferedReader = new BufferedReader(read); + String lineTxt = null; + while((lineTxt = bufferedReader.readLine()) != null){ + //解析的结果MAP,key为对账文件列序号,value为解析的值 + Map ZmDataMap = new LinkedHashMap(); + //左侧游标 + int leftIndex = 0; + //右侧游标 + int rightIndex = 0; + for(int i=0;i dataList,String file){ + StringBuffer tableSb = new StringBuffer("对账文件的规范参考 https://open.unionpay.com/ajweb/help/file/ 产品接口规范->平台接口规范:文件接口
文件【"+file + "】解析后内容如下:"); + tableSb.append(""); + if(dataList.size() > 0){ + Map dataMapTmp = dataList.get(0); + tableSb.append(""); + for(Iterator it = dataMapTmp.keySet().iterator();it.hasNext();){ + Integer key = it.next(); + String value = dataMapTmp.get(key); + System.out.println("序号:"+ (key+1) + " 值: '"+ value +"'"); + tableSb.append(""); + } + tableSb.append(""); + } + + for(int i=0;i dataMapTmp = dataList.get(i); + tableSb.append(""); + for(Iterator it = dataMapTmp.keySet().iterator();it.hasNext();){ + Integer key = it.next(); + String value = dataMapTmp.get(key); + System.out.println("序号:"+ (key+1) + " 值: '"+ value +"'"); + tableSb.append(""); + } + tableSb.append(""); + } + tableSb.append("
序号"+(key+1)+"
"+value+"
"); + return tableSb.toString(); + } + + + public static List unzip(String zipFilePath,String outPutDirectory){ + List fileList = new ArrayList(); + try { + ZipInputStream zin = new ZipInputStream(new FileInputStream(zipFilePath));//输入源zip路径 + BufferedInputStream bin = new BufferedInputStream(zin); + BufferedOutputStream bout = null; + File file=null; + ZipEntry entry; + try { + while((entry = zin.getNextEntry())!=null && !entry.isDirectory()){ + file = new File(outPutDirectory,entry.getName()); + if(!file.exists()){ + (new File(file.getParent())).mkdirs(); + } + bout = new BufferedOutputStream(new FileOutputStream(file)); + int b; + while((b=bin.read())!=-1){ + bout.write(b); + } + bout.flush(); + fileList.add(file.getAbsolutePath()); + System.out.println(file+"解压成功"); + } + } catch (IOException e) { + e.printStackTrace(); + }finally{ + try { + bin.close(); + zin.close(); + if(bout!=null){ + bout.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + return fileList; + } + +} \ No newline at end of file diff --git a/back-end_code/src/main/java/com/shop/union/config/SDKConfig.java b/back-end_code/src/main/java/com/shop/union/config/SDKConfig.java new file mode 100644 index 0000000..9ae9da7 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/union/config/SDKConfig.java @@ -0,0 +1,728 @@ +/** + * + * Licensed Property to China UnionPay Co., Ltd. + * + * (C) Copyright of China UnionPay Co., Ltd. 2010 + * All Rights Reserved. + * + * + * Modification History: + * ============================================================================= + * Author Date Description + * ------------ ---------- --------------------------------------------------- + * xshu 2014-05-28 MPI基本参数工具类 + * ============================================================================= + */ +package com.shop.union.config; + +import com.shop.union.constants.SDKConstants; +import com.shop.union.util.LogUtil; +import com.shop.union.util.SDKUtil; +import org.apache.commons.lang.StringUtils; + +import java.io.*; +import java.util.Properties; + +/** + * + * @ClassName SDKConfig + * @Description acpsdk配置文件acp_sdk.properties配置信息类 + * @date 2016-7-22 下午4:04:55 + * + */ +public class SDKConfig { + public static final String FILE_NAME = "properties/acp_sdk.properties"; + /** 前台请求URL. */ + private String frontRequestUrl; + /** 后台请求URL. */ + private String backRequestUrl; + /** 单笔查询 */ + private String singleQueryUrl; + /** 批量查询 */ + private String batchQueryUrl; + /** 批量交易 */ + private String batchTransUrl; + /** 文件传输 */ + private String fileTransUrl; + /** 签名证书路径. */ + private String signCertPath; + /** 签名证书密码. */ + private String signCertPwd; + /** 签名证书类型. */ + private String signCertType; + /** 加密公钥证书路径. */ + private String encryptCertPath; + /** 验证签名公钥证书目录. */ + private String validateCertDir; + /** 按照商户代码读取指定签名证书目录. */ + private String signCertDir; + /** 磁道加密证书路径. */ + private String encryptTrackCertPath; + /** 磁道加密公钥模数. */ + private String encryptTrackKeyModulus; + /** 磁道加密公钥指数. */ + private String encryptTrackKeyExponent; + /** 有卡交易. */ + private String cardRequestUrl; + /** app交易 */ + private String appRequestUrl; + /** 证书使用模式(单证书/多证书) */ + private String singleMode; + /** 安全密钥(SHA256和SM3计算时使用) */ + private String secureKey; + /** 中级证书路径 */ + private String middleCertPath; + /** 根证书路径 */ + private String rootCertPath; + /** 是否验证验签证书CN,除了false都验 */ + private boolean ifValidateCNName = true; + /** 是否验证https证书,默认都不验 */ + private boolean ifValidateRemoteCert = false; + /** signMethod,没配按01吧 */ + private String signMethod = "01"; + /** version,没配按5.0.0 */ + private String version = "5.0.0"; + /** frontUrl */ + private String frontUrl; + /** backUrl */ + private String backUrl; + + /*缴费相关地址*/ + private String jfFrontRequestUrl; + private String jfBackRequestUrl; + private String jfSingleQueryUrl; + private String jfCardRequestUrl; + private String jfAppRequestUrl; + + private String qrcBackTransUrl; + private String qrcB2cIssBackTransUrl; + private String qrcB2cMerBackTransUrl; + + /** 配置文件中的前台URL常量. */ + public static final String SDK_FRONT_URL = "acpsdk.frontTransUrl"; + /** 配置文件中的后台URL常量. */ + public static final String SDK_BACK_URL = "acpsdk.backTransUrl"; + /** 配置文件中的单笔交易查询URL常量. */ + public static final String SDK_SIGNQ_URL = "acpsdk.singleQueryUrl"; + /** 配置文件中的批量交易查询URL常量. */ + public static final String SDK_BATQ_URL = "acpsdk.batchQueryUrl"; + /** 配置文件中的批量交易URL常量. */ + public static final String SDK_BATTRANS_URL = "acpsdk.batchTransUrl"; + /** 配置文件中的文件类交易URL常量. */ + public static final String SDK_FILETRANS_URL = "acpsdk.fileTransUrl"; + /** 配置文件中的有卡交易URL常量. */ + public static final String SDK_CARD_URL = "acpsdk.cardTransUrl"; + /** 配置文件中的app交易URL常量. */ + public static final String SDK_APP_URL = "acpsdk.appTransUrl"; + + /** 以下缴费产品使用,其余产品用不到,无视即可 */ + // 前台请求地址 + public static final String JF_SDK_FRONT_TRANS_URL= "acpsdk.jfFrontTransUrl"; + // 后台请求地址 + public static final String JF_SDK_BACK_TRANS_URL="acpsdk.jfBackTransUrl"; + // 单笔查询请求地址 + public static final String JF_SDK_SINGLE_QUERY_URL="acpsdk.jfSingleQueryUrl"; + // 有卡交易地址 + public static final String JF_SDK_CARD_TRANS_URL="acpsdk.jfCardTransUrl"; + // App交易地址 + public static final String JF_SDK_APP_TRANS_URL="acpsdk.jfAppTransUrl"; + // 人到人 + public static final String QRC_BACK_TRANS_URL="acpsdk.qrcBackTransUrl"; + // 人到人 + public static final String QRC_B2C_ISS_BACK_TRANS_URL="acpsdk.qrcB2cIssBackTransUrl"; + // 人到人 + public static final String QRC_B2C_MER_BACK_TRANS_URL="acpsdk.qrcB2cMerBackTransUrl"; + + + /** 配置文件中签名证书路径常量. */ + public static final String SDK_SIGNCERT_PATH = "acpsdk.signCert.path"; + /** 配置文件中签名证书密码常量. */ + public static final String SDK_SIGNCERT_PWD = "acpsdk.signCert.pwd"; + /** 配置文件中签名证书类型常量. */ + public static final String SDK_SIGNCERT_TYPE = "acpsdk.signCert.type"; + /** 配置文件中密码加密证书路径常量. */ + public static final String SDK_ENCRYPTCERT_PATH = "acpsdk.encryptCert.path"; + /** 配置文件中磁道加密证书路径常量. */ + public static final String SDK_ENCRYPTTRACKCERT_PATH = "acpsdk.encryptTrackCert.path"; + /** 配置文件中磁道加密公钥模数常量. */ + public static final String SDK_ENCRYPTTRACKKEY_MODULUS = "acpsdk.encryptTrackKey.modulus"; + /** 配置文件中磁道加密公钥指数常量. */ + public static final String SDK_ENCRYPTTRACKKEY_EXPONENT = "acpsdk.encryptTrackKey.exponent"; + /** 配置文件中验证签名证书目录常量. */ + public static final String SDK_VALIDATECERT_DIR = "acpsdk.validateCert.dir"; + + /** 配置文件中是否加密cvn2常量. */ + public static final String SDK_CVN_ENC = "acpsdk.cvn2.enc"; + /** 配置文件中是否加密cvn2有效期常量. */ + public static final String SDK_DATE_ENC = "acpsdk.date.enc"; + /** 配置文件中是否加密卡号常量. */ + public static final String SDK_PAN_ENC = "acpsdk.pan.enc"; + /** 配置文件中证书使用模式 */ + public static final String SDK_SINGLEMODE = "acpsdk.singleMode"; + /** 配置文件中安全密钥 */ + public static final String SDK_SECURITYKEY = "acpsdk.secureKey"; + /** 配置文件中根证书路径常量 */ + public static final String SDK_ROOTCERT_PATH = "acpsdk.rootCert.path"; + /** 配置文件中根证书路径常量 */ + public static final String SDK_MIDDLECERT_PATH = "acpsdk.middleCert.path"; + /** 配置是否需要验证验签证书CN,除了false之外的值都当true处理 */ + public static final String SDK_IF_VALIDATE_CN_NAME = "acpsdk.ifValidateCNName"; + /** 配置是否需要验证https证书,除了true之外的值都当false处理 */ + public static final String SDK_IF_VALIDATE_REMOTE_CERT = "acpsdk.ifValidateRemoteCert"; + /** signmethod */ + public static final String SDK_SIGN_METHOD ="acpsdk.signMethod"; + /** version */ + public static final String SDK_VERSION = "acpsdk.version"; + /** 后台通知地址 */ + public static final String SDK_BACKURL = "acpsdk.backUrl"; + /** 前台通知地址 */ + public static final String SDK_FRONTURL = "acpsdk.frontUrl"; + /** 操作对象. */ + private static SDKConfig config = new SDKConfig(); + /** 属性文件对象. */ + private Properties properties; + + private SDKConfig() { + super(); + } + + /** + * 获取config对象. + * @return + */ + public static SDKConfig getConfig() { + return config; + } + + /** + * 从properties文件加载 + * + * @param rootPath + * 不包含文件名的目录. + */ + public void loadPropertiesFromPath(String rootPath) { + if (StringUtils.isNotBlank(rootPath)) { + LogUtil.writeLog("从路径读取配置文件: " + rootPath+File.separator+FILE_NAME); + File file = new File(rootPath + File.separator + FILE_NAME); + InputStream in = null; + if (file.exists()) { + try { + in = new FileInputStream(file); + properties = new Properties(); + properties.load(in); + loadProperties(properties); + } catch (FileNotFoundException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } finally { + if (null != in) { + try { + in.close(); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + } + } + } else { + // 由于此时可能还没有完成LOG的加载,因此采用标准输出来打印日志信息 + LogUtil.writeErrorLog(rootPath + FILE_NAME + "不存在,加载参数失败"); + } + } else { + loadPropertiesFromSrc(); + } + + } + + /** + * 从classpath路径下加载配置参数 + */ + public void loadPropertiesFromSrc() { + InputStream in = null; + try { + LogUtil.writeLog("从classpath: " +SDKConfig.class.getClassLoader().getResource("").getPath()+" 获取属性文件"+FILE_NAME); + in = this.getClass().getClassLoader().getResourceAsStream(FILE_NAME); + if (null != in) { + properties = new Properties(); + try { + properties.load(in); + } catch (IOException e) { + throw e; + } + } else { + LogUtil.writeErrorLog(FILE_NAME + "属性文件未能在classpath指定的目录下 "+SDKConfig.class.getClassLoader().getResource("").getPath()+" 找到!"); + return; + } + loadProperties(properties); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } finally { + if (null != in) { + try { + in.close(); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + } + } + } + + /** + * 根据传入的 {@link #(Properties)}对象设置配置参数 + * + * @param pro + */ + public void loadProperties(Properties pro) { + LogUtil.writeLog("开始从属性文件中加载配置项"); + String value = null; + + value = pro.getProperty(SDK_SIGNCERT_PATH); + if (!SDKUtil.isEmpty(value)) { + this.signCertPath = value.trim(); + LogUtil.writeLog("配置项:私钥签名证书路径==>"+SDK_SIGNCERT_PATH +"==>"+ value+" 已加载"); + } + value = pro.getProperty(SDK_SIGNCERT_PWD); + if (!SDKUtil.isEmpty(value)) { + this.signCertPwd = value.trim(); + LogUtil.writeLog("配置项:私钥签名证书密码==>"+SDK_SIGNCERT_PWD +" 已加载"); + } + value = pro.getProperty(SDK_SIGNCERT_TYPE); + if (!SDKUtil.isEmpty(value)) { + this.signCertType = value.trim(); + LogUtil.writeLog("配置项:私钥签名证书类型==>"+SDK_SIGNCERT_TYPE +"==>"+ value+" 已加载"); + } + value = pro.getProperty(SDK_ENCRYPTCERT_PATH); + if (!SDKUtil.isEmpty(value)) { + this.encryptCertPath = value.trim(); + LogUtil.writeLog("配置项:敏感信息加密证书==>"+SDK_ENCRYPTCERT_PATH +"==>"+ value+" 已加载"); + } + value = pro.getProperty(SDK_VALIDATECERT_DIR); + if (!SDKUtil.isEmpty(value)) { + this.validateCertDir = value.trim(); + LogUtil.writeLog("配置项:验证签名证书路径(这里配置的是目录,不要指定到公钥文件)==>"+SDK_VALIDATECERT_DIR +"==>"+ value+" 已加载"); + } + value = pro.getProperty(SDK_FRONT_URL); + if (!SDKUtil.isEmpty(value)) { + this.frontRequestUrl = value.trim(); + } + value = pro.getProperty(SDK_BACK_URL); + if (!SDKUtil.isEmpty(value)) { + this.backRequestUrl = value.trim(); + } + value = pro.getProperty(SDK_BATQ_URL); + if (!SDKUtil.isEmpty(value)) { + this.batchQueryUrl = value.trim(); + } + value = pro.getProperty(SDK_BATTRANS_URL); + if (!SDKUtil.isEmpty(value)) { + this.batchTransUrl = value.trim(); + } + value = pro.getProperty(SDK_FILETRANS_URL); + if (!SDKUtil.isEmpty(value)) { + this.fileTransUrl = value.trim(); + } + value = pro.getProperty(SDK_SIGNQ_URL); + if (!SDKUtil.isEmpty(value)) { + this.singleQueryUrl = value.trim(); + } + value = pro.getProperty(SDK_CARD_URL); + if (!SDKUtil.isEmpty(value)) { + this.cardRequestUrl = value.trim(); + } + value = pro.getProperty(SDK_APP_URL); + if (!SDKUtil.isEmpty(value)) { + this.appRequestUrl = value.trim(); + } + value = pro.getProperty(SDK_ENCRYPTTRACKCERT_PATH); + if (!SDKUtil.isEmpty(value)) { + this.encryptTrackCertPath = value.trim(); + } + + value = pro.getProperty(SDK_SECURITYKEY); + if (!SDKUtil.isEmpty(value)) { + this.secureKey = value.trim(); + } + value = pro.getProperty(SDK_ROOTCERT_PATH); + if (!SDKUtil.isEmpty(value)) { + this.rootCertPath = value.trim(); + } + value = pro.getProperty(SDK_MIDDLECERT_PATH); + if (!SDKUtil.isEmpty(value)) { + this.middleCertPath = value.trim(); + } + + /**缴费部分**/ + value = pro.getProperty(JF_SDK_FRONT_TRANS_URL); + if (!SDKUtil.isEmpty(value)) { + this.jfFrontRequestUrl = value.trim(); + } + + value = pro.getProperty(JF_SDK_BACK_TRANS_URL); + if (!SDKUtil.isEmpty(value)) { + this.jfBackRequestUrl = value.trim(); + } + + value = pro.getProperty(JF_SDK_SINGLE_QUERY_URL); + if (!SDKUtil.isEmpty(value)) { + this.jfSingleQueryUrl = value.trim(); + } + + value = pro.getProperty(JF_SDK_CARD_TRANS_URL); + if (!SDKUtil.isEmpty(value)) { + this.jfCardRequestUrl = value.trim(); + } + + value = pro.getProperty(JF_SDK_APP_TRANS_URL); + if (!SDKUtil.isEmpty(value)) { + this.jfAppRequestUrl = value.trim(); + } + + value = pro.getProperty(QRC_BACK_TRANS_URL); + if (!SDKUtil.isEmpty(value)) { + this.qrcBackTransUrl = value.trim(); + } + + value = pro.getProperty(QRC_B2C_ISS_BACK_TRANS_URL); + if (!SDKUtil.isEmpty(value)) { + this.qrcB2cIssBackTransUrl = value.trim(); + } + + value = pro.getProperty(QRC_B2C_MER_BACK_TRANS_URL); + if (!SDKUtil.isEmpty(value)) { + this.qrcB2cMerBackTransUrl = value.trim(); + } + + value = pro.getProperty(SDK_ENCRYPTTRACKKEY_EXPONENT); + if (!SDKUtil.isEmpty(value)) { + this.encryptTrackKeyExponent = value.trim(); + } + + value = pro.getProperty(SDK_ENCRYPTTRACKKEY_MODULUS); + if (!SDKUtil.isEmpty(value)) { + this.encryptTrackKeyModulus = value.trim(); + } + + value = pro.getProperty(SDK_IF_VALIDATE_CN_NAME); + if (!SDKUtil.isEmpty(value)) { + if( SDKConstants.FALSE_STRING.equals(value.trim())) + this.ifValidateCNName = false; + } + + value = pro.getProperty(SDK_IF_VALIDATE_REMOTE_CERT); + if (!SDKUtil.isEmpty(value)) { + if( SDKConstants.TRUE_STRING.equals(value.trim())) + this.ifValidateRemoteCert = true; + } + + value = pro.getProperty(SDK_SIGN_METHOD); + if (!SDKUtil.isEmpty(value)) { + this.signMethod = value.trim(); + } + + value = pro.getProperty(SDK_SIGN_METHOD); + if (!SDKUtil.isEmpty(value)) { + this.signMethod = value.trim(); + } + value = pro.getProperty(SDK_VERSION); + if (!SDKUtil.isEmpty(value)) { + this.version = value.trim(); + } + value = pro.getProperty(SDK_FRONTURL); + if (!SDKUtil.isEmpty(value)) { + this.frontUrl = value.trim(); + } + value = pro.getProperty(SDK_BACKURL); + if (!SDKUtil.isEmpty(value)) { + this.backUrl = value.trim(); + } + } + + + public String getFrontRequestUrl() { + return frontRequestUrl; + } + + public void setFrontRequestUrl(String frontRequestUrl) { + this.frontRequestUrl = frontRequestUrl; + } + + public String getBackRequestUrl() { + return backRequestUrl; + } + + public void setBackRequestUrl(String backRequestUrl) { + this.backRequestUrl = backRequestUrl; + } + + public String getSignCertPath() { + return signCertPath; + } + + public void setSignCertPath(String signCertPath) { + this.signCertPath = signCertPath; + } + + public String getSignCertPwd() { + return signCertPwd; + } + + public void setSignCertPwd(String signCertPwd) { + this.signCertPwd = signCertPwd; + } + + public String getSignCertType() { + return signCertType; + } + + public void setSignCertType(String signCertType) { + this.signCertType = signCertType; + } + + public String getEncryptCertPath() { + return encryptCertPath; + } + + public void setEncryptCertPath(String encryptCertPath) { + this.encryptCertPath = encryptCertPath; + } + + public String getValidateCertDir() { + return validateCertDir; + } + + public void setValidateCertDir(String validateCertDir) { + this.validateCertDir = validateCertDir; + } + + public String getSingleQueryUrl() { + return singleQueryUrl; + } + + public void setSingleQueryUrl(String singleQueryUrl) { + this.singleQueryUrl = singleQueryUrl; + } + + public String getBatchQueryUrl() { + return batchQueryUrl; + } + + public void setBatchQueryUrl(String batchQueryUrl) { + this.batchQueryUrl = batchQueryUrl; + } + + public String getBatchTransUrl() { + return batchTransUrl; + } + + public void setBatchTransUrl(String batchTransUrl) { + this.batchTransUrl = batchTransUrl; + } + + public String getFileTransUrl() { + return fileTransUrl; + } + + public void setFileTransUrl(String fileTransUrl) { + this.fileTransUrl = fileTransUrl; + } + + public String getSignCertDir() { + return signCertDir; + } + + public void setSignCertDir(String signCertDir) { + this.signCertDir = signCertDir; + } + + public Properties getProperties() { + return properties; + } + + public void setProperties(Properties properties) { + this.properties = properties; + } + + public String getCardRequestUrl() { + return cardRequestUrl; + } + + public void setCardRequestUrl(String cardRequestUrl) { + this.cardRequestUrl = cardRequestUrl; + } + + public String getAppRequestUrl() { + return appRequestUrl; + } + + public void setAppRequestUrl(String appRequestUrl) { + this.appRequestUrl = appRequestUrl; + } + + public String getEncryptTrackCertPath() { + return encryptTrackCertPath; + } + + public void setEncryptTrackCertPath(String encryptTrackCertPath) { + this.encryptTrackCertPath = encryptTrackCertPath; + } + + public String getJfFrontRequestUrl() { + return jfFrontRequestUrl; + } + + public void setJfFrontRequestUrl(String jfFrontRequestUrl) { + this.jfFrontRequestUrl = jfFrontRequestUrl; + } + + public String getJfBackRequestUrl() { + return jfBackRequestUrl; + } + + public void setJfBackRequestUrl(String jfBackRequestUrl) { + this.jfBackRequestUrl = jfBackRequestUrl; + } + + public String getJfSingleQueryUrl() { + return jfSingleQueryUrl; + } + + public void setJfSingleQueryUrl(String jfSingleQueryUrl) { + this.jfSingleQueryUrl = jfSingleQueryUrl; + } + + public String getJfCardRequestUrl() { + return jfCardRequestUrl; + } + + public void setJfCardRequestUrl(String jfCardRequestUrl) { + this.jfCardRequestUrl = jfCardRequestUrl; + } + + public String getJfAppRequestUrl() { + return jfAppRequestUrl; + } + + public void setJfAppRequestUrl(String jfAppRequestUrl) { + this.jfAppRequestUrl = jfAppRequestUrl; + } + + public String getSingleMode() { + return singleMode; + } + + public void setSingleMode(String singleMode) { + this.singleMode = singleMode; + } + + public String getEncryptTrackKeyExponent() { + return encryptTrackKeyExponent; + } + + public void setEncryptTrackKeyExponent(String encryptTrackKeyExponent) { + this.encryptTrackKeyExponent = encryptTrackKeyExponent; + } + + public String getEncryptTrackKeyModulus() { + return encryptTrackKeyModulus; + } + + public void setEncryptTrackKeyModulus(String encryptTrackKeyModulus) { + this.encryptTrackKeyModulus = encryptTrackKeyModulus; + } + + public String getSecureKey() { + return secureKey; + } + + public void setSecureKey(String securityKey) { + this.secureKey = securityKey; + } + + public String getMiddleCertPath() { + return middleCertPath; + } + + public void setMiddleCertPath(String middleCertPath) { + this.middleCertPath = middleCertPath; + } + + public boolean isIfValidateCNName() { + return ifValidateCNName; + } + + public void setIfValidateCNName(boolean ifValidateCNName) { + this.ifValidateCNName = ifValidateCNName; + } + + public boolean isIfValidateRemoteCert() { + return ifValidateRemoteCert; + } + + public void setIfValidateRemoteCert(boolean ifValidateRemoteCert) { + this.ifValidateRemoteCert = ifValidateRemoteCert; + } + + public String getSignMethod() { + return signMethod; + } + + public void setSignMethod(String signMethod) { + this.signMethod = signMethod; + } + public String getQrcBackTransUrl() { + return qrcBackTransUrl; + } + + public void setQrcBackTransUrl(String qrcBackTransUrl) { + this.qrcBackTransUrl = qrcBackTransUrl; + } + + public String getQrcB2cIssBackTransUrl() { + return qrcB2cIssBackTransUrl; + } + + public void setQrcB2cIssBackTransUrl(String qrcB2cIssBackTransUrl) { + this.qrcB2cIssBackTransUrl = qrcB2cIssBackTransUrl; + } + + public String getQrcB2cMerBackTransUrl() { + return qrcB2cMerBackTransUrl; + } + + public void setQrcB2cMerBackTransUrl(String qrcB2cMerBackTransUrl) { + this.qrcB2cMerBackTransUrl = qrcB2cMerBackTransUrl; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getFrontUrl() { + return frontUrl; + } + + public void setFrontUrl(String frontUrl) { + this.frontUrl = frontUrl; + } + + public String getBackUrl() { + return backUrl; + } + + public void setBackUrl(String backUrl) { + this.backUrl = backUrl; + } + + public String getRootCertPath() { + return rootCertPath; + } + + public void setRootCertPath(String rootCertPath) { + this.rootCertPath = rootCertPath; + } + +} diff --git a/back-end_code/src/main/java/com/shop/union/constants/SDKConstants.java b/back-end_code/src/main/java/com/shop/union/constants/SDKConstants.java new file mode 100644 index 0000000..aa7c389 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/union/constants/SDKConstants.java @@ -0,0 +1,391 @@ +/** + * + * Licensed Property to China UnionPay Co., Ltd. + * + * (C) Copyright of China UnionPay Co., Ltd. 2010 + * All Rights Reserved. + * + * + * Modification History: + * ============================================================================= + * Author Date Description + * ------------ ---------- --------------------------------------------------- + * xshu 2014-05-28 MPI插件包常量定义 + * ============================================================================= + */ +package com.shop.union.constants; +/** + * + * @ClassName SDKConstants + * @Description acpsdk常量类 + * @date 2016-7-22 下午4:05:54 + * + */ +public class SDKConstants { + + public final static String COLUMN_DEFAULT = "-"; + + public final static String KEY_DELIMITER = "#"; + + /** memeber variable: blank. */ + public static final String BLANK = ""; + + /** member variabel: space. */ + public static final String SPACE = " "; + + /** memeber variable: unline. */ + public static final String UNLINE = "_"; + + /** memeber varibale: star. */ + public static final String STAR = "*"; + + /** memeber variable: line. */ + public static final String LINE = "-"; + + /** memeber variable: add. */ + public static final String ADD = "+"; + + /** memeber variable: colon. */ + public final static String COLON = "|"; + + /** memeber variable: point. */ + public final static String POINT = "."; + + /** memeber variable: comma. */ + public final static String COMMA = ","; + + /** memeber variable: slash. */ + public final static String SLASH = "/"; + + /** memeber variable: div. */ + public final static String DIV = "/"; + + /** memeber variable: left . */ + public final static String LB = "("; + + /** memeber variable: right. */ + public final static String RB = ")"; + + /** memeber variable: rmb. */ + public final static String CUR_RMB = "RMB"; + + /** memeber variable: .page size */ + public static final int PAGE_SIZE = 10; + + /** memeber variable: String ONE. */ + public static final String ONE = "1"; + + /** memeber variable: String ZERO. */ + public static final String ZERO = "0"; + + /** memeber variable: number six. */ + public static final int NUM_SIX = 6; + + /** memeber variable: equal mark. */ + public static final String EQUAL = "="; + + /** memeber variable: operation ne. */ + public static final String NE = "!="; + + /** memeber variable: operation le. */ + public static final String LE = "<="; + + /** memeber variable: operation ge. */ + public static final String GE = ">="; + + /** memeber variable: operation lt. */ + public static final String LT = "<"; + + /** memeber variable: operation gt. */ + public static final String GT = ">"; + + /** memeber variable: list separator. */ + public static final String SEP = "./"; + + /** memeber variable: Y. */ + public static final String Y = "Y"; + + /** memeber variable: AMPERSAND. */ + public static final String AMPERSAND = "&"; + + /** memeber variable: SQL_LIKE_TAG. */ + public static final String SQL_LIKE_TAG = "%"; + + /** memeber variable: @. */ + public static final String MAIL = "@"; + + /** memeber variable: number zero. */ + public static final int NZERO = 0; + + public static final String LEFT_BRACE = "{"; + + public static final String RIGHT_BRACE = "}"; + + /** memeber variable: string true. */ + public static final String TRUE_STRING = "true"; + /** memeber variable: string false. */ + public static final String FALSE_STRING = "false"; + + /** memeber variable: forward success. */ + public static final String SUCCESS = "success"; + /** memeber variable: forward fail. */ + public static final String FAIL = "fail"; + /** memeber variable: global forward success. */ + public static final String GLOBAL_SUCCESS = "$success"; + /** memeber variable: global forward fail. */ + public static final String GLOBAL_FAIL = "$fail"; + + public static final String UTF_8_ENCODING = "UTF-8"; + public static final String GBK_ENCODING = "GBK"; + public static final String CONTENT_TYPE = "Content-type"; + public static final String APP_XML_TYPE = "application/xml;charset=utf-8"; + public static final String APP_FORM_TYPE = "application/x-www-form-urlencoded;charset="; + + public static final String VERSION_1_0_0 = "1.0.0"; + public static final String VERSION_5_0_0 = "5.0.0"; + public static final String VERSION_5_0_1 = "5.0.1"; + public static final String VERSION_5_1_0 = "5.1.0"; + public static final String SIGNMETHOD_RSA = "01"; + public static final String SIGNMETHOD_SHA256 = "11"; + public static final String SIGNMETHOD_SM3 = "12"; + public static final String UNIONPAY_CNNAME = "中国银联股份有限公司"; + public static final String CERTTYPE_01 = "01";// 敏感信息加密公钥 + public static final String CERTTYPE_02 = "02";// 磁道加密公钥 + + /******************************************** 5.0报文接口定义 ********************************************/ + /** 版本号. */ + public static final String param_version = "version"; + /** 证书ID. */ + public static final String param_certId = "certId"; + /** 签名. */ + public static final String param_signature = "signature"; + /** 签名方法. */ + public static final String param_signMethod = "signMethod"; + /** 编码方式. */ + public static final String param_encoding = "encoding"; + /** 交易类型. */ + public static final String param_txnType = "txnType"; + /** 交易子类. */ + public static final String param_txnSubType = "txnSubType"; + /** 业务类型. */ + public static final String param_bizType = "bizType"; + /** 前台通知地址 . */ + public static final String param_frontUrl = "frontUrl"; + /** 后台通知地址. */ + public static final String param_backUrl = "backUrl"; + /** 接入类型. */ + public static final String param_accessType = "accessType"; + /** 收单机构代码. */ + public static final String param_acqInsCode = "acqInsCode"; + /** 商户类别. */ + public static final String param_merCatCode = "merCatCode"; + /** 商户类型. */ + public static final String param_merType = "merType"; + /** 商户代码. */ + public static final String param_merId = "merId"; + /** 商户名称. */ + public static final String param_merName = "merName"; + /** 商户简称. */ + public static final String param_merAbbr = "merAbbr"; + /** 二级商户代码. */ + public static final String param_subMerId = "subMerId"; + /** 二级商户名称. */ + public static final String param_subMerName = "subMerName"; + /** 二级商户简称. */ + public static final String param_subMerAbbr = "subMerAbbr"; + /** Cupsecure 商户代码. */ + public static final String param_csMerId = "csMerId"; + /** 商户订单号. */ + public static final String param_orderId = "orderId"; + /** 交易时间. */ + public static final String param_txnTime = "txnTime"; + /** 发送时间. */ + public static final String param_txnSendTime = "txnSendTime"; + /** 订单超时时间间隔. */ + public static final String param_orderTimeoutInterval = "orderTimeoutInterval"; + /** 支付超时时间. */ + public static final String param_payTimeoutTime = "payTimeoutTime"; + /** 默认支付方式. */ + public static final String param_defaultPayType = "defaultPayType"; + /** 支持支付方式. */ + public static final String param_supPayType = "supPayType"; + /** 支付方式. */ + public static final String param_payType = "payType"; + /** 自定义支付方式. */ + public static final String param_customPayType = "customPayType"; + /** 物流标识. */ + public static final String param_shippingFlag = "shippingFlag"; + /** 收货地址-国家. */ + public static final String param_shippingCountryCode = "shippingCountryCode"; + /** 收货地址-省. */ + public static final String param_shippingProvinceCode = "shippingProvinceCode"; + /** 收货地址-市. */ + public static final String param_shippingCityCode = "shippingCityCode"; + /** 收货地址-地区. */ + public static final String param_shippingDistrictCode = "shippingDistrictCode"; + /** 收货地址-详细. */ + public static final String param_shippingStreet = "shippingStreet"; + /** 商品总类. */ + public static final String param_commodityCategory = "commodityCategory"; + /** 商品名称. */ + public static final String param_commodityName = "commodityName"; + /** 商品URL. */ + public static final String param_commodityUrl = "commodityUrl"; + /** 商品单价. */ + public static final String param_commodityUnitPrice = "commodityUnitPrice"; + /** 商品数量. */ + public static final String param_commodityQty = "commodityQty"; + /** 是否预授权. */ + public static final String param_isPreAuth = "isPreAuth"; + /** 币种. */ + public static final String param_currencyCode = "currencyCode"; + /** 账户类型. */ + public static final String param_accType = "accType"; + /** 账号. */ + public static final String param_accNo = "accNo"; + /** 支付卡类型. */ + public static final String param_payCardType = "payCardType"; + /** 发卡机构代码. */ + public static final String param_issInsCode = "issInsCode"; + /** 持卡人信息. */ + public static final String param_customerInfo = "customerInfo"; + /** 交易金额. */ + public static final String param_txnAmt = "txnAmt"; + /** 余额. */ + public static final String param_balance = "balance"; + /** 地区代码. */ + public static final String param_districtCode = "districtCode"; + /** 附加地区代码. */ + public static final String param_additionalDistrictCode = "additionalDistrictCode"; + /** 账单类型. */ + public static final String param_billType = "billType"; + /** 账单号码. */ + public static final String param_billNo = "billNo"; + /** 账单月份. */ + public static final String param_billMonth = "billMonth"; + /** 账单查询要素. */ + public static final String param_billQueryInfo = "billQueryInfo"; + /** 账单详情. */ + public static final String param_billDetailInfo = "billDetailInfo"; + /** 账单金额. */ + public static final String param_billAmt = "billAmt"; + /** 账单金额符号. */ + public static final String param_billAmtSign = "billAmtSign"; + /** 绑定标识号. */ + public static final String param_bindId = "bindId"; + /** 风险级别. */ + public static final String param_riskLevel = "riskLevel"; + /** 绑定信息条数. */ + public static final String param_bindInfoQty = "bindInfoQty"; + /** 绑定信息集. */ + public static final String param_bindInfoList = "bindInfoList"; + /** 批次号. */ + public static final String param_batchNo = "batchNo"; + /** 总笔数. */ + public static final String param_totalQty = "totalQty"; + /** 总金额. */ + public static final String param_totalAmt = "totalAmt"; + /** 文件类型. */ + public static final String param_fileType = "fileType"; + /** 文件名称. */ + public static final String param_fileName = "fileName"; + /** 批量文件内容. */ + public static final String param_fileContent = "fileContent"; + /** 商户摘要. */ + public static final String param_merNote = "merNote"; + /** 商户自定义域. */ + // public static final String param_merReserved = "merReserved";//接口变更删除 + /** 请求方保留域. */ + public static final String param_reqReserved = "reqReserved";// 新增接口 + /** 保留域. */ + public static final String param_reserved = "reserved"; + /** 终端号. */ + public static final String param_termId = "termId"; + /** 终端类型. */ + public static final String param_termType = "termType"; + /** 交互模式. */ + public static final String param_interactMode = "interactMode"; + /** 发卡机构识别模式. */ + // public static final String param_recognitionMode = "recognitionMode"; + public static final String param_issuerIdentifyMode = "issuerIdentifyMode";// 接口名称变更 + /** 商户端用户号. */ + public static final String param_merUserId = "merUserId"; + /** 持卡人IP. */ + public static final String param_customerIp = "customerIp"; + /** 查询流水号. */ + public static final String param_queryId = "queryId"; + /** 原交易查询流水号. */ + public static final String param_origQryId = "origQryId"; + /** 系统跟踪号. */ + public static final String param_traceNo = "traceNo"; + /** 交易传输时间. */ + public static final String param_traceTime = "traceTime"; + /** 清算日期. */ + public static final String param_settleDate = "settleDate"; + /** 清算币种. */ + public static final String param_settleCurrencyCode = "settleCurrencyCode"; + /** 清算金额. */ + public static final String param_settleAmt = "settleAmt"; + /** 清算汇率. */ + public static final String param_exchangeRate = "exchangeRate"; + /** 兑换日期. */ + public static final String param_exchangeDate = "exchangeDate"; + /** 响应时间. */ + public static final String param_respTime = "respTime"; + /** 原交易应答码. */ + public static final String param_origRespCode = "origRespCode"; + /** 原交易应答信息. */ + public static final String param_origRespMsg = "origRespMsg"; + /** 应答码. */ + public static final String param_respCode = "respCode"; + /** 应答码信息. */ + public static final String param_respMsg = "respMsg"; + // 新增四个报文字段merUserRegDt merUserEmail checkFlag activateStatus + /** 商户端用户注册时间. */ + public static final String param_merUserRegDt = "merUserRegDt"; + /** 商户端用户注册邮箱. */ + public static final String param_merUserEmail = "merUserEmail"; + /** 验证标识. */ + public static final String param_checkFlag = "checkFlag"; + /** 开通状态. */ + public static final String param_activateStatus = "activateStatus"; + /** 加密证书ID. */ + public static final String param_encryptCertId = "encryptCertId"; + /** 用户MAC、IMEI串号、SSID. */ + public static final String param_userMac = "userMac"; + /** 关联交易. */ + // public static final String param_relationTxnType = "relationTxnType"; + /** 短信类型 */ + public static final String param_smsType = "smsType"; + + /** 风控信息域 */ + public static final String param_riskCtrlInfo = "riskCtrlInfo"; + + /** IC卡交易信息域 */ + public static final String param_ICTransData = "ICTransData"; + + /** VPC交易信息域 */ + public static final String param_VPCTransData = "VPCTransData"; + + /** 安全类型 */ + public static final String param_securityType = "securityType"; + + /** 银联订单号 */ + public static final String param_tn = "tn"; + + /** 分期付款手续费率 */ + public static final String param_instalRate = "instalRate"; + + /** 分期付款手续费率 */ + public static final String param_mchntFeeSubsidy = "mchntFeeSubsidy"; + + /** 签名公钥证书 */ + public static final String param_signPubKeyCert = "signPubKeyCert"; + + /** 加密公钥证书 */ + public static final String param_encryptPubKeyCert = "encryptPubKeyCert"; + + /** 证书类型 */ + public static final String param_certType = "certType"; + +} diff --git a/back-end_code/src/main/java/com/shop/union/service/AcpService.java b/back-end_code/src/main/java/com/shop/union/service/AcpService.java new file mode 100644 index 0000000..f9c72f2 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/union/service/AcpService.java @@ -0,0 +1,673 @@ +package com.shop.union.service; + + +import com.shop.union.constants.SDKConstants; +import com.shop.union.util.*; + +import java.io.*; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @ClassName AcpService + * @Description acpsdk接口服务类,接入商户集成请可以直接参考使用本类中的方法 + * @date 2016-7-22 下午2:44:37 + */ +public class AcpService { + + /** + * 请求报文签名(使用配置文件中配置的私钥证书或者对称密钥签名)
+ * 功能:对请求报文进行签名,并计算赋值certid,signature字段并返回
+ * @param reqData 请求报文map
+ * @param encoding 上送请求报文域encoding字段的值
+ * @return 签名后的map对象
+ */ + public static Map sign(Map reqData,String encoding) { + reqData = SDKUtil.filterBlank(reqData); + SDKUtil.sign(reqData, encoding); + return reqData; + } + + /** + * 同signByCertInfo
+ * @param reqData + * @param certPath + * @param certPwd + * @param encoding + * @return + * @deprecated + */ + public static Map sign(Map reqData, String certPath, + String certPwd,String encoding) { + reqData = SDKUtil.filterBlank(reqData); + SDKUtil.signByCertInfo(reqData,certPath,certPwd,encoding); + return reqData; + } + + /** + * 多证书签名(通过传入私钥证书路径和密码签名)
+ * 功能:如果有多个商户号接入银联,每个商户号对应不同的证书可以使用此方法:传入私钥证书和密码(并且在acp_sdk.properties中 配置 acpsdk.singleMode=false)
+ * @param reqData 请求报文map
+ * @param certPath 签名私钥文件(带路径)
+ * @param certPwd 签名私钥密码
+ * @param encoding 上送请求报文域encoding字段的值
+ * @return 签名后的map对象
+ */ + public static Map signByCertInfo(Map reqData, String certPath, + String certPwd,String encoding) { + reqData = SDKUtil.filterBlank(reqData); + SDKUtil.signByCertInfo(reqData,certPath,certPwd,encoding); + return reqData; + } + + /** + * 多密钥签名(通过传入密钥签名)
+ * 功能:如果有多个商户号接入银联,每个商户号对应不同的证书可以使用此方法:传入私钥证书和密码(并且在acp_sdk.properties中 配置 acpsdk.singleMode=false)
+ * @param reqData 请求报文map
+ * @param secureKey 签名对称密钥
+ * @param encoding 上送请求报文域encoding字段的值
+ * @return 签名后的map对象
+ */ + public static Map signBySecureKey(Map reqData, String secureKey, String encoding) { + reqData = SDKUtil.filterBlank(reqData); + SDKUtil.signBySecureKey(reqData, secureKey, encoding); + return reqData; + } + + /** + * 验证签名(SHA-1摘要算法)
+ * @param rspData 返回报文数据
+ * @param encoding 上送请求报文域encoding字段的值
+ * @return true 通过 false 未通过
+ */ + public static boolean validate(Map rspData, String encoding) { + return SDKUtil.validate(rspData, encoding); + } + + /** + * 多密钥验签(通过传入密钥签名)
+ * @param rspData 返回报文数据
+ * @param encoding 上送请求报文域encoding字段的值
+ * @return true 通过 false 未通过
+ */ + public static boolean validateBySecureKey(Map rspData, String secureKey, String encoding) { + return SDKUtil.validateBySecureKey(rspData, secureKey, encoding); + } + + + /** + * @deprecated 5.1.0开发包已删除此方法,请直接参考5.1.0开发包中的VerifyAppData.java验签。 + * 对控件支付成功返回的结果信息中data域进行验签(控件端获取的应答信息)
+ * @param jsonData json格式数据,例如:{"sign" : "J6rPLClQ64szrdXCOtV1ccOMzUmpiOKllp9cseBuRqJ71pBKPPkZ1FallzW18gyP7CvKh1RxfNNJ66AyXNMFJi1OSOsteAAFjF5GZp0Xsfm3LeHaN3j/N7p86k3B1GrSPvSnSw1LqnYuIBmebBkC1OD0Qi7qaYUJosyA1E8Ld8oGRZT5RR2gLGBoiAVraDiz9sci5zwQcLtmfpT5KFk/eTy4+W9SsC0M/2sVj43R9ePENlEvF8UpmZBqakyg5FO8+JMBz3kZ4fwnutI5pWPdYIWdVrloBpOa+N4pzhVRKD4eWJ0CoiD+joMS7+C0aPIEymYFLBNYQCjM0KV7N726LA==", "data" : "pay_result=success&tn=201602141008032671528&cert_id=68759585097"} + * @return 是否成功 + */ + public static boolean validateAppResponse(String jsonData, String encoding) { + LogUtil.writeLog("控件应答信息验签处理开始:[" + jsonData + "]"); + if (SDKUtil.isEmpty(encoding)) { + encoding = "UTF-8"; + } + + Pattern p = Pattern.compile("\\s*\"sign\"\\s*:\\s*\"([^\"]*)\"\\s*"); + Matcher m = p.matcher(jsonData); + if(!m.find()) return false; + String sign = m.group(1); + + p = Pattern.compile("\\s*\"data\"\\s*:\\s*\"([^\"]*)\"\\s*"); + m = p.matcher(jsonData); + if(!m.find()) return false; + String data = m.group(1); + + p = Pattern.compile("cert_id=(\\d*)"); + m = p.matcher(jsonData); + if(!m.find()) return false; + String certId = m.group(1); + + try { + // 验证签名需要用银联发给商户的公钥证书. + return SecureUtil.validateSignBySoft(CertUtil + .getValidatePublicKey(certId), SecureUtil.base64Decode(sign + .getBytes(encoding)), SecureUtil.sha1X16(data, + encoding)); + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } catch (Exception e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + return false; + } + + /** + * 功能:后台交易提交请求报文并接收同步应答报文
+ * @param reqData 请求报文
+ * @param reqUrl 请求地址
+ * @param encoding
+ * @return 应答http 200返回true ,其他false
+ */ + public static Map post( + Map reqData,String reqUrl,String encoding) { + Map rspData = new HashMap(); + LogUtil.writeLog("请求银联地址:" + reqUrl); + //发送后台请求数据 + HttpClient hc = new HttpClient(reqUrl, 30000, 30000); + try { + int status = hc.send(reqData, encoding); + if (200 == status) { + String resultString = hc.getResult(); + if (null != resultString && !"".equals(resultString)) { + // 将返回结果转换为map + Map tmpRspData = SDKUtil.convertResultStringToMap(resultString); + rspData.putAll(tmpRspData); + } + }else{ + LogUtil.writeLog("返回http状态码["+status+"],请检查请求报文或者请求地址是否正确"); + } + } catch (Exception e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + return rspData; + } + + /** + * 功能:http Get方法 便民缴费产品中使用
+ * @param reqUrl 请求地址
+ * @param encoding
+ * @return + */ + public static String get(String reqUrl,String encoding) { + + LogUtil.writeLog("请求银联地址:" + reqUrl); + //发送后台请求数据 + HttpClient hc = new HttpClient(reqUrl, 30000, 30000); + try { + int status = hc.sendGet(encoding); + if (200 == status) { + String resultString = hc.getResult(); + if (null != resultString && !"".equals(resultString)) { + return resultString; + } + }else{ + LogUtil.writeLog("返回http状态码["+status+"],请检查请求报文或者请求地址是否正确"); + } + } catch (Exception e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + return null; + } + + + /** + * 功能:前台交易构造HTTP POST自动提交表单
+ * @param reqUrl 表单提交地址
+ * @param hiddens 以MAP形式存储的表单键值
+ * @param encoding 上送请求报文域encoding字段的值
+ * @return 构造好的HTTP POST交易表单
+ */ + public static String createAutoFormHtml(String reqUrl, Map hiddens,String encoding) { + StringBuffer sf = new StringBuffer(); + sf.append(""); + sf.append(""); + if (null != hiddens && 0 != hiddens.size()) { + Set> set = hiddens.entrySet(); + Iterator> it = set.iterator(); + while (it.hasNext()) { + Entry ey = it.next(); + String key = ey.getKey(); + String value = ey.getValue(); + sf.append(""); + } + } + sf.append(""); + sf.append(""); + sf.append(""); + sf.append(""); + return sf.toString(); + } + + + /** + * 功能:将批量文件内容使用DEFLATE压缩算法压缩,Base64编码生成字符串并返回
+ * 适用到的交易:批量代付,批量代收,批量退货
+ * @param filePath 批量文件-全路径文件名
+ * @return + */ + public static String enCodeFileContent(String filePath,String encoding){ + String baseFileContent = ""; + + File file = new File(filePath); + if (!file.exists()) { + try { + file.createNewFile(); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + } + InputStream in = null; + try { + in = new FileInputStream(file); + int fl = in.available(); + if (null != in) { + byte[] s = new byte[fl]; + in.read(s, 0, fl); + // 压缩编码. + baseFileContent = new String(SecureUtil.base64Encode(SDKUtil.deflater(s)),encoding); + } + } catch (Exception e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } finally { + if (null != in) { + try { + in.close(); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + } + } + return baseFileContent; + } + + /** + * 功能:解析交易返回的fileContent字符串并落地 ( 解base64,解DEFLATE压缩并落地)
+ * 适用到的交易:对账文件下载,批量交易状态查询
+ * @param resData 返回报文map
+ * @param fileDirectory 落地的文件目录(绝对路径) + * @param encoding 上送请求报文域encoding字段的值
+ */ + public static String deCodeFileContent(Map resData,String fileDirectory,String encoding) { + // 解析返回文件 + String filePath = null; + String fileContent = resData.get(SDKConstants.param_fileContent); + if (null != fileContent && !"".equals(fileContent)) { + FileOutputStream out = null; + try { + byte[] fileArray = SDKUtil.inflater(SecureUtil + .base64Decode(fileContent.getBytes(encoding))); + if (SDKUtil.isEmpty(resData.get("fileName"))) { + filePath = fileDirectory + File.separator + resData.get("merId") + + "_" + resData.get("batchNo") + "_" + + resData.get("txnTime") + ".txt"; + } else { + filePath = fileDirectory + File.separator + resData.get("fileName"); + } + File file = new File(filePath); + if (file.exists()) { + file.delete(); + } + file.createNewFile(); + out = new FileOutputStream(file); + out.write(fileArray, 0, fileArray.length); + out.flush(); + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + }finally{ + try { + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return filePath; + } + + /** + * 功能:将结果文件内容 转换成明文字符串:解base64,解压缩
+ * 适用到的交易:批量交易状态查询
+ * @param fileContent 批量交易状态查询返回的文件内容
+ * @return 内容明文
+ */ + public static String getFileContent(String fileContent,String encoding){ + String fc = ""; + try { + fc = new String(SDKUtil.inflater(SecureUtil.base64Decode(fileContent.getBytes())),encoding); + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + return fc; + } + + + /** + * 功能:持卡人信息域customerInfo构造
+ * 说明:不勾选对敏感信息加密权限使用旧的构造customerInfo域方式,不对敏感信息进行加密(对 phoneNo,cvn2, expired不加密),但如果送pin的话则加密
+ * @param customerInfoMap 信息域请求参数 key送域名value送值,必送
+ * 例如:customerInfoMap.put("certifTp", "01"); //证件类型
+ customerInfoMap.put("certifId", "341126197709218366"); //证件号码
+ customerInfoMap.put("customerNm", "互联网"); //姓名
+ customerInfoMap.put("phoneNo", "13552535506"); //手机号
+ customerInfoMap.put("smsCode", "123456"); //短信验证码
+ customerInfoMap.put("pin", "111111"); //密码(加密)
+ customerInfoMap.put("cvn2", "123"); //卡背面的cvn2三位数字(不加密)
+ customerInfoMap.put("expired", "1711"); //有效期 年在前月在后(不加密)
+ * @param accNo customerInfoMap送了密码那么卡号必送,如果customerInfoMap未送密码pin,此字段可以不送
+ * @param encoding 上送请求报文域encoding字段的值
+ * @return base64后的持卡人信息域字段
+ */ + public static String getCustomerInfo(Map customerInfoMap,String accNo,String encoding) { + + if(customerInfoMap.isEmpty()) + return "{}"; + StringBuffer sf = new StringBuffer("{"); + for(Iterator it = customerInfoMap.keySet().iterator(); it.hasNext();){ + String key = it.next(); + String value = customerInfoMap.get(key); + if(key.equals("pin")){ + if(null == accNo || "".equals(accNo.trim())){ + LogUtil.writeLog("送了密码(PIN),必须在getCustomerInfo参数中上传卡号"); + throw new RuntimeException("加密PIN没送卡号无法后续处理"); + }else{ + value = encryptPin(accNo,value,encoding); + } + } + sf.append(key).append(SDKConstants.EQUAL).append(value); + if(it.hasNext()) + sf.append(SDKConstants.AMPERSAND); + } + String customerInfo = sf.append("}").toString(); + LogUtil.writeLog("组装的customerInfo明文:"+customerInfo); + try { + return new String(SecureUtil.base64Encode(sf.toString().getBytes( + encoding)),encoding); + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + return customerInfo; + } + + /** + * 功能:持卡人信息域customerInfo构造,勾选对敏感信息加密权限 适用新加密规范,对pin和phoneNo,cvn2,expired加密
+ * 适用到的交易:
+ * @param customerInfoMap 信息域请求参数 key送域名value送值,必送
+ * 例如:customerInfoMap.put("certifTp", "01"); //证件类型
+ customerInfoMap.put("certifId", "341126197709218366"); //证件号码
+ customerInfoMap.put("customerNm", "互联网"); //姓名
+ customerInfoMap.put("smsCode", "123456"); //短信验证码
+ customerInfoMap.put("pin", "111111"); //密码(加密)
+ customerInfoMap.put("phoneNo", "13552535506"); //手机号(加密)
+ customerInfoMap.put("cvn2", "123"); //卡背面的cvn2三位数字(加密)
+ customerInfoMap.put("expired", "1711"); //有效期 年在前月在后(加密)
+ * @param accNo customerInfoMap送了密码那么卡号必送,如果customerInfoMap未送密码PIN,此字段可以不送
+ * @param encoding 上送请求报文域encoding字段的值 + * @return base64后的持卡人信息域字段
+ */ + public static String getCustomerInfoWithEncrypt(Map customerInfoMap,String accNo,String encoding) { + if(customerInfoMap.isEmpty()) + return "{}"; + StringBuffer sf = new StringBuffer("{"); + //敏感信息加密域 + StringBuffer encryptedInfoSb = new StringBuffer(""); + + for(Iterator it = customerInfoMap.keySet().iterator(); it.hasNext();){ + String key = it.next(); + String value = customerInfoMap.get(key); + if(key.equals("phoneNo") || key.equals("cvn2") || key.equals("expired")){ + encryptedInfoSb.append(key).append(SDKConstants.EQUAL).append(value).append(SDKConstants.AMPERSAND); + }else{ + if(key.equals("pin")){ + if(null == accNo || "".equals(accNo.trim())){ + LogUtil.writeLog("送了密码(PIN),必须在getCustomerInfoWithEncrypt参数中上传卡号"); + throw new RuntimeException("加密PIN没送卡号无法后续处理"); + }else{ + value = encryptPin(accNo,value,encoding); + } + } + sf.append(key).append(SDKConstants.EQUAL).append(value).append(SDKConstants.AMPERSAND); + } + } + + if(!encryptedInfoSb.toString().equals("")){ + encryptedInfoSb.setLength(encryptedInfoSb.length()-1);//去掉最后一个&符号 + LogUtil.writeLog("组装的customerInfo encryptedInfo明文:"+ encryptedInfoSb.toString()); + sf.append("encryptedInfo").append(SDKConstants.EQUAL).append(encryptData(encryptedInfoSb.toString(), encoding)); + }else{ + sf.setLength(sf.length()-1); + } + + String customerInfo = sf.append("}").toString(); + LogUtil.writeLog("组装的customerInfo明文:"+customerInfo); + try { + return new String(SecureUtil.base64Encode(sf.toString().getBytes(encoding)),encoding); + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + return customerInfo; + } + + /** + * 解析返回报文(后台通知)中的customerInfo域:
+ * 解base64,如果带敏感信息加密 encryptedInfo 则将其解密并将 encryptedInfo中的域放到customerInfoMap返回
+ * @param customerInfo
+ * @param encoding
+ * @return + */ + public static Map parseCustomerInfo(String customerInfo,String encoding){ + Map customerInfoMap = null; + try { + byte[] b = SecureUtil.base64Decode(customerInfo.getBytes(encoding)); + String customerInfoNoBase64 = new String(b,encoding); + LogUtil.writeLog("解base64后===>" +customerInfoNoBase64); + //去掉前后的{} + customerInfoNoBase64 = customerInfoNoBase64.substring(1, customerInfoNoBase64.length()-1); + customerInfoMap = SDKUtil.parseQString(customerInfoNoBase64); + if(customerInfoMap.containsKey("encryptedInfo")){ + String encInfoStr = customerInfoMap.get("encryptedInfo"); + customerInfoMap.remove("encryptedInfo"); + String encryptedInfoStr = decryptData(encInfoStr, encoding); + Map encryptedInfoMap = SDKUtil.parseQString(encryptedInfoStr); + customerInfoMap.putAll(encryptedInfoMap); + } + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + return customerInfoMap; + } + + /** + * 解析返回报文(后台通知)中的customerInfo域:
+ * 解base64,如果带敏感信息加密 encryptedInfo 则将其解密并将 encryptedInfo中的域放到customerInfoMap返回
+ * @param customerInfo
+ * @param encoding
+ * @return + */ + public static Map parseCustomerInfo(String customerInfo, String certPath, + String certPwd, String encoding){ + Map customerInfoMap = null; + try { + byte[] b = SecureUtil.base64Decode(customerInfo.getBytes(encoding)); + String customerInfoNoBase64 = new String(b,encoding); + LogUtil.writeLog("解base64后===>" +customerInfoNoBase64); + //去掉前后的{} + customerInfoNoBase64 = customerInfoNoBase64.substring(1, customerInfoNoBase64.length()-1); + customerInfoMap = SDKUtil.parseQString(customerInfoNoBase64); + if(customerInfoMap.containsKey("encryptedInfo")){ + String encInfoStr = customerInfoMap.get("encryptedInfo"); + customerInfoMap.remove("encryptedInfo"); + String encryptedInfoStr = decryptData(encInfoStr, certPath, certPwd, encoding); + Map encryptedInfoMap = SDKUtil.parseQString(encryptedInfoStr); + customerInfoMap.putAll(encryptedInfoMap); + } + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + return customerInfoMap; + } + + /** + * 密码加密并做base64
+ * @param accNo 卡号
+ * @param pin 密码
+ * @param encoding
+ * @return 加密的内容
+ */ + public static String encryptPin(String accNo, String pin, String encoding) { + return SecureUtil.encryptPin(accNo, pin, encoding, CertUtil + .getEncryptCertPublicKey()); + } + + /** + * 敏感信息加密并做base64(卡号,手机号,cvn2,有效期)
+ * @param data 送 phoneNo,cvn2,有效期
+ * @param encoding
+ * @return 加密的密文
+ */ + public static String encryptData(String data, String encoding) { + return SecureUtil.encryptData(data, encoding, CertUtil + .getEncryptCertPublicKey()); + } + + /** + * 敏感信息解密,使用配置文件acp_sdk.properties解密
+ * @param base64EncryptedInfo 加密信息
+ * @param encoding
+ * @return 解密后的明文
+ */ + public static String decryptData(String base64EncryptedInfo, String encoding) { + return SecureUtil.decryptData(base64EncryptedInfo, encoding, CertUtil + .getSignCertPrivateKey()); + } + + /** + * 敏感信息解密,通过传入的私钥解密
+ * @param base64EncryptedInfo 加密信息
+ * @param certPath 私钥文件(带全路径)
+ * @param certPwd 私钥密码
+ * @param encoding
+ * @return + */ + public static String decryptData(String base64EncryptedInfo, String certPath, + String certPwd, String encoding) { + return SecureUtil.decryptData(base64EncryptedInfo, encoding, CertUtil + .getSignCertPrivateKeyByStoreMap(certPath, certPwd)); + } + + /** + * 5.0.0加密磁道信息,5.1.0接口请勿使用
+ * @param trackData 待加密磁道数据
+ * @param encoding 编码格式
+ * @return 加密的密文
+ * @deprecated + */ + public static String encryptTrack(String trackData, String encoding) { + return SecureUtil.encryptData(trackData, encoding, + CertUtil.getEncryptTrackPublicKey()); + } + + /** + * 获取敏感信息加密证书的物理序列号
+ * @return + */ + public static String getEncryptCertId(){ + return CertUtil.getEncryptCertId(); + } + + /** + * 对字符串做base64
+ * @param rawStr
+ * @param encoding
+ * @return
+ * @throws IOException + */ + public static String base64Encode(String rawStr,String encoding) throws IOException{ + byte [] rawByte = rawStr.getBytes(encoding); + return new String(SecureUtil.base64Encode(rawByte),encoding); + } + /** + * 对base64的字符串解base64
+ * @param base64Str
+ * @param encoding
+ * @return
+ * @throws IOException + */ + public static String base64Decode(String base64Str,String encoding) throws IOException{ + byte [] rawByte = base64Str.getBytes(encoding); + return new String(SecureUtil.base64Decode(rawByte),encoding); + } + + + /** + * + * 有卡交易信息域(cardTransData)构造
+ * 所有子域需用“{}”包含,子域间以“&”符号链接。格式如下:{子域名1=值&子域名2=值&子域名3=值}
+ * 说明:本示例仅供参考,开发时请根据接口文档中的报文要素组装
+ * + * @param cardTransDataMap cardTransData的数据
+ * @param requestData 必须包含merId、orderId、txnTime、txnAmt,磁道加密时需要使用
+ * @param encoding 编码
+ * @return + */ + public static String getCardTransData(Map cardTransDataMap, + Map requestData, + String encoding) { { + + StringBuffer cardTransDataBuffer = new StringBuffer(); + + if(cardTransDataMap.containsKey("track2Data")){ + StringBuffer track2Buffer = new StringBuffer(); + track2Buffer.append(requestData.get("merId")) + .append(SDKConstants.COLON).append(requestData.get("orderId")) + .append(SDKConstants.COLON).append(requestData.get("txnTime")) + .append(SDKConstants.COLON).append(requestData.get("txnAmt")==null?0:requestData.get("txnAmt")) + .append(SDKConstants.COLON).append(cardTransDataMap.get("track2Data")); + cardTransDataMap.put("track2Data", + AcpService.encryptData(track2Buffer.toString(), encoding)); + } + + if(cardTransDataMap.containsKey("track3Data")){ + StringBuffer track3Buffer = new StringBuffer(); + track3Buffer.append(requestData.get("merId")) + .append(SDKConstants.COLON).append(requestData.get("orderId")) + .append(SDKConstants.COLON).append(requestData.get("txnTime")) + .append(SDKConstants.COLON).append(requestData.get("txnAmt")==null?0:requestData.get("txnAmt")) + .append(SDKConstants.COLON).append(cardTransDataMap.get("track3Data")); + cardTransDataMap.put("track3Data", + AcpService.encryptData(track3Buffer.toString(), encoding)); + } + + return cardTransDataBuffer.append(SDKConstants.LEFT_BRACE) + .append(SDKUtil.coverMap2String(cardTransDataMap)) + .append(SDKConstants.RIGHT_BRACE).toString(); + } + + } + + /** + * 获取应答报文中的加密公钥证书,并存储到本地,备份原始证书,并自动替换证书
+ * 更新成功则返回1,无更新返回0,失败异常返回-1
+ * @param resData 返回报文 + * @param encoding + * @return + */ + public static int updateEncryptCert(Map resData, + String encoding) { + return SDKUtil.getEncryptCert(resData, encoding); + } + + /** + * 获取 + * @param number + * @return + */ + public static int genLuhn(String number){ + return SecureUtil.genLuhn(number); + } +} diff --git a/back-end_code/src/main/java/com/shop/union/service/BaseHttpSSLSocketFactory.java b/back-end_code/src/main/java/com/shop/union/service/BaseHttpSSLSocketFactory.java new file mode 100644 index 0000000..084f570 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/union/service/BaseHttpSSLSocketFactory.java @@ -0,0 +1,123 @@ +/** + * + * Licensed Property to China UnionPay Co., Ltd. + * + * (C) Copyright of China UnionPay Co., Ltd. 2010 + * All Rights Reserved. + * + * + * Modification History: + * ============================================================================= + * Author Date Description + * ------------ ---------- --------------------------------------------------- + * xshu 2014-05-28 SSLSocket 链接工具类(用于https) + * ============================================================================= + */ +package com.shop.union.service; + + +import com.shop.union.util.LogUtil; + +import javax.net.ssl.*; +import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; +import java.net.UnknownHostException; +import java.security.cert.X509Certificate; + +/** + * + * @ClassName BaseHttpSSLSocketFactory + * @Description 忽略验证ssl证书 + * @date 2016-7-22 下午4:10:14 + * + */ +public class BaseHttpSSLSocketFactory extends SSLSocketFactory { + private SSLContext getSSLContext() { + return createEasySSLContext(); + } + + @Override + public Socket createSocket(InetAddress arg0, int arg1, InetAddress arg2, + int arg3) throws IOException { + return getSSLContext().getSocketFactory().createSocket(arg0, arg1, + arg2, arg3); + } + + @Override + public Socket createSocket(String arg0, int arg1, InetAddress arg2, int arg3) + throws IOException, UnknownHostException { + return getSSLContext().getSocketFactory().createSocket(arg0, arg1, + arg2, arg3); + } + + @Override + public Socket createSocket(InetAddress arg0, int arg1) throws IOException { + return getSSLContext().getSocketFactory().createSocket(arg0, arg1); + } + + @Override + public Socket createSocket(String arg0, int arg1) throws IOException, + UnknownHostException { + return getSSLContext().getSocketFactory().createSocket(arg0, arg1); + } + + @Override + public String[] getSupportedCipherSuites() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String[] getDefaultCipherSuites() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Socket createSocket(Socket arg0, String arg1, int arg2, boolean arg3) + throws IOException { + return getSSLContext().getSocketFactory().createSocket(arg0, arg1, + arg2, arg3); + } + + private SSLContext createEasySSLContext() { + try { + SSLContext context = SSLContext.getInstance("SSL"); + context.init(null, + new TrustManager[] { MyX509TrustManager.manger }, null); + return context; + } catch (Exception e) { + LogUtil.writeErrorLog(e.getMessage(), e); + return null; + } + } + + public static class MyX509TrustManager implements X509TrustManager { + + static MyX509TrustManager manger = new MyX509TrustManager(); + + public MyX509TrustManager() { + } + + public X509Certificate[] getAcceptedIssuers() { + return null; + } + + public void checkClientTrusted(X509Certificate[] chain, String authType) { + } + + public void checkServerTrusted(X509Certificate[] chain, String authType) { + } + } + + /** + * 解决由于服务器证书问题导致HTTPS无法访问的情况 PS:HTTPS hostname wrong: should be + */ + public static class TrustAnyHostnameVerifier implements HostnameVerifier { + public boolean verify(String hostname, SSLSession session) { + //直接返回true + return true; + } + } +} diff --git a/back-end_code/src/main/java/com/shop/union/util/CertUtil.java b/back-end_code/src/main/java/com/shop/union/util/CertUtil.java new file mode 100644 index 0000000..6fd3846 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/union/util/CertUtil.java @@ -0,0 +1,761 @@ +/** + * + * Licensed Property to China UnionPay Co., Ltd. + * + * (C) Copyright of China UnionPay Co., Ltd. 2010 + * All Rights Reserved. + * + * + * Modification History: + * ============================================================================= + * Author Date Description + * ------------ ---------- --------------------------------------------------- + * xshu 2014-05-28 证书工具类. + * ============================================================================= + */ +package com.shop.union.util; + +import com.shop.union.config.SDKConfig; + +import java.io.*; +import java.math.BigInteger; +import java.security.*; +import java.security.cert.*; +import java.security.spec.RSAPublicKeySpec; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; + +import static com.shop.union.constants.SDKConstants.UNIONPAY_CNNAME; + +/** + * @ClassName: CertUtil + * @Description: acpsdk证书工具类,主要用于对证书的加载和使用 + * @date 2016-7-22 下午2:46:20 + * + */ +public class CertUtil { + /** 证书容器,存储对商户请求报文签名私钥证书. */ + private static KeyStore keyStore = null; + /** 敏感信息加密公钥证书 */ + private static X509Certificate encryptCert = null; + /** 磁道加密公钥 */ + private static PublicKey encryptTrackKey = null; + /** 验证银联返回报文签名证书. */ + private static X509Certificate validateCert = null; + /** 验签中级证书 */ + private static X509Certificate middleCert = null; + /** 验签根证书 */ + private static X509Certificate rootCert = null; + /** 验证银联返回报文签名的公钥证书存储Map. */ + private static Map certMap = new HashMap(); + /** 商户私钥存储Map */ + private final static Map keyStoreMap = new ConcurrentHashMap(); + + + /** + * 初始化所有证书. + */ + public static void init() { + try { + addProvider();//向系统添加BC provider + initSignCert();//初始化签名私钥证书 + initMiddleCert();//初始化验签证书的中级证书 + initRootCert();//初始化验签证书的根证书 + initEncryptCert();//初始化加密公钥 + initTrackKey();//构建磁道加密公钥 + initValidateCertFromDir();//初始化所有的验签证书 + } catch (Exception e) { + LogUtil.writeErrorLog("init失败。(如果是用对称密钥签名的可无视此异常。)", e); + } + } + + /** + * 添加签名,验签,加密算法提供者 + */ + private static void addProvider(){ + if (Security.getProvider("BC") == null) { + LogUtil.writeLog("add BC provider"); + Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); + } else { + Security.removeProvider("BC"); //解决eclipse调试时tomcat自动重新加载时,BC存在不明原因异常的问题。 + Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); + LogUtil.writeLog("re-add BC provider"); + } + printSysInfo(); + } + + /** + * 用配置文件acp_sdk.properties中配置的私钥路径和密码 加载签名证书 + */ + private static void initSignCert() { + if(!"01".equals(SDKConfig.getConfig().getSignMethod())){ + LogUtil.writeLog("非rsa签名方式,不加载签名证书。"); + return; + } + if (SDKConfig.getConfig().getSignCertPath() == null + || SDKConfig.getConfig().getSignCertPwd() == null + || SDKConfig.getConfig().getSignCertType() == null) { + LogUtil.writeErrorLog("WARN: " + SDKConfig.SDK_SIGNCERT_PATH + "或" + SDKConfig.SDK_SIGNCERT_PWD + + "或" + SDKConfig.SDK_SIGNCERT_TYPE + "为空。 停止加载签名证书。"); + return; + } + if (null != keyStore) { + keyStore = null; + } + try { + keyStore = getKeyInfo(SDKConfig.getConfig().getSignCertPath(), + SDKConfig.getConfig().getSignCertPwd(), SDKConfig + .getConfig().getSignCertType()); + LogUtil.writeLog("InitSignCert Successful. CertId=[" + + getSignCertId() + "]"); + } catch (IOException e) { + LogUtil.writeErrorLog("InitSignCert Error", e); + } + } + + /** + * 用配置文件acp_sdk.properties配置路径 加载敏感信息加密证书 + */ + private static void initMiddleCert() { + LogUtil.writeLog("加载中级证书==>"+SDKConfig.getConfig().getMiddleCertPath()); + if (!SDKUtil.isEmpty(SDKConfig.getConfig().getMiddleCertPath())) { + middleCert = initCert(SDKConfig.getConfig().getMiddleCertPath()); + LogUtil.writeLog("Load MiddleCert Successful"); + } else { + LogUtil.writeLog("WARN: acpsdk.middle.path is empty"); + } + } + + /** + * 用配置文件acp_sdk.properties配置路径 加载敏感信息加密证书 + */ + private static void initRootCert() { + LogUtil.writeLog("加载根证书==>"+SDKConfig.getConfig().getRootCertPath()); + if (!SDKUtil.isEmpty(SDKConfig.getConfig().getRootCertPath())) { + rootCert = initCert(SDKConfig.getConfig().getRootCertPath()); + LogUtil.writeLog("Load RootCert Successful"); + } else { + LogUtil.writeLog("WARN: acpsdk.rootCert.path is empty"); + } + } + + /** + * 用配置文件acp_sdk.properties配置路径 加载银联公钥上级证书(中级证书) + */ + private static void initEncryptCert() { + LogUtil.writeLog("加载敏感信息加密证书==>"+SDKConfig.getConfig().getEncryptCertPath()); + if (!SDKUtil.isEmpty(SDKConfig.getConfig().getEncryptCertPath())) { + encryptCert = initCert(SDKConfig.getConfig().getEncryptCertPath()); + LogUtil.writeLog("Load EncryptCert Successful"); + } else { + LogUtil.writeLog("WARN: acpsdk.encryptCert.path is empty"); + } + } + + /** + * 用配置文件acp_sdk.properties配置路径 加载磁道公钥 + */ + private static void initTrackKey() { + if (!SDKUtil.isEmpty(SDKConfig.getConfig().getEncryptTrackKeyModulus()) + && !SDKUtil.isEmpty(SDKConfig.getConfig().getEncryptTrackKeyExponent())) { + encryptTrackKey = getPublicKey(SDKConfig.getConfig().getEncryptTrackKeyModulus(), + SDKConfig.getConfig().getEncryptTrackKeyExponent()); + LogUtil.writeLog("LoadEncryptTrackKey Successful"); + } else { + LogUtil.writeLog("WARN: acpsdk.encryptTrackKey.modulus or acpsdk.encryptTrackKey.exponent is empty"); + } + } + + /** + * 用配置文件acp_sdk.properties配置路径 加载验证签名证书 + */ + private static void initValidateCertFromDir() { + if(!"01".equals(SDKConfig.getConfig().getSignMethod())){ + LogUtil.writeLog("非rsa签名方式,不加载验签证书。"); + return; + } + certMap.clear(); + String dir = SDKConfig.getConfig().getValidateCertDir(); + LogUtil.writeLog("加载验证签名证书目录==>" + dir +" 注:如果请求报文中version=5.1.0那么此验签证书目录使用不到,可以不需要设置(version=5.0.0必须设置)。"); + if (SDKUtil.isEmpty(dir)) { + LogUtil.writeErrorLog("WARN: acpsdk.validateCert.dir is empty"); + return; + } + CertificateFactory cf = null; + FileInputStream in = null; + try { + cf = CertificateFactory.getInstance("X.509", "BC"); + File fileDir = new File(dir); + File[] files = fileDir.listFiles(new CerFilter()); + for (int i = 0; i < files.length; i++) { + File file = files[i]; + in = new FileInputStream(file.getAbsolutePath()); + validateCert = (X509Certificate) cf.generateCertificate(in); + certMap.put(validateCert.getSerialNumber().toString(), + validateCert); + // 打印证书加载信息,供测试阶段调试 + LogUtil.writeLog("[" + file.getAbsolutePath() + "][CertId=" + + validateCert.getSerialNumber().toString() + "]"); + } + LogUtil.writeLog("LoadVerifyCert Successful"); + } catch (CertificateException e) { + LogUtil.writeErrorLog("LoadVerifyCert Error", e); + } catch (FileNotFoundException e) { + LogUtil.writeErrorLog("LoadVerifyCert Error File Not Found", e); + } catch (NoSuchProviderException e) { + LogUtil.writeErrorLog("LoadVerifyCert Error No BC Provider", e); + } finally { + if (null != in) { + try { + in.close(); + } catch (IOException e) { + LogUtil.writeErrorLog(e.toString()); + } + } + } + } + + /** + * 用给定的路径和密码 加载签名证书,并保存到certKeyStoreMap + * + * @param certFilePath + * @param certPwd + */ + private static void loadSignCert(String certFilePath, String certPwd) { + KeyStore keyStore = null; + try { + keyStore = getKeyInfo(certFilePath, certPwd, "PKCS12"); + keyStoreMap.put(certFilePath, keyStore); + LogUtil.writeLog("LoadRsaCert Successful"); + } catch (IOException e) { + LogUtil.writeErrorLog("LoadRsaCert Error", e); + } + } + + /** + * 通过证书路径初始化为公钥证书 + * @param path + * @return + */ + private static X509Certificate initCert(String path) { + X509Certificate encryptCertTemp = null; + CertificateFactory cf = null; + FileInputStream in = null; + //相对路径变为绝对路径 + path = getRealCertPath() + path; + try { + cf = CertificateFactory.getInstance("X.509", "BC"); + in = new FileInputStream(path); + encryptCertTemp = (X509Certificate) cf.generateCertificate(in); + // 打印证书加载信息,供测试阶段调试 + LogUtil.writeLog("[" + path + "][CertId=" + + encryptCertTemp.getSerialNumber().toString() + "]"); + } catch (CertificateException e) { + LogUtil.writeErrorLog("InitCert Error", e); + } catch (FileNotFoundException e) { + LogUtil.writeErrorLog("InitCert Error File Not Found", e); + } catch (NoSuchProviderException e) { + LogUtil.writeErrorLog("LoadVerifyCert Error No BC Provider", e); + } finally { + if (null != in) { + try { + in.close(); + } catch (IOException e) { + LogUtil.writeErrorLog(e.toString()); + } + } + } + return encryptCertTemp; + } + + /** + * 通过keyStore 获取私钥签名证书PrivateKey对象 + * + * @return + */ + public static PrivateKey getSignCertPrivateKey() { + try { + Enumeration aliasenum = keyStore.aliases(); + String keyAlias = null; + if (aliasenum.hasMoreElements()) { + keyAlias = aliasenum.nextElement(); + } + PrivateKey privateKey = (PrivateKey) keyStore.getKey(keyAlias, + SDKConfig.getConfig().getSignCertPwd().toCharArray()); + return privateKey; + } catch (KeyStoreException e) { + LogUtil.writeErrorLog("getSignCertPrivateKey Error", e); + return null; + } catch (UnrecoverableKeyException e) { + LogUtil.writeErrorLog("getSignCertPrivateKey Error", e); + return null; + } catch (NoSuchAlgorithmException e) { + LogUtil.writeErrorLog("getSignCertPrivateKey Error", e); + return null; + } + } + /** + * 通过指定路径的私钥证书 获取PrivateKey对象 + * + * @return + */ + public static PrivateKey getSignCertPrivateKeyByStoreMap(String certPath, + String certPwd) { + if (!keyStoreMap.containsKey(certPath)) { + loadSignCert(certPath, certPwd); + } + try { + Enumeration aliasenum = keyStoreMap.get(certPath) + .aliases(); + String keyAlias = null; + if (aliasenum.hasMoreElements()) { + keyAlias = aliasenum.nextElement(); + } + PrivateKey privateKey = (PrivateKey) keyStoreMap.get(certPath) + .getKey(keyAlias, certPwd.toCharArray()); + return privateKey; + } catch (KeyStoreException e) { + LogUtil.writeErrorLog("getSignCertPrivateKeyByStoreMap Error", e); + return null; + } catch (UnrecoverableKeyException e) { + LogUtil.writeErrorLog("getSignCertPrivateKeyByStoreMap Error", e); + return null; + } catch (NoSuchAlgorithmException e) { + LogUtil.writeErrorLog("getSignCertPrivateKeyByStoreMap Error", e); + return null; + } + } + + /** + * 获取敏感信息加密证书PublicKey + * + * @return + */ + public static PublicKey getEncryptCertPublicKey() { + if (null == encryptCert) { + String path = SDKConfig.getConfig().getEncryptCertPath(); + if (!SDKUtil.isEmpty(path)) { + encryptCert = initCert(path); + return encryptCert.getPublicKey(); + } else { + LogUtil.writeErrorLog("acpsdk.encryptCert.path is empty"); + return null; + } + } else { + return encryptCert.getPublicKey(); + } + } + + /** + * 重置敏感信息加密证书公钥 + */ + public static void resetEncryptCertPublicKey() { + encryptCert = null; + } + + /** + * 获取磁道加密证书PublicKey + * + * @return + */ + public static PublicKey getEncryptTrackPublicKey() { + if (null == encryptTrackKey) { + initTrackKey(); + } + return encryptTrackKey; + } + + /** + * 通过certId获取验签证书Map中对应证书PublicKey + * + * @param certId 证书物理序号 + * @return 通过证书编号获取到的公钥 + */ + public static PublicKey getValidatePublicKey(String certId) { + X509Certificate cf = null; + if (certMap.containsKey(certId)) { + // 存在certId对应的证书对象 + cf = certMap.get(certId); + return cf.getPublicKey(); + } else { + // 不存在则重新Load证书文件目录 + initValidateCertFromDir(); + if (certMap.containsKey(certId)) { + // 存在certId对应的证书对象 + cf = certMap.get(certId); + return cf.getPublicKey(); + } else { + LogUtil.writeErrorLog("缺少certId=[" + certId + "]对应的验签证书."); + return null; + } + } + } + + /** + * 获取配置文件acp_sdk.properties中配置的签名私钥证书certId + * + * @return 证书的物理编号 + */ + public static String getSignCertId() { + try { + Enumeration aliasenum = keyStore.aliases(); + String keyAlias = null; + if (aliasenum.hasMoreElements()) { + keyAlias = aliasenum.nextElement(); + } + X509Certificate cert = (X509Certificate) keyStore + .getCertificate(keyAlias); + return cert.getSerialNumber().toString(); + } catch (Exception e) { + LogUtil.writeErrorLog("getSignCertId Error", e); + return null; + } + } + + /** + * 获取敏感信息加密证书的certId + * + * @return + */ + public static String getEncryptCertId() { + if (null == encryptCert) { + String path = SDKConfig.getConfig().getEncryptCertPath(); + if (!SDKUtil.isEmpty(path)) { + encryptCert = initCert(path); + return encryptCert.getSerialNumber().toString(); + } else { + LogUtil.writeErrorLog("acpsdk.encryptCert.path is empty"); + return null; + } + } else { + return encryptCert.getSerialNumber().toString(); + } + } + + /** + * 将签名私钥证书文件读取为证书存储对象 + * + * @param pfxkeyfile + * 证书文件名 + * @param keypwd + * 证书密码 + * @param type + * 证书类型 + * @return 证书对象 + * @throws IOException + */ + private static KeyStore getKeyInfo(String pfxkeyfile, String keypwd, + String type) throws IOException { + LogUtil.writeLog("加载签名证书==>" + pfxkeyfile); + FileInputStream fis = null; + try { + KeyStore ks = KeyStore.getInstance(type, "BC"); + LogUtil.writeLog("Load RSA CertPath=[" + pfxkeyfile + "],Pwd=["+ keypwd + "],type=["+type+"]"); + + File file=new File(getRealCertPath() + pfxkeyfile); + fis = new FileInputStream(file); + char[] nPassword = null; + nPassword = null == keypwd || "".equals(keypwd.trim()) ? null: keypwd.toCharArray(); + if (null != ks) { + ks.load(fis, nPassword); + } + return ks; + } catch (Exception e) { + LogUtil.writeErrorLog("getKeyInfo Error", e); + return null; + } finally { + if(null!=fis) + fis.close(); + } + } + + /** + * 通过签名私钥证书路径,密码获取私钥证书certId + * @param certPath + * @param certPwd + * @return + */ + public static String getCertIdByKeyStoreMap(String certPath, String certPwd) { + if (!keyStoreMap.containsKey(certPath)) { + // 缓存中未查询到,则加载RSA证书 + loadSignCert(certPath, certPwd); + } + return getCertIdIdByStore(keyStoreMap.get(certPath)); + } + + /** + * 通过keystore获取私钥证书的certId值 + * @param keyStore + * @return + */ + private static String getCertIdIdByStore(KeyStore keyStore) { + Enumeration aliasenum = null; + try { + aliasenum = keyStore.aliases(); + String keyAlias = null; + if (aliasenum.hasMoreElements()) { + keyAlias = aliasenum.nextElement(); + } + X509Certificate cert = (X509Certificate) keyStore + .getCertificate(keyAlias); + return cert.getSerialNumber().toString(); + } catch (KeyStoreException e) { + LogUtil.writeErrorLog("getCertIdIdByStore Error", e); + return null; + } + } + + /** + * 使用模和指数生成RSA公钥 注意:此代码用了默认补位方式,为RSA/None/PKCS1Padding,不同JDK默认的补位方式可能不同 + * + * @param modulus + * 模 + * @param exponent + * 指数 + * @return + */ + private static PublicKey getPublicKey(String modulus, String exponent) { + try { + BigInteger b1 = new BigInteger(modulus); + BigInteger b2 = new BigInteger(exponent); + KeyFactory keyFactory = KeyFactory.getInstance("RSA", "BC"); + RSAPublicKeySpec keySpec = new RSAPublicKeySpec(b1, b2); + return keyFactory.generatePublic(keySpec); + } catch (Exception e) { + LogUtil.writeErrorLog("构造RSA公钥失败:" + e); + return null; + } + } + + /** + * 将字符串转换为X509Certificate对象. + * + * @param x509CertString + * @return + */ + public static X509Certificate genCertificateByStr(String x509CertString) { + X509Certificate x509Cert = null; + try { + CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); + InputStream tIn = new ByteArrayInputStream( + x509CertString.getBytes("ISO-8859-1")); + x509Cert = (X509Certificate) cf.generateCertificate(tIn); + } catch (Exception e) { + LogUtil.writeErrorLog("gen certificate error", e); + } + return x509Cert; + } + + /** + * 从配置文件acp_sdk.properties中获取验签公钥使用的中级证书 + * @return + */ + public static X509Certificate getMiddleCert() { + if (null == middleCert) { + String path = SDKConfig.getConfig().getMiddleCertPath(); + if (!SDKUtil.isEmpty(path)) { + initMiddleCert(); + } else { + LogUtil.writeErrorLog(SDKConfig.SDK_MIDDLECERT_PATH + " not set in " + SDKConfig.FILE_NAME); + return null; + } + } + return middleCert; + } + + /** + * 从配置文件acp_sdk.properties中获取验签公钥使用的根证书 + * @return + */ + public static X509Certificate getRootCert() { + if (null == rootCert) { + String path = SDKConfig.getConfig().getRootCertPath(); + if (!SDKUtil.isEmpty(path)) { + initRootCert(); + } else { + LogUtil.writeErrorLog(SDKConfig.SDK_ROOTCERT_PATH + " not set in " + SDKConfig.FILE_NAME); + return null; + } + } + return rootCert; + } + + /** + * 获取证书的CN + * @param aCert + * @return + */ + private static String getIdentitiesFromCertficate(X509Certificate aCert) { + String tDN = aCert.getSubjectDN().toString(); + String tPart = ""; + if ((tDN != null)) { + String tSplitStr[] = tDN.substring(tDN.indexOf("CN=")).split("@"); + if (tSplitStr != null && tSplitStr.length > 2 + && tSplitStr[2] != null) + tPart = tSplitStr[2]; + } + return tPart; + } + + /** + * 验证书链。 + * @param cert + * @return + */ + private static boolean verifyCertificateChain(X509Certificate cert){ + + if ( null == cert) { + LogUtil.writeErrorLog("cert must Not null"); + return false; + } + + X509Certificate middleCert = CertUtil.getMiddleCert(); + if (null == middleCert) { + LogUtil.writeErrorLog("middleCert must Not null"); + return false; + } + + X509Certificate rootCert = CertUtil.getRootCert(); + if (null == rootCert) { + LogUtil.writeErrorLog("rootCert or cert must Not null"); + return false; + } + + try { + + X509CertSelector selector = new X509CertSelector(); + selector.setCertificate(cert); + + Set trustAnchors = new HashSet(); + trustAnchors.add(new TrustAnchor(rootCert, null)); + PKIXBuilderParameters pkixParams = new PKIXBuilderParameters( + trustAnchors, selector); + + Set intermediateCerts = new HashSet(); + intermediateCerts.add(rootCert); + intermediateCerts.add(middleCert); + intermediateCerts.add(cert); + + pkixParams.setRevocationEnabled(false); + + CertStore intermediateCertStore = CertStore.getInstance("Collection", + new CollectionCertStoreParameters(intermediateCerts), "BC"); + pkixParams.addCertStore(intermediateCertStore); + + CertPathBuilder builder = CertPathBuilder.getInstance("PKIX", "BC"); + + @SuppressWarnings("unused") + PKIXCertPathBuilderResult result = (PKIXCertPathBuilderResult) builder + .build(pkixParams); + LogUtil.writeLog("verify certificate chain succeed."); + return true; + } catch (CertPathBuilderException e){ + LogUtil.writeErrorLog("verify certificate chain fail.", e); + } catch (Exception e) { + LogUtil.writeErrorLog("verify certificate chain exception: ", e); + } + return false; + } + + /** + * 检查证书链 + * + * rootCerts + * 根证书 + * @param cert + * 待验证的证书 + * @return + */ + public static boolean verifyCertificate(X509Certificate cert) { + + if ( null == cert) { + LogUtil.writeErrorLog("cert must Not null"); + return false; + } + try { + cert.checkValidity();//验证有效期 +// cert.verify(middleCert.getPublicKey()); + if(!verifyCertificateChain(cert)){ + return false; + } + } catch (Exception e) { + LogUtil.writeErrorLog("verifyCertificate fail", e); + return false; + } + + if(SDKConfig.getConfig().isIfValidateCNName()){ + // 验证公钥是否属于银联 + if(!UNIONPAY_CNNAME.equals(CertUtil.getIdentitiesFromCertficate(cert))) { + LogUtil.writeErrorLog("cer owner is not CUP:" + CertUtil.getIdentitiesFromCertficate(cert)); + return false; + } + } else { + // 验证公钥是否属于银联 + if(!UNIONPAY_CNNAME.equals(CertUtil.getIdentitiesFromCertficate(cert)) + && !"00040000:SIGN".equals(CertUtil.getIdentitiesFromCertficate(cert))) { + LogUtil.writeErrorLog("cer owner is not CUP:" + CertUtil.getIdentitiesFromCertficate(cert)); + return false; + } + } + return true; + } + + /** + * 打印系统环境信息 + */ + private static void printSysInfo() { + LogUtil.writeLog("================= SYS INFO begin===================="); + LogUtil.writeLog("os_name:" + System.getProperty("os.name")); + LogUtil.writeLog("os_arch:" + System.getProperty("os.arch")); + LogUtil.writeLog("os_version:" + System.getProperty("os.version")); + LogUtil.writeLog("java_vm_specification_version:" + + System.getProperty("java.vm.specification.version")); + LogUtil.writeLog("java_vm_specification_vendor:" + + System.getProperty("java.vm.specification.vendor")); + LogUtil.writeLog("java_vm_specification_name:" + + System.getProperty("java.vm.specification.name")); + LogUtil.writeLog("java_vm_version:" + + System.getProperty("java.vm.version")); + LogUtil.writeLog("java_vm_name:" + System.getProperty("java.vm.name")); + LogUtil.writeLog("java.version:" + System.getProperty("java.version")); + LogUtil.writeLog("java.vm.vendor=[" + System.getProperty("java.vm.vendor") + "]"); + LogUtil.writeLog("java.version=[" + System.getProperty("java.version") + "]"); + printProviders(); + LogUtil.writeLog("================= SYS INFO end====================="); + } + + /** + * 打jre中印算法提供者列表 + */ + private static void printProviders() { + LogUtil.writeLog("Providers List:"); + Provider[] providers = Security.getProviders(); + for (int i = 0; i < providers.length; i++) { + LogUtil.writeLog(i + 1 + "." + providers[i].getName()); + } + } + + /** + * 证书文件过滤器 + * + */ + static class CerFilter implements FilenameFilter { + public boolean isCer(String name) { + if (name.toLowerCase().endsWith(".cer")) { + return true; + } else { + return false; + } + } + public boolean accept(File dir, String name) { + return isCer(name); + } + } + + private static String getRealCertPath(){ + String clazzPath=Thread.currentThread().getContextClassLoader().getResource("").getPath(); + clazzPath=clazzPath.replace("test-classes","classes"); + clazzPath=clazzPath.replace("/classes/","/classes"); + return clazzPath; + } +} diff --git a/back-end_code/src/main/java/com/shop/union/util/HttpClient.java b/back-end_code/src/main/java/com/shop/union/util/HttpClient.java new file mode 100644 index 0000000..5cabe1c --- /dev/null +++ b/back-end_code/src/main/java/com/shop/union/util/HttpClient.java @@ -0,0 +1,306 @@ +/** + * + * Licensed Property to China UnionPay Co., Ltd. + * + * (C) Copyright of China UnionPay Co., Ltd. 2010 + * All Rights Reserved. + * + * + * Modification History: + * ============================================================================= + * Author Date Description + * ------------ ---------- --------------------------------------------------- + * xshu 2014-05-28 HTTP通信工具类 + * ============================================================================= + */ +package com.shop.union.util; + + +import com.shop.union.config.SDKConfig; +import com.shop.union.service.BaseHttpSSLSocketFactory; + +import javax.net.ssl.HttpsURLConnection; +import java.io.*; +import java.net.*; +import java.util.Map; +import java.util.Map.Entry; + +/** + * + * @ClassName HttpClient + * @Description acpsdk发送后台http请求类 + * @date 2016-7-22 下午4:03:25 + * + */ +public class HttpClient { + /** + * 目标地址 + */ + private URL url; + + /** + * 通信连接超时时间 + */ + private int connectionTimeout; + + /** + * 通信读超时时间 + */ + private int readTimeOut; + + /** + * 通信结果 + */ + private String result; + + /** + * 获取通信结果 + * @return + */ + public String getResult() { + return result; + } + + /** + * 设置通信结果 + * @param result + */ + public void setResult(String result) { + this.result = result; + } + + /** + * 构造函数 + * @param url 目标地址 + * @param connectionTimeout HTTP连接超时时间 + * @param readTimeOut HTTP读写超时时间 + */ + public HttpClient(String url, int connectionTimeout, int readTimeOut) { + try { + this.url = new URL(url); + this.connectionTimeout = connectionTimeout; + this.readTimeOut = readTimeOut; + } catch (MalformedURLException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + } + + /** + * 发送信息到服务端 + * @param data + * @param encoding + * @return + * @throws Exception + */ + public int send(Map data, String encoding) throws Exception { + try { + HttpURLConnection httpURLConnection = createConnection(encoding); + if (null == httpURLConnection) { + throw new Exception("Create httpURLConnection Failure"); + } + String sendData = this.getRequestParamString(data, encoding); + LogUtil.writeLog("请求报文:[" + sendData + "]"); + this.requestServer(httpURLConnection, sendData, + encoding); + this.result = this.response(httpURLConnection, encoding); + LogUtil.writeLog("Response message:[" + result + "]"); + return httpURLConnection.getResponseCode(); + } catch (Exception e) { + throw e; + } + } + + /** + * 发送信息到服务端 GET方式 + * @param encoding + * @return + * @throws Exception + */ + public int sendGet(String encoding) throws Exception { + try { + HttpURLConnection httpURLConnection = createConnectionGet(encoding); + if(null == httpURLConnection){ + throw new Exception("创建联接失败"); + } + this.result = this.response(httpURLConnection, encoding); + LogUtil.writeLog("同步返回报文:[" + result + "]"); + return httpURLConnection.getResponseCode(); + } catch (Exception e) { + throw e; + } + } + + + /** + * HTTP Post发送消息 + * + * @param connection + * @param message + * @throws IOException + */ + private void requestServer(final URLConnection connection, String message, String encoder) + throws Exception { + PrintStream out = null; + try { + connection.connect(); + out = new PrintStream(connection.getOutputStream(), false, encoder); + out.print(message); + out.flush(); + } catch (Exception e) { + throw e; + } finally { + if (null != out) { + out.close(); + } + } + } + + /** + * 显示Response消息 + * + * @param connection + * @param encoding + * @return + * @throws URISyntaxException + * @throws IOException + */ + private String response(final HttpURLConnection connection, String encoding) + throws URISyntaxException, IOException, Exception { + InputStream in = null; + StringBuilder sb = new StringBuilder(1024); + BufferedReader br = null; + try { + if (200 == connection.getResponseCode()) { + in = connection.getInputStream(); + sb.append(new String(read(in), encoding)); + } else { + in = connection.getErrorStream(); + sb.append(new String(read(in), encoding)); + } + LogUtil.writeLog("HTTP Return Status-Code:[" + + connection.getResponseCode() + "]"); + return sb.toString(); + } catch (Exception e) { + throw e; + } finally { + if (null != br) { + br.close(); + } + if (null != in) { + in.close(); + } + if (null != connection) { + connection.disconnect(); + } + } + } + + public static byte[] read(InputStream in) throws IOException { + byte[] buf = new byte[1024]; + int length = 0; + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + while ((length = in.read(buf, 0, buf.length)) > 0) { + bout.write(buf, 0, length); + } + bout.flush(); + return bout.toByteArray(); + } + + /** + * 创建连接 + * + * @return + * @throws ProtocolException + */ + private HttpURLConnection createConnection(String encoding) throws ProtocolException { + HttpURLConnection httpURLConnection = null; + try { + httpURLConnection = (HttpURLConnection) url.openConnection(); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + return null; + } + httpURLConnection.setConnectTimeout(this.connectionTimeout);// 连接超时时间 + httpURLConnection.setReadTimeout(this.readTimeOut);// 读取结果超时时间 + httpURLConnection.setDoInput(true); // 可读 + httpURLConnection.setDoOutput(true); // 可写 + httpURLConnection.setUseCaches(false);// 取消缓存 + httpURLConnection.setRequestProperty("Content-type", + "application/x-www-form-urlencoded;charset=" + encoding); + httpURLConnection.setRequestMethod("POST"); + if ("https".equalsIgnoreCase(url.getProtocol())) { + HttpsURLConnection husn = (HttpsURLConnection) httpURLConnection; + //是否验证https证书,测试环境请设置false,生产环境建议优先尝试true,不行再false + if(!SDKConfig.getConfig().isIfValidateRemoteCert()){ + husn.setSSLSocketFactory(new BaseHttpSSLSocketFactory()); + husn.setHostnameVerifier(new BaseHttpSSLSocketFactory.TrustAnyHostnameVerifier());//解决由于服务器证书问题导致HTTPS无法访问的情况 + } + return husn; + } + return httpURLConnection; + } + + /** + * 创建连接 + * + * @return + * @throws ProtocolException + */ + private HttpURLConnection createConnectionGet(String encoding) throws ProtocolException { + HttpURLConnection httpURLConnection = null; + try { + httpURLConnection = (HttpURLConnection) url.openConnection(); + } catch (IOException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + return null; + } + httpURLConnection.setConnectTimeout(this.connectionTimeout);// 连接超时时间 + httpURLConnection.setReadTimeout(this.readTimeOut);// 读取结果超时时间 + httpURLConnection.setUseCaches(false);// 取消缓存 + httpURLConnection.setRequestProperty("Content-type", + "application/x-www-form-urlencoded;charset=" + encoding); + httpURLConnection.setRequestMethod("GET"); + if ("https".equalsIgnoreCase(url.getProtocol())) { + HttpsURLConnection husn = (HttpsURLConnection) httpURLConnection; + //是否验证https证书,测试环境请设置false,生产环境建议优先尝试true,不行再false + if(!SDKConfig.getConfig().isIfValidateRemoteCert()){ + husn.setSSLSocketFactory(new BaseHttpSSLSocketFactory()); + husn.setHostnameVerifier(new BaseHttpSSLSocketFactory.TrustAnyHostnameVerifier());//解决由于服务器证书问题导致HTTPS无法访问的情况 + } + return husn; + } + return httpURLConnection; + } + + /** + * 将Map存储的对象,转换为key=value&key=value的字符 + * + * @param requestParam + * @param coder + * @return + */ + private String getRequestParamString(Map requestParam, String coder) { + if (null == coder || "".equals(coder)) { + coder = "UTF-8"; + } + StringBuffer sf = new StringBuffer(""); + String reqstr = ""; + if (null != requestParam && 0 != requestParam.size()) { + for (Entry en : requestParam.entrySet()) { + try { + sf.append(en.getKey() + + "=" + + (null == en.getValue() || "".equals(en.getValue()) ? "" : URLEncoder + .encode(en.getValue(), coder)) + "&"); + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + return ""; + } + } + reqstr = sf.substring(0, sf.length() - 1); + } + LogUtil.writeLog("Request Message:[" + reqstr + "]"); + return reqstr; + } + +} diff --git a/back-end_code/src/main/java/com/shop/union/util/LogUtil.java b/back-end_code/src/main/java/com/shop/union/util/LogUtil.java new file mode 100644 index 0000000..dce7bf1 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/union/util/LogUtil.java @@ -0,0 +1,116 @@ +/** + * + * Licensed Property to China UnionPay Co., Ltd. + * + * (C) Copyright of China UnionPay Co., Ltd. 2010 + * All Rights Reserved. + * + * + * Modification History: + * ============================================================================= + * Author Date Description + * ------------ ---------- --------------------------------------------------- + * xshu 2014-05-28 日志打印工具类 + * ============================================================================= + */ +package com.shop.union.util; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +/** + * + * @ClassName LogUtil + * @Description acpsdk日志工具类 + * @date 2016-7-22 下午4:04:35 + * + */ +public class LogUtil { + + private final static Logger GATELOG = LoggerFactory.getLogger("ACP_SDK_LOG"); + private final static Logger GATELOG_ERROR = LoggerFactory.getLogger("SDK_ERR_LOG"); + private final static Logger GATELOG_MESSAGE = LoggerFactory.getLogger("SDK_MSG_LOG"); + + final static String LOG_STRING_REQ_MSG_BEGIN = "============================== SDK REQ MSG BEGIN =============================="; + final static String LOG_STRING_REQ_MSG_END = "============================== SDK REQ MSG END =============================="; + final static String LOG_STRING_RSP_MSG_BEGIN = "============================== SDK RSP MSG BEGIN =============================="; + final static String LOG_STRING_RSP_MSG_END = "============================== SDK RSP MSG END =============================="; + + /** + * 记录普通日志 + * + * @param cont + */ + public static void writeLog(String cont) { + GATELOG.info(cont); + } + + /** + * 记录ERORR日志 + * + * @param cont + */ + public static void writeErrorLog(String cont) { + GATELOG_ERROR.error(cont); + } + + /** + * 记录ERROR日志 + * + * @param cont + * @param ex + */ + public static void writeErrorLog(String cont, Throwable ex) { + GATELOG_ERROR.error(cont, ex); + } + + /** + * 记录通信报文 + * + * @param msg + */ + public static void writeMessage(String msg) { + GATELOG_MESSAGE.info(msg); + } + + /** + * 打印请求报文 + * + * @param reqParam + */ + public static void printRequestLog(Map reqParam) { + writeMessage(LOG_STRING_REQ_MSG_BEGIN); + Iterator> it = reqParam.entrySet().iterator(); + while (it.hasNext()) { + Entry en = it.next(); + writeMessage("[" + en.getKey() + "] = [" + en.getValue() + "]"); + } + writeMessage(LOG_STRING_REQ_MSG_END); + } + + /** + * 打印响应报文. + * + * @param res + */ + public static void printResponseLog(String res) { + writeMessage(LOG_STRING_RSP_MSG_BEGIN); + writeMessage(res); + writeMessage(LOG_STRING_RSP_MSG_END); + } + + /** + * debug方法 + * + * @param cont + */ + public static void debug(String cont) { + if (GATELOG.isDebugEnabled()) { + GATELOG.debug(cont); + } + } +} diff --git a/back-end_code/src/main/java/com/shop/union/util/SDKUtil.java b/back-end_code/src/main/java/com/shop/union/util/SDKUtil.java new file mode 100644 index 0000000..be74b2a --- /dev/null +++ b/back-end_code/src/main/java/com/shop/union/util/SDKUtil.java @@ -0,0 +1,866 @@ +/** + * + * Licensed Property to China UnionPay Co., Ltd. + * + * (C) Copyright of China UnionPay Co., Ltd. 2010 + * All Rights Reserved. + * + * + * Modification History: + * ============================================================================= + * Author Date Description + * ------------ ---------- --------------------------------------------------- + * xshu 2014-05-28 MPI工具类 + * ============================================================================= + */ +package com.shop.union.util; + +import com.shop.union.config.SDKConfig; +import com.shop.union.constants.SDKConstants; +import org.apache.commons.lang.StringUtils; + +import java.io.*; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; +import java.security.cert.X509Certificate; +import java.util.*; +import java.util.Map.Entry; +import java.util.zip.Deflater; +import java.util.zip.Inflater; + +import static com.shop.union.constants.SDKConstants.*; + +/** + * + * @ClassName SDKUtil + * @Description acpsdk工具类 + * @date 2016-7-22 下午4:06:18 + * + */ +public class SDKUtil { + + /** + * 根据signMethod的值,提供三种计算签名的方法 + * + * @param data + * 待签名数据Map键值对形式 + * @param encoding + * 编码 + * @return 签名是否成功 + */ + public static boolean sign(Map data, String encoding) { + + if (isEmpty(encoding)) { + encoding = "UTF-8"; + } + String signMethod = data.get(param_signMethod); + String version = data.get(SDKConstants.param_version); + if (!VERSION_1_0_0.equals(version) && !VERSION_5_0_1.equals(version) && isEmpty(signMethod)) { + LogUtil.writeErrorLog("signMethod must Not null"); + return false; + } + + if (isEmpty(version)) { + LogUtil.writeErrorLog("version must Not null"); + return false; + } + if (SIGNMETHOD_RSA.equals(signMethod)|| VERSION_1_0_0.equals(version) || VERSION_5_0_1.equals(version)) { + if (VERSION_5_0_0.equals(version)|| VERSION_1_0_0.equals(version) || VERSION_5_0_1.equals(version)) { + // 设置签名证书序列号 + data.put(SDKConstants.param_certId, CertUtil.getSignCertId()); + // 将Map信息转换成key1=value1&key2=value2的形式 + String stringData = coverMap2String(data); + LogUtil.writeLog("待签名请求报文串:[" + stringData + "]"); + byte[] byteSign = null; + String stringSign = null; + try { + // 通过SHA1进行摘要并转16进制 + byte[] signDigest = SecureUtil + .sha1X16(stringData, encoding); + byteSign = SecureUtil.base64Encode(SecureUtil.signBySoft( + CertUtil.getSignCertPrivateKey(), signDigest)); + stringSign = new String(byteSign); + // 设置签名域值 + data.put(SDKConstants.param_signature, stringSign); + return true; + } catch (Exception e) { + LogUtil.writeErrorLog("Sign Error", e); + return false; + } + } else if (VERSION_5_1_0.equals(version)) { + // 设置签名证书序列号 + data.put(SDKConstants.param_certId, CertUtil.getSignCertId()); + // 将Map信息转换成key1=value1&key2=value2的形式 + String stringData = coverMap2String(data); + LogUtil.writeLog("待签名请求报文串:[" + stringData + "]"); + byte[] byteSign = null; + String stringSign = null; + try { + // 通过SHA256进行摘要并转16进制 + byte[] signDigest = SecureUtil + .sha256X16(stringData, encoding); + byteSign = SecureUtil.base64Encode(SecureUtil.signBySoft256( + CertUtil.getSignCertPrivateKey(), signDigest)); + stringSign = new String(byteSign); + // 设置签名域值 + data.put(SDKConstants.param_signature, stringSign); + return true; + } catch (Exception e) { + LogUtil.writeErrorLog("Sign Error", e); + return false; + } + } + } else if (SIGNMETHOD_SHA256.equals(signMethod)) { + return signBySecureKey(data, SDKConfig.getConfig() + .getSecureKey(), encoding); + } else if (SIGNMETHOD_SM3.equals(signMethod)) { + return signBySecureKey(data, SDKConfig.getConfig() + .getSecureKey(), encoding); + } + return false; + } + + /** + * 通过传入的证书绝对路径和证书密码读取签名证书进行签名并返回签名值
+ * + * @param data + * 待签名数据Map键值对形式 + * @param encoding + * 编码 + * @param secureKey + * 证书绝对路径 + * @para certPwd + * 证书密码 + * @return 签名值 + */ + public static boolean signBySecureKey(Map data, String secureKey, + String encoding) { + + if (isEmpty(encoding)) { + encoding = "UTF-8"; + } + if (isEmpty(secureKey)) { + LogUtil.writeErrorLog("secureKey is empty"); + return false; + } + String signMethod = data.get(param_signMethod); + if (isEmpty(signMethod)) { + LogUtil.writeErrorLog("signMethod must Not null"); + return false; + } + + if (SIGNMETHOD_SHA256.equals(signMethod)) { + // 将Map信息转换成key1=value1&key2=value2的形式 + String stringData = coverMap2String(data); + LogUtil.writeLog("待签名请求报文串:[" + stringData + "]"); + String strBeforeSha256 = stringData + + SDKConstants.AMPERSAND + + SecureUtil.sha256X16Str(secureKey, encoding); + String strAfterSha256 = SecureUtil.sha256X16Str(strBeforeSha256, + encoding); + // 设置签名域值 + data.put(SDKConstants.param_signature, strAfterSha256); + return true; + } else if (SIGNMETHOD_SM3.equals(signMethod)) { + String stringData = coverMap2String(data); + LogUtil.writeLog("待签名请求报文串:[" + stringData + "]"); + String strBeforeSM3 = stringData + + SDKConstants.AMPERSAND + + SecureUtil.sm3X16Str(secureKey, encoding); + String strAfterSM3 = SecureUtil.sm3X16Str(strBeforeSM3, encoding); + // 设置签名域值 + data.put(SDKConstants.param_signature, strAfterSM3); + return true; + } + return false; + } + + /** + * 通过传入的签名密钥进行签名并返回签名值
+ * + * @param data + * 待签名数据Map键值对形式 + * @param encoding + * 编码 + * @param certPath + * 证书绝对路径 + * @param certPwd + * 证书密码 + * @return 签名值 + */ + public static boolean signByCertInfo(Map data, + String certPath, String certPwd, String encoding) { + + if (isEmpty(encoding)) { + encoding = "UTF-8"; + } + if (isEmpty(certPath) || isEmpty(certPwd)) { + LogUtil.writeErrorLog("CertPath or CertPwd is empty"); + return false; + } + String signMethod = data.get(param_signMethod); + String version = data.get(SDKConstants.param_version); + if (!VERSION_1_0_0.equals(version) && !VERSION_5_0_1.equals(version) && isEmpty(signMethod)) { + LogUtil.writeErrorLog("signMethod must Not null"); + return false; + } + if (isEmpty(version)) { + LogUtil.writeErrorLog("version must Not null"); + return false; + } + + if (SIGNMETHOD_RSA.equals(signMethod) || VERSION_1_0_0.equals(version) || VERSION_5_0_1.equals(version)) { + if (VERSION_5_0_0.equals(version) || VERSION_1_0_0.equals(version) || VERSION_5_0_1.equals(version)) { + // 设置签名证书序列号 + data.put(SDKConstants.param_certId, CertUtil.getCertIdByKeyStoreMap(certPath, certPwd)); + // 将Map信息转换成key1=value1&key2=value2的形式 + String stringData = coverMap2String(data); + LogUtil.writeLog("待签名请求报文串:[" + stringData + "]"); + byte[] byteSign = null; + String stringSign = null; + try { + // 通过SHA1进行摘要并转16进制 + byte[] signDigest = SecureUtil + .sha1X16(stringData, encoding); + byteSign = SecureUtil.base64Encode(SecureUtil.signBySoft( + CertUtil.getSignCertPrivateKeyByStoreMap(certPath, certPwd), signDigest)); + stringSign = new String(byteSign); + // 设置签名域值 + data.put(SDKConstants.param_signature, stringSign); + return true; + } catch (Exception e) { + LogUtil.writeErrorLog("Sign Error", e); + return false; + } + } else if (VERSION_5_1_0.equals(version)) { + // 设置签名证书序列号 + data.put(SDKConstants.param_certId, CertUtil.getCertIdByKeyStoreMap(certPath, certPwd)); + // 将Map信息转换成key1=value1&key2=value2的形式 + String stringData = coverMap2String(data); + LogUtil.writeLog("待签名请求报文串:[" + stringData + "]"); + byte[] byteSign = null; + String stringSign = null; + try { + // 通过SHA256进行摘要并转16进制 + byte[] signDigest = SecureUtil + .sha256X16(stringData, encoding); + byteSign = SecureUtil.base64Encode(SecureUtil.signBySoft256( + CertUtil.getSignCertPrivateKeyByStoreMap(certPath, certPwd), signDigest)); + stringSign = new String(byteSign); + // 设置签名域值 + data.put(SDKConstants.param_signature, stringSign); + return true; + } catch (Exception e) { + LogUtil.writeErrorLog("Sign Error", e); + return false; + } + } + + } + return false; + } + + /** + * 验证签名 + * + * @param resData + * 返回报文数据 + * @param encoding + * 编码格式 + * @return + */ + public static boolean validateBySecureKey(Map resData, String secureKey, String encoding) { + LogUtil.writeLog("验签处理开始"); + if (isEmpty(encoding)) { + encoding = "UTF-8"; + } + String signMethod = resData.get(SDKConstants.param_signMethod); + if (SIGNMETHOD_SHA256.equals(signMethod)) { + // 1.进行SHA256验证 + String stringSign = resData.get(SDKConstants.param_signature); + LogUtil.writeLog("签名原文:["+stringSign+"]"); + // 将Map信息转换成key1=value1&key2=value2的形式 + String stringData = coverMap2String(resData); + LogUtil.writeLog("待验签返回报文串:["+stringData+"]"); + String strBeforeSha256 = stringData + + SDKConstants.AMPERSAND + + SecureUtil.sha256X16Str(secureKey, encoding); + String strAfterSha256 = SecureUtil.sha256X16Str(strBeforeSha256, + encoding); + return stringSign.equals(strAfterSha256); + } else if (SIGNMETHOD_SM3.equals(signMethod)) { + // 1.进行SM3验证 + String stringSign = resData.get(SDKConstants.param_signature); + LogUtil.writeLog("签名原文:["+stringSign+"]"); + // 将Map信息转换成key1=value1&key2=value2的形式 + String stringData = coverMap2String(resData); + LogUtil.writeLog("待验签返回报文串:["+stringData+"]"); + String strBeforeSM3 = stringData + + SDKConstants.AMPERSAND + + SecureUtil.sm3X16Str(secureKey, encoding); + String strAfterSM3 = SecureUtil + .sm3X16Str(strBeforeSM3, encoding); + return stringSign.equals(strAfterSM3); + } + return false; + } + + /** + * 验证签名 + * + * @param resData + * 返回报文数据 + * @param encoding + * 编码格式 + * @return + */ + public static boolean validate(Map resData, String encoding) { + LogUtil.writeLog("验签处理开始"); + if (isEmpty(encoding)) { + encoding = "UTF-8"; + } + String signMethod = resData.get(SDKConstants.param_signMethod); + String version = resData.get(SDKConstants.param_version); + if (SIGNMETHOD_RSA.equals(signMethod) || VERSION_1_0_0.equals(version) || VERSION_5_0_1.equals(version)) { + // 获取返回报文的版本号 + if (VERSION_5_0_0.equals(version) || VERSION_1_0_0.equals(version) || VERSION_5_0_1.equals(version)) { + String stringSign = resData.get(SDKConstants.param_signature); + LogUtil.writeLog("签名原文:["+stringSign+"]"); + // 从返回报文中获取certId ,然后去证书静态Map中查询对应验签证书对象 + String certId = resData.get(SDKConstants.param_certId); + LogUtil.writeLog("对返回报文串验签使用的验签公钥序列号:["+certId+"]"); + // 将Map信息转换成key1=value1&key2=value2的形式 + String stringData = coverMap2String(resData); + LogUtil.writeLog("待验签返回报文串:["+stringData+"]"); + try { + // 验证签名需要用银联发给商户的公钥证书. + return SecureUtil.validateSignBySoft(CertUtil + .getValidatePublicKey(certId), SecureUtil + .base64Decode(stringSign.getBytes(encoding)), + SecureUtil.sha1X16(stringData, encoding)); + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } catch (Exception e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + } else if (VERSION_5_1_0.equals(version)) { + // 1.从返回报文中获取公钥信息转换成公钥对象 + String strCert = resData.get(SDKConstants.param_signPubKeyCert); +// LogUtil.writeLog("验签公钥证书:["+strCert+"]"); + X509Certificate x509Cert = CertUtil.genCertificateByStr(strCert); + if(x509Cert == null) { + LogUtil.writeErrorLog("convert signPubKeyCert failed"); + return false; + } + // 2.验证证书链 + if (!CertUtil.verifyCertificate(x509Cert)) { + LogUtil.writeErrorLog("验证公钥证书失败,证书信息:["+strCert+"]"); + return false; + } + + // 3.验签 + String stringSign = resData.get(SDKConstants.param_signature); + LogUtil.writeLog("签名原文:["+stringSign+"]"); + // 将Map信息转换成key1=value1&key2=value2的形式 + String stringData = coverMap2String(resData); + LogUtil.writeLog("待验签返回报文串:["+stringData+"]"); + try { + // 验证签名需要用银联发给商户的公钥证书. + boolean result = SecureUtil.validateSignBySoft256(x509Cert + .getPublicKey(), SecureUtil.base64Decode(stringSign + .getBytes(encoding)), SecureUtil.sha256X16( + stringData, encoding)); + LogUtil.writeLog("验证签名" + (result? "成功":"失败")); + return result; + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } catch (Exception e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + } + + } else if (SIGNMETHOD_SHA256.equals(signMethod)) { + // 1.进行SHA256验证 + String stringSign = resData.get(SDKConstants.param_signature); + LogUtil.writeLog("签名原文:["+stringSign+"]"); + // 将Map信息转换成key1=value1&key2=value2的形式 + String stringData = coverMap2String(resData); + LogUtil.writeLog("待验签返回报文串:["+stringData+"]"); + String strBeforeSha256 = stringData + + SDKConstants.AMPERSAND + + SecureUtil.sha256X16Str(SDKConfig.getConfig() + .getSecureKey(), encoding); + String strAfterSha256 = SecureUtil.sha256X16Str(strBeforeSha256, + encoding); + boolean result = stringSign.equals(strAfterSha256); + LogUtil.writeLog("验证签名" + (result? "成功":"失败")); + return result; + } else if (SIGNMETHOD_SM3.equals(signMethod)) { + // 1.进行SM3验证 + String stringSign = resData.get(SDKConstants.param_signature); + LogUtil.writeLog("签名原文:["+stringSign+"]"); + // 将Map信息转换成key1=value1&key2=value2的形式 + String stringData = coverMap2String(resData); + LogUtil.writeLog("待验签返回报文串:["+stringData+"]"); + String strBeforeSM3 = stringData + + SDKConstants.AMPERSAND + + SecureUtil.sm3X16Str(SDKConfig.getConfig() + .getSecureKey(), encoding); + String strAfterSM3 = SecureUtil + .sm3X16Str(strBeforeSM3, encoding); + boolean result = stringSign.equals(strAfterSM3); + LogUtil.writeLog("验证签名" + (result? "成功":"失败")); + return result; + } + return false; + } + + /** + * 将Map中的数据转换成key1=value1&key2=value2的形式 不包含签名域signature + * + * @param data + * 待拼接的Map数据 + * @return 拼接好后的字符串 + */ + public static String coverMap2String(Map data) { + TreeMap tree = new TreeMap(); + Iterator> it = data.entrySet().iterator(); + while (it.hasNext()) { + Entry en = it.next(); + if (SDKConstants.param_signature.equals(en.getKey().trim())) { + continue; + } + tree.put(en.getKey(), en.getValue()); + } + it = tree.entrySet().iterator(); + StringBuffer sf = new StringBuffer(); + while (it.hasNext()) { + Entry en = it.next(); + sf.append(en.getKey() + SDKConstants.EQUAL + en.getValue() + + SDKConstants.AMPERSAND); + } + return sf.substring(0, sf.length() - 1); + } + + + /** + * 兼容老方法 将形如key=value&key=value的字符串转换为相应的Map对象 + * + * @param result + * @return + */ + public static Map coverResultString2Map(String result) { + return convertResultStringToMap(result); + } + + /** + * 将形如key=value&key=value的字符串转换为相应的Map对象 + * + * @param result + * @return + */ + public static Map convertResultStringToMap(String result) { + Map map =null; + try { + + if (StringUtils.isNotBlank(result)) { + if (result.startsWith("{") && result.endsWith("}")) { + result = result.substring(1, result.length() - 1); + } + map = parseQString(result); + } + + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + } + return map; + } + + + /** + * 解析应答字符串,生成应答要素 + * + * @param str + * 需要解析的字符串 + * @return 解析的结果map + * @throws UnsupportedEncodingException + */ + public static Map parseQString(String str) + throws UnsupportedEncodingException { + + Map map = new HashMap(); + int len = str.length(); + StringBuilder temp = new StringBuilder(); + char curChar; + String key = null; + boolean isKey = true; + boolean isOpen = false;//值里有嵌套 + char openName = 0; + if(len>0){ + for (int i = 0; i < len; i++) {// 遍历整个带解析的字符串 + curChar = str.charAt(i);// 取当前字符 + if (isKey) {// 如果当前生成的是key + + if (curChar == '=') {// 如果读取到=分隔符 + key = temp.toString(); + temp.setLength(0); + isKey = false; + } else { + temp.append(curChar); + } + } else {// 如果当前生成的是value + if(isOpen){ + if(curChar == openName){ + isOpen = false; + } + + }else{//如果没开启嵌套 + if(curChar == '{'){//如果碰到,就开启嵌套 + isOpen = true; + openName ='}'; + } + if(curChar == '['){ + isOpen = true; + openName =']'; + } + } + if (curChar == '&' && !isOpen) {// 如果读取到&分割符,同时这个分割符不是值域,这时将map里添加 + putKeyValueToMap(temp, isKey, key, map); + temp.setLength(0); + isKey = true; + }else{ + temp.append(curChar); + } + } + + } + putKeyValueToMap(temp, isKey, key, map); + } + return map; + } + + private static void putKeyValueToMap(StringBuilder temp, boolean isKey, + String key, Map map) + throws UnsupportedEncodingException { + if (isKey) { + key = temp.toString(); + if (key.length() == 0) { + throw new RuntimeException("QString format illegal"); + } + map.put(key, ""); + } else { + if (key.length() == 0) { + throw new RuntimeException("QString format illegal"); + } + map.put(key, temp.toString()); + } + } + + /** + * + * 获取应答报文中的加密公钥证书,并存储到本地,并备份原始证书
+ * 更新成功则返回1,无更新返回0,失败异常返回-1。 + * + * @param resData + * @param encoding + * @return + */ + public static int getEncryptCert(Map resData, + String encoding) { + String strCert = resData.get(SDKConstants.param_encryptPubKeyCert); + String certType = resData.get(SDKConstants.param_certType); + if (isEmpty(strCert) || isEmpty(certType)) + return -1; + X509Certificate x509Cert = CertUtil.genCertificateByStr(strCert); + if (CERTTYPE_01.equals(certType)) { + // 更新敏感信息加密公钥 + if (!CertUtil.getEncryptCertId().equals( + x509Cert.getSerialNumber().toString())) { + // ID不同时进行本地证书更新操作 + String localCertPath = SDKConfig.getConfig().getEncryptCertPath(); + String newLocalCertPath = genBackupName(localCertPath); + // 1.将本地证书进行备份存储 + if (!copyFile(localCertPath, newLocalCertPath)) + return -1; + // 2.备份成功,进行新证书的存储 + if (!writeFile(localCertPath, strCert, encoding)) + return -1; + LogUtil.writeLog("save new encryptPubKeyCert success"); + CertUtil.resetEncryptCertPublicKey(); + return 1; + }else { + return 0; + } + + } else if (CERTTYPE_02.equals(certType)) { +// // 更新磁道加密公钥 +// if (!CertUtil.getEncryptTrackCertId().equals( +// x509Cert.getSerialNumber().toString())) { +// // ID不同时进行本地证书更新操作 +// String localCertPath = SDKConfig.getConfig().getEncryptTrackCertPath(); +// String newLocalCertPath = genBackupName(localCertPath); +// // 1.将本地证书进行备份存储 +// if (!copyFile(localCertPath, newLocalCertPath)) +// return -1; +// // 2.备份成功,进行新证书的存储 +// if (!writeFile(localCertPath, strCert, encoding)) +// return -1; +// LogUtil.writeLog("save new encryptPubKeyCert success"); +// CertUtil.resetEncryptTrackCertPublicKey(); +// return 1; +// }else { + return 0; +// } + }else { + LogUtil.writeLog("unknown cerType:"+certType); + return -1; + } + } + + /** + * 文件拷贝方法 + * + * @param srcFile + * 源文件 + * @param destFile + * 目标文件 + * @return + * @throws IOException + */ + public static boolean copyFile(String srcFile, String destFile) { + boolean flag = false; + FileInputStream fin = null; + FileOutputStream fout = null; + FileChannel fcin = null; + FileChannel fcout = null; + try { + // 获取源文件和目标文件的输入输出流 + fin = new FileInputStream(srcFile); + fout = new FileOutputStream(destFile); + // 获取输入输出通道 + fcin = fin.getChannel(); + fcout = fout.getChannel(); + // 创建缓冲区 + ByteBuffer buffer = ByteBuffer.allocate(1024); + while (true) { + // clear方法重设缓冲区,使它可以接受读入的数据 + buffer.clear(); + // 从输入通道中将数据读到缓冲区 + int r = fcin.read(buffer); + // read方法返回读取的字节数,可能为零,如果该通道已到达流的末尾,则返回-1 + if (r == -1) { + flag = true; + break; + } + // flip方法让缓冲区可以将新读入的数据写入另一个通道 + buffer.flip(); + // 从输出通道中将数据写入缓冲区 + fcout.write(buffer); + } + fout.flush(); + } catch (IOException e) { + LogUtil.writeErrorLog("CopyFile fail", e); + } finally { + try { + if (null != fin) + fin.close(); + if (null != fout) + fout.close(); + if (null != fcin) + fcin.close(); + if (null != fcout) + fcout.close(); + } catch (IOException ex) { + LogUtil.writeErrorLog("Releases any system resources fail", ex); + } + } + return flag; + } + + /** + * 写文件方法 + * + * @param filePath + * 文件路径 + * @param fileContent + * 文件内容 + * @param encoding + * 编码 + * @return + */ + public static boolean writeFile(String filePath, String fileContent, + String encoding) { + FileOutputStream fout = null; + FileChannel fcout = null; + File file = new File(filePath); + if (file.exists()) { + file.delete(); + } + + try { + fout = new FileOutputStream(filePath); + // 获取输出通道 + fcout = fout.getChannel(); + // 创建缓冲区 + // ByteBuffer buffer = ByteBuffer.allocate(1024); + ByteBuffer buffer = ByteBuffer.wrap(fileContent.getBytes(encoding)); + fcout.write(buffer); + fout.flush(); + } catch (FileNotFoundException e) { + LogUtil.writeErrorLog("WriteFile fail", e); + return false; + } catch (IOException ex) { + LogUtil.writeErrorLog("WriteFile fail", ex); + return false; + } finally { + try { + if (null != fout) + fout.close(); + if (null != fcout) + fcout.close(); + } catch (IOException ex) { + LogUtil.writeErrorLog("Releases any system resources fail", ex); + return false; + } + } + return true; + } + + /** + * 将传入的文件名(xxx)改名
+ * 结果为: xxx_backup.cer + * + * @param fileName + * @return + */ + public static String genBackupName(String fileName) { + if (isEmpty(fileName)) + return ""; + int i = fileName.lastIndexOf(POINT); + String leftFileName = fileName.substring(0, i); + String rightFileName = fileName.substring(i + 1); + String newFileName = leftFileName + "_backup" + POINT + rightFileName; + return newFileName; + } + + + public static byte[] readFileByNIO(String filePath) { + FileInputStream in = null; + FileChannel fc = null; + ByteBuffer bf = null; + try { + in = new FileInputStream(filePath); + fc = in.getChannel(); + bf = ByteBuffer.allocate((int) fc.size()); + fc.read(bf); + return bf.array(); + } catch (Exception e) { + LogUtil.writeErrorLog(e.getMessage()); + return null; + } finally { + try { + if (null != fc) { + fc.close(); + } + if (null != in) { + in.close(); + } + } catch (Exception e) { + LogUtil.writeErrorLog(e.getMessage()); + return null; + } + } + } + + /** + * 过滤请求报文中的空字符串或者空字符串 + * @param contentData + * @return + */ + public static Map filterBlank(Map contentData){ + LogUtil.writeLog("打印请求报文域 :"); + Map submitFromData = new HashMap(); + Set keyset = contentData.keySet(); + + for(String key:keyset){ + String value = contentData.get(key); + if (StringUtils.isNotBlank(value)) { + // 对value值进行去除前后空处理 + submitFromData.put(key, value.trim()); + LogUtil.writeLog(key + "-->" + String.valueOf(value)); + } + } + return submitFromData; + } + + /** + * 解压缩. + * + * @param inputByte + * byte[]数组类型的数据 + * @return 解压缩后的数据 + * @throws IOException + */ + public static byte[] inflater(final byte[] inputByte) throws IOException { + int compressedDataLength = 0; + Inflater compresser = new Inflater(false); + compresser.setInput(inputByte, 0, inputByte.length); + ByteArrayOutputStream o = new ByteArrayOutputStream(inputByte.length); + byte[] result = new byte[1024]; + try { + while (!compresser.finished()) { + compressedDataLength = compresser.inflate(result); + if (compressedDataLength == 0) { + break; + } + o.write(result, 0, compressedDataLength); + } + } catch (Exception ex) { + System.err.println("Data format error!\n"); + ex.printStackTrace(); + } finally { + o.close(); + } + compresser.end(); + return o.toByteArray(); + } + + /** + * 压缩. + * + * @param inputByte + * 需要解压缩的byte[]数组 + * @return 压缩后的数据 + * @throws IOException + */ + public static byte[] deflater(final byte[] inputByte) throws IOException { + int compressedDataLength = 0; + Deflater compresser = new Deflater(); + compresser.setInput(inputByte); + compresser.finish(); + ByteArrayOutputStream o = new ByteArrayOutputStream(inputByte.length); + byte[] result = new byte[1024]; + try { + while (!compresser.finished()) { + compressedDataLength = compresser.deflate(result); + o.write(result, 0, compressedDataLength); + } + } finally { + o.close(); + } + compresser.end(); + return o.toByteArray(); + } + + /** + * 判断字符串是否为NULL或空 + * + * @param s + * 待判断的字符串数据 + * @return 判断结果 true-是 false-否 + */ + public static boolean isEmpty(String s) { + return null == s || "".equals(s.trim()); + } + +} diff --git a/back-end_code/src/main/java/com/shop/union/util/SecureUtil.java b/back-end_code/src/main/java/com/shop/union/util/SecureUtil.java new file mode 100644 index 0000000..c285c39 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/union/util/SecureUtil.java @@ -0,0 +1,577 @@ +/** + * + * Licensed Property to China UnionPay Co., Ltd. + * + * (C) Copyright of China UnionPay Co., Ltd. 2010 + * All Rights Reserved. + * + * + * Modification History: + * ============================================================================= + * Author Date Description + * ------------ ---------- --------------------------------------------------- + * xshu 2014-05-28 报文加密解密等操作的工具类 + * ============================================================================= + */ +package com.shop.union.util; + +import org.apache.commons.codec.binary.Base64; +import org.bouncycastle.crypto.digests.SM3Digest; + +import javax.crypto.Cipher; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.Signature; + +/** + * + * @ClassName SecureUtil + * @Description acpsdk安全算法工具类 + * @date 2016-7-22 下午4:08:32 + * + */ +public class SecureUtil { + /** + * 算法常量: SHA1 + */ + private static final String ALGORITHM_SHA1 = "SHA-1"; + /** + * 算法常量: SHA256 + */ + private static final String ALGORITHM_SHA256 = "SHA-256"; + /** + * 算法常量:SHA1withRSA + */ + private static final String BC_PROV_ALGORITHM_SHA1RSA = "SHA1withRSA"; + /** + * 算法常量:SHA256withRSA + */ + private static final String BC_PROV_ALGORITHM_SHA256RSA = "SHA256withRSA"; + + /** + * sm3计算后进行16进制转换 + * + * @param data + * 待计算的数据 + * @param encoding + * 编码 + * @return 计算结果 + */ + public static String sm3X16Str(String data, String encoding) { + byte[] bytes = sm3(data, encoding); + StringBuilder sm3StrBuff = new StringBuilder(); + for (int i = 0; i < bytes.length; i++) { + if (Integer.toHexString(0xFF & bytes[i]).length() == 1) { + sm3StrBuff.append("0").append( + Integer.toHexString(0xFF & bytes[i])); + } else { + sm3StrBuff.append(Integer.toHexString(0xFF & bytes[i])); + } + } + return sm3StrBuff.toString(); + } + + /** + * sha1计算后进行16进制转换 + * + * @param data + * 待计算的数据 + * @param encoding + * 编码 + * @return 计算结果 + */ + public static byte[] sha1X16(String data, String encoding) { + byte[] bytes = sha1(data, encoding); + StringBuilder sha1StrBuff = new StringBuilder(); + for (int i = 0; i < bytes.length; i++) { + if (Integer.toHexString(0xFF & bytes[i]).length() == 1) { + sha1StrBuff.append("0").append( + Integer.toHexString(0xFF & bytes[i])); + } else { + sha1StrBuff.append(Integer.toHexString(0xFF & bytes[i])); + } + } + try { + return sha1StrBuff.toString().getBytes(encoding); + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + return null; + } + } + + + /** + * sha256计算后进行16进制转换 + * + * @param data + * 待计算的数据 + * @param encoding + * 编码 + * @return 计算结果 + */ + public static String sha256X16Str(String data, String encoding) { + byte[] bytes = sha256(data, encoding); + StringBuilder sha256StrBuff = new StringBuilder(); + for (int i = 0; i < bytes.length; i++) { + if (Integer.toHexString(0xFF & bytes[i]).length() == 1) { + sha256StrBuff.append("0").append( + Integer.toHexString(0xFF & bytes[i])); + } else { + sha256StrBuff.append(Integer.toHexString(0xFF & bytes[i])); + } + } + return sha256StrBuff.toString(); + } + + /** + * sha256计算后进行16进制转换 + * + * @param data + * 待计算的数据 + * @param encoding + * 编码 + * @return 计算结果 + */ + public static byte[] sha256X16(String data, String encoding) { + byte[] bytes = sha256(data, encoding); + StringBuilder sha256StrBuff = new StringBuilder(); + for (int i = 0; i < bytes.length; i++) { + if (Integer.toHexString(0xFF & bytes[i]).length() == 1) { + sha256StrBuff.append("0").append( + Integer.toHexString(0xFF & bytes[i])); + } else { + sha256StrBuff.append(Integer.toHexString(0xFF & bytes[i])); + } + } + try { + return sha256StrBuff.toString().getBytes(encoding); + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog(e.getMessage(), e); + return null; + } + } + + /** + * sha1计算. + * + * @param data + * 待计算的数据 + * @return 计算结果 + */ + private static byte[] sha1(byte[] data) { + MessageDigest md = null; + try { + md = MessageDigest.getInstance(ALGORITHM_SHA1); + md.reset(); + md.update(data); + return md.digest(); + } catch (Exception e) { + LogUtil.writeErrorLog("SHA1计算失败", e); + return null; + } + } + + /** + * sha256计算. + * + * @param data + * 待计算的数据 + * @return 计算结果 + */ + private static byte[] sha256(byte[] data) { + MessageDigest md = null; + try { + md = MessageDigest.getInstance(ALGORITHM_SHA256); + md.reset(); + md.update(data); + return md.digest(); + } catch (Exception e) { + LogUtil.writeErrorLog("SHA256计算失败", e); + return null; + } + } + + /** + * SM3计算. + * + * @param data + * 待计算的数据 + * @return 计算结果 + */ + private static byte[] sm3(byte[] data) { + SM3Digest sm3 = new SM3Digest(); + sm3.update(data, 0, data.length); + byte[] result = new byte[sm3.getDigestSize()]; + sm3.doFinal(result, 0); + return result; + } + + /** + * sha1计算 + * + * @param datas + * 待计算的数据 + * @param encoding + * 字符集编码 + * @return + */ + private static byte[] sha1(String datas, String encoding) { + try { + return sha1(datas.getBytes(encoding)); + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog("SHA1计算失败", e); + return null; + } + } + + /** + * sha256计算 + * + * @param datas + * 待计算的数据 + * @param encoding + * 字符集编码 + * @return + */ + private static byte[] sha256(String datas, String encoding) { + try { + return sha256(datas.getBytes(encoding)); + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog("SHA256计算失败", e); + return null; + } + } + + /** + * sm3计算 + * + * @param datas + * 待计算的数据 + * @param encoding + * 字符集编码 + * @return + */ + private static byte[] sm3(String datas, String encoding) { + try { + return sm3(datas.getBytes(encoding)); + } catch (UnsupportedEncodingException e) { + LogUtil.writeErrorLog("SM3计算失败", e); + return null; + } + } + + /** + * + * @param privateKey + * @param data + * @return + * @throws Exception + */ + public static byte[] signBySoft(PrivateKey privateKey, byte[] data) + throws Exception { + byte[] result = null; + Signature st = Signature.getInstance(BC_PROV_ALGORITHM_SHA1RSA, "BC"); + st.initSign(privateKey); + st.update(data); + result = st.sign(); + return result; + } + + /** + * @param privateKey + * @param data + * @return + * @throws Exception + */ + public static byte[] signBySoft256(PrivateKey privateKey, byte[] data) + throws Exception { + byte[] result = null; + Signature st = Signature.getInstance(BC_PROV_ALGORITHM_SHA256RSA, "BC"); + st.initSign(privateKey); + st.update(data); + result = st.sign(); + return result; + } + + public static boolean validateSignBySoft(PublicKey publicKey, + byte[] signData, byte[] srcData) throws Exception { + Signature st = Signature.getInstance(BC_PROV_ALGORITHM_SHA1RSA, "BC"); + st.initVerify(publicKey); + st.update(srcData); + return st.verify(signData); + } + + public static boolean validateSignBySoft256(PublicKey publicKey, + byte[] signData, byte[] srcData) throws Exception { + Signature st = Signature.getInstance(BC_PROV_ALGORITHM_SHA256RSA, "BC"); + st.initVerify(publicKey); + st.update(srcData); + return st.verify(signData); + } + + /** + * 对数据通过公钥进行加密,并进行base64计算 + * + * @param dataString + * 待处理数据 + * @param encoding + * 字符编码 + * @param key + * 公钥 + * @return + */ + public static String encryptData(String dataString, String encoding, + PublicKey key) { + /** 使用公钥对密码加密 **/ + byte[] data = null; + try { + data = encryptData(key, dataString.getBytes(encoding)); + return new String(SecureUtil.base64Encode(data), encoding); + } catch (Exception e) { + LogUtil.writeErrorLog(e.getMessage(), e); + return ""; + } + } + + /** + * 对数据通过公钥进行加密,并进行base64计算 + * + * @param pin + * 待处理数据 + * @param encoding + * 字符编码 + * @param key + * 公钥 + * @return + */ + public static String encryptPin(String accNo, String pin, String encoding, + PublicKey key) { + /** 使用公钥对密码加密 **/ + byte[] data = null; + try { + data = pin2PinBlockWithCardNO(pin, accNo); + data = encryptData(key, data); + return new String(SecureUtil.base64Encode(data), encoding); + } catch (Exception e) { + LogUtil.writeErrorLog(e.getMessage(), e); + return ""; + } + } + + /** + * 通过私钥解密 + * + * @param dataString + * base64过的数据 + * @param encoding + * 编码 + * @param key + * 私钥 + * @return 解密后的数据 + */ + public static String decryptData(String dataString, String encoding, + PrivateKey key) { + byte[] data = null; + try { + data = SecureUtil.base64Decode(dataString.getBytes(encoding)); + data = decryptData(key, data); + return new String(data, encoding); + } catch (Exception e) { + LogUtil.writeErrorLog(e.getMessage(), e); + return ""; + } + } + + /** + * BASE64解码 + * + * @param inputByte + * 待解码数据 + * @return 解码后的数据 + * @throws IOException + */ + public static byte[] base64Decode(byte[] inputByte) throws IOException { + return Base64.decodeBase64(inputByte); + } + + /** + * BASE64编码 + * + * @param inputByte + * 待编码数据 + * @return 解码后的数据 + * @throws IOException + */ + public static byte[] base64Encode(byte[] inputByte) throws IOException { + return Base64.encodeBase64(inputByte); + } + + /** + * 加密除pin之外的其他信息 + * + * @param publicKey + * @param plainData + * @return + * @throws Exception + */ + private static byte[] encryptData(PublicKey publicKey, byte[] plainData) + throws Exception { + try { + Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding","BC"); + cipher.init(Cipher.ENCRYPT_MODE, publicKey); + return cipher.doFinal(plainData); + } catch (Exception e) { + throw new Exception(e.getMessage()); + } + } + + /** + * @param privateKey + * @param data + * @return + * @throws Exception + */ + private static byte[] decryptData(PrivateKey privateKey, byte[] data) + throws Exception { + try { + Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding","BC"); + cipher.init(Cipher.DECRYPT_MODE, privateKey); + return cipher.doFinal(data); + } catch (Exception e) { + LogUtil.writeErrorLog("解密失败", e); + } + return null; + } + + /** + * + * @param aPin + * @return + */ + private static byte[] pin2PinBlock(String aPin) { + int tTemp = 1; + int tPinLen = aPin.length(); + + byte[] tByte = new byte[8]; + try { + /******************************************************************* + * if (tPinLen > 9) { tByte[0] = (byte) Integer.parseInt(new + * Integer(tPinLen) .toString(), 16); } else { tByte[0] = (byte) + * Integer.parseInt(new Integer(tPinLen) .toString(), 10); } + ******************************************************************/ +// tByte[0] = (byte) Integer.parseInt(new Integer(tPinLen).toString(), +// 10); + tByte[0] = (byte) Integer.parseInt(Integer.toString(tPinLen), 10); + if (tPinLen % 2 == 0) { + for (int i = 0; i < tPinLen;) { + String a = aPin.substring(i, i + 2); + tByte[tTemp] = (byte) Integer.parseInt(a, 16); + if (i == (tPinLen - 2)) { + if (tTemp < 7) { + for (int x = (tTemp + 1); x < 8; x++) { + tByte[x] = (byte) 0xff; + } + } + } + tTemp++; + i = i + 2; + } + } else { + for (int i = 0; i < tPinLen - 1;) { + String a; + a = aPin.substring(i, i + 2); + tByte[tTemp] = (byte) Integer.parseInt(a, 16); + if (i == (tPinLen - 3)) { + String b = aPin.substring(tPinLen - 1) + "F"; + tByte[tTemp + 1] = (byte) Integer.parseInt(b, 16); + if ((tTemp + 1) < 7) { + for (int x = (tTemp + 2); x < 8; x++) { + tByte[x] = (byte) 0xff; + } + } + } + tTemp++; + i = i + 2; + } + } + } catch (Exception e) { + } + + return tByte; + } + + /** + * + * @param aPan + * @return + */ + private static byte[] formatPan(String aPan) { + int tPanLen = aPan.length(); + byte[] tByte = new byte[8]; + ; + int temp = tPanLen - 13; + try { + tByte[0] = (byte) 0x00; + tByte[1] = (byte) 0x00; + for (int i = 2; i < 8; i++) { + String a = aPan.substring(temp, temp + 2); + tByte[i] = (byte) Integer.parseInt(a, 16); + temp = temp + 2; + } + } catch (Exception e) { + } + return tByte; + } + + /** + * + * @param aPin + * @param aCardNO + * @return + */ + private static byte[] pin2PinBlockWithCardNO(String aPin, String aCardNO) { + byte[] tPinByte = pin2PinBlock(aPin); + if (aCardNO.length() == 11) { + aCardNO = "00" + aCardNO; + } else if (aCardNO.length() == 12) { + aCardNO = "0" + aCardNO; + } + byte[] tPanByte = formatPan(aCardNO); + byte[] tByte = new byte[8]; + for (int i = 0; i < 8; i++) { + tByte[i] = (byte) (tPinByte[i] ^ tPanByte[i]); + } + return tByte; + } + + /** + * luhn算法 + * + * @param number + * @return + */ + public static int genLuhn(String number) { + number = number + "0"; + int s1 = 0, s2 = 0; + String reverse = new StringBuffer(number).reverse().toString(); + for (int i = 0; i < reverse.length(); i++) { + int digit = Character.digit(reverse.charAt(i), 10); + if (i % 2 == 0) {// this is for odd digits, they are 1-indexed in // + // the algorithm + s1 += digit; + } else {// add 2 * digit for 0-4, add 2 * digit - 9 for 5-9 + s2 += 2 * digit; + if (digit >= 5) { + s2 -= 9; + } + } + } + int check = 10 - ((s1 + s2) % 10); + if (check == 10) + check = 0; + return check; + } +} diff --git a/back-end_code/src/main/java/com/shop/utils/JsonResult.java b/back-end_code/src/main/java/com/shop/utils/JsonResult.java new file mode 100644 index 0000000..2a853cf --- /dev/null +++ b/back-end_code/src/main/java/com/shop/utils/JsonResult.java @@ -0,0 +1,100 @@ +package com.shop.utils; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by think on 2017/6/5. + */ +public class JsonResult { + private Boolean success = Boolean.valueOf(false); + private String msg = ""; + private Object obj = null; + private Integer type = Integer.valueOf(0); + private Map fieldErrors = new HashMap(); + + public JsonResult() { + } + + public JsonResult(Boolean success, String msg) { + this.success = success; + this.msg = msg; + } + + public JsonResult(Boolean success, String msg, Integer type) { + this.success = success; + this.msg = msg; + this.type = type; + } + + public JsonResult(Boolean success, String msg, Object obj, Integer type) { + this.success = success; + this.msg = msg; + this.obj = obj; + this.type = type; + } + + public Boolean getSuccess() { + return Boolean.valueOf(this.success.booleanValue() && this.fieldErrors.size() == 0); + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public String getMsg() { + return this.msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public Object getObj() { + return this.obj; + } + + public void setObj(Object obj) { + this.obj = obj; + } + + public Integer getType() { + return this.type; + } + + public void setType(Integer type) { + this.type = type; + } + + public void addFieldError(String field, String message) { + this.fieldErrors.put(field, message); + } + + public void addFieldErrors(Map fieldErrors) { + this.fieldErrors.putAll(fieldErrors); + } + + public Map getFieldErrors() { + return this.fieldErrors; + } + + public static JsonResult resultError(String message) { + return resultError(message, 0); + } + + public static JsonResult resultError(String message, int type) { + return new JsonResult(Boolean.valueOf(false), message, Integer.valueOf(0)); + } + + public static JsonResult resultSuccess(Object obj) { + return resultSuccess("", obj); + } + + public static JsonResult resultSuccess(String message, Object obj) { + return resultSuccess(message, obj, 0); + } + + public static JsonResult resultSuccess(String message, Object obj, int type) { + return new JsonResult(Boolean.valueOf(true), message, obj, Integer.valueOf(type)); + } +} diff --git a/back-end_code/src/main/resources/certs/acp_test_enc.cer b/back-end_code/src/main/resources/certs/acp_test_enc.cer new file mode 100644 index 0000000..f6e2630 --- /dev/null +++ b/back-end_code/src/main/resources/certs/acp_test_enc.cer @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIFEDl2NhIwDQYJKoZIhvcNAQEFBQAwWDELMAkGA1UEBhMC +Q04xMDAuBgNVBAoTJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTEXMBUGA1UEAxMOQ0ZDQSBURVNUIE9DQTEwHhcNMjAwOTExMDI0MzI2WhcN +MjUwOTExMDI0MzI2WjBzMQswCQYDVQQGEwJDTjESMBAGA1UEChMJQ0ZDQSBPQ0Ex +MQ0wCwYDVQQLEwRZQ0NBMRUwEwYDVQQLEwxJbmRpdmlkdWFsLTExKjAoBgNVBAMM +IVlDQ0FA5rWL6K+V5L2/55SoQDAwMDQwMDAwOlNJR05AMTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBALUwYYpqUXZyDAu0gX5d8XkiUfFxdCan/VyLa6Cz +KH38cjX0QZIShn/O6Cw2hn2WurP/r3LdopLRzTHI0vIDJpQY/0Y135QHRFZHkAH0 +omRTfAZ/atePnRF7VW766LGhR5n05h1nITDHlzCZYPSumpDPpVcJj4y30+G3A5Ou +1VVAsuLi48XtGIKwRX6gMXI+P75RwHSmPt5/pHlEPT6wUbmF0HBoF2gRBpYZwiSK +51Z52XUVEk96reolFFLu/9qyL767/v2izd5YuN9i7oSXNw1gDYcLnAuww6V6BUnK +Kq4KUG6H3Lz3WyXbEay72f12A5pnHWDjLEOwJ2SG1VVMLN8CAwEAAaOB9DCB8TAf +BgNVHSMEGDAWgBTPcJ1h6518Lrj3ywJA9wmd/jN0gDBIBgNVHSAEQTA/MD0GCGCB +HIbvKgEBMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2ZjYS5jb20uY24vdXMv +dXMtMTQuaHRtMDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly91Y3JsLmNmY2EuY29t +LmNuL1JTQS9jcmw3NTM3Ni5jcmwwCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBSwaOVL +eW+I7Pm7C8lXu94+MTXAzjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQw +DQYJKoZIhvcNAQEFBQADggEBADhYan/FCZWzD0BS+KvZivpp498eWRqzXjH2QkBv +IDYv2+Ntue66WxECMW7i9+RZVjyMeYbFkoxVEcg0cE/mcHOnqd1mTBpeb62NRbWR +OuquWHxcdIHJ/TjGX8+NwtpAKsn/IvTdEBz+EOOzmXuxNqNxV3Gg7Ay3YavWZzci +h9GEAQ11WKAjaNqq+XO6dDwBSVEQEkvHqf1DeqCZ9wl58I4MvUmAI7wKfnoonquu +1wCNMxnkHYS5EAk1Zb0nsprjz771+YZI6ai/I2ehn8hyUR46TYmPMn0WyaXkmEO7 +ig055dazyfvMinsHmKyLa/yJvQMlZIWtsKzaNG4ikdA+ELQ= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/back-end_code/src/main/resources/certs/acp_test_middle.cer b/back-end_code/src/main/resources/certs/acp_test_middle.cer new file mode 100644 index 0000000..3275b90 --- /dev/null +++ b/back-end_code/src/main/resources/certs/acp_test_middle.cer @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIIDzjCCAragAwIBAgIKGNDz/H99Hd/CxjANBgkqhkiG9w0BAQUFADBZMQswCQYD +VQQGEwJDTjEwMC4GA1UEChMnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5MRgwFgYDVQQDEw9DRkNBIFRFU1QgQ1MgQ0EwHhcNMTIwODMwMDMx +NDMzWhcNMzEwNTExMDMxNDMzWjBYMQswCQYDVQQGEwJDTjEwMC4GA1UEChMnQ2hp +bmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRcwFQYDVQQDEw5D +RkNBIFRFU1QgT0NBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALiL +J/BrdvHSbXNfLIMTwUg9tDtVjMRGXOl6aZnu9IpxjI5SMUJ4hVwgJnmbTokxs6GF +IXKsCLSm5H1jHLI22ysc/ltByEybLWj5jjJuC9+Uknbl3/Ls1RBG6MogUCqZckuo +hKrf5DmlV3C/jVLxGn3pUeanvmqVUi4TKpXxgm5QqKSPF8VtQY4qCpNcQwwZqbMr +D+IfJtfpGAeVrP+Kg6i1t65seeEnVSaLhqpRUDU0PTblOuUv3OhiKJWA3cYWxUrg +7U7SIHNJLSEUWmjy4mKty+g7Cnjzt29F9qXFb6oB2mR8yt4GHCilw1Rc5RBXY63H +eTuOwdtGE3M2p7Q++OECAwEAAaOBmDCBlTAfBgNVHSMEGDAWgBR03sWNCn0QGqpp +g1tNIc6Gm8xxODAMBgNVHRMEBTADAQH/MDgGA1UdHwQxMC8wLaAroCmGJ2h0dHA6 +Ly8yMTAuNzQuNDIuMy90ZXN0cmNhL1JTQS9jcmwxLmNybDALBgNVHQ8EBAMCAQYw +HQYDVR0OBBYEFM9wnWHrnXwuuPfLAkD3CZ3+M3SAMA0GCSqGSIb3DQEBBQUAA4IB +AQC0JOazrbkk0XMxMMeBCc3lgBId1RjQLgWUZ7zaUISpPstGIrE5A9aB6Ppq0Sxl +pt2gkFhPEKUqgOFN1CzCDEbP3n4H0chqK1DOMrgTCD8ID5UW+ECTYNe35rZ+1JiF +lOPEhFL3pv6XSkiKTfDnjum8+wFwUBGlfoWK1Hcx0P2Hk1jcZZKwGTx1IAkesF83 +pufhxHE2Ur7W4d4tfp+eC7XXcA91pdd+VUrAfkj9eKHcDEYZz66HvHzmt6rtJVBa +pwrtCi9pW3rcm8c/1jSnEETZIaokai0fD7260h/LkD/GrNCibSWxFj1CqyP9Y5Yv +cj6aA5LnUcJYeNkrQ3V4XvVc +-----END CERTIFICATE----- diff --git a/back-end_code/src/main/resources/certs/acp_test_root.cer b/back-end_code/src/main/resources/certs/acp_test_root.cer new file mode 100644 index 0000000..779647c --- /dev/null +++ b/back-end_code/src/main/resources/certs/acp_test_root.cer @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDkzCCAnugAwIBAgIKUhN+zB19hbc65jANBgkqhkiG9w0BAQUFADBZMQswCQYD +VQQGEwJDTjEwMC4GA1UEChMnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5MRgwFgYDVQQDEw9DRkNBIFRFU1QgQ1MgQ0EwHhcNMTIwODI5MDUw +MTI5WhcNMzIwODI5MDUwMTI5WjBZMQswCQYDVQQGEwJDTjEwMC4GA1UEChMnQ2hp +bmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRgwFgYDVQQDEw9D +RkNBIFRFU1QgQ1MgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +rMJGruH6rOBPFxUI7T1ybydSRRtOM1xvkVjQNX0qmYir8feE6Tb0ctgtKR7a20DI +YCj9kZ5ANBQqjRcj3Soq9XH3cirqhYHJ723OKyTpS0RPQ0N6vtVt3P5JQ+ztjWHd +qIbbTOQ6O024TGTiqi6uHgMuz9/OVur81X3a5YVkK7jFeZ9o8cTcvQxD853/1sgZ +QcmR9aUSw0RXH4XFLTrn7n4QSfWKiNotlD8Ag5gS1pH9ONUb6nGkMn3gh1xfJqjm +ONMSknPXTGiNpXtqvYi8oIvByVCbUDO59IwPP1r1SYyE3P8Nr7DdQRu0KQSdXLoG +iugSR3fn+toObVAQmplDAgMBAAGjXTBbMB8GA1UdIwQYMBaAFHTexY0KfRAaqmmD +W00hzoabzHE4MAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBR0 +3sWNCn0QGqppg1tNIc6Gm8xxODANBgkqhkiG9w0BAQUFAAOCAQEAM0eTkM35D4hj +RlGC63wY0h++wVPUvOrObqAVBbzEEQ7ScBienmeY8Q6lWMUTXM9ALibZklpJPcJv +3ntht7LL6ztd4wdX7E9RzZCQnRvbL9A/BU3NxWdeSpCg/OyPod5oCKP+6Uc7kApi +F9OtYNWnt3l2Zp/NiedzEQD8H4qEWQLAq+0dFo5BkfVhb/jPcktndpfPOuH1IMhP +tVcvo6jpFHw4U/nP2Jv59osIE97KJz/SPt2JAYnZOlIDqWwp9/Afvt0/MDr8y0PK +Q9c6eqIzBx7a9LpUTUl5u1jS+xSDZ/KF2lXnjwaFp7jICLWEMlBstCoogi7KwH9A +LpJP7/dj9g== +-----END CERTIFICATE----- diff --git a/back-end_code/src/main/resources/certs/acp_test_sign.pfx b/back-end_code/src/main/resources/certs/acp_test_sign.pfx new file mode 100644 index 0000000000000000000000000000000000000000..523ae1e310ca318b15fd7b8918c6b4e11febf9a6 GIT binary patch literal 4898 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 a*{2^i*R}5C)E#j^7k*>Q-nak!sQd%ed;vuO literal 0 HcmV?d00001 diff --git a/back-end_code/src/main/resources/properties/acp_sdk.properties b/back-end_code/src/main/resources/properties/acp_sdk.properties new file mode 100644 index 0000000..a7df8dc --- /dev/null +++ b/back-end_code/src/main/resources/properties/acp_sdk.properties @@ -0,0 +1,77 @@ +##############SDK配置文件(证书方式签名)################ +# 说明: +# 1. 使用时请删除后缀的“.证书”,并将此文件复制到src文件夹下替换原来的acp_sdk.properties。 +# 2. 具体配置项请根据注释修改。 +# +################################################ + +#商户号 +acpsdk.merId=777290058197286 +#acpsdk.merId=700000000000001 + +##########################入网测试环境交易发送地址(线上测试需要使用生产环境交易请求地址)############################# + +##交易请求地址 +acpsdk.frontTransUrl=https://gateway.test.95516.com/gateway/api/frontTransReq.do +acpsdk.backTransUrl=https://gateway.test.95516.com/gateway/api/backTransReq.do +acpsdk.singleQueryUrl=https://gateway.test.95516.com/gateway/api/queryTrans.do +acpsdk.batchTransUrl=https://gateway.test.95516.com/gateway/api/batchTrans.do +acpsdk.fileTransUrl=https://filedownload.test.95516.com/ +acpsdk.appTransUrl=https://gateway.test.95516.com/gateway/api/appTransReq.do +acpsdk.cardTransUrl=https://gateway.test.95516.com/gateway/api/cardTransReq.do + +#以下缴费产品使用,其余产品用不到 +acpsdk.jfFrontTransUrl=https://gateway.test.95516.com/jiaofei/api/frontTransReq.do +acpsdk.jfBackTransUrl=https://gateway.test.95516.com/jiaofei/api/backTransReq.do +acpsdk.jfSingleQueryUrl=https://gateway.test.95516.com/jiaofei/api/queryTrans.do +acpsdk.jfCardTransUrl=https://gateway.test.95516.com/jiaofei/api/cardTransReq.do +acpsdk.jfAppTransUrl=https://gateway.test.95516.com/jiaofei/api/appTransReq.do + +######################################################################## + +# 报文版本号,固定5.1.0,请勿改动 +acpsdk.version=5.1.0 + +# 签名方式,证书方式固定01,请勿改动 +acpsdk.signMethod=01 + +# 是否验证验签证书的CN,测试环境请设置false,生产环境请设置true。非false的值默认都当true处理。 +acpsdk.ifValidateCNName=false + +# 是否验证https证书,测试环境请设置false,生产环境建议优先尝试true,不行再false。非true的值默认都当false处理。 +acpsdk.ifValidateRemoteCert=false + +#前台通知地址,填写后台接收银联前台通知的地址 +acpsdk.frontUrl=http://localhost:8069 + +#后台通知地址,填写后台接收银联后台通知的地址,必须外网能访问 +#111.204.128.115:8929 ---> 192.168.0.54:8087 +acpsdk.backUrl=http://111.204.128.115:8929/garageWechat/wx/pay/union/backRcvResponse +#111.204.128.115:8917 ---> 192.168.0.54:8085 +#acpsdk.backUrl=http://111.204.128.115:8917/garage/wx/pay/union/backRcvResponse +#111.204.128.115:8925 ---> 192.168.1.19:8087 +#acpsdk.backUrl=http://111.204.128.115:8925/garageWechat/wx/pay/union/backRcvResponse + +#########################入网测试环境签名证书配置 ################################ +# 多证书的情况证书路径为代码指定,可不对此块做配置。 +# 签名证书路径,必须使用绝对路径,如果不想使用绝对路径,可以自行实现相对路径获取证书的方法;测试证书所有商户共用开发包中的测试签名证书,生产环境请从cfca下载得到。 +# windows样例: +acpsdk.signCert.path=/certs/acp_test_sign.pfx +# linux样例(注意:在linux下读取证书需要保证证书有被应用读的权限)(后续其他路径配置也同此条说明) +#acpsdk.signCert.path=/SERVICE01/usr/ac_frnas/conf/ACPtest/acp700000000000001.pfx + +# 签名证书密码,测试环境固定000000,生产环境请修改为从cfca下载的正式证书的密码,正式环境证书密码位数需小于等于6位,否则上传到商户服务网站会失败 +acpsdk.signCert.pwd=000000 +# 签名证书类型,固定不需要修改 +acpsdk.signCert.type=PKCS12 + +##########################加密证书配置################################ +# 敏感信息加密证书路径(商户号开通了商户对敏感信息加密的权限,需要对 卡号accNo,pin和phoneNo,cvn2,expired加密(如果这些上送的话),对敏感信息加密使用) +acpsdk.encryptCert.path=/certs/acp_test_enc.cer + +##########################验签证书配置################################ +# 验签中级证书路径(银联提供) +acpsdk.middleCert.path=/certs/acp_test_middle.cer +# 验签根证书路径(银联提供) +acpsdk.rootCert.path=/certs/acp_test_root.cer + -- Gitee From c983e4a3a1536ae443ae4e306b9ef7b554f4772b Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 21 May 2022 14:36:38 +0800 Subject: [PATCH 122/133] =?UTF-8?q?=E5=B0=86order=5Fid=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E6=94=B9=E6=88=90Long?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/pom.xml | 6 ++++ .../java/com/shop/ServiceApplication.java | 9 +++++ .../controller/AftApplicationController.java | 2 +- .../com/shop/controller/AlipayController.java | 2 +- .../com/shop/controller/GOController.java | 6 ++-- .../com/shop/controller/OrderController.java | 34 +++++++++---------- .../java/com/shop/entity/AftApplication.java | 14 ++++---- .../src/main/java/com/shop/entity/GO.java | 10 +++--- .../src/main/java/com/shop/entity/Order.java | 12 +++---- .../java/com/shop/entity/OrderDetail.java | 12 +++---- .../java/com/shop/entity/Order_Goods.java | 10 +++--- .../java/com/shop/entity/sf/SearchOrder.java | 2 +- .../com/shop/mapper/AftApplicationMapper.java | 2 +- .../main/java/com/shop/mapper/GOMapper.java | 6 ++-- .../com/shop/mapper/OrderDetailMapper.java | 4 +-- .../java/com/shop/mapper/OrderMapper.java | 26 +++++++------- .../shop/service/AftApplicationService.java | 2 +- .../main/java/com/shop/service/GOService.java | 6 ++-- .../com/shop/service/OrderDetailService.java | 6 ++-- .../java/com/shop/service/OrderService.java | 26 +++++++------- .../main/java/com/shop/service/SFService.java | 2 +- .../mapping/AftApplicationMapper.xml | 2 +- .../src/main/resources/mapping/GOMapper.xml | 2 +- .../resources/mapping/OrderDetailMapper.xml | 2 +- .../main/resources/mapping/OrderMapper.xml | 4 +-- 25 files changed, 112 insertions(+), 97 deletions(-) diff --git a/back-end_code/pom.xml b/back-end_code/pom.xml index 0130055..ccac4d1 100644 --- a/back-end_code/pom.xml +++ b/back-end_code/pom.xml @@ -147,6 +147,12 @@ junit 4.12 + + + com.github.yitter + yitter-idgenerator + 1.0.6 + diff --git a/back-end_code/src/main/java/com/shop/ServiceApplication.java b/back-end_code/src/main/java/com/shop/ServiceApplication.java index dcb44b5..9a7c7c4 100644 --- a/back-end_code/src/main/java/com/shop/ServiceApplication.java +++ b/back-end_code/src/main/java/com/shop/ServiceApplication.java @@ -1,4 +1,6 @@ package com.shop; +import com.github.yitter.contract.IdGeneratorOptions; +import com.github.yitter.idgen.YitIdHelper; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -8,6 +10,13 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class ServiceApplication { public static void main(String[] args) { + // 创建 IdGeneratorOptions 对象,请在构造函数中输入 WorkerId: + IdGeneratorOptions options = new IdGeneratorOptions((short) 1); +// options.WorkerIdBitLength = 10; // WorkerIdBitLength 默认值6,支持的 WorkerId 最大值为2^6-1,若 WorkerId 超过64,可设置更大的 WorkerIdBitLength +// ...... 其它参数设置参考 IdGeneratorOptions 定义,一般来说,只要再设置 WorkerIdBitLength (决定 WorkerId 的最大值)。 + +// 保存参数(必须的操作,否则以上设置都不能生效): + YitIdHelper.setIdGenerator(options); SpringApplication.run(ServiceApplication.class, args); } diff --git a/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java index 44acc03..3b7cbfb 100644 --- a/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java +++ b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java @@ -26,7 +26,7 @@ public class AftApplicationController { //添加申诉 @PostMapping("/AftApplication") public Object addAftApplication(@RequestBody JSONObject jsonObject){ - Order order = orderService.searchOrderByOrderId(jsonObject.getInteger("order_id")); + Order order = orderService.searchOrderByOrderId(jsonObject.getLong("order_id")); AftApplication aftApplication = new AftApplication(jsonObject); aftApplication.setCreate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); aftApplication.setAftApplication_buyerusername(order.getBuyer_username()); diff --git a/back-end_code/src/main/java/com/shop/controller/AlipayController.java b/back-end_code/src/main/java/com/shop/controller/AlipayController.java index b4aa874..77780a6 100644 --- a/back-end_code/src/main/java/com/shop/controller/AlipayController.java +++ b/back-end_code/src/main/java/com/shop/controller/AlipayController.java @@ -97,7 +97,7 @@ public String alipay(HttpServletRequest request, HttpServletResponse response) t String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8"); if (trade_status.equals("TRADE_SUCCESS")){ - orderService.buyerPayOrder(Integer.parseInt(out_trade_no)); + orderService.buyerPayOrder(Long.valueOf(out_trade_no)); } // System.out.println("out_trade_no:"+out_trade_no); // System.out.println("trade_no:"+trade_no); diff --git a/back-end_code/src/main/java/com/shop/controller/GOController.java b/back-end_code/src/main/java/com/shop/controller/GOController.java index ffb45d1..a48f0c1 100644 --- a/back-end_code/src/main/java/com/shop/controller/GOController.java +++ b/back-end_code/src/main/java/com/shop/controller/GOController.java @@ -27,7 +27,7 @@ public class GOController { public Object addGO(HttpServletRequest request, HttpServletResponse response){ String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); - int order_id = Integer.parseInt(request.getParameter("order_id")); + Long order_id = Long.valueOf(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); int result = GOService.addGO(item_id,order_id); if(result>=1){ @@ -42,7 +42,7 @@ public class GOController { public Object searchGOByItemId(HttpServletRequest request, HttpServletResponse response){ String message = "error"; int item_id = Integer.parseInt(request.getParameter("item_id")); -// int order_id = Integer.parseInt(request.getParameter("order_id")); +// Long order_id = Long.valueOf(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); GO go = GOService.searchGOByItemId(item_id); if(go != null){ @@ -59,7 +59,7 @@ public class GOController { public Object searchGOByOrderId(HttpServletRequest request, HttpServletResponse response){ String message = "error"; // int item_id = Integer.parseInt(request.getParameter("item_id")); - int order_id = Integer.parseInt(request.getParameter("order_id")); + Long order_id = Long.valueOf(request.getParameter("order_id")); JSONObject jsonObject = new JSONObject(); GO go = GOService.searchGOByOrderId(order_id); if(go != null){ diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 3300b98..50f4135 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -47,7 +47,7 @@ public class OrderController { //根据订单ID查询订单 @GetMapping("/ID") - public Object searchOrderByOrderId(@RequestParam int order_id){ + public Object searchOrderByOrderId(@RequestParam Long order_id){ JSONObject jsonObject = new JSONObject(); Order order = orderService.searchOrderByOrderId(order_id); jsonObject.put("order",order); @@ -162,11 +162,11 @@ public class OrderController { public Object buyerPayOrder(@RequestBody JSONObject jsonObject){ Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); String buyer_username = jsonObject.getString("buyer_username"); - Integer order_id; + Long order_id; StringBuilder sb = new StringBuilder(); while (objectIterator.hasNext()) { JSONObject jb = (JSONObject) objectIterator.next(); - order_id = jb.getInteger("order_id"); + order_id = jb.getLong("order_id"); if(orderService.buyerPayOrder(order_id) < 1) { sb.append("订单号: ").append(order_id).append(" 支付失败\n"); continue; @@ -203,11 +203,11 @@ public class OrderController { public Object sellerConfirmOrder(@RequestBody JSONObject jsonObject){ Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); String seller_username = jsonObject.getString("seller_username"); - Integer order_id; + Long order_id; StringBuilder sb = new StringBuilder(); while (objectIterator.hasNext()) { JSONObject jb = (JSONObject) objectIterator.next(); - order_id = jb.getInteger("order_id"); + order_id = jb.getLong("order_id"); if(orderService.sellerConfirmOrder(seller_username,order_id) < 1) { sb.append("订单号: ").append(order_id).append(" 确认失败\n"); continue; @@ -244,11 +244,11 @@ public class OrderController { public Object sellerPickOrder(@RequestBody JSONObject jsonObject){ Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); String seller_username = jsonObject.getString("seller_username"); - Integer order_id; + Long order_id; StringBuilder sb = new StringBuilder(); while (objectIterator.hasNext()) { JSONObject jb = (JSONObject) objectIterator.next(); - order_id = jb.getInteger("order_id"); + order_id = jb.getLong("order_id"); if(orderService.sellerPickOrder(seller_username,order_id) < 1) { sb.append("订单号: ").append(order_id).append(" 备货失败\n"); continue; @@ -296,13 +296,13 @@ public class OrderController { public Object sellerDeliverOrder(@RequestBody JSONObject jsonObject) throws UnsupportedEncodingException { Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); String seller_username = jsonObject.getString("seller_username"); - Integer order_id; + Long order_id; Order order; ResultData resultData; StringBuilder sb = new StringBuilder(); while (objectIterator.hasNext()) { JSONObject jb = (JSONObject) objectIterator.next(); - order_id = jb.getInteger("order_id"); + order_id = jb.getLong("order_id"); order = orderService.searchOrderByOrderId(order_id); resultData = (ResultData) sfService.EXP_RECE_CREATE_ORDER(order); if(resultData.getApiResultData().getSuccess() && orderService.sellerDeliverOrder(seller_username,order_id) >= 1) { @@ -343,11 +343,11 @@ public class OrderController { public Object buyerFinishOrder(@RequestBody JSONObject jsonObject) { Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); String buyer_username = jsonObject.getString("buyer_username"); - Integer order_id; + Long order_id; StringBuilder sb = new StringBuilder(); while (objectIterator.hasNext()) { JSONObject jb = (JSONObject) objectIterator.next(); - order_id = jb.getInteger("order_id"); + order_id = jb.getLong("order_id"); if(orderService.buyerFinishOrder(buyer_username, order_id, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())) < 1) { sb.append("订单号: ").append(order_id).append(" 确认收货失败\n"); continue; @@ -384,11 +384,11 @@ public class OrderController { public Object buyerCancelOrder(@RequestBody JSONObject jsonObject) { Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); String buyer_username = jsonObject.getString("buyer_username"); - Integer order_id; + Long order_id; StringBuilder sb = new StringBuilder(); while (objectIterator.hasNext()) { JSONObject jb = (JSONObject) objectIterator.next(); - order_id = jb.getInteger("order_id"); + order_id = jb.getLong("order_id"); if(orderService.buyerCancelOrder(buyer_username, order_id, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())) < 1) { sb.append("订单号: ").append(order_id).append(" 买家取消订单失败\n"); continue; @@ -405,11 +405,11 @@ public class OrderController { public Object sellerCancelOrder(@RequestBody JSONObject jsonObject) { Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); String seller_username = jsonObject.getString("seller_username"); - Integer order_id; + Long order_id; StringBuilder sb = new StringBuilder(); while (objectIterator.hasNext()) { JSONObject jb = (JSONObject) objectIterator.next(); - order_id = jb.getInteger("order_id"); + order_id = jb.getLong("order_id"); if(orderService.sellerCancelOrder(seller_username, order_id, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())) < 1) { sb.append("订单号: ").append(order_id).append(" 卖家取消订单失败\n"); continue; @@ -504,12 +504,12 @@ public class OrderController { public Object setAmountByOrderId(@RequestBody JSONObject jsonObject) { String seller_username = jsonObject.getString("seller_username"); Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); - Integer order_id; + Long order_id; Float buy_amount; StringBuilder sb = new StringBuilder(); while (objectIterator.hasNext()) { JSONObject jb = (JSONObject) objectIterator.next(); - order_id = jb.getInteger("order_id"); + order_id = jb.getLong("order_id"); buy_amount = jb.getFloatValue("buy_amount"); if(orderService.setAmountByOrderId(order_id, seller_username, buy_amount) < 1) { sb.append("订单号: ").append(order_id).append(" 设置金额失败\n"); diff --git a/back-end_code/src/main/java/com/shop/entity/AftApplication.java b/back-end_code/src/main/java/com/shop/entity/AftApplication.java index b6bc8c8..c2b65dd 100644 --- a/back-end_code/src/main/java/com/shop/entity/AftApplication.java +++ b/back-end_code/src/main/java/com/shop/entity/AftApplication.java @@ -10,7 +10,7 @@ import java.util.Iterator; public class AftApplication { private Integer aftApplication_id; - private int order_id; + private Long order_id; private String aftApplication_buyerusername; private String aftApplication_sellerusername; private PackageState package_state;// 快递状态 @@ -26,11 +26,11 @@ public class AftApplication { public AftApplication(JSONObject jsonObject) { Iterator objectIterator; - Order order = new OrderService().searchOrderByOrderId(jsonObject.getInteger("order_id")); + Order order = new OrderService().searchOrderByOrderId(jsonObject.getLong("order_id")); if (jsonObject.getInteger("aftApplication_id") != null) this.aftApplication_id = jsonObject.getInteger("aftApplication_id"); - if (jsonObject.getInteger("order_id") != null) - this.order_id = jsonObject.getInteger("order_id"); + if (jsonObject.getLong("order_id") != null) + this.order_id = jsonObject.getLong("order_id"); if (jsonObject.getString("aftApplication_buyerusername") != null) this.aftApplication_buyerusername = jsonObject.getString("aftApplication_buyerusername"); if (jsonObject.getString("aftApplication_sellerusername") != null) @@ -51,7 +51,7 @@ public class AftApplication { this.finish_time = jsonObject.getString("finish_time"); } - public AftApplication(int order_id, String aftApplication_buyerusername, String aftApplication_sellerusername, PackageState package_state, AftApplicationType aftApplication_type, String aftApplication_reason, String aftApplication_images, AftApplicationState aftApplication_state, String create_time) { + public AftApplication(Long order_id, String aftApplication_buyerusername, String aftApplication_sellerusername, PackageState package_state, AftApplicationType aftApplication_type, String aftApplication_reason, String aftApplication_images, AftApplicationState aftApplication_state, String create_time) { this.order_id = order_id; this.aftApplication_buyerusername = aftApplication_buyerusername; this.aftApplication_sellerusername = aftApplication_sellerusername; @@ -71,11 +71,11 @@ public class AftApplication { this.aftApplication_id = aftApplication_id; } - public int getOrder_id() { + public long getOrder_id() { return order_id; } - public void setOrder_id(int order_id) { + public void setOrder_id(Long order_id) { this.order_id = order_id; } diff --git a/back-end_code/src/main/java/com/shop/entity/GO.java b/back-end_code/src/main/java/com/shop/entity/GO.java index 144a1a9..0548db5 100644 --- a/back-end_code/src/main/java/com/shop/entity/GO.java +++ b/back-end_code/src/main/java/com/shop/entity/GO.java @@ -3,7 +3,7 @@ package com.shop.entity; public class GO { private int GO_id; private int item_id; - private int order_id; + private Long order_id; public int getGO_id() { return GO_id; @@ -13,7 +13,7 @@ public class GO { this.GO_id = GO_id; } - public GO(int GO_id, int item_id, int order_id) { + public GO(int GO_id, int item_id, Long order_id) { this.GO_id = GO_id; this.item_id = item_id; this.order_id = order_id; @@ -22,7 +22,7 @@ public class GO { public GO() { } - public GO(int item_id, int order_id) { + public GO(int item_id, Long order_id) { this.item_id = item_id; this.order_id = order_id; } @@ -44,11 +44,11 @@ public class GO { this.item_id = item_id; } - public int getOrder_id() { + public Long getOrder_id() { return order_id; } - public void setOrder_id(int order_id) { + public void setOrder_id(Long order_id) { this.order_id = order_id; } } diff --git a/back-end_code/src/main/java/com/shop/entity/Order.java b/back-end_code/src/main/java/com/shop/entity/Order.java index 3924f40..c842f47 100644 --- a/back-end_code/src/main/java/com/shop/entity/Order.java +++ b/back-end_code/src/main/java/com/shop/entity/Order.java @@ -9,7 +9,7 @@ import java.util.Iterator; import java.util.List; public class Order { - private Integer order_id; + private Long order_id; private List orderDetailList; private String buyer_username; private Address address; @@ -28,7 +28,7 @@ public class Order { super(); } - public Order(Integer order_id, String buyer_username, Address address) { + public Order(Long order_id, String buyer_username, Address address) { this.order_id = order_id; this.buyer_username = buyer_username; this.address = address; @@ -36,8 +36,8 @@ public class Order { public Order(JSONObject jsonObject) { Iterator objectIterator; - if (jsonObject.getInteger("order_id") != null) - this.order_id = jsonObject.getInteger("order_id"); + if (jsonObject.getLong("order_id") != null) + this.order_id = jsonObject.getLong("order_id"); if (jsonObject.getJSONArray("orderDetailList") != null) { objectIterator = jsonObject.getJSONArray("orderDetailList").iterator(); OrderDetail OrderDetail; @@ -79,11 +79,11 @@ public class Order { this.order_state = order_state; } - public Integer getOrder_id() { + public Long getOrder_id() { return order_id; } - public void setOrder_id(Integer order_id) { + public void setOrder_id(Long order_id) { this.order_id = order_id; } diff --git a/back-end_code/src/main/java/com/shop/entity/OrderDetail.java b/back-end_code/src/main/java/com/shop/entity/OrderDetail.java index f7bd0d8..229b37c 100644 --- a/back-end_code/src/main/java/com/shop/entity/OrderDetail.java +++ b/back-end_code/src/main/java/com/shop/entity/OrderDetail.java @@ -6,7 +6,7 @@ import java.util.Iterator; public class OrderDetail { private Integer detail_id; - private Integer order_id; + private Long order_id; private Snapshot snapshot; private Integer buy_stock; private Float buy_sum; @@ -17,8 +17,8 @@ public class OrderDetail { Iterator objectIterator; if (jsonObject.getInteger("detail_id") != null) this.detail_id = jsonObject.getInteger("detail_id"); - if (jsonObject.getInteger("order_id") != null) - this.order_id = jsonObject.getInteger("order_id"); + if (jsonObject.getLong("order_id") != null) + this.order_id = jsonObject.getLong("order_id"); if (jsonObject.getJSONObject("snapshot") != null) this.snapshot = new Snapshot(jsonObject.getJSONObject("snapshot")); if (jsonObject.getInteger("buy_stock") != null) @@ -27,7 +27,7 @@ public class OrderDetail { this.buy_sum = jsonObject.getFloatValue("buy_sum"); } - public OrderDetail(Integer order_id, Snapshot snapshot, Integer buy_stock, Float buy_sum) { + public OrderDetail(Long order_id, Snapshot snapshot, Integer buy_stock, Float buy_sum) { this.order_id = order_id; this.snapshot = snapshot; this.buy_stock = buy_stock; @@ -42,11 +42,11 @@ public class OrderDetail { this.detail_id = detail_id; } - public Integer getOrder_id() { + public Long getOrder_id() { return order_id; } - public void setOrder_id(Integer order_id) { + public void setOrder_id(Long order_id) { this.order_id = order_id; } diff --git a/back-end_code/src/main/java/com/shop/entity/Order_Goods.java b/back-end_code/src/main/java/com/shop/entity/Order_Goods.java index 5ce508e..72b8a06 100644 --- a/back-end_code/src/main/java/com/shop/entity/Order_Goods.java +++ b/back-end_code/src/main/java/com/shop/entity/Order_Goods.java @@ -1,7 +1,7 @@ package com.shop.entity; public class Order_Goods { - private int order_id; + private Long order_id; private String buyer_realname; private String buyer_phonenumber; private String buyer_address; @@ -15,7 +15,7 @@ public class Order_Goods { public Order_Goods() { } - public Order_Goods(int order_id, String buyer_realname, String buyer_phonenumber, String buyer_address, int item_id, String goods_name, float goods_price, String goods_img, String goods_discribe) { + public Order_Goods(Long order_id, String buyer_realname, String buyer_phonenumber, String buyer_address, int item_id, String goods_name, float goods_price, String goods_img, String goods_discribe) { this.order_id = order_id; this.buyer_realname = buyer_realname; this.buyer_phonenumber = buyer_phonenumber; @@ -43,11 +43,11 @@ public class Order_Goods { '}'; } - public int getOrder_id() { + public Long getOrder_id() { return order_id; } - public void setOrder_id(int order_id) { + public void setOrder_id(Long order_id) { this.order_id = order_id; } @@ -123,7 +123,7 @@ public class Order_Goods { this.goods_discribe = goods_discribe; } - public Order_Goods(int order_id, String buyer_realname, String buyer_phonenumber, String buyer_address, String finish_time, int item_id, String goods_name, float goods_price, String goods_img, String goods_discribe) { + public Order_Goods(Long order_id, String buyer_realname, String buyer_phonenumber, String buyer_address, String finish_time, int item_id, String goods_name, float goods_price, String goods_img, String goods_discribe) { this.order_id = order_id; this.buyer_realname = buyer_realname; this.buyer_phonenumber = buyer_phonenumber; diff --git a/back-end_code/src/main/java/com/shop/entity/sf/SearchOrder.java b/back-end_code/src/main/java/com/shop/entity/sf/SearchOrder.java index d2b8d5a..da369bb 100644 --- a/back-end_code/src/main/java/com/shop/entity/sf/SearchOrder.java +++ b/back-end_code/src/main/java/com/shop/entity/sf/SearchOrder.java @@ -9,7 +9,7 @@ public class SearchOrder { private List trackingNumber; private String methodType = "1"; - public SearchOrder(int order_id) { + public SearchOrder(Long order_id) { this.trackingType = "2"; String track_number = "\"" + String.valueOf(order_id) + "\""; List trackingNumber = new ArrayList(); diff --git a/back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java b/back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java index 72e251d..ecb0fe2 100644 --- a/back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java @@ -47,7 +47,7 @@ public interface AftApplicationMapper { * @param order_id * @return */ - AftApplication isAftApplicationById(Integer order_id); + AftApplication isAftApplicationById(Long order_id); /** * 买家修改申诉 diff --git a/back-end_code/src/main/java/com/shop/mapper/GOMapper.java b/back-end_code/src/main/java/com/shop/mapper/GOMapper.java index 4805708..3ca4602 100644 --- a/back-end_code/src/main/java/com/shop/mapper/GOMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/GOMapper.java @@ -13,7 +13,7 @@ public interface GOMapper { * @param order_id * @return */ - int addGO(int item_id,int order_id); + int addGO(int item_id,Long order_id); /** * 根据item_id向GO表中查询信息 @@ -27,7 +27,7 @@ public interface GOMapper { * @param order_id * @return */ - GO searchGOByOrderId(int order_id); + GO searchGOByOrderId(Long order_id); /** * 根据item_id删除GO表中信息 @@ -41,5 +41,5 @@ public interface GOMapper { * @param order_id * @return */ - int deleteGOByOrderId(int order_id); + int deleteGOByOrderId(Long order_id); } diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderDetailMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderDetailMapper.java index 234b7e5..2832751 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderDetailMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderDetailMapper.java @@ -34,14 +34,14 @@ public interface OrderDetailMapper { * @param order_id * @return */ - List searchOrderDetailByOrderId(Integer order_id); + List searchOrderDetailByOrderId(Long order_id); /** * 根据订单Id查找商品的最新订单明细 * @param order_id * @return */ - OrderDetail searchNewOrderDetailByOrderId(Integer order_id); + OrderDetail searchNewOrderDetailByOrderId(Long order_id); /** *根据OrderDetailId查询OrderDetail diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index ac959a8..7203eab 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -24,7 +24,7 @@ public interface OrderMapper { * @param order_id * @return */ - Order searchOrderByOrderId(Integer order_id); + Order searchOrderByOrderId(Long order_id); /** * 根据买家用户名查找所有订单 @@ -60,7 +60,7 @@ public interface OrderMapper { * @param order_id * @return */ - Integer buyerPayOrder(Integer order_id); + Integer buyerPayOrder(Long order_id); /** * 买家查询待确认的订单 @@ -82,7 +82,7 @@ public interface OrderMapper { * @param order_id * @return */ - Integer sellerConfirmOrder(String seller_username,Integer order_id); + Integer sellerConfirmOrder(String seller_username,Long order_id); /** * 买家查询待备货的订单 @@ -103,7 +103,7 @@ public interface OrderMapper { * @param order_id * @return */ - Integer sellerPickOrder(String seller_username,Integer order_id); + Integer sellerPickOrder(String seller_username,Long order_id); /** * 买家查询待发货的订单 @@ -131,7 +131,7 @@ public interface OrderMapper { * @param order_id * @return */ - Integer sellerDeliverOrder(String seller_username,Integer order_id); + Integer sellerDeliverOrder(String seller_username,Long order_id); /** * 买家查询待收货的订单 @@ -153,7 +153,7 @@ public interface OrderMapper { * @param buyer_username * @return */ - Integer buyerFinishOrder(String buyer_username,Integer order_id,String finish_time); + Integer buyerFinishOrder(String buyer_username,Long order_id,String finish_time); /** * 买家查询已签收的订单 @@ -176,7 +176,7 @@ public interface OrderMapper { * @param finish_time * @return */ - Integer buyerCancelOrder(String buyer_username, Integer order_id,String finish_time); + Integer buyerCancelOrder(String buyer_username, Long order_id,String finish_time); /** * 卖家根据order_id(订单ID)取消订单 @@ -185,7 +185,7 @@ public interface OrderMapper { * @param finish_time * @return */ - Integer sellerCancelOrder(String seller_username, Integer order_id,String finish_time); + Integer sellerCancelOrder(String seller_username, Long order_id,String finish_time); /** * 买家查询已取消的订单 @@ -208,7 +208,7 @@ public interface OrderMapper { * @param order_id * @return */ - Integer buyerSubmitAftApplication(String buyer_username, Integer order_id); + Integer buyerSubmitAftApplication(String buyer_username, Long order_id); /** * 买家查询售后处理中的订单 @@ -230,7 +230,7 @@ public interface OrderMapper { * @param order_id * @return */ - Integer sellerAcceptAftApplication(String seller_username, Integer order_id,String finish_time); + Integer sellerAcceptAftApplication(String seller_username, Long order_id,String finish_time); /** * 卖家根据order_id(订单ID)拒绝订单退款 @@ -238,7 +238,7 @@ public interface OrderMapper { * @param order_id * @return */ - Integer sellerRefuseAftApplication(String seller_username, Integer order_id,String finish_time); + Integer sellerRefuseAftApplication(String seller_username, Long order_id,String finish_time); /** * 买家查询售后处理的订单 @@ -282,7 +282,7 @@ public interface OrderMapper { * @param buy_amount * @return */ - Integer setAmountByOrderId(Integer order_id,String seller_username,Float buy_amount); + Integer setAmountByOrderId(Long order_id,String seller_username,Float buy_amount); /** *根据OrderId设置PackageNumber @@ -291,6 +291,6 @@ public interface OrderMapper { * @param package_number * @return */ - Integer setPackageNumberByOrderId(Integer order_id,String seller_username,String package_number); + Integer setPackageNumberByOrderId(Long order_id,String seller_username,String package_number); } diff --git a/back-end_code/src/main/java/com/shop/service/AftApplicationService.java b/back-end_code/src/main/java/com/shop/service/AftApplicationService.java index a396d78..9d05db4 100644 --- a/back-end_code/src/main/java/com/shop/service/AftApplicationService.java +++ b/back-end_code/src/main/java/com/shop/service/AftApplicationService.java @@ -20,7 +20,7 @@ public class AftApplicationService { public List searchSellerAftApplication(String aftApplication_sellerusername, AftApplicationType aftApplication_type, AftApplicationState aftApplication_state){ return aftApplicationMapper.searchSellerAftApplication(aftApplication_sellerusername,aftApplication_type,aftApplication_state); } public AftApplication searchAftApplicationById(Integer aftApplication_id){return aftApplicationMapper.searchAftApplicationById(aftApplication_id);} - public AftApplication isAftApplicationById(Integer order_id){return aftApplicationMapper.isAftApplicationById(order_id);} + public AftApplication isAftApplicationById(Long order_id){return aftApplicationMapper.isAftApplicationById(order_id);} public int updateAftApplication(AftApplication aftApplication){return aftApplicationMapper.updateAftApplication(aftApplication);} public int cancelAftApplication(AftApplication aftApplication){return aftApplicationMapper.cancelAftApplication(aftApplication);} public int acceptAftApplication(AftApplication aftApplication){return aftApplicationMapper.acceptAftApplication(aftApplication);} diff --git a/back-end_code/src/main/java/com/shop/service/GOService.java b/back-end_code/src/main/java/com/shop/service/GOService.java index 2597dd7..28e5c14 100644 --- a/back-end_code/src/main/java/com/shop/service/GOService.java +++ b/back-end_code/src/main/java/com/shop/service/GOService.java @@ -11,10 +11,10 @@ public class GOService { @Autowired private GOMapper GOMapper; - public int addGO(int item_id,int order_id){return GOMapper.addGO(item_id,order_id);} + public int addGO(int item_id,Long order_id){return GOMapper.addGO(item_id,order_id);} public GO searchGOByItemId(int item_id){return GOMapper.searchGOByItemId(item_id);} - public GO searchGOByOrderId(int order_id){return GOMapper.searchGOByOrderId(order_id);} + public GO searchGOByOrderId(Long order_id){return GOMapper.searchGOByOrderId(order_id);} public int deleteGOByItemId(int item_id){return GOMapper.deleteGOByItemId(item_id);} - public int deleteGOByOrderId(int order_id){return GOMapper.deleteGOByOrderId(order_id);} + public int deleteGOByOrderId(Long order_id){return GOMapper.deleteGOByOrderId(order_id);} } diff --git a/back-end_code/src/main/java/com/shop/service/OrderDetailService.java b/back-end_code/src/main/java/com/shop/service/OrderDetailService.java index d9c3fcd..a508953 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderDetailService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderDetailService.java @@ -19,13 +19,13 @@ public class OrderDetailService { @Autowired private SnapshotMapper snapshotMapper; - public Integer addOrderDetail(Integer order_id,Snapshot snapshot, Integer buy_stock){ + public Integer addOrderDetail(Long order_id,Snapshot snapshot, Integer buy_stock){ Float buy_sum = snapshot.getGoods_price() * buy_stock; OrderDetail orderDetail = new OrderDetail(order_id,snapshot,buy_stock,buy_sum); return orderDetailMapper.addOrderDetail(orderDetail); } public Integer deleteOrderDetailByOrderDetailId(Integer orderDetail_id){return orderDetailMapper.deleteOrderDetailByOrderDetailId(orderDetail_id);} public Integer updateOrderDetail(OrderDetail orderDetail){return orderDetailMapper.updateOrderDetail(orderDetail);} - public List searchOrderDetailByOrderId(Integer order_id){ return orderDetailMapper.searchOrderDetailByOrderId(order_id); } - public OrderDetail searchNewOrderDetailByOrderId(Integer order_id){ return orderDetailMapper.searchNewOrderDetailByOrderId(order_id); } + public List searchOrderDetailByOrderId(Long order_id){ return orderDetailMapper.searchOrderDetailByOrderId(order_id); } + public OrderDetail searchNewOrderDetailByOrderId(Long order_id){ return orderDetailMapper.searchNewOrderDetailByOrderId(order_id); } public OrderDetail searchOrderDetailByOrderDetailId(Integer orderDetail_id){return orderDetailMapper.searchOrderDetailByOrderDetailId(orderDetail_id);} } diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index 294bb0f..cf7c1d2 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -34,41 +34,41 @@ public class OrderService { } public Integer addOrder(Order order){return orderMapper.addOrder(order);} - public Order searchOrderByOrderId(Integer order_id){return orderMapper.searchOrderByOrderId(order_id);} + public Order searchOrderByOrderId(Long order_id){return orderMapper.searchOrderByOrderId(order_id);} public List buyerSearchHistoryOrders(String buyer_username){return orderMapper.buyerSearchHistoryOrders(buyer_username);} public List sellerSearchHistoryOrders(String seller_username){return orderMapper.sellerSearchHistoryOrders(seller_username);} public List sellerSearchUnpaidOrder(String seller_username){return orderMapper.sellerSearchUnpaidOrder(seller_username);} public List buyerSearchUnpaidOrder(String buyer_username){return orderMapper.buyerSearchUnpaidOrder(buyer_username);} - public int buyerPayOrder(int order_id){ return orderMapper.buyerPayOrder(order_id);} - public Integer sellerConfirmOrder(String seller_username,Integer order_id){return orderMapper.sellerConfirmOrder(seller_username,order_id);} + public int buyerPayOrder(Long order_id){ return orderMapper.buyerPayOrder(order_id);} + public Integer sellerConfirmOrder(String seller_username,Long order_id){return orderMapper.sellerConfirmOrder(seller_username,order_id);} public List buyerSearchUnconfirmedOrder(String buyer_username){return orderMapper.buyerSearchUnconfirmedOrder(buyer_username);} public List sellerSearchUnconfirmedOrder(String seller_username){return orderMapper.sellerSearchUnconfirmedOrder(seller_username);} public List buyerSearchUnpickedOrder(String buyer_username){return orderMapper.buyerSearchUnpickedOrder(buyer_username);} public List sellerSearchUnpickedOrder(String seller_username){return orderMapper.sellerSearchUnpickedOrder(seller_username);} - public Integer sellerPickOrder(String seller_username,Integer order_id){return orderMapper.sellerPickOrder(seller_username,order_id);} + public Integer sellerPickOrder(String seller_username,Long order_id){return orderMapper.sellerPickOrder(seller_username,order_id);} public List buyerSearchUndeliveredOrder(String buyer_username){return orderMapper.buyerSearchUndeliveredOrder(buyer_username);} public List sellerSearchUndeliveredOrder(String seller_username){return orderMapper.sellerSearchUndeliveredOrder(seller_username);} public Integer buyerUpdateUndeliveredOrder(Order order){return orderMapper.buyerUpdateUndeliveredOrder(order);} - public Integer sellerDeliverOrder(String seller_username,Integer order_id){return orderMapper.sellerDeliverOrder(seller_username,order_id);} + public Integer sellerDeliverOrder(String seller_username,Long order_id){return orderMapper.sellerDeliverOrder(seller_username,order_id);} public List buyerSearchUnarrivedOrder(String buyer_username){return orderMapper.buyerSearchUnarrivedOrder(buyer_username);} public List sellerSearchUnarrivedOrder(String seller_username){return orderMapper.sellerSearchUnarrivedOrder(seller_username);} - public Integer buyerFinishOrder(String buyer_username,Integer order_id,String finish_time){ return orderMapper.buyerFinishOrder(buyer_username,order_id,finish_time); } + public Integer buyerFinishOrder(String buyer_username,Long order_id,String finish_time){ return orderMapper.buyerFinishOrder(buyer_username,order_id,finish_time); } public List buyerSearchFinishOrder(String buyer_username){return orderMapper.buyerSearchFinishOrder(buyer_username);} public List sellerSearchFinishOrder(String seller_username){return orderMapper.sellerSearchFinishOrder(seller_username);} - public Integer buyerCancelOrder(String buyer_username,Integer order_id,String finish_time){return orderMapper.buyerCancelOrder(buyer_username,order_id,finish_time);} - public Integer sellerCancelOrder(String seller_username,Integer order_id,String finish_time){return orderMapper.sellerCancelOrder(seller_username,order_id,finish_time);} + public Integer buyerCancelOrder(String buyer_username,Long order_id,String finish_time){return orderMapper.buyerCancelOrder(buyer_username,order_id,finish_time);} + public Integer sellerCancelOrder(String seller_username,Long order_id,String finish_time){return orderMapper.sellerCancelOrder(seller_username,order_id,finish_time);} public List buyerSearchCancelOrder(String buyer_username){return orderMapper.buyerSearchCancelOrder(buyer_username);} public List sellerSearchCancelOrder(String seller_username){return orderMapper.sellerSearchCancelOrder(seller_username);} - // public Integer buyerSubmitAftApplication(String buyer_username, Integer order_id){ return orderMapper.buyerSubmitAftApplication(buyer_username, order_id);}; + // public Integer buyerSubmitAftApplication(String buyer_username, Long order_id){ return orderMapper.buyerSubmitAftApplication(buyer_username, order_id);}; public List buyerSearchDealingOrder(String buyer_username){return orderMapper.buyerSearchDealingOrder(buyer_username);} public List sellerSearchDealingOrder(String seller_username){ return orderMapper.sellerSearchDealingOrder(seller_username);} - public Integer sellerAcceptAftApplication(String seller_username, Integer order_id){ return orderMapper.sellerAcceptAftApplication(seller_username, order_id,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}; - public Integer sellerRefuseAftApplication(String seller_username, Integer order_id){ return orderMapper.sellerRefuseAftApplication(seller_username, order_id,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}; + public Integer sellerAcceptAftApplication(String seller_username, Long order_id){ return orderMapper.sellerAcceptAftApplication(seller_username, order_id,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}; + public Integer sellerRefuseAftApplication(String seller_username, Long order_id){ return orderMapper.sellerRefuseAftApplication(seller_username, order_id,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}; public List buyerSearchAfterOrder(String buyer_username){return orderMapper.buyerSearchAfterOrder(buyer_username);} public List sellerSearchAfterOrder(String seller_username){ return orderMapper.sellerSearchAfterOrder(seller_username);} public List sellerSearchAfterOkrOrder(String seller_username){ return orderMapper.sellerSearchAfterOkrOrder(seller_username);} public List sellerSearchAfterFailOrder(String seller_username){ return orderMapper.sellerSearchAfterFailOrder(seller_username);} public Order searchNewOrder(Order order){ return orderMapper.searchNewOrder(order); } - public Integer setAmountByOrderId(Integer order_id,String seller_username,Float buy_amount){ return orderMapper.setAmountByOrderId(order_id,seller_username,buy_amount);} - public Integer setPackageNumberByOrderId(Integer order_id,String seller_username,String package_number){ return orderMapper.setPackageNumberByOrderId(order_id,seller_username,package_number);} + public Integer setAmountByOrderId(Long order_id,String seller_username,Float buy_amount){ return orderMapper.setAmountByOrderId(order_id,seller_username,buy_amount);} + public Integer setPackageNumberByOrderId(Long order_id,String seller_username,String package_number){ return orderMapper.setPackageNumberByOrderId(order_id,seller_username,package_number);} } diff --git a/back-end_code/src/main/java/com/shop/service/SFService.java b/back-end_code/src/main/java/com/shop/service/SFService.java index 8eb1cd1..f41aa5c 100644 --- a/back-end_code/src/main/java/com/shop/service/SFService.java +++ b/back-end_code/src/main/java/com/shop/service/SFService.java @@ -55,7 +55,7 @@ public class SFService { JSONObject temp = SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); return new RoutesResultData(temp); } - public Object EXP_RECE_SEARCH_ROUTES(int order_id) throws UnsupportedEncodingException, ParseException { + public Object EXP_RECE_SEARCH_ROUTES(Long order_id) throws UnsupportedEncodingException, ParseException { String request = new SearchOrder(order_id).toString(); JSONObject temp = SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); return new RoutesResultData(temp); diff --git a/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml b/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml index 6b5d23e..06ce19d 100644 --- a/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml +++ b/back-end_code/src/main/resources/mapping/AftApplicationMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/back-end_code/src/main/resources/mapping/GOMapper.xml b/back-end_code/src/main/resources/mapping/GOMapper.xml index ead124d..62505b7 100644 --- a/back-end_code/src/main/resources/mapping/GOMapper.xml +++ b/back-end_code/src/main/resources/mapping/GOMapper.xml @@ -4,7 +4,7 @@ - + diff --git a/back-end_code/src/main/resources/mapping/OrderDetailMapper.xml b/back-end_code/src/main/resources/mapping/OrderDetailMapper.xml index ef4e823..db672e9 100644 --- a/back-end_code/src/main/resources/mapping/OrderDetailMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderDetailMapper.xml @@ -15,7 +15,7 @@ - + diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 3bf245e..ef5fd0e 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -15,7 +15,7 @@ - + @@ -32,7 +32,7 @@ - + -- Gitee From fe5529367252e3f5741b82a52a5a1518857f429a Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 21 May 2022 14:57:42 +0800 Subject: [PATCH 123/133] =?UTF-8?q?=E7=94=9F=E6=88=90=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=97=B6=E7=94=9F=E6=88=90=E5=94=AF=E4=B8=80=E8=AE=A2=E5=8D=95?= =?UTF-8?q?id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/OrderController.java | 4 ++++ back-end_code/src/main/resources/mapping/OrderMapper.xml | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/back-end_code/src/main/java/com/shop/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 50f4135..bd962c8 100644 --- a/back-end_code/src/main/java/com/shop/controller/OrderController.java +++ b/back-end_code/src/main/java/com/shop/controller/OrderController.java @@ -1,5 +1,6 @@ package com.shop.controller; +import com.github.yitter.idgen.YitIdHelper; import com.shop.Enum.GoodState; import com.shop.entity.*; import com.shop.entity.sf.ResultData; @@ -58,6 +59,9 @@ public class OrderController { @PostMapping("/Orders") public Object addOrder(@RequestBody JSONObject jsonObject){ Order order = new Order(jsonObject); + long newId = YitIdHelper.nextId(); + System.out.println("生成的id:"+newId); + order.setOrder_id(newId); boolean cart = jsonObject.getBoolean("cart"); Address address = addressService.searchAddressById(order.getAddress().getAddress_id()); if (address == null || !order.getBuyer_username().equals(address.getUsername())){ diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index ef5fd0e..2aef638 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -50,6 +50,9 @@ insert into orders + + orderId, + sellerUsername, @@ -68,6 +71,9 @@ + + #{order_id,jdbcType=BIGINT}, + #{seller_username,jdbcType=VARCHAR}, -- Gitee From a261e8c8e2327db88c2c81ad75d402f16aca846d Mon Sep 17 00:00:00 2001 From: Arthur Date: Sat, 21 May 2022 15:02:53 +0800 Subject: [PATCH 124/133] =?UTF-8?q?=E9=93=B6=E8=81=94=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E8=BF=94=E5=9B=9Eform=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/union/service/AcpService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/union/service/AcpService.java b/back-end_code/src/main/java/com/shop/union/service/AcpService.java index f9c72f2..84812eb 100644 --- a/back-end_code/src/main/java/com/shop/union/service/AcpService.java +++ b/back-end_code/src/main/java/com/shop/union/service/AcpService.java @@ -209,7 +209,7 @@ public class AcpService { */ public static String createAutoFormHtml(String reqUrl, Map hiddens,String encoding) { StringBuffer sf = new StringBuffer(); - sf.append(""); + //sf.append(""); sf.append("
"); if (null != hiddens && 0 != hiddens.size()) { @@ -224,11 +224,11 @@ public class AcpService { } } sf.append("
"); - sf.append(""); + //sf.append(""); sf.append(""); - sf.append(""); + //sf.append(""); return sf.toString(); } -- Gitee From d218bc9ed97a6c821c8d915f346697da1386b687 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 22 May 2022 19:01:37 +0800 Subject: [PATCH 125/133] =?UTF-8?q?=E9=93=B6=E8=81=94=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/shop/service/UnionPaymentServiceImpl.java | 5 ++++- back-end_code/src/main/java/com/shop/utils/AlipayConfig.java | 2 +- .../src/main/resources/properties/acp_sdk.properties | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java b/back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java index bc37235..6cb7fe4 100644 --- a/back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java +++ b/back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java @@ -7,6 +7,7 @@ import com.shop.union.service.AcpService; import com.shop.union.util.CertUtil; import com.shop.union.util.LogUtil; import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; @@ -25,6 +26,8 @@ import java.util.*; @Service public class UnionPaymentServiceImpl implements com.shop.service.UnionPaymentService { + @Autowired + OrderService orderService; @PostConstruct public void init(){ System.out.println("银联支付初始化"); @@ -178,7 +181,7 @@ public class UnionPaymentServiceImpl implements com.shop.service.UnionPaymentSer //判断respCode=00、A6后,对涉及资金类的交易,请再发起查询接口查询,确定交易成功后更新数据库。 if("00".equals(respCode)){ // 00 交易成功 - + orderService.buyerPayOrder(Long.valueOf(orderId)); //todo 若交易成功 }else if("A6".equals(respCode)){ // A6 部分成功 diff --git a/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java b/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java index 6e7b620..85316f9 100644 --- a/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java +++ b/back-end_code/src/main/java/com/shop/utils/AlipayConfig.java @@ -25,7 +25,7 @@ public class AlipayConfig { // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 public static String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqXO3+a2ne7NHY9gvqhkWYZ4iKdK83/S4JRF02xiyXPrF/rTJVefEMPNkJ6lW3/5OPBmx173gxtZ6/1bIX2gj32a8KICbuYW6QlhzkTa6SWk9A7/VD/o7rLuM2jIKA/U2VYzTAGWMYApnvdYL042BPmedplxj0ZJvc/DxCmktdk4E3QP5Xl/tO7ntUVEeZcslA8iFXDP2DCloZ/L/FcYLFCrPHFCijiGb2gMdfWqA9i2FVSd7taSZJNCI5+WJl5LDUDoA3BC/x2FAZ0ZTyX0IVEI4RTARaHXzzc9ROnCyv9YXOHRBvaUooqsM+Pmyj7Y4mHS+SKzvWyyYuPrAZTi8gQIDAQAB"; // 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 - public static String notify_url = "http://23791dw357.wicp.vip:80/pay/notify"; + public static String notify_url = "http://souldays.top:8085/pay/notify"; // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 public static String return_url = "http://localhost:8069"; diff --git a/back-end_code/src/main/resources/properties/acp_sdk.properties b/back-end_code/src/main/resources/properties/acp_sdk.properties index a7df8dc..72c3774 100644 --- a/back-end_code/src/main/resources/properties/acp_sdk.properties +++ b/back-end_code/src/main/resources/properties/acp_sdk.properties @@ -46,7 +46,7 @@ acpsdk.frontUrl=http://localhost:8069 #后台通知地址,填写后台接收银联后台通知的地址,必须外网能访问 #111.204.128.115:8929 ---> 192.168.0.54:8087 -acpsdk.backUrl=http://111.204.128.115:8929/garageWechat/wx/pay/union/backRcvResponse +acpsdk.backUrl=http://souldays.top:8085/union/backRcvResponse #111.204.128.115:8917 ---> 192.168.0.54:8085 #acpsdk.backUrl=http://111.204.128.115:8917/garage/wx/pay/union/backRcvResponse #111.204.128.115:8925 ---> 192.168.1.19:8087 -- Gitee From 9134416d8150f4dfd3fee53a7393807ea4208923 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Mon, 23 May 2022 09:30:22 +0800 Subject: [PATCH 126/133] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/pom.xml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/back-end_code/pom.xml b/back-end_code/pom.xml index ccac4d1..8d91665 100644 --- a/back-end_code/pom.xml +++ b/back-end_code/pom.xml @@ -59,7 +59,7 @@ sfExpress 2.1.7 system - ${project.basedir}/src/main/java/com/shop/sflib/SF-CSIM.jar + ${pom.basedir}/src/main/java/com/shop/sflib/SF-CSIM.jar @@ -93,7 +93,6 @@ org.springframework.boot spring-boot-devtools true - true @@ -106,10 +105,6 @@ - - org.springframework.boot - spring-boot-starter-web - com.alipay.sdk alipay-sdk-java @@ -126,6 +121,11 @@ org.apache.commons commons-pool2 + + org.apache.httpcomponents + httpclient + 4.5.13 + org.bouncycastle @@ -175,6 +175,9 @@ org.springframework.boot spring-boot-maven-plugin + + true + -- Gitee From 2be8f641f2d75c643cd51794cd7831ac52bd2bd1 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Mon, 23 May 2022 09:31:14 +0800 Subject: [PATCH 127/133] =?UTF-8?q?=E9=87=8D=E6=9E=84AftApplication?= =?UTF-8?q?=E7=9A=84JSONObject=E6=9E=84=E9=80=A0=E5=87=BD=E6=95=B0=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9EAftApplication=E7=9A=84=E6=9E=84=E9=80=A0?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/shop/entity/AftApplication.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/back-end_code/src/main/java/com/shop/entity/AftApplication.java b/back-end_code/src/main/java/com/shop/entity/AftApplication.java index c2b65dd..8c833eb 100644 --- a/back-end_code/src/main/java/com/shop/entity/AftApplication.java +++ b/back-end_code/src/main/java/com/shop/entity/AftApplication.java @@ -26,7 +26,6 @@ public class AftApplication { public AftApplication(JSONObject jsonObject) { Iterator objectIterator; - Order order = new OrderService().searchOrderByOrderId(jsonObject.getLong("order_id")); if (jsonObject.getInteger("aftApplication_id") != null) this.aftApplication_id = jsonObject.getInteger("aftApplication_id"); if (jsonObject.getLong("order_id") != null) @@ -51,6 +50,21 @@ public class AftApplication { this.finish_time = jsonObject.getString("finish_time"); } + public AftApplication(Order order,AftApplicationType aftApplication_type,String aftApplication_reason,PackageState package_state,String aftApplication_images) { + this.order_id = order.getOrder_id(); + this.aftApplication_buyerusername = order.getBuyer_username(); + this.aftApplication_sellerusername = order.getSeller_username(); + this.package_state = package_state; + this.aftApplication_type = aftApplication_type; + if (aftApplication_reason != null) + this.aftApplication_reason = aftApplication_reason; + if (aftApplication_images != null) + this.aftApplication_images = aftApplication_images; + this.create_time = order.getCreate_time(); + if (order.getFinish_time() != null) + this.finish_time = order.getFinish_time(); + } + public AftApplication(Long order_id, String aftApplication_buyerusername, String aftApplication_sellerusername, PackageState package_state, AftApplicationType aftApplication_type, String aftApplication_reason, String aftApplication_images, AftApplicationState aftApplication_state, String create_time) { this.order_id = order_id; this.aftApplication_buyerusername = aftApplication_buyerusername; -- Gitee From bf87fe1cd0db393121c389f01fac22a2358410a4 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Mon, 23 May 2022 09:44:04 +0800 Subject: [PATCH 128/133] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=8A=B6=E6=80=81=E7=A7=8D=E7=B1=BB=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B7=BB=E5=8A=A0=E7=94=B3=E8=AF=89=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E5=94=AE=E5=90=8E=E7=8A=B6=E6=80=81=E9=80=BB?= =?UTF-8?q?=E8=BE=91BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/Enum/RefundState.java | 4 ++++ .../com/shop/controller/AftApplicationController.java | 10 ++++++---- .../src/main/java/com/shop/mapper/OrderMapper.java | 1 - .../src/main/java/com/shop/service/OrderService.java | 2 +- .../src/main/resources/mapping/OrderMapper.xml | 6 +++--- 5 files changed, 14 insertions(+), 9 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/Enum/RefundState.java b/back-end_code/src/main/java/com/shop/Enum/RefundState.java index f85a8df..29969fa 100644 --- a/back-end_code/src/main/java/com/shop/Enum/RefundState.java +++ b/back-end_code/src/main/java/com/shop/Enum/RefundState.java @@ -1,6 +1,8 @@ package com.shop.Enum; public enum RefundState { + Process, + // 处理中 Success, // 退款成功 Fail; @@ -12,6 +14,8 @@ public enum RefundState { return Success; }else if (str.equals("Fail")){ return Fail; + }else if (str.equals("Process")){ + return Fail; }else return null; } diff --git a/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java index 3b7cbfb..aa9c8fa 100644 --- a/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java +++ b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java @@ -2,6 +2,7 @@ package com.shop.controller; import com.shop.Enum.AftApplicationState; import com.shop.Enum.AftApplicationType; +import com.shop.Enum.PackageState; import com.shop.entity.AftApplication; import com.shop.entity.Order; import com.shop.service.AftApplicationService; @@ -27,14 +28,15 @@ public class AftApplicationController { @PostMapping("/AftApplication") public Object addAftApplication(@RequestBody JSONObject jsonObject){ Order order = orderService.searchOrderByOrderId(jsonObject.getLong("order_id")); - AftApplication aftApplication = new AftApplication(jsonObject); + if (order.getBuyer_username().equals(jsonObject.getString("aftApplication_buyerusername")) && !order.getSeller_username().equals(jsonObject.getString("aftApplication_sellerusername"))){ + return Result.fail("买家或卖家用户名错误"); + } + AftApplication aftApplication = new AftApplication(order, AftApplicationType.toenum(jsonObject.getString("aftApplication_type")) ,jsonObject.getString("aftApplication_reason"), PackageState.toenum(jsonObject.getString("package_state")),jsonObject.getString("aftApplication_images")); aftApplication.setCreate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - aftApplication.setAftApplication_buyerusername(order.getBuyer_username()); - aftApplication.setAftApplication_sellerusername(order.getSeller_username()); if (aftApplicationService.isAftApplicationById(aftApplication.getOrder_id()) != null){ return Result.fail("重复添加"); } - if (aftApplicationService.addAftApplication(aftApplication) < 1) + if (aftApplicationService.addAftApplication(aftApplication) < 1 || orderService.buyerSubmitAftApplication(order.getBuyer_username(), order.getOrder_id()) < 1) return Result.fail("添加申诉失败"); order = orderService.searchOrderByOrderId(aftApplication.getOrder_id()); jsonObject.put("order",order); diff --git a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java index 7203eab..44ba6dc 100644 --- a/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java +++ b/back-end_code/src/main/java/com/shop/mapper/OrderMapper.java @@ -201,7 +201,6 @@ public interface OrderMapper { */ List sellerSearchCancelOrder(String seller_username); - /** * 买家根据order_id(订单ID)申请订单售后 * @param buyer_username diff --git a/back-end_code/src/main/java/com/shop/service/OrderService.java b/back-end_code/src/main/java/com/shop/service/OrderService.java index cf7c1d2..089be4b 100644 --- a/back-end_code/src/main/java/com/shop/service/OrderService.java +++ b/back-end_code/src/main/java/com/shop/service/OrderService.java @@ -59,7 +59,7 @@ public class OrderService { public Integer sellerCancelOrder(String seller_username,Long order_id,String finish_time){return orderMapper.sellerCancelOrder(seller_username,order_id,finish_time);} public List buyerSearchCancelOrder(String buyer_username){return orderMapper.buyerSearchCancelOrder(buyer_username);} public List sellerSearchCancelOrder(String seller_username){return orderMapper.sellerSearchCancelOrder(seller_username);} - // public Integer buyerSubmitAftApplication(String buyer_username, Long order_id){ return orderMapper.buyerSubmitAftApplication(buyer_username, order_id);}; + public Integer buyerSubmitAftApplication(String buyer_username, Long order_id){ return orderMapper.buyerSubmitAftApplication(buyer_username, order_id);}; public List buyerSearchDealingOrder(String buyer_username){return orderMapper.buyerSearchDealingOrder(buyer_username);} public List sellerSearchDealingOrder(String seller_username){ return orderMapper.sellerSearchDealingOrder(seller_username);} public Integer sellerAcceptAftApplication(String seller_username, Long order_id){ return orderMapper.sellerAcceptAftApplication(seller_username, order_id,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}; diff --git a/back-end_code/src/main/resources/mapping/OrderMapper.xml b/back-end_code/src/main/resources/mapping/OrderMapper.xml index 2aef638..685fb70 100644 --- a/back-end_code/src/main/resources/mapping/OrderMapper.xml +++ b/back-end_code/src/main/resources/mapping/OrderMapper.xml @@ -294,7 +294,7 @@ update orders - set + set where orderId = #{order_id} and buyerUsername = #{buyer_username} @@ -303,7 +303,7 @@ select * from orders ,address ,orderdetail ,snapshot where orders.buyerUsername = #{buyer_username} and orderdetail.orderId = orders.orderId and orders.addressId = address.addressId and orderdetail.snapshotId = snapshot.snapshotId - and + and @@ -311,7 +311,7 @@ select * from orders ,address ,orderdetail ,snapshot where orders.sellerUsername = #{seller_username} and orderdetail.orderId = orders.orderId and orders.addressId = address.addressId and orderdetail.snapshotId = snapshot.snapshotId - and + and -- Gitee From 14926bfb7d1148e3022d924324110484deeef85b Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sat, 28 May 2022 09:59:31 +0800 Subject: [PATCH 129/133] =?UTF-8?q?=E9=87=8D=E6=9E=84User=E8=A1=A8=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/UserController.java | 18 +-- .../src/main/java/com/shop/entity/User.java | 109 ++++++------------ .../java/com/shop/service/UserService.java | 11 +- .../src/main/resources/mapping/UserMapper.xml | 32 ++--- 4 files changed, 50 insertions(+), 120 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index b22584d..ca32297 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -97,20 +97,12 @@ public class UserController { System.out.println(jsonObject); String message = "error"; String info="注册成功"; - String username = jsonObject.getString("username"); - String password = jsonObject.getString("password"); - String nickname = jsonObject.getString("nickname"); - int permission = 2; - String phonenumber = jsonObject.getString("phonenumber"); - String address = jsonObject.getString("address"); - String realname = jsonObject.getString("realname"); - String user_head = jsonObject.getString("user_head"); - if (user_head == null){ - user_head = "http://cdn.souldays.top/image/2021-12-06-eb3ac6b8edac4612806b08f967b88963.jpg"; + User user = new User(jsonObject); + if (jsonObject.getString("user_head") == null){ + user.setUser_head("http://cdn.souldays.top/image/2021-12-06-eb3ac6b8edac4612806b08f967b88963.jpg"); } - jsonObject = new JSONObject(); - User newUser = new User(username,password,nickname,permission,phonenumber,address,realname,user_head); - int result = userService.registerUser(newUser); + jsonObject.clear(); + int result = userService.registerUser(user); if (result >= 1){ message = "success"; }else if (result==-1){ diff --git a/back-end_code/src/main/java/com/shop/entity/User.java b/back-end_code/src/main/java/com/shop/entity/User.java index 9d95cb8..da74505 100644 --- a/back-end_code/src/main/java/com/shop/entity/User.java +++ b/back-end_code/src/main/java/com/shop/entity/User.java @@ -1,51 +1,43 @@ package com.shop.entity; +import com.alibaba.fastjson.JSONObject; +import com.shop.Enum.Permission; + +import java.util.Iterator; + public class User { private String username; private String password; private String nickname; - private int permission; - private String phonenumber; - private String address; - private String realname; + private Permission permission; private String user_head; + private String shop_name; public User() { super(); } - public User(String username, String realname, String phonenumber, String address) { - this.username = username; - this.phonenumber = phonenumber; - this.address = address; - this.realname = realname; - } - - public User(String username, String nickname, String phonenumber, String address, String realname, String user_head) { - this.username = username; - this.nickname = nickname; - this.phonenumber = phonenumber; - this.address = address; - this.realname = realname; - this.user_head = user_head; - } - - public User(String username, String password, String nickname, int permission, String phonenumber, String address, String realname, String user_head) { - this.username = username; - this.password = password; - this.nickname = nickname; - this.permission = permission; - this.phonenumber = phonenumber; - this.address = address; - this.realname = realname; - this.user_head = user_head; + public User(JSONObject jsonObject) { + Iterator objectIterator; + if (jsonObject.getString("username") != null) + this.username = jsonObject.getString("username"); + if (jsonObject.getString("password") != null) + this.password = jsonObject.getString("password"); + if (jsonObject.getString("nickname") != null) + this.nickname = jsonObject.getString("nickname"); + if (jsonObject.getString("permission") != null) + this.permission = Permission.toenum(jsonObject.getString("permission")); + if (jsonObject.getString("user_head") != null) + this.user_head = jsonObject.getString("user_head"); + if (jsonObject.getString("shop_name") != null) + this.shop_name = jsonObject.getString("shop_name"); } - public String getUserName() { + public String getUsername() { return username; } - public void setUserName(String username) { + public void setUsername(String username) { this.username = username; } @@ -57,66 +49,35 @@ public class User { this.password = password; } - public String getNickName() { + public String getNickname() { return nickname; } - public void setNickName(String nick_name) { - this.nickname = nick_name; + public void setNickname(String nickname) { + this.nickname = nickname; } - public int getPermission() { + public Permission getPermission() { return permission; } - public void setPermission(int permission) { + public void setPermission(Permission permission) { this.permission = permission; } - public String getPhonenumber() { - return phonenumber; - } - - public void setPhonenumber(String phonenumber) { - this.phonenumber = phonenumber; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getRealname() { - return realname; - } - - public void setRealname(String realname) { - this.realname = realname; - } - - public String getUserHead() { + public String getUser_head() { return user_head; } - public void setUserHead(String user_head) { + public void setUser_head(String user_head) { this.user_head = user_head; } + public String getShop_name() { + return shop_name; + } - @Override - public String toString() { - return "User{" + - "username='" + username + '\'' + - ", password='" + password + '\'' + - ", nickname='" + nickname + '\'' + - ", permission=" + permission + - ", phonenumber='" + phonenumber + '\'' + - ", address='" + address + '\'' + - ", realname='" + realname + '\'' + - ", user_head='" + user_head + '\'' + - '}'; + public void setShop_name(String shop_name) { + this.shop_name = shop_name; } } diff --git a/back-end_code/src/main/java/com/shop/service/UserService.java b/back-end_code/src/main/java/com/shop/service/UserService.java index 4909617..31afb33 100644 --- a/back-end_code/src/main/java/com/shop/service/UserService.java +++ b/back-end_code/src/main/java/com/shop/service/UserService.java @@ -23,11 +23,8 @@ public class UserService { public User getUserInfo(String username){ return userMapper.getUserInfo(username); } public int updatePassword(String username,String newPassword){ return userMapper.updatePassword(username,newPassword); } public int registerUser(User user){ - String username=user.getUserName(); + String username=user.getUsername(); String password=user.getPassword(); - String realName=user.getRealname(); - String phoneNumber=user.getPhonenumber(); - String address=user.getAddress(); final String STR_ENG_PATTERN="^[a-z0-9A-Z]+$"; if(username.length()>11||username.length()<3){ return -1;//用户名长度错误 @@ -37,12 +34,6 @@ public class UserService { return -3;//用户名包含非数字或字母 }else if(password.length()<7||password.length()>15){ return -4;//密码长度错误 - }else if(realName.length()>10){ - return -5;//真实姓名长度过长 - }else if(phoneNumber.length()!=11||!phoneNumber.matches("^[0-9]+$")){ - return -6;//电话号码格式错误 - }else if(address.length()>50){ - return -7;//地址过长 } user.setPassword(JasyptUtil.encryptPwd("xiebo",user.getPassword())); return userMapper.registerUser(user); diff --git a/back-end_code/src/main/resources/mapping/UserMapper.xml b/back-end_code/src/main/resources/mapping/UserMapper.xml index 971050b..4c5c3c6 100644 --- a/back-end_code/src/main/resources/mapping/UserMapper.xml +++ b/back-end_code/src/main/resources/mapping/UserMapper.xml @@ -4,12 +4,10 @@ - - - + @@ -27,7 +25,7 @@ select * from user where username = #{username} - + insert into user @@ -41,21 +39,15 @@ nickName, - - realName, - - - phoneNumber, - - - address, - permission, userHead, + + shopName, + @@ -69,21 +61,15 @@ #{nickname,jdbcType=VARCHAR}, - - #{realname,jdbcType=VARCHAR}, - - - #{phonenumber,jdbcType=VARCHAR}, - - - #{address,jdbcType=VARCHAR}, - - #{permission,jdbcType=INTEGER}, + #{permission,jdbcType=VARCHAR}, #{user_head,jdbcType=VARCHAR}, + + #{shop_name,jdbcType=VARCHAR}, + -- Gitee From 4d11d28c9c6f1f67ba3f1430f38dcfdeaff2c031 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sat, 28 May 2022 10:01:54 +0800 Subject: [PATCH 130/133] =?UTF-8?q?=E4=B8=8A=E4=BC=A0Permission=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/shop/Enum/Permission.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 back-end_code/src/main/java/com/shop/Enum/Permission.java diff --git a/back-end_code/src/main/java/com/shop/Enum/Permission.java b/back-end_code/src/main/java/com/shop/Enum/Permission.java new file mode 100644 index 0000000..9d9c44c --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/Permission.java @@ -0,0 +1,25 @@ +package com.shop.Enum; + +public enum Permission { + Buyer, + // 买家 + Seller, + // 商家 + Administrator; + // 管理员 + + Permission() { + } + + public static Permission toenum(String str){ + if (str.equals("Buyer")){ + return Buyer; + }else if (str.equals("Seller")){ + return Seller; + }else if (str.equals("Administrator")){ + return Administrator; + }else + return null; + } + +} -- Gitee From 21191e3cf74a67b8979f065dccc6ee8a5b3e3df5 Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sat, 28 May 2022 19:59:06 +0800 Subject: [PATCH 131/133] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/shop/controller/UserController.java | 2 +- back-end_code/src/main/java/com/shop/token/TokenService.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index ca32297..9506044 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -26,7 +26,7 @@ public class UserController { @PostMapping(value = "/login") public Object loginByPassword(@RequestBody User tryingUser){ String message = "error"; - String username =tryingUser.getUserName(); + String username =tryingUser.getUsername(); String password = tryingUser.getPassword(); JSONObject jsonObject = new JSONObject(); if(username.length()<=10&&username.length()>=3&&password.length()>=7&&password.length()<=15){ diff --git a/back-end_code/src/main/java/com/shop/token/TokenService.java b/back-end_code/src/main/java/com/shop/token/TokenService.java index be249d6..0ba20e6 100644 --- a/back-end_code/src/main/java/com/shop/token/TokenService.java +++ b/back-end_code/src/main/java/com/shop/token/TokenService.java @@ -24,8 +24,8 @@ public class TokenService { token = JWT.create() // .withHeader(header) //存储自己想要留存给客户端浏览器的内容 - .withAudience(user.getUserName()) - .withClaim("username",user.getUserName()) + .withAudience(user.getUsername()) + .withClaim("username",user.getUsername()) .withIssuedAt(start) .withExpiresAt(expiresAt) .sign(Algorithm.HMAC256(user.getPassword())); -- Gitee From a301edebdb0e7657a8b8fc52c9231522ab3a974a Mon Sep 17 00:00:00 2001 From: WenZong9 <2937021973@qq.com> Date: Sat, 28 May 2022 19:59:49 +0800 Subject: [PATCH 132/133] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shop/controller/UserController.java | 9 +----- .../src/main/resources/mapping/UserMapper.xml | 31 +++++++++---------- 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/back-end_code/src/main/java/com/shop/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index 9506044..5390083 100644 --- a/back-end_code/src/main/java/com/shop/controller/UserController.java +++ b/back-end_code/src/main/java/com/shop/controller/UserController.java @@ -136,15 +136,8 @@ public class UserController { @PutMapping(value = "/updateUser") public Object updateUser(@RequestBody User user){ String message = "error"; - String username = user.getUserName(); - String nickname = user.getNickName(); - String realname = user.getRealname(); - String phonenumber = user.getPhonenumber(); - String address = user.getAddress(); - String user_head = user.getUserHead(); JSONObject jsonObject = new JSONObject(); - User newUser = new User(username,nickname,phonenumber,address,realname,user_head); - int result = userService.updateUser(newUser); + int result = userService.updateUser(user); if (result >= 1){ message = "success"; } diff --git a/back-end_code/src/main/resources/mapping/UserMapper.xml b/back-end_code/src/main/resources/mapping/UserMapper.xml index 4c5c3c6..1cffa83 100644 --- a/back-end_code/src/main/resources/mapping/UserMapper.xml +++ b/back-end_code/src/main/resources/mapping/UserMapper.xml @@ -22,7 +22,8 @@ @@ -80,28 +81,26 @@ nickName = #{nickname,jdbcType=VARCHAR}, - - permission = #{permission,jdbcType=INTEGER}, - - - phoneNumber = #{phonenumber,jdbcType=VARCHAR}, - - - address = #{address,jdbcType=VARCHAR}, - - - realName = #{realname,jdbcType=VARCHAR}, - userHead = #{user_head,jdbcType=VARCHAR}, + + shopName = #{shop_name,jdbcType=VARCHAR}, + where userName = #{username,jdbcType=VARCHAR} - + + + + - \ No newline at end of file + -- Gitee From 16869137360e96127a06f20b446633bd974a6884 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 29 May 2022 19:41:27 +0800 Subject: [PATCH 133/133] =?UTF-8?q?=E6=96=B0=E5=A2=9Eredis=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back-end_code/pom.xml | 2 +- .../java/com/shop/service/GoodsService.java | 1 + .../java/com/shop/service/RedisService.java | 36 ++++++++++++++++ .../shop/service/UnionPaymentServiceImpl.java | 11 ++++- .../shop/service/impl/RedisServiceImpl.java | 43 +++++++++++++++++++ .../src/main/resources/application-dev.yml | 24 +++++------ .../resources/properties/acp_sdk.properties | 2 +- 7 files changed, 103 insertions(+), 16 deletions(-) create mode 100644 back-end_code/src/main/java/com/shop/service/RedisService.java create mode 100644 back-end_code/src/main/java/com/shop/service/impl/RedisServiceImpl.java diff --git a/back-end_code/pom.xml b/back-end_code/pom.xml index 8d91665..49c3a0e 100644 --- a/back-end_code/pom.xml +++ b/back-end_code/pom.xml @@ -113,7 +113,7 @@ org.springframework.boot - spring-boot-starter-redis + spring-boot-starter-data-redis 1.4.7.RELEASE diff --git a/back-end_code/src/main/java/com/shop/service/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java index d9095f5..134dcdb 100644 --- a/back-end_code/src/main/java/com/shop/service/GoodsService.java +++ b/back-end_code/src/main/java/com/shop/service/GoodsService.java @@ -5,6 +5,7 @@ import com.shop.entity.Goods; import com.shop.mapper.CategoryMapper; import com.shop.mapper.GoodsMapper; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import java.util.ArrayList; diff --git a/back-end_code/src/main/java/com/shop/service/RedisService.java b/back-end_code/src/main/java/com/shop/service/RedisService.java new file mode 100644 index 0000000..fe02dc5 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/RedisService.java @@ -0,0 +1,36 @@ +package com.shop.service; + +/** + * redis操作Service, + * 对象和数组都以json形式进行存储 + * Created by macro on 2018/8/7. + */ +public interface RedisService { + /** + * 存储数据 + */ + void set(String key, String value); + + /** + * 获取数据 + */ + String get(String key); + + /** + * 设置超期时间 + */ + boolean expire(String key, long expire); + + /** + * 删除数据 + */ + void remove(String key); + + /** + * 自增操作 + * @param delta 自增步长 + */ + Long increment(String key, long delta); + +} + diff --git a/back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java b/back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java index 6cb7fe4..81e0faf 100644 --- a/back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java +++ b/back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java @@ -39,7 +39,7 @@ public class UnionPaymentServiceImpl implements com.shop.service.UnionPaymentSer //private String merId = "777290058110048"; private String merId = "777290058197286"; - private String redictUrl = "http://localhost:8069"; + private String redictUrl = "http://www.baidu.com"; /** @@ -197,6 +197,7 @@ public class UnionPaymentServiceImpl implements com.shop.service.UnionPaymentSer public void frontRcvResponse(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { LogUtil.writeLog("FrontRcvResponse前台接收报文返回开始"); + System.out.println("走到frontRcvResponse了"); String encoding = request.getParameter(SDKConstants.param_encoding); LogUtil.writeLog("返回报文中encoding=[" + encoding + "]"); @@ -405,7 +406,13 @@ public class UnionPaymentServiceImpl implements com.shop.service.UnionPaymentSer @Override public void successRedict(HttpServletRequest request, HttpServletResponse response) throws IOException { - response.sendRedirect(redictUrl); + //response.sendRedirect(redictUrl); + try { + System.out.println("走到successRedict了"); + request.getRequestDispatcher(redictUrl).forward(request,response); + } catch (ServletException e) { + e.printStackTrace(); + } } diff --git a/back-end_code/src/main/java/com/shop/service/impl/RedisServiceImpl.java b/back-end_code/src/main/java/com/shop/service/impl/RedisServiceImpl.java new file mode 100644 index 0000000..4834819 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/impl/RedisServiceImpl.java @@ -0,0 +1,43 @@ +package com.shop.service.impl; + +import com.shop.service.RedisService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; + +import java.util.concurrent.TimeUnit; + +/** + * redis操作Service的实现类 + * Created by macro on 2018/8/7. + */ +@Service +public class RedisServiceImpl implements RedisService { + @Autowired + private StringRedisTemplate stringRedisTemplate; + + @Override + public void set(String key, String value) { + stringRedisTemplate.opsForValue().set(key, value); + } + + @Override + public String get(String key) { + return stringRedisTemplate.opsForValue().get(key); + } + + @Override + public boolean expire(String key, long expire) { + return stringRedisTemplate.expire(key, expire, TimeUnit.SECONDS); + } + + @Override + public void remove(String key) { + stringRedisTemplate.delete(key); + } + + @Override + public Long increment(String key, long delta) { + return stringRedisTemplate.opsForValue().increment(key,delta); + } +} diff --git a/back-end_code/src/main/resources/application-dev.yml b/back-end_code/src/main/resources/application-dev.yml index a7ad658..a9e3822 100644 --- a/back-end_code/src/main/resources/application-dev.yml +++ b/back-end_code/src/main/resources/application-dev.yml @@ -15,18 +15,18 @@ spring: exclude: WEB-INF/** freemarker: cache: false #页面不加载缓存,修改即时生效 - redis: - host: localhost # Redis服务器地址 - database: 0 # Redis数据库索引(默认为0) - port: 6379 # Redis服务器连接端口 - password: # Redis服务器连接密码(默认为空) - jedis: - pool: - max-active: 8 # 连接池最大连接数(使用负值表示没有限制) - max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制) - max-idle: 8 # 连接池中的最大空闲连接 - min-idle: 0 # 连接池中的最小空闲连接 - timeout: 3000ms # 连接超时时间(毫秒) + redis: + host: localhost # Redis服务器地址 + database: 0 # Redis数据库索引(默认为0) + port: 6379 # Redis服务器连接端口 + password: # Redis服务器连接密码(默认为空) + jedis: + pool: + max-active: 8 # 连接池最大连接数(使用负值表示没有限制) + max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-idle: 8 # 连接池中的最大空闲连接 + min-idle: 0 # 连接池中的最小空闲连接 + timeout: 3000ms # 连接超时时间(毫秒) # 自定义redis key redis: key: diff --git a/back-end_code/src/main/resources/properties/acp_sdk.properties b/back-end_code/src/main/resources/properties/acp_sdk.properties index 72c3774..9ec30fd 100644 --- a/back-end_code/src/main/resources/properties/acp_sdk.properties +++ b/back-end_code/src/main/resources/properties/acp_sdk.properties @@ -42,7 +42,7 @@ acpsdk.ifValidateCNName=false acpsdk.ifValidateRemoteCert=false #前台通知地址,填写后台接收银联前台通知的地址 -acpsdk.frontUrl=http://localhost:8069 +acpsdk.frontUrl=http://localhost:8085/union/frontRcvResponse #后台通知地址,填写后台接收银联后台通知的地址,必须外网能访问 #111.204.128.115:8929 ---> 192.168.0.54:8087 -- Gitee

ZDl5Iw@BQT+ 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�=NYG`_cY&sy) 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%0D9(39i$Wbd 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 literal 0 HcmV?d00001 diff --git a/back-end_code/src/main/java/com/shop/sflib/httpcore-4.3.2.jar b/back-end_code/src/main/java/com/shop/sflib/httpcore-4.3.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..813ec234859e5c97798519c7a0fd221c1a79150e GIT binary patch literal 282269 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