diff --git a/pz-admin/src/main/java/com/pz/web/controller/system/UserAddressController.java b/pz-admin/src/main/java/com/pz/web/controller/system/UserAddressController.java
new file mode 100644
index 0000000..e70f433
--- /dev/null
+++ b/pz-admin/src/main/java/com/pz/web/controller/system/UserAddressController.java
@@ -0,0 +1,106 @@
+package com.pz.web.controller.system;
+
+import java.util.List;
+import java.util.Arrays;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.pz.common.annotation.RepeatSubmit;
+import com.pz.common.annotation.Log;
+import com.pz.common.core.controller.BaseController;
+import com.pz.common.core.domain.PageQuery;
+import com.pz.common.core.domain.R;
+import com.pz.common.core.validate.AddGroup;
+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.vo.UserAddressVo;
+import com.pz.system.domain.bo.UserAddressBo;
+import com.pz.system.service.IUserAddressService;
+import com.pz.common.core.page.TableDataInfo;
+
+/**
+ * 用户收货地址
+ *
+ * @author ruoyi
+ * @date 2023-09-11
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/address")
+public class UserAddressController extends BaseController {
+
+    private final IUserAddressService iUserAddressService;
+
+    /**
+     * 查询用户收货地址列表
+     */
+    @SaCheckPermission("system:address:list")
+    @GetMapping("/list")
+    public TableDataInfo<UserAddressVo> list(UserAddressBo bo, PageQuery pageQuery) {
+        return iUserAddressService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出用户收货地址列表
+     */
+    @SaCheckPermission("system:address:export")
+    @Log(title = "用户收货地址", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(UserAddressBo bo, HttpServletResponse response) {
+        List<UserAddressVo> list = iUserAddressService.queryList(bo);
+        ExcelUtil.exportExcel(list, "用户收货地址", UserAddressVo.class, response);
+    }
+
+    /**
+     * 获取用户收货地址详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:address:query")
+    @GetMapping("/{id}")
+    public R<UserAddressVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Integer id) {
+        return R.ok(iUserAddressService.queryById(id));
+    }
+
+    /**
+     * 新增用户收货地址
+     */
+    @SaCheckPermission("system:address:add")
+    @Log(title = "用户收货地址", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody UserAddressBo bo) {
+        return toAjax(iUserAddressService.insertByBo(bo));
+    }
+
+    /**
+     * 修改用户收货地址
+     */
+    @SaCheckPermission("system:address:edit")
+    @Log(title = "用户收货地址", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserAddressBo bo) {
+        return toAjax(iUserAddressService.updateByBo(bo));
+    }
+
+    /**
+     * 删除用户收货地址
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:address:remove")
+    @Log(title = "用户收货地址", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Integer[] ids) {
+        return toAjax(iUserAddressService.deleteWithValidByIds(Arrays.asList(ids), true));
+    }
+}
diff --git a/pz-applet/src/main/java/com/pz/applet/AppletArticleController.java b/pz-applet/src/main/java/com/pz/applet/AppletArticleController.java
new file mode 100644
index 0000000..a3ad116
--- /dev/null
+++ b/pz-applet/src/main/java/com/pz/applet/AppletArticleController.java
@@ -0,0 +1,95 @@
+package com.pz.applet;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pz.common.annotation.Log;
+import com.pz.common.annotation.RepeatSubmit;
+import com.pz.common.core.controller.BaseController;
+import com.pz.common.core.domain.PageQuery;
+import com.pz.common.core.domain.R;
+import com.pz.common.core.page.TableDataInfo;
+import com.pz.common.core.validate.AddGroup;
+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.UserAppreciate;
+import com.pz.system.domain.bo.ArticleBo;
+import com.pz.system.domain.bo.ArticleCommentBo;
+import com.pz.system.domain.bo.UserAppreciateBo;
+import com.pz.system.domain.bo.UserCollectBo;
+import com.pz.system.domain.vo.ArticleVo;
+import com.pz.system.service.IArticleService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 文章
+ *
+ * @author ruoyi
+ * @date 2023-09-07
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/applet/article")
+public class AppletArticleController extends BaseController {
+
+    private final IArticleService iArticleService;
+
+    /**
+     * 查询文章列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<ArticleVo> list(ArticleBo bo, PageQuery pageQuery) {
+        return iArticleService.queryPageListByApp(bo, pageQuery);
+    }
+
+
+    /**
+     * 获取文章详细信息
+     *
+     * @param id 主键
+     */
+    @GetMapping("/{id}")
+    public R<ArticleVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Integer id) {
+        return R.ok(iArticleService.queryById(id));
+    }
+
+    /**
+     * 新增点赞
+     */
+    @RepeatSubmit()
+    @PostMapping("/Appreciate")
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody UserAppreciateBo bo) {
+        bo.setUid(1);
+        return toAjax(iArticleService.insertByAppreciate(bo));
+    }
+
+    /**
+     * 新增收藏
+     */
+    @RepeatSubmit()
+    @PostMapping("/Collect")
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody UserCollectBo bo) {
+        bo.setUid(1);
+        return toAjax(iArticleService.insertByCollect(bo));
+    }
+
+    /**
+     * 新增评论
+     */
+    @RepeatSubmit()
+    @PostMapping("/Comment")
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ArticleCommentBo bo) {
+        bo.setUid(1);
+        return toAjax(iArticleService.insertByComment(bo));
+    }
+
+}
diff --git a/pz-applet/src/main/java/com/pz/applet/AppletCompanyController.java b/pz-applet/src/main/java/com/pz/applet/AppletCompanyController.java
new file mode 100644
index 0000000..00bad7f
--- /dev/null
+++ b/pz-applet/src/main/java/com/pz/applet/AppletCompanyController.java
@@ -0,0 +1,50 @@
+package com.pz.applet;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pz.common.annotation.Log;
+import com.pz.common.annotation.RepeatSubmit;
+import com.pz.common.core.controller.BaseController;
+import com.pz.common.core.domain.PageQuery;
+import com.pz.common.core.domain.R;
+import com.pz.common.core.page.TableDataInfo;
+import com.pz.common.core.validate.AddGroup;
+import com.pz.common.core.validate.EditGroup;
+import com.pz.common.enums.BusinessType;
+import com.pz.common.utils.poi.ExcelUtil;
+import com.pz.merchant.domain.bo.CompanyBo;
+import com.pz.merchant.domain.vo.CompanyVo;
+import com.pz.merchant.service.ICompanyService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 商户
+ *
+ * @author WangMin
+ * @date 2023-09-11
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/applet/company")
+public class AppletCompanyController extends BaseController {
+
+    private final ICompanyService iCompanyService;
+
+    /**
+     * 查询商户列表
+     */
+    @SaCheckPermission("merchant:company:list")
+    @GetMapping("/list")
+    public TableDataInfo<CompanyVo> list(CompanyBo bo, PageQuery pageQuery) {
+        return iCompanyService.queryPageList(bo, pageQuery);
+    }
+
+}
diff --git a/pz-applet/src/main/java/com/pz/applet/AppletDepartmentController.java b/pz-applet/src/main/java/com/pz/applet/AppletDepartmentController.java
new file mode 100644
index 0000000..4d00dda
--- /dev/null
+++ b/pz-applet/src/main/java/com/pz/applet/AppletDepartmentController.java
@@ -0,0 +1,49 @@
+package com.pz.applet;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pz.common.annotation.Log;
+import com.pz.common.annotation.RepeatSubmit;
+import com.pz.common.core.controller.BaseController;
+import com.pz.common.core.domain.R;
+import com.pz.common.core.validate.AddGroup;
+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.DepartmentBo;
+import com.pz.system.domain.vo.DepartmentVo;
+import com.pz.system.service.IDepartmentService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 科室
+ *
+ * @author ruoyi
+ * @date 2023-09-07
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/applet/department")
+public class AppletDepartmentController extends BaseController {
+
+    private final IDepartmentService iDepartmentService;
+
+    /**
+     * 查询科室列表
+     */
+    @SaCheckPermission("system:department:list")
+    @GetMapping("/list")
+    public R<List<DepartmentVo>> list(DepartmentBo bo) {
+        return R.ok(iDepartmentService.queryPageList(bo));
+    }
+
+
+}
diff --git a/pz-applet/src/main/java/com/pz/applet/AppletEmployeesController.java b/pz-applet/src/main/java/com/pz/applet/AppletEmployeesController.java
new file mode 100644
index 0000000..f9eddc7
--- /dev/null
+++ b/pz-applet/src/main/java/com/pz/applet/AppletEmployeesController.java
@@ -0,0 +1,74 @@
+package com.pz.applet;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pz.common.annotation.Log;
+import com.pz.common.annotation.RepeatSubmit;
+import com.pz.common.core.controller.BaseController;
+import com.pz.common.core.domain.PageQuery;
+import com.pz.common.core.domain.R;
+import com.pz.common.core.page.TableDataInfo;
+import com.pz.common.core.validate.AddGroup;
+import com.pz.common.core.validate.EditGroup;
+import com.pz.common.enums.BusinessType;
+import com.pz.common.utils.poi.ExcelUtil;
+import com.pz.merchant.domain.bo.EmployeesBo;
+import com.pz.merchant.domain.vo.EmployeesVo;
+import com.pz.merchant.service.IEmployeesService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 陪诊员
+ *
+ * @author WangMin
+ * @date 2023-09-11
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/applet/employees")
+public class AppletEmployeesController extends BaseController {
+
+    private final IEmployeesService iEmployeesService;
+
+    /**
+     * 需求广场
+     */
+    @SaCheckPermission("merchant:employees:list")
+    @GetMapping("/needList")
+    public TableDataInfo<EmployeesVo> needList(EmployeesBo bo, PageQuery pageQuery) {
+        return iEmployeesService.queryPageAppNeed(bo, pageQuery);
+    }
+
+    /**
+     * 排行榜
+     */
+    @SaCheckPermission("merchant:employees:list")
+    @GetMapping("/rankingList")
+    public TableDataInfo<EmployeesVo> rankingList(EmployeesBo bo, PageQuery pageQuery) {
+        return iEmployeesService.queryPageAppRanking(bo, pageQuery);
+    }
+
+
+    /**
+     * 获取陪诊员详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("merchant:employees:query")
+    @GetMapping("/{id}")
+    public R<EmployeesVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Integer id) {
+        return R.ok(iEmployeesService.queryByApp(id));
+    }
+
+
+
+}
diff --git a/pz-applet/src/main/java/com/pz/applet/AppletHospitalController.java b/pz-applet/src/main/java/com/pz/applet/AppletHospitalController.java
new file mode 100644
index 0000000..e86128a
--- /dev/null
+++ b/pz-applet/src/main/java/com/pz/applet/AppletHospitalController.java
@@ -0,0 +1,62 @@
+package com.pz.applet;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pz.common.annotation.Log;
+import com.pz.common.annotation.RepeatSubmit;
+import com.pz.common.core.controller.BaseController;
+import com.pz.common.core.domain.PageQuery;
+import com.pz.common.core.domain.R;
+import com.pz.common.core.page.TableDataInfo;
+import com.pz.common.core.validate.AddGroup;
+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.HospitalBo;
+import com.pz.system.domain.vo.HospitalVo;
+import com.pz.system.service.IHospitalService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 医院
+ *
+ * @author ruoyi
+ * @date 2023-09-07
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/applet/hospital")
+public class AppletHospitalController extends BaseController {
+
+    private final IHospitalService iHospitalService;
+
+    /**
+     * 查询医院列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<HospitalVo> list(HospitalBo bo, PageQuery pageQuery) {
+        return iHospitalService.queryPageList(bo, pageQuery);
+    }
+
+
+    /**
+     * 获取医院详细信息
+     *
+     * @param id 主键
+     */
+    @GetMapping("/{id}")
+    public R<HospitalVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Integer id) {
+        return R.ok(iHospitalService.queryById(id));
+    }
+
+
+}
diff --git a/pz-applet/src/main/java/com/pz/applet/AppletInformationController.java b/pz-applet/src/main/java/com/pz/applet/AppletInformationController.java
new file mode 100644
index 0000000..913059f
--- /dev/null
+++ b/pz-applet/src/main/java/com/pz/applet/AppletInformationController.java
@@ -0,0 +1,61 @@
+package com.pz.applet;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pz.common.annotation.Log;
+import com.pz.common.annotation.RepeatSubmit;
+import com.pz.common.core.controller.BaseController;
+import com.pz.common.core.domain.PageQuery;
+import com.pz.common.core.domain.R;
+import com.pz.common.core.page.TableDataInfo;
+import com.pz.common.core.validate.AddGroup;
+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.InformationBo;
+import com.pz.system.domain.vo.InformationVo;
+import com.pz.system.service.IInformationService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 新闻资讯
+ *
+ * @author ruoyi
+ * @date 2023-09-07
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/applet/information")
+public class AppletInformationController extends BaseController {
+
+    private final IInformationService iInformationService;
+
+    /**
+     * 查询新闻资讯列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<InformationVo> list(InformationBo bo, PageQuery pageQuery) {
+        return iInformationService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 获取新闻资讯详细信息
+     *
+     * @param id 主键
+     */
+    @GetMapping("/{id}")
+    public R<InformationVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Integer id) {
+        return R.ok(iInformationService.queryById(id));
+    }
+
+
+}
diff --git a/pz-applet/src/main/java/com/pz/applet/AppletUserAddressController.java b/pz-applet/src/main/java/com/pz/applet/AppletUserAddressController.java
new file mode 100644
index 0000000..a1b734e
--- /dev/null
+++ b/pz-applet/src/main/java/com/pz/applet/AppletUserAddressController.java
@@ -0,0 +1,99 @@
+package com.pz.applet;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pz.common.annotation.Log;
+import com.pz.common.annotation.RepeatSubmit;
+import com.pz.common.core.controller.BaseController;
+import com.pz.common.core.domain.PageQuery;
+import com.pz.common.core.domain.R;
+import com.pz.common.core.page.TableDataInfo;
+import com.pz.common.core.validate.AddGroup;
+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.UserAddressBo;
+import com.pz.system.domain.vo.UserAddressVo;
+import com.pz.system.service.IUserAddressService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 用户收货地址
+ *
+ * @author ruoyi
+ * @date 2023-09-11
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/applet/address")
+public class AppletUserAddressController extends BaseController {
+
+    private final IUserAddressService iUserAddressService;
+
+    /**
+     * 查询用户收货地址列表
+     */
+    @SaCheckPermission("system:address:list")
+    @GetMapping("/list")
+    public TableDataInfo<UserAddressVo> list(UserAddressBo bo, PageQuery pageQuery) {
+        return iUserAddressService.queryPageList(bo, pageQuery);
+    }
+
+
+
+    /**
+     * 获取用户收货地址详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:address:query")
+    @GetMapping("/{id}")
+    public R<UserAddressVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Integer id) {
+        return R.ok(iUserAddressService.queryById(id));
+    }
+
+    /**
+     * 新增用户收货地址
+     */
+    @SaCheckPermission("system:address:add")
+    @Log(title = "用户收货地址", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody UserAddressBo bo) {
+        bo.setUid(1);
+        return toAjax(iUserAddressService.insertByBo(bo));
+    }
+
+    /**
+     * 修改用户收货地址
+     */
+    @SaCheckPermission("system:address:edit")
+    @Log(title = "用户收货地址", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserAddressBo bo) {
+        return toAjax(iUserAddressService.updateByBo(bo));
+    }
+
+    /**
+     * 删除用户收货地址
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:address:remove")
+    @Log(title = "用户收货地址", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Integer[] ids) {
+        return toAjax(iUserAddressService.deleteWithValidByIds(Arrays.asList(ids), true));
+    }
+}
diff --git a/pz-applet/src/main/java/com/pz/applet/AppletUserVsitorController.java b/pz-applet/src/main/java/com/pz/applet/AppletUserVsitorController.java
new file mode 100644
index 0000000..55342ec
--- /dev/null
+++ b/pz-applet/src/main/java/com/pz/applet/AppletUserVsitorController.java
@@ -0,0 +1,49 @@
+package com.pz.applet;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pz.common.annotation.Log;
+import com.pz.common.annotation.RepeatSubmit;
+import com.pz.common.core.controller.BaseController;
+import com.pz.common.core.domain.PageQuery;
+import com.pz.common.core.domain.R;
+import com.pz.common.core.page.TableDataInfo;
+import com.pz.common.core.validate.AddGroup;
+import com.pz.common.enums.BusinessType;
+import com.pz.system.domain.bo.ServicesBo;
+import com.pz.system.domain.bo.UserVsitorBo;
+import com.pz.system.domain.vo.ServicesVo;
+import com.pz.system.domain.vo.UserVsitorVo;
+import com.pz.system.service.IUserVsitorService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 就诊人
+ *
+ * @author ruoyi
+ * @date 2023-09-07
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/applet/vsitor")
+public class AppletUserVsitorController extends BaseController {
+    private final IUserVsitorService iUserVsitorService;
+    /**
+     * 查询就诊人列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<UserVsitorVo> list(UserVsitorBo bo, PageQuery pageQuery) {
+        return iUserVsitorService.queryPageList(bo, pageQuery);
+    }
+    /**
+     * 新增就诊人
+     */
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody UserVsitorBo bo) {
+        bo.setUid(1);
+        return toAjax(iUserVsitorService.insertByBo(bo));
+    }
+}
diff --git a/pz-system/src/main/java/com/pz/merchant/domain/bo/EmployeesBo.java b/pz-system/src/main/java/com/pz/merchant/domain/bo/EmployeesBo.java
index b72e1cb..4a6b564 100644
--- a/pz-system/src/main/java/com/pz/merchant/domain/bo/EmployeesBo.java
+++ b/pz-system/src/main/java/com/pz/merchant/domain/bo/EmployeesBo.java
@@ -127,5 +127,9 @@ public class EmployeesBo extends BaseEntity {
     @NotNull(message = "取消订单次数不能为空", groups = { AddGroup.class, EditGroup.class })
     private Integer killOrder;
 
+    /**
+     * 好评率
+     */
+    private String favorableRate;
 
 }
diff --git a/pz-system/src/main/java/com/pz/merchant/domain/vo/EmployeesVo.java b/pz-system/src/main/java/com/pz/merchant/domain/vo/EmployeesVo.java
index 25b35b1..42d6d9f 100644
--- a/pz-system/src/main/java/com/pz/merchant/domain/vo/EmployeesVo.java
+++ b/pz-system/src/main/java/com/pz/merchant/domain/vo/EmployeesVo.java
@@ -4,9 +4,11 @@ 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.TotalOrder;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 
 /**
@@ -108,4 +110,18 @@ public class EmployeesVo {
     private String cityName;
 
     private Integer cityId;
+    /**
+     * 好评率
+     */
+    private Double satisfactionRate;
+
+    /**
+     * 头像
+     */
+    private String avatar;
+
+    /**
+     * 最近好评
+     */
+    private List<TotalOrder> totalOrderVo;
 }
diff --git a/pz-system/src/main/java/com/pz/merchant/domain/vo/OrderInfoVO.java b/pz-system/src/main/java/com/pz/merchant/domain/vo/OrderInfoVO.java
index 6be4463..c5d5042 100644
--- a/pz-system/src/main/java/com/pz/merchant/domain/vo/OrderInfoVO.java
+++ b/pz-system/src/main/java/com/pz/merchant/domain/vo/OrderInfoVO.java
@@ -1,5 +1,6 @@
 package com.pz.merchant.domain.vo;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Data;
 
 /**
@@ -46,4 +47,7 @@ public class OrderInfoVO {
      */
     private String userName;
 
+    @JsonIgnore
+    private Integer bid;
+
 }
diff --git a/pz-system/src/main/java/com/pz/merchant/domain/vo/SonOrderVo.java b/pz-system/src/main/java/com/pz/merchant/domain/vo/SonOrderVo.java
new file mode 100644
index 0000000..7a21e4d
--- /dev/null
+++ b/pz-system/src/main/java/com/pz/merchant/domain/vo/SonOrderVo.java
@@ -0,0 +1,25 @@
+package com.pz.merchant.domain.vo;
+
+import lombok.Data;
+
+/**
+ * 子订单数据实体
+ * <p>created in  2023/9/11 17:18
+ *
+ * @author WangMin
+ * @version 1.0
+ */
+@Data
+public class SonOrderVo {
+
+    /**
+     * 就诊人员姓名
+     */
+    private String userName;
+
+    /**
+     * 服务状态,0:已发布,1:已接单,2:已完成,3:退款中 ,4:已退款,6:进行中
+     */
+    private Integer orderStatus;
+
+}
diff --git a/pz-system/src/main/java/com/pz/merchant/mapper/EmployeesMapper.java b/pz-system/src/main/java/com/pz/merchant/mapper/EmployeesMapper.java
index 340e88f..6f56778 100644
--- a/pz-system/src/main/java/com/pz/merchant/mapper/EmployeesMapper.java
+++ b/pz-system/src/main/java/com/pz/merchant/mapper/EmployeesMapper.java
@@ -3,9 +3,11 @@ package com.pz.merchant.mapper;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.pz.common.core.domain.PageQuery;
 import com.pz.common.core.page.TableDataInfo;
 import com.pz.merchant.domain.Employees;
+import com.pz.merchant.domain.bo.EmployeesBo;
 import com.pz.merchant.domain.bo.EmployeesListBo;
 import com.pz.merchant.domain.vo.EmployeesListVo;
 import com.pz.merchant.domain.vo.EmployeesVo;
@@ -47,5 +49,7 @@ public interface EmployeesMapper extends BaseMapperPlus<EmployeesMapper, Employe
      */
     List<OrderInfoVO> selectTodayOrderByEid(@Param("id") Integer emId);
 
+    Page<EmployeesVo> selectEmployees(EmployeesBo bo, PageQuery pageQuery);
 
+    EmployeesVo selectEmployeesById(Integer id);
 }
diff --git a/pz-system/src/main/java/com/pz/merchant/service/IEmployeesService.java b/pz-system/src/main/java/com/pz/merchant/service/IEmployeesService.java
index 3f0aeda..0a0f623 100644
--- a/pz-system/src/main/java/com/pz/merchant/service/IEmployeesService.java
+++ b/pz-system/src/main/java/com/pz/merchant/service/IEmployeesService.java
@@ -77,4 +77,19 @@ public interface IEmployeesService {
      * @return 订单列表
      */
     List<OrderInfoVO> queryTodayOrders(Integer emId);
+
+    /**
+     * 排行榜
+     */
+    TableDataInfo<EmployeesVo> queryPageAppRanking(EmployeesBo bo, PageQuery pageQuery);
+
+    /**
+     * 需求广场
+     */
+    TableDataInfo<EmployeesVo> queryPageAppNeed(EmployeesBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询陪诊员
+     */
+    EmployeesVo queryByApp(Integer id);
 }
diff --git a/pz-system/src/main/java/com/pz/merchant/service/ISonOrderService.java b/pz-system/src/main/java/com/pz/merchant/service/ISonOrderService.java
new file mode 100644
index 0000000..e396d70
--- /dev/null
+++ b/pz-system/src/main/java/com/pz/merchant/service/ISonOrderService.java
@@ -0,0 +1,21 @@
+package com.pz.merchant.service;
+
+import com.pz.merchant.domain.vo.SonOrderVo;
+
+/**
+ * 子订单业务
+ * <p>created in  2023/9/11 17:16
+ *
+ * @author WangMin
+ * @version 1.0
+ */
+public interface ISonOrderService {
+
+    /**
+     * 根据主订单ID查询子订单相关信息
+     * @param totalId 主订单ID
+     * @return 子订单相关信息
+     */
+    SonOrderVo getSonOrderInfoByTotalId(Integer totalId);
+
+}
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 828531c..d419521 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
@@ -17,8 +17,10 @@ import com.pz.merchant.domain.vo.EmployeesListVo;
 import com.pz.merchant.domain.vo.OrderInfoVO;
 import com.pz.merchant.domain.vo.TodayOrderListVo;
 import com.pz.merchant.mapper.CompanyMapper;
+import com.pz.system.domain.TotalOrder;
 import com.pz.system.mapper.CityMapper;
 import com.pz.system.mapper.SysUserMapper;
+import com.pz.system.mapper.TotalOrderMapper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import com.pz.merchant.domain.bo.EmployeesBo;
@@ -44,7 +46,7 @@ public class EmployeesServiceImpl implements IEmployeesService {
     private final CompanyMapper companyMapper;
     private final SysUserMapper sysUserMapper;
     private final CityMapper cityMapper;
-
+    private final TotalOrderMapper totalOrderMapper;
     /**
      * 查询陪诊员
      */
@@ -62,16 +64,16 @@ public class EmployeesServiceImpl implements IEmployeesService {
         Page<EmployeesVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         Optional.ofNullable(result.getRecords()).ifPresent(employeesVos -> {
             employeesVos.forEach(employeesVo -> {
-                //获取商户名称
+                // 获取商户名称
                 Optional.ofNullable(companyMapper.selectVoById(employeesVo.getCompanyId()))
                     .ifPresent(companyVo -> employeesVo.setCompanyName(companyVo.getName()));
 
-                //获取用户名称
+                // 获取用户名称
                 Optional.ofNullable(sysUserMapper.selectUserById(employeesVo.getUid().longValue())).ifPresent(
                     sysUser -> employeesVo.setUserName(sysUser.getNickName())
                 );
 
-                //获取城市
+                // 获取城市
                 Optional.ofNullable(cityMapper.selectVoById(employeesVo.getCityId())).ifPresent(
                     cityVo -> employeesVo.setCityName(cityVo.getName())
                 );
@@ -138,6 +140,65 @@ public class EmployeesServiceImpl implements IEmployeesService {
     }
 
     /**
+     * 需求广场
+     * @param bo
+     * @param pageQuery
+     * @return
+     */
+    @Override
+    public TableDataInfo<EmployeesVo> queryPageAppNeed(EmployeesBo bo, PageQuery pageQuery) {
+        Page<EmployeesVo> result = baseMapper.selectEmployees(bo,pageQuery);
+        Optional.ofNullable(result.getRecords()).ifPresent(EmployeesVo -> {
+            EmployeesVo.forEach(t -> {
+                List<TotalOrder> totalOrder = totalOrderMapper.selectList(Wrappers.<TotalOrder>lambdaQuery()
+                    .eq(TotalOrder::getEmId, t.getId())
+                    .eq(TotalOrder::getIsSatisfaction, 1)
+                    .orderByDesc(TotalOrder::getId)
+                    .last("LIMIT 1"));
+                t.setTotalOrderVo(totalOrder);
+            });
+        });
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 排行榜
+     * @param bo
+     * @param pageQuery
+     * @return
+     */
+    @Override
+    public TableDataInfo<EmployeesVo> queryPageAppRanking(EmployeesBo bo, PageQuery pageQuery) {
+        Page<EmployeesVo> result = baseMapper.selectEmployees(bo,pageQuery);
+        Optional.ofNullable(result.getRecords()).ifPresent(EmployeesVo -> {
+            EmployeesVo.forEach(t -> {
+                List<TotalOrder> totalOrder = totalOrderMapper.selectList(Wrappers.<TotalOrder>lambdaQuery()
+                    .eq(TotalOrder::getEmId, t.getId())
+                    .eq(TotalOrder::getIsSatisfaction, 1)
+                    .orderByDesc(TotalOrder::getId)
+                    .last("LIMIT 1"));
+                t.setTotalOrderVo(totalOrder);
+            });
+        });
+        return TableDataInfo.build(result);
+    }
+
+
+    /**
+     * 查询陪诊员详情
+     */
+    @Override
+    public EmployeesVo queryByApp(Integer id){
+        EmployeesVo employeesVo = baseMapper.selectEmployeesById(id);
+            List<TotalOrder> totalOrder = totalOrderMapper.selectList(Wrappers.<TotalOrder>lambdaQuery()
+                .eq(TotalOrder::getEmId, employeesVo.getId())
+                .eq(TotalOrder::getIsSatisfaction, 1)
+                .orderByDesc(TotalOrder::getId));
+        employeesVo.setTotalOrderVo(totalOrder);
+        return employeesVo;
+    }
+
+    /**
      * 保存前的数据校验
      */
     private void validEntityBeforeSave(Employees entity) {
@@ -177,7 +238,9 @@ public class EmployeesServiceImpl implements IEmployeesService {
     @Override
     public TodayOrderListVo queryEmployeesInfo(Integer emId) {
         TodayOrderListVo result = baseMapper.selectEmployeesInfoById(emId);
-
+        List<OrderInfoVO> orders = baseMapper.selectTodayOrderByEid(emId);
+        result.setTodayOrderList(orders);
+        result.setTodayOrderNum(orders.size());
         return result;
     }
 
diff --git a/pz-system/src/main/java/com/pz/system/domain/UserAddress.java b/pz-system/src/main/java/com/pz/system/domain/UserAddress.java
new file mode 100644
index 0000000..70a8861
--- /dev/null
+++ b/pz-system/src/main/java/com/pz/system/domain/UserAddress.java
@@ -0,0 +1,61 @@
+package com.pz.system.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.pz.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+ * 用户收货地址对象 user_address
+ *
+ * @author ruoyi
+ * @date 2023-09-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("user_address")
+public class UserAddress extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     *
+     */
+    @TableId(value = "id")
+    private Integer id;
+    /**
+     * 所属用户
+     */
+    private Integer uid;
+    /**
+     * 收货人名字
+     */
+    private String name;
+    /**
+     * 收货人电话
+     */
+    private String phone;
+    /**
+     * 所在地区
+     */
+    private String area;
+    /**
+     * 详细地址
+     */
+    private String address;
+    /**
+     * 是否默认
+     */
+    private Integer isDefult;
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}
diff --git a/pz-system/src/main/java/com/pz/system/domain/bo/ArticleBo.java b/pz-system/src/main/java/com/pz/system/domain/bo/ArticleBo.java
index dcdedc9..b08c7b0 100644
--- a/pz-system/src/main/java/com/pz/system/domain/bo/ArticleBo.java
+++ b/pz-system/src/main/java/com/pz/system/domain/bo/ArticleBo.java
@@ -4,6 +4,7 @@ import com.pz.common.core.domain.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import javax.validation.constraints.*;
+import java.util.List;
 
 
 /**
@@ -47,5 +48,14 @@ public class ArticleBo extends BaseEntity {
      */
     private String content;
 
+    /**
+     * 是否显示用户收藏(true收藏false非收藏)
+     */
+    private boolean isCollect;
+
+    /**
+     * 文章列表id
+     */
+    private List<Integer> articleId;
 
 }
diff --git a/pz-system/src/main/java/com/pz/system/domain/bo/ArticleCommentBo.java b/pz-system/src/main/java/com/pz/system/domain/bo/ArticleCommentBo.java
index 26e7c7c..95ba794 100644
--- a/pz-system/src/main/java/com/pz/system/domain/bo/ArticleCommentBo.java
+++ b/pz-system/src/main/java/com/pz/system/domain/bo/ArticleCommentBo.java
@@ -30,7 +30,7 @@ public class ArticleCommentBo extends BaseEntity {
     /**
      * 用户
      */
-    private Long uid;
+    private Integer uid;
 
     /**
      * 评论
diff --git a/pz-system/src/main/java/com/pz/system/domain/bo/UserAddressBo.java b/pz-system/src/main/java/com/pz/system/domain/bo/UserAddressBo.java
new file mode 100644
index 0000000..344fa01
--- /dev/null
+++ b/pz-system/src/main/java/com/pz/system/domain/bo/UserAddressBo.java
@@ -0,0 +1,66 @@
+package com.pz.system.domain.bo;
+
+import com.pz.common.core.domain.BaseEntity;
+import com.pz.common.core.validate.AddGroup;
+import com.pz.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+
+/**
+ * 用户收货地址业务对象 user_address
+ *
+ * @author ruoyi
+ * @date 2023-09-11
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class UserAddressBo extends BaseEntity {
+
+    /**
+     *
+     */
+    private Integer id;
+
+    /**
+     * 所属用户
+     */
+    @NotNull(message = "所属用户不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer uid;
+
+    /**
+     * 收货人名字
+     */
+    @NotBlank(message = "收货人名字不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 收货人电话
+     */
+    @NotBlank(message = "收货人电话不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String phone;
+
+    /**
+     * 所在地区
+     */
+    private String area;
+
+    /**
+     * 详细地址
+     */
+    private String address;
+
+    /**
+     * 是否默认
+     */
+    private Integer isDefult;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}
diff --git a/pz-system/src/main/java/com/pz/system/domain/vo/ArticleCommentVo.java b/pz-system/src/main/java/com/pz/system/domain/vo/ArticleCommentVo.java
index f11dc0e..cf0750a 100644
--- a/pz-system/src/main/java/com/pz/system/domain/vo/ArticleCommentVo.java
+++ b/pz-system/src/main/java/com/pz/system/domain/vo/ArticleCommentVo.java
@@ -6,6 +6,8 @@ import com.pz.common.annotation.ExcelDictFormat;
 import com.pz.common.convert.ExcelDictConvert;
 import lombok.Data;
 
+import java.util.Date;
+
 
 /**
  * 文章评论视图对象 article_comment
@@ -20,7 +22,7 @@ public class ArticleCommentVo {
     private static final long serialVersionUID = 1L;
 
     /**
-     * 
+     *
      */
     @ExcelProperty(value = "")
     private Integer id;
@@ -43,5 +45,16 @@ public class ArticleCommentVo {
     @ExcelProperty(value = "评论")
     private String comment;
 
-
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 用户名称
+     */
+    private String userName;
+    /**
+     * 用户头像
+     */
+    private String avatar;
 }
diff --git a/pz-system/src/main/java/com/pz/system/domain/vo/ArticleVo.java b/pz-system/src/main/java/com/pz/system/domain/vo/ArticleVo.java
index 0e623d1..d77741b 100644
--- a/pz-system/src/main/java/com/pz/system/domain/vo/ArticleVo.java
+++ b/pz-system/src/main/java/com/pz/system/domain/vo/ArticleVo.java
@@ -6,6 +6,8 @@ import com.pz.common.annotation.ExcelDictFormat;
 import com.pz.common.convert.ExcelDictConvert;
 import lombok.Data;
 
+import java.util.List;
+
 
 /**
  * 文章视图对象 article
@@ -69,4 +71,19 @@ public class ArticleVo {
      * 收藏数
      */
     private Integer collectNum;
+
+    /**
+     * 是否点赞
+     */
+    private boolean isAppreciate;
+
+    /**
+     * 是否收藏
+     */
+    private boolean isCollect;
+
+    /**
+     * 评论列表
+     */
+    private List<ArticleCommentVo> comment;
 }
diff --git a/pz-system/src/main/java/com/pz/system/domain/vo/UserAddressVo.java b/pz-system/src/main/java/com/pz/system/domain/vo/UserAddressVo.java
new file mode 100644
index 0000000..66fe3f0
--- /dev/null
+++ b/pz-system/src/main/java/com/pz/system/domain/vo/UserAddressVo.java
@@ -0,0 +1,71 @@
+package com.pz.system.domain.vo;
+
+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 lombok.Data;
+
+
+/**
+ * 用户收货地址视图对象 user_address
+ *
+ * @author ruoyi
+ * @date 2023-09-11
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class UserAddressVo {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private Integer id;
+
+    /**
+     * 所属用户
+     */
+    @ExcelProperty(value = "所属用户")
+    private Integer uid;
+
+    /**
+     * 收货人名字
+     */
+    @ExcelProperty(value = "收货人名字")
+    private String name;
+
+    /**
+     * 收货人电话
+     */
+    @ExcelProperty(value = "收货人电话")
+    private String phone;
+
+    /**
+     * 所在地区
+     */
+    @ExcelProperty(value = "所在地区")
+    private String area;
+
+    /**
+     * 详细地址
+     */
+    @ExcelProperty(value = "详细地址")
+    private String address;
+
+    /**
+     * 是否默认
+     */
+    @ExcelProperty(value = "是否默认")
+    private Integer isDefult;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}
diff --git a/pz-system/src/main/java/com/pz/system/mapper/DbghOrderMapper.java b/pz-system/src/main/java/com/pz/system/mapper/DbghOrderMapper.java
index e0b5085..63d751c 100644
--- a/pz-system/src/main/java/com/pz/system/mapper/DbghOrderMapper.java
+++ b/pz-system/src/main/java/com/pz/system/mapper/DbghOrderMapper.java
@@ -2,6 +2,7 @@ package com.pz.system.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.pz.merchant.domain.vo.SonOrderVo;
 import com.pz.system.domain.DbghOrder;
 import com.pz.system.domain.YypzOrder;
 import com.pz.system.domain.bo.DbghOrderBo;
@@ -9,6 +10,7 @@ import com.pz.system.domain.bo.YypzOrderBo;
 import com.pz.system.domain.vo.DbghOrderVo;
 import com.pz.common.core.mapper.BaseMapperPlus;
 import com.pz.system.domain.vo.YypzOrderVo;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 /**
@@ -17,7 +19,15 @@ import org.apache.ibatis.annotations.Param;
  * @author ruoyi
  * @date 2023-09-11
  */
+@Mapper
 public interface DbghOrderMapper extends BaseMapperPlus<DbghOrderMapper, DbghOrder, DbghOrderVo> {
 
     Page<DbghOrderVo> findDbghOrderVoPage(IPage<DbghOrder> iPage, @Param("bo") DbghOrderBo bo);
+
+    /**
+     * 根据主订单ID查询子订单相关信息
+     * @param totalId 主订单ID
+     * @return 子订单相关信息
+     */
+    SonOrderVo selectSonOrderInfoByTotalId(Integer totalId);
 }
diff --git a/pz-system/src/main/java/com/pz/system/mapper/DbwzOrderMapper.java b/pz-system/src/main/java/com/pz/system/mapper/DbwzOrderMapper.java
index 0b5ef0f..6f75cc1 100644
--- a/pz-system/src/main/java/com/pz/system/mapper/DbwzOrderMapper.java
+++ b/pz-system/src/main/java/com/pz/system/mapper/DbwzOrderMapper.java
@@ -2,6 +2,7 @@ package com.pz.system.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.pz.merchant.domain.vo.SonOrderVo;
 import com.pz.system.domain.DbghOrder;
 import com.pz.system.domain.DbwzOrder;
 import com.pz.system.domain.bo.DbghOrderBo;
@@ -9,6 +10,7 @@ import com.pz.system.domain.bo.DbwzOrderBo;
 import com.pz.system.domain.vo.DbghOrderVo;
 import com.pz.system.domain.vo.DbwzOrderVo;
 import com.pz.common.core.mapper.BaseMapperPlus;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 /**
@@ -17,6 +19,15 @@ import org.apache.ibatis.annotations.Param;
  * @author ruoyi
  * @date 2023-09-11
  */
+@Mapper
 public interface DbwzOrderMapper extends BaseMapperPlus<DbwzOrderMapper, DbwzOrder, DbwzOrderVo> {
     Page<DbwzOrderVo> findDbwzOrderVoPage(IPage<DbwzOrder> iPage, @Param("bo") DbwzOrderBo bo);
+
+
+    /**
+     * 根据主订单ID查询子订单相关信息
+     * @param totalId 主订单ID
+     * @return 子订单相关信息
+     */
+    SonOrderVo selectSonOrderInfoByTotalId(Integer totalId);
 }
diff --git a/pz-system/src/main/java/com/pz/system/mapper/UserAddressMapper.java b/pz-system/src/main/java/com/pz/system/mapper/UserAddressMapper.java
new file mode 100644
index 0000000..d3286fe
--- /dev/null
+++ b/pz-system/src/main/java/com/pz/system/mapper/UserAddressMapper.java
@@ -0,0 +1,15 @@
+package com.pz.system.mapper;
+
+import com.pz.system.domain.UserAddress;
+import com.pz.system.domain.vo.UserAddressVo;
+import com.pz.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 用户收货地址Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-09-11
+ */
+public interface UserAddressMapper extends BaseMapperPlus<UserAddressMapper, UserAddress, UserAddressVo> {
+
+}
diff --git a/pz-system/src/main/java/com/pz/system/mapper/UserVsitorMapper.java b/pz-system/src/main/java/com/pz/system/mapper/UserVsitorMapper.java
index 633b59f..f5a2a38 100644
--- a/pz-system/src/main/java/com/pz/system/mapper/UserVsitorMapper.java
+++ b/pz-system/src/main/java/com/pz/system/mapper/UserVsitorMapper.java
@@ -3,6 +3,7 @@ package com.pz.system.mapper;
 import com.pz.system.domain.UserVsitor;
 import com.pz.system.domain.vo.UserVsitorVo;
 import com.pz.common.core.mapper.BaseMapperPlus;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * 就诊人员Mapper接口
@@ -10,6 +11,7 @@ import com.pz.common.core.mapper.BaseMapperPlus;
  * @author ruoyi
  * @date 2023-09-10
  */
+@Mapper
 public interface UserVsitorMapper extends BaseMapperPlus<UserVsitorMapper, UserVsitor, UserVsitorVo> {
 
 }
diff --git a/pz-system/src/main/java/com/pz/system/mapper/YypzOrderMapper.java b/pz-system/src/main/java/com/pz/system/mapper/YypzOrderMapper.java
index e0f5879..2794be5 100644
--- a/pz-system/src/main/java/com/pz/system/mapper/YypzOrderMapper.java
+++ b/pz-system/src/main/java/com/pz/system/mapper/YypzOrderMapper.java
@@ -2,10 +2,12 @@ package com.pz.system.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.pz.merchant.domain.vo.SonOrderVo;
 import com.pz.system.domain.YypzOrder;
 import com.pz.system.domain.bo.YypzOrderBo;
 import com.pz.system.domain.vo.YypzOrderVo;
 import com.pz.common.core.mapper.BaseMapperPlus;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 /**
@@ -14,7 +16,15 @@ import org.apache.ibatis.annotations.Param;
  * @author ruoyi
  * @date 2023-09-10
  */
+@Mapper
 public interface YypzOrderMapper extends BaseMapperPlus<YypzOrderMapper, YypzOrder, YypzOrderVo> {
 
     Page<YypzOrderVo> findYypzOrderVoPage(IPage<YypzOrder> iPage, @Param("bo")YypzOrderBo yypzOrderBo);
+
+    /**
+     * 根据主订单ID查询子订单相关信息
+     * @param totalId 主订单ID
+     * @return 子订单相关信息
+     */
+    SonOrderVo selectSonOrderInfoByTotalId(Integer totalId);
 }
diff --git a/pz-system/src/main/java/com/pz/system/mapper/ZyphOrderMapper.java b/pz-system/src/main/java/com/pz/system/mapper/ZyphOrderMapper.java
index adfa497..eab4490 100644
--- a/pz-system/src/main/java/com/pz/system/mapper/ZyphOrderMapper.java
+++ b/pz-system/src/main/java/com/pz/system/mapper/ZyphOrderMapper.java
@@ -2,6 +2,7 @@ package com.pz.system.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.pz.merchant.domain.vo.SonOrderVo;
 import com.pz.system.domain.YypzOrder;
 import com.pz.system.domain.ZyphOrder;
 import com.pz.system.domain.bo.YypzOrderBo;
@@ -9,6 +10,7 @@ import com.pz.system.domain.bo.ZyphOrderBo;
 import com.pz.system.domain.vo.YypzOrderVo;
 import com.pz.system.domain.vo.ZyphOrderVo;
 import com.pz.common.core.mapper.BaseMapperPlus;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 /**
@@ -17,7 +19,15 @@ import org.apache.ibatis.annotations.Param;
  * @author ruoyi
  * @date 2023-09-11
  */
+@Mapper
 public interface ZyphOrderMapper extends BaseMapperPlus<ZyphOrderMapper, ZyphOrder, ZyphOrderVo> {
 
     Page<ZyphOrderVo> findZyphOrderVoPage(IPage<ZyphOrder> iPage, @Param("bo") ZyphOrderBo zyphOrderBo);
+
+    /**
+     * 根据主订单ID查询子订单相关信息
+     * @param totalId 主订单ID
+     * @return 子订单相关信息
+     */
+    SonOrderVo selectSonOrderInfoByTotalId(Integer totalId);
 }
diff --git a/pz-system/src/main/java/com/pz/system/service/IArticleService.java b/pz-system/src/main/java/com/pz/system/service/IArticleService.java
index 0d7129c..3a8e9fd 100644
--- a/pz-system/src/main/java/com/pz/system/service/IArticleService.java
+++ b/pz-system/src/main/java/com/pz/system/service/IArticleService.java
@@ -1,6 +1,13 @@
 package com.pz.system.service;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.pz.system.domain.Article;
+import com.pz.system.domain.ArticleComment;
+import com.pz.system.domain.UserAppreciate;
+import com.pz.system.domain.UserCollect;
+import com.pz.system.domain.bo.ArticleCommentBo;
+import com.pz.system.domain.bo.UserAppreciateBo;
+import com.pz.system.domain.bo.UserCollectBo;
 import com.pz.system.domain.vo.ArticleVo;
 import com.pz.system.domain.bo.ArticleBo;
 import com.pz.common.core.page.TableDataInfo;
@@ -28,11 +35,29 @@ public interface IArticleService {
     TableDataInfo<ArticleVo> queryPageList(ArticleBo bo, PageQuery pageQuery);
 
     /**
+     * 小程序文章列表(收藏、非收藏)
+     */
+    TableDataInfo<ArticleVo> queryPageListByApp(ArticleBo bo, PageQuery pageQuery);
+
+    /**
      * 查询文章列表
      */
     List<ArticleVo> queryList(ArticleBo bo);
+    /**
+     * 新增点赞
+     */
+    Boolean insertByAppreciate(UserAppreciateBo bo);
 
     /**
+     * 新增收藏
+     */
+    Boolean insertByCollect(UserCollectBo bo);
+
+    /**
+     * 新增评论
+     */
+   Boolean insertByComment(ArticleCommentBo bo);
+    /**
      * 新增文章
      */
     Boolean insertByBo(ArticleBo bo);
diff --git a/pz-system/src/main/java/com/pz/system/service/IUserAddressService.java b/pz-system/src/main/java/com/pz/system/service/IUserAddressService.java
new file mode 100644
index 0000000..5ace28f
--- /dev/null
+++ b/pz-system/src/main/java/com/pz/system/service/IUserAddressService.java
@@ -0,0 +1,49 @@
+package com.pz.system.service;
+
+import com.pz.system.domain.UserAddress;
+import com.pz.system.domain.vo.UserAddressVo;
+import com.pz.system.domain.bo.UserAddressBo;
+import com.pz.common.core.page.TableDataInfo;
+import com.pz.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户收货地址Service接口
+ *
+ * @author ruoyi
+ * @date 2023-09-11
+ */
+public interface IUserAddressService {
+
+    /**
+     * 查询用户收货地址
+     */
+    UserAddressVo queryById(Integer id);
+
+    /**
+     * 查询用户收货地址列表
+     */
+    TableDataInfo<UserAddressVo> queryPageList(UserAddressBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询用户收货地址列表
+     */
+    List<UserAddressVo> queryList(UserAddressBo bo);
+
+    /**
+     * 新增用户收货地址
+     */
+    Boolean insertByBo(UserAddressBo bo);
+
+    /**
+     * 修改用户收货地址
+     */
+    Boolean updateByBo(UserAddressBo bo);
+
+    /**
+     * 校验并批量删除用户收货地址信息
+     */
+    Boolean deleteWithValidByIds(Collection<Integer> ids, Boolean isValid);
+}
diff --git a/pz-system/src/main/java/com/pz/system/service/impl/ArticleServiceImpl.java b/pz-system/src/main/java/com/pz/system/service/impl/ArticleServiceImpl.java
index dcb99cc..55fadf1 100644
--- a/pz-system/src/main/java/com/pz/system/service/impl/ArticleServiceImpl.java
+++ b/pz-system/src/main/java/com/pz/system/service/impl/ArticleServiceImpl.java
@@ -3,23 +3,26 @@ package com.pz.system.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.pz.common.core.domain.entity.SysUser;
 import com.pz.common.core.page.TableDataInfo;
 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.system.domain.ArticleComment;
 import com.pz.system.domain.UserAppreciate;
 import com.pz.system.domain.UserCollect;
+import com.pz.system.domain.bo.ArticleCommentBo;
+import com.pz.system.domain.bo.UserAppreciateBo;
+import com.pz.system.domain.bo.UserCollectBo;
+import com.pz.system.domain.vo.ArticleCommentVo;
 import com.pz.system.domain.vo.CityVo;
-import com.pz.system.mapper.CityMapper;
-import com.pz.system.mapper.UserAppreciateMapper;
-import com.pz.system.mapper.UserCollectMapper;
+import com.pz.system.mapper.*;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import com.pz.system.domain.bo.ArticleBo;
 import com.pz.system.domain.vo.ArticleVo;
 import com.pz.system.domain.Article;
-import com.pz.system.mapper.ArticleMapper;
 import com.pz.system.service.IArticleService;
 
 import java.util.*;
@@ -43,12 +46,38 @@ public class ArticleServiceImpl implements IArticleService {
 
     private final UserCollectMapper userCollectMapper;
 
+    private final ArticleCommentMapper articleCommentMapper;
+
+    private final SysUserMapper sysUserMapper;
+
     /**
      * 查询文章
      */
     @Override
     public ArticleVo queryById(Integer id) {
-        return baseMapper.selectVoById(id);
+        ArticleVo articleVo = baseMapper.selectVoById(id);
+        Long aLong = userAppreciateMapper.selectCount(Wrappers.<UserAppreciate>lambdaQuery().eq(UserAppreciate::getAid, id));
+        Long aLong1 = userCollectMapper.selectCount(Wrappers.<UserCollect>lambdaQuery().eq(UserCollect::getAid, id));
+        //是否点赞
+        articleVo.setAppreciate(aLong != 0);
+        //点赞数量
+        articleVo.setAppreciateNum(Math.toIntExact(aLong));
+        //是否收藏
+        articleVo.setCollect(aLong1 != 0);
+        //收藏数量
+        articleVo.setCollectNum(Math.toIntExact(aLong1));
+        //用户评论
+        List<ArticleCommentVo> articleCommentVos = articleCommentMapper.selectVoList(Wrappers.<ArticleComment>lambdaQuery().eq(ArticleComment::getAid, id).eq(ArticleComment::getUid, 1));
+
+        for (ArticleCommentVo articleCommentVo : articleCommentVos) {
+            if(null != articleCommentVo.getUid()){
+                SysUser sysUser = sysUserMapper.selectById(1);
+                articleCommentVo.setAvatar(sysUser.getAvatar());
+                articleCommentVo.setUserName(sysUser.getUserName());
+            }
+        }
+        articleVo.setComment(articleCommentVos);
+        return articleVo;
     }
 
     /**
@@ -61,7 +90,7 @@ public class ArticleServiceImpl implements IArticleService {
         Optional.ofNullable(result.getRecords()).ifPresent(articleVos -> {
             // 获取所有文章id集合
             List<Integer> articleIds = articleVos.stream()
-                .map(ArticleVo::getCityId)
+                .map(ArticleVo::getId)
                 .collect(Collectors.toList());
 
             // 查询城市名称
@@ -104,6 +133,68 @@ public class ArticleServiceImpl implements IArticleService {
         return TableDataInfo.build(result);
     }
 
+    @Override
+    public TableDataInfo<ArticleVo> queryPageListByApp(ArticleBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<Article> lqw = new LambdaQueryWrapper<>();
+        //Page<ArticleVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        // TODO 待登录写完修改
+        int userId = 1;
+        Page<ArticleVo> result = new Page<>();
+        //判断是否展示收藏文章
+        if(bo.isCollect()){
+            List<UserCollect> Collect = userCollectMapper.selectList(Wrappers.<UserCollect>lambdaQuery().eq(UserCollect::getUid, userId));
+
+            // 获取所有文章id集合
+            List<Integer> articleIds = Collect.stream()
+                .map(UserCollect::getAid)
+                .collect(Collectors.toList());
+
+            //查询用户收藏的所有文章
+            bo.setArticleId(articleIds);
+            lqw = buildQueryWrapper(bo);
+            result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        }else {
+            result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        }
+        Optional.ofNullable(result.getRecords()).ifPresent(articleVos -> {
+            // 获取所有文章id集合
+            List<Integer> articleIds = articleVos.stream()
+                .map(ArticleVo::getId)
+                .collect(Collectors.toList());
+            // 查询点赞和收藏数
+            Map<Integer, Integer> appreciateNumMap = new HashMap<>();
+            Map<Integer, Integer> collectNumMap = new HashMap<>();
+
+            if (CollectionUtils.isNotEmpty(articleIds)) {
+
+                List<UserAppreciate> userAppreciates = userAppreciateMapper.selectList(Wrappers.<UserAppreciate>lambdaQuery().in(UserAppreciate::getAid, articleIds));
+                List<UserCollect> userCollects = userCollectMapper.selectList(Wrappers.<UserCollect>lambdaQuery().in(UserCollect::getAid, articleIds));
+
+                for (UserAppreciate userAppreciate : userAppreciates) {
+                    Integer articleId = userAppreciate.getAid();
+                    appreciateNumMap.put(articleId, appreciateNumMap.getOrDefault(articleId, 0) + 1);
+                }
+
+                for (UserCollect userCollect : userCollects) {
+                    Integer articleId = userCollect.getAid();
+                    collectNumMap.put(articleId, collectNumMap.getOrDefault(articleId, 0) + 1);
+                }
+
+                // 设置城市名称、点赞数和收藏数
+                articleVos.forEach(articleVo -> {
+
+                    // 设置点赞数
+                    articleVo.setAppreciateNum(appreciateNumMap.getOrDefault(articleVo.getId(), 0));
+
+                    // 设置收藏数
+                    articleVo.setCollectNum(collectNumMap.getOrDefault(articleVo.getId(), 0));
+
+                });
+            }
+        });
+        return TableDataInfo.build(result);
+    }
+
     /**
      * 查询文章列表
      */
@@ -117,10 +208,54 @@ public class ArticleServiceImpl implements IArticleService {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<Article> lqw = Wrappers.lambdaQuery();
         lqw.like(StringUtils.isNotBlank(bo.getTitle()), Article::getTitle, bo.getTitle());
+        lqw.eq(!Objects.isNull(bo.getCityId()), Article::getCityId, bo.getCityId());
+        lqw.in(CollectionUtils.isNotEmpty(bo.getArticleId()), Article::getId, bo.getArticleId());
         return lqw;
     }
 
     /**
+     * 新增点赞
+     */
+    @Override
+    public Boolean insertByAppreciate(UserAppreciateBo bo) {
+        UserAppreciate add = BeanUtil.toBean(bo, UserAppreciate.class);
+
+        boolean flag = userAppreciateMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 新增收藏
+     */
+    @Override
+    public Boolean insertByCollect(UserCollectBo bo) {
+        UserCollect add = BeanUtil.toBean(bo, UserCollect.class);
+
+        boolean flag = userCollectMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 新增评论
+     */
+    @Override
+    public Boolean insertByComment(ArticleCommentBo bo) {
+        ArticleComment add = BeanUtil.toBean(bo, ArticleComment.class);
+
+        boolean flag = articleCommentMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
      * 新增文章
      */
     @Override
diff --git a/pz-system/src/main/java/com/pz/system/service/impl/DbghOrderServiceImpl.java b/pz-system/src/main/java/com/pz/system/service/impl/DbghOrderServiceImpl.java
index 62ae2a6..2ad248e 100644
--- a/pz-system/src/main/java/com/pz/system/service/impl/DbghOrderServiceImpl.java
+++ b/pz-system/src/main/java/com/pz/system/service/impl/DbghOrderServiceImpl.java
@@ -7,6 +7,8 @@ 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.merchant.domain.vo.SonOrderVo;
+import com.pz.merchant.service.ISonOrderService;
 import com.pz.system.mapper.UserVsitorMapper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -29,7 +31,7 @@ import java.util.Optional;
  */
 @RequiredArgsConstructor
 @Service
-public class DbghOrderServiceImpl implements IDbghOrderService {
+public class DbghOrderServiceImpl implements IDbghOrderService, ISonOrderService {
 
     private final DbghOrderMapper baseMapper;
 
@@ -52,8 +54,8 @@ public class DbghOrderServiceImpl implements IDbghOrderService {
         Optional.ofNullable(result.getRecords()).ifPresent(dbghOrderVos -> {
             dbghOrderVos.forEach(dbghOrderVo -> {
                 Optional.ofNullable(userVsitorMapper.selectVoById(dbghOrderVo.getVisitor())).ifPresent(
-                    //就诊人员
-                    userVsitorVo -> dbghOrderVo.setUserVsitorVo(userVsitorVo)
+                    // 就诊人员
+                    dbghOrderVo::setUserVsitorVo
                 );
             });
         });
@@ -111,7 +113,7 @@ public class DbghOrderServiceImpl implements IDbghOrderService {
      * 保存前的数据校验
      */
     private void validEntityBeforeSave(DbghOrder entity) {
-        //TODO 做一些数据校验,如唯一约束
+        // TODO 做一些数据校验,如唯一约束
     }
 
     /**
@@ -120,8 +122,13 @@ public class DbghOrderServiceImpl implements IDbghOrderService {
     @Override
     public Boolean deleteWithValidByIds(Collection<Integer> ids, Boolean isValid) {
         if (isValid) {
-            //TODO 做一些业务上的校验,判断是否需要校验
+            // TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
+    @Override
+    public SonOrderVo getSonOrderInfoByTotalId(Integer totalId) {
+        return baseMapper.selectSonOrderInfoByTotalId(totalId);
+    }
 }
diff --git a/pz-system/src/main/java/com/pz/system/service/impl/DbwzOrderServiceImpl.java b/pz-system/src/main/java/com/pz/system/service/impl/DbwzOrderServiceImpl.java
index c0b5535..c4a6d47 100644
--- a/pz-system/src/main/java/com/pz/system/service/impl/DbwzOrderServiceImpl.java
+++ b/pz-system/src/main/java/com/pz/system/service/impl/DbwzOrderServiceImpl.java
@@ -7,6 +7,8 @@ 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.merchant.domain.vo.SonOrderVo;
+import com.pz.merchant.service.ISonOrderService;
 import com.pz.system.mapper.UserVsitorMapper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -29,7 +31,7 @@ import java.util.Optional;
  */
 @RequiredArgsConstructor
 @Service
-public class DbwzOrderServiceImpl implements IDbwzOrderService {
+public class DbwzOrderServiceImpl implements IDbwzOrderService, ISonOrderService {
 
     private final DbwzOrderMapper baseMapper;
 
@@ -52,8 +54,8 @@ public class DbwzOrderServiceImpl implements IDbwzOrderService {
         Optional.ofNullable(result.getRecords()).ifPresent(dbwzOrderVos -> {
             dbwzOrderVos.forEach(dbwzOrderVo -> {
                 Optional.ofNullable(userVsitorMapper.selectVoById(dbwzOrderVo.getVisitor())).ifPresent(
-                    //就诊人员
-                    userVsitorVo -> dbwzOrderVo.setUserVsitorVo(userVsitorVo)
+                    // 就诊人员
+                    dbwzOrderVo::setUserVsitorVo
                 );
             });
         });
@@ -118,7 +120,7 @@ public class DbwzOrderServiceImpl implements IDbwzOrderService {
      * 保存前的数据校验
      */
     private void validEntityBeforeSave(DbwzOrder entity) {
-        //TODO 做一些数据校验,如唯一约束
+        // TODO 做一些数据校验,如唯一约束
     }
 
     /**
@@ -127,8 +129,13 @@ public class DbwzOrderServiceImpl implements IDbwzOrderService {
     @Override
     public Boolean deleteWithValidByIds(Collection<Integer> ids, Boolean isValid) {
         if (isValid) {
-            //TODO 做一些业务上的校验,判断是否需要校验
+            // TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
+    @Override
+    public SonOrderVo getSonOrderInfoByTotalId(Integer totalId) {
+        return baseMapper.selectSonOrderInfoByTotalId(totalId);
+    }
 }
diff --git a/pz-system/src/main/java/com/pz/system/service/impl/UserAddressServiceImpl.java b/pz-system/src/main/java/com/pz/system/service/impl/UserAddressServiceImpl.java
new file mode 100644
index 0000000..ef5f138
--- /dev/null
+++ b/pz-system/src/main/java/com/pz/system/service/impl/UserAddressServiceImpl.java
@@ -0,0 +1,114 @@
+package com.pz.system.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.pz.common.core.page.TableDataInfo;
+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 lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.pz.system.domain.bo.UserAddressBo;
+import com.pz.system.domain.vo.UserAddressVo;
+import com.pz.system.domain.UserAddress;
+import com.pz.system.mapper.UserAddressMapper;
+import com.pz.system.service.IUserAddressService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 用户收货地址Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-09-11
+ */
+@RequiredArgsConstructor
+@Service
+public class UserAddressServiceImpl implements IUserAddressService {
+
+    private final UserAddressMapper baseMapper;
+
+    /**
+     * 查询用户收货地址
+     */
+    @Override
+    public UserAddressVo queryById(Integer id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询用户收货地址列表
+     */
+    @Override
+    public TableDataInfo<UserAddressVo> queryPageList(UserAddressBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<UserAddress> lqw = buildQueryWrapper(bo);
+        Page<UserAddressVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询用户收货地址列表
+     */
+    @Override
+    public List<UserAddressVo> queryList(UserAddressBo bo) {
+        LambdaQueryWrapper<UserAddress> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<UserAddress> buildQueryWrapper(UserAddressBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<UserAddress> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUid() != null, UserAddress::getUid, bo.getUid());
+        lqw.like(StringUtils.isNotBlank(bo.getName()), UserAddress::getName, bo.getName());
+        lqw.eq(StringUtils.isNotBlank(bo.getPhone()), UserAddress::getPhone, bo.getPhone());
+        lqw.eq(StringUtils.isNotBlank(bo.getArea()), UserAddress::getArea, bo.getArea());
+        lqw.eq(StringUtils.isNotBlank(bo.getAddress()), UserAddress::getAddress, bo.getAddress());
+        lqw.eq(bo.getIsDefult() != null, UserAddress::getIsDefult, bo.getIsDefult());
+        return lqw;
+    }
+
+    /**
+     * 新增用户收货地址
+     */
+    @Override
+    public Boolean insertByBo(UserAddressBo bo) {
+        UserAddress add = BeanUtil.toBean(bo, UserAddress.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改用户收货地址
+     */
+    @Override
+    public Boolean updateByBo(UserAddressBo bo) {
+        UserAddress update = BeanUtil.toBean(bo, UserAddress.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(UserAddress entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除用户收货地址
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Integer> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/pz-system/src/main/java/com/pz/system/service/impl/YypzOrderServiceImpl.java b/pz-system/src/main/java/com/pz/system/service/impl/YypzOrderServiceImpl.java
index 46c17fe..afdfff4 100644
--- a/pz-system/src/main/java/com/pz/system/service/impl/YypzOrderServiceImpl.java
+++ b/pz-system/src/main/java/com/pz/system/service/impl/YypzOrderServiceImpl.java
@@ -7,6 +7,8 @@ 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.merchant.domain.vo.SonOrderVo;
+import com.pz.merchant.service.ISonOrderService;
 import com.pz.system.mapper.CityMapper;
 import com.pz.system.mapper.TotalOrderMapper;
 import com.pz.system.mapper.UserVsitorMapper;
@@ -32,7 +34,7 @@ import java.util.Optional;
  */
 @RequiredArgsConstructor
 @Service
-public class YypzOrderServiceImpl implements IYypzOrderService {
+public class YypzOrderServiceImpl implements IYypzOrderService, ISonOrderService {
 
     private final YypzOrderMapper baseMapper;
     private final UserVsitorMapper userVsitorMapper;
@@ -53,11 +55,9 @@ public class YypzOrderServiceImpl implements IYypzOrderService {
         Page<YypzOrderVo> result = baseMapper.findYypzOrderVoPage(pageQuery.build(), bo);
         Optional.ofNullable(result.getRecords()).ifPresent(yypzOrderVos -> {
             yypzOrderVos.forEach(yypzOrderVo -> {
-                Optional.ofNullable(userVsitorMapper.selectVoById(yypzOrderVo.getVisitor())).ifPresent(
-                    userVsitorVo ->
-                        //就诊人员
-                        yypzOrderVo.setUserVsitorVo(userVsitorVo)
-                );
+                // 就诊人员
+                Optional.ofNullable(userVsitorMapper.selectVoById(yypzOrderVo.getVisitor()))
+                    .ifPresent(yypzOrderVo::setUserVsitorVo);
             });
         });
         return TableDataInfo.build(result);
@@ -115,7 +115,7 @@ public class YypzOrderServiceImpl implements IYypzOrderService {
      * 保存前的数据校验
      */
     private void validEntityBeforeSave(YypzOrder entity) {
-        //TODO 做一些数据校验,如唯一约束
+        // TODO 做一些数据校验,如唯一约束
     }
 
     /**
@@ -124,8 +124,19 @@ public class YypzOrderServiceImpl implements IYypzOrderService {
     @Override
     public Boolean deleteWithValidByIds(Collection<Integer> ids, Boolean isValid) {
         if (isValid) {
-            //TODO 做一些业务上的校验,判断是否需要校验
+            // TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
+    /**
+     * 根据主订单ID查询子订单相关信息
+     *
+     * @param totalId 主订单ID
+     * @return 子订单相关信息
+     */
+    @Override
+    public SonOrderVo getSonOrderInfoByTotalId(Integer totalId) {
+        return baseMapper.selectSonOrderInfoByTotalId(totalId);
+    }
 }
diff --git a/pz-system/src/main/java/com/pz/system/service/impl/ZyphOrderServiceImpl.java b/pz-system/src/main/java/com/pz/system/service/impl/ZyphOrderServiceImpl.java
index 69659ff..60d1652 100644
--- a/pz-system/src/main/java/com/pz/system/service/impl/ZyphOrderServiceImpl.java
+++ b/pz-system/src/main/java/com/pz/system/service/impl/ZyphOrderServiceImpl.java
@@ -7,6 +7,8 @@ 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.merchant.domain.vo.SonOrderVo;
+import com.pz.merchant.service.ISonOrderService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import com.pz.system.domain.bo.ZyphOrderBo;
@@ -27,7 +29,7 @@ import java.util.Collection;
  */
 @RequiredArgsConstructor
 @Service
-public class ZyphOrderServiceImpl implements IZyphOrderService {
+public class ZyphOrderServiceImpl implements IZyphOrderService , ISonOrderService {
 
     private final ZyphOrderMapper baseMapper;
 
@@ -115,4 +117,15 @@ public class ZyphOrderServiceImpl implements IZyphOrderService {
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
+    /**
+     * 根据主订单ID查询子订单相关信息
+     *
+     * @param totalId 主订单ID
+     * @return 子订单相关信息
+     */
+    @Override
+    public SonOrderVo getSonOrderInfoByTotalId(Integer totalId) {
+        return baseMapper.selectSonOrderInfoByTotalId(totalId);
+    }
 }
diff --git a/pz-system/src/main/resources/mapper/merchant/EmployeesMapper.xml b/pz-system/src/main/resources/mapper/merchant/EmployeesMapper.xml
index ac8cc11..6ae4cf4 100644
--- a/pz-system/src/main/resources/mapper/merchant/EmployeesMapper.xml
+++ b/pz-system/src/main/resources/mapper/merchant/EmployeesMapper.xml
@@ -63,7 +63,53 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="selectTodayOrderByEid" resultType="com.pz.merchant.domain.vo.OrderInfoVO">
-
+        select total_order.id                                                                                as orderId,
+               total_order.status                                                                            as orderStatus,
+               services.name                                                                                 as project,
+               services.cover,
+               services.price,
+               CONVERT((1 - services.fenmo / 100), decimal(10, 2)) * CONVERT(services.price, decimal(10, 2)) as commission,
+               services.bid
+        from total_order
+                 left join services on total_order.service_id = services.id
+        <where>
+            date_format(total_order.create_time,'%Y-%m-%d')
+            <if test="id != null and id > 0">
+                and total_order.id = #{id}
+            </if>
+        </where>
+    </select>
+    <select id="selectEmployees" resultType="com.pz.merchant.domain.vo.EmployeesVo">
+        SELECT  e.id, s.avatar ,e.name,e.working_hours,(SUM(CASE WHEN o.is_satisfaction = 1 THEN 1 ELSE 0 END) / NULLIF(COUNT(o.is_satisfaction), 0)) * 100 AS satisfaction_rate
+        FROM employees e
+        INNER join total_order o on o.em_id = e.id
+        left join company c on c.id = e.company_id
+        left join sys_user s on s.user_id = e.uid
+        WHERE e.`status` = 1 and e.now_type= 1 and e.del_flag= 0
+        <if test="companyId != null and companyId != 0">
+            e.company_id = #{companyId}
+        </if>
+        GROUP BY
+        e.id,
+        e.`name`
+        <if test="favorableRate != null">
+            HAVING
+            satisfaction_rate >= #{favorableRate};
+        </if>
+        ORDER BY satisfaction_rate desc
+    </select>
+    <select id="selectEmployeesById" resultType="com.pz.merchant.domain.vo.EmployeesVo">
+        SELECT  e.id, s.avatar ,e.name,e.working_hours,(SUM(CASE WHEN o.is_satisfaction = 1 THEN 1 ELSE 0 END) / NULLIF(COUNT(o.is_satisfaction), 0)) * 100 AS satisfaction_rate
+        FROM employees e
+                 INNER join total_order o on o.em_id = e.id
+                 left join company c on c.id = e.company_id
+                 left join sys_user s on s.user_id = e.uid
+        WHERE e.`status` = 1 and e.now_type= 1 and e.del_flag= 0 and e.id = #{id}
+        GROUP BY
+            e.id,
+            e.`name`
+        HAVING
+            satisfaction_rate >= #{favorableRate};
     </select>
 
 
diff --git a/pz-system/src/main/resources/mapper/system/DbghOrderMapper.xml b/pz-system/src/main/resources/mapper/system/DbghOrderMapper.xml
index 0bd0137..3224453 100644
--- a/pz-system/src/main/resources/mapper/system/DbghOrderMapper.xml
+++ b/pz-system/src/main/resources/mapper/system/DbghOrderMapper.xml
@@ -50,5 +50,14 @@
         </if>
     </select>
 
+    <select id="selectSonOrderInfoByTotalId" resultType="com.pz.merchant.domain.vo.SonOrderVo">
+        select user.nick_name    as userName,
+               dbgh_order.status as orderStatus
+        from dbgh_order
+                 left join sys_user as user on user.user_id = dbgh_order.visitor
+        where dbgh_order.order_id = #{id}
+
+    </select>
+
 
 </mapper>
diff --git a/pz-system/src/main/resources/mapper/system/DbwzOrderMapper.xml b/pz-system/src/main/resources/mapper/system/DbwzOrderMapper.xml
index 054e489..3c3232f 100644
--- a/pz-system/src/main/resources/mapper/system/DbwzOrderMapper.xml
+++ b/pz-system/src/main/resources/mapper/system/DbwzOrderMapper.xml
@@ -55,5 +55,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
     </select>
 
+    <select id="selectSonOrderInfoByTotalId" resultType="com.pz.merchant.domain.vo.SonOrderVo">
+        select user.nick_name    as userName,
+               dbwz_order.status as orderStatus
+        from dbwz_order
+                 left join sys_user as user on user.user_id = dbwz_order.visitor
+        where dbwz_order.order_id = #{id}
+
+    </select>
+
 
 </mapper>
diff --git a/pz-system/src/main/resources/mapper/system/YypzOrderMapper.xml b/pz-system/src/main/resources/mapper/system/YypzOrderMapper.xml
index 3b0e493..1a92914 100644
--- a/pz-system/src/main/resources/mapper/system/YypzOrderMapper.xml
+++ b/pz-system/src/main/resources/mapper/system/YypzOrderMapper.xml
@@ -51,4 +51,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             where tlo.order_sn LIKE CONCAT('%', #{bo.orderSn}, '%')
         </if>
     </select>
+
+    <select id="selectSonOrderInfoByTotalId" resultType="com.pz.merchant.domain.vo.SonOrderVo">
+        select user.nick_name    as userName,
+               yypz_order.status as orderStatus
+        from yypz_order
+                 left join sys_user as user on user.user_id = yypz_order.visitor
+        where yypz_order.order_id = #{id}
+    </select>
 </mapper>
diff --git a/pz-system/src/main/resources/mapper/system/ZyphOrderMapper.xml b/pz-system/src/main/resources/mapper/system/ZyphOrderMapper.xml
index 6a7691b..2611448 100644
--- a/pz-system/src/main/resources/mapper/system/ZyphOrderMapper.xml
+++ b/pz-system/src/main/resources/mapper/system/ZyphOrderMapper.xml
@@ -56,5 +56,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
     </select>
 
+    <select id="selectSonOrderInfoByTotalId" resultType="com.pz.merchant.domain.vo.SonOrderVo">
+        select user.nick_name    as userName,
+               zyph_order.status as orderStatus
+        from zyph_order
+                 left join sys_user as user on user.user_id = zyph_order.visitor
+        where zyph_order.order_id = #{id}
+    </select>
+
 
 </mapper>