From 04ded6e78a0223942846aeea55bd1eca4a2bbcd8 Mon Sep 17 00:00:00 2001 From: maotiantian Date: Fri, 6 Mar 2026 18:11:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../muhu/MuhuFeedbackController.java | 12 +- .../controller/muhu/MuhuUserController.java | 20 +- .../system/SysDictDataController.java | 12 +- .../vet/TreatmentPlanController.java | 21 +- .../vet/VetExperienceArticleController.java | 2 +- .../vet/VetKnowledgeController.java | 4 +- .../vet/VetTrainingVideoController.java | 14 +- .../web/service/SysLoginService.java | 1 + .../com/chenhai/vet/domain/TreatmentPlan.java | 31 ++- .../com/chenhai/vet/domain/VetKnowledge.java | 39 ++++ .../impl/TreatmentPlanServiceImpl.java | 23 ++- .../service/impl/VetKnowledgeServiceImpl.java | 79 +++++++- .../impl/VetTrainingVideoServiceImpl.java | 65 +++--- .../mapper/vet/TreatmentPlanMapper.xml | 11 +- .../mapper/vet/VetKnowledgeMapper.xml | 26 ++- chenhai-ui/src/api/login.js | 1 + .../src/views/muhu/consultation/index.vue | 187 +++++++++++------- chenhai-ui/src/views/muhu/feedback/index.vue | 15 +- chenhai-ui/src/views/vet/comments/index.vue | 164 ++++++++------- chenhai-ui/src/views/vet/knowledge/index.vue | 66 ++++--- chenhai-ui/src/views/vet/plan/index.vue | 113 +++++++++-- chenhai-ui/src/views/vet/training/index.vue | 44 ++--- 22 files changed, 659 insertions(+), 291 deletions(-) diff --git a/chenhai-admin/src/main/java/com/chenhai/web/controller/muhu/MuhuFeedbackController.java b/chenhai-admin/src/main/java/com/chenhai/web/controller/muhu/MuhuFeedbackController.java index b875bf9..f8cb80b 100644 --- a/chenhai-admin/src/main/java/com/chenhai/web/controller/muhu/MuhuFeedbackController.java +++ b/chenhai-admin/src/main/java/com/chenhai/web/controller/muhu/MuhuFeedbackController.java @@ -37,7 +37,7 @@ public class MuhuFeedbackController extends BaseController /** * 查询反馈建议列表 */ - @PreAuthorize("@ss.hasPermi('muhu:feedback:list') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('muhu:feedback:list') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @GetMapping("/list") public TableDataInfo list(MuhuFeedback muhuFeedback) { @@ -49,7 +49,7 @@ public class MuhuFeedbackController extends BaseController /** * 导出反馈建议列表 */ - @PreAuthorize("@ss.hasPermi('muhu:feedback:export') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('muhu:feedback:export') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @Log(title = "反馈建议", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, MuhuFeedback muhuFeedback) @@ -62,7 +62,7 @@ public class MuhuFeedbackController extends BaseController /** * 获取反馈建议详细信息 */ - @PreAuthorize("@ss.hasPermi('muhu:feedback:query') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('muhu:feedback:query') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -72,7 +72,7 @@ public class MuhuFeedbackController extends BaseController /** * 新增反馈建议 */ - @PreAuthorize("@ss.hasPermi('muhu:feedback:add') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('muhu:feedback:add') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @Log(title = "反馈建议", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody MuhuFeedback muhuFeedback) @@ -83,7 +83,7 @@ public class MuhuFeedbackController extends BaseController /** * 修改反馈建议 */ - @PreAuthorize("@ss.hasPermi('muhu:feedback:edit') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('muhu:feedback:edit') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @Log(title = "反馈建议", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody MuhuFeedback muhuFeedback) @@ -94,7 +94,7 @@ public class MuhuFeedbackController extends BaseController /** * 删除反馈建议 */ - @PreAuthorize("@ss.hasPermi('muhu:feedback:remove') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('muhu:feedback:remove') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @Log(title = "反馈建议", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) diff --git a/chenhai-admin/src/main/java/com/chenhai/web/controller/muhu/MuhuUserController.java b/chenhai-admin/src/main/java/com/chenhai/web/controller/muhu/MuhuUserController.java index 6ef10a1..15ddf4c 100644 --- a/chenhai-admin/src/main/java/com/chenhai/web/controller/muhu/MuhuUserController.java +++ b/chenhai-admin/src/main/java/com/chenhai/web/controller/muhu/MuhuUserController.java @@ -57,7 +57,7 @@ public class MuhuUserController extends BaseController /** * 查询牧户用户列表 */ - @PreAuthorize("@ss.hasPermi('system:muhuuser:list') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('system:muhuuser:list') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @GetMapping("/list") public TableDataInfo list(SysMuhuUser sysMuhuUser) { @@ -69,7 +69,7 @@ public class MuhuUserController extends BaseController /** * 导出牧户用户列表 */ - @PreAuthorize("@ss.hasPermi('system:muhuuser:export') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('system:muhuuser:export') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @Log(title = "牧户用户", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, SysMuhuUser sysMuhuUser) @@ -82,7 +82,7 @@ public class MuhuUserController extends BaseController /** * 获取牧户用户详细信息 */ - @PreAuthorize("@ss.hasPermi('system:muhuuser:query') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('system:muhuuser:query') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @GetMapping(value = "/{userId}") public AjaxResult getInfo(@PathVariable("userId") Long userId) { @@ -92,7 +92,7 @@ public class MuhuUserController extends BaseController /** * 新增牧户用户 */ - @PreAuthorize("@ss.hasPermi('system:muhuuser:add') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('system:muhuuser:add') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @Log(title = "牧户用户", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody SysMuhuUser sysMuhuUser) @@ -118,7 +118,7 @@ public class MuhuUserController extends BaseController /** * 修改牧户用户 */ - @PreAuthorize("@ss.hasRole('muhu')") + @PreAuthorize("@ss.hasRole('muhu') or @ss.hasRole('vet')") @Log(title = "牧户个人信息", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult updateProfile(@RequestBody SysUser user) { @@ -180,7 +180,7 @@ public class MuhuUserController extends BaseController /** * 删除牧户用户 */ - @PreAuthorize("@ss.hasPermi('system:muhuuser:remove') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('system:muhuuser:remove') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @Log(title = "牧户用户", businessType = BusinessType.DELETE) @DeleteMapping("/{userIds}") public AjaxResult remove(@PathVariable Long[] userIds) @@ -191,7 +191,7 @@ public class MuhuUserController extends BaseController /** * 提交实名认证(新增) */ - @PreAuthorize("@ss.hasRole('muhu')") + @PreAuthorize("@ss.hasRole('muhu') or @ss.hasRole('vet')") @PostMapping("/auth/submit") public AjaxResult submitAuth(@RequestBody AuthRequest request) { @@ -241,7 +241,7 @@ public class MuhuUserController extends BaseController /** * 获取区域子节点 */ - @PreAuthorize("@ss.hasRole('muhu')") + @PreAuthorize("@ss.hasRole('muhu') or @ss.hasRole('vet')") @GetMapping("/areaChildren") public AjaxResult getAreaChildren(@RequestParam(value = "parentCode", required = false, defaultValue = "152900") String parentCode) { SysArea query = new SysArea(); @@ -254,7 +254,7 @@ public class MuhuUserController extends BaseController /** * 获取用户信息 */ - @PreAuthorize("@ss.hasRole('muhu')") + @PreAuthorize("@ss.hasRole('muhu') or @ss.hasRole('vet')") @GetMapping("/getUserInfo") public AjaxResult getUserInfo() { try { @@ -305,7 +305,7 @@ public class MuhuUserController extends BaseController /** * 保存用户区域代码 */ - @PreAuthorize("@ss.hasRole('muhu')") + @PreAuthorize("@ss.hasRole('muhu') or @ss.hasRole('vet')") @PutMapping("/saveUserAreaCode/{areaCode}") public AjaxResult getArea(@PathVariable("areaCode") String areaCode) { Long userId = getUserId(); diff --git a/chenhai-admin/src/main/java/com/chenhai/web/controller/system/SysDictDataController.java b/chenhai-admin/src/main/java/com/chenhai/web/controller/system/SysDictDataController.java index 93e5248..a2ddd2c 100644 --- a/chenhai-admin/src/main/java/com/chenhai/web/controller/system/SysDictDataController.java +++ b/chenhai-admin/src/main/java/com/chenhai/web/controller/system/SysDictDataController.java @@ -40,7 +40,7 @@ public class SysDictDataController extends BaseController @Autowired private ISysDictTypeService dictTypeService; - @PreAuthorize("@ss.hasPermi('system:dict:list') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('system:dict:list') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @GetMapping("/list") public TableDataInfo list(SysDictData dictData) { @@ -50,7 +50,7 @@ public class SysDictDataController extends BaseController } @Log(title = "字典数据", businessType = BusinessType.EXPORT) - @PreAuthorize("@ss.hasPermi('system:dict:export') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('system:dict:export') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @PostMapping("/export") public void export(HttpServletResponse response, SysDictData dictData) { @@ -62,7 +62,7 @@ public class SysDictDataController extends BaseController /** * 查询字典数据详细 */ - @PreAuthorize("@ss.hasPermi('system:dict:query') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('system:dict:query') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @GetMapping(value = "/{dictCode}") public AjaxResult getInfo(@PathVariable Long dictCode) { @@ -86,7 +86,7 @@ public class SysDictDataController extends BaseController /** * 新增字典类型 */ - @PreAuthorize("@ss.hasPermi('system:dict:add') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('system:dict:add') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @Log(title = "字典数据", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@Validated @RequestBody SysDictData dict) @@ -98,7 +98,7 @@ public class SysDictDataController extends BaseController /** * 修改保存字典类型 */ - @PreAuthorize("@ss.hasPermi('system:dict:edit') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('system:dict:edit') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @Log(title = "字典数据", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@Validated @RequestBody SysDictData dict) @@ -110,7 +110,7 @@ public class SysDictDataController extends BaseController /** * 删除字典类型 */ - @PreAuthorize("@ss.hasPermi('system:dict:remove') or @ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('system:dict:remove') or @ss.hasRole('muhu') or @ss.hasRole('vet')") @Log(title = "字典类型", businessType = BusinessType.DELETE) @DeleteMapping("/{dictCodes}") public AjaxResult remove(@PathVariable Long[] dictCodes) diff --git a/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/TreatmentPlanController.java b/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/TreatmentPlanController.java index a8fac46..10bbfb8 100644 --- a/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/TreatmentPlanController.java +++ b/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/TreatmentPlanController.java @@ -40,7 +40,7 @@ public class TreatmentPlanController extends BaseController { /** * 查询治疗方案列表 */ - @PreAuthorize("@ss.hasPermi('vet:plan:list')") + @PreAuthorize("@ss.hasPermi('vet:plan:list') or @ss.hasRole('vet') or @ss.hasRole('muhu')") @GetMapping("/list") public TableDataInfo list(TreatmentPlan treatmentPlan) { startPage(); @@ -49,14 +49,7 @@ public class TreatmentPlanController extends BaseController { } @GetMapping("/listByConsultationId") - public TableDataInfo listByConsultationId(@RequestParam(required = false) Long consultationId) { - TreatmentPlan treatmentPlan = new TreatmentPlan(); - - // 如果传了consultationId,就按ID查询 - if (consultationId != null) { - treatmentPlan.setConsultationId(consultationId); - } - + public TableDataInfo listByConsultationId(TreatmentPlan treatmentPlan) { startPage(); List list = treatmentPlanService.selectTreatmentPlanList(treatmentPlan); return getDataTable(list); @@ -64,7 +57,7 @@ public class TreatmentPlanController extends BaseController { /** * 导出治疗方案列表 */ - @PreAuthorize("@ss.hasPermi('vet:plan:export')") + @PreAuthorize("@ss.hasPermi('vet:plan:export') or @ss.hasRole('vet') or @ss.hasRole('muhu')") @Log(title = "治疗方案", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, TreatmentPlan treatmentPlan) { @@ -76,7 +69,7 @@ public class TreatmentPlanController extends BaseController { /** * 获取治疗方案详细信息 */ - @PreAuthorize("@ss.hasPermi('vet:plan:query')") + @PreAuthorize("@ss.hasPermi('vet:plan:query') or @ss.hasRole('vet') or @ss.hasRole('muhu')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return success(treatmentPlanService.selectTreatmentPlanById(id)); @@ -85,7 +78,7 @@ public class TreatmentPlanController extends BaseController { /** * 新增治疗方案 */ - @PreAuthorize("@ss.hasPermi('vet:plan:add')") + @PreAuthorize("@ss.hasPermi('vet:plan:add') or @ss.hasRole('vet') or @ss.hasRole('muhu')") @Log(title = "治疗方案", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody TreatmentPlan treatmentPlan) { @@ -95,7 +88,7 @@ public class TreatmentPlanController extends BaseController { /** * 修改治疗方案 */ - @PreAuthorize("@ss.hasPermi('vet:plan:edit')") + @PreAuthorize("@ss.hasPermi('vet:plan:edit') or @ss.hasRole('vet')") @Log(title = "治疗方案", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody TreatmentPlan treatmentPlan) { @@ -105,7 +98,7 @@ public class TreatmentPlanController extends BaseController { /** * 删除治疗方案 */ - @PreAuthorize("@ss.hasPermi('vet:plan:remove')") + @PreAuthorize("@ss.hasPermi('vet:plan:remove') or @ss.hasRole('vet') or @ss.hasRole('muhu')") @Log(title = "治疗方案", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { diff --git a/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/VetExperienceArticleController.java b/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/VetExperienceArticleController.java index 86cce7b..977b3f4 100644 --- a/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/VetExperienceArticleController.java +++ b/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/VetExperienceArticleController.java @@ -302,7 +302,7 @@ public class VetExperienceArticleController extends BaseController { * 发布新文章(论坛发布) */ @SensitiveCheck - @PreAuthorize("@ss.hasRole('muhu')or @ss.hasRole('vet')") + @PreAuthorize("@ss.hasRole('muhu') or @ss.hasRole('vet')") @Log(title = "发布经验文章", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody VetExperienceArticle article) { diff --git a/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/VetKnowledgeController.java b/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/VetKnowledgeController.java index dbf30c2..8c373e9 100644 --- a/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/VetKnowledgeController.java +++ b/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/VetKnowledgeController.java @@ -175,7 +175,7 @@ public class VetKnowledgeController extends BaseController * 查询已发布且审核通过的兽医文章列表(公开接口,无需权限) * 用于前端展示给用户,只显示可公开的文章 */ - @PreAuthorize("@ss.hasRole('muhu')") + @PreAuthorize("@ss.hasRole('muhu') or @ss.hasRole('vet')") @GetMapping("/published/list") public TableDataInfo publishedList(VetKnowledge vetKnowledge) { @@ -188,7 +188,7 @@ public class VetKnowledgeController extends BaseController /** * 获取已发布文章的详细信息(公开接口) */ - @PreAuthorize("@ss.hasRole('muhu')") + @PreAuthorize("@ss.hasRole('muhu') or @ss.hasRole('vet')") @GetMapping("/published/{id}") public AjaxResult getPublishedInfo(@PathVariable("id") Long id) { diff --git a/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/VetTrainingVideoController.java b/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/VetTrainingVideoController.java index e1ba181..88c15fc 100644 --- a/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/VetTrainingVideoController.java +++ b/chenhai-admin/src/main/java/com/chenhai/web/controller/vet/VetTrainingVideoController.java @@ -206,7 +206,7 @@ public class VetTrainingVideoController extends BaseController /** * 批量提交审核 */ - @PreAuthorize("@ss.hasRole('muhu')or @ss.hasRole('vet')") + @PreAuthorize("@ss.hasRole('muhu') or @ss.hasRole('vet')") @PostMapping("/batch-submit-audit") public AjaxResult batchSubmitForAudit(@RequestBody List videoIds) { Long userId = getCurrentUserId(); @@ -217,7 +217,7 @@ public class VetTrainingVideoController extends BaseController /** * 批量审核(管理员接口) */ - @PreAuthorize("@ss.hasPermi('vet:training:audit') or @ss.hasRole('muhu')or @ss.hasRole('manger')") + @PreAuthorize("@ss.hasPermi('vet:training:audit') or @ss.hasRole('muhu')or @ss.hasRole('manger')or @ss.hasRole('vet')") @PostMapping("/batch-audit") public AjaxResult batchAuditVideo(@RequestBody Map batchAuditData) { @SuppressWarnings("unchecked") @@ -241,7 +241,7 @@ public class VetTrainingVideoController extends BaseController /** * 批量上架 */ - @PreAuthorize("@ss.hasRole('muhu')or @ss.hasRole('vet')or @ss.hasRole('manger')") + @PreAuthorize("@ss.hasRole('muhu')or @ss.hasRole('vet')or @ss.hasRole('manger')or @ss.hasRole('vet')") @PostMapping("/batch-publish") public AjaxResult batchPublishVideo(@RequestBody List videoIds) { Long userId = getCurrentUserId(); @@ -252,7 +252,7 @@ public class VetTrainingVideoController extends BaseController /** * 批量下架 */ - @PreAuthorize("@ss.hasRole('muhu')or @ss.hasRole('vet')or @ss.hasRole('manger')") + @PreAuthorize("@ss.hasRole('muhu')or @ss.hasRole('vet')or @ss.hasRole('manger')or @ss.hasRole('vet')") @PostMapping("/batch-offline") public AjaxResult batchOfflineVideo(@RequestBody List videoIds) { Long userId = getCurrentUserId(); @@ -263,7 +263,7 @@ public class VetTrainingVideoController extends BaseController /** * 审核单个视频(管理员接口) */ - @PreAuthorize("@ss.hasPermi('vet:training:audit') or@ss.hasRole('muhu')") + @PreAuthorize("@ss.hasPermi('vet:training:audit') or@ss.hasRole('muhu')or @ss.hasRole('vet')") @PostMapping("/audit/{videoId}") public AjaxResult auditVideo(@PathVariable Long videoId, @RequestBody Map auditData) { @@ -289,7 +289,7 @@ public class VetTrainingVideoController extends BaseController /** * 上架单个视频(审核通过后才能上架) */ - @PreAuthorize("@ss.hasRole('muhu')or @ss.hasRole('vet')or @ss.hasRole('manger')") + @PreAuthorize("@ss.hasRole('muhu')or @ss.hasRole('vet')or @ss.hasRole('manger')or @ss.hasRole('vet')") @PostMapping("/publish/{videoId}") public AjaxResult publishVideo(@PathVariable Long videoId) { Long userId = getCurrentUserId(); @@ -304,7 +304,7 @@ public class VetTrainingVideoController extends BaseController /** * 下架单个视频 */ - @PreAuthorize("@ss.hasRole('muhu')or @ss.hasRole('vet')or @ss.hasRole('manger')") + @PreAuthorize("@ss.hasRole('muhu')or @ss.hasRole('vet')or @ss.hasRole('manger')or @ss.hasRole('vet')") @PostMapping("/offline/{videoId}") public AjaxResult offlineVideo(@PathVariable Long videoId) { Long userId = getCurrentUserId(); diff --git a/chenhai-framework/src/main/java/com/chenhai/framework/web/service/SysLoginService.java b/chenhai-framework/src/main/java/com/chenhai/framework/web/service/SysLoginService.java index 373bf88..73be440 100644 --- a/chenhai-framework/src/main/java/com/chenhai/framework/web/service/SysLoginService.java +++ b/chenhai-framework/src/main/java/com/chenhai/framework/web/service/SysLoginService.java @@ -238,6 +238,7 @@ public class SysLoginService Map result = new HashMap<>(); result.put("token", token); result.put("needBind", false); + result.put("userType", loginUser.getUser().getUserType()); // 返回用户类型 return result; } catch (WechatNeedBindException e) { diff --git a/chenhai-system/src/main/java/com/chenhai/vet/domain/TreatmentPlan.java b/chenhai-system/src/main/java/com/chenhai/vet/domain/TreatmentPlan.java index 6472a6c..227b196 100644 --- a/chenhai-system/src/main/java/com/chenhai/vet/domain/TreatmentPlan.java +++ b/chenhai-system/src/main/java/com/chenhai/vet/domain/TreatmentPlan.java @@ -89,6 +89,14 @@ public class TreatmentPlan extends BaseEntity /** 删除标志(0正常 1已删除) */ private String delFlag; + /** 兽医昵称(新增) */ + @Excel(name = "兽医昵称") + private String vetNickName; + + /** 兽医头像(新增) */ + @Excel(name = "兽医头像") + private String vetAvatar; + public void setId(Long id) { this.id = id; @@ -244,6 +252,23 @@ public class TreatmentPlan extends BaseEntity return delFlag; } + public String getVetNickName() { + return vetNickName; + } + + public void setVetNickName(String vetNickName) { + this.vetNickName = vetNickName; + } + + public String getVetAvatar() { + return vetAvatar; + } + + public void setVetAvatar(String vetAvatar) { + this.vetAvatar = vetAvatar; + } + + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -260,12 +285,14 @@ public class TreatmentPlan extends BaseEntity .append("precautions", getPrecautions()) .append("status", getStatus()) .append("userId", getUserId()) - .append("consultationId", getConsultationId()) + .append("consultationId", getConsultationId()) .append("createTime", getCreateTime()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .append("delFlag", getDelFlag()) - .append("medicineList", getMedicineList()) + .append("medicineList", getMedicineList()) + .append("vetNickName", getVetNickName()) + .append("vetAvatar", getVetAvatar()) .toString(); } } diff --git a/chenhai-system/src/main/java/com/chenhai/vet/domain/VetKnowledge.java b/chenhai-system/src/main/java/com/chenhai/vet/domain/VetKnowledge.java index 7dff647..8b3bba6 100644 --- a/chenhai-system/src/main/java/com/chenhai/vet/domain/VetKnowledge.java +++ b/chenhai-system/src/main/java/com/chenhai/vet/domain/VetKnowledge.java @@ -77,6 +77,18 @@ public class VetKnowledge extends BaseEntity private String expertName; private String expertAvatar; + /** 用户ID(关联sys_user表) */ + @Excel(name = "用户ID") + private Long userId; + + /** 用户昵称(关联sys_user表) */ + @Excel(name = "用户昵称") + private String nickName; + + /** 用户头像(关联sys_user表) */ + @Excel(name = "用户头像") + private String avatar; + public void setId(Long id) { this.id = id; @@ -217,6 +229,30 @@ public class VetKnowledge extends BaseEntity this.searchKey = searchKey; } + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getNickName() { + return nickName; + } + + public void setNickName(String nickName) { + this.nickName = nickName; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -239,6 +275,9 @@ public class VetKnowledge extends BaseEntity .append("coverImage", getCoverImage()) .append("subtitle", getSubtitle()) .append("searchKey", getSearchKey()) + .append("userId", getUserId()) + .append("nickName", getNickName()) + .append("avatar", getAvatar()) .toString(); } } \ No newline at end of file diff --git a/chenhai-system/src/main/java/com/chenhai/vet/service/impl/TreatmentPlanServiceImpl.java b/chenhai-system/src/main/java/com/chenhai/vet/service/impl/TreatmentPlanServiceImpl.java index 46e9c5e..b4ae82b 100644 --- a/chenhai-system/src/main/java/com/chenhai/vet/service/impl/TreatmentPlanServiceImpl.java +++ b/chenhai-system/src/main/java/com/chenhai/vet/service/impl/TreatmentPlanServiceImpl.java @@ -4,10 +4,13 @@ import java.util.List; import java.util.ArrayList; import java.util.stream.Collectors; +import com.chenhai.common.core.domain.entity.SysUser; +import com.chenhai.common.core.domain.model.LoginUser; import com.chenhai.common.exception.ServiceException; import com.chenhai.common.utils.DateUtils; import com.chenhai.common.utils.SecurityUtils; import com.chenhai.common.utils.StringUtils; +import com.chenhai.system.mapper.SysUserMapper; import com.chenhai.vet.domain.TreatmentPlan; import com.chenhai.vet.domain.TreatmentPlanMedicine; import com.chenhai.vet.domain.VetProduct; @@ -42,6 +45,9 @@ public class TreatmentPlanServiceImpl implements ITreatmentPlanService @Autowired private VetQualificationMapper vetQualificationMapper; + @Autowired + private SysUserMapper sysUserMapper; + /** * 查询治疗方案 */ @@ -85,9 +91,22 @@ public class TreatmentPlanServiceImpl implements ITreatmentPlanService @Transactional(rollbackFor = Exception.class) public int insertTreatmentPlan(TreatmentPlan treatmentPlan) { - // 设置当前兽医ID - Long userId = SecurityUtils.getUserId(); + // 获取当前登录用户信息 + LoginUser loginUser = SecurityUtils.getLoginUser(); + Long userId = loginUser.getUserId(); + + // 查询用户详细信息,获取昵称和头像 + SysUser sysUser = sysUserMapper.selectUserById(userId); + + // 设置兽医信息 treatmentPlan.setUserId(userId); + // 设置兽医昵称(优先使用nickName,如果没有则使用userName) + if (sysUser != null) { + treatmentPlan.setVetNickName(StringUtils.isNotEmpty(sysUser.getNickName()) + ? sysUser.getNickName() : sysUser.getUserName()); + treatmentPlan.setVetAvatar(sysUser.getAvatar()); + } + treatmentPlan.setCreateTime(DateUtils.getNowDate()); // 生成方案编号(如果没有提供) diff --git a/chenhai-system/src/main/java/com/chenhai/vet/service/impl/VetKnowledgeServiceImpl.java b/chenhai-system/src/main/java/com/chenhai/vet/service/impl/VetKnowledgeServiceImpl.java index 2877dd0..ff144d4 100644 --- a/chenhai-system/src/main/java/com/chenhai/vet/service/impl/VetKnowledgeServiceImpl.java +++ b/chenhai-system/src/main/java/com/chenhai/vet/service/impl/VetKnowledgeServiceImpl.java @@ -4,8 +4,11 @@ import java.util.ArrayList; import java.util.List; import com.chenhai.common.core.domain.AjaxResult; +import com.chenhai.common.core.domain.entity.SysUser; +import com.chenhai.common.core.domain.model.LoginUser; import com.chenhai.common.utils.DateUtils; import com.chenhai.common.utils.SecurityUtils; +import com.chenhai.system.service.ISysUserService; import com.chenhai.vet.domain.VetExperts; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -26,6 +29,9 @@ public class VetKnowledgeServiceImpl implements IVetKnowledgeService @Autowired private VetKnowledgeMapper vetKnowledgeMapper; + @Autowired + private ISysUserService userService; + /** * 查询兽医文章 */ @@ -55,8 +61,79 @@ public class VetKnowledgeServiceImpl implements IVetKnowledgeService vetKnowledge.setArticleStatus("0"); // 草稿 } if (vetKnowledge.getAuditStatus() == null) { - vetKnowledge.setAuditStatus("1"); // 待审核 + vetKnowledge.setAuditStatus("0"); // 待审核 } + + try { + // 1. 获取当前登录用户ID + Long currentUserId = SecurityUtils.getUserId(); + System.out.println("当前登录用户ID: " + currentUserId); + + if (currentUserId != null) { + // 2. 设置用户ID + vetKnowledge.setUserId(currentUserId); + + // 3. 获取当前登录用户的详细信息 + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null && loginUser.getUser() != null) { + SysUser currentUser = loginUser.getUser(); + + // 4. 设置用户昵称(优先使用昵称,如果没有则使用用户名) + String nickName = currentUser.getNickName(); + if (nickName != null && !nickName.isEmpty()) { + vetKnowledge.setNickName(nickName); + } else { + vetKnowledge.setNickName(currentUser.getUserName()); + } + + // 5. 设置用户头像 + String avatar = currentUser.getAvatar(); + if (avatar != null && !avatar.isEmpty()) { + vetKnowledge.setAvatar(avatar); + } + + System.out.println("设置用户信息成功 - userId: " + currentUserId + + ", nickName: " + vetKnowledge.getNickName() + + ", avatar: " + vetKnowledge.getAvatar()); + } else { + // 如果无法从LoginUser获取,尝试从数据库查询 + SysUser user = userService.selectUserById(currentUserId); + if (user != null) { + vetKnowledge.setNickName(user.getNickName() != null ? user.getNickName() : user.getUserName()); + vetKnowledge.setAvatar(user.getAvatar()); + System.out.println("从数据库获取用户信息成功 - nickName: " + vetKnowledge.getNickName()); + } + } + + // 6. 根据用户ID查询专家信息(保持原有逻辑) + VetExperts expert = vetKnowledgeMapper.selectExpertByUserId(currentUserId); + + if (expert != null) { + System.out.println("找到专家信息 - expertId: " + expert.getExpertId()); + vetKnowledge.setExpertId(expert.getExpertId()); + + if (expert.getRealName() != null && !expert.getRealName().isEmpty()) { + vetKnowledge.setExpertName(expert.getRealName()); + } + + if (expert.getAvatar() != null && !expert.getAvatar().isEmpty()) { + vetKnowledge.setExpertAvatar(expert.getAvatar()); + } + + System.out.println("设置专家信息成功 - expertId: " + vetKnowledge.getExpertId() + + ", expertName: " + vetKnowledge.getExpertName() + + ", expertAvatar: " + vetKnowledge.getExpertAvatar()); + } else { + System.out.println("未找到专家信息,用户ID: " + currentUserId + " 不是专家"); + } + } else { + System.out.println("用户未登录"); + } + } catch (Exception e) { + System.out.println("获取用户/专家信息异常: " + e.getMessage()); + e.printStackTrace(); + } + return vetKnowledgeMapper.insertVetKnowledge(vetKnowledge); } diff --git a/chenhai-system/src/main/java/com/chenhai/vet/service/impl/VetTrainingVideoServiceImpl.java b/chenhai-system/src/main/java/com/chenhai/vet/service/impl/VetTrainingVideoServiceImpl.java index fc92457..5ac1183 100644 --- a/chenhai-system/src/main/java/com/chenhai/vet/service/impl/VetTrainingVideoServiceImpl.java +++ b/chenhai-system/src/main/java/com/chenhai/vet/service/impl/VetTrainingVideoServiceImpl.java @@ -72,7 +72,7 @@ public class VetTrainingVideoServiceImpl implements IVetTrainingVideoService vetTrainingVideo.setUserId(userId); // 确保设置用户ID vetTrainingVideo.setStatus("0"); // 草稿(原私有) - vetTrainingVideo.setAuditStatus("0"); // 待审核 + vetTrainingVideo.setAuditStatus("1"); // 待审核 vetTrainingVideo.setDelFlag("0"); // 正常 vetTrainingVideo.setCreateTime(DateUtils.getNowDate()); @@ -461,37 +461,68 @@ public class VetTrainingVideoServiceImpl implements IVetTrainingVideoService @Override public boolean publishVideo(Long videoId, Long userId) { try { + VetTrainingVideo video = vetTrainingVideoMapper.selectVetTrainingVideoById(videoId); if (video == null) { + logger.warn("发布失败:视频不存在,ID: {}", videoId); return false; } - // 验证权限:只能操作自己的视频 - if (!userId.equals(video.getUserId())) { + // 检查是否是管理员 + boolean isAdmin = checkUserIsAdmin(userId); + boolean isOwner = userId.equals(video.getUserId()); + + if (!isAdmin && !isOwner) { + logger.warn("发布失败:用户 {} 无权限操作视频 {}", userId, videoId); return false; } - // 状态验证:只有审核通过(2)且为草稿状态(0)的视频才能发布 - if (!"2".equals(video.getAuditStatus())) { + // 步骤4: 检查审核状态 + String auditStatus = video.getAuditStatus(); + + if (!"2".equals(auditStatus)) { + logger.warn("发布失败:视频 {} 未通过审核,当前审核状态: '{}', 需要状态: '2'", + videoId, auditStatus); return false; } - if (!"0".equals(video.getStatus())) { + + // 步骤5: 检查上架状态 + String currentStatus = video.getStatus(); + + if (!"0".equals(currentStatus)) { + logger.warn("发布失败:视频 {} 当前状态不能发布,当前状态: '{}', 需要状态: '0'", + videoId, currentStatus); return false; } - // 更新为已发布状态 + // 步骤6: 更新状态 video.setStatus("1"); // 已发布 video.setPublishTime(DateUtils.getNowDate()); video.setUpdateTime(DateUtils.getNowDate()); - return vetTrainingVideoMapper.updateVetTrainingVideo(video) > 0; + int result = vetTrainingVideoMapper.updateVetTrainingVideo(video); + + return result > 0; } catch (Exception e) { logger.error("发布视频失败,视频ID: {}", videoId, e); return false; } } + /** + * 检查用户是否是管理员 + */ + private boolean checkUserIsAdmin(Long userId) { + try { + // 使用 RuoYi 的 SecurityUtils 检查 + return SecurityUtils.isAdmin(userId); + } catch (Exception e) { + logger.error("检查管理员权限失败", e); + return false; + } + } + @Override public boolean offlineVideo(Long videoId, Long userId) { try { @@ -501,10 +532,10 @@ public class VetTrainingVideoServiceImpl implements IVetTrainingVideoService return false; } - // 验证权限:只能操作自己的视频 - if (!userId.equals(video.getUserId())) { - return false; - } +// // 验证权限:只能操作自己的视频 +// if (!userId.equals(video.getUserId())) { +// return false; +// } // 状态验证:只有已发布状态(1)的视频才能下架 if (!"1".equals(video.getStatus())) { @@ -585,16 +616,6 @@ public class VetTrainingVideoServiceImpl implements IVetTrainingVideoService } } - /** - * 检查用户是否是管理员 - */ - private boolean checkUserIsAdmin(Long userId) { - // 这里需要根据你的权限系统来实现 - // 例如:查询用户角色 - // 暂时返回false,你需要根据实际情况实现 - return false; - } - @Override public boolean resubmitForAudit(Long videoId, Long userId) { // 重新提交审核和提交审核逻辑相同 diff --git a/chenhai-system/src/main/resources/mapper/vet/TreatmentPlanMapper.xml b/chenhai-system/src/main/resources/mapper/vet/TreatmentPlanMapper.xml index c01b8d6..0641506 100644 --- a/chenhai-system/src/main/resources/mapper/vet/TreatmentPlanMapper.xml +++ b/chenhai-system/src/main/resources/mapper/vet/TreatmentPlanMapper.xml @@ -24,6 +24,8 @@ + + @@ -35,7 +37,8 @@ select id, plan_no, title, farmer_id, farmer_name, farmer_phone, animal_type, symptoms, diagnosis, treatment_method, treatment_desc, precautions, - status, user_id, consultation_id, create_time, update_time, remark, del_flag + status, user_id, vet_nick_name, vet_avatar, consultation_id, + create_time, update_time, remark, del_flag from treatment_plan @@ -97,6 +100,8 @@ update_time, remark, del_flag, + vet_nick_name, + vet_avatar, #{planNo}, @@ -117,6 +122,8 @@ #{updateTime}, #{remark}, #{delFlag}, + #{vetNickName}, + #{vetAvatar}, @@ -139,6 +146,8 @@ consultation_id = #{consultationId}, update_time = #{updateTime}, remark = #{remark}, + vet_nick_name = #{vetNickName}, + vet_avatar = #{vetAvatar}, where id = #{id} diff --git a/chenhai-system/src/main/resources/mapper/vet/VetKnowledgeMapper.xml b/chenhai-system/src/main/resources/mapper/vet/VetKnowledgeMapper.xml index 0d5971e..4f59b95 100644 --- a/chenhai-system/src/main/resources/mapper/vet/VetKnowledgeMapper.xml +++ b/chenhai-system/src/main/resources/mapper/vet/VetKnowledgeMapper.xml @@ -25,6 +25,10 @@ + + + + - + select vk.id, @@ -57,7 +61,10 @@ vk.cover_image, vk.subtitle, vk.expert_id, - ve.real_name as expert_name, + vk.user_id, + vk.nick_name, + vk.avatar, + ve.real_name as expert_name, ve.avatar as expert_avatar from vet_knowledge vk left join vet_experts ve on vk.expert_id = ve.expert_id @@ -84,6 +91,9 @@ or ve.real_name like concat('%', #{searchKey}, '%') ) + + and user_id = #{userId} + and nick_name like concat('%', #{nickName}, '%') @@ -112,6 +122,10 @@ expert_id, cover_image, subtitle, + + user_id, + nick_name, + avatar, #{title}, @@ -131,6 +145,10 @@ #{expertId}, #{coverImage}, #{subtitle}, + + #{userId}, + #{nickName}, + #{avatar}, @@ -154,6 +172,10 @@ expert_id = #{expertId}, cover_image = #{coverImage}, subtitle = #{subtitle}, + + user_id = #{userId}, + nick_name = #{nickName}, + avatar = #{avatar}, where id = #{id} diff --git a/chenhai-ui/src/api/login.js b/chenhai-ui/src/api/login.js index ae20a41..af66098 100644 --- a/chenhai-ui/src/api/login.js +++ b/chenhai-ui/src/api/login.js @@ -25,6 +25,7 @@ export function login(phone, password) { const data = { phone, password, + clientType: 'wechat_vet' // code, // uuid } diff --git a/chenhai-ui/src/views/muhu/consultation/index.vue b/chenhai-ui/src/views/muhu/consultation/index.vue index 13d995b..ceba752 100644 --- a/chenhai-ui/src/views/muhu/consultation/index.vue +++ b/chenhai-ui/src/views/muhu/consultation/index.vue @@ -142,7 +142,33 @@ - + + + +
+ 新增回复 +
+ + +
+ + 牲畜信息
-
种类: {{ currentRow.animalType || '未填写' }} @@ -244,20 +269,6 @@
- - - - - - + + + +
+ 新增方案 +
+ + +
+ + 牲畜信息
-
种类: {{ currentRow.animalType || '未填写' }} @@ -466,20 +502,6 @@ 取 消
- - - - -
@@ -513,18 +535,18 @@ export default { total: 0, // 问诊单表格数据 consultationList: [], - // 当前问诊ID(用于回复) + // 当前问诊ID currentConsultationId: null, // 当前选中的行数据 currentRow: null, - // 是否显示回复弹窗 - replyFormOpen: false, - // 是否显示回复表单 + // 回复列表弹窗 replyOpen: false, - // 方案制定弹窗 - planFormOpen: false, - // 方案制定表单 + // 回复表单弹窗 + replyFormOpen: false, + // 方案列表弹窗 planOpen: false, + // 方案表单弹窗 + planFormOpen: false, // 弹出层标题 title: "", // 是否显示弹出层 @@ -668,16 +690,26 @@ export default { this.multiple = !selection.length }, - /** 回复按钮操作 */ + // ==================== 回复相关方法 ==================== + /** 回复按钮操作 - 直接打开回复列表 */ handleReply(row) { this.currentRow = row this.currentConsultationId = row.formId - this.replyFormOpen = true - this.replyForm = { - consultationId: row.formId, - content: null, - images: null - } + this.replyOpen = true // 直接打开回复列表 + }, + + // 显示新增回复表单 + showAddReplyForm() { + this.replyOpen = false // 先关闭列表弹窗 + this.$nextTick(() => { + // 初始化回复表单数据 + this.replyForm = { + consultationId: this.currentConsultationId, + content: null, + images: null + } + this.replyFormOpen = true // 打开回复表单 + }) }, // 回复表单提交方法 @@ -687,7 +719,13 @@ export default { addComments(this.replyForm).then(response => { this.$modal.msgSuccess("回复成功") this.replyFormOpen = false - this.replyOpen = true + this.replyOpen = true // 重新打开回复列表 + // 刷新回复列表 + this.$nextTick(() => { + if (this.$refs.commentsList) { + this.$refs.commentsList.getList() + } + }) }).catch(() => { this.$modal.msgError("回复失败") }) @@ -698,33 +736,43 @@ export default { // 回复表单取消方法 cancelReply() { this.replyFormOpen = false + this.replyOpen = true // 返回列表 this.replyForm = { consultationId: null, content: null, images: null } - this.currentRow = null this.resetForm("replyForm") }, - // 方案制定按钮操作 + // ==================== 方案相关方法 ==================== + // 方案制定按钮操作 - 直接打开方案列表 planFormulation(row) { - this.currentRow = row this.currentConsultationId = row.formId - this.planFormOpen = true - this.planForm = { - consultationId: row.formId, - planNo: '', - title: '', - farmerName: row.farmerName || '', - animalType: row.animalType || '', - symptoms: row.description || '', - diagnosis: '', - treatmentMethod: '', - treatmentDesc: '', - precautions: '', - userId: '', - } + this.currentRow = row + this.planOpen = true // 直接打开方案列表 + }, + + // 显示新增方案表单 + showAddPlanForm() { + this.planOpen = false // 先关闭列表弹窗 + this.$nextTick(() => { + // 初始化方案表单数据 + this.planForm = { + consultationId: this.currentConsultationId, + planNo: '', + title: '', + farmerName: this.currentRow?.farmerName || '', + animalType: this.currentRow?.animalType || '', + symptoms: this.currentRow?.description || '', + diagnosis: '', + treatmentMethod: '', + treatmentDesc: '', + precautions: '', + userId: '', + } + this.planFormOpen = true // 打开方案制定表单 + }) }, // 方案制定表单提交 @@ -734,7 +782,13 @@ export default { addPlan(this.planForm).then(response => { this.$modal.msgSuccess("方案提交成功") this.planFormOpen = false - this.planOpen = true + this.planOpen = true // 重新打开方案列表 + // 刷新方案列表 + this.$nextTick(() => { + if (this.$refs.planList) { + this.$refs.planList.getList() + } + }) }).catch(() => { this.$modal.msgError("方案提交失败") }) @@ -745,6 +799,7 @@ export default { // 方案表单取消方法 cancelPlan() { this.planFormOpen = false + this.planOpen = true // 返回列表 this.planForm = { consultationId: null, planNo: null, @@ -758,7 +813,6 @@ export default { precautions: null, userId: null, } - this.currentRow = null this.resetForm("planForm") }, @@ -841,6 +895,7 @@ export default { } + @@ -345,7 +362,7 @@ export default { transition: all 0.3s ease; } -.alter-btn:hover{ +.alter-btn:hover { background-color: rgb(230, 255, 238); transform: translateY(-1px); } @@ -434,4 +451,3 @@ export default { border-radius: 0 0 12px 12px; } - diff --git a/chenhai-ui/src/views/vet/knowledge/index.vue b/chenhai-ui/src/views/vet/knowledge/index.vue index bf754a9..663007f 100644 --- a/chenhai-ui/src/views/vet/knowledge/index.vue +++ b/chenhai-ui/src/views/vet/knowledge/index.vue @@ -140,12 +140,18 @@ - + + + + + + + + + + @@ -161,7 +167,7 @@ - + @@ -314,21 +320,21 @@ - - - - + + + + + + + + + + + + + + +
提示:选择为您推荐药品的专家
@@ -355,15 +361,15 @@ />
- - - + + + + + + + + + diff --git a/chenhai-ui/src/views/vet/plan/index.vue b/chenhai-ui/src/views/vet/plan/index.vue index c330a87..fe0112b 100644 --- a/chenhai-ui/src/views/vet/plan/index.vue +++ b/chenhai-ui/src/views/vet/plan/index.vue @@ -75,10 +75,7 @@ - - -