| 
					
				 | 
			
			
				@@ -30,6 +30,7 @@ import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dao.UserOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import springfox.documentation.spring.web.json.Json; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.annotation.PostConstruct; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.math.BigDecimal; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -129,6 +130,13 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<Boolean> orderCancel(OrderPayReq payReq) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserOrderVo detail = detail(payReq.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCancel(detail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return HttpResponseResult.succeed(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public IPage<UserOrderVo> selectPage(IPage<UserOrderVo> page, OrderSearch query) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return page.setRecords(baseMapper.selectPage(page, query)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -160,11 +168,16 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return HttpResponseResult.failed("订单商品信息获取失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             createRes.setGoodType(info.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //todo 优惠券优惠金额,暂时为0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal couponAmount = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            createRes.setActualPrice(createRes.getExpectPrice().subtract(couponAmount).setScale(2, RoundingMode.HALF_UP)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            createRes.setCouponAmount(couponAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             resList.add(createRes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //验证成功后,订单入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrderVo orderVo = insertOrder(orderNo,orderReq, resList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<UserOrderDetailVo> orderDetailList = orderVo.getOrderDetailList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (UserOrderDetailVo orderDetailVo : orderDetailList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderDetailVo.setUserId(orderReq.getUserId()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -197,6 +210,17 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<OrderPayRes> orderPaytoPaying(OrderPayReq payReq) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //查询订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserOrderVo detail = detail(payReq.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(OrderStatusEnum.PAYING.equals(detail.getStatus())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //处于付款中状态,需要拉起付款接口返回信息,并且去到汇付 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return orderPayPaying(payReq, detail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return HttpResponseResult.failed("订单状态异常"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void orderCallback(String data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         JSONObject hfRes = JSONObject.parseObject(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (PayStatusEnum.succeeded.getCode().equals(hfRes.getString("status"))) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -393,7 +417,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private UserOrderVo insertOrder(Long orderNo, OrderReq orderReq, List<OrderCreateRes> resList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrder userOrder = new UserOrder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //订单号生成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setOrderNo(Long.toString(orderNo)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setUserId(orderReq.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setOrderName(orderReq.getOrderName()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -402,8 +426,11 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setStatus(OrderStatusEnum.WAIT_PAY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setUserNote(orderReq.getUserNote()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setOriginalPrice(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setExpectPrice(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setActualPrice(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setCouponAmount(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setPlantformFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<UserOrderDetailVo> orderDetailList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (OrderCreateRes res : resList) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -431,6 +458,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderReq.getOrderInfos().forEach(o -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (o.getGoodType().equals(res.getGoodType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     orderDetail.setGoodName(o.getGoodName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    orderDetail.setBizContent(JSONObject.toJSONString(o.getBizContent())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderDetail.setGoodUrl(getGoodUrlByType(res.getGoodType())); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -440,13 +468,16 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             userOrder.setOriginalPrice(userOrder.getOriginalPrice().add(orderDetail.getOriginalPrice())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             userOrder.setExpectPrice(userOrder.getExpectPrice().add(orderDetail.getExpectPrice())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            userOrder.setActualPrice(userOrder.getActualPrice().add(orderDetail.getActualPrice())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            userOrder.setCouponAmount(userOrder.getCouponAmount().add(orderDetail.getCouponAmount())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             userOrder.setPlantformFee(userOrder.getPlantformFee().add(orderDetail.getPlantformFee())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //todo 优惠券优惠金额,暂时为0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal couponAmount = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setActualPrice(userOrder.getExpectPrice().subtract(couponAmount).setScale(2, RoundingMode.HALF_UP)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setCouponAmount(couponAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setActualPrice(userOrder.getActualPrice().subtract(couponAmount)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setCouponAmount(userOrder.getCouponAmount().add(couponAmount)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (userOrder.getActualPrice().subtract(orderReq.getActualPrice()).abs() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .compareTo(new BigDecimal("0.01")) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("交易金额异常"); 
			 |