3 Комити 9e4646662b ... f0b1377546

Аутор SHA1 Порука Датум
  lyx f0b1377546 fix:修改ocr配置为公司配置 пре 1 недеља
  lyx 6ae33d2a18 fix:自动退款修改 пре 1 недеља
  lyx f8164c10fa bugfix:ocr功能完善 пре 1 недеља

+ 13 - 0
alien-job/src/main/java/shop/alien/job/feign/AlienStoreFeign.java

@@ -3,7 +3,12 @@ package shop.alien.job.feign;
 import com.alibaba.fastjson.JSONObject;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
+import shop.alien.entity.result.R;
+
+import java.util.Map;
 
 @FeignClient(url = "${feign.alienStore.url}", name = "alien-store")
 public interface AlienStoreFeign {
@@ -56,4 +61,12 @@ public interface AlienStoreFeign {
                                    @RequestParam(value = "refundReason") String refundReason,
                                    @RequestParam(value = "partialRefundCode") String partialRefundCode);
 
+    /**
+     * 退款接口
+     * @param params 退款参数(包含订单号、退款金额等)
+     * @return 退款结果
+     */
+    @RequestMapping("payment/refunds")
+    public R refunds(@RequestBody Map<String, String> params);
+
 }

+ 30 - 7
alien-job/src/main/java/shop/alien/job/store/LifeUserOrderJob.java

@@ -18,6 +18,7 @@ import shop.alien.util.common.UniqueRandomNumGenerator;
 import shop.alien.util.common.constant.CouponTypeEnum;
 import shop.alien.util.common.constant.DiscountCouponEnum;
 import shop.alien.util.common.constant.OrderStatusEnum;
+import shop.alien.util.common.constant.PaymentEnum;
 
 import java.math.BigDecimal;
 import java.text.ParseException;
@@ -212,15 +213,37 @@ public class LifeUserOrderJob {
                         // 统计退款金额
                         BigDecimal totalRefundAmount = refundList.stream().map(x -> x.getPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
                         // 判断本次是否是全退 执行退款
-                        String refundResult = null;
-                        if (refundList.size() == orderCouponMiddleList.size()) {
-                            // 全退
-                            refundResult = alienStoreFeign.processRefund(order.getOrderNo(), totalRefundAmount.toString(), "过期自动退","");
+                        String refundResult = "";
+                        String partialRefundCode = "";
+                        if (refundList.size() != orderCouponMiddleList.size()) {
+                            partialRefundCode = UniqueRandomNumGenerator.generateUniqueCode(12);
+                        }
+                        String payMethod = order.getPayMethod();
+                        String payType = "";
+                        Map<String, String> params = new HashMap<>();
+                        if("支付宝支付".equals(payMethod)) {
+                            payType = PaymentEnum.ALIPAY.getType();
+                            params.put("payType", payType);
+                            params.put("outTradeNo", order.getOrderNo());
+                            params.put("refundAmount", totalRefundAmount.toString());
+                            params.put("refundReason", "过期自动退");
+                            params.put("partialRefundCode",partialRefundCode);
                         } else {
-                            // TODO 本次部分退款
-                            String partialRefundCode = UniqueRandomNumGenerator.generateUniqueCode(12);
-                            refundResult = alienStoreFeign.processRefund(order.getOrderNo(), totalRefundAmount.toString(), "过期自动退",partialRefundCode);
+                            payType = PaymentEnum.WECHAT_PAY.getType();
+                            params.put("payType", payType);
+                            params.put("outTradeNo", order.getOrderNo());
+                            params.put("reason", "过期自动退");
+                            params.put("refundAmount", String.valueOf(totalRefundAmount.multiply(new BigDecimal(100)).longValue()));
+                            params.put("totalAmount", String.valueOf(new BigDecimal(order.getFinalPrice()).multiply(new BigDecimal(100)).longValue()));
+                        }
+                        // 调用支付策略
+                        try {
+                            refundResult = alienStoreFeign.refunds(params).getData().toString();
+                        } catch (Exception e) {
+                            log.error(String.format("LifeUserOrderJob requestRefund error, payType: %s, params: %s, error: %s", payType, params, e.getMessage()));
                         }
+
+
                         if ("调用成功".equals(refundResult)) {
                             //  1.更新中间表状态
                             int updateNum = orderCouponMiddleMapper.update(null, new LambdaUpdateWrapper<OrderCouponMiddle>()

+ 2 - 2
alien-store/src/main/java/shop/alien/store/util/ali/ocr/AbstractOcrStrategy.java

@@ -47,14 +47,14 @@ public abstract class AbstractOcrStrategy implements OcrStrategy {
             config.setAccessKeyId(accessKeyId);
         } else {
             // 默认值,仅用于测试,生产环境应该从配置文件读取
-            config.setAccessKeyId("LTAI5tLAUTQg7R1xaKvxAYJu");
+            config.setAccessKeyId("LTAI5tFDRZ31MXse5TEQyPwQ");
         }
         
         if (org.apache.commons.lang3.StringUtils.isNotBlank(accessKeySecret)) {
             config.setAccessKeySecret(accessKeySecret);
         } else {
             // 默认值,仅用于测试,生产环境应该从配置文件读取
-            config.setAccessKeySecret("ayVk34nK9vQZ2bs5vDCYftQCEXXN3B");
+            config.setAccessKeySecret("n0UHNuzIZMA7CnAt1uzb43FCbpbQDg");
         }
         
         // Endpoint 请参考 https://api.aliyun.com/product/ocr-api

+ 3 - 0
alien-store/src/main/java/shop/alien/store/util/ali/ocr/strategy/BusinessLicenseOcrStrategy.java

@@ -16,6 +16,7 @@ import shop.alien.store.service.StoreImgService;
 import shop.alien.store.util.ali.ocr.AbstractOcrStrategy;
 import shop.alien.util.common.constant.OcrTypeEnum;
 
+import java.util.Date;
 import java.util.Map;
 
 /**
@@ -94,6 +95,8 @@ public class BusinessLicenseOcrStrategy extends AbstractOcrStrategy {
                 ocrImageUpload.setImageUrl(imageUrl);
                 ocrImageUpload.setOcrResult(jsonObject.getJSONObject("data").toJSONString());
                 ocrImageUpload.setOcrType(OcrTypeEnum.BUSINESS_LICENSE.getCode());
+                ocrImageUpload.setCreateTime(new Date());
+                ocrImageUpload.setUpdateTime(new Date());
                 super.saveOcrImage(ocrImageUpload);
                 resultArray.add(jsonObject.getJSONObject("data"));
             } catch (TeaException error) {

+ 3 - 0
alien-store/src/main/java/shop/alien/store/util/ali/ocr/strategy/FoodManageLicenseOcrStrategy.java

@@ -16,6 +16,7 @@ import shop.alien.store.service.StoreImgService;
 import shop.alien.store.util.ali.ocr.AbstractOcrStrategy;
 import shop.alien.util.common.constant.OcrTypeEnum;
 
+import java.util.Date;
 import java.util.Map;
 
 /**
@@ -94,6 +95,8 @@ public class FoodManageLicenseOcrStrategy extends AbstractOcrStrategy {
                 ocrImageUpload.setImageUrl(imageUrl);
                 ocrImageUpload.setOcrResult(jsonObject.getJSONObject("data").toJSONString());
                 ocrImageUpload.setOcrType(OcrTypeEnum.FOOD_MANAGE_LICENSE.getCode());
+                ocrImageUpload.setCreateTime(new Date());
+                ocrImageUpload.setUpdateTime(new Date());
                 super.saveOcrImage(ocrImageUpload);
                 resultArray.add(jsonObject.getJSONObject("data"));
             } catch (TeaException error) {