From 6c950f0f18f68ac1acf929101cbf8123842c2deb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B1=86=E6=B5=86=E6=B2=B9=E6=9D=A1?= <1685368363@qq.com>
Date: Sun, 28 Oct 2018 23:01:12 +0800
Subject: [PATCH] =?UTF-8?q?!1=20=E8=AE=A2=E5=8D=95=E6=A8=A1=E5=9D=97?=
=?UTF-8?q?=E5=90=88=E5=B9=B6=20Merge=20pull=20request=20!1=20from=20?=
=?UTF-8?q?=E8=B1=86=E6=B5=86=E6=B2=B9=E6=9D=A1/dev1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 13 +-
.../controller/portal/OrderController.java | 28 +-
.../mark/controller/portal/PayController.java | 23 +-
.../controller/portal/ShippingController.java | 56 +-
src/main/java/com/mark/dao/CartMapper.java | 13 +
src/main/java/com/mark/dao/OrderMapper.java | 3 +
.../mark/exception/Campuso2oException.java | 3 +
.../java/com/mark/from/ShippingAddFrom.java | 47 ++
.../java/com/mark/from/ShippingEditFrom.java | 51 ++
.../java/com/mark/from/UserUpdateFrom.java | 2 +-
src/main/java/com/mark/pojo/OrderItem.java | 243 ++------
.../java/com/mark/service/IOrderService.java | 18 +
.../java/com/mark/service/IPayService.java | 7 +
.../com/mark/service/IShippingService.java | 25 +
.../mark/service/impl/OrderServiceImpl.java | 570 ++++++++++--------
.../com/mark/service/impl/PayServiceImpl.java | 69 ++-
.../service/impl/ShippingServiceImpl.java | 25 +-
src/main/java/com/mark/util/FileUtil.java | 34 ++
.../java/com/mark/util/OSSClientUtil.java | 10 +-
src/main/java/com/mark/vo/OrderItemVo.java | 144 +++--
src/main/java/com/mark/vo/OrderProductVo.java | 13 +-
src/main/java/com/mark/vo/OrderVo.java | 1 -
src/main/java/com/mark/vo/ShippingVo.java | 4 +-
src/main/resources.dev/campus.properties | 2 +-
src/main/resources/mappers/CartMapper.xml | 10 +
.../java/com/mark/dao/CartMapperTest.java | 11 +
.../java/com/mark/dao/OrderMapperTest.java | 2 +
.../service/impl/OrderServiceImplTest.java | 10 +-
28 files changed, 883 insertions(+), 554 deletions(-)
create mode 100644 src/main/java/com/mark/from/ShippingAddFrom.java
create mode 100644 src/main/java/com/mark/from/ShippingEditFrom.java
create mode 100644 src/main/java/com/mark/util/FileUtil.java
diff --git a/pom.xml b/pom.xml
index a5ffd50..6a3c156 100644
--- a/pom.xml
+++ b/pom.xml
@@ -133,8 +133,6 @@
2.0.1
-
-
commons-codec
@@ -146,11 +144,7 @@
commons-configuration
1.10
-
- commons-lang
- commons-lang
- 2.6
-
+
commons-logging
commons-logging
@@ -161,6 +155,11 @@
core
2.1
+
+ com.google.code.gson
+ gson
+ 2.6.2
+
org.hamcrest
hamcrest-core
diff --git a/src/main/java/com/mark/controller/portal/OrderController.java b/src/main/java/com/mark/controller/portal/OrderController.java
index d7388be..ec16967 100644
--- a/src/main/java/com/mark/controller/portal/OrderController.java
+++ b/src/main/java/com/mark/controller/portal/OrderController.java
@@ -27,8 +27,12 @@ public class OrderController {
@Autowired
private CurrentUser currentUser;
- //1.创建订单
- @RequestMapping("create")
+ /**
+ * 1.创建订单
+ * @param shippingId:收货地址id
+ * @return :
+ */
+ @PostMapping(value = "create.do")
@ResponseBody
public ServerResponse create(HttpServletRequest httpServletRequest, Integer shippingId){
ServerResponse response = currentUser.getCurrentUser(httpServletRequest);
@@ -52,8 +56,11 @@ public class OrderController {
return iOrderService.cancelOrder(currentUser.getId(),orderNo);
}
- //3.获取购物车中已经选中的商品详情提交订单时候调用
- @RequestMapping("get_order_cart_product.do")
+ /**
+ * 3.获取购物车中已经选中的商品详情提交订单时候调用
+ * @return :
+ */
+ @PostMapping(value = "get_order_cart_product.do")
@ResponseBody
public ServerResponse getOrderCartProduct(HttpServletRequest httpServletRequest){
ServerResponse response = currentUser.getCurrentUser(httpServletRequest);
@@ -76,10 +83,17 @@ public class OrderController {
return iOrderService.getOrderDetail(currentUser.getId(),orderNo,null);
}
- //5.分页
- @RequestMapping("list.do")
+ /**
+ * 分页查看订单列表
+ * @param pageNum:当前页数
+ * @param pageSize:页面大小
+ * @return :
+ */
@ResponseBody
- public ServerResponse list(HttpServletRequest httpServletRequest, @RequestParam(value = "pageNum",defaultValue = "1") int pageNum, @RequestParam(value = "pageSize",defaultValue = "10") int pageSize){
+ @PostMapping(value = "list.do")
+ public ServerResponse list(HttpServletRequest httpServletRequest,
+ @RequestParam(value = "pageNum",defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize",defaultValue = "10") int pageSize){
ServerResponse response = currentUser.getCurrentUser(httpServletRequest);
if (!response.isSuccess()){
return response;
diff --git a/src/main/java/com/mark/controller/portal/PayController.java b/src/main/java/com/mark/controller/portal/PayController.java
index a365f9c..511c3da 100644
--- a/src/main/java/com/mark/controller/portal/PayController.java
+++ b/src/main/java/com/mark/controller/portal/PayController.java
@@ -11,6 +11,8 @@ import com.mark.pojo.User;
import com.mark.service.IPayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -34,7 +36,7 @@ public class PayController {
@Autowired
private CurrentUser currentUser;
- @RequestMapping("pay")
+ @PostMapping(value = "pay.do")
public ServerResponse pay(HttpServletRequest httpServletRequest, String orderNo, HttpServletRequest request){
ServerResponse response = currentUser.getCurrentUser(httpServletRequest);
if (!response.isSuccess()){
@@ -45,8 +47,13 @@ public class PayController {
return iPayService.pay(orderNo,currentUser.getId(),path);
}
- //返回的是一个字符串
- @RequestMapping("alipay_callback.do")
+
+ /**
+ * 支付回调
+ * @param request
+ * @return
+ */
+ @RequestMapping(value = "alipay_callback.do")
public Object alipayCallback(HttpServletRequest request){
Map params = Maps.newHashMap();
Map requestParams = request.getParameterMap();
@@ -81,8 +88,14 @@ public class PayController {
}
- //检查是否付款成功
- @RequestMapping("query_order_pay_status.do")
+ /**
+ * 前端校验是够支付成功
+ * 检查是否付款成功
+ * @param httpServletRequest:
+ * @param orderNo:订单号
+ * @return:
+ */
+ @PostMapping(value = "query_order_pay_status.do")
public ServerResponse queryOrderPayStatus(HttpServletRequest httpServletRequest, String orderNo){
ServerResponse response = currentUser.getCurrentUser(httpServletRequest);
diff --git a/src/main/java/com/mark/controller/portal/ShippingController.java b/src/main/java/com/mark/controller/portal/ShippingController.java
index 4e4e755..b24f645 100644
--- a/src/main/java/com/mark/controller/portal/ShippingController.java
+++ b/src/main/java/com/mark/controller/portal/ShippingController.java
@@ -2,13 +2,19 @@ package com.mark.controller.portal;
import com.mark.common.ServerResponse;
import com.mark.controller.common.CurrentUser;
+import com.mark.from.ShippingAddFrom;
+import com.mark.from.ShippingEditFrom;
import com.mark.pojo.Shipping;
import com.mark.pojo.User;
import com.mark.service.IShippingService;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import java.util.Objects;
/**
* @Description: 地址模块控制器
@@ -25,19 +31,36 @@ public class ShippingController {
@Autowired
private CurrentUser currentUser;
- //1.用户添加收货地址
+
+ /**
+ * 1.用户添加收货地址
+ *
+ * @param shippingAddFrom :新增收货地址的表单
+ * @param bindingResult:验证结果
+ * @return
+ */
@PostMapping(value = "add.do")
- public ServerResponse add(HttpServletRequest httpServletRequest, Shipping shipping){
+ public ServerResponse add(@Valid ShippingAddFrom shippingAddFrom ,BindingResult bindingResult ,
+ HttpServletRequest httpServletRequest){
+ if (bindingResult.hasErrors()) {
+ return ServerResponse.createByErrorMessage(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+ }
ServerResponse response = currentUser.getCurrentUser(httpServletRequest);
if (!response.isSuccess()){
return response;
}
User currentUser = (User) response.getData();
+ Shipping shipping = new Shipping();
+ BeanUtils.copyProperties(shippingAddFrom,shipping);
return iShippingService.addShipping(currentUser.getId(), shipping);
}
- //2.用户删除收货地址
- @GetMapping(value = "delete.do")
+ /**
+ * 2.用户删除收货地址
+ * @param shippingId:收货地址id
+ * @return
+ */
+ @PostMapping(value = "delete.do")
public ServerResponse delete(HttpServletRequest httpServletRequest,Integer shippingId){
ServerResponse response = currentUser.getCurrentUser(httpServletRequest);
if (!response.isSuccess()){
@@ -47,13 +70,24 @@ public class ShippingController {
return iShippingService.deleteShipping(currentUser.getId(), shippingId);
}
- //3.用户更新收货地址
+ /**
+ * 3.用户编辑收货地址
+ * @param shippingEditFrom:编辑收货地址的表单
+ * @param bindingResult:验证的结果
+ * @return
+ */
@PostMapping(value = "update.do")
- public ServerResponse update(HttpServletRequest httpServletRequest,Shipping shipping){
+ public ServerResponse update(@Valid ShippingEditFrom shippingEditFrom , BindingResult bindingResult ,
+ HttpServletRequest httpServletRequest){
+ if (bindingResult.hasErrors()) {
+ return ServerResponse.createByErrorMessage(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+ }
ServerResponse response = currentUser.getCurrentUser(httpServletRequest);
if (!response.isSuccess()){
return response;
}
+ Shipping shipping = new Shipping();
+ BeanUtils.copyProperties(shippingEditFrom,shipping);
User currentUser = (User) response.getData();
return iShippingService.updateShipping(currentUser.getId(), shipping);
}
@@ -69,9 +103,13 @@ public class ShippingController {
return iShippingService.selectShipping(currentUser.getId(), shippingId);
}
-
- //5.分页查看
- @GetMapping(value = "list.do")
+ /**
+ * 5.分页查看
+ * @param pageNum:页数
+ * @param pageSize:页面大小
+ * @return
+ */
+ @PostMapping(value = "list.do")
public ServerResponse list(@RequestParam(value = "pageNum",defaultValue = "1") int pageNum,
@RequestParam(value = "pageSize",defaultValue = "10")int pageSize,
HttpServletRequest httpServletRequest){
diff --git a/src/main/java/com/mark/dao/CartMapper.java b/src/main/java/com/mark/dao/CartMapper.java
index 354fd28..2f78527 100644
--- a/src/main/java/com/mark/dao/CartMapper.java
+++ b/src/main/java/com/mark/dao/CartMapper.java
@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
+import java.util.Map;
/**
* @Description: 购物车dao接口,用于购物车的数据库操作
@@ -16,6 +17,11 @@ import java.util.List;
@Mapper
public interface CartMapper {
+ /**
+ * 新增
+ * @param record
+ * @return
+ */
int insert(Cart record);
int insertSelective(Cart record);
@@ -86,4 +92,11 @@ public interface CartMapper {
*/
List selectCheckedCartByUserId(@Param("currentUserId") Integer currentUserId,
@Param("sellerId") Integer sellerId);
+
+ /**
+ * 查找购物车中当前用户选中商品的对应的sellerId
+ * @param currentUserId:当前用户id
+ * @return
+ */
+ List selectSellerIds(Integer currentUserId);
}
\ No newline at end of file
diff --git a/src/main/java/com/mark/dao/OrderMapper.java b/src/main/java/com/mark/dao/OrderMapper.java
index c799f7e..59d2b66 100644
--- a/src/main/java/com/mark/dao/OrderMapper.java
+++ b/src/main/java/com/mark/dao/OrderMapper.java
@@ -1,10 +1,12 @@
package com.mark.dao;
import com.mark.pojo.Order;
+import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
+import java.util.Map;
/**
@@ -110,4 +112,5 @@ public interface OrderMapper {
@Param("date") String date);
+
}
\ No newline at end of file
diff --git a/src/main/java/com/mark/exception/Campuso2oException.java b/src/main/java/com/mark/exception/Campuso2oException.java
index 422c1b6..215369f 100644
--- a/src/main/java/com/mark/exception/Campuso2oException.java
+++ b/src/main/java/com/mark/exception/Campuso2oException.java
@@ -8,6 +8,9 @@ package com.mark.exception;
* @Copyright : 豆浆油条个人非正式工作室
*/
public class Campuso2oException extends RuntimeException{
+ public Campuso2oException(String origin){
+ super("{"+origin+"}发生了异常:");
+ }
public Campuso2oException(String origin,Exception ex){
super("{"+origin+"}发生了异常:"+parseErrMsg(ex));
diff --git a/src/main/java/com/mark/from/ShippingAddFrom.java b/src/main/java/com/mark/from/ShippingAddFrom.java
new file mode 100644
index 0000000..bace2c3
--- /dev/null
+++ b/src/main/java/com/mark/from/ShippingAddFrom.java
@@ -0,0 +1,47 @@
+package com.mark.from;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
+
+/**
+ * @Description: 新增收货时的验证表单
+ * @Author: Kingsley
+ * @CreateDate: 2018/10/23 23:07
+ * @Version: 2.0
+ * @Copyright : 豆浆油条个人非正式工作室
+ */
+@Data
+@ApiModel(value = "收货地址新增表单")
+public class ShippingAddFrom {
+ private static final String PHONE_REGEXP = "^(((13[0-9])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8})|(0\\d{2}-\\d{8})|(0\\d{3}-\\d{7})$";
+
+ @ApiModelProperty(value = "收件人名名称",required = true)
+ @NotBlank(message = "收件人名称必填")
+ private String receiverName;
+
+ @ApiModelProperty(value = "收件人联系电话", required = true)
+ @NotBlank(message = "收件人联系电话必填")
+ @Pattern(regexp = PHONE_REGEXP,message = "手机号格式不正确(13位有效数字)")
+ private String receiverPhone;
+
+ @ApiModelProperty(value = "省份",required = true)
+ @NotBlank(message = "省份不能为空")
+ private String receiverProvince;
+
+ @ApiModelProperty(value = "城市",required = true)
+ @NotBlank(message = "城市不能为空")
+ private String receiverCity;
+
+ @ApiModelProperty(value = "详细地址(具体到门牌号)",required = true)
+ @NotBlank(message = "详细地址不能为空")
+ private String receiverAddress;
+
+ @ApiModelProperty(value = "邮政编码",required = true)
+ @NotBlank(message = "邮政编码不能为空")
+ private String receiverZip;
+
+}
diff --git a/src/main/java/com/mark/from/ShippingEditFrom.java b/src/main/java/com/mark/from/ShippingEditFrom.java
new file mode 100644
index 0000000..3f03f14
--- /dev/null
+++ b/src/main/java/com/mark/from/ShippingEditFrom.java
@@ -0,0 +1,51 @@
+package com.mark.from;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+
+/**
+ * @Description:
+ * @Author: Kingsley
+ * @CreateDate: 2018/10/24 22:53
+ * @Version: 2.0
+ * @Copyright : 豆浆油条个人非正式工作室
+ */
+@Data
+@ApiModel(value = "收货地址新增表单")
+public class ShippingEditFrom {
+ private static final String PHONE_REGEXP = "^(((13[0-9])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8})|(0\\d{2}-\\d{8})|(0\\d{3}-\\d{7})$";
+
+ @ApiModelProperty(value = "收货地址id",required = true)
+ @NotNull
+ private Integer id;
+
+ @ApiModelProperty(value = "收件人名名称",required = true)
+ @NotBlank(message = "收件人名称必填")
+ private String receiverName;
+
+ @ApiModelProperty(value = "收件人联系电话", required = true)
+ @NotBlank(message = "收件人联系电话必填")
+ @Pattern(regexp = PHONE_REGEXP,message = "手机号格式不正确(13位有效数字)")
+ private String receiverPhone;
+
+ @ApiModelProperty(value = "省份",required = true)
+ @NotBlank(message = "省份不能为空")
+ private String receiverProvince;
+
+ @ApiModelProperty(value = "城市",required = true)
+ @NotBlank(message = "城市不能为空")
+ private String receiverCity;
+
+ @ApiModelProperty(value = "详细地址(具体到门牌号)",required = true)
+ @NotBlank(message = "详细地址不能为空")
+ private String receiverAddress;
+
+ @ApiModelProperty(value = "邮政编码",required = true)
+ @NotBlank(message = "邮政编码不能为空")
+ private String receiverZip;
+}
diff --git a/src/main/java/com/mark/from/UserUpdateFrom.java b/src/main/java/com/mark/from/UserUpdateFrom.java
index 01753ad..da26709 100644
--- a/src/main/java/com/mark/from/UserUpdateFrom.java
+++ b/src/main/java/com/mark/from/UserUpdateFrom.java
@@ -36,7 +36,7 @@ public class UserUpdateFrom {
@ApiModelProperty(value = "手机号码")
@NotBlank(message = "手机必填")
- @Pattern(regexp = PHONE_REGEXP)
+ @Pattern(regexp = PHONE_REGEXP,message = "手机号格式不正确(13位有效数字)")
private String phone;
@ApiModelProperty(value = "问题")
diff --git a/src/main/java/com/mark/pojo/OrderItem.java b/src/main/java/com/mark/pojo/OrderItem.java
index 994137f..3ddae30 100644
--- a/src/main/java/com/mark/pojo/OrderItem.java
+++ b/src/main/java/com/mark/pojo/OrderItem.java
@@ -1,5 +1,10 @@
package com.mark.pojo;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
import java.math.BigDecimal;
import java.util.Date;
/**
@@ -9,220 +14,104 @@ import java.util.Date;
* @Version: 2.0
* @Copyright : 豆浆油条个人非正式工作室
*/
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
public class OrderItem {
+ /**
+ * 订单子明细id
+ */
private Integer id;
+ /**
+ * 用户id
+ */
private Integer userId;
+ /**
+ * 订单号
+ */
private Long orderNo;
+ /**
+ * 商品id(尚用不到)
+ */
private Integer shopId;
+ /**
+ * 店铺名称
+ */
private String shopName;
+ /**
+ * 商品id
+ */
private Integer productId;
+ /**
+ * 商品名称
+ */
private String productName;
+ /**
+ * 商品主图
+ */
private String productImg;
+ /**
+ * 当前单价
+ */
private BigDecimal currentUnitPrice;
+ /**
+ * 数量
+ */
private Integer quantity;
+ /**
+ * 总价
+ */
private BigDecimal totalPrice;
+ /**
+ * 创建时间
+ */
private Date createTime;
+ /**
+ * 最后一次更新时间
+ */
private Date lastEditTime;
+ /***
+ * 状态
+ */
private Integer enableStatus;
+ /**
+ * 支付时间
+ */
private Date paymentTime;
+ /**
+ * 发货时间
+ */
private Date sendTime;
+ /**
+ * 结束时间
+ */
private Date endTime;
+ /**
+ * 关闭时间
+ */
private Date closeTime;
+ /**
+ * 卖家id
+ */
private Integer sellerId;
- public OrderItem(Integer id, Integer userId, Long orderNo, Integer shopId, String shopName, Integer productId, String productName, String productImg, BigDecimal currentUnitPrice, Integer quantity, BigDecimal totalPrice, Date createTime, Date lastEditTime, Integer enableStatus, Date paymentTime, Date sendTime, Date endTime, Date closeTime, Integer sellerId) {
- this.id = id;
- this.userId = userId;
- this.orderNo = orderNo;
- this.shopId = shopId;
- this.shopName = shopName;
- this.productId = productId;
- this.productName = productName;
- this.productImg = productImg;
- this.currentUnitPrice = currentUnitPrice;
- this.quantity = quantity;
- this.totalPrice = totalPrice;
- this.createTime = createTime;
- this.lastEditTime = lastEditTime;
- this.enableStatus = enableStatus;
- this.paymentTime = paymentTime;
- this.sendTime = sendTime;
- this.endTime = endTime;
- this.closeTime = closeTime;
- this.sellerId = sellerId;
- }
-
- public OrderItem() {
- super();
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public Integer getUserId() {
- return userId;
- }
-
- public void setUserId(Integer userId) {
- this.userId = userId;
- }
-
- public Long getOrderNo() {
- return orderNo;
- }
-
- public void setOrderNo(Long orderNo) {
- this.orderNo = orderNo;
- }
-
- public Integer getShopId() {
- return shopId;
- }
-
- public void setShopId(Integer shopId) {
- this.shopId = shopId;
- }
-
- public String getShopName() {
- return shopName;
- }
-
- public void setShopName(String shopName) {
- this.shopName = shopName == null ? null : shopName.trim();
- }
-
- public Integer getProductId() {
- return productId;
- }
-
- public void setProductId(Integer productId) {
- this.productId = productId;
- }
-
- public String getProductName() {
- return productName;
- }
-
- public void setProductName(String productName) {
- this.productName = productName == null ? null : productName.trim();
- }
-
- public String getProductImg() {
- return productImg;
- }
-
- public void setProductImg(String productImg) {
- this.productImg = productImg == null ? null : productImg.trim();
- }
-
- public BigDecimal getCurrentUnitPrice() {
- return currentUnitPrice;
- }
-
- public void setCurrentUnitPrice(BigDecimal currentUnitPrice) {
- this.currentUnitPrice = currentUnitPrice;
- }
-
- public Integer getQuantity() {
- return quantity;
- }
-
- public void setQuantity(Integer quantity) {
- this.quantity = quantity;
- }
-
- public BigDecimal getTotalPrice() {
- return totalPrice;
- }
-
- public void setTotalPrice(BigDecimal totalPrice) {
- this.totalPrice = totalPrice;
- }
-
- public Date getCreateTime() {
- return createTime;
- }
-
- public void setCreateTime(Date createTime) {
- this.createTime = createTime;
- }
-
- public Date getLastEditTime() {
- return lastEditTime;
- }
-
- public void setLastEditTime(Date lastEditTime) {
- this.lastEditTime = lastEditTime;
- }
-
- public Integer getEnableStatus() {
- return enableStatus;
- }
-
- public void setEnableStatus(Integer enableStatus) {
- this.enableStatus = enableStatus;
- }
-
- public Date getPaymentTime() {
- return paymentTime;
- }
-
- public void setPaymentTime(Date paymentTime) {
- this.paymentTime = paymentTime;
- }
-
- public Date getSendTime() {
- return sendTime;
- }
-
- public void setSendTime(Date sendTime) {
- this.sendTime = sendTime;
- }
-
- public Date getEndTime() {
- return endTime;
- }
-
- public void setEndTime(Date endTime) {
- this.endTime = endTime;
- }
-
- public Date getCloseTime() {
- return closeTime;
- }
-
- public void setCloseTime(Date closeTime) {
- this.closeTime = closeTime;
- }
-
- public Integer getSellerId() {
- return sellerId;
- }
-
- public void setSellerId(Integer sellerId) {
- this.sellerId = sellerId;
- }
}
\ No newline at end of file
diff --git a/src/main/java/com/mark/service/IOrderService.java b/src/main/java/com/mark/service/IOrderService.java
index 61e3ecb..d672179 100644
--- a/src/main/java/com/mark/service/IOrderService.java
+++ b/src/main/java/com/mark/service/IOrderService.java
@@ -12,14 +12,32 @@ import com.mark.vo.OrderVo;
* @Copyright : 豆浆油条个人非正式工作室
*/
public interface IOrderService {
+ /**
+ * 创建订单
+ * @param currentUserId:当前的用户id
+ * @param shippingId:订单的收货地址id
+ * @return :返回订单列表(根据卖家进行分组)如:订单列表中的商品包含了3个卖家,那么应该返回三个订单号
+ */
ServerResponse createOrder(Integer currentUserId, Integer shippingId);
ServerResponse cancelOrder(Integer currentUserId, Long orderNo);
+ /**
+ * 3.获取购物车中已经选中的商品详情提交订单时候调用
+ * @param currentUserId:当前的用户id
+ * @return :
+ */
ServerResponse getOrderCartProduct(Integer currentUserId);
ServerResponse getOrderDetail(Integer currentUserId, Long orderNo, Integer sellerId);
+ /**
+ * 查看订单列表
+ * @param currentUserId :当前的用户id
+ * @param pageNum:页数
+ * @param pageSize:页面大小
+ * @return :
+ */
ServerResponse getOrderList(Integer currentUserId, int pageNum, int pageSize);
ServerResponse manageList(int pageNum, int pageSize);
diff --git a/src/main/java/com/mark/service/IPayService.java b/src/main/java/com/mark/service/IPayService.java
index 0a1f7c3..4edc71a 100644
--- a/src/main/java/com/mark/service/IPayService.java
+++ b/src/main/java/com/mark/service/IPayService.java
@@ -12,6 +12,13 @@ import java.util.Map;
* @Copyright : 豆浆油条个人非正式工作室
*/
public interface IPayService {
+ /**
+ * 生成支付订单,并且保存支付宝回调生成的二维码
+ * @param orderNo
+ * @param currentUserId
+ * @param path
+ * @return
+ */
ServerResponse pay(String orderNo, Integer currentUserId, String path);
ServerResponse aliCallback(Map params);
diff --git a/src/main/java/com/mark/service/IShippingService.java b/src/main/java/com/mark/service/IShippingService.java
index 54202e6..48f23eb 100644
--- a/src/main/java/com/mark/service/IShippingService.java
+++ b/src/main/java/com/mark/service/IShippingService.java
@@ -11,13 +11,38 @@ import com.mark.pojo.Shipping;
* @Copyright : 豆浆油条个人非正式工作室
*/
public interface IShippingService {
+ /**
+ * 新增收货地址
+ * @param currentUserId:当前用户id
+ * @param shipping:新增的收货地址实例
+ * @return
+ */
ServerResponse addShipping(Integer currentUserId, Shipping shipping);
+ /**
+ * 删除收货地址
+ * @param currentUserId:当前用户id
+ * @param shippingId:地址id
+ * @return
+ */
ServerResponse deleteShipping(Integer currentUserId, Integer shippingId);
+ /**
+ * 更新收货地址
+ * @param currentUserId:当前用户id
+ * @param shipping:待更新的实例
+ * @return
+ */
ServerResponse updateShipping(Integer currentUserId, Shipping shipping);
ServerResponse selectShipping(Integer currentUserId, Integer shippingId);
+ /**
+ * 获取当前用户地收货地址列表
+ * @param currentUserId:当前用户id
+ * @param pageNum:页数大小
+ * @param pageSize:页面大小
+ * @return
+ */
ServerResponse listShipping(Integer currentUserId, int pageNum, int pageSize);
}
diff --git a/src/main/java/com/mark/service/impl/OrderServiceImpl.java b/src/main/java/com/mark/service/impl/OrderServiceImpl.java
index 7d6cae8..9635129 100644
--- a/src/main/java/com/mark/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/mark/service/impl/OrderServiceImpl.java
@@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import com.mark.common.Const;
import com.mark.common.ServerResponse;
import com.mark.dao.*;
@@ -11,6 +12,7 @@ import com.mark.enums.OrderStatusEnum;
import com.mark.enums.PaymentTypeEnum;
import com.mark.enums.ProductStatusEnum;
import com.mark.enums.PropertiesEnum;
+import com.mark.exception.Campuso2oException;
import com.mark.exception.OrderException;
import com.mark.pojo.*;
import com.mark.service.IOrderService;
@@ -29,6 +31,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
+import static com.mark.enums.PropertiesEnum.FTP_SERVICE_HTTP_PREFIX;
+
/**
* @Description: 订单模块业务逻辑实现
* @Author: Mark
@@ -39,6 +43,10 @@ import java.util.*;
@Service("orderServiceImpl")
@Slf4j
public class OrderServiceImpl implements IOrderService {
+ private static final String IMAGES_HOST_URL;
+ static {
+ IMAGES_HOST_URL = PropertiesUtil.getProperty(FTP_SERVICE_HTTP_PREFIX.getPropertiesName());
+ }
@Autowired
private OrderMapper orderMapper;
@Autowired
@@ -52,29 +60,18 @@ public class OrderServiceImpl implements IOrderService {
@Autowired
private UserMapper userMapper;
- //1.创建订单
@Override
+ @SuppressWarnings("unchecked")
+ @Transactional(value = "mySysDataSourceTransactionManager", rollbackFor = Campuso2oException.class)
public ServerResponse createOrder(Integer currentUserId, Integer shippingId) {
try {
- //从购物车获取勾选的数据
- List cartList = cartMapper.selectCheckedCartByUserId(currentUserId, null);
- Map> productMap = Maps.newHashMap();
- for (Cart car : cartList) {
- Product product = productMapper.selectByPrimaryKey(car.getProductId());
- int sellerId = product.getOwnerId();
- if (productMap.containsKey(sellerId)) {
- } else {
- productMap.put(sellerId, null);
- }
- }
- Iterator it = productMap.entrySet().iterator();
-
+ //订单号列表
List orderNumberList = Lists.newArrayList();
- while (it.hasNext()) {
- Map.Entry entry = (Map.Entry) it.next();
- Integer sellerId = (Integer) entry.getKey();
- cartList = cartMapper.selectCheckedCartByUserId(currentUserId, sellerId);
+ //该订单对应的卖家id列表
+ List sellerIds = cartMapper.selectSellerIds(currentUserId);
+ for (int sellerId : sellerIds) {
+ List cartList = cartMapper.selectCheckedCartByUserId(currentUserId, sellerId);
//构建订单明细
ServerResponse response = this.getCartOrderItem(currentUserId, cartList);
if (!response.isSuccess()) {
@@ -83,30 +80,28 @@ public class OrderServiceImpl implements IOrderService {
List orderItemList = (List) response.getData();
//计算总价
BigDecimal payment = this.getOrderTotalPrice(orderItemList);
-
//构建订单实例
Order order = this.assembleOrder(currentUserId, shippingId, payment, sellerId);
-
- if (order == null) {
- return ServerResponse.createByErrorMessage("生成订单错误");
- }
- for (OrderItem orderItem : orderItemList) {//订单子明细添加OrderNo属性,状态属性
+ //订单子明细添加OrderNo属性,状态属性
+ for (OrderItem orderItem : orderItemList) {
orderItem.setOrderNo(order.getOrderNo());
orderItem.setEnableStatus(order.getEnableStatus());
}
- orderItemMapper.batchInsert(orderItemList);
-
- this.reduceProductStock(orderItemList);//生成成功,减少产品的库存
+ int effectNum = orderItemMapper.batchInsert(orderItemList);
+ if (effectNum != orderItemList.size()) {
+ throw new Campuso2oException("批量保存订单子明细异常");
+ }
+ //生成订单成功,减少产品的库存
+ this.reduceProductStock(orderItemList);
//清空一下购物车
this.cleanCart(cartList);
-
//封装返回给前端的Vo
OrderVo orderVo = assembleOrderVo(order, orderItemList);
orderNumberList.add(orderVo.getOrderNo());
}
return ServerResponse.createBySuccess("新建订单成功!!", orderNumberList);
- }catch (Exception e){
- throw new OrderException("createOrder",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new Campuso2oException("新增订单", e);
}
}
@@ -114,125 +109,123 @@ public class OrderServiceImpl implements IOrderService {
@Transactional
@Override
public ServerResponse cancelOrder(Integer currentUserId, Long orderNo) {
- try{
- Order order = orderMapper.selectOrder(currentUserId,orderNo,null);
- if(order ==null){
- return ServerResponse.createByErrorMessage("改用户订单不存在");
+ try {
+ Order order = orderMapper.selectOrder(currentUserId, orderNo, null);
+ if (order == null) {
+ return ServerResponse.createByErrorMessage("改用户订单不存在");
}
- if (order.getEnableStatus() != OrderStatusEnum.NO_PAY.getCode()){
- return ServerResponse.createByErrorMessage("取消清单失败:因为订单已经"+ Const.OrderStatusEnum.codeOf(order.getEnableStatus()).getValue());
+ if (order.getEnableStatus() != OrderStatusEnum.NO_PAY.getCode()) {
+ return ServerResponse.createByErrorMessage("取消清单失败:因为订单已经" + Const.OrderStatusEnum.codeOf(order.getEnableStatus()).getValue());
}
Order updateOrder = new Order();
updateOrder.setId(order.getId());
updateOrder.setEnableStatus(OrderStatusEnum.CANCELED.getCode());
updateOrder.setCloseTime(new Date()); //设置关闭时间
int rowCount = orderMapper.updateByPrimaryKeySelective(updateOrder);
- if (rowCount > 0){
+ if (rowCount > 0) {
return ServerResponse.createBySuccessMessage("取消订单成功");
}
return ServerResponse.createByErrorMessage("取消订单失败");
- }catch (Exception e){
- throw new OrderException("cancelOrder",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("cancelOrder", e.getClass() + e.getMessage());
}
}
- //3.获取购物车中的商品
@Override
+ @SuppressWarnings("unchecked")
public ServerResponse getOrderCartProduct(Integer currentUserId) {
- try{
- List cartList = cartMapper.selectCheckedCartByUserId(currentUserId,null);
- ServerResponse response = this.getCartOrderItem(currentUserId,cartList);
- if(!response.isSuccess()){
- return response;
- }
- List orderItemList = (List) response.getData();
- List orderItemVoList = Lists.newArrayList();
- BigDecimal payment = new BigDecimal("0");
- for (OrderItem orderItem:orderItemList){
- payment = BigDecimalUtil.add(payment.doubleValue(),orderItem.getTotalPrice().doubleValue());//计算总价
- OrderItemVo orderItemVo = new OrderItemVo();
- orderItemVo = orderItemVo.assembleOrderItemVo(orderItem);
- orderItemVoList.add(orderItemVo);
- }
- OrderProductVo orderProductVo = new OrderProductVo();
- orderProductVo.setProductTotalPrice(payment);
- orderProductVo.setOrderItemVoList(orderItemVoList);
- orderProductVo.setImageHost(PropertiesUtil.getProperty(PropertiesEnum.FTP_SERVICE_HTTP_PREFIX.getPropertiesName()));
- return ServerResponse.createBySuccess(orderProductVo);
- }catch (Exception e){
- throw new OrderException("getOrderCartProduct",e.getClass()+e.getMessage());
+ List cartList = cartMapper.selectCheckedCartByUserId(currentUserId, null);
+ ServerResponse response = this.getCartOrderItem(currentUserId, cartList);
+ if (!response.isSuccess()) {
+ return response;
}
+ List orderItemList = (List) response.getData();
+ List orderItemVoList = Lists.newArrayList();
+ BigDecimal payment = new BigDecimal("0");
+ //订单子明细总价
+ for (OrderItem orderItem : orderItemList) {
+ //计算总价
+ payment = BigDecimalUtil.add(payment.doubleValue(), orderItem.getTotalPrice().doubleValue());
+ //构建订单子明细VO对象
+ OrderItemVo orderItemVo = assembleOrderItemVo(orderItem);
+ orderItemVoList.add(orderItemVo);
+ }
+ OrderProductVo orderProductVo = new OrderProductVo();
+ orderProductVo.setProductTotalPrice(payment);
+ orderProductVo.setOrderItemVoList(orderItemVoList);
+ orderProductVo.setImageHost(PropertiesUtil.getProperty(FTP_SERVICE_HTTP_PREFIX.getPropertiesName()));
+ return ServerResponse.createBySuccess(orderProductVo);
}
//4.订单详情
@Override
- public ServerResponse getOrderDetail(Integer currentUserId, Long orderNo,Integer sellerId) {
- try{
- Order order = orderMapper.selectOrder(currentUserId,orderNo,sellerId);
- if (order == null){
- return ServerResponse.createByErrorMessage("该用户订单不存在");
+ public ServerResponse getOrderDetail(Integer currentUserId, Long orderNo, Integer sellerId) {
+ try {
+ Order order = orderMapper.selectOrder(currentUserId, orderNo, sellerId);
+ if (order == null) {
+ return ServerResponse.createByErrorMessage("该用户订单不存在");
}
- List orderItemList = orderItemMapper.getByOrderNoUserId(orderNo,currentUserId,sellerId);
- OrderVo orderVo = assembleOrderVo(order,orderItemList);
+ List orderItemList = orderItemMapper.getByOrderNoUserId(orderNo, currentUserId, sellerId);
+ OrderVo orderVo = assembleOrderVo(order, orderItemList);
return ServerResponse.createBySuccess(orderVo);
- }catch (Exception e){
- throw new OrderException("getOrderDetail",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("getOrderDetail", e.getClass() + e.getMessage());
}
}
- //5.分页获取订单
@Override
+ @SuppressWarnings("unchecked")
public ServerResponse getOrderList(Integer currentUserId, int pageNum, int pageSize) {
- try{
- PageHelper.startPage(pageNum,pageSize);
+ try {
+ PageHelper.startPage(pageNum, pageSize);
List orderList = orderMapper.selectByUserId(currentUserId);
- List orderVoList = assembleOrderVoList(orderList,currentUserId);
+ List orderVoList = assembleOrderVoList(orderList, currentUserId);
PageInfo pageResult = new PageInfo(orderList);
pageResult.setList(orderVoList);
return ServerResponse.createBySuccess(pageResult);
- }catch (Exception e){
- throw new OrderException("getOrderList",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("getOrderList", e.getClass() + e.getMessage());
}
}
//admin
@Override
public ServerResponse manageList(int pageNum, int pageSize) {
- try{
- PageHelper.startPage(pageNum,pageSize);
+ try {
+ PageHelper.startPage(pageNum, pageSize);
List orderList = orderMapper.selectAllOrder();
- List orderVoList = this.assembleOrderVoList(orderList,null);
+ List orderVoList = this.assembleOrderVoList(orderList, null);
PageInfo pageResult = new PageInfo(orderList);
pageResult.setList(orderVoList);
return ServerResponse.createBySuccess(pageResult);
- }catch (Exception e){
- throw new OrderException("manageList",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("manageList", e.getClass() + e.getMessage());
}
}
@Override
public ServerResponse manageDetail(Long orderNo) {
- try{
+ try {
Order order = orderMapper.selectByOrderNo(orderNo);
- if(order != null){
+ if (order != null) {
List orderItemList = orderItemMapper.getByOrderNo(orderNo);
- OrderVo orderVo = assembleOrderVo(order,orderItemList);
+ OrderVo orderVo = assembleOrderVo(order, orderItemList);
return ServerResponse.createBySuccess(orderVo);
}
return ServerResponse.createByErrorMessage("订单不存在");
- }catch (Exception e){
- throw new OrderException("manageDetail",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("manageDetail", e.getClass() + e.getMessage());
}
}
@Override
public ServerResponse manageSearch(Long orderNo, int pageNum, int pageSize) {
- try{
- PageHelper.startPage(pageNum,pageSize);
+ try {
+ PageHelper.startPage(pageNum, pageSize);
Order order = orderMapper.selectByOrderNo(orderNo);
- if(order != null){
+ if (order != null) {
List orderItemList = orderItemMapper.getByOrderNo(orderNo);
- OrderVo orderVo = assembleOrderVo(order,orderItemList);
+ OrderVo orderVo = assembleOrderVo(order, orderItemList);
List orderList = Lists.newArrayList();
orderList.add(order);
List orderVoList = Lists.newArrayList();
@@ -242,100 +235,100 @@ public class OrderServiceImpl implements IOrderService {
return ServerResponse.createBySuccess(pageResult);
}
return ServerResponse.createByErrorMessage("订单不存在");
- }catch (Exception e){
- throw new OrderException("manageSearch",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("manageSearch", e.getClass() + e.getMessage());
}
}
//发货
@Override
public ServerResponse manageSendGoods(Long orderNo) {
- try{
- Order order= orderMapper.selectByOrderNo(orderNo);
- if(order != null){
- if(order.getEnableStatus() == OrderStatusEnum.PAID.getCode()){//订单转态为已支付
+ try {
+ Order order = orderMapper.selectByOrderNo(orderNo);
+ if (order != null) {
+ if (order.getEnableStatus() == OrderStatusEnum.PAID.getCode()) {//订单转态为已支付
order.setEnableStatus(OrderStatusEnum.SHIPPED.getCode());
order.setSendTime(new Date());
orderMapper.updateByPrimaryKeySelective(order);
return ServerResponse.createBySuccessMessage("发货成功");
- }else{
- return ServerResponse.createByErrorMessage("发货失败:以为该订单的状态为"+ Const.OrderStatusEnum.codeOf(order.getEnableStatus()).getValue());
+ } else {
+ return ServerResponse.createByErrorMessage("发货失败:以为该订单的状态为" + Const.OrderStatusEnum.codeOf(order.getEnableStatus()).getValue());
}
}
return ServerResponse.createByErrorMessage("订单不存在");
- }catch (Exception e){
- throw new OrderException("manageSendGoods",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("manageSendGoods", e.getClass() + e.getMessage());
}
}
@Override
public ServerResponse getSellerOrderList(Integer sellerId, int pageNum, int pageSize) {
- try{
- PageHelper.startPage(pageNum,pageSize);
+ try {
+ PageHelper.startPage(pageNum, pageSize);
List orderList = orderMapper.selectSellerOrders(sellerId);
- List orderVoList = this.assembleOrderVoList(orderList,null);
+ List orderVoList = this.assembleOrderVoList(orderList, null);
PageInfo pageResult = new PageInfo(orderList);
pageResult.setList(orderVoList);
return ServerResponse.createBySuccess(pageResult);
- }catch (Exception e){
- throw new OrderException("getSellerOrderList",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("getSellerOrderList", e.getClass() + e.getMessage());
}
}
@Override
public ServerResponse sellerSendGoods(Long orderNo, Integer sellerId) {
- try{
- Order order= orderMapper.selectByOrderNo(orderNo);
- if(order != null){
- if(order.getEnableStatus() == OrderStatusEnum.PAID.getCode()){//订单转态为已支付
+ try {
+ Order order = orderMapper.selectByOrderNo(orderNo);
+ if (order != null) {
+ if (order.getEnableStatus() == OrderStatusEnum.PAID.getCode()) {//订单转态为已支付
order.setEnableStatus(OrderStatusEnum.SHIPPED.getCode());
order.setSendTime(new Date());
orderMapper.updateByPrimaryKeySelective(order);
return ServerResponse.createBySuccess("发货成功");
- }else{
- return ServerResponse.createByErrorMessage("发货失败:因为该订单的状态为"+ Const.OrderStatusEnum.codeOf(order.getEnableStatus()).getValue());
+ } else {
+ return ServerResponse.createByErrorMessage("发货失败:因为该订单的状态为" + Const.OrderStatusEnum.codeOf(order.getEnableStatus()).getValue());
}
}
return ServerResponse.createByErrorMessage("订单不存在");
- }catch (Exception e){
- throw new OrderException("sellerSendGoods",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("sellerSendGoods", e.getClass() + e.getMessage());
}
}
//用户确认收货
@Override
public ServerResponse getGoods(Integer currentUserId, Long orderNo) {
- try{
- Order order = orderMapper.selectOrder(currentUserId,orderNo,null);
- if(order ==null){
- return ServerResponse.createByErrorMessage("该用户订单不存在");
+ try {
+ Order order = orderMapper.selectOrder(currentUserId, orderNo, null);
+ if (order == null) {
+ return ServerResponse.createByErrorMessage("该用户订单不存在");
}
//判断订单的状态是否为发货的状态
- if (order.getEnableStatus() != OrderStatusEnum.SHIPPED.getCode()){
- return ServerResponse.createByErrorMessage("确认收货失败:因为订单已经"+ Const.OrderStatusEnum.codeOf(order.getEnableStatus()).getValue());
+ if (order.getEnableStatus() != OrderStatusEnum.SHIPPED.getCode()) {
+ return ServerResponse.createByErrorMessage("确认收货失败:因为订单已经" + Const.OrderStatusEnum.codeOf(order.getEnableStatus()).getValue());
}
Order updateOrder = new Order();
updateOrder.setId(order.getId());
updateOrder.setEnableStatus(OrderStatusEnum.ORDER_SUCCESS.getCode());
updateOrder.setEndTime(new Date()); //设置完成时间
int rowCount = orderMapper.updateByPrimaryKeySelective(updateOrder);
- if (rowCount > 0){
+ if (rowCount > 0) {
return ServerResponse.createBySuccess("谢谢惠顾!");
}
return ServerResponse.createByErrorMessage("订单确认收货失败!!!");
- }catch (Exception e){
- throw new OrderException("getGoods",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("getGoods", e.getClass() + e.getMessage());
}
}
@Override
public ServerResponse sellerSearchOrder(Long orderNo, int pageNum, int pageSize, Integer sellerId) {
- try{
- PageHelper.startPage(pageNum,pageSize);
- Order order = orderMapper.selectByOrderNoAndSellerId(sellerId,orderNo);
- if(order != null){
+ try {
+ PageHelper.startPage(pageNum, pageSize);
+ Order order = orderMapper.selectByOrderNoAndSellerId(sellerId, orderNo);
+ if (order != null) {
List orderItemList = orderItemMapper.getByOrderNo(orderNo);
- OrderVo orderVo = assembleOrderVo(order,orderItemList);
+ OrderVo orderVo = assembleOrderVo(order, orderItemList);
List orderList = Lists.newArrayList();
orderList.add(order);
List orderVoList = Lists.newArrayList();
@@ -345,89 +338,27 @@ public class OrderServiceImpl implements IOrderService {
return ServerResponse.createBySuccess(pageResult);
}
return ServerResponse.createByErrorMessage("订单不存在");
- }catch (Exception e){
- throw new OrderException("sellerSearchOrder",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("sellerSearchOrder", e.getClass() + e.getMessage());
}
}
@Override
- public ServerResponse searchOrderPayed( int pageNum, int pageSize, Integer sellerId) {
- try{
- PageHelper.startPage(pageNum,pageSize);
- List orderList = orderMapper.selectSellerOrdersPayed(sellerId,OrderStatusEnum.PAID.getCode());
- List orderVoList = this.assembleOrderVoList(orderList,null);
+ public ServerResponse searchOrderPayed(int pageNum, int pageSize, Integer sellerId) {
+ try {
+ PageHelper.startPage(pageNum, pageSize);
+ List orderList = orderMapper.selectSellerOrdersPayed(sellerId, OrderStatusEnum.PAID.getCode());
+ List orderVoList = this.assembleOrderVoList(orderList, null);
PageInfo pageResult = new PageInfo(orderList);
pageResult.setList(orderVoList);
return ServerResponse.createBySuccess(pageResult);
- }catch (Exception e){
- throw new OrderException("searchOrderPayed",e.getClass()+e.getMessage());
- }
- }
-
- private List assembleOrderVoList(List orderList, Integer currentUserId) {
- try{
- List orderVoList = Lists.newArrayList();
- for(Order order : orderList){
- List orderItemList =Lists.newArrayList();
- if(currentUserId == null){//管理员
- orderItemList = orderItemMapper.getByOrderNo(order.getOrderNo());
- }else{
- orderItemList = orderItemMapper.getByOrderNoUserId(order.getOrderNo(),currentUserId,null);
- }
- OrderVo orderVo = assembleOrderVo(order,orderItemList);
- orderVoList.add(orderVo);
- }
- return orderVoList;
- }catch (Exception e){
- throw new OrderException("assembleOrderVoList",e.getClass()+e.getMessage());
- }
- }
-
- //封装返回前端的VO
- private OrderVo assembleOrderVo(Order order, List orderItemList) {
- try{
- OrderVo orderVo = new OrderVo();
- orderVo.setShippingId(order.getShippingId());
- orderVo.setOrderNo(order.getOrderNo());
- orderVo.setPayment(order.getPayment());
- orderVo.setPostage(order.getPostage());
- orderVo.setPaymentType(order.getPaymentType());
- orderVo.setPaymentTypeDesc(PaymentTypeEnum.CodeOf(order.getPaymentType()).getInformation());
- orderVo.setStatus(order.getEnableStatus());
- orderVo.setStatusDesc(OrderStatusEnum.codeOf(order.getEnableStatus()).getInformation());
-
- Shipping shipping = shippingMapper.selectByPrimaryKey(order.getShippingId());
- if (shipping != null){
- orderVo.setReceiverName(shipping.getReceiverName());
- ShippingVo shippingVo = this.assembleShippingVo(shipping);
- orderVo.setShippingVo(shippingVo);
- }
- orderVo.setPaymentTime(DateTimeUtil.dateToStr(order.getPaymentTime()));
- orderVo.setSendTime(DateTimeUtil.dateToStr(order.getSendTime()));
- orderVo.setEndTime(DateTimeUtil.dateToStr(order.getEndTime()));
- orderVo.setCreateTime(DateTimeUtil.dateToStr(order.getCreateTime()));
- orderVo.setCloseTime(DateTimeUtil.dateToStr(order.getCloseTime()));
- orderVo.setImageHost(PropertiesUtil.getProperty(PropertiesEnum.FTP_SERVICE_HTTP_PREFIX.getPropertiesName()));
-
- List orderItemVoList = Lists.newArrayList();
- for(OrderItem orderItem:orderItemList){
- OrderItemVo orderItemVo = new OrderItemVo();
- orderItemVo = orderItemVo.assembleOrderItemVo(orderItem);
- User seller = userMapper.selectByPrimaryKey(orderItem.getSellerId());
- if(seller != null){
- orderItemVo.setSellerName(seller.getUsername());
- }
- orderItemVoList.add(orderItemVo);
- }
- orderVo.setOrderItemVoList(orderItemVoList);
- return orderVo;
- }catch (Exception e){
- throw new OrderException("assembleOrderVo",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("searchOrderPayed", e.getClass() + e.getMessage());
}
}
private ShippingVo assembleShippingVo(Shipping shipping) {
- try{
+ try {
ShippingVo shippingVo = new ShippingVo();
shippingVo.setReceiverName(shipping.getReceiverName());
shippingVo.setReceiverAddress(shipping.getReceiverAddress());
@@ -437,94 +368,239 @@ public class OrderServiceImpl implements IOrderService {
shippingVo.setReceiverZip(shipping.getReceiverZip());
shippingVo.setReceiverPhone(shipping.getReceiverPhone());
return shippingVo;
- }catch (Exception e){
- throw new OrderException("assembleShippingVo",e.getClass()+e.getMessage());
+ } catch (Exception e) {
+ throw new OrderException("assembleShippingVo", e.getClass() + e.getMessage());
}
}
//下单完成后清空购物车中相应的商品
private void cleanCart(List cartList) {
- for (Cart cart:cartList){
+ for (Cart cart : cartList) {
cartMapper.deleteByPrimaryKey(cart.getId());
}
}
- //下单完成后减少库存量
+ /**
+ * 下单完成后减少库存量
+ *
+ * @param orderItemList:
+ */
private void reduceProductStock(List orderItemList) {
- for(OrderItem orderItem:orderItemList){
+ for (OrderItem orderItem : orderItemList) {
Product product = productMapper.selectByPrimaryKey(orderItem.getProductId());
- Integer newProductStock = product.getProductStock()-orderItem.getQuantity();
+ Integer newProductStock = product.getProductStock() - orderItem.getQuantity();
product.setProductStock(newProductStock);
int resultRow = productMapper.updateByPrimaryKeySelective(product);
}
}
- //构建订单实例
+
+ /**** 私有方法 *******************************************************************************/
+ /**
+ * 根据购物车中勾选的商品构建确认订单的选项
+ *
+ * @param currentUserId:当前的用户id
+ * @param cartList:购物车列表
+ * @return :
+ */
+ private ServerResponse getCartOrderItem(Integer currentUserId, List cartList) {
+ List orderItemList = Lists.newArrayList();
+ for (Cart car : cartList) {
+ Product product = productMapper.selectByPrimaryKey(car.getProductId());
+ //检验商品的转态是否在售
+ if (ProductStatusEnum.ON_SALE.getStatus() != product.getEnableStatus()) {
+ return ServerResponse.createByErrorMessage("商品" + product.getProductName() + "不是在售状态!");
+ }
+ //检查库存量是否大于等于购买量
+ if (car.getQuantity() > product.getProductStock()) {
+ return ServerResponse.createByErrorMessage("您选择的商品" + product.getProductName() + "的库存量不足!");
+ }
+ //构建orderItem实例
+ OrderItem orderItem = new OrderItem();
+ orderItem.setUserId(currentUserId);
+ orderItem.setProductId(product.getId());
+ orderItem.setSellerId(product.getOwnerId());
+ orderItem.setProductName(product.getProductName());
+ orderItem.setProductImg(product.getMainImgAddr());
+ //如果有现价
+ if (product.getPromotionPrice() != null) {
+ orderItem.setCurrentUnitPrice(product.getPromotionPrice());
+ } else {
+ orderItem.setCurrentUnitPrice(product.getNormalPrice());
+ }
+ orderItem.setQuantity(car.getQuantity());
+ orderItem.setTotalPrice(BigDecimalUtil.mul(orderItem.getCurrentUnitPrice().doubleValue(), car.getQuantity()));
+ orderItemList.add(orderItem);
+ }
+ return ServerResponse.createBySuccess(orderItemList);
+ }
+
+ private OrderItemVo assembleOrderItemVo(OrderItem orderItem) {
+ OrderItemVo orderItemVo = new OrderItemVo();
+ orderItemVo.setId(orderItem.getId());
+ orderItemVo.setOrderNo(orderItem.getOrderNo());
+ orderItemVo.setProductId(orderItem.getProductId());
+ orderItemVo.setSellerId(orderItem.getSellerId());
+ orderItemVo.setProductName(orderItem.getProductName());
+ orderItemVo.setProductImage(IMAGES_HOST_URL+orderItem.getProductImg());
+ orderItemVo.setCurrentUnitPrice(orderItem.getCurrentUnitPrice());
+ orderItemVo.setQuantity(orderItem.getQuantity());
+ orderItemVo.setTotalPrice(orderItem.getTotalPrice());
+ orderItemVo.setEnableStatus(orderItem.getEnableStatus());
+ if (orderItem.getEnableStatus() != null) {
+ orderItemVo.setEnableStatusDes(OrderStatusEnum.codeOf(orderItem.getEnableStatus()).getInformation());
+ orderItemVo.setOperation(assembleOperation(orderItem.getEnableStatus()));
+ }
+ orderItemVo.setCreateTime(DateTimeUtil.dateToStr(orderItem.getCreateTime()));
+ orderItemVo.setPaymentTime(DateTimeUtil.dateToStr(orderItem.getPaymentTime()));
+ orderItemVo.setSendTime(DateTimeUtil.dateToStr(orderItem.getSendTime()));
+ orderItemVo.setEndTime(DateTimeUtil.dateToStr(orderItem.getEndTime()));
+ User seller = userMapper.selectByPrimaryKey(orderItem.getSellerId());
+ if (seller != null) {
+ orderItemVo.setSellerName(seller.getUsername());
+ }
+ return orderItemVo;
+ }
+
+ /**
+ * 组装订单的状态
+ *
+ * @param enableStatus:订单状态
+ * @return :
+ */
+ private String assembleOperation(Integer enableStatus) {
+ switch (enableStatus) {
+ case 0:
+ return "已取消";
+ case 10:
+ return "去取消";
+ case 20:
+ return "等待发货";
+ case 40:
+ return "确认收货";
+ case 50:
+ return "去评论";
+ case 60:
+ return "去评论";
+ default:
+ return "不明确";
+ }
+ }
+
private Order assembleOrder(Integer currentUserId, Integer shippingId, BigDecimal payment, Integer sellerId) {
Order order = new Order();
- long orderNo = this.generateOrderNo();//生成订单号
+ //生成订单号
+ long orderNo = this.generateOrderNo();
order.setUserId(currentUserId);
order.setShippingId(shippingId);
order.setSellerId(sellerId);
order.setOrderNo(orderNo);
order.setPayment(payment);
- order.setPostage(0);//运费
- order.setEnableStatus(OrderStatusEnum.NO_PAY.getCode());//状态(未支付)
+ //运费
+ order.setPostage(0);
+ //状态(未支付)
+ order.setEnableStatus(OrderStatusEnum.NO_PAY.getCode());
order.setPaymentType(Const.PaymentTypeEnum.ONLINE_PAY.getCode());
-
int rowCount = orderMapper.insert(order);
- if (rowCount > 0){
+ if (rowCount > 0) {
return order;
+ } else {
+ throw new Campuso2oException("保存订单失败");
}
- return null;
}
- //自动生成订单号
- private long generateOrderNo() {
+ /**
+ * 自动生成订单号
+ *
+ * @return :
+ */
+ private synchronized long generateOrderNo() {
long currentTime = System.currentTimeMillis();
return currentTime + new Random().nextInt(100);
}
- //计算订单总价
+ /**
+ * 计算订单总价
+ *
+ * @param orderItemList :
+ * @return :
+ */
private BigDecimal getOrderTotalPrice(List orderItemList) {
BigDecimal payment = new BigDecimal("0");
- for(OrderItem orderItem:orderItemList){
- payment = BigDecimalUtil.add(payment.doubleValue(),orderItem.getCurrentUnitPrice().doubleValue());
+ for (OrderItem orderItem : orderItemList) {
+ payment = BigDecimalUtil.add(payment.doubleValue(), orderItem.getCurrentUnitPrice().doubleValue());
}
- return payment;
+ return payment;
}
- private ServerResponse getCartOrderItem(Integer currentUserId, List cartList) {
- List orderItemList = Lists.newArrayList();
- for (Cart car:cartList){
- Product product = productMapper.selectByPrimaryKey(car.getProductId());
- //检验商品的转态是否在售
- if(ProductStatusEnum.ON_SALE.getStatus() != product.getEnableStatus()){
- return ServerResponse.createByErrorMessage("商品"+product.getProductName()+"不是在售状态!");
- }
- //检查库存量是否大于等于购买量
- if(car.getQuantity()> product.getProductStock()){
- return ServerResponse.createByErrorMessage("您选择的商品"+product.getProductName()+"的库存量不足!");
- }
- //构建orderItem实例
- OrderItem orderItem = new OrderItem();
- orderItem.setUserId(currentUserId);
- orderItem.setProductId(product.getId());
- orderItem.setSellerId(product.getOwnerId());
- orderItem.setProductName(product.getProductName());
- orderItem.setProductImg(product.getMainImgAddr());
- //如果有现价
- if (product.getPromotionPrice() != null){
- orderItem.setCurrentUnitPrice(product.getPromotionPrice());
- }else{
- orderItem.setCurrentUnitPrice(product.getNormalPrice());
+ /**
+ * 根据order订单列表构建orderVo列表信息
+ *
+ * @param orderList:订单列表
+ * @param currentUserId:当前的用户id
+ * @return :
+ */
+ private List assembleOrderVoList(List orderList, Integer currentUserId) {
+ try {
+ List orderVoList = Lists.newArrayList();
+ for (Order order : orderList) {
+ List orderItemList;
+ //管理员
+ if (currentUserId == null) {
+ orderItemList = orderItemMapper.getByOrderNo(order.getOrderNo());
+ } else {
+ orderItemList = orderItemMapper.getByOrderNoUserId(order.getOrderNo(), currentUserId, null);
+ }
+ OrderVo orderVo = assembleOrderVo(order, orderItemList);
+ orderVoList.add(orderVo);
}
- orderItem.setQuantity(car.getQuantity());
- orderItem.setTotalPrice(BigDecimalUtil.mul(orderItem.getCurrentUnitPrice().doubleValue(),car.getQuantity()));
- orderItemList.add(orderItem);
+ return orderVoList;
+ } catch (Exception e) {
+ throw new OrderException("assembleOrderVoList", e.getClass() + e.getMessage());
}
- return ServerResponse.createBySuccess(orderItemList);
}
+ /**
+ * 封装返回前端的VO
+ *
+ * @param order:订单实例
+ * @param orderItemList:订单实例对应的订单子明细列表
+ * @return :orderVo对象
+ */
+ private OrderVo assembleOrderVo(Order order, List orderItemList) {
+ try {
+ OrderVo orderVo = new OrderVo();
+ orderVo.setShippingId(order.getShippingId());
+ orderVo.setOrderNo(order.getOrderNo());
+ orderVo.setPayment(order.getPayment());
+ orderVo.setPostage(order.getPostage());
+ orderVo.setPaymentType(order.getPaymentType());
+ orderVo.setPaymentTypeDesc(PaymentTypeEnum.CodeOf(order.getPaymentType()).getInformation());
+ orderVo.setStatus(order.getEnableStatus());
+ orderVo.setStatusDesc(OrderStatusEnum.codeOf(order.getEnableStatus()).getInformation());
+
+ Shipping shipping = shippingMapper.selectByPrimaryKey(order.getShippingId());
+ if (shipping != null) {
+ orderVo.setReceiverName(shipping.getReceiverName());
+ ShippingVo shippingVo = this.assembleShippingVo(shipping);
+ orderVo.setShippingVo(shippingVo);
+ }
+ orderVo.setPaymentTime(DateTimeUtil.dateToStr(order.getPaymentTime()));
+ orderVo.setSendTime(DateTimeUtil.dateToStr(order.getSendTime()));
+ orderVo.setEndTime(DateTimeUtil.dateToStr(order.getEndTime()));
+ orderVo.setCreateTime(DateTimeUtil.dateToStr(order.getCreateTime()));
+ orderVo.setCloseTime(DateTimeUtil.dateToStr(order.getCloseTime()));
+ orderVo.setImageHost(IMAGES_HOST_URL);
+ List orderItemVoList = Lists.newArrayList();
+ for (OrderItem orderItem : orderItemList) {
+ OrderItemVo orderItemVo = assembleOrderItemVo(orderItem);
+ orderItemVoList.add(orderItemVo);
+ }
+ orderVo.setOrderItemVoList(orderItemVoList);
+ return orderVo;
+ } catch (Exception e) {
+ throw new OrderException("assembleOrderVo", e.getClass() + e.getMessage());
+ }
+ }
}
diff --git a/src/main/java/com/mark/service/impl/PayServiceImpl.java b/src/main/java/com/mark/service/impl/PayServiceImpl.java
index 84076da..8acb48a 100644
--- a/src/main/java/com/mark/service/impl/PayServiceImpl.java
+++ b/src/main/java/com/mark/service/impl/PayServiceImpl.java
@@ -27,9 +27,12 @@ import com.mark.util.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
import java.io.File;
+import java.io.FileInputStream;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@@ -64,25 +67,28 @@ public class PayServiceImpl implements IPayService{
@Autowired
private PayInfoMapper payInfoMapper;
- //生成支付订单,并且保存支付宝回调生成的二维码
+
@Override
public ServerResponse pay(String orderNo, Integer currentUserId, String path) {
+ File targetFile = null;
try {
Map resultMap = Maps.newHashMap();
String[] arrOrderNo = orderNo.split(",");
StringBuilder payOrderNo = new StringBuilder();
- BigDecimal tatal = new BigDecimal(0.0);
+ BigDecimal total = new BigDecimal(0.0);
List orderItemLists = Lists.newArrayList();
for (int i = 0; i < arrOrderNo.length; i++) {
String orders = arrOrderNo[i];
Long orderValue = Long.parseLong(orders);
- Order order = orderMapper.selectOrder(currentUserId, orderValue, null);//根据用户Id和订单号查找订单
+ //根据用户Id和订单号查找订单
+ Order order = orderMapper.selectOrder(currentUserId, orderValue, null);
if (order == null) {
return ServerResponse.createByErrorMessage("用户没有该订单!");
}
- tatal = BigDecimalUtil.add(tatal.doubleValue(), order.getPayment().doubleValue());
- List orderItemList = orderItemMapper.getOrderListByOrderAndUserId(orderValue, currentUserId);//根据用户ID和订单号到订单明细表中查找相关信息
+ total = BigDecimalUtil.add(total.doubleValue(), order.getPayment().doubleValue());
+ //根据用户ID和订单号到订单明细表中查找相关信息
+ List orderItemList = orderItemMapper.getOrderListByOrderAndUserId(orderValue, currentUserId);
for (OrderItem orderItem : orderItemList) {
orderItemLists.add(orderItem);
}
@@ -104,7 +110,7 @@ public class PayServiceImpl implements IPayService{
// (必填) 订单总金额,单位为元,不能超过1亿元
// 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
- String totalAmount = tatal.toString();
+ String totalAmount = total.toString();
// (可选) 订单不可打折金额,可以配合商家平台配置折扣活动,如果酒水不参与打折,则将对应金额填写至此字段
// 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
@@ -133,14 +139,17 @@ public class PayServiceImpl implements IPayService{
// 商品明细列表,需填写购买商品详细信息,
// List orderItemList = orderItemMapper.getOrderListByOrderAndUserId(orderNo,currentUserId);//根据用户ID和订单号到订单明细表中查找相关信息
List goodsDetailList = Lists.newArrayList();
- for (OrderItem orderItem : orderItemLists) {//遍历
+ //遍历
+ for (OrderItem orderItem : orderItemLists) {
// 创建商品信息,参数含义分别为商品id(使用国标)、商品名称、商品价格(单位为分)、商品数量
- GoodsDetail goodsDetail = GoodsDetail.newInstance(//构建GoodsDetail实例
+ //构建GoodsDetail实例
+ GoodsDetail goodsDetail = GoodsDetail.newInstance(
orderItem.getProductId().toString(),
orderItem.getProductName(),
BigDecimalUtil.mul(orderItem.getCurrentUnitPrice().doubleValue(), new Double(100).doubleValue()).longValue(),
orderItem.getQuantity());
- goodsDetailList.add(goodsDetail);//加到List中
+ //加到List中
+ goodsDetailList.add(goodsDetail);
}
//创建扫码支付请求builder,设置请求参数
@@ -149,10 +158,11 @@ public class PayServiceImpl implements IPayService{
.setUndiscountableAmount(undiscountableAmount).setSellerId(sellerId).setBody(body)
.setOperatorId(operatorId).setStoreId(storeId).setExtendParams(extendParams)
.setTimeoutExpress(timeoutExpress)
- .setNotifyUrl(PropertiesUtil.getProperty(PropertiesEnum.ALIPAY_CALLBACK_URL.getPropertiesName()))//支付宝服务器主动通知商户服务器里指定的页面http路径,根据需要设置
+ //支付宝服务器主动通知商户服务器里指定的页面http路径,根据需要设置
+ .setNotifyUrl(PropertiesUtil.getProperty(PropertiesEnum.ALIPAY_CALLBACK_URL.getPropertiesName()))
.setGoodsDetailList(goodsDetailList);
-
- AlipayF2FPrecreateResult result = tradeService.tradePrecreate(builder);//调用支付宝API大气预支付
+ //调用支付宝API大气预支付
+ AlipayF2FPrecreateResult result = tradeService.tradePrecreate(builder);
switch (result.getTradeStatus()) {
case SUCCESS:
log.info("支付宝预下单成功");
@@ -161,28 +171,32 @@ public class PayServiceImpl implements IPayService{
dumpResponse(response);
File folder = null;
try {
- folder = new File(path);//创建路径中的文件夹
+ //创建路径中的文件夹
+ folder = new File(path);
} catch (Exception e) {
log.error("在路径{}中创建文件夹失败!请检查文件夹是否可读", path);
}
- if (!folder.exists()) {
+ if (folder!=null && !folder.exists()) {
folder.setWritable(true);
folder.mkdirs();
}
//需要修改为运行机器上的路径(注意这里的path后面要加上/)
- String qrPath = String.format(path + "/qr-%s.png", response.getOutTradeNo());//二维码的的本地相对路径
- String qrFileName = String.format("qr-%s.png", response.getOutTradeNo());//文件名
- ZxingUtils.getQRCodeImge(response.getQrCode(), 256, qrPath);//在本地的upload文件夹上生成二维码图片
+ //二维码的的本地相对路径
+ String qrPath = String.format(path + "/qr-%s.png", response.getOutTradeNo());
+ //文件名
+ String qrFileName = String.format("qr-%s.png", response.getOutTradeNo());
+ //在本地的upload文件夹上生成二维码图片
+ ZxingUtils.getQRCodeImge(response.getQrCode(), 256, qrPath);
- File targetFile = new File(path, qrFileName);
- //// TODO: 2018/4/26
- // String remotePath = PathUtil.getQrPath(currentUserId.toString(),operatorId);
- // FTPUtil.uploadFile(Lists.newArrayList(targetFile),"");//使用FTP服务器上传图片
- ImageUtil.generateThumbnail(targetFile, PathUtil.getQrPath());
+ targetFile = new File(path, qrFileName);
+ MultipartFile multipartFile = FileUtil.fileToMultipartFile(targetFile);
+ String qrUrl = OSSClientUtil.uploadImg2Oss(multipartFile, "qr", currentUserId);
+
+ //ImageUtil.generateThumbnail(targetFile, PathUtil.getQrPath());
log.info("qrPath:" + qrPath);
- String qrUrl = PropertiesUtil.getProperty(PropertiesEnum.FTP_SERVICE_HTTP_PREFIX.getPropertiesName()) + PathUtil.getQrPath() + targetFile.getName();
+ //String qrUrl = PropertiesUtil.getProperty(PropertiesEnum.FTP_SERVICE_HTTP_PREFIX.getPropertiesName()) + PathUtil.getQrPath() + targetFile.getName();
log.info("qrUrl:" + qrUrl);
resultMap.put("qrUrl", qrUrl);
@@ -200,9 +214,18 @@ public class PayServiceImpl implements IPayService{
}
}catch (Exception e){
throw new PayException("pay",e.getClass()+e.getMessage());
+ }finally {
+ if(targetFile != null){
+ boolean delete = targetFile.delete();
+ if(!delete){
+ log.warn("删除文件失败:");
+ }
+ }
}
}
+
+
@Override
public ServerResponse aliCallback(Map params){
try {
diff --git a/src/main/java/com/mark/service/impl/ShippingServiceImpl.java b/src/main/java/com/mark/service/impl/ShippingServiceImpl.java
index df64589..273ce00 100644
--- a/src/main/java/com/mark/service/impl/ShippingServiceImpl.java
+++ b/src/main/java/com/mark/service/impl/ShippingServiceImpl.java
@@ -10,6 +10,7 @@ import com.mark.exception.ShippingException;
import com.mark.pojo.Shipping;
import com.mark.service.IShippingService;
import com.mark.vo.ShippingVo;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -62,16 +63,16 @@ public class ShippingServiceImpl implements IShippingService{
}
}
- //3.用户更新收货地址的业务逻辑
@Override
public ServerResponse updateShipping(Integer currentUserId, Shipping shipping) {
try {
- shipping.setUserId(currentUserId);//用户的ID要设置为当前的用户id
+ //用户的ID要设置为当前的用户id
+ shipping.setUserId(currentUserId);
int resultCount = shippingMapper.updateByShipping(shipping);
if (resultCount > 0) {
return ServerResponse.createBySuccessMessage("更新地址成功");
} else {
- return ServerResponse.createByErrorMessage("删除地址失败");
+ return ServerResponse.createByErrorMessage("更新地址失败");
}
}catch (Exception e){
throw new ShippingException("updateShipping",e.getClass()+e.getMessage());
@@ -93,7 +94,13 @@ public class ShippingServiceImpl implements IShippingService{
}
}
- //5.分页查看所有的收货地址
+ /**
+ * 5.分页查看所有的收货地址
+ * @param currentUserId
+ * @param pageNum
+ * @param pageSize
+ * @return
+ */
@Override
public ServerResponse listShipping(Integer currentUserId, int pageNum, int pageSize) {
try {
@@ -113,16 +120,10 @@ public class ShippingServiceImpl implements IShippingService{
private ShippingVo assembleShippingVo(Shipping shipping) {
ShippingVo shippingVo = new ShippingVo();
- shippingVo.setId(shipping.getId());
- shippingVo.setReceiverName(shipping.getReceiverName());
- shippingVo.setReceiverAddress(shipping.getReceiverAddress());
- shippingVo.setReceiverProvince(shipping.getReceiverProvince());
- shippingVo.setReceiverCity(shipping.getReceiverCity());
- shippingVo.setReceiverDistrict(shipping.getReceiverDistrict());
- shippingVo.setReceiverZip(shipping.getReceiverZip());
+ BeanUtils.copyProperties(shipping,shippingVo);
String phone = shipping.getReceiverPhone();
int phoneLength = phone.length();
- phone = phone.substring(0,3)+"XXXX"+phone.substring(phoneLength-4,phoneLength);
+ phone = phone.substring(0,3)+"...."+phone.substring(phoneLength-4,phoneLength);
shippingVo.setReceiverPhone(phone);
return shippingVo;
}
diff --git a/src/main/java/com/mark/util/FileUtil.java b/src/main/java/com/mark/util/FileUtil.java
new file mode 100644
index 0000000..7098e0a
--- /dev/null
+++ b/src/main/java/com/mark/util/FileUtil.java
@@ -0,0 +1,34 @@
+package com.mark.util;
+
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+/**
+ * @Description :文件转换的工具类
+ * @Author: Kingsley
+ * @CreateDate: 2018/10/28 19:04
+ * @Version: 2.0
+ * @Copyright : 豆浆油条个人非正式工作室
+ */
+public class FileUtil {
+
+ public static MultipartFile fileToMultipartFile(File targetFile){
+
+ FileInputStream inputStream = null;
+ MultipartFile multipartFile = null;
+ try {
+ inputStream = new FileInputStream(targetFile);
+ multipartFile = new MockMultipartFile(targetFile.getName(),targetFile.getName(),"image/jpeg", inputStream);
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return multipartFile;
+ }
+}
diff --git a/src/main/java/com/mark/util/OSSClientUtil.java b/src/main/java/com/mark/util/OSSClientUtil.java
index 97d219c..5c9eddd 100644
--- a/src/main/java/com/mark/util/OSSClientUtil.java
+++ b/src/main/java/com/mark/util/OSSClientUtil.java
@@ -3,9 +3,11 @@ package com.mark.util;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectResult;
+import com.mark.exception.Campuso2oException;
import com.mark.exception.ImageException;
import lombok.extern.slf4j.Slf4j;
import net.coobird.thumbnailator.Thumbnails;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;
@@ -92,9 +94,13 @@ public class OSSClientUtil {
*/
private static String getNewName(MultipartFile multipartFile, String imageRole, Integer roleId) {
//对待上传的文件进行压缩处理
- multipartFile = ImageUtil.generateThumbnail(multipartFile, imageRole);
-
+ if(!StringUtils.equals("qr",imageRole)){
+ multipartFile = ImageUtil.generateThumbnail(multipartFile, imageRole);
+ }
String originalFilename = multipartFile.getOriginalFilename();
+ if (StringUtils.isBlank(originalFilename)) {
+ throw new Campuso2oException("上传文件的原文件名不能为空");
+ }
String fileExtensionName = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
Random random = new Random();
String newName = random.nextInt(10000) + System.currentTimeMillis() + fileExtensionName;
diff --git a/src/main/java/com/mark/vo/OrderItemVo.java b/src/main/java/com/mark/vo/OrderItemVo.java
index 573611a..b041ddf 100644
--- a/src/main/java/com/mark/vo/OrderItemVo.java
+++ b/src/main/java/com/mark/vo/OrderItemVo.java
@@ -1,8 +1,5 @@
package com.mark.vo;
-import com.mark.enums.OrderStatusEnum;
-import com.mark.pojo.OrderItem;
-import com.mark.util.DateTimeUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@@ -23,57 +20,92 @@ import java.math.BigDecimal;
@AllArgsConstructor
public class OrderItemVo {
- private Integer id; //ID
- private Long orderNo; //订单号
- private Integer productId; //商品ID
- private Integer sellerId; //卖家ID
- private String sellerName; //卖家姓名
- private String productName; //产品的名称
- private String productImage; //主图
- private BigDecimal currentUnitPrice; //价格
- private Integer quantity; //数量
- private BigDecimal totalPrice; //总价
- private Integer enableStatus; //订单的状态
- private String enableStatusDes; //订单的状态描述
- private String operation; //操作
- private String createTime; //创建时间
- private String paymentTime; //支付时间
- private String sendTime; //发货时间
- private String endTime; //结束时间
-
-
- public OrderItemVo assembleOrderItemVo(OrderItem orderItem) {
- OrderItemVo orderItemVo = new OrderItemVo();
- orderItemVo.setId(orderItem.getId());
- orderItemVo.setOrderNo(orderItem.getOrderNo());
- orderItemVo.setProductId(orderItem.getProductId());
- orderItemVo.setSellerId(orderItem.getSellerId());
- orderItemVo.setProductName(orderItem.getProductName());
- orderItemVo.setProductImage(orderItem.getProductImg());
- orderItemVo.setCurrentUnitPrice(orderItem.getCurrentUnitPrice());
- orderItemVo.setQuantity(orderItem.getQuantity());
- orderItemVo.setTotalPrice(orderItem.getTotalPrice());
- orderItemVo.setEnableStatus(orderItem.getEnableStatus());
- if(orderItem.getEnableStatus() != null){
- orderItemVo.setEnableStatusDes(OrderStatusEnum.codeOf(orderItem.getEnableStatus()).getInformation());
- orderItemVo.setOperation(assembleOperation(orderItem.getEnableStatus()));
- }
- orderItemVo.setCreateTime(DateTimeUtil.dateToStr(orderItem.getCreateTime()));
- orderItemVo.setPaymentTime(DateTimeUtil.dateToStr(orderItem.getPaymentTime()));
- orderItemVo.setSendTime(DateTimeUtil.dateToStr(orderItem.getSendTime()));
- orderItemVo.setEndTime(DateTimeUtil.dateToStr(orderItem.getEndTime()));
- return orderItemVo;
- }
-
- private String assembleOperation(Integer enableStatus) {//组装订单的状态
- switch (enableStatus){
- case 0: return "已取消";
- case 10 : return "去取消";
- case 20 : return "等待发货";
- case 40 : return "确认收货";
- case 50 : return "去评论";
- case 60 : return "去评论";
- default: return "不明确";
- }
- }
+ /**
+ * ID
+ */
+ private Integer id;
+
+ /**
+ * 订单号
+ */
+ private Long orderNo;
+
+ /**
+ * 商品ID
+ */
+ private Integer productId;
+
+ /**
+ * 卖家ID
+ */
+ private Integer sellerId;
+
+ /**
+ * 卖家姓名
+ */
+ private String sellerName;
+
+ /**
+ * 产品的名称
+ */
+ private String productName;
+
+ /**
+ * 商品的主图
+ */
+ private String productImage;
+
+ /**
+ * 价格
+ */
+ private BigDecimal currentUnitPrice;
+
+ /**
+ * 数量
+ */
+ private Integer quantity;
+
+ /**
+ * 总价
+ */
+ private BigDecimal totalPrice;
+
+ /**
+ * 订单的状态
+ */
+ private Integer enableStatus;
+
+ /**
+ * 订单的状态描述
+ */
+ private String enableStatusDes;
+
+ /**
+ * 操作
+ */
+ private String operation;
+
+
+ /**
+ * 创建时间
+ */
+ private String createTime;
+
+ /**
+ * 支付时间
+ */
+ private String paymentTime;
+
+ /**
+ * 发货时间
+ */
+ private String sendTime;
+
+ /**
+ * 结束时间
+ */
+ private String endTime;
+
+
+
}
diff --git a/src/main/java/com/mark/vo/OrderProductVo.java b/src/main/java/com/mark/vo/OrderProductVo.java
index 42ba450..ed70ea2 100644
--- a/src/main/java/com/mark/vo/OrderProductVo.java
+++ b/src/main/java/com/mark/vo/OrderProductVo.java
@@ -21,7 +21,18 @@ import java.util.List;
@AllArgsConstructor
public class OrderProductVo {
+ /**
+ * 订单子明细
+ */
private List orderItemVoList;
- private BigDecimal productTotalPrice;//总价
+
+ /**
+ * 总价
+ */
+ private BigDecimal productTotalPrice;
+
+ /**
+ * 图片资源的主机地址
+ */
private String imageHost;
}
diff --git a/src/main/java/com/mark/vo/OrderVo.java b/src/main/java/com/mark/vo/OrderVo.java
index 7644343..cf6415a 100644
--- a/src/main/java/com/mark/vo/OrderVo.java
+++ b/src/main/java/com/mark/vo/OrderVo.java
@@ -21,7 +21,6 @@ import java.util.List;
@AllArgsConstructor
public class OrderVo {
-
private Long orderNo;//订单号
private BigDecimal payment;//付款金额
diff --git a/src/main/java/com/mark/vo/ShippingVo.java b/src/main/java/com/mark/vo/ShippingVo.java
index fabbb14..a0c4bc8 100644
--- a/src/main/java/com/mark/vo/ShippingVo.java
+++ b/src/main/java/com/mark/vo/ShippingVo.java
@@ -20,9 +20,9 @@ public class ShippingVo {
private Integer id;
- private String receiverName;//收货人
+ private String receiverName;
- private String receiverPhone;//电话
+ private String receiverPhone;
private String receiverProvince;
diff --git a/src/main/resources.dev/campus.properties b/src/main/resources.dev/campus.properties
index c39266d..22f272d 100644
--- a/src/main/resources.dev/campus.properties
+++ b/src/main/resources.dev/campus.properties
@@ -45,7 +45,7 @@ redis.test.return=false
#redis config end====================================================
#\u652F\u4ED8\u5B9D\u56DE\u5230\u8BBF\u95EE\u672C\u5730\u7684URL
-alipay.callback.url= http://choisaaaa.s3.natapp.cc/pay/alipay_callback.do
+alipay.callback.url= http://choisaaaa.s1.natapp.cc/pay/alipay_callback.do
#MD5\u52A0\u5BC6\u81EA\u5B9A\u76D0\u503C
password.salt = CampusO@O
diff --git a/src/main/resources/mappers/CartMapper.xml b/src/main/resources/mappers/CartMapper.xml
index 4bf95f0..551b67a 100644
--- a/src/main/resources/mappers/CartMapper.xml
+++ b/src/main/resources/mappers/CartMapper.xml
@@ -195,4 +195,14 @@
AND checked =1
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/java/com/mark/dao/CartMapperTest.java b/src/test/java/com/mark/dao/CartMapperTest.java
index a80e594..46abb58 100644
--- a/src/test/java/com/mark/dao/CartMapperTest.java
+++ b/src/test/java/com/mark/dao/CartMapperTest.java
@@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import java.util.Date;
import java.util.List;
+import java.util.Map;
import static org.junit.Assert.assertEquals;
@@ -104,4 +105,14 @@ public class CartMapperTest extends BaseTest{
List cartList = cartMapper.selectCheckedCartByUserId(currentUserId,null);
System.out.println(cartList.size());
}
+
+ /**
+ * 根据卖家分组查询
+ */
+ @Test
+ public void testSelectCartGroupBySeller(){
+ int userId = 254;
+ List sellerIds = cartMapper.selectSellerIds(userId);
+ System.out.println(sellerIds);
+ }
}
\ No newline at end of file
diff --git a/src/test/java/com/mark/dao/OrderMapperTest.java b/src/test/java/com/mark/dao/OrderMapperTest.java
index 3eb92cb..275d28f 100644
--- a/src/test/java/com/mark/dao/OrderMapperTest.java
+++ b/src/test/java/com/mark/dao/OrderMapperTest.java
@@ -76,4 +76,6 @@ public class OrderMapperTest extends BaseTest{
public void testSelectAllOrder() throws Exception {
}
+
+
}
\ No newline at end of file
diff --git a/src/test/java/com/mark/service/impl/OrderServiceImplTest.java b/src/test/java/com/mark/service/impl/OrderServiceImplTest.java
index aabf7b6..3415ad2 100644
--- a/src/test/java/com/mark/service/impl/OrderServiceImplTest.java
+++ b/src/test/java/com/mark/service/impl/OrderServiceImplTest.java
@@ -14,10 +14,14 @@ public class OrderServiceImplTest extends BaseTest {
@Autowired
private IOrderService iOrderService;
+ /**
+ * 创建订单
+ * @throws Exception
+ */
@Test
- public void testCreateOrder() throws Exception { //1.创建订单
- Integer currentUserId =1;
- Integer shippingId =1;
+ public void testCreateOrder() throws Exception {
+ Integer currentUserId =254;
+ Integer shippingId =234;
ServerResponse response = iOrderService.createOrder(currentUserId,shippingId);
System.out.println(response.getMsg());
}
--
Gitee