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