From e0d6211dce01c68543b922d02e45d8bc93eedc31 Mon Sep 17 00:00:00 2001 From: 18796357645 <674126018@qq.com> Date: Sun, 18 May 2025 23:08:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=A4=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/modules/item/dto/AuditDTO.java | 6 +- .../java/io/modules/item/dto/CaseDTO.java | 2 + .../java/io/modules/item/dto/OrderDTO.java | 10 +- .../io/modules/item/entity/AuditEntity.java | 3 - .../io/modules/item/entity/OrderEntity.java | 5 +- .../java/io/controller/AuditController.java | 13 +- .../java/io/controller/CaseController.java | 29 ++- .../java/io/controller/OrderController.java | 53 ++++- ui/src/components/front/info-top.vue | 5 + ui/src/pages/admin/index.vue | 98 +-------- ui/src/pages/doctor/case.vue | 190 +++++++++++++----- ui/src/pages/doctor/log.vue | 40 +--- ui/src/pages/leaderboard/index.vue | 2 +- ui/src/pages/medic/[id].vue | 2 +- ui/src/pages/order/index.vue | 90 ++++++++- 15 files changed, 329 insertions(+), 219 deletions(-) diff --git a/common/src/main/java/io/modules/item/dto/AuditDTO.java b/common/src/main/java/io/modules/item/dto/AuditDTO.java index 6a9a8a0..19c911e 100644 --- a/common/src/main/java/io/modules/item/dto/AuditDTO.java +++ b/common/src/main/java/io/modules/item/dto/AuditDTO.java @@ -1,6 +1,7 @@ package io.modules.item.dto; import io.modules.item.entity.DoctorsEntity; +import io.modules.item.entity.OrderEntity; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.SchemaProperty; import lombok.Data; @@ -11,9 +12,6 @@ import java.util.Date; /** * 授权表 - * - * @author Mark # - * @since 1.0.0 2025-05-13 */ @Data @Schema(name = "授权表") @@ -40,5 +38,5 @@ public class AuditDTO implements Serializable { private DoctorsEntity doctors; private DoctorsEntity oneDoctors; - + private OrderEntity orderEntity; } diff --git a/common/src/main/java/io/modules/item/dto/CaseDTO.java b/common/src/main/java/io/modules/item/dto/CaseDTO.java index 61ebbaf..7f04efb 100644 --- a/common/src/main/java/io/modules/item/dto/CaseDTO.java +++ b/common/src/main/java/io/modules/item/dto/CaseDTO.java @@ -1,5 +1,6 @@ package io.modules.item.dto; +import io.modules.item.entity.CaseEntity; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.SchemaProperty; import lombok.Data; @@ -55,4 +56,5 @@ public class CaseDTO implements Serializable { @SchemaProperty(name = "用户名") private String username; + } diff --git a/common/src/main/java/io/modules/item/dto/OrderDTO.java b/common/src/main/java/io/modules/item/dto/OrderDTO.java index 18c5461..1c77d98 100644 --- a/common/src/main/java/io/modules/item/dto/OrderDTO.java +++ b/common/src/main/java/io/modules/item/dto/OrderDTO.java @@ -2,6 +2,7 @@ package io.modules.item.dto; import io.modules.item.dao.FrontUserDao; import io.modules.item.entity.AuditEntity; +import io.modules.item.entity.CaseEntity; import io.modules.item.entity.FrontUserEntity; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.SchemaProperty; @@ -62,9 +63,16 @@ public class OrderDTO implements Serializable { //订单编号 private Long orderId; + private String scoreContent; + private String remark; + private DoctorsDTO doctors; + private FrontUserEntity userDTO; - private AuditEntity audit; + + private AuditEntity auditEntity; + + private CaseEntity caseEntity ; } diff --git a/common/src/main/java/io/modules/item/entity/AuditEntity.java b/common/src/main/java/io/modules/item/entity/AuditEntity.java index 9126ae7..d573d5a 100644 --- a/common/src/main/java/io/modules/item/entity/AuditEntity.java +++ b/common/src/main/java/io/modules/item/entity/AuditEntity.java @@ -7,9 +7,6 @@ import java.util.Date; /** * 授权表 - * - * @author Mark # - * @since 1.0.0 2025-05-13 */ @Data @TableName("tb_audit") diff --git a/common/src/main/java/io/modules/item/entity/OrderEntity.java b/common/src/main/java/io/modules/item/entity/OrderEntity.java index 3c2a456..d857d30 100644 --- a/common/src/main/java/io/modules/item/entity/OrderEntity.java +++ b/common/src/main/java/io/modules/item/entity/OrderEntity.java @@ -12,7 +12,6 @@ import java.util.Date; @Data @TableName("tb_order") public class OrderEntity { - /** * 订单编号 */ @@ -22,6 +21,7 @@ public class OrderEntity { */ private Long userId; + private String paymentMethod; /** @@ -57,7 +57,6 @@ public class OrderEntity { */ private String content; - //评价内容 private String scoreContent; //备注 @@ -71,6 +70,4 @@ public class OrderEntity { * 订单创建时间 */ private Date createdTime; - - } \ No newline at end of file diff --git a/front/src/main/java/io/controller/AuditController.java b/front/src/main/java/io/controller/AuditController.java index 12e2fad..727ca8a 100644 --- a/front/src/main/java/io/controller/AuditController.java +++ b/front/src/main/java/io/controller/AuditController.java @@ -37,9 +37,6 @@ import java.util.stream.Collectors; /** * 授权表 - * - * @author Mark # - * @since 1.0.0 2025-05-13 */ @RestController @RequestMapping("api/audit") @@ -74,6 +71,16 @@ public class AuditController { }) public Result> page(@Parameter(hidden = true) @RequestParam Map params) { PageData page = auditService.page(params); + + List collect = page.getList().stream().map(e -> { + //查询订单信息 + OrderEntity orderEntity = orderDao.selectById(e.getOrderId()); + e.setOrderEntity(orderEntity); + return e; + }).collect(Collectors.toList()); + + + page.setList(collect); return new Result>().ok(page); } diff --git a/front/src/main/java/io/controller/CaseController.java b/front/src/main/java/io/controller/CaseController.java index e9b9072..2a8716f 100644 --- a/front/src/main/java/io/controller/CaseController.java +++ b/front/src/main/java/io/controller/CaseController.java @@ -1,6 +1,7 @@ package io.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import io.common.constant.Constant; import io.common.page.PageData; import io.common.utils.Result; @@ -9,8 +10,11 @@ import io.common.validator.ValidatorUtils; import io.common.validator.group.AddGroup; import io.common.validator.group.DefaultGroup; import io.common.validator.group.UpdateGroup; +import io.entity.OrderEntity; +import io.modules.item.dao.CaseDao; import io.modules.item.dto.CaseDTO; import io.modules.item.dto.OrderDTO; +import io.modules.item.entity.CaseEntity; import io.modules.item.service.CaseService; import io.modules.item.service.OrderService; import io.swagger.v3.oas.annotations.Operation; @@ -28,9 +32,7 @@ import java.util.Map; /** * 病例表 - * - * @author Mark # - * @since 1.0.0 2025-05-13 + */ @RestController @RequestMapping("/api/case") @@ -40,6 +42,9 @@ public class CaseController { @Autowired private CaseService caseService; + @Autowired + private CaseDao caseDao; + @Autowired private OrderService orderService; @@ -51,21 +56,25 @@ public class CaseController { @Parameter(name = Constant.ORDER_FIELD, description = "排序字段", in = ParameterIn.QUERY, ref="String") , @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)", in = ParameterIn.QUERY, ref="String") }) - public Result> page(@Parameter(hidden = true) @RequestParam Map params){ PageData page = caseService.page(params); - return new Result>().ok(page); } - @GetMapping("{id}") + @PostMapping("getCase") @Operation(summary = "信息") - - public Result get(@PathVariable("id") Long id){ - CaseDTO data = caseService.get(id); - return new Result().ok(data); + public Result get(@RequestBody CaseDTO dto){ + //通过订单查看病例 + LambdaQueryWrapper lwq = new LambdaQueryWrapper<>(); + lwq.eq(CaseEntity::getOrderId,dto.getOrderId()); + lwq.eq(CaseEntity::getItemId,dto.getItemId()); + CaseEntity caseEntity = caseDao.selectOne(lwq); + return new Result().ok(caseEntity); } + + + @PostMapping @Operation(summary = "保存") public Result save(@RequestBody CaseDTO dto){ diff --git a/front/src/main/java/io/controller/OrderController.java b/front/src/main/java/io/controller/OrderController.java index 84920a0..c20ac85 100644 --- a/front/src/main/java/io/controller/OrderController.java +++ b/front/src/main/java/io/controller/OrderController.java @@ -1,6 +1,7 @@ package io.controller; +import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import io.annotation.Login; import io.common.constant.Constant; @@ -11,23 +12,20 @@ import io.common.validator.ValidatorUtils; import io.common.validator.group.AddGroup; import io.common.validator.group.DefaultGroup; import io.common.validator.group.UpdateGroup; -import io.modules.item.dao.AuditDao; -import io.modules.item.dao.DoctorsDao; -import io.modules.item.dao.FrontUserDao; -import io.modules.item.dao.OrderDao; +import io.modules.item.dao.*; +import io.modules.item.dto.CaseDTO; import io.modules.item.dto.DoctorsDTO; import io.modules.item.dto.OrderDTO; import io.modules.item.dto.UserDTO; -import io.modules.item.entity.AuditEntity; -import io.modules.item.entity.DoctorsEntity; -import io.modules.item.entity.FrontUserEntity; -import io.modules.item.entity.OrderEntity; +import io.modules.item.entity.*; +import io.modules.item.service.CaseService; import io.modules.item.service.DoctorsService; import io.modules.item.service.OrderService; import io.modules.item.service.UserService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.enums.ParameterIn; import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.NumberUtils; @@ -37,6 +35,7 @@ import io.swagger.v3.oas.annotations.Parameters; import java.util.List; import java.util.Map; +import java.util.UUID; import java.util.stream.Collectors; @@ -51,6 +50,10 @@ public class OrderController { @Autowired private OrderService orderService; + @Autowired + private CaseDao caseDao; + + @Autowired private AuditDao auditDao; @@ -85,6 +88,17 @@ public class OrderController { doctorsDTO.setImg(uploadUrl + doctorsDTO.getImg()); e.setDoctors(doctorsDTO); } + + //如果不是预约 + if (e.getOrderStatus() != 0){ + LambdaQueryWrapper lwq = new LambdaQueryWrapper<>(); + lwq.eq(CaseEntity::getOrderId,e.getId()); + + CaseEntity caseEntity = caseDao.selectOne(lwq); + e.setCaseEntity(caseEntity); + } + + return e; }).collect(Collectors.toList()); page.setList(collect); @@ -94,8 +108,6 @@ public class OrderController { @GetMapping("list") public Result> page(@Parameter(hidden = true) @RequestParam Map params) { Long itemId = NumberUtils.parseNumber(params.get("itemId").toString(), Long.class); - - System.out.println(itemId); //分页 List page = orderService.list(params); List collect = page.stream().map(e -> { @@ -104,13 +116,18 @@ public class OrderController { if (dto != null) { e.setUser(dto); } + + //病例 +// caseService.get() + + //查看授权状态 LambdaQueryWrapper lwq = new LambdaQueryWrapper<>(); lwq.eq(AuditEntity::getOrderId,e.getId()); lwq.eq(AuditEntity::getItemId,itemId); AuditEntity auditEntity = auditDao.selectOne(lwq); if (auditEntity !=null){ - e.setAudit(auditEntity); + e.setAuditEntity(auditEntity); } return e; }).collect(Collectors.toList()); @@ -135,6 +152,17 @@ public class OrderController { e.setDoctors(doctorsDTO); } + //如果不是预约 + if (e.getOrderStatus() != 0){ + LambdaQueryWrapper lwq = new LambdaQueryWrapper<>(); + lwq.eq(CaseEntity::getOrderId,e.getId()); + + CaseEntity caseEntity = caseDao.selectOne(lwq); + e.setCaseEntity(caseEntity); + } + + + FrontUserEntity frontUserEntity = frontUserDao.selectById(e.getUserId()); if (frontUserEntity != null) { e.setUserDTO(frontUserEntity); @@ -160,7 +188,10 @@ public class OrderController { public Result save(@RequestBody OrderDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) { //效验数据 ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + long orderId = IdUtil.getSnowflake(1, 1).nextId(); dto.setUserId(userId); + //生成订单编号 + dto.setOrderId(orderId); orderService.save(dto); return new Result(); } diff --git a/ui/src/components/front/info-top.vue b/ui/src/components/front/info-top.vue index 9486375..b8b1fbf 100644 --- a/ui/src/components/front/info-top.vue +++ b/ui/src/components/front/info-top.vue @@ -53,6 +53,11 @@ + + + + + - - - - -
-

{{ item.name }}

-

- {{ item.value }}{{ item.tag }} -

-
-
-
-
- - + { diff --git a/ui/src/pages/doctor/case.vue b/ui/src/pages/doctor/case.vue index 25e1597..5890e7d 100644 --- a/ui/src/pages/doctor/case.vue +++ b/ui/src/pages/doctor/case.vue @@ -1,45 +1,99 @@ - @@ -114,7 +167,9 @@ const formRef = ref() const user = userStore().doctorUserInfo // 状态管理 const state = reactive({ + activeName: "first", loading: false, + case: {}, //病例详情 caseList: [] as any[], // 病例列表 selectedCase: null as any, // 选中的病例 dialogVisible: false, // 查看病例对话框 @@ -128,13 +183,14 @@ const state = reactive({ authForm: { privateKey: '', orderId: '' - } + }, + log: [] }) -// 模拟获取病例列表 + const getCaseList = async () => { state.loading = true try { - const res = await frontRequest.get('/api/order/list', {params: {limit: 999,itemId: user.id}}) + const res = await frontRequest.get('/api/order/list', {params: {limit: 999, itemId: user.id}}) state.caseList = res.data } catch (error) { ElMessage.error('获取病例列表失败') @@ -142,7 +198,15 @@ const getCaseList = async () => { state.loading = false } } - +// 如果使用 Composition API +const medicinesList = computed(() => { + if (!state.case.medicines) return []; + try { + return JSON.parse(state.case.medicines); + } catch (e) { + return []; + } +}); // 申请查看病例 const requestAccess = (caseItem: any) => { state.selectedCase = caseItem.user @@ -167,12 +231,10 @@ const submitRequest = async () => { // 查看病例(已授权) const viewCase = (caseItem: any) => { - if (caseItem.encrypted && !caseItem.accessGranted) { - requestAccess(caseItem) - return - } - state.selectedCase = caseItem - state.dialogVisible = true + frontRequest.post(`/api/case/getCase`, {orderId: caseItem.orderId, itemId: user.id}).then(res => { + state.case = res.data + state.dialogVisible = true + }) } // 患者授权查看 @@ -199,12 +261,48 @@ const submitAuth = async () => { } } + +function init() { + + frontRequest.get(`/api/audit/page?limit=9999&itemId=${user.id}`).then(res => { + state.log = res.data.list + }) + +} + // 初始化加载 onMounted(() => { getCaseList() + init() }) {