Bläddra i källkod

bugfix:退款更改

lyx 3 månader sedan
förälder
incheckning
d4ecaaf46a

+ 4 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/LifeUserOrderVo.java

@@ -134,6 +134,10 @@ public class LifeUserOrderVo {
     private String startTime;
     @ApiModelProperty(value = "营业结束时间")
     private String endTime;
+    @ApiModelProperty(value = "经营类型")
+    private String storeType;
+    @ApiModelProperty(value = "团购/代金券结束时间")
+    private Date endDate;
 
 
 

+ 9 - 1
alien-entity/src/main/java/shop/alien/mapper/LifeUserOrderMapper.java

@@ -1,6 +1,7 @@
 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 +40,7 @@ public interface LifeUserOrderMapper extends BaseMapper<LifeUserOrder> {
             "from life_coupon lc where lc.delete_flag = 0\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,\n" +
-            "si.store_name,si.commission_rate,\n" +
+            "si.store_name,si.commission_rate,si.business_section store_type,\n" +
             "count(ocm.coupon_code) coupon_count,\n" +
             "simg.img_url,\n" +
             "lu.user_phone,\n" +
@@ -52,4 +53,11 @@ public interface LifeUserOrderMapper extends BaseMapper<LifeUserOrder> {
             "left join  store_img simg on simg.id = tc.image_id and simg.delete_flag = 0 \n" +
             "${ew.customSqlSegment}")
     IPage<LifeUserOrderVo> queryUserOrderList(IPage<LifeUserOrderVo> brandedPage,@Param(Constants.WRAPPER) QueryWrapper<LifeUserOrderVo> lifeUserOrderQueryWrapper);
+
+    /**
+     * 查询过期退款订单
+     * @param selectWrapper
+     * @return
+     */
+    List<LifeUserOrderVo> selectRefundList(LambdaUpdateWrapper<LifeUserOrder> selectWrapper);
 }

+ 32 - 0
alien-entity/src/main/resources/mapper/LifeUserOrderMapper.xml

@@ -44,6 +44,7 @@
         <result column="business_date" property="businessDate"/>
         <result column="start_time" property="startTime"/>
         <result column="end_time" property="endTime"/>
+        <result column="end_date" property="endDate"/>
 
         <collection property="orderCouponMiddleList" ofType="shop.alien.entity.store.vo.OrderCouponMiddleVo">
             <id column="ocmId" property="id" />
@@ -96,4 +97,35 @@
         where luo.id = #{orderId}
         order by luo.created_time desc
     </select>
+
+    <select id="selectRefundList" resultMap="BaseResultMap">
+        with total_coupon as(
+        select id coupon_id,2 coupon_type,lgbm.group_name coupon_name,preferential_price offprice,SUBSTRING_INDEX(image_id, ',', 1) AS image_id,
+        effective_date_type,effective_date_value,use_rules,reservation_rules,applicable_num,quota_type,quota_value,inventory_num single_qty,end_time end_date
+        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
+        from life_coupon lc where lc.delete_flag = 0
+        )
+        select luo.id,luo.order_no,luo.created_time , luo.price ,luo.final_price
+        ,luo.pay_method,luo.buy_time,luo.cancel_time,luo.pay_time,luo.finish_time,luo.status order_status,
+        tc.*,
+        ldc.nominal_value,
+        lu.user_phone,lu.user_name,lu.id user_id,
+        ocm.id ocmId,ocm.status,ocm.coupon_code,ocm.refund_time,ocm.refund_reason,ocm.price refundPrice,
+        si.id store_id,si.store_name,si.commission_rate,si.store_address,si.store_tel,
+        simg.img_url,
+        sbi.business_type,sbi.business_date,sbi.start_time,sbi.end_time
+        from life_user_order luo
+        left join store_info si on si.id = luo.store_id and si.delete_flag = 0
+        left join order_coupon_middle ocm on ocm.order_id = luo.id and ocm.delete_flag = 0
+        left join total_coupon tc on tc.coupon_id = ocm.coupon_id and tc.coupon_type = luo.coupon_type
+        left join life_discount_coupon ldc on ldc.id = luo.quan_id and ldc.delete_flag = 0
+        left join life_user lu on lu.id = luo.user_id and lu.delete_flag = 0
+        left join store_img simg on simg.id = tc.image_id and simg.delete_flag = 0
+        left join store_business_info sbi on sbi.store_id = si.id and sbi.delete_flag = 0
+        where luo.status = 1
+        order by luo.created_time desc
+    </select>
 </mapper>

+ 10 - 6
alien-store/src/main/java/shop/alien/store/service/LifeUserOrderService.java

@@ -23,6 +23,7 @@ import shop.alien.entity.store.vo.LifeUserOrderVo;
 import shop.alien.entity.store.vo.StoreInfoVo;
 import shop.alien.mapper.*;
 import shop.alien.store.config.GaoDeMapUtil;
+import shop.alien.store.util.ali.AliApi;
 import shop.alien.util.ali.AliOSSUtil;
 import shop.alien.util.common.AlipayTradeRefund;
 import shop.alien.util.common.UniqueRandomNumGenerator;
@@ -80,6 +81,7 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
     private final AliOSSUtil aliOSSUtil;
     private final OrderCouponMiddleMapper orderCouponMiddleMapper;
     private final LifeGroupBuyMainMapper lifeGroupBuyMainMapper;
+    private final AliApi aliApi;
 
     @Value("${spring.web.resources.excel-path}")
     private String excelPath;
@@ -428,9 +430,7 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
         }
         Date now = new Date();
         LifeUserOrder order = lifeUserOrderMapper.selectById(refundOrder.getOrderId());
-        // TODO 退款
-//        String result = alipayTradeRefund.processRefund(order.getOrderNo(), refundOrder.getRefundMoney(), refundOrder.getDescription());
-        String result = refundOrder.getDescription();
+        String result = aliApi.processRefund(order.getOrderNo(), refundOrder.getRefundMoney(), refundOrder.getDescription());
         String refundMessage = "";
 
         // 更新的中间表id
@@ -633,7 +633,7 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
      * 创建用户订单
      * @param lifeUserOrderDto 构造数据用
      */
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public Map<String, Object> createUserOrder(LifeUserOrderDto lifeUserOrderDto) {
         Date date = new Date();
         //1.创建订单
@@ -660,7 +660,10 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
         //2.判断是否使用优惠券
         //查询优惠券信息
         if (StringUtils.isNotEmpty(lifeUserOrderDto.getYhquanId())) {
-            LifeDiscountCouponUser lifeDiscountCouponUser = lifeDiscountCouponUserMapper.selectById(lifeUserOrderDto.getYhquanId());
+            LifeDiscountCouponUser lifeDiscountCouponUser = lifeDiscountCouponUserMapper.selectOne(new QueryWrapper<LifeDiscountCouponUser>()
+                    .eq("coupon_id", lifeUserOrderDto.getYhquanId())
+                    .eq("user_id", lifeUserOrderDto.getUserId())
+                    .eq("delete_flag", 0));
             //将优惠券状态变更为已使用
             lifeDiscountCouponUser.setStatus(Integer.parseInt(DiscountCouponEnum.HAVE_BEEN_USED.getValue()));
             //将优惠券使用时间存入
@@ -736,6 +739,7 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
                 lifeUserOrder.setPayTime(date);
                 lifeUserOrder.setPayMethod(lifeUserOrderDto.getPayMethod());
                 lifeUserOrder.setStatus(lifeUserOrderDto.getStatus());
+                lifeUserOrder.setOrderNo(lifeUserOrderDto.getOrderNo());
                 orderCouponMiddleUpdateWrapper.set("status",lifeUserOrderDto.getStatus());
                 break;
             case 3:
@@ -762,7 +766,7 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
         }
         // 判断订单状态
         // 已核销才可以删除和已退款可以核销
-        if (lifeUserOrder.getStatus() == OrderStatusEnum.WAIT_USE.getStatus() || lifeUserOrder.getStatus() == OrderStatusEnum.WAIT_PAY.getStatus()) {
+        if (lifeUserOrder.getStatus() == OrderStatusEnum.WAIT_USE.getStatus()) {
             log.error("deleteUserOrder订单状态错误,订单完成才可以删除");
             return false;
         }

+ 32 - 0
alien-store/src/main/java/shop/alien/store/util/ali/AliApi.java

@@ -165,6 +165,38 @@ public class AliApi {
     }
 
     /**
+     * 退款
+     * @param outTradeNo
+     * @param refundAmount
+     * @param refundReason
+     * @return
+     */
+
+    public String processRefund(String outTradeNo, String refundAmount, String refundReason) {
+        try {
+            // TODO 部分退款支付宝接口修改
+            AlipayClient alipayClient = new DefaultAlipayClient(setAlipayConfig(null));
+            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
+            AlipayTradeRefundModel model = new AlipayTradeRefundModel();
+            model.setOutTradeNo(outTradeNo);
+            model.setRefundAmount(refundAmount);
+            model.setRefundReason(refundReason);
+            request.setBizModel(model);
+            AlipayTradeRefundResponse response = alipayClient.certificateExecute(request);
+            String refundReslut = "";
+            if (response.isSuccess()) {
+                refundReslut = "调用成功";
+            } else {
+                refundReslut = "调用失败";
+            }
+            return refundReslut;
+        } catch (AlipayApiException e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+    /**
      * 身份证二要素核验
      *
      * @param name   姓名