guomengjiao před 2 měsíci
rodič
revize
8c5ae537df

+ 1 - 0
ruoyi-api/src/main/java/com/ruoyi/api/controller/info/ApiOrderRefundController.java

@@ -40,6 +40,7 @@ public class ApiOrderRefundController extends AbstractApiController {
     @ApiOperation("查询售后订单列表")
     @GetMapping("/page")
     public TableDataInfo<OrderRefundVo> page(@Validated(QueryGroup.class) OrderRefundBo bo, PageQuery pageQuery) {
+        bo.setUserId(getUserId());
         return iOrderRefundService.queryPageList(bo, pageQuery);
     }
 

+ 23 - 0
ruoyi-info/ruoyi-info-biz/src/main/java/com/ruoyi/info/order/domain/bo/OrderRefundBo.java

@@ -1,5 +1,6 @@
 package com.ruoyi.info.order.domain.bo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseEntity;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
@@ -8,6 +9,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
@@ -33,7 +35,13 @@ public class OrderRefundBo extends BaseEntity {
     private Long id;
 
     private Long userId;
+    @ApiModelProperty(value = "C端用户手机号")
+    private String userMobile;
     private List<Long> hospitalDepartmentIds;
+    @ApiModelProperty("医院ID")
+    private Long hospitalId;
+    @ApiModelProperty("服务名称")
+    private String serviceName;
 
     /**
      * 退款订单号
@@ -111,5 +119,20 @@ public class OrderRefundBo extends BaseEntity {
     @ApiModelProperty(value = "操作人", required = true)
     private Long operatorId;
 
+    /**
+     * 开始日期(查询用)
+     */
+    @ApiModelProperty(value = "开始日期(查询用)", required = true)
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date startTime;
+
+    /**
+     * 结束日期(查询用)
+     */
+    @ApiModelProperty(value = "结束日期(查询用)", required = true)
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date endTime;
 
 }

+ 3 - 0
ruoyi-info/ruoyi-info-biz/src/main/java/com/ruoyi/info/order/domain/vo/OrderVo.java

@@ -247,4 +247,7 @@ public class OrderVo {
 
     @ApiModelProperty("订单评价信息")
     private OrderReviewsVo orderReviews;
+
+    @ApiModelProperty("是否有退款")
+    private Boolean hasRefund;
 }

+ 2 - 0
ruoyi-info/ruoyi-info-biz/src/main/java/com/ruoyi/info/order/service/IOrderRefundService.java

@@ -75,4 +75,6 @@ public interface IOrderRefundService {
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
     boolean cancel(Long id);
+
+    boolean hasRefund(Long id);
 }

+ 2 - 0
ruoyi-info/ruoyi-info-biz/src/main/java/com/ruoyi/info/order/service/IOrderService.java

@@ -101,4 +101,6 @@ public interface IOrderService {
     boolean evaluate(OrderReviewsBo bo);
 
     List<OrderWorkerSumVo> getOrderWorkerSum();
+
+    OrderVo convertAllVo(OrderVo vo, boolean queryPatient);
 }

+ 18 - 1
ruoyi-info/ruoyi-info-biz/src/main/java/com/ruoyi/info/order/service/impl/OrderRefundServiceImpl.java

@@ -30,6 +30,7 @@ import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 售后订单Service业务层处理
@@ -54,6 +55,12 @@ public class OrderRefundServiceImpl implements IOrderRefundService {
     @Override
     public TableDataInfo<OrderRefundVo> queryPageList(OrderRefundBo bo, PageQuery pageQuery) {
         Page<OrderRefundVo> result = baseMapper.selectListPage(pageQuery.build(), bo);
+        result.setRecords(result.getRecords().stream().map(orv -> {
+            if (ObjectUtil.isNotNull(orv.getOrderVo())) {
+                orv.setOrderVo(orderService.convertAllVo(orv.getOrderVo(), true));
+            }
+            return orv;
+        }).collect(Collectors.toList()));
         return TableDataInfo.build(result);
     }
 
@@ -93,7 +100,12 @@ public class OrderRefundServiceImpl implements IOrderRefundService {
      */
     @Override
     public OrderRefundVo queryById(Long id){
-        return baseMapper.selectVoById(id);
+        OrderRefundVo orderRefundVo = baseMapper.selectVoById(id);
+        if(ObjectUtil.isEmpty(orderRefundVo)){
+            return null;
+        }
+        orderRefundVo.setOrderVo(orderService.queryById(orderRefundVo.getOrderId()));
+        return orderRefundVo;
     }
 
     /**
@@ -185,4 +197,9 @@ public class OrderRefundServiceImpl implements IOrderRefundService {
         return baseMapper.updateById(orderRefund) > 0;
     }
 
+    @Override
+    public boolean hasRefund(Long id) {
+        return baseMapper.selectCount(new LambdaQueryWrapper<OrderRefund>().eq(OrderRefund::getOrderId, id)) > 0;
+    }
+
 }

+ 40 - 29
ruoyi-info/ruoyi-info-biz/src/main/java/com/ruoyi/info/order/service/impl/OrderServiceImpl.java

@@ -38,6 +38,7 @@ import com.ruoyi.info.order.enums.CancellationMethod;
 import com.ruoyi.info.order.enums.OrderStatus;
 import com.ruoyi.info.order.exception.OrderExceptionEnum;
 import com.ruoyi.info.order.mapper.OrderMapper;
+import com.ruoyi.info.order.service.IOrderRefundService;
 import com.ruoyi.info.order.service.IOrderReviewsService;
 import com.ruoyi.info.order.service.IOrderService;
 import com.ruoyi.info.order.service.IOrderWorkerChangeRecordService;
@@ -52,12 +53,13 @@ import com.ruoyi.system.service.ISysSequenceService;
 import com.ruoyi.user.domain.User;
 import com.ruoyi.user.service.IUserService;
 import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -84,6 +86,9 @@ public class OrderServiceImpl implements IOrderService {
     private final IOrderWorkerChangeRecordService orderWorkerChangeRecordService;
     private final IManagementTeacherService managementTeacherService;
     private final IOrderReviewsService orderReviewsService;
+    @Lazy
+    @Resource
+    private IOrderRefundService orderRefundService;
 
     /**
      * 查询订单分页
@@ -180,6 +185,7 @@ public class OrderServiceImpl implements IOrderService {
             OrderReviewsVo orderReviewsVo = orderReviewsService.queryByOrderId(vo.getId());
             vo.setOrderReviews(orderReviewsVo);
         }
+        vo.setHasRefund(orderRefundService.hasRefund(vo.getId()));
         return vo;
     }
 
@@ -457,34 +463,39 @@ public class OrderServiceImpl implements IOrderService {
         return baseMapper.selectOrderWorkerSum();
     }
 
-    private List<OrderVo> convertAllList(List<OrderVo> list, boolean queryPatient) {
-        return list.stream().map(o -> {
-            HospitalVo hospitalVo = JSONObject.parseObject(o.getHospitalInfo(), HospitalVo.class);
-            if (ObjectUtil.isNotNull(hospitalVo)) {
-                o.setHospitalName(hospitalVo.getName());
-                o.setHospitalAddress(hospitalVo.getAddress());
-            }
-            //科室
-            HospitalDepartmentVo hospitalDepartmentVo = JSONObject.parseObject(o.getHospitalDepartmentInfo(), HospitalDepartmentVo.class);
-            if (ObjectUtil.isNotNull(hospitalDepartmentVo)) {
-                o.setHospitalDepartmentName(hospitalDepartmentVo.getName());
-            }
-            //服务
-            ServiceProductVo serviceProductVo = JSONObject.parseObject(o.getServiceInfo(), ServiceProductVo.class);
-            if (ObjectUtil.isNotNull(serviceProductVo)) {
-                o.setServiceName(serviceProductVo.getName());
-            }
-            if(queryPatient) {
-                PatientVo patientVo = JSONObject.parseObject(o.getPatientInfo(), PatientVo.class);
-                if (ObjectUtil.isNotNull(patientVo)) {
-                    o.setPatientName(patientVo.getName());
-                    o.setPatientMobile(patientVo.getMobile());
-                    o.setPatientGender(patientVo.getGender());
-                    o.setPatientAge(patientVo.getAge());
-                    o.setPatientRelationship(patientVo.getRelationship());
-                }
+    @Override
+    public OrderVo convertAllVo(OrderVo vo, boolean queryPatient) {
+        HospitalVo hospitalVo = JSONObject.parseObject(vo.getHospitalInfo(), HospitalVo.class);
+        if (ObjectUtil.isNotNull(hospitalVo)) {
+            vo.setHospitalName(hospitalVo.getName());
+            vo.setHospitalAddress(hospitalVo.getAddress());
+        }
+        //科室
+        HospitalDepartmentVo hospitalDepartmentVo = JSONObject.parseObject(vo.getHospitalDepartmentInfo(), HospitalDepartmentVo.class);
+        if (ObjectUtil.isNotNull(hospitalDepartmentVo)) {
+            vo.setHospitalDepartmentName(hospitalDepartmentVo.getName());
+        }
+        //服务
+        ServiceProductVo serviceProductVo = JSONObject.parseObject(vo.getServiceInfo(), ServiceProductVo.class);
+        if (ObjectUtil.isNotNull(serviceProductVo)) {
+            vo.setServiceName(serviceProductVo.getName());
+        }
+        if(queryPatient) {
+            PatientVo patientVo = JSONObject.parseObject(vo.getPatientInfo(), PatientVo.class);
+            if (ObjectUtil.isNotNull(patientVo)) {
+                vo.setPatientName(patientVo.getName());
+                vo.setPatientMobile(patientVo.getMobile());
+                vo.setPatientGender(patientVo.getGender());
+                vo.setPatientAge(patientVo.getAge());
+                vo.setPatientRelationship(patientVo.getRelationship());
             }
-            return o;
-        }).collect(Collectors.toList());
+        }
+        return vo;
+    }
+
+    private List<OrderVo> convertAllList(List<OrderVo> list, boolean queryPatient) {
+        return list.stream().map(o -> convertAllVo(o, queryPatient)).collect(Collectors.toList());
     }
+
+
 }

+ 28 - 1
ruoyi-info/ruoyi-info-biz/src/main/resources/mapper/order/OrderRefundMapper.xml

@@ -22,12 +22,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="completeTime" column="complete_time"/>
         <result property="createTime" column="create_time"/>
         <association property="orderVo" javaType="com.ruoyi.info.order.domain.vo.OrderVo">
+            <result property="hospitalInfo" column="hospital_info"/>
+            <result property="hospitalDepartmentInfo" column="hospital_department_info"/>
+            <result property="patientInfo" column="patient_info"/>
+            <result property="serviceInfo" column="service_info"/>
+            <result property="orderNum" column="order_num"/>
+            <result property="sellingPrice" column="selling_price"/>
+            <result property="totalPrice" column="total_price"/>
+            <result property="payPrice" column="pay_price"/>
+            <result property="userMobile" column="userMobile"/>
         </association>
     </resultMap>
 
     <sql id="queryByWhere">
-        select tor.* from tb_order_refund tor
+        select tor.*, tod.hospital_info, tod.hospital_department_info, tod.patient_info,
+               tod.service_info, tod.order_num, tod.selling_price, tod.total_price, tod.pay_price, u.mobile as userMobile
+        from tb_order_refund tor
         left join tb_order tod on tor.order_id = tod.id
+        left join tb_user u on u.id = tod.user_id
         <where>
             <if test="bo.orderRefundNo != null and bo.orderRefundNo != ''">
                 tor.order_refund_no like concat('%',#{bo.orderRefundNo},'%')
@@ -44,6 +56,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     #{item}
                 </foreach>
             </if>
+            <if test="bo.hospitalId != null">
+                and tod.hospital_id = #{bo.hospitalId}
+            </if>
+            <if test="bo.serviceName != null and bo.serviceName != ''">
+                and JSON_UNQUOTE(JSON_EXTRACT(tod.service_info, '$.name')) like concat('%', #{bo.serviceName}, '%')
+            </if>
+            <if test="bo.startTime != null">
+                and tor.create_time >= #{bo.startTime}
+            </if>
+            <if test="bo.endTime != null">
+                and tor.create_time <![CDATA[ <= ]]> #{bo.endTime}
+            </if>
+            <if test="bo.userMobile != null and bo.userMobile != ''">
+                and u.mobile like concat('%', #{bo.userMobile}, '%')
+            </if>
         </where>
         order by tor.create_time desc
     </sql>