Procházet zdrojové kódy

bugfix:过期自动退款

lyx před 1 měsícem
rodič
revize
b6e5db9ba0

+ 4 - 3
alien-entity/src/main/java/shop/alien/mapper/LifeUserOrderMapper.java

@@ -1,7 +1,6 @@
 package shop.alien.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
@@ -39,7 +38,8 @@ public interface LifeUserOrderMapper extends BaseMapper<LifeUserOrder> {
             "from life_group_buy_main lgbm \n" +
             "\tunion all\n" +
             "-- 代金券\n" +
-            "\tselect id coupon_id,1 coupon_type,lc.name coupon_name, SUBSTRING_INDEX(image_path, ',', 1) AS image_id,0 effective_date_type,expiration_date effective_date_value \n" +
+            "\tselect id coupon_id,1 coupon_type,lc.name coupon_name, SUBSTRING_INDEX(image_path, ',', 1) AS image_id,\n" +
+            "case when expiration_type = 1 then 0 else 1 end effective_date_type,case when expiration_type = 1 then expiration_date else validity_period end  effective_date_value \n" +
             "from life_coupon lc \n" +
             ")\n" +
             "select luo.id,luo.buy_time,luo.status,luo.price,luo.final_price,luo.user_id,luo.store_id,luo.order_no,luo.pay_time,luo.cancel_time,luo.finish_time,luo.order_str,luo.expert_order_id,luo.order_appraise,\n" +
@@ -82,7 +82,8 @@ public interface LifeUserOrderMapper extends BaseMapper<LifeUserOrder> {
             "from life_group_buy_main lgbm \n" +
             "\tunion all\n" +
             "-- 代金券\n" +
-            "\tselect id coupon_id,1 coupon_type,lc.name coupon_name, SUBSTRING_INDEX(image_path, ',', 1) AS image_id,0 effective_date_type,expiration_date effective_date_value \n" +
+            "\tselect id coupon_id,1 coupon_type,lc.name coupon_name, SUBSTRING_INDEX(image_path, ',', 1) AS image_id,\n" +
+            "case when expiration_type = 1 then 0 else 1 end effective_date_type,case when expiration_type = 1 then expiration_date else validity_period end  effective_date_value \n" +
             "from life_coupon lc \n" +
             ")\n" +
             "select luo.id,luo.buy_time,luo.status,luo.price,luo.final_price,luo.user_id,luo.store_id,luo.order_no,luo.pay_time,luo.cancel_time,luo.finish_time,luo.order_str,luo.expert_order_id,luo.order_appraise,\n" +

+ 3 - 2
alien-entity/src/main/resources/mapper/LifeUserOrderMapper.xml

@@ -57,6 +57,7 @@
         <result column="order_str" property="orderStr"/>
         <result column="expert_order_id" property="expertOrderId"/>
         <result column="order_appraise" property="orderAppraise"/>
+        <result column="user_id" property="userId"/>
 
         <collection property="orderCouponMiddleList" ofType="shop.alien.entity.store.vo.OrderCouponMiddleVo">
             <id column="ocmId" property="id" />
@@ -78,7 +79,7 @@
         from life_group_buy_main lgbm where lgbm.delete_flag = 0
         union all
         select id coupon_id,1 coupon_type,lc.name coupon_name,lc.offprice offprice,price original_price,SUBSTRING_INDEX(image_path, ',', 1) AS image_id,
-               0 effective_date_type,expiration_date effective_date_value,use_rule use_rules,reservation_rules,applicable_num,1 quota_type,buy_limit quota_value,single_qty
+        case when expiration_type = 1 then 0 else 1 end effective_date_type, case when expiration_type = 1 then expiration_date else validity_period end  effective_date_value,use_rule use_rules,reservation_rules,applicable_num,1 quota_type,buy_limit quota_value,single_qty
         from life_coupon lc where lc.delete_flag = 0
         )
         select luo.id,luo.order_no,luo.created_time , luo.price ,
@@ -134,7 +135,7 @@
         from life_group_buy_main lgbm where lgbm.delete_flag = 0
         union all
         select id coupon_id,1 coupon_type,lc.name coupon_name,lc.offprice offprice,SUBSTRING_INDEX(image_path, ',', 1) AS image_id,
-        0 effective_date_type,expiration_date effective_date_value,use_rule use_rules,reservation_rules,applicable_num,1 quota_type,buy_limit quota_value,single_qty,end_date
+        case when expiration_type = 1 then 0 else 1 end effective_date_type,case when expiration_type = 1 then expiration_date else validity_period end  effective_date_value,use_rule use_rules,reservation_rules,applicable_num,1 quota_type,buy_limit quota_value,single_qty,end_date
         from life_coupon lc where lc.delete_flag = 0
         )
         select luo.id,luo.order_no,luo.created_time , luo.price ,luo.final_price

+ 13 - 1
alien-job/src/main/java/shop/alien/job/store/LifeUserOrderJob.java

@@ -15,6 +15,7 @@ import shop.alien.entity.store.vo.LifeUserOrderVo;
 import shop.alien.job.feign.AlienStoreFeign;
 import shop.alien.mapper.*;
 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;
 
@@ -181,7 +182,18 @@ public class LifeUserOrderJob {
                     guoqiDate = calendar.getTime();
                 } else {
                     // 指定时间段
-                    String goqiDate = effectiveDateValue.split(",")[1];
+                    String goqiDate = null;
+                    if(order.getCouponType() == CouponTypeEnum.COUPON.getCode()){
+                        // 1. 将字符串转换为 long 类型
+                        long timestamp = Long.parseLong(effectiveDateValue.split(",")[1]);
+                        // 2. 使用 timestamp 构建 Date 对象
+                        Date date = new Date(timestamp);
+                        // 如果你需要特定格式的字符串,可以再进行格式化
+                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                        goqiDate =sdf.format(date);
+                    } else {
+                        goqiDate = effectiveDateValue.split(",")[1];
+                    }
                     try {
                         guoqiDate = new SimpleDateFormat("yyyy-MM-dd").parse(goqiDate);
                     } catch (ParseException e) {