diff --git a/back-end_code/pom.xml b/back-end_code/pom.xml index 3bde7b47cc4b04650d182234ecb66b9b1048d19b..49c3a0e8040d4e010a4d2c0568314176883bdbf5 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 购物网站后台 @@ -47,6 +47,20 @@ qiniu-java-sdk 7.2.7 + + + com.alibaba + fastjson + 1.2.47 + + + + com.sf + sfExpress + 2.1.7 + system + ${pom.basedir}/src/main/java/com/shop/sflib/SF-CSIM.jar + @@ -79,7 +93,6 @@ org.springframework.boot spring-boot-devtools true - true @@ -87,13 +100,84 @@ jasypt-spring-boot-starter 2.0.0 + + + + + + + com.alipay.sdk + alipay-sdk-java + 4.22.49.ALL + + + + org.springframework.boot + spring-boot-starter-data-redis + 1.4.7.RELEASE + + + + org.apache.commons + commons-pool2 + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + + org.bouncycastle + bcprov-jdk15on + 1.54 + + + commons-lang + commons-lang + 2.5 + + + commons-codec + commons-codec + 1.6 + + + junit + junit + 4.12 + + + + com.github.yitter + yitter-idgenerator + 1.0.6 + + + + + src/main/java/com/shop/sflib + + + lib + + + + *.jar + + + + org.springframework.boot spring-boot-maven-plugin + + true + 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 0000000000000000000000000000000000000000..4a606fb484cc60fcd806ee64ad064fca3586a50f --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/AftApplicationState.java @@ -0,0 +1,27 @@ +package com.shop.Enum; + +public enum AftApplicationState { + Process, + // 处理中 + Accept, + // 同意 + Refuse, + // 拒绝 + Cancel; + // 已关闭 + + AftApplicationState() { + } + public static AftApplicationState toenum(String str){ + if (str.equals("Process")){ + return Process; + }else if (str.equals("Accept")){ + return Accept; + }else if (str.equals("Refuse")){ + return Refuse; + }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 0000000000000000000000000000000000000000..1c5602468c3c4269913ebcc3a44003a06968a570 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/AftApplicationType.java @@ -0,0 +1,20 @@ +package com.shop.Enum; + +public enum AftApplicationType { + Refund, + //退款 + Return; + //退货 + + AftApplicationType() { + } + + public static AftApplicationType toenum(String str){ + if (str.equals("Refund")){ + return Refund; + }else if (str.equals("Return")){ + return Return; + }else + return null; + } +} 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 0000000000000000000000000000000000000000..a2f6839284956c23b132656394ccc8206a6efb5e --- /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/Enum/GoodState.java b/back-end_code/src/main/java/com/shop/Enum/GoodState.java new file mode 100644 index 0000000000000000000000000000000000000000..52eb27b20b1615a6f2e6ef566415e3cdc5851724 --- /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/Enum/OrderState.java b/back-end_code/src/main/java/com/shop/Enum/OrderState.java new file mode 100644 index 0000000000000000000000000000000000000000..aa56820014cd0bd87003c773316f870020e07c05 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/OrderState.java @@ -0,0 +1,43 @@ +package com.shop.Enum; + +public enum OrderState { + Unpaid, + // 待支付 + Unconfirmed, + // 待确认 + Unpicked, + // 待备货 + Undelivered, + // 待发货 + Delivered, + // 已发货 + Finish, + // 交易成功 + SCancel, + // 商家取消订单 + BCancel; + // 买家取消订单 + + OrderState() { + } + public static OrderState toenum(String str){ + if (str.equals("Unpaid")){ + return Unpaid; + }else if (str.equals("Unconfirmed")){ + return Unconfirmed; + }else if (str.equals("Unpicked")){ + return Unpicked; + }else if (str.equals("Undelivered")){ + return Undelivered; + }else if (str.equals("Delivered")){ + return Delivered; + }else if (str.equals("Finish")){ + return Finish; + }else if (str.equals("SCancel")){ + return SCancel; + }else if (str.equals("BCancel")){ + return BCancel; + }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 0000000000000000000000000000000000000000..c431f509caf6bbefea995e34538d5e063e079bf5 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/PackageState.java @@ -0,0 +1,23 @@ +package com.shop.Enum; + +public enum PackageState { + Finished, + //已收到货 + UnFinished, + //未收到货 + Undelivered; + //未发货 + + PackageState() { + } + public static PackageState toenum(String str){ + if (str.equals("Finished")){ + return Finished; + }else if (str.equals("UnFinished")){ + return UnFinished; + }else if (str.equals("Undelivered")){ + return Undelivered; + }else + return null; + } +} 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 0000000000000000000000000000000000000000..9d9c44ccb5c53f4fb1f7eaac91e5e487d0385a44 --- /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; + } + +} 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 0000000000000000000000000000000000000000..29969fa0a45a541fa0a78ca5242ef58130a78e22 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/Enum/RefundState.java @@ -0,0 +1,22 @@ +package com.shop.Enum; + +public enum RefundState { + Process, + // 处理中 + Success, + // 退款成功 + Fail; + // 退款失败 + RefundState() { + } + public static RefundState toenum(String str){ + if (str.equals("Success")){ + 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/Enum/Select.java b/back-end_code/src/main/java/com/shop/Enum/Select.java new file mode 100644 index 0000000000000000000000000000000000000000..e545a9f8767682d70f838affa4f25f3414a5a5a2 --- /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/ServiceApplication.java b/back-end_code/src/main/java/com/shop/ServiceApplication.java index dcb44b5536204b58dc02968be174211b60acf1af..9a7c7c4eb47179eeae32f7f979df3a6646b83643 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/AddressController.java b/back-end_code/src/main/java/com/shop/controller/AddressController.java new file mode 100644 index 0000000000000000000000000000000000000000..09098667327a9856e2cc73245b49ba461cea5997 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/AddressController.java @@ -0,0 +1,111 @@ +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 org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +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.searchUserSelectedAddress(address.getUsername()) == null) { + address.setSelected(Select.Selected); + } + else { + address.setSelected(Select.UnSelected); + } + if (addressService.addAddress(address) < 1) + return Result.fail("添加地址失败"); + }catch (Exception e){ + return Result.fail(e.toString()); + } + return Result.ok(); + } + + //根据买家username查找地址 + @GetMapping("/Address") + public Object searchUserAddress(@RequestParam 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()); + } + } + + //根据买家username查找默认地址 + @GetMapping("/Selected") + public Object searchUserSelectedAddress(@RequestParam String username){ + try{ + JSONObject jsonObject = new JSONObject(); + Address address =addressService.searchUserSelectedAddress(username); + jsonObject.put("address",address); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(e.toString()); + } + } + + //更新地址 + @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) { + return Result.fail(e.toString()); + } + return Result.ok(); + } + + //删除地址 + @DeleteMapping("/Address") + public Object deleteAddressByAddressId(@RequestParam String username , @RequestParam 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("/Selected") + public Object updateSelected(@RequestBody JSONObject jsonObject){ + try { + String username = jsonObject.getString("username"); + Integer address_id = jsonObject.getInteger("address_id"); + Address addressSelected= addressService.searchUserSelectedAddress(username); + if (addressService.setUnselected(username) < 1 && !(addressService.searchUserSelectedAddress(username) == null)) + return Result.fail("更新地址失败"); + if (addressService.setSelected(address_id,username) < 1){ + addressService.setSelected(addressSelected.getAddress_id(),addressSelected.getUsername()); + 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/AftApplicationController.java b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java new file mode 100644 index 0000000000000000000000000000000000000000..aa9c8fac7019c55136a897461faa215886dcb70d --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/AftApplicationController.java @@ -0,0 +1,111 @@ +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; +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; + + //添加申诉 + @PostMapping("/AftApplication") + public Object addAftApplication(@RequestBody JSONObject jsonObject){ + Order order = orderService.searchOrderByOrderId(jsonObject.getLong("order_id")); + 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())); + if (aftApplicationService.isAftApplicationById(aftApplication.getOrder_id()) != null){ + return Result.fail("重复添加"); + } + 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); + return Result.ok(jsonObject); + } + + //买家根据aftApplication_buyerusername,aftApplication_type,aftApplication_state查找申诉 + @PutMapping("/buyer") + 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(@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 JSONObject jsonObject){ + AftApplication aftApplication = new AftApplication(jsonObject); + if (aftApplicationService.updateAftApplication(aftApplication) < 1) + return Result.fail("更新申诉失败"); + return Result.ok(); + } + + //买家取消申诉 + @PutMapping("/cancel") + 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(@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/controller/AlipayController.java b/back-end_code/src/main/java/com/shop/controller/AlipayController.java new file mode 100644 index 0000000000000000000000000000000000000000..77780a67f1751f627df960738f1d1dea3fd75acc --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/AlipayController.java @@ -0,0 +1,108 @@ +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 + */ +@RestController +@RequestMapping("/pay") +public class AlipayController { + + private AlipayUtil alipayUtil; + @Autowired + private AlipayServiceImpl alipayService; + + @Autowired + public void setAlipayUtil(AlipayUtil alipayUtil) { + this.alipayUtil = alipayUtil; + } + @Autowired + private OrderService orderService; + + + @PostMapping("/create") + 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 { + pay = alipayService.webPagePay(id, price,title); + } catch (Exception e) { + e.printStackTrace(); + } + 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); +// +// } +@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(Long.valueOf(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/GOController.java b/back-end_code/src/main/java/com/shop/controller/GOController.java index ffb45d1755bb1dcfd59172bf4b6cf003dda87f5d..a48f0c1d5d4d02b479e88a3c1fc4a618f77ce0ed 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/GoodsController.java b/back-end_code/src/main/java/com/shop/controller/GoodsController.java index 99535955f855727b6d950d236979a7addeadaffb..0873d84ff66d64540144811e7d3c43794e2c427c 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/controller/OrderController.java b/back-end_code/src/main/java/com/shop/controller/OrderController.java index 7e458ac9029b3f3f957a7e049d965afe62a76236..bd962c8592e4ed4b70312106ed1f1f8645ad4063 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,20 +1,16 @@ 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.github.yitter.idgen.YitIdHelper; +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 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.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -38,376 +34,496 @@ public class OrderController { @Autowired private CartService cartService; - //查看商品意向购买买家 - @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(); - List orderList = orderService.searchBuyerlist(seller_username,item_id); - message = "success"; - jsonObject.put("orders",orderList); - jsonObject.put("message",message); - return jsonObject; - } + @Autowired + private SnapshotService snapshotService; + + @Autowired + private OrderDetailService orderDetailService; + + @Autowired + private AddressService addressService; - //查看商品意向购买买家名 - @RequestMapping(value = "/searchSellingGoodsBuyerRealname") - public Object searchSellingGoodsBuyerRealname(HttpServletRequest request, HttpServletResponse response){ - String message = "error"; - int item_id = Integer.parseInt(request.getParameter("item_id")); + @Autowired + private SFService sfService; + + //根据订单ID查询订单 + @GetMapping("/ID") + public Object searchOrderByOrderId(@RequestParam Long order_id){ JSONObject jsonObject = new JSONObject(); - List stringList = orderService.searchSellingGoodsBuyerRealname(); - message = "success"; - jsonObject.put("strings",stringList); - jsonObject.put("message",message); - return jsonObject; + Order order = orderService.searchOrderByOrderId(order_id); + jsonObject.put("order",order); + return Result.ok(jsonObject); } - //查看交易中的某商品对应的订单信息 - @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(); - Order order = orderService.searchFreezeGoodsBuyer(seller_username,item_id); - if (order != null){ - message = "success"; - jsonObject.put("order",order); - }else { - message = "error"; + //用户下单 + @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())){ + return Result.fail("地址有误"); } - jsonObject.put("message",message); - return jsonObject; + order.setCreate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + orderService.addOrder(order); + order = orderService.searchNewOrder(order); + List orderDetailList = new ArrayList(); + Iterator objectIterator = jsonObject.getJSONArray("goods").iterator(); + OrderDetail orderDetail = null ; + Integer item_id = null ; + Integer buy_stock = null ; + Float buy_amount = 0.0f; + Snapshot snapshot = null ; + JSONObject jb = null; + Goods good = null; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + 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; + } + buy_stock = jb.getInteger("buy_stock"); + if (buy_stock > good.getGoods_stock()) { + sb.append("商品: ").append(good.getGoods_name()).append(" 下单失败").append(" ,原因:该商品购买数量超库存\n"); + continue; + } + snapshot = snapshotService.searchNewSnapshotByGoodId(item_id); + orderDetailService.addOrderDetail(order.getOrder_id(),snapshot,buy_stock); + orderDetail = orderDetailService.searchNewOrderDetailByOrderId(order.getOrder_id()); + buy_amount += orderDetail.getBuy_sum(); + orderDetailList.add(orderDetail); + cartService.deleteCart(order.getBuyer_username(), good.getItem_id()); + goodsService.updateGoodStock(good.getItem_id(),good.getGoods_stock()-buy_stock); + if (cart){ + 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); + order = orderService.searchOrderByOrderId(order.getOrder_id()); + jsonObject.clear(); + jsonObject.put("result",sb.toString()); + jsonObject.put("order" ,order); + return Result.ok(jsonObject); } - //查看已完成交易商品的历史意向买家 - @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")); + //根据买家用户名查找所有订单 + @GetMapping("/buyer/history") + public Object buyerSearchHistoryOrders(@RequestParam String buyer_username){ JSONObject jsonObject = new JSONObject(); - List orderList = orderService.searchHistoryGoodsUnFinishedOrder(seller_username,item_id); - message = "success"; - jsonObject.put("message",message); + List orderList = orderService.buyerSearchHistoryOrders(buyer_username); + jsonObject.clear(); jsonObject.put("orders",orderList); - return jsonObject; + return Result.ok(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")); + //根据卖家用户名查找所有订单 + @GetMapping("/seller/history") + public Object sellerSearchHistoryOrders(@RequestParam String seller_username){ JSONObject jsonObject = new JSONObject(); - 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; + List orderList = orderService.sellerSearchHistoryOrders(seller_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); } - //根据用户名查看历史购买记录 - @GetMapping("/buyer/finished/{buyer_username}") - public Object searchFinishOrderByBuyerName(@PathVariable("buyer_username") String buyer_username){ + //买家查询待支付的订单 + @GetMapping("/buyer/unpaid") + public Object buyerSearchUnpaidOrder(@RequestParam String buyer_username){ JSONObject jsonObject = new JSONObject(); - List orderList = orderService.searchFinishOrderByBuyerName(buyer_username); + List orderList = orderService.buyerSearchUnpaidOrder(buyer_username); + jsonObject.clear(); jsonObject.put("orders",orderList); return Result.ok(jsonObject); } - //根据卖家用户名查找所有订单 - @GetMapping("/seller/{seller_username}") - public Object searchOrdersBySellerName(@PathVariable("seller_username") String seller_username){ + //卖家查询待支付的订单 + @GetMapping("/seller/unpaid") + public Object sellerSearchUnpaidOrder(@RequestParam String seller_username){ JSONObject jsonObject = new JSONObject(); - List orderList = orderService.searchOrdersBySellerName(seller_username); + List orderList = orderService.sellerSearchUnpaidOrder(seller_username); + jsonObject.clear(); jsonObject.put("orders",orderList); return Result.ok(jsonObject); } + //买家支付待支付的订单 + @PutMapping(value = "/buyer/pay") + public Object buyerPayOrder(@RequestBody JSONObject jsonObject){ + Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); + String buyer_username = jsonObject.getString("buyer_username"); + Long order_id; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + order_id = jb.getLong("order_id"); + if(orderService.buyerPayOrder(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/unconfirmed") 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(); - } + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.buyerSearchUnconfirmedOrder(buyer_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); } //卖家查询待确认的订单 @GetMapping("/seller/unconfirmed") 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(); - } + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchUnconfirmedOrder(seller_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); } //卖家确认待确认的订单 @PutMapping(value = "/seller/confirm") - public Object confirmOrder(@RequestBody Order[] orders){ - for (Order order:orders) { - if(orderService.confirmOrder(order.getSeller_username(),order.getOrder_id()) < 1) { - return Result.fail("订单号为"+order.getOrder_id()+"的"+order.getGoods_name()+"确认失败,后续订单操作被迫中止"); + public Object sellerConfirmOrder(@RequestBody JSONObject jsonObject){ + Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); + String seller_username = jsonObject.getString("seller_username"); + Long order_id; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + order_id = jb.getLong("order_id"); + if(orderService.sellerConfirmOrder(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/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(@RequestParam String buyer_username){ + JSONObject jsonObject = new JSONObject(); + 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(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); + 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"); + Long order_id; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + order_id = jb.getLong("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(); - } - } - - //买家修改待发货的订单收货人信息 - @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(); - } + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.buyerSearchUndeliveredOrder(buyer_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); } //卖家查询待发货的订单 - @GetMapping("/seller/Undelivered") + @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(); + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchUndeliveredOrder(seller_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + } + + //买家修改待发货的订单收货人信息 + @PutMapping(value = "/buyer/undelivered") + public Object buyerUpdateUndeliveredOrder(@RequestBody JSONObject jsonObject){ + Order order = new Order(jsonObject); + 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) throws UnsupportedEncodingException { + Iterator objectIterator = jsonObject.getJSONArray("orders").iterator(); + String seller_username = jsonObject.getString("seller_username"); + Long order_id; + Order order; + ResultData resultData; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + 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) { + 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"); + continue; } } - return Result.ok(); + return Result.ok(sb); } - //卖家查询待收货的订单 - @GetMapping("/seller/Unfinished") - public Object sellerSearchUnfinishedOrder(@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(); - } + //买家查询待收货的订单 + @GetMapping("/buyer/unarrived") + public Object buyerSearchUnarrivedOrder(@RequestParam String buyer_username){ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.buyerSearchUnarrivedOrder(buyer_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); } + //卖家查询待收货的订单 + @GetMapping("/seller/unarrived") + public Object sellerSearchUnarrivedOrder(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); + 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"); + Long order_id; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + 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; + }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(); + //买家查询已签收的订单 + @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)取消订单 @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"); + Long order_id; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + 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; + }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"); + Long order_id; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + 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; + }else{ + sb.append("订单号: ").append(order_id).append(" 卖家取消订单成功\n"); + continue; + } } + return Result.ok(sb); } - - //买家查询已完成的订单 - @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("/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/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/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){ + String buyer_username = jsonObject.getString("buyer_username"); + List orderList = orderService.buyerSearchDealingOrder(buyer_username); + jsonObject.clear(); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + }*/ + + //卖家查询售后处理中的订单 + /*@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); + }*/ + + //卖家查询同意退款的订单 + @GetMapping("/seller/aft_ok") + public Object sellerSearchAfterOkrOrder(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchAfterOkrOrder(seller_username); + jsonObject.put("orders",orderList); + return Result.ok(jsonObject); + } + //卖家查询拒绝退款的订单 + @GetMapping("/seller/aft_fail") + public Object sellerSearchAfterFailOrder(@RequestParam String seller_username){ + JSONObject jsonObject = new JSONObject(); + List orderList = orderService.sellerSearchAfterFailOrder(seller_username); + 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()); + //卖家根据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(); + Long order_id; + Float buy_amount; + StringBuilder sb = new StringBuilder(); + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + 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"); + continue; + }else{ + sb.append("订单号: ").append(order_id).append(" 设置金额成功\n"); + continue; } } - return Result.ok(); + return Result.ok(sb); } - } 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 0000000000000000000000000000000000000000..06a7e1ccab661840e57e20e2b4e1f10eec7e092f --- /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/controller/SnapshotController.java b/back-end_code/src/main/java/com/shop/controller/SnapshotController.java new file mode 100644 index 0000000000000000000000000000000000000000..50aedd77e8ef58d600dd4a7ac6c86cea572c7557 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/controller/SnapshotController.java @@ -0,0 +1,67 @@ +package com.shop.controller; + +import com.shop.entity.Snapshot; +import com.shop.service.SnapshotService; +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("/snapshot") +public class SnapshotController { + @Autowired + private SnapshotService snapshotService; + + //删除交易快照 + @DeleteMapping("/{snapshot_id}") + public Object deleteSnapshotBySnapshotId(@PathVariable Integer snapshot_id){ + try { + if (snapshotService.deleteSnapshotBySnapshotId(snapshot_id) < 1) + return Result.fail("删除交易快照失败"); + } catch (Exception e) { + return Result.fail(e.toString()); + } + return Result.ok(); + } + + //更新交易快照 + @PutMapping("/Snapshot") + public Object updateSnapshot(@RequestBody Snapshot snapshot){ + try { + if (snapshotService.updateSnapshot(snapshot) < 1) + return Result.fail("更新交易快照失败"); + } catch (Exception e) { + return Result.fail(e.toString()); + } + return Result.ok(); + } + + //根据商品Id查找商品的全部交易快照 + @GetMapping("/{item_id}") + public Object searchSnapshotByGoodId(@PathVariable Integer item_id){ + try{ + JSONObject jsonObject = new JSONObject(); + List snapshotes =snapshotService.searchSnapshotByGoodId(item_id); + jsonObject.put("snapshotes",snapshotes); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(e.toString()); + } + } + + //根据SnapshotId查询Snapshot + @GetMapping("/{snapshot_id}") + public Object searchSnapshotBySnapshotId(@PathVariable Integer snapshot_id){ + try{ + JSONObject jsonObject = new JSONObject(); + Snapshot snapshot =snapshotService.searchSnapshotBySnapshotId(snapshot_id); + jsonObject.put("snapshot",snapshot); + return Result.ok(jsonObject); + }catch (Exception e){ + return Result.fail(e.toString()); + } + } +} 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 0000000000000000000000000000000000000000..6f3900e8d3b0c6ce92b6afc622056cdc3177d6f9 --- /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/controller/UserController.java b/back-end_code/src/main/java/com/shop/controller/UserController.java index 9c2328a24c22c25ccb05ea06b849e22ace7cb3e2..5390083b5902d78767a8778c8c6e82d66829f721 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; @@ -36,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){ @@ -103,23 +93,16 @@ 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(); - int permission = 1; - 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"; + 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 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){ @@ -153,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/java/com/shop/entity/Address.java b/back-end_code/src/main/java/com/shop/entity/Address.java new file mode 100644 index 0000000000000000000000000000000000000000..dabcf8821c1844f8e4ca8f819d06b246c1cc5141 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/Address.java @@ -0,0 +1,116 @@ +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 region; + private String detail; + private String phonenumber; + 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("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 region, String detail, String phonenumber, Select selected) { + this.address_id = address_id; + this.username = username; + this.realname = realname; + this.region = region; + this.detail = detail; + 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 getRegion() { + return region; + } + + public void setRegion(String region) { + this.region = region; + } + + public String getDetail() { + return detail; + } + + public void setDetail(String detail) { + this.detail = detail; + } + + public String getPhonenumber() { + return phonenumber; + } + + public void setPhonenumber(String phonenumber) { + this.phonenumber = phonenumber; + } + + public Select getSelected() { + return selected; + } + + public void setSelected(Select selected) { + this.selected = selected; + } + + public Address() { + } + + @Override + public String toString() { + return "Address{" + + "address_id=" + address_id + + ", username='" + username + '\'' + + ", realname='" + realname + '\'' + + ", region='" + region + '\'' + + ", detail='" + detail + '\'' + + ", phonenumber='" + phonenumber + '\'' + + ", selected=" + selected + + '}'; + } +} 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 0000000000000000000000000000000000000000..8c833eb6c376009f974a287a89c687abc37caa8a --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/AftApplication.java @@ -0,0 +1,167 @@ +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; + private Long 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(JSONObject jsonObject) { + Iterator objectIterator; + if (jsonObject.getInteger("aftApplication_id") != null) + this.aftApplication_id = jsonObject.getInteger("aftApplication_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) + 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(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; + 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 long getOrder_id() { + return order_id; + } + + public void setOrder_id(Long 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/entity/GO.java b/back-end_code/src/main/java/com/shop/entity/GO.java index 144a1a9f460c9f550e251f5ec09c40721944a38f..0548db5e9ff71f3deac63633ffe7298e7cfa6986 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/Goods.java b/back-end_code/src/main/java/com/shop/entity/Goods.java index a79dcc81ea7510594ea121953d102ac325afee95..ccdbde820b123cbecf5fe7a556c2a7c5b7a971dc 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,76 @@ 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; + 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_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; + 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() { @@ -79,14 +81,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 +97,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 +113,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/entity/Order.java b/back-end_code/src/main/java/com/shop/entity/Order.java index 4347ab8f784a8f427f28df09748e74a746b83c93..c842f4771bd1ae35cdc21b6d003fee3112a981ff 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,167 +1,130 @@ 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; +import com.alibaba.fastjson.JSONObject; +import com.shop.Enum.OrderState; +import com.shop.Enum.PackageState; +import com.shop.Enum.RefundState; - 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; - } +import java.util.Iterator; +import java.util.List; +public class Order { + private Long order_id; + private List orderDetailList; 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 Address address; + private String remark; + 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; private String finish_time; + public 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; + public Order(Long order_id, String buyer_username, Address 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; - 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; + this.address = address; + } + + public Order(JSONObject jsonObject) { + Iterator objectIterator; + 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; + while (objectIterator.hasNext()) { + JSONObject jb = (JSONObject) objectIterator.next(); + OrderDetail = new OrderDetail(jb); + this.orderDetailList.add(OrderDetail); + } + } + if (jsonObject.getString("buyer_username") != null) + this.buyer_username = jsonObject.getString("buyer_username"); + if (jsonObject.getJSONObject("address") != null) + this.address = new Address(jsonObject.getJSONObject("address")); + if (jsonObject.getString("remark") != null) + this.remark = jsonObject.getString("remark"); + 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) + this.package_number = jsonObject.getString("package_number"); + 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 OrderState getOrder_state() { + return order_state; + } + + public void setOrder_state(OrderState order_state) { + this.order_state = order_state; + } + + public Long getOrder_id() { + return order_id; } - public float getBuy_amount() { - return buy_amount; + public void setOrder_id(Long order_id) { + this.order_id = order_id; } - public void setBuy_amount(float buy_amount) { - this.buy_amount = buy_amount; + public List getOrderDetailList() { + return orderDetailList; } - 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 void setOrderDetailList(List orderDetailList) { + this.orderDetailList = orderDetailList; } - 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; - 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; - this.finish_time = finish_time; + public String getBuyer_username() { + return buyer_username; } - 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; + public void setBuyer_username(String buyer_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; - } - - public void setOrder_id(int order_id) { - this.order_id = order_id; + public Address getAddress() { + return address; } - public int getItem_id() { - return item_id; + public void setAddress(Address address) { + this.address = address; } - public void setItem_id(int item_id) { - this.item_id = item_id; + public String getRemark() { + return remark; } - public int getBuy_sum() { - return buy_sum; + public void setRemark(String remark) { + this.remark = remark; } - public void setBuy_sum(int buy_sum) { - this.buy_sum = buy_sum; + public Float getBuy_amount() { + return buy_amount; } - public Order(int order_id, int item_id, String seller_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; - this.seller_username = seller_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; - this.finish_time = finish_time; + public void setBuy_amount(Float buy_amount) { + this.buy_amount = buy_amount; } public String getSeller_username() { @@ -172,45 +135,28 @@ public class Order { this.seller_username = seller_username; } - public String getBuyer_username() { - return buyer_username; + public RefundState getRefund_state() { + return refund_state; } - public void setBuyer_username(String buyer_username) { - this.buyer_username = buyer_username; - } - - public String getBuyer_realname() { - return buyer_realname; + public void setRefund_state(RefundState refund_state) { + this.refund_state = refund_state; } - public void setBuyer_realname(String buyer_realname) { - this.buyer_realname = buyer_realname; + public PackageState getPackage_state() { + return package_state; } - public String getBuyer_phonenumber() { - return buyer_phonenumber; + public void setPackage_state(PackageState package_state) { + this.package_state = package_state; } - public void setBuyer_phonenumber(String buyer_phonenumber) { - this.buyer_phonenumber = buyer_phonenumber; + public String getPackage_number() { + return package_number; } - - public String getBuyer_address() { - return buyer_address; - } - - public void setBuyer_address(String buyer_address) { - this.buyer_address = buyer_address; - } - - public int getState() { - return state; - } - - public void setState(int state) { - this.state = state; + public void setPackage_number(String package_number) { + this.package_number = package_number; } public String getCreate_time() { @@ -228,26 +174,4 @@ public class Order { public void setFinish_time(String finish_time) { this.finish_time = finish_time; } - - @Override - public String toString() { - 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/OrderDetail.java b/back-end_code/src/main/java/com/shop/entity/OrderDetail.java new file mode 100644 index 0000000000000000000000000000000000000000..229b37cb0d6456640af943f62dd1c8060ff690d6 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/OrderDetail.java @@ -0,0 +1,76 @@ +package com.shop.entity; + +import com.alibaba.fastjson.JSONObject; + +import java.util.Iterator; + +public class OrderDetail { + private Integer detail_id; + private Long order_id; + private Snapshot snapshot; + private Integer buy_stock; + private Float buy_sum; + + public OrderDetail() {} + + public OrderDetail(JSONObject jsonObject) { + Iterator objectIterator; + if (jsonObject.getInteger("detail_id") != null) + this.detail_id = jsonObject.getInteger("detail_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) + this.buy_stock = jsonObject.getInteger("buy_stock"); + if (jsonObject.getFloat("buy_sum") != null) + this.buy_sum = jsonObject.getFloatValue("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; + this.buy_sum = buy_sum; + } + + public Integer getDetail_id() { + return detail_id; + } + + public void setDetail_id(Integer detail_id) { + this.detail_id = detail_id; + } + + public Long getOrder_id() { + return order_id; + } + + public void setOrder_id(Long order_id) { + this.order_id = order_id; + } + + public Snapshot getSnapshot() { + return snapshot; + } + + public void setSnapshot(Snapshot snapshot) { + this.snapshot = snapshot; + } + + public Integer getBuy_stock() { + return buy_stock; + } + + public void setBuy_stock(Integer buy_stock) { + this.buy_stock = buy_stock; + } + + public Float getBuy_sum() { + return buy_sum; + } + + public void setBuy_sum(Float buy_sum) { + this.buy_sum = buy_sum; + } +} 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 5ce508ee427ae981732e14d028d26d9138cde550..72b8a0613107798c93d825f56f1de318fb2b517b 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/Snapshot.java b/back-end_code/src/main/java/com/shop/entity/Snapshot.java new file mode 100644 index 0000000000000000000000000000000000000000..9c8070707d1892322cd09893bbb4ff30c8f8714c --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/Snapshot.java @@ -0,0 +1,110 @@ +package com.shop.entity; + +import com.alibaba.fastjson.JSONObject; +import com.shop.Enum.GoodState; + +import java.util.Iterator; + + +public class Snapshot { + private Integer snapshot_id; + private Integer item_id; + private String goods_name; + private String goods_img; + private String goods_describe; + private Integer goods_category; + private Float goods_price; + private String snapshot_time; + + public Snapshot() { + } + + public Snapshot(JSONObject jsonObject) { + Iterator objectIterator; + if (jsonObject.getInteger("snapshot_id") != null) + this.snapshot_id = jsonObject.getInteger("snapshot_id"); + 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("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("snapshot_time") != null) + this.snapshot_time = jsonObject.getString("snapshot_time"); + } + + public Snapshot(Goods goods) { + this.item_id = goods.getItem_id(); + this.goods_name = goods.getGoods_name(); + this.goods_img = goods.getGoods_img(); + this.goods_describe = goods.getGoods_describe(); + this.goods_category = goods.getGoods_category(); + this.goods_price = goods.getGoods_price(); + } + + public Integer getSnapshot_id() { return snapshot_id; } + + public void setSnapshot_id(Integer snapshot_id) { this.snapshot_id = snapshot_id; } + + public Integer getItem_id() { + return item_id; + } + + public void setItem_id(Integer item_id) { + this.item_id = item_id; + } + + 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_describe() { + return goods_describe; + } + + public void setGoods_describe(String goods_describe) { + this.goods_describe = goods_describe; + } + + public Integer getGoods_category() { + return goods_category; + } + + public void setGoods_category(Integer goods_category) { + 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 String getSnapshot_time() { + return snapshot_time; + } + + public void setSnapshot_time(String snapshot_time) { + this.snapshot_time = snapshot_time; + } +} 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 9d95cb86030ac92839771881bc1e74bee6074828..da74505610657b016c5da7dc410c3233b1a868a8 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/entity/sf/ApiResultData.java b/back-end_code/src/main/java/com/shop/entity/sf/ApiResultData.java new file mode 100644 index 0000000000000000000000000000000000000000..d48059879c717ccb00ef0a20bedaa78941a9dcfc --- /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 0000000000000000000000000000000000000000..c482673aa3c971c844d0d7861a149bae55911392 --- /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/ConfirmOrder.java b/back-end_code/src/main/java/com/shop/entity/sf/ConfirmOrder.java new file mode 100644 index 0000000000000000000000000000000000000000..c68ce2b7311ff6e9a64776eef5f58278f130e2b1 --- /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(); + } +} 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 0000000000000000000000000000000000000000..160aab3bb65c650eb97eda69244155b5b764dd73 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/entity/sf/ContactInfo.java @@ -0,0 +1,308 @@ +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.getRegion()+address.getDetail(); + 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; + } + + 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\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\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\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\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\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\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\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\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\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\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\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\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\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\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 0000000000000000000000000000000000000000..310f41c27417d4e99acad7ed9f3413d04300d352 --- /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 0000000000000000000000000000000000000000..d31ae7552935658248ed4d10b1f2f5c356cf595d --- /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/Route.java b/back-end_code/src/main/java/com/shop/entity/sf/Route.java new file mode 100644 index 0000000000000000000000000000000000000000..e694a473a3caa9a17208c30150aad39fadc86f11 --- /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 0000000000000000000000000000000000000000..8aea88fec09cb1440b4e167b919ceb9ea1df57e4 --- /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 0000000000000000000000000000000000000000..a9516fbeae7cb5939fa8003a6c22dbc95cdddc62 --- /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 0000000000000000000000000000000000000000..6200243eb184ccd3c7c91ee9c7af93d1aa7bb2e6 --- /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 0000000000000000000000000000000000000000..25e03831e096acded9f0945405b60be5c082b8d7 --- /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 new file mode 100644 index 0000000000000000000000000000000000000000..da369bbbebb6749f2c6b68a25801153947c8a30d --- /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(Long 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.trackingType = "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.toString()); + } else { + sb.append(",\n").append("\t\"trackingNumber\": ").append(trackingNumber.toString()); + } + 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", + }*/ 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 0000000000000000000000000000000000000000..21f17c7077c0ddc21807d49c673ee9832ea378ff --- /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 0000000000000000000000000000000000000000..ec7367208638fdfba348418f97ef7b2cafd9d318 --- /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/AddressMapper.java b/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..5980b82c9ba15015dedfe3255785818f0177de81 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/mapper/AddressMapper.java @@ -0,0 +1,67 @@ +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 username + * @return + */ + Address searchUserSelectedAddress(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); + + /** + *根据username修改Address不为默认地址 + * @param username + * @return + */ + int setUnselected(String username); + + /** + *根据AddressId查询Address + * @param address_id + * @return + */ + Address searchAddressById(int address_id); +} 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 0000000000000000000000000000000000000000..ecb0fe24da626ba72fd41425f543386dd0aa1053 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/mapper/AftApplicationMapper.java @@ -0,0 +1,95 @@ +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); + + /** + * 根据AftApplicationId查询AftApplication + * @param aftApplication_id + * @return + */ + AftApplication searchAftApplicationById(Integer aftApplication_id); + + /** + * 根据order_id查询AftApplication是否存在 + * @param order_id + * @return + */ + AftApplication isAftApplicationById(Long order_id); + + /** + * 买家修改申诉 + * @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); + + /** + * 卖家拒绝申诉 + * @param aftApplication + * @return + */ + int refuseAftApplication(AftApplication aftApplication); + + /** + * 卖家拒绝申诉回退 + * @param aftApplication + * @return + */ + int refuseAftApplicationBack(AftApplication aftApplication); + + +} 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 4805708f26500d3271ec6c4d552d81a444d827e2..3ca4602c05cf5e441a9fe774b7b4d49a4138b389 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/GoodsMapper.java b/back-end_code/src/main/java/com/shop/mapper/GoodsMapper.java index f6601725a2630668102c31a566c2399ee33c6be4..9c715a8f5b25d0c124a7dd07219c6454b48a036e 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/mapper/OrderDetailMapper.java b/back-end_code/src/main/java/com/shop/mapper/OrderDetailMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..2832751f93381f4bc384ce6c4b5380733ce8fc37 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/mapper/OrderDetailMapper.java @@ -0,0 +1,53 @@ +package com.shop.mapper; + +import com.shop.entity.OrderDetail; +import com.shop.entity.Snapshot; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface OrderDetailMapper { + + /** + * 添加订单明细 + * @return + */ + int addOrderDetail(OrderDetail orderDetail); + + /** + *删除订单明细 + * @param orderDetail_id + * @return + */ + Integer deleteOrderDetailByOrderDetailId(Integer orderDetail_id); + + /** + *更新订单明细 + * @param orderDetail + * @return + */ + Integer updateOrderDetail(OrderDetail orderDetail); + + /** + * 根据订单Id查找商品的全部订单明细 + * @param order_id + * @return + */ + List searchOrderDetailByOrderId(Long order_id); + + /** + * 根据订单Id查找商品的最新订单明细 + * @param order_id + * @return + */ + OrderDetail searchNewOrderDetailByOrderId(Long order_id); + + /** + *根据OrderDetailId查询OrderDetail + * @param detail_id + * @return + */ + OrderDetail searchOrderDetailByOrderDetailId(Integer detail_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 7c76d8af2ac21b42f1988bb43b89a5b03bb98f9f..44ba6dcc51661e1948de4d8d0a45d00c0a56382c 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 @@ -11,232 +11,285 @@ import java.util.List; @Repository public interface OrderMapper { + /** - * 查看order表中商品号为item_number的买家列表 - * @param item_id + * 用户下单 + * @param order * @return */ - List searchBuyerlist(String seller_username,int item_id); + Integer addOrder(Order order); /** - * 查看order表中商品号为item_number且正在交易中的的订单信息 - * @param item_id + * 通过订单id查询订单 + * @param order_id * @return */ - Order searchFreezeGoodsBuyer(String seller_username,int item_id); + Order searchOrderByOrderId(Long order_id); /** - * 查看order表中商品意向买家名 + * 根据买家用户名查找所有订单 + * @param buyer_username * @param * @return */ - List searchSellingGoodsBuyerRealname(); + List buyerSearchHistoryOrders(String buyer_username); /** - * 同意意向买家 - * @param order_id + * 根据卖家用户名查找所有订单 + * @param seller_username * @return */ - int agreeOrderwanted(String seller_username,int order_id); + List sellerSearchHistoryOrders(String seller_username); /** - * 取消交易(恢复) - * @param order_id + * 买家查询待支付的订单 + * @param buyer_username * @return */ - int cancelOrder(String seller_username,int order_id); + List buyerSearchUnpaidOrder(String buyer_username); /** - * 通过订单id查询订单 + * 卖家查询待支付的订单 * @param seller_username + * @return + */ + List sellerSearchUnpaidOrder(String seller_username); + + /** + * 买家支付待支付的订单 * @param order_id * @return */ - Order searchOrderByOrderId(String seller_username,int order_id); + Integer buyerPayOrder(Long order_id); /** - * 查询完成订单 - * @param seller_username + * 买家查询待确认的订单 + * @param buyer_username * @return */ - List searchFinishOrder(String seller_username); + List buyerSearchUnconfirmedOrder(String buyer_username); + /** - * 按卖家查询所有订单 + * 卖家查询待确认的订单 * @param seller_username * @return */ - List searchOrdersBySellerUserName(String seller_username); + List sellerSearchUnconfirmedOrder(String seller_username); + /** - * 在Order表中查找已完成交易商品的历史意向买家 + * 卖家确认待确认的订单 * @param seller_username - * @param item_id + * @param order_id * @return */ - List searchHistoryGoodsUnFinishedOrder(String seller_username, int item_id); + Integer sellerConfirmOrder(String seller_username,Long order_id); /** - * 查询交易中订单 - * @param seller_username - * @param page + * 买家查询待备货的订单 + * @param buyer_username * @return */ - List searchDealingOrder(String seller_username,int page); + List buyerSearchUnpickedOrder(String buyer_username); /** - * 修改其余订单状态为关闭交易 + * 卖家查询待备货的订单 * @param seller_username - * @param item_id * @return */ - int updateOtherOrders(String seller_username,int item_id); - + List sellerSearchUnpickedOrder(String seller_username); /** - * 根据item_id(商品ID)有意向的购买者下单 - * @param order + * 卖家完成备货订单 + * @param order_id * @return */ - int addToOrderWanted(Order order); + Integer sellerPickOrder(String seller_username,Long order_id); /** - * 根据用户名查看历史购买记录 + * 买家查询待发货的订单 * @param buyer_username - * @param * @return */ - List searchFinishOrderByBuyerName(String buyer_username); + List buyerSearchUndeliveredOrder(String buyer_username); /** - * 买家下单 + * 卖家查询待发货的订单 + * @param seller_username + * @return + */ + List sellerSearchUndeliveredOrder(String seller_username); + + /** + * 买家修改待发货的订单收货人信息 * @param order * @return */ - int addOrder(Order order); + Integer buyerUpdateUndeliveredOrder(Order order); /** - * 买家查询待确认的订单 + * 卖家发货订单 + * @param order_id + * @return + */ + Integer sellerDeliverOrder(String seller_username,Long order_id); + + /** + * 买家查询待收货的订单 * @param buyer_username * @return */ - List buyerSearchUnconfirmedOrder(String buyer_username); + List buyerSearchUnarrivedOrder(String buyer_username); /** - * 卖家查询待确认的订单 + * 卖家查询待收货的订单 * @param seller_username * @return */ - List sellerSearchUnconfirmedOrder(String seller_username); + List sellerSearchUnarrivedOrder(String seller_username); /** - * 卖家确认待确认的订单 + * 买家根据order_id(订单ID)完成交易 * @param order_id + * @param buyer_username * @return */ - int confirmOrder(String seller_username,int order_id); + Integer buyerFinishOrder(String buyer_username,Long order_id,String finish_time); /** - * 买家查询待备货的订单 + * 买家查询已签收的订单 * @param buyer_username * @return */ - List buyerSearchUnpickOrder(String buyer_username); + List buyerSearchFinishOrder(String buyer_username); /** - * 卖家查询待备货的订单 + * 卖家查询已签收的订单 * @param seller_username * @return */ - List sellerSearchUnpickOrder(String seller_username); + List sellerSearchFinishOrder(String seller_username); /** - * 卖家完成备货订单 + * 买家根据order_id(订单ID)取消订单 + * @param buyer_username * @param order_id + * @param finish_time * @return */ - int pickOrder(String seller_username,int order_id); + Integer buyerCancelOrder(String buyer_username, Long order_id,String finish_time); /** - * 买家查询待发货的订单 - * @param buyer_username + * 卖家根据order_id(订单ID)取消订单 + * @param seller_username + * @param order_id + * @param finish_time * @return */ - List buyerSearchUndeliverOrder(String buyer_username); + Integer sellerCancelOrder(String seller_username, Long order_id,String finish_time); /** - * 买家修改待发货的订单收货人信息 - * @param order + * 买家查询已取消的订单 + * @param buyer_username * @return */ - int buyerUpdateUndeliverOrder(Order order); + List buyerSearchCancelOrder(String buyer_username); /** - * 卖家查询待发货的订单 + * 卖家查询已取消的订单 * @param seller_username * @return */ - List sellerSearchUndeliverOrder(String seller_username); + List sellerSearchCancelOrder(String seller_username); /** - * 卖家发货订单 + * 买家根据order_id(订单ID)申请订单售后 + * @param buyer_username * @param order_id * @return */ - int deliverOrder(String seller_username,int order_id); + Integer buyerSubmitAftApplication(String buyer_username, Long order_id); /** - * 卖家查询待收货的订单 - * @param seller_username + * 买家查询售后处理中的订单 + * @param buyer_username * @return */ - List sellerSearchUnfinishOrder(String seller_username); + List buyerSearchDealingOrder(String buyer_username); /** - * 买家根据order_id(订单ID)完成交易 - * @param order_id - * @param buyer_username + * 卖家查询售后处理中的订单 + * @param seller_username * @return */ - int finishOrder(String buyer_username,int order_id,String finish_time); + List sellerSearchDealingOrder(String seller_username); /** - * 卖家根据order_id(订单ID)取消订单 - * @param order_id + * 卖家根据order_id(订单ID)同意订单退款 * @param seller_username + * @param order_id * @return */ - int sellerCancelOrder(int order_id,String seller_username); + Integer sellerAcceptAftApplication(String seller_username, Long order_id,String finish_time); /** - * 买家根据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 sellerRefuseAftApplication(String seller_username, Long order_id,String finish_time); /** - * 买家查询未完成的订单 + * 买家查询售后处理的订单 * @param buyer_username * @return */ - List buyerSearchUnfinishOrder(String buyer_username); + List buyerSearchAfterOrder(String buyer_username); /** - * 买家查询已完成的订单 - * @param buyer_username + * 卖家查询售后处理的订单 + * @param seller_username * @return */ - List buyerSearchFinishOrder(String buyer_username); + List sellerSearchAfterOrder(String seller_username); /** - * 卖家查询已完成的订单 + * 卖家查询同意退款的订单 * @param seller_username * @return */ - List sellerSearchFinishOrder(String seller_username); + List sellerSearchAfterOkrOrder(String seller_username); + /** + * 卖家查询拒绝退款的订单 + * @param seller_username + * @return + */ + 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(Long order_id,String seller_username,Float buy_amount); + /** + *根据OrderId设置PackageNumber + * @param order_id + * @param seller_username + * @param package_number + * @return + */ + Integer setPackageNumberByOrderId(Long order_id,String seller_username,String package_number); } diff --git a/back-end_code/src/main/java/com/shop/mapper/SnapshotMapper.java b/back-end_code/src/main/java/com/shop/mapper/SnapshotMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..5ff56c29d7f3ec929d7c884e7359097522333c4e --- /dev/null +++ b/back-end_code/src/main/java/com/shop/mapper/SnapshotMapper.java @@ -0,0 +1,51 @@ +package com.shop.mapper; + +import com.shop.entity.Snapshot; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface SnapshotMapper { + + /** + * 添加交易快照 + * @return + */ + int addSnapshot(Snapshot snapshot); + + /** + * 删除交易快照 + * @param snapshot_id + * @return + */ + Integer deleteSnapshotBySnapshotId(Integer snapshot_id); + + /** + * 更新交易快照 + * @param snapshot + * @return + */ + Integer updateSnapshot(Snapshot snapshot); + + /** + * 根据商品Id查找商品的全部交易快照 + * @param item_id + * @return + */ + List searchSnapshotByGoodId(Integer item_id); + + /** + * 根据商品Id查找商品的最新交易快照 + * @param item_id + * @return + */ + Snapshot searchNewSnapshotByGoodId(Integer item_id); + + /** + *根据SnapshotId查询Snapshot + * @param snapshot_id + * @return + */ + Snapshot searchSnapshotBySnapshotId(Integer snapshot_id); +} 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 0000000000000000000000000000000000000000..035573ed6d7dfd261f02d745b0688d0527402096 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/AddressService.java @@ -0,0 +1,23 @@ +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 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 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);} +} 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 0000000000000000000000000000000000000000..9d05db4d66758d9a4928d4d2818c6a88c13829ca --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/AftApplicationService.java @@ -0,0 +1,31 @@ +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 AftApplication searchAftApplicationById(Integer aftApplication_id){return aftApplicationMapper.searchAftApplicationById(aftApplication_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);} + public int acceptAftApplicationBack(AftApplication aftApplication){return aftApplicationMapper.acceptAftApplication(aftApplication);} + 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/java/com/shop/service/AlipayService.java b/back-end_code/src/main/java/com/shop/service/AlipayService.java new file mode 100644 index 0000000000000000000000000000000000000000..8f139ba1f7cc59a309132d1f69cf337ff361ef28 --- /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,Float 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 0000000000000000000000000000000000000000..f00ff5d9543fc35c06bd27f67975fd08c88c8b65 --- /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, Float 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/service/GOService.java b/back-end_code/src/main/java/com/shop/service/GOService.java index 2597dd755e80bb238dc4beac80b85a2af16c8dab..28e5c14c47e0d3cedda67d14ce09a2253dcdcb04 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/GoodsService.java b/back-end_code/src/main/java/com/shop/service/GoodsService.java index ab792469d575357f5ce048d40bcfaa931f9d9d65..134dcdba3e6008ec1b3531b6b06241a0e551bf07 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; @@ -20,6 +21,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/java/com/shop/service/OrderDetailService.java b/back-end_code/src/main/java/com/shop/service/OrderDetailService.java new file mode 100644 index 0000000000000000000000000000000000000000..a508953b1f20fea16f0560735a18f2a6fec48a7e --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/OrderDetailService.java @@ -0,0 +1,31 @@ +package com.shop.service; + +import com.shop.entity.Goods; +import com.shop.entity.OrderDetail; +import com.shop.entity.Snapshot; +import com.shop.mapper.OrderDetailMapper; +import com.shop.mapper.SnapshotMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +@Service +public class OrderDetailService { + @Autowired + private OrderDetailMapper orderDetailMapper; + @Autowired + private SnapshotMapper snapshotMapper; + + 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(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 15559993a36569ca03e69c9ee427509c352d49e1..089be4b606385bdf9aa03cea6a2e81e65c837dd9 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 @@ -1,15 +1,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 com.sun.org.apache.xpath.internal.operations.Or; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.format.annotation.DateTimeFormat; import org.springframework.stereotype.Service; -import java.util.ArrayList; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @@ -18,19 +15,15 @@ public class OrderService { @Autowired private OrderMapper orderMapper; - @Autowired - private GoodsMapper goodsMapper; - @Autowired - private GoodsService goodsService; public static String hideCardNo(String str) { - int length = str.length(); - int beforeLength = 1; - int afterLength = 0; + Integer length = str.length(); + Integer beforeLength = 1; + Integer afterLength = 0; //替换字符串,当前使用“*” String replaceSymbol = "*"; StringBuffer sb = new StringBuffer(); - for(int i=0; i<4; i++) { + for(Integer i=0; i<4; i++) { if(i == 0) { sb.append(str.charAt(i)); } else { @@ -40,65 +33,42 @@ public class OrderService { return sb.toString(); } - public List searchBuyerlist(String seller_username,int item_id){ return orderMapper.searchBuyerlist(seller_username,item_id);} - public Order searchFreezeGoodsBuyer(String seller_username,int item_id){ return orderMapper.searchFreezeGoodsBuyer(seller_username,item_id);} - 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); - 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(){ - List Strings = new ArrayList<>(); - List orderList = orderMapper.searchSellingGoodsBuyerRealname(); - String str; - for (int i=0;i searchHistoryGoodsUnFinishedOrder(String seller_username,int item_id){ - return orderMapper.searchHistoryGoodsUnFinishedOrder(seller_username,item_id); - } - 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);} - 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(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 Integer addOrder(Order order){return orderMapper.addOrder(order);} + 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(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 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 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 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,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,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,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,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, 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()));}; + 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(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/RedisService.java b/back-end_code/src/main/java/com/shop/service/RedisService.java new file mode 100644 index 0000000000000000000000000000000000000000..fe02dc5e6b45362cd0a45d1988146f553be0f2da --- /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/SFService.java b/back-end_code/src/main/java/com/shop/service/SFService.java new file mode 100644 index 0000000000000000000000000000000000000000..f41aa5c7fe4b9aeb4f4113ea964db1e39aef37d4 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/SFService.java @@ -0,0 +1,68 @@ +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.*; +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; + +@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 { + 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(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_SEARCH_ROUTES(String package_number) throws UnsupportedEncodingException, ParseException { + String request = new SearchOrder(package_number).toString(); + JSONObject temp = SFService.this.tool(Thread.currentThread().getStackTrace()[1].getMethodName(),request); + return new RoutesResultData(temp); + } + 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); + } + 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/service/SnapshotService.java b/back-end_code/src/main/java/com/shop/service/SnapshotService.java new file mode 100644 index 0000000000000000000000000000000000000000..bcc318811df3166047e37f3b8400e893b1bdbd2a --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/SnapshotService.java @@ -0,0 +1,27 @@ +package com.shop.service; + +import com.shop.entity.Goods; +import com.shop.entity.Snapshot; +import com.shop.mapper.SnapshotMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +@Service +public class SnapshotService { + @Autowired + private SnapshotMapper snapshotMapper; + + public Integer addSnapshot(Goods goods){ + Snapshot snapshot = new Snapshot(goods); + snapshot.setSnapshot_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + return snapshotMapper.addSnapshot(snapshot); } + public Integer deleteSnapshotBySnapshotId(Integer snapshot_id){return snapshotMapper.deleteSnapshotBySnapshotId(snapshot_id);} + public Integer updateSnapshot(Snapshot snapshot){return snapshotMapper.updateSnapshot(snapshot);} + public List searchSnapshotByGoodId(Integer item_id){ return snapshotMapper.searchSnapshotByGoodId(item_id); } + public Snapshot searchNewSnapshotByGoodId(Integer item_id){ return snapshotMapper.searchNewSnapshotByGoodId(item_id); } + public Snapshot searchSnapshotBySnapshotId(Integer snapshot_id){return snapshotMapper.searchSnapshotBySnapshotId(snapshot_id);} +} 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 0000000000000000000000000000000000000000..f2a4b34acbfb04b68ad97dbb3f4fdec79134d43b --- /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 0000000000000000000000000000000000000000..81e0faf5dcc503243ef712c3051aa43244e3f1d7 --- /dev/null +++ b/back-end_code/src/main/java/com/shop/service/UnionPaymentServiceImpl.java @@ -0,0 +1,490 @@ +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.beans.factory.annotation.Autowired; +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 { + + @Autowired + OrderService orderService; + @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://www.baidu.com"; + + + /** + * 支付 + * @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 交易成功 + orderService.buyerPayOrder(Long.valueOf(orderId)); + //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前台接收报文返回开始"); + System.out.println("走到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); + try { + System.out.println("走到successRedict了"); + request.getRequestDispatcher(redictUrl).forward(request,response); + } catch (ServletException e) { + e.printStackTrace(); + } + } + + + //---------------------------------------------------- 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/service/UserService.java b/back-end_code/src/main/java/com/shop/service/UserService.java index 4909617fef31430d68ed2982b78f3c0825fe0eb6..31afb33f3508d6a8d0f87de1d287b882c9e98c34 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/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 0000000000000000000000000000000000000000..483481971941ee9826c36c233f09b2108437bffe --- /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/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 Binary files /dev/null and b/back-end_code/src/main/java/com/shop/sflib/SF-CSIM.jar differ 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 Binary files /dev/null and b/back-end_code/src/main/java/com/shop/sflib/commons-codec-1.9.jar differ 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 Binary files /dev/null and b/back-end_code/src/main/java/com/shop/sflib/commons-logging-1.2.jar differ 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 Binary files /dev/null and b/back-end_code/src/main/java/com/shop/sflib/httpclient-4.3.4.jar differ 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 Binary files /dev/null and b/back-end_code/src/main/java/com/shop/sflib/httpcore-4.3.2.jar differ 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 Binary files /dev/null and b/back-end_code/src/main/java/com/shop/sflib/slf4j-api-1.7.7.jar differ 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 be249d6074a9c660f57102d5e87a08ce4177c4de..0ba20e6b3b79d1398e8c2de322510549d0182850 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())); 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 0000000000000000000000000000000000000000..7b6775da144e1057d2f0424075e93e07e88bf169 --- /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("序号"+(key+1)+""); + } + 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("