diff --git a/pz-admin/src/main/java/com/pz/web/controller/system/UserRefundController.java b/pz-admin/src/main/java/com/pz/web/controller/system/UserRefundController.java
index cb9cacf..e9cc240 100644
--- a/pz-admin/src/main/java/com/pz/web/controller/system/UserRefundController.java
+++ b/pz-admin/src/main/java/com/pz/web/controller/system/UserRefundController.java
@@ -103,4 +103,15 @@ public class UserRefundController extends BaseController {
                           @PathVariable Integer[] ids) {
         return toAjax(iUserRefundService.deleteWithValidByIds(Arrays.asList(ids), true));
     }
+
+    /**
+     * pc审核退款
+     */
+    @SaCheckPermission("system:userRefund:refund")
+    @Log(title = "用户退款", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping("/refund")
+    public R<Void> refund(@Validated(EditGroup.class) @RequestBody UserRefundBo bo) {
+        return toAjax(iUserRefundService.refund(bo));
+    }
 }
diff --git a/pz-system/src/main/java/com/pz/merchant/service/impl/EmployeesServiceImpl.java b/pz-system/src/main/java/com/pz/merchant/service/impl/EmployeesServiceImpl.java
index 549dd88..cd75e0c 100644
--- a/pz-system/src/main/java/com/pz/merchant/service/impl/EmployeesServiceImpl.java
+++ b/pz-system/src/main/java/com/pz/merchant/service/impl/EmployeesServiceImpl.java
@@ -242,10 +242,12 @@ public class EmployeesServiceImpl implements IEmployeesService {
             .eq(TotalOrder::getEmId, employeesVo.getId())
             .eq(TotalOrder::getIsSatisfaction, 1)
             .orderByDesc(TotalOrder::getId));
-        for (TotalOrderVo order : totalOrder) {
-            BusinessVo businessVo = businessMapper.selectVoOne(new LambdaQueryWrapper<Business>().eq(Business::getId, order.getBusinessId()));
-            if (null != businessVo) {
-                order.setProject(businessVo.getName());
+        if(null != totalOrder && totalOrder.size() != 0){
+            for (TotalOrderVo order : totalOrder) {
+                BusinessVo businessVo = businessMapper.selectVoOne(new LambdaQueryWrapper<Business>().eq(Business::getId, order.getBusinessId()));
+                if (null != businessVo) {
+                    order.setProject(businessVo.getName());
+                }
             }
         }
         employeesVo.setTotalOrderVo(totalOrder);
diff --git a/pz-system/src/main/java/com/pz/system/domain/bo/TotalOrderBo.java b/pz-system/src/main/java/com/pz/system/domain/bo/TotalOrderBo.java
index 2b6b72b..7a7cd4a 100644
--- a/pz-system/src/main/java/com/pz/system/domain/bo/TotalOrderBo.java
+++ b/pz-system/src/main/java/com/pz/system/domain/bo/TotalOrderBo.java
@@ -107,4 +107,14 @@ public class TotalOrderBo extends BaseEntity {
      * 凭证
      */
     private String voucher;
+
+    /**
+     * 是否后台退款
+     */
+    private Integer isPcRefund;
+
+    /**
+     * pc是否同意退款1-完成退款,2-取消退款
+     */
+    private Integer isPcRefundStatus;
 }
diff --git a/pz-system/src/main/java/com/pz/system/service/IUserRefundService.java b/pz-system/src/main/java/com/pz/system/service/IUserRefundService.java
index 21842db..57cde88 100644
--- a/pz-system/src/main/java/com/pz/system/service/IUserRefundService.java
+++ b/pz-system/src/main/java/com/pz/system/service/IUserRefundService.java
@@ -46,4 +46,9 @@ public interface IUserRefundService {
      * 校验并批量删除用户退款信息
      */
     Boolean deleteWithValidByIds(Collection<Integer> ids, Boolean isValid);
+
+    /**
+     * 后台审核退款
+     */
+    Boolean refund(UserRefundBo bo);
 }
diff --git a/pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java b/pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java
index ac56bcb..9eb5dff 100644
--- a/pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java
+++ b/pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java
@@ -371,7 +371,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
                     List<StoreGoodsTag> storeGoodsTags = storeGoodsTagMapper.selectList(new LambdaQueryWrapper<StoreGoodsTag>().in(StoreGoodsTag::getId, ids).select(StoreGoodsTag::getTitle));
                     totalOrderVo.setTags(storeGoodsTags);
                     totalOrderVo.setPrice(storeGoods.getPrice());
-
+                    totalOrderVo.setCover(storeGoods.getSmallCover());
                     totalOrderVo.setName(storeGoods.getTitle());
                 }
             });
@@ -513,7 +513,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
 
             storeOrder.setStoreId(storeGoods1.getStoreId());
             // 扣除库存
-            storeGoods1.setId(storeOrder.getId());
+            storeGoods1.setId(storeOrder.getGoodsId());
             storeGoods1.setInventory(storeGoods1.getInventory() - storeOrder.getNum());
             storeGoods1.setSaleNum(storeGoods1.getSaleNum() + 1);
             storeGoodsMapper.updateById(storeGoods1);
@@ -631,9 +631,11 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
                 double fenmo = (double) services.getFenmo() / 100;
 
                 double v = totalOrder1.getPayMoney() * fenmo;
+
                 employeesDivide.setProportion(services.getFenmo());
                 employeesDivide.setEmId(employees.getId());
-                money = v;
+
+                money = totalOrder1.getPayMoney() - v;;
 
                 if (employees.getCompanyId() != 0) {
 
@@ -651,11 +653,19 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
 
                     employeesMapper.updateById(employees);
                     employeesDivide.setDividePrice(money + "");
+
                 }
 
                 employeesDivideMapper.insert(employeesDivide);
 
             }
+            if(totalOrder1.getBusinessId() == 0){
+                ISonOrderService orderService = serviceBuilder.getSonOrderService(totalOrder1.getBusinessId());
+
+                // 修改子订单状态
+                orderService.switchSonOrderStatus(totalOrder1.getId(), CommonOrderStatus.DONE.getCode());
+
+            }
         }
 
         return baseMapper.updateById(totalOrder) > 0;
@@ -742,7 +752,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
 
                 double v = totalOrder.getPayMoney() * fenmo;
 
-                money = v;
+                money = totalOrder.getPayMoney() - v;
 
                 if (employees.getCompanyId() != 0) {
 
@@ -793,10 +803,40 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
         if (null == sonOrderSimpleDataByTotalId) {
             throw new ServiceException("子订单状态出错!");
         }
-        int IsRefund = getIsRefund(totalOrder.getBusinessId(), totalOrder.getStatus(), sonOrderSimpleDataByTotalId.getSonOrderId());
+        int IsRefund = getIsRefund(totalOrder.getBusinessId(), totalOrder.getStatus(), sonOrderSimpleDataByTotalId.getOrderStatus());
         // 订单退款金额
         double money = 0;
 
+        if (null != bo.getIsPcRefund() && bo.getIsPcRefund() == 1){
+            money = totalOrder.getRefundAmount();
+            //pc是否同意退款1-完成退款,2-取消退款
+            if(bo.getIsPcRefundStatus() == 1 ){
+                WxPayRefundRequest request = new WxPayRefundRequest();
+
+                request.setOutTradeNo(totalOrder.getOrderSn());
+                request.setOutRefundNo(UUID.randomUUID().toString());
+                request.setTotalFee((int) (totalOrder.getPayMoney() * 100));
+                request.setRefundFee((int) (money * 100));
+                request.setNotifyUrl("https://peizheng.shanpeikj.com/api/applet/totalOrder/orderRefundCallBack");
+
+                try {
+                    iPayService.refund(request);
+                    return true;
+                } catch (WxPayException e) {
+                    e.printStackTrace();
+                    return false;
+                }
+            }else if(bo.getIsPcRefundStatus() == 2){
+
+                //后台取消直接将订单完成
+                totalOrder.setStatus(TotalOrderStatus.DONE.getCode());
+
+                baseMapper.updateById(totalOrder);
+                return orderService.switchSonOrderStatus(totalOrder.getId(), CommonOrderStatus.DONE.getCode());
+
+            }
+        }
+
         if (IsRefund == 0) {// 陪诊员订单未完成用户主动退款直接退到账户
             // 主订单必须为付款并且子订单为已接单
             if (totalOrder.getStatus() != 1 && sonOrderSimpleDataByTotalId.getOrderStatus() != 1) {
@@ -1169,14 +1209,14 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
 
         long hour = getHour(serveTime);
 
-        if (hour >= 12 || (hour <= 12 && hour > 6)) {
+        if (hour > 6) {
             money = payMoney;
-        } else if ((hour <= 6) && (hour >= 3)) {
+        } else if (hour >= 3) {
             // 计算扣除30%后的金额
             deduction = payMoney * 0.3;
             remainingAmount = payMoney - deduction;
             money = remainingAmount;
-        } else if ((hour <= 3) && (hour >= 0)) {
+        } else if (hour >= 0) {
             // 计算扣除50%后的金额
             deduction = payMoney * 0.5;
             remainingAmount = payMoney - deduction;
diff --git a/pz-system/src/main/java/com/pz/system/service/impl/UserRefundServiceImpl.java b/pz-system/src/main/java/com/pz/system/service/impl/UserRefundServiceImpl.java
index bb2335b..4499a6e 100644
--- a/pz-system/src/main/java/com/pz/system/service/impl/UserRefundServiceImpl.java
+++ b/pz-system/src/main/java/com/pz/system/service/impl/UserRefundServiceImpl.java
@@ -7,8 +7,11 @@ import com.pz.common.core.domain.PageQuery;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.pz.common.exception.ServiceException;
+import com.pz.system.domain.bo.TotalOrderBo;
 import com.pz.system.mapper.BusinessMapper;
 import com.pz.system.mapper.TotalOrderMapper;
+import com.pz.system.service.ITotalOrderService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import com.pz.system.domain.bo.UserRefundBo;
@@ -39,6 +42,8 @@ public class UserRefundServiceImpl implements IUserRefundService {
 
     private final BusinessMapper businessMapper;
 
+    private final ITotalOrderService iTotalOrderServicer;
+
     /**
      * 查询用户退款
      */
@@ -136,4 +141,26 @@ public class UserRefundServiceImpl implements IUserRefundService {
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
+    @Override
+    public Boolean refund(UserRefundBo bo) {
+        UserRefundVo userRefundVo = baseMapper.selectVoById(bo);
+        if(userRefundVo.getStatus() != 0){
+            throw  new ServiceException("已处理!");
+        }
+
+        TotalOrderBo totalOrderBo = new TotalOrderBo();
+        totalOrderBo.setId(userRefundVo.getOrderId().longValue());
+        totalOrderBo.setIsPcRefund(1);
+        totalOrderBo.setIsPcRefundStatus(bo.getStatus());
+        Boolean aBoolean = iTotalOrderServicer.refundOrder(totalOrderBo);
+        if(aBoolean){
+            UserRefund refund = new UserRefund();
+            refund.setId(bo.getId());
+            refund.setStatus(bo.getStatus());
+            int i = baseMapper.updateById(refund);
+            return i > 0;
+        }
+        return false;
+    }
 }
diff --git a/pz-system/src/main/resources/mapper/system/ZyphOrderMapper.xml b/pz-system/src/main/resources/mapper/system/ZyphOrderMapper.xml
index 0812c41..f23fdb6 100644
--- a/pz-system/src/main/resources/mapper/system/ZyphOrderMapper.xml
+++ b/pz-system/src/main/resources/mapper/system/ZyphOrderMapper.xml
@@ -105,7 +105,7 @@
     </select>
 
     <select id="selectFinishTime" resultType="java.lang.String">
-        select start_day
+        select concat(zyph_order.start_day, '-', zyph_order.start_time)
                    from total_order t left join zyph_order d on d.order_id = t.id
         where  t.id = #{id}
     </select>