diff --git a/pz-common/src/main/java/com/pz/common/enums/UserType.java b/pz-common/src/main/java/com/pz/common/enums/UserType.java
index c067846..3baaef6 100644
--- a/pz-common/src/main/java/com/pz/common/enums/UserType.java
+++ b/pz-common/src/main/java/com/pz/common/enums/UserType.java
@@ -25,7 +25,12 @@ public enum UserType {
     APP_USER("app_user"),
 
     /**
-     * 商家端
+     * 商城商户
+     */
+    STORE_AMERCHANT_USER("store_merchant_user"),
+
+    /**
+     * 商城商户
      */
     AMERCHANT_USER("merchant_user");
 
diff --git a/pz-system/src/main/java/com/pz/system/service/SysLoginService.java b/pz-system/src/main/java/com/pz/system/service/SysLoginService.java
index 12e9750..0b24993 100644
--- a/pz-system/src/main/java/com/pz/system/service/SysLoginService.java
+++ b/pz-system/src/main/java/com/pz/system/service/SysLoginService.java
@@ -270,7 +270,8 @@ public class SysLoginService {
     private SysUser loadUserByUsername(String username) {
         SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
             .select(SysUser::getUserName, SysUser::getStatus)
-            .eq(SysUser::getUserName, username));
+            .eq(SysUser::getUserName, username)
+            .eq(SysUser::getUserType, UserType.SYS_USER.getUserType()).or().eq(SysUser::getUserType, UserType.STORE_AMERCHANT_USER.getUserType()));
         if (ObjectUtil.isNull(user)) {
             log.info("登录用户:{} 不存在.", username);
             throw new UserException("user.not.exists", username);
diff --git a/pz-system/src/main/java/com/pz/system/service/impl/StoreApplyServiceImpl.java b/pz-system/src/main/java/com/pz/system/service/impl/StoreApplyServiceImpl.java
index 6e8b5b6..fa8f908 100644
--- a/pz-system/src/main/java/com/pz/system/service/impl/StoreApplyServiceImpl.java
+++ b/pz-system/src/main/java/com/pz/system/service/impl/StoreApplyServiceImpl.java
@@ -11,6 +11,7 @@ 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.enums.UserType;
+import com.pz.common.exception.ServiceException;
 import com.pz.common.helper.LoginHelper;
 import com.pz.system.domain.StoreInfo;
 import com.pz.system.domain.SysUserRole;
@@ -133,6 +134,7 @@ public class StoreApplyServiceImpl implements IStoreApplyService {
     @Transactional
     public Boolean updateByBo(StoreApplyBo bo) {
         StoreApply update = BeanUtil.toBean(bo, StoreApply.class);
+
         //审核通过
         if (bo.getStatus() == 1) {
             Optional.ofNullable(baseMapper.selectById(bo.getId()))
@@ -142,20 +144,19 @@ public class StoreApplyServiceImpl implements IStoreApplyService {
                     //记录至商户表
                     storeInfoMapper.insert(bean);
 
-                    //创建系统用户
-                    SysUser sysUser = new SysUser();
-                    sysUser.setUserName(storeApply.getTel());
-                    sysUser.setNickName(storeApply.getName());
-                    sysUser.setEmail(storeApply.getEmail());
-                    sysUser.setUserType(UserType.AMERCHANT_USER.getUserType());
-                    sysUser.setPassword(BCrypt.hashpw("123456"));
+                    Optional.ofNullable(sysUserMapper.selectUserByPhonenumber(bo.getTel())).ifPresent(
+                        sysUser -> {
+                            sysUser.setUserType(UserType.STORE_AMERCHANT_USER.getUserType());
+                            sysUser.setPassword(BCrypt.hashpw("123456"));
+                            sysUserMapper.updateById(sysUser);
 
-                    sysUserMapper.insert(sysUser);
+                            SysUserRole sysUserRole = new SysUserRole();
+                            sysUserRole.setUserId(sysUser.getUserId());
+                            sysUserRole.setRoleId(5L);
+                            sysUserRoleMapper.insert(sysUserRole);
+                        }
+                    );
 
-                    SysUserRole sysUserRole = new SysUserRole();
-                    sysUserRole.setUserId(sysUser.getUserId());
-                    sysUserRole.setRoleId(3L);
-                    sysUserRoleMapper.insert(sysUserRole);
                 });
         }
         return baseMapper.updateById(update) > 0;
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 efb12af..74362d1 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
@@ -1,9 +1,11 @@
 package com.pz.system.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.lang.TypeReference;
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -18,7 +20,12 @@ import com.pz.common.config.KbProperties;
 import com.pz.common.core.domain.PageQuery;
 import com.pz.common.core.domain.model.LoginUser;
 import com.pz.common.core.page.TableDataInfo;
+import com.pz.common.core.domain.PageQuery;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.pz.common.enums.CommonOrderStatus;
+import com.pz.common.enums.DBMYOrderStatus;
+import com.pz.common.enums.ShopOrderStatus;
 import com.pz.common.enums.TotalOrderStatus;
 import com.pz.common.exception.ServiceException;
 import com.pz.common.helper.LoginHelper;
@@ -28,12 +35,14 @@ import com.pz.merchant.domain.Company;
 import com.pz.merchant.domain.Employees;
 import com.pz.merchant.domain.EmployeesDivide;
 import com.pz.merchant.domain.vo.EmployeesVo;
+import com.pz.common.utils.JsonUtils;
 import com.pz.merchant.domain.vo.SonOrderVo;
 import com.pz.merchant.mapper.CompanyMapper;
 import com.pz.merchant.mapper.EmployeesDivideMapper;
 import com.pz.merchant.mapper.EmployeesMapper;
 import com.pz.merchant.service.ISonOrderService;
 import com.pz.merchant.service.impl.SonOrderServiceBuilder;
+import com.pz.common.helper.LoginHelper;
 import com.pz.system.datastructure.OrderDelayQueue;
 import com.pz.system.datastructure.TotalOrderDelayOperator;
 import com.pz.system.domain.*;
@@ -49,7 +58,11 @@ import com.pz.system.service.ITotalOrderService;
 import lombok.RequiredArgsConstructor;
 import org.apache.http.HttpResponse;
 import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import com.pz.system.domain.bo.TotalOrderBo;
+import com.pz.system.domain.vo.TotalOrderVo;
+import com.pz.system.service.ITotalOrderService;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.security.MessageDigest;
@@ -558,13 +571,19 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
         }
 
         // 待办买药已接单 代发货下取消订单调用退款接口
-        if (totalOrder.getBusinessId() == 5 && totalOrder.getStatus() == 1) {
+        if (totalOrder.getBusinessId() == 5
+            && totalOrder.getStatus() == 1
+            && sonOrderSimpleDataByTotalId.getOrderStatus() == 1
+            ) {
             totalOrderBo.setIsRefund(0);
             return this.refundOrder(totalOrderBo);
         }
 
         // 已接单、待收货状态下等待药品到达后确认
-        if (totalOrder.getBusinessId() == 5 && totalOrder.getStatus() == 2) {
+        if (totalOrder.getBusinessId() == 5
+            && totalOrder.getStatus() == 2
+            && sonOrderSimpleDataByTotalId.getOrderStatus() == 2
+            && totalOrder.getRefundAmount() == 0) {
             totalOrderBo.setIsRefund(1);
             return this.refundOrder(totalOrderBo);
         }
@@ -581,7 +600,8 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
             return this.refundOrder(totalOrderBo);
         }
 
-        if (sonOrderSimpleDataByTotalId.getOrderStatus() == 0 && totalOrder.getEmId() == 0 && totalOrder.getStatus() == 0) {// 预约陪诊
+        //用户未付款 陪诊员为接单 和 用户未付款陪诊员已接单直接取消
+        if ((sonOrderSimpleDataByTotalId.getOrderStatus() == 0 && totalOrder.getStatus() == 0) || (sonOrderSimpleDataByTotalId.getOrderStatus() == 1 && totalOrder.getStatus() == 0)) {
             // yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId,totalOrder));
             totalOrder.setStatus(TotalOrderStatus.CANCEL.getCode());
             if (totalOrder.getBusinessId() == 0) {
@@ -721,8 +741,8 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
         // 修改子订单状态
         boolean sonOrderFlag = orderService.switchSonOrderStatus(totalOrder.getId(), CommonOrderStatus.REFUND.getCode());
 
-        // 除了商城订单和诊前挂号不需要给陪诊员和商户分成
-        if (totalOrder.getBusinessId() != 0 && totalOrder.getBusinessId() != 6) {
+        //除了商城订单和诊前挂号不需要给陪诊员和商户分成
+        if(totalOrder.getBusinessId() != 0 && totalOrder.getBusinessId() != 6 && totalOrder.getStatus() == 2) {
             Services services = servicesMapper.selectById(totalOrder.getServiceId());
             if (services.getFenmo() != 0) {
                 double money = 0;
@@ -759,6 +779,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
         if (!sonOrderFlag) {
             throw new ServiceException("子订单状态修改出错,接单失败");
         }
+        totalOrder.setSuborderStatus(CommonOrderStatus.REFUND.getCode());
         if (baseMapper.updateById(totalOrder) > 0) {
             // 添加退款记录
             PaymentRecord paymentRecord = new PaymentRecord();
@@ -785,11 +806,11 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
         if (null == sonOrderSimpleDataByTotalId) {
             throw new ServiceException("子订单状态出错!");
         }
-
+        int IsRefund = getIsRefund(totalOrder.getBusinessId(),totalOrder.getStatus(),sonOrderSimpleDataByTotalId.getSonOrderId());
         // 订单退款金额
         double money = 0;
 
-        if (bo.getIsRefund() == 0) {// 陪诊员订单未完成用户主动退款
+        if (IsRefund == 0) {// 陪诊员订单未完成用户主动退款直接退到账户
             // 主订单必须为付款并且子订单为已接单
             if (totalOrder.getStatus() != 1 && sonOrderSimpleDataByTotalId.getOrderStatus() != 1) {
                 if (totalOrder.getStatus() == 1 && sonOrderSimpleDataByTotalId.getOrderStatus() == 0) {
@@ -846,7 +867,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
             }
 
             totalOrder.setRefundAmount(money);
-        } else if (bo.getIsRefund() == 1) {// 陪诊员订单完成走审批流程
+        } else if (IsRefund == 1) {// 陪诊员订单完成走审批流程
             if (sonOrderSimpleDataByTotalId.getOrderStatus() != 2) {
                 throw new ServiceException("订单状态错误");
             }
@@ -866,7 +887,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
 
 
         // 修改子订单状态
-        boolean sonOrderFlag = orderService.switchSonOrderStatus(totalOrder.getId(), CommonOrderStatus.REFUND.getCode());
+        boolean sonOrderFlag = orderService.switchSonOrderStatus(totalOrder.getId(), CommonOrderStatus.BEING_REFUND.getCode());
 
         if (!sonOrderFlag) {
             throw new ServiceException("子订单状态修改出错");
@@ -878,6 +899,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
                 .set(StoreOrder::getStatus, ShopOrderStatus.BEING_REFUND.getCode()));
 
         }*/
+        totalOrder.setSuborderStatus(CommonOrderStatus.BEING_REFUND.getCode());
         baseMapper.updateById(totalOrder);
         return true;
     }
@@ -1145,7 +1167,6 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
     }
 
     public long getHour(String date) {
-
         LocalDateTime startTime = LocalDateTime.parse(date, FORMATTER);
 
         // 获取当前时间
@@ -1179,4 +1200,16 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
         }
         return money;
     }
+
+    public int getIsRefund(int businessId,int businessStatus,int ServiceStatus){
+        int IsRefund = 0;
+        if((businessStatus == 1 && ServiceStatus == 0) || (businessStatus == 1 && ServiceStatus == 1)){
+            IsRefund = 0;
+        }else if(businessStatus == 2 && ServiceStatus == 2){
+            IsRefund = 1;
+        }else if(businessId == 3 && businessStatus == 1 && ServiceStatus == 2){
+            IsRefund = 1;
+        }
+        return IsRefund;
+    }
 }