From 546515acaa1f9ff3ae6388ddd99162306859096c Mon Sep 17 00:00:00 2001
From: sdif <xiaoping_0000@163.com>
Date: Thu, 14 Sep 2023 09:02:01 +0800
Subject: [PATCH] 用户端代码提交

---
 pz-applet/src/main/java/com/pz/applet/AppletCommonController.java             |  74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 pz-applet/src/main/java/com/pz/applet/AppletTotalOrderController.java         |  36 ++++++++++++++++++++++++++++++++++--
 pz-system/src/main/java/com/pz/system/domain/vo/TotalOrderVo.java             |  40 ++++++++++++++++++++++++++++++++++++++--
 pz-system/src/main/java/com/pz/system/mapper/TotalOrderMapper.java            |  12 ++++++++++++
 pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java         |  21 +++++++++++++++++++++
 pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java | 242 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
 pz-system/src/main/resources/mapper/system/TotalOrderMapper.xml               |  37 +++++++++++++++++++++++++++++++++++++
 7 files changed, 448 insertions(+), 14 deletions(-)
 create mode 100644 pz-applet/src/main/java/com/pz/applet/AppletCommonController.java

diff --git a/pz-applet/src/main/java/com/pz/applet/AppletCommonController.java b/pz-applet/src/main/java/com/pz/applet/AppletCommonController.java
new file mode 100644
index 0000000..7aa8e48
--- /dev/null
+++ b/pz-applet/src/main/java/com/pz/applet/AppletCommonController.java
@@ -0,0 +1,74 @@
+package com.pz.applet;
+
+import com.pz.common.core.controller.BaseController;
+import com.pz.common.core.domain.R;
+import com.pz.common.enums.HospitalLevel;
+import com.pz.common.enums.HospitalType;
+import com.pz.system.domain.bo.CityBo;
+import com.pz.system.domain.vo.CityVo;
+import com.pz.system.domain.vo.CommonKeyValuesVo;
+import com.pz.system.service.ICityService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 公共接口
+ *
+ * @author ruoyi
+ * @date 2023-09-07
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/applet/common")
+public class AppletCommonController extends BaseController {
+
+    private final ICityService iCityService;
+
+    /**
+     * 医院等级列表
+     */
+    @GetMapping("/hospitalLevelList")
+    public R<List<CommonKeyValuesVo>> hospitalLevelList() {
+        List<CommonKeyValuesVo> enumList = Arrays.stream(HospitalLevel.values())
+            .map(e -> {
+                CommonKeyValuesVo commonKeyValuesVo = new CommonKeyValuesVo();
+                commonKeyValuesVo.setCode(e.getCode());
+                commonKeyValuesVo.setName(e.getName());
+                return commonKeyValuesVo;
+            })
+            .collect(Collectors.toList());
+        return R.ok(enumList);
+    }
+
+    /**
+     * 医院类别列表
+     */
+    @GetMapping("/hospitalTypeList")
+    public R<List<CommonKeyValuesVo>> hospitalTypeList() {
+        List<CommonKeyValuesVo> enumList = Arrays.stream(HospitalType.values())
+            .map(e -> {
+                CommonKeyValuesVo commonKeyValuesVo = new CommonKeyValuesVo();
+                commonKeyValuesVo.setCode(e.getCode());
+                commonKeyValuesVo.setName(e.getName());
+                return commonKeyValuesVo;
+            })
+            .collect(Collectors.toList());
+        return R.ok(enumList);
+    }
+
+    /**
+     * 城市列表
+     */
+    @GetMapping("/cityVoList")
+    public R<List<CityVo>> cityVoList(CityBo bo) {
+        return R.ok(iCityService.queryList(bo));
+    }
+}
diff --git a/pz-applet/src/main/java/com/pz/applet/AppletTotalOrderController.java b/pz-applet/src/main/java/com/pz/applet/AppletTotalOrderController.java
index bcc323c..2660532 100644
--- a/pz-applet/src/main/java/com/pz/applet/AppletTotalOrderController.java
+++ b/pz-applet/src/main/java/com/pz/applet/AppletTotalOrderController.java
@@ -12,8 +12,11 @@ import com.pz.common.core.validate.EditGroup;
 import com.pz.common.enums.BusinessType;
 import com.pz.common.utils.poi.ExcelUtil;
 import com.pz.system.domain.bo.CreateOrderBo;
+import com.pz.system.domain.bo.PaymentRecordBo;
 import com.pz.system.domain.bo.TotalOrderBo;
+import com.pz.system.domain.vo.PaymentRecordVo;
 import com.pz.system.domain.vo.TotalOrderVo;
+import com.pz.system.service.IPaymentRecordService;
 import com.pz.system.service.ITotalOrderService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
@@ -40,6 +43,8 @@ public class AppletTotalOrderController extends BaseController {
 
     private final ITotalOrderService iTotalOrderService;
 
+    private final IPaymentRecordService iPaymentRecordService;
+
     /**
      * 查询总订单列表
      */
@@ -55,8 +60,8 @@ public class AppletTotalOrderController extends BaseController {
      */
     @GetMapping("/{id}")
     public R<TotalOrderVo> getInfo(@NotNull(message = "主键不能为空")
-                                     @PathVariable Long id) {
-        return R.ok(iTotalOrderService.queryById(id));
+                                     @PathVariable Integer id) {
+        return R.ok(iTotalOrderService.queryByAppId(id));
     }
 
     /**
@@ -87,4 +92,31 @@ public class AppletTotalOrderController extends BaseController {
                           @PathVariable Long[] ids) {
         return toAjax(iTotalOrderService.deleteWithValidByIds(Arrays.asList(ids), true));
     }
+
+    /**
+     * 用户主动退款
+     */
+    @RepeatSubmit()
+    @PostMapping("/refundOrder")
+    public R<Void> refundOrder(@Validated(AddGroup.class) @RequestBody TotalOrderBo recordBo) {
+        return toAjax(iTotalOrderService.refundOrder(recordBo));
+    }
+
+    /**
+     * 用户评价订单
+     */
+    @RepeatSubmit()
+    @PostMapping("/appraise")
+    public R<Void> appraise(@Validated(AddGroup.class) @RequestBody TotalOrderBo recordBo) {
+        return toAjax(iTotalOrderService.updateByBo(recordBo));
+    }
+
+    /**
+     * 用户取消订单
+     */
+    @RepeatSubmit()
+    @PostMapping("/cancelOrder")
+    public R<Void> cancelOrder(@Validated(AddGroup.class) @RequestBody TotalOrderBo recordBo) {
+        return toAjax(iTotalOrderService.cancelOrder(recordBo));
+    }
 }
diff --git a/pz-system/src/main/java/com/pz/system/domain/vo/TotalOrderVo.java b/pz-system/src/main/java/com/pz/system/domain/vo/TotalOrderVo.java
index 8fb02e7..34cf67d 100644
--- a/pz-system/src/main/java/com/pz/system/domain/vo/TotalOrderVo.java
+++ b/pz-system/src/main/java/com/pz/system/domain/vo/TotalOrderVo.java
@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.pz.common.annotation.ExcelDictFormat;
 import com.pz.common.convert.ExcelDictConvert;
+import com.pz.system.domain.StoreGoodsTag;
 import lombok.Data;
 
 import java.util.List;
@@ -67,7 +68,7 @@ public class TotalOrderVo {
      * 订单价格
      */
     @ExcelProperty(value = "订单价格")
-    private String payMoney;
+    private Double payMoney;
 
     /**
      * 订单状态
@@ -133,11 +134,46 @@ public class TotalOrderVo {
     /**
      * 标签
      */
-    private String tags;
+    private List<StoreGoodsTag> tags;
 
     /**
      * 陪护时间
      */
     private List<String> chaperonageDate;
 
+    /**
+     * 业务名称
+     */
+    private String business;
+
+    /**
+     * 服务名称
+     */
+    private String service;
+
+    /**
+     * 医院名称
+     */
+    private String hospital;
+
+    /**
+     * 就诊人
+     */
+    private String visitor;
+
+    /**
+     * 科室
+     */
+    private String department;
+
+    /**
+     * 就诊时间
+     */
+    private String visitTime;
+
+    /**
+     * 手机号
+     */
+    private String phone;
+
 }
diff --git a/pz-system/src/main/java/com/pz/system/mapper/TotalOrderMapper.java b/pz-system/src/main/java/com/pz/system/mapper/TotalOrderMapper.java
index dcb8d77..983a8c4 100644
--- a/pz-system/src/main/java/com/pz/system/mapper/TotalOrderMapper.java
+++ b/pz-system/src/main/java/com/pz/system/mapper/TotalOrderMapper.java
@@ -7,6 +7,7 @@ import com.pz.merchant.domain.Company;
 import com.pz.merchant.domain.vo.FinanceOrderInfoVo;
 import com.pz.system.domain.TotalOrder;
 import com.pz.system.domain.vo.AccompanyDemandVo;
+import com.pz.system.domain.vo.AppOrderVo;
 import com.pz.system.domain.vo.TotalOrderVo;
 import com.pz.common.core.mapper.BaseMapperPlus;
 import org.apache.ibatis.annotations.Mapper;
@@ -40,4 +41,15 @@ public interface TotalOrderMapper extends BaseMapperPlus<TotalOrderMapper, Total
      */
     AccompanyDemandVo selectTotalOrderById(Long id);
 
+
+    /**
+     * 查询用户端订单
+     *
+     * @param page         分页参数
+     * @param queryWrapper 查询条件
+     * @return 结果
+     */
+    IPage<TotalOrderVo> selectAppOrder(IPage<TotalOrderVo> page, @Param(Constants.WRAPPER) Wrapper<TotalOrder> queryWrapper);
+
+    TotalOrderVo selectByOrderId(@Param("id") Integer id);
 }
diff --git a/pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java b/pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java
index 49dd829..8a46e07 100644
--- a/pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java
+++ b/pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java
@@ -26,6 +26,13 @@ public interface ITotalOrderService {
     TotalOrderVo queryById(Long id);
 
     /**
+     * 查询用户订单详情
+     * @param id
+     * @return
+     */
+    TotalOrderVo queryByAppId(Integer id);
+
+    /**
      * 查询总订单列表
      */
     TableDataInfo<TotalOrderVo> queryPageList(TotalOrderBo bo, PageQuery pageQuery);
@@ -54,6 +61,20 @@ public interface ITotalOrderService {
     Boolean updateByBo(TotalOrderBo bo);
 
     /**
+     * 用户取消订单
+     * @param bo
+     * @return
+     */
+    Boolean cancelOrder(TotalOrderBo bo);
+
+    /**
+     * 用户主动退款
+     * @param bo
+     * @return
+     */
+    Boolean refundOrder(TotalOrderBo bo);
+
+    /**
      * 校验并批量删除总订单信息
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
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 96a1917..8ff00ed 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
@@ -2,6 +2,7 @@ package com.pz.system.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 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.pz.common.core.domain.model.LoginUser;
@@ -10,6 +11,10 @@ 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.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.merchant.domain.vo.SonOrderVo;
 import com.pz.merchant.service.ISonOrderService;
@@ -26,11 +31,7 @@ import com.pz.system.domain.vo.TotalOrderVo;
 import com.pz.system.service.ITotalOrderService;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
-import java.util.Objects;
-import java.util.Random;
+import java.util.*;
 
 /**
  * 总订单Service业务层处理
@@ -60,12 +61,28 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
 
     private final StoreOrderMapper storeOrderMapper;
 
+    private final BusinessMapper businessMapper;
+
+    private final UserVsitorMapper userVsitorMapper;
+
+    private final ServicesMapper servicesMapper;
+
+    private final StoreGoodsTagMapper storeGoodsTagMapper;
+
+    private final StoreGoodsMapper storeGoodsMapper;
+
+    @Override
+    public TotalOrderVo queryById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
     /**
      * 查询总订单
      */
     @Override
-    public TotalOrderVo queryById(Long id) {
-        return baseMapper.selectVoById(id);
+    public TotalOrderVo queryByAppId(Integer id) {
+        TotalOrderVo totalOrderVo = baseMapper.selectByOrderId(id);
+        return totalOrderVo;
     }
 
     /**
@@ -73,8 +90,79 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
      */
     @Override
     public TableDataInfo<TotalOrderVo> queryPageList(TotalOrderBo bo, PageQuery pageQuery) {
+        //TODO 待优化
         LambdaQueryWrapper<TotalOrder> lqw = buildQueryWrapper(bo);
-        Page<TotalOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        IPage<TotalOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        Optional.ofNullable(result.getRecords()).ifPresent(totalOrderVos -> {
+            totalOrderVos.forEach(totalOrderVo -> {
+                // 陪诊人员
+                if(totalOrderVo.getEmId() != 0){
+                    Optional.ofNullable(userVsitorMapper.selectVoById(totalOrderVo.getEmId()).getName())
+                        .ifPresent(totalOrderVo::setEmName);
+                }
+
+                // 业务
+                Business business = businessMapper.selectById(totalOrderVo.getBusinessId());
+                totalOrderVo.setName(business.getName());
+
+                //服务封面
+                Services services = servicesMapper.selectById(totalOrderVo.getServiceId());
+                totalOrderVo.setCover(services.getCover());
+
+                if(totalOrderVo.getBusinessId() == 1){//预约陪诊
+
+                    totalOrderVo.setServiceStatus(
+                        yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId, totalOrderVo.getId())).getStatus()
+                    );
+
+
+                }else if(totalOrderVo.getBusinessId() == 2){//代办挂号
+
+                    totalOrderVo.setServiceStatus(
+                        dbghOrderMapper.selectOne(new LambdaQueryWrapper<DbghOrder>().eq(DbghOrder::getOrderId, totalOrderVo.getId())).getStatus()
+                    );
+
+
+                }else if(totalOrderVo.getBusinessId() == 3){//代办问诊
+
+                    totalOrderVo.setServiceStatus(
+                        dbwzOrderMapper.selectOne(new LambdaQueryWrapper<DbwzOrder>().eq(DbwzOrder::getOrderId, totalOrderVo.getId())).getStatus()
+                    );
+
+                }else if(totalOrderVo.getBusinessId() == 4){//住院陪护
+
+                    totalOrderVo.setServiceStatus(
+                        zyphOrderMapper.selectOne(new LambdaQueryWrapper<ZyphOrder>().eq(ZyphOrder::getOrderId, totalOrderVo.getId())).getStatus()
+                    );
+
+                }else if(totalOrderVo.getBusinessId() == 5){//代办买药
+
+                    totalOrderVo.setServiceStatus(
+                        dbmyOrderMapper.selectOne(new LambdaQueryWrapper<DbmyOrder>().eq(DbmyOrder::getOrderId, totalOrderVo.getId())).getStatus()
+                    );
+
+                }else if(totalOrderVo.getBusinessId() == 6){//诊前挂号
+
+                    totalOrderVo.setServiceStatus(
+                        zqghOrderMapper.selectOne(new LambdaQueryWrapper<ZqghOrder>().eq(ZqghOrder::getOrderId, totalOrderVo.getId())).getStatus()
+                    );
+
+
+                }else if(totalOrderVo.getBusinessId() == 0){//商城订单
+
+                    StoreOrder storeOrder = storeOrderMapper.selectOne(new LambdaQueryWrapper<StoreOrder>().eq(StoreOrder::getOrderId, totalOrderVo.getId()));
+                    totalOrderVo.setServiceStatus(
+                        storeOrder.getStatus()
+                    );
+
+                    StoreGoods storeGoods = storeGoodsMapper.selectById(storeOrder.getOrderId());
+                    List<StoreGoodsTag> storeGoodsTags = storeGoodsTagMapper.selectList(new LambdaQueryWrapper<StoreGoodsTag>().in(StoreGoodsTag::getId, getTages(storeGoods.getTags())).select(StoreGoodsTag::getTitle));
+                    totalOrderVo.setTags(storeGoodsTags);
+
+                }
+            });
+
+        });
         return TableDataInfo.build(result);
     }
 
@@ -123,15 +211,20 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
     @Override
     public TotalOrderVo createOrder(CreateOrderBo bo) {
         LoginUser loginUser = LoginHelper.getLoginUser();
+        TotalOrderVo totalOrderVo = new TotalOrderVo();
 
+        String orderSn = getOrderSn();
         bo.setStatus(0);
         //组装总订单数据新增
         TotalOrder totalOrder = BeanUtil.toBean(bo, TotalOrder.class);
-        totalOrder.setOrderSn(getOrderSn());
+        totalOrder.setOrderSn(orderSn);
         totalOrder.setUid(loginUser.getUserId().intValue());
         baseMapper.insert(totalOrder);
         bo.setOrderId(totalOrder.getId().intValue());
 
+        totalOrderVo.setOrderSn(orderSn);
+        totalOrderVo.setPayMoney(bo.getPayMoney());
+
         if(bo.getBusinessId() == 1){//预约陪诊
 
            YypzOrder yypzOrder = BeanUtil.toBean(bo, YypzOrder.class);
@@ -168,7 +261,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
            storeOrderMapper.insert(storeOrder);
 
         }
-        return null;
+        return totalOrderVo;
     }
 
     /**
@@ -181,6 +274,119 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
         return baseMapper.updateById(update) > 0;
     }
 
+    @Override
+    public Boolean cancelOrder(TotalOrderBo bo) {
+        TotalOrder totalOrder = baseMapper.selectById(bo.getId());
+        if(totalOrder.getBusinessId() == 1){//预约陪诊
+            yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId,totalOrder));
+            throw new ServiceException("该订单已分配给陪诊员,不允许取消订单!");
+        }
+        return baseMapper.updateById(totalOrder) > 0;
+    }
+
+    @Override
+    public Boolean refundOrder(TotalOrderBo bo) {
+        TotalOrder totalOrder = baseMapper.selectById(bo.getId());
+        totalOrder.setRefundAmount(totalOrder.getPayMoney());
+        totalOrder.setRefundReason(bo.getRefundReason());
+
+        if(totalOrder.getBusinessId() == 1){//预约陪诊
+            YypzOrder yypzOrder = yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId, totalOrder.getId()));
+            if(yypzOrder.getStatus().equals(CommonOrderStatus.TAKE_ORDER.getCode())){
+                throw new ServiceException("陪诊员已接单,不允许退款!");
+            }
+        }else if(totalOrder.getBusinessId() == 2){//代办挂号
+
+            DbghOrder dbghOrder = dbghOrderMapper.selectOne(new LambdaQueryWrapper<DbghOrder>().eq(DbghOrder::getOrderId, totalOrder.getId()));
+            if(dbghOrder.getStatus().equals(CommonOrderStatus.TAKE_ORDER.getCode())){
+                throw new ServiceException("陪诊员已接单,不允许退款!");
+            }
+
+        }else if(totalOrder.getBusinessId() == 3){//代办问诊
+
+            DbwzOrder dbwzOrder = dbwzOrderMapper.selectOne(new LambdaQueryWrapper<DbwzOrder>().eq(DbwzOrder::getOrderId, totalOrder.getId()));
+            if(dbwzOrder.getStatus().equals(CommonOrderStatus.TAKE_ORDER.getCode())){
+                throw new ServiceException("陪诊员已接单,不允许退款!");
+            }
+
+        }else if(totalOrder.getBusinessId() == 4){//住院陪护
+
+            ZyphOrder zyphOrder = zyphOrderMapper.selectOne(new LambdaQueryWrapper<ZyphOrder>().eq(ZyphOrder::getOrderId, totalOrder.getId()));
+            if(zyphOrder.getStatus().equals(CommonOrderStatus.TAKE_ORDER.getCode())){
+                throw new ServiceException("陪诊员已接单,不允许退款!");
+            }
+
+        }else if(totalOrder.getBusinessId() == 5){//代办买药
+
+            DbmyOrder dbmyOrder = dbmyOrderMapper.selectOne(new LambdaQueryWrapper<DbmyOrder>().eq(DbmyOrder::getOrderId, totalOrder.getId()));
+            if(dbmyOrder.getStatus().equals(DBMYOrderStatus.TAKE_ORDER.getCode())){
+                throw new ServiceException("陪诊员已接单,不允许退款!");
+            }
+
+        }else if(totalOrder.getBusinessId() == 6){//诊前挂号
+
+            ZqghOrder zqghOrder = zqghOrderMapper.selectOne(new LambdaQueryWrapper<ZqghOrder>().eq(ZqghOrder::getOrderId, totalOrder.getId()));
+            if(zqghOrder.getStatus().equals(CommonOrderStatus.TAKE_ORDER.getCode())){
+                throw new ServiceException("陪诊员已接单,不允许退款!");
+            }
+
+        }else if(totalOrder.getBusinessId() == 0){//商城订单
+
+            StoreOrder storeOrder = storeOrderMapper.selectOne(new LambdaQueryWrapper<StoreOrder>().eq(StoreOrder::getOrderId, totalOrder.getId()));
+            if(storeOrder.getStatus().equals(ShopOrderStatus.DELIVER.getCode())){
+                throw new ServiceException("商品已发货,不允许退款!");
+            }
+
+        }
+        //修改主订单退款理由
+        baseMapper.updateById(totalOrder);
+
+        if(totalOrder.getBusinessId() == 1){//预约陪诊
+            yypzOrderMapper.update(null,new LambdaUpdateWrapper<YypzOrder>()
+                .eq(YypzOrder::getOrderId,totalOrder.getId())
+            .set(YypzOrder::getStatus,CommonOrderStatus.BEING_REFUND.getCode()));
+
+        }else if(totalOrder.getBusinessId() == 2){//代办挂号
+
+            dbghOrderMapper.update(null,new LambdaUpdateWrapper<DbghOrder>()
+                .eq(DbghOrder::getOrderId,totalOrder.getId())
+                .set(DbghOrder::getStatus,CommonOrderStatus.BEING_REFUND.getCode()));
+
+        }else if(totalOrder.getBusinessId() == 3){//代办问诊
+
+           dbwzOrderMapper.update(null,new LambdaUpdateWrapper<DbwzOrder>()
+               .eq(DbwzOrder::getOrderId,totalOrder.getId())
+               .set(DbwzOrder::getStatus,CommonOrderStatus.BEING_REFUND.getCode()));
+
+        }else if(totalOrder.getBusinessId() == 4){//住院陪护
+
+            zyphOrderMapper.update(null,new LambdaUpdateWrapper<ZyphOrder>()
+                .eq(ZyphOrder::getOrderId,totalOrder.getId())
+                .set(ZyphOrder::getStatus,CommonOrderStatus.BEING_REFUND.getCode()));
+
+        }else if(totalOrder.getBusinessId() == 5){//代办买药
+
+            dbmyOrderMapper.update(null,new LambdaUpdateWrapper<DbmyOrder>()
+                .eq(DbmyOrder::getOrderId,totalOrder.getId())
+                .set(DbmyOrder::getStatus,DBMYOrderStatus.BEING_REFUND.getCode()));
+
+        }else if(totalOrder.getBusinessId() == 6){//诊前挂号
+
+            zqghOrderMapper.update(null,new LambdaUpdateWrapper<ZqghOrder>()
+                .eq(ZqghOrder::getOrderId,totalOrder.getId())
+                .set(ZqghOrder::getStatus,CommonOrderStatus.BEING_REFUND.getCode()));
+
+        }else if(totalOrder.getBusinessId() == 0){//商城订单
+
+            storeOrderMapper.update(null,new LambdaUpdateWrapper<StoreOrder>()
+                .eq(StoreOrder::getOrderId,totalOrder.getId())
+                .set(StoreOrder::getStatus,ShopOrderStatus.BEING_REFUND.getCode()));
+
+        }
+
+        return  true;
+    }
+
     /**
      * 保存前的数据校验
      */
@@ -287,4 +493,20 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
         String randomStr = String.format("%08d", randomNum); // 将随机数转换为指定长度的字符串
         return timestampStr + randomStr;
     }
+
+    public List<Integer> getTages(String tags){
+        // 去除空格和方括号
+        String numbersString = tags.replaceAll("[\\[\\] ]", "");
+
+        // 分割字符串
+        String[] numberStrings = numbersString.split(",");
+
+        // 转换为整数列表
+        List<Integer> numberList = new ArrayList<>();
+        for (String numberString : numberStrings) {
+            int number = Integer.parseInt(numberString);
+            numberList.add(number);
+        }
+        return numberList;
+    }
 }
diff --git a/pz-system/src/main/resources/mapper/system/TotalOrderMapper.xml b/pz-system/src/main/resources/mapper/system/TotalOrderMapper.xml
index 32ae45e..57b1a27 100644
--- a/pz-system/src/main/resources/mapper/system/TotalOrderMapper.xml
+++ b/pz-system/src/main/resources/mapper/system/TotalOrderMapper.xml
@@ -28,4 +28,41 @@
         <include refid="OrderCommon"/>
         where total_order.id = #{id}
     </select>
+    <select id="selectAppOrder" resultType="com.pz.system.domain.vo.TotalOrderVo">
+
+    </select>
+
+    <select id="selectByOrderId" resultType="com.pz.system.domain.vo.TotalOrderVo">
+        select
+        t.id,
+        t.order_sn,
+        t.uid,
+        t.em_id,
+        t.city_id,
+        t.business_id,
+        t.service_id,
+        t.pay_money,
+        t.status,
+        t.lng,
+        t.lat,
+        t.is_satisfaction,
+        t.evaluation_content,
+        t.refund_reason,
+        t.refund_amount,
+        t.pay_cs,
+        t.del_flag,
+        t.create_by,
+        t.create_time,
+        t.update_by,
+        t.update_time,
+        t.remark,
+        b.name as business,
+        s.name as service
+        from total_order t
+                          left join business b on b.id = t.business_id
+                          left join services s on s.id = t.service_id
+                          left join employees e on e.id = t.em_id
+        where t.id = #{id}
+    </select>
+
 </mapper>
--
libgit2 0.26.0