瀏覽代碼

Merge remote-tracking branch 'origin/zx_saas_goods' into zx_saas_goods

zouxuan 1 年之前
父節點
當前提交
21047ba2c9

+ 29 - 21
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -22,6 +22,7 @@ import java.util.stream.Collectors;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.entity.OrderSkuSync;
+import com.ym.mec.thirdparty.exception.ThirdpartyException;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -480,11 +481,11 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void updateOrder(Map<String, String> rpMap) throws Exception {
-        DealStatusEnum status = "1".equals(rpMap.get("tradeState")) ? DealStatusEnum.SUCCESS : DealStatusEnum.FAILED;
+        DealStatusEnum status = "1".equals(rpMap.get("tradeState")) ? SUCCESS : DealStatusEnum.FAILED;
         StudentPaymentOrder order = findOrderByOrderNo(rpMap.get("merOrderNo"));
         //关闭或失败的订单查询订单成功,订单改成成功,钱退到余额
-        if (order != null && (order.getStatus().equals(DealStatusEnum.CLOSE) || order.getStatus().equals(DealStatusEnum.FAILED)) && status.equals(DealStatusEnum.SUCCESS)) {
-            String memo = order.getStatus().equals(DealStatusEnum.CLOSE) ? "关闭订单" : "失败订单";
+        if (order != null && (order.getStatus().equals(CLOSE) || order.getStatus().equals(DealStatusEnum.FAILED)) && status.equals(SUCCESS)) {
+            String memo = order.getStatus().equals(CLOSE) ? "关闭订单" : "失败订单";
             memo = memo + ",实际支付成功,退到用户余额";
             //更新订单状态
             order.setStatus(status);
@@ -511,7 +512,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             return;
         }
 
-        if (status.equals(DealStatusEnum.SUCCESS)) {
+        if (status.equals(SUCCESS)) {
             order.setPayTime(new Date());
         } else {
             order.setMemo(rpMap.get("remarks"));
@@ -529,7 +530,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 
         callOrderCallBack(order);
 
-        if (status.equals(DealStatusEnum.SUCCESS)
+        if (status.equals(SUCCESS)
                 && StringUtils.isNotBlank(order.getPaymentChannel())
                 && (order.getPaymentChannel().equals(PaymentChannelEnum.ADAPAY.getCode()) || order.getPaymentChannel().equals(PaymentChannelEnum.YEEPAY.getCode()))
                 && !rpMap.containsKey("simulation")) {
@@ -892,7 +893,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         List<StudentPaymentOrderExportDto> orders = studentPaymentOrderDao.getUserApplyOrders(studentId, musicGroupId);
         StudentRegistration studentRegister = studentRegistrationService.getStudentRegister(musicGroupId, studentId);
         for (StudentPaymentOrderExportDto order : orders) {
-            if ((DealStatusEnum.ING.equals(order.getStatus()) || DealStatusEnum.SUCCESS.equals(order.getStatus())) &&
+            if ((DealStatusEnum.ING.equals(order.getStatus()) || SUCCESS.equals(order.getStatus())) &&
                     studentRegister.getPayingStatus().equals(2)) {
                 order.setPayingStatus(2);
             }
@@ -1137,7 +1138,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             return BaseController.failed(HttpStatus.CONTINUE, "您有支付中的订单,是否继续支付");
         }
         //处理关闭订单
-        order.setStatus(DealStatusEnum.CLOSE);
+        order.setStatus(CLOSE);
         order.setMemo("关闭订单");
 
         
@@ -1210,7 +1211,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             StudentRegistration studentRegistration = studentRegistrationService.getStudentRegister(musicGroupId, userId);
             //获取学员在乐团的状态,如果是在读,那么不处理人数
             if (studentRegistration.getMusicGroupStatus() == StudentMusicGroupStatusEnum.APPLY) {
-                List<StudentPaymentOrder> oldStudentPaymentOrderList = this.queryByCondition(GroupType.MUSIC, musicGroupId, userId, DealStatusEnum.SUCCESS, OrderTypeEnum.APPLY);
+                List<StudentPaymentOrder> oldStudentPaymentOrderList = this.queryByCondition(GroupType.MUSIC, musicGroupId, userId, SUCCESS, OrderTypeEnum.APPLY);
                 //判断是否有成功的订单,如果有,表示已经处理过人数
                 if (oldStudentPaymentOrderList == null || oldStudentPaymentOrderList.size() == 0) {
                     List<StudentPaymentOrderDetail> orderDetail = studentPaymentOrderDetailService.getOrderDetail(order.getId());
@@ -1369,7 +1370,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 
         studentPaymentOrder.setStatus(DealStatusEnum.ING);
         if (studentPaymentOrder.getActualAmount().compareTo(BigDecimal.ZERO) == 0) {
-            studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
+            studentPaymentOrder.setStatus(SUCCESS);
         }
         studentPaymentOrder.setGroupType(GroupType.MALL_SELL);
         studentPaymentOrder.setUserId(model.getUserId());
@@ -1490,7 +1491,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         Map<Integer, String> map = new HashMap<>();
         map.put(userId, userId.toString());
 
-        if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+        if (studentPaymentOrder.getStatus() == SUCCESS) {
             try {
                 contractService.transferProduceContract(userId, null, studentPaymentOrder.getType());
             } catch (Exception e) {
@@ -1614,7 +1615,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             rechargeDetail.setAmount(amount);
             rechargeDetail.setBalance(cashAccount.getBalance().add(amount));
             rechargeDetail.setComment("缴费前充值");
-            rechargeDetail.setStatus(DealStatusEnum.SUCCESS);
+            rechargeDetail.setStatus(SUCCESS);
             rechargeDetail.setTransNo(studentPaymentOrder.getTransNo());
             rechargeDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
             rechargeDetail.setUserId(userId);
@@ -1629,12 +1630,12 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             paymentDetail.setAmount(amount.negate());
             paymentDetail.setBalance(cashAccount.getBalance());
             paymentDetail.setComment("商品销售");
-            paymentDetail.setStatus(DealStatusEnum.SUCCESS);
+            paymentDetail.setStatus(SUCCESS);
             paymentDetail.setTransNo(studentPaymentOrder.getTransNo());
             paymentDetail.setType(PlatformCashAccountDetailTypeEnum.GOODS_SELL);
             paymentDetail.setUserId(userId);
             sysUserCashAccountDetailService.insert(paymentDetail);
-        } else if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
+        } else if (studentPaymentOrder.getStatus() == CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
 
             if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
                 sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "商城购买支付失败");
@@ -1782,6 +1783,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     @Transactional
     public OrderCancelModel cancelOrder(StudentPaymentOrder order, String reason) {
         OrderCancelModel model = new OrderCancelModel();
+        model.setSuccess(true);
         try {
             HfMerchantConfig hfMerchantConfig = hfMerchantConfigService.queryByTenantId(order.getTenantId(), order.getPaymentChannel());
             if(hfMerchantConfig == null){
@@ -1818,22 +1820,28 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                 model.setStatus(false);
                 order.setStatus(CLOSE);
                 order.setMemo(reason);
-            } else {
+            } else if (status.equals("pending")){
                 // 执行关单操作
+                Map<String, String> closeInfo = new HashMap<>();
                 if(StringUtils.equals(order.getPaymentChannel(), PaymentChannelEnum.ADAPAY.getCode())) {
-                    Payment.closeWithKey(order.getTransNo(),"", hfMerchantConfig.getMerKey());
+                    closeInfo = Payment.closeWithKey(order.getTransNo(), "", hfMerchantConfig.getMerKey());
                 }else if(StringUtils.equals(order.getPaymentChannel(), PaymentChannelEnum.YEEPAY.getCode())) {
-                    yeepayPaymentService.close(hfMerchantConfig, order.getTransNo(),"", order.getOrderNo());
+                    closeInfo = yeepayPaymentService.close(hfMerchantConfig, order.getTransNo(), "", order.getOrderNo());
                 }
+                boolean success = "success".equals(closeInfo.get("status"));
                 model.setStatus(false);
                 order.setStatus(CLOSE);
+                model.setSuccess(success);
+                model.setMessage(closeInfo.get("msg"));
+            }
+            if (model.getSuccess()) {
+                TenantContextHolder.setTenantId(order.getTenantId());
+                callOrderCallBack(order);
+                TenantContextHolder.clearTenantId();
             }
-            TenantContextHolder.setTenantId(order.getTenantId());
-            callOrderCallBack(order);
-            TenantContextHolder.clearTenantId();
-            model.setSuccess(true);
-        } catch (Exception e) {
+        }catch (Exception e) {
             model.setSuccess(false);
+            model.setMessage(e.getMessage());
             logger.error("订单[{}]取消失败", order.getTransNo(), e);
         }
         return model;

+ 11 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/OrderCancelModel.java

@@ -17,6 +17,17 @@ public class OrderCancelModel {
     // 调用状态  true:成功  false 失败
     private Boolean success;
 
+    private String message;
+
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
     public String getPayChannel() {
         return payChannel;
     }

+ 5 - 7
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/OmsOrderController.java

@@ -1,20 +1,18 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.admin.wrapper.OmsOrderWrapper;
 import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
 import com.yonge.cooleshow.admin.dto.*;
-import com.yonge.cooleshow.mbg.model.OmsOrder;
 import com.yonge.cooleshow.admin.service.OmsOrderService;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * 订单管理Controller
@@ -53,7 +51,7 @@ public class OmsOrderController {
     @ResponseBody
     public CommonResult close(@RequestParam("ids") List<Long> ids, @RequestParam String note) {
 
-        // int count = orderService.close(ids, note);
+//         int count = orderService.close(ids, note);
         // if (count > 0) {
         //     return CommonResult.success(count);
         // }
@@ -64,9 +62,9 @@ public class OmsOrderController {
     @ApiOperation("批量完成订单")
     @RequestMapping(value = "/update/success", method = RequestMethod.POST)
     @ResponseBody
-    public CommonResult success(@RequestBody List<Long> ids) {
+    public CommonResult success(@RequestBody @Validated OmsOrderWrapper.OrderStatusUpdate orderStatusUpdate) {
 
-         int count = orderService.success(ids);
+         int count = orderService.updateStatus(orderStatusUpdate);
         // if (count > 0) {
         //     return CommonResult.success(count);
         // }

+ 2 - 1
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderService.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.admin.service;
 import com.yonge.cooleshow.admin.dto.*;
 import com.yonge.cooleshow.admin.dto.search.OrderStatisticalSearch;
 import com.yonge.cooleshow.admin.dto.search.UserStatisticalSearch;
+import com.yonge.cooleshow.admin.wrapper.OmsOrderWrapper;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
@@ -101,5 +102,5 @@ public interface OmsOrderService {
     // 同步订单状态,
     boolean productUpdateOrderStatus(String orderNo, Integer status);
 
-    int success(List<Long> ids);
+    int updateStatus(OmsOrderWrapper.OrderStatusUpdate orderStatusUpdate);
 }

+ 10 - 6
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java

@@ -17,6 +17,7 @@ import com.yonge.cooleshow.admin.dto.search.OrderStatisticalSearch;
 import com.yonge.cooleshow.admin.dto.search.UserStatisticalSearch;
 import com.yonge.cooleshow.admin.enums.OrderStatisticalEnum;
 import com.yonge.cooleshow.admin.service.*;
+import com.yonge.cooleshow.admin.wrapper.OmsOrderWrapper;
 import com.yonge.cooleshow.mbg.mapper.*;
 import com.yonge.cooleshow.mbg.model.*;
 import lombok.extern.slf4j.Slf4j;
@@ -220,6 +221,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
                     if (skuStockRecord.getInternalStock() > 0) {
                         OrderSkuSync.SkuSync sync = new OrderSkuSync.SkuSync();
                         sync.setSku(skuStockRecord.getProductSkuId());
+                        sync.setType("INTERNAL");
 
 
                         int stock = skuStockRecord.getInternalStock() - skuStockRecord.getInternalSaleStock();
@@ -254,6 +256,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
                         sync.setSku(skuStockRecord.getProductSkuId());
                         sync.setPrice(skuStockRecord.getPrice());
                         sync.setRecordId(skuStockRecord.getId());
+                        sync.setType("TAX");
 
                         int stock = skuStockRecord.getTaxStock() - skuStockRecord.getTaxSaleStock();
                         if (stock > 0) {
@@ -808,23 +811,24 @@ public class OmsOrderServiceImpl implements OmsOrderService {
     // 直接修改订单状态为完成
     @Override
     @Transactional
-    public int success(List<Long> ids) {
+    public int updateStatus(OmsOrderWrapper.OrderStatusUpdate orderStatusUpdate) {
+
         OmsOrder record = new OmsOrder();
-        record.setStatus(3);
+        record.setStatus(orderStatusUpdate.getStatus());
         OmsOrderExample example = new OmsOrderExample();
-        example.createCriteria().andDeleteStatusEqualTo(0).andIdIn(ids);
+        example.createCriteria().andDeleteStatusEqualTo(0).andIdIn(orderStatusUpdate.getIds());
         orderMapper.updateByExampleSelective(record, example);
 
 
         //添加操作记录
-        List<OmsOrderOperateHistory> operateHistoryList = ids.stream()
+        List<OmsOrderOperateHistory> operateHistoryList = orderStatusUpdate.getIds().stream()
             .map(id -> {
                 OmsOrderOperateHistory history = new OmsOrderOperateHistory();
                 history.setOrderId(id);
                 history.setCreateTime(new Date());
                 history.setOperateMan("后台管理员");
-                history.setOrderStatus(3);
-                history.setNote("订单完成");
+                history.setOrderStatus(orderStatusUpdate.getStatus());
+                history.setNote("修改订单状态");
                 return history;
             }).collect(Collectors.toList());
         return orderOperateHistoryDao.insertList(operateHistoryList);

+ 26 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/wrapper/OmsOrderWrapper.java

@@ -0,0 +1,26 @@
+package com.yonge.cooleshow.admin.wrapper;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class OmsOrderWrapper {
+
+    @Data
+    public static class OrderStatusUpdate {
+
+        // 订单ID集合
+        @ApiModelProperty("订单ID集合")
+        @NotNull(message = "订单ID集合不能为空")
+        @NotEmpty(message = "订单ID集合不能为空")
+        private List<Long> ids;
+
+        // 状态
+        @ApiModelProperty("订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单")
+        @NotNull(message = "订单状态不能为空")
+        private Integer status;
+    }
+}

+ 3 - 2
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -595,12 +595,13 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
                     cancelOrder.getOrderSn());
             if (userOrderPayment != null) {
                 HttpResponseResult<OrderCancelModel> responseResult = webFeignService.cancelOrder(userOrderPayment.getAdapayNo(),message);
+                LOG.info("管乐迷取消订单返回结果:{}",JSON.toJSONString(responseResult));
                 if (!responseResult.getStatus()) {
-                    throw new BizException("远程取消失败");
+                    throw new BizException("订单取消失败");
                 }
                 OrderCancelModel data = responseResult.getData();
                 if (!data.getSuccess()) {
-                    throw new BizException("远程取消失败");
+                    throw new BizException("订单取消失败:"+data.getMessage());
                 }
                 if (data.getStatus() !=null && data.getStatus()) {
                     LOG.info("订单支付成功,修改订单状态");

+ 7 - 3
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Payment.java

@@ -217,10 +217,10 @@ public class Payment {
      * @param merchantKey 商户Key
      * @return Map<String, Object>
      */
-    public static Map<String ,Object> closeWithKey(String transNo, String reason, String merchantKey) {
+    public static Map<String ,String> closeWithKey(String transNo, String reason, String merchantKey) {
 
 
-        Map<String, Object> result = new HashMap<>();
+        Map<String, String> result = new HashMap<>();
 
         Map<String, Object> params = new HashMap<>();
 
@@ -234,6 +234,7 @@ public class Payment {
         } catch (BaseAdaPayException e) {
             LOGGER.info("请求汇付[关单]接口失败:{}", e.getMessage());
             result.put("status", "failed");
+            result.put ("msg",e.getMessage());
             return result;
         }
         if (StringUtils.equals(paymentClose.get("status").toString(), "failed")) {
@@ -248,10 +249,13 @@ public class Payment {
                 LOGGER.warn("调用汇付[关单]接口同步返回,出现异常:{}", paymentClose);
 
                 result.put("status", "success");
+                return result;
             }
             result.put("status", "failed");
-            // throw new PaymentException(paymentClose.get("error_msg").toString());
+            result.put ("msg",paymentClose.get("error_msg").toString());
+            return result;
         }
+        result.put("status", "success");
 
         return result;
     }

+ 9 - 5
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yeepay/YeepayPaymentService.java

@@ -113,11 +113,11 @@ public class YeepayPaymentService {
      * @param reason 原因
      * @return Map<String, Object>
      */
-    public Map<String,Object> close(HfMerchantConfig hfMerchantConfig,String transNo, String reason, String outTransNo) {
+    public Map<String,String> close(HfMerchantConfig hfMerchantConfig,String transNo, String reason, String outTransNo) {
 
 
-        Map<String, Object> result = new HashMap<>();
-        result.put("status", "failed");
+        Map<String, String> result = new HashMap<>();
+        result.put("status", "success");
         try {
 
             // 订单参数
@@ -135,12 +135,15 @@ public class YeepayPaymentService {
 
             // 关闭订单异常消息
             if (Objects.nonNull(ret.getError())) {
-                LOGGER.error("易宝[关闭订单]接口失败:transNo={}, reason={}", transNo, reason, ret.getError());
-                result.put("status", "failed");
+                LOGGER.error("易宝[关闭订单]接口失败:transNo={}, reason={}", transNo, ret.getError());
+                result.put("msg", ret.getError().getSubMessage());
+                result.put("status","failed");
             }
 
             JSONObject jsonObject = JSON.parseObject(ret.getStringResult());
 
+            // 响应参数
+
             // 关闭订单成功
             // OPR00000	成功
             // OPR18015	已拒绝支付,不必关闭订单
@@ -153,6 +156,7 @@ public class YeepayPaymentService {
         } catch (Exception e) {
             LOGGER.error("易宝[关闭订单]接口失败:transNo={}, reason={}", transNo, reason, e);
             result.put("status", "failed");
+            result.put("msg", e.getMessage());
 
         }