|
@@ -76,14 +76,16 @@ public class OrderServiceImpl implements OrderService {
|
|
|
return orderDao.update(order);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 取消订单
|
|
|
+ * @param order
|
|
|
+ */
|
|
|
@Override
|
|
|
- public void cancelOrder(OrderEntity order,WechatRefundApiResult result) {
|
|
|
+ public void cancelOrder(OrderEntity order) {
|
|
|
boolean needUpdateStock = true;
|
|
|
- if (order.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_201.getItem())) {
|
|
|
- order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_401.getItem()));
|
|
|
+ if (order.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_0.getItem())) {
|
|
|
+ order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_101.getItem()));
|
|
|
}
|
|
|
- order.setPayStatus(Integer.parseInt(Dict.payStatus.item_3.getItem()));
|
|
|
|
|
|
// 判断是否有优惠券
|
|
|
UserCouponEntity couponVo = userCouponDao.queryByOrderId(order.getId());
|
|
@@ -92,25 +94,6 @@ public class OrderServiceImpl implements OrderService {
|
|
|
}
|
|
|
orderDao.update(order);
|
|
|
|
|
|
- OrderRefundEntity mallOrderRefund = orderRefundDao.queryObjectByOrderId(order.getId());
|
|
|
-
|
|
|
- OrderRefundEntity orderRefund = new OrderRefundEntity();
|
|
|
- orderRefund.setRefundId(result.getRefund_id());
|
|
|
- orderRefund.setOutRefundNo(result.getOut_refund_no());
|
|
|
- orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())).divide(Constant.ONE_HUNDRED));
|
|
|
- orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_2.getItem()));
|
|
|
- orderRefund.setModTime(new Date());
|
|
|
-
|
|
|
- if(mallOrderRefund !=null){
|
|
|
- orderRefund.setId(mallOrderRefund.getId());
|
|
|
- orderRefundDao.update(orderRefund);
|
|
|
- }else{
|
|
|
- orderRefund.setOrderId(Integer.parseInt(order.getId()+""));
|
|
|
- orderRefund.setUserId(Integer.parseInt(order.getUserId()+""));
|
|
|
- orderRefund.setCreateTime(new Date());
|
|
|
- orderRefundDao.save(orderRefund);//退款记录
|
|
|
- }
|
|
|
-
|
|
|
if (!needUpdateStock) {
|
|
|
return;
|
|
|
}
|
|
@@ -234,31 +217,65 @@ public class OrderServiceImpl implements OrderService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 部分退款
|
|
|
- *
|
|
|
- * @param orderInfo
|
|
|
- * @param refundMoney
|
|
|
+ * 退款
|
|
|
*/
|
|
|
@Transactional
|
|
|
- public void refund(OrderEntity orderInfo, BigDecimal refundMoney) {
|
|
|
- if (orderInfo.getOrderStatus() == 201) {
|
|
|
- orderInfo.setOrderStatus(401);
|
|
|
- } else if (orderInfo.getOrderStatus() == 300) {
|
|
|
- orderInfo.setOrderStatus(402);
|
|
|
+ public void refund(OrderEntity order, WechatRefundApiResult result) {
|
|
|
+ boolean needUpdateStock = true;
|
|
|
+ if (order.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_201.getItem())) {
|
|
|
+ order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_401.getItem()));
|
|
|
+ }
|
|
|
+ order.setPayStatus(Integer.parseInt(Dict.payStatus.item_3.getItem()));
|
|
|
+
|
|
|
+ // 判断是否有优惠券
|
|
|
+ UserCouponEntity couponVo = userCouponDao.queryByOrderId(order.getId());
|
|
|
+ if (null != couponVo) {
|
|
|
+ userCouponDao.cancelOrder(couponVo);
|
|
|
+ }
|
|
|
+ orderDao.update(order);
|
|
|
+
|
|
|
+ OrderRefundEntity mallOrderRefund = orderRefundDao.queryObjectByOrderId(order.getId());
|
|
|
+
|
|
|
+ OrderRefundEntity orderRefund = new OrderRefundEntity();
|
|
|
+ orderRefund.setRefundId(result.getRefund_id());
|
|
|
+ orderRefund.setOutRefundNo(result.getOut_refund_no());
|
|
|
+ orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())).divide(Constant.ONE_HUNDRED));
|
|
|
+ orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_2.getItem()));
|
|
|
+ orderRefund.setModTime(new Date());
|
|
|
+
|
|
|
+ if(mallOrderRefund !=null){
|
|
|
+ orderRefund.setId(mallOrderRefund.getId());
|
|
|
+ orderRefundDao.update(orderRefund);
|
|
|
+ }else{
|
|
|
+ orderRefund.setOrderId(Integer.parseInt(order.getId()+""));
|
|
|
+ orderRefund.setUserId(Integer.parseInt(order.getUserId()+""));
|
|
|
+ orderRefund.setCreateTime(new Date());
|
|
|
+ orderRefundDao.save(orderRefund);//退款记录
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!needUpdateStock) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 更新库存
|
|
|
+ Map<String, Object> map = new HashMap<String, Object>();
|
|
|
+ map.put("orderId", order.getId());
|
|
|
+ List<OrderGoodsEntity> orderGoodsVoList = orderGoodsDao.queryList(map);
|
|
|
+ for (OrderGoodsEntity orderGoodsEntity : orderGoodsVoList) {
|
|
|
+ ProductStoreRelaEntity storeRelaEntity = productStoreRelaDao.queryByStoreIdProductId(Long.valueOf(order.getStoreId()), Long.valueOf(orderGoodsEntity.getProductId()));
|
|
|
+ if (null == storeRelaEntity || null == storeRelaEntity.getSellVolume()) {
|
|
|
+ storeRelaEntity.setSellVolume(Constant.ZERO);
|
|
|
+ }
|
|
|
+ BigDecimal sellVolume = storeRelaEntity.getSellVolume().subtract(new BigDecimal(orderGoodsEntity.getNumber()));//销售量
|
|
|
+ if (sellVolume.compareTo(Constant.ZERO) < 0) {
|
|
|
+ sellVolume = Constant.ZERO;
|
|
|
+ }
|
|
|
+ storeRelaEntity.setSellVolume(sellVolume);
|
|
|
+ if (null == storeRelaEntity.getStockNum()) {
|
|
|
+ storeRelaEntity.setStockNum(0);
|
|
|
+ }
|
|
|
+ storeRelaEntity.setStockNum(storeRelaEntity.getStockNum() + orderGoodsEntity.getNumber());//库存数量
|
|
|
+ productStoreRelaDao.update(storeRelaEntity);
|
|
|
}
|
|
|
- // 退款记录
|
|
|
- OrderRefundEntity orderRefundEntity = new OrderRefundEntity();
|
|
|
- orderRefundEntity.setOrderId(orderInfo.getId().intValue());
|
|
|
- orderRefundEntity.setRefundTime(new Date());
|
|
|
- orderRefundEntity.setUserId(orderInfo.getUserId());
|
|
|
- orderRefundEntity.setRefundType(2);
|
|
|
- orderRefundEntity.setRefundStatus(2);
|
|
|
- orderRefundEntity.setApprovalTime(new Date());
|
|
|
- orderRefundEntity.setApprover(ShiroUtils.getUserId() + "");
|
|
|
- orderRefundEntity.setCreator(ShiroUtils.getUserId() + "");
|
|
|
- orderRefundEntity.setRefundMoney(refundMoney);
|
|
|
- orderRefundDao.save(orderRefundEntity);
|
|
|
- orderDao.update(orderInfo);
|
|
|
}
|
|
|
|
|
|
/**
|