Explorar o código

医健宝代码提交优化

yjwang hai 1 mes
pai
achega
c7d400d0ef
Modificáronse 25 ficheiros con 1016 adicións e 17 borrados
  1. 118 0
      fs-admin/src/main/java/com/fs/course/controller/FsCourseComplaintChannelController.java
  2. 82 0
      fs-admin/src/main/java/com/fs/course/controller/FsCourseComplaintMsgController.java
  3. 10 0
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreScrmController.java
  4. 85 0
      fs-service/src/main/java/com/fs/course/domain/FsCourseComplaintChannel.java
  5. 49 0
      fs-service/src/main/java/com/fs/course/domain/FsCourseComplaintMsg.java
  6. 44 0
      fs-service/src/main/java/com/fs/course/mapper/FsCourseComplaintChannelMapper.java
  7. 39 0
      fs-service/src/main/java/com/fs/course/mapper/FsCourseComplaintMsgMapper.java
  8. 24 0
      fs-service/src/main/java/com/fs/course/param/FsCourseComplaintChannelParam.java
  9. 18 0
      fs-service/src/main/java/com/fs/course/param/FsCourseComplaintMsgParam.java
  10. 28 0
      fs-service/src/main/java/com/fs/course/service/IFsCourseComplaintChannelService.java
  11. 24 0
      fs-service/src/main/java/com/fs/course/service/IFsCourseComplaintMsgService.java
  12. 61 0
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseComplaintChannelServiceImpl.java
  13. 66 0
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseComplaintMsgServiceImpl.java
  14. 2 0
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreScrmMapper.java
  15. 3 3
      fs-service/src/main/java/com/fs/hisStore/param/FsStoreScrmInfoParam.java
  16. 3 0
      fs-service/src/main/java/com/fs/hisStore/service/IFsStoreScrmService.java
  17. 20 0
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java
  18. 42 6
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreScrmServiceImpl.java
  19. 133 0
      fs-service/src/main/resources/mapper/course/FsCourseComplaintChannelMapper.xml
  20. 73 0
      fs-service/src/main/resources/mapper/course/FsCourseComplaintMsgMapper.xml
  21. 1 1
      fs-service/src/main/resources/mapper/course/FsUserCourseVideoMapper.xml
  22. 5 1
      fs-service/src/main/resources/mapper/hisStore/FsStoreScrmMapper.xml
  23. 2 5
      fs-store/src/main/java/com/fs/hisStore/controller/store/FsStoreInfoScrmController.java
  24. 83 0
      fs-user-app/src/main/java/com/fs/app/controller/CourseComplaintChannelController.java
  25. 1 1
      fs-user-app/src/main/java/com/fs/app/facade/impl/Hospital580FacadeServiceImpl.java

+ 118 - 0
fs-admin/src/main/java/com/fs/course/controller/FsCourseComplaintChannelController.java

@@ -0,0 +1,118 @@
+package com.fs.course.controller;
+
+import java.util.List;
+
+import com.fs.common.core.domain.R;
+import com.fs.common.core.page.TableDataInfo;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.enums.BusinessType;
+import com.fs.course.domain.FsCourseComplaintChannel;
+import com.fs.course.service.IFsCourseComplaintChannelService;
+import com.fs.common.utils.poi.ExcelUtil;
+
+/**
+ * 看课投诉通道Controller
+ *
+ * @author fs
+ * @date 2026-05-25
+ */
+@RestController
+@RequestMapping("/course/complaintChannel")
+public class FsCourseComplaintChannelController extends BaseController
+{
+    @Autowired
+    private IFsCourseComplaintChannelService channelService;
+
+    /**
+     * 查询看课投诉通道列表
+     */
+    @PreAuthorize("@ss.hasPermi('course:complaintChannel:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(FsCourseComplaintChannel channel)
+    {
+        PageHelper.startPage(channel.getPageNum(), channel.getPageSize());
+        List<FsCourseComplaintChannel> list = channelService.selectFsCourseComplaintChannelList(channel);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出看课投诉通道列表
+     */
+    @PreAuthorize("@ss.hasPermi('course:complaintChannel:export')")
+    @Log(title = "看课投诉通道", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(FsCourseComplaintChannel channel)
+    {
+        List<FsCourseComplaintChannel> list = channelService.selectFsCourseComplaintChannelList(channel);
+        ExcelUtil<FsCourseComplaintChannel> util = new ExcelUtil<>(FsCourseComplaintChannel.class);
+        return util.exportExcel(list, "看课投诉通道");
+    }
+
+    /**
+     * 获取看课投诉通道详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('course:complaintChannel:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(channelService.selectFsCourseComplaintChannelById(id));
+    }
+
+    /**
+     * 新增看课投诉通道
+     */
+    @PreAuthorize("@ss.hasPermi('course:complaintChannel:add')")
+    @Log(title = "看课投诉通道", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody FsCourseComplaintChannel channel)
+    {
+        return toAjax(channelService.insertFsCourseComplaintChannel(channel));
+    }
+
+    /**
+     * 修改看课投诉通道
+     */
+    @PreAuthorize("@ss.hasPermi('course:complaintChannel:edit')")
+    @Log(title = "看课投诉通道", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody FsCourseComplaintChannel channel)
+    {
+        return toAjax(channelService.updateFsCourseComplaintChannel(channel));
+    }
+
+    /**
+     * 删除看课投诉通道
+     */
+    @PreAuthorize("@ss.hasPermi('course:complaintChannel:remove')")
+    @Log(title = "看课投诉通道", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(channelService.deleteFsCourseComplaintChannelByIds(ids));
+    }
+
+    /**
+     * 完成投诉
+     */
+    @PreAuthorize("@ss.hasPermi('course:complaintChannel:edit')")
+    @Log(title = "完成投诉", businessType = BusinessType.UPDATE)
+    @PostMapping("/complete")
+    public AjaxResult complete(@RequestBody FsCourseComplaintChannel channel)
+    {
+        return toAjax(channelService.completeChannel(channel));
+    }
+}

+ 82 - 0
fs-admin/src/main/java/com/fs/course/controller/FsCourseComplaintMsgController.java

@@ -0,0 +1,82 @@
+package com.fs.course.controller;
+
+import java.util.List;
+
+import com.fs.common.core.domain.R;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.course.domain.FsCourseComplaintMsg;
+import com.fs.course.service.IFsCourseComplaintMsgService;
+
+/**
+ * 看课投诉消息记录Controller
+ *
+ * @author fs
+ * @date 2026-05-25
+ */
+@RestController
+@RequestMapping("/course/complaintMsg")
+public class FsCourseComplaintMsgController extends BaseController
+{
+    @Autowired
+    private IFsCourseComplaintMsgService msgService;
+
+    /**
+     * 查询消息记录列表
+     */
+    @GetMapping("/list")
+    public R list(FsCourseComplaintMsg msg)
+    {
+        PageHelper.startPage(msg.getPageNum(), msg.getPageSize());
+        List<FsCourseComplaintMsg> list = msgService.selectFsCourseComplaintMsgList(msg);
+        PageInfo<FsCourseComplaintMsg> pageInfo = new PageInfo<>(list);
+        return R.ok().put("rows", pageInfo);
+    }
+
+    /**
+     * 获取消息记录详情
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(msgService.selectFsCourseComplaintMsgById(id));
+    }
+
+    /**
+     * 新增消息记录
+     */
+    @PostMapping
+    public AjaxResult add(@RequestBody FsCourseComplaintMsg msg)
+    {
+        return toAjax(msgService.insertFsCourseComplaintMsg(msg));
+    }
+
+    /**
+     * 修改消息记录
+     */
+    @PutMapping
+    public AjaxResult edit(@RequestBody FsCourseComplaintMsg msg)
+    {
+        return toAjax(msgService.updateFsCourseComplaintMsg(msg));
+    }
+
+    /**
+     * 删除消息记录
+     */
+    @DeleteMapping("/{id}")
+    public AjaxResult remove(@PathVariable Long id)
+    {
+        return toAjax(msgService.deleteFsCourseComplaintMsgById(id));
+    }
+}

+ 10 - 0
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreScrmController.java

@@ -178,6 +178,16 @@ public class FsStoreScrmController extends BaseController {
     }
 
 
+    /**
+     * 一键启用店铺(含资质证书有效期验证)
+     */
+    @PreAuthorize("@ss.hasPermi('his:store:edit')")
+    @Log(title = "店铺管理", businessType = BusinessType.UPDATE, logParam = {"店铺","一键启用店铺"}, isStoreLog = true)
+    @PutMapping("/enable/{storeId}")
+    public R enable(@PathVariable Long storeId) {
+        return fsStoreService.enableStore(storeId);
+    }
+
     /**
      * 店铺审核日志
      * */

+ 85 - 0
fs-service/src/main/java/com/fs/course/domain/FsCourseComplaintChannel.java

@@ -0,0 +1,85 @@
+package com.fs.course.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 看课投诉通道对象 course_complaint_channel
+ *
+ * @author fs
+ * @date 2026-05-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsCourseComplaintChannel extends BaseEntity{
+
+    @ApiModelProperty(value = "页码,默认为1", required = true)
+    @TableField(exist = false)
+    private Integer pageNum = 1;
+
+    @ApiModelProperty(value = "页大小,默认为10", required = true)
+    @TableField(exist = false)
+    private Integer pageSize = 10;
+
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startCreateTime;
+
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endCreateTime;
+
+    /** 主键id */
+    private Long id;
+
+    /** 联系方式 */
+    @Excel(name = "联系方式")
+    private String contact;
+
+    /** 联系方式类型: wechat-微信, email-邮箱, phone-电话, other-其他 */
+    @Excel(name = "联系方式类型", readConverterExp = "wechat=微信,email=邮箱,phone=电话,other=其他")
+    private String contactType;
+
+    /** 投诉标题 */
+    @Excel(name = "投诉标题")
+    private String title;
+
+    /** 投诉内容 */
+    @Excel(name = "投诉内容")
+    private String content;
+
+    /** 用户关联id */
+    @Excel(name = "用户ID")
+    private String fsUserId;
+
+    /** 凭证图片URL, 逗号分隔 */
+    @Excel(name = "凭证图片")
+    private String proofImages;
+
+    /** 平台回复状态: 0-未回复, 1-已回复 */
+    @Excel(name = "平台回复状态", readConverterExp = "0=未回复,1=已回复")
+    private Integer platformReplyStatus;
+
+    /** 用户回复状态: 0-未回复, 1-已回复 */
+    @Excel(name = "用户回复状态", readConverterExp = "0=未回复,1=已回复")
+    private Integer userReplyStatus;
+
+    /** 是否已完成: 0-未完成, 1-已完成 */
+    @Excel(name = "是否已完成", readConverterExp = "0=未完成,1=已完成")
+    private Integer isCompleted;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标志: 0-存在, 2-删除 */
+    private Integer delFlag;
+
+}

+ 49 - 0
fs-service/src/main/java/com/fs/course/domain/FsCourseComplaintMsg.java

@@ -0,0 +1,49 @@
+package com.fs.course.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 看课投诉消息记录对象 course_complaint_msg
+ *
+ * @author fs
+ * @date 2026-05-25
+ */
+@Data
+public class FsCourseComplaintMsg {
+
+    @ApiModelProperty(value = "页码,默认为1", required = true)
+    @TableField(exist = false)
+    private Integer pageNum = 1;
+
+    @ApiModelProperty(value = "页大小,默认为10", required = true)
+    @TableField(exist = false)
+    private Integer pageSize = 10;
+
+    /** 主键id */
+    private Long id;
+
+    /** 关联投诉id */
+    private Long complaintId;
+
+    /** 发送类型: 1-用户, 2-平台/商家 */
+    private Integer sendType;
+
+    /** 消息内容 */
+    private String content;
+
+    /** 图片URL, 逗号分隔 */
+    private String images;
+
+    /** 发送人 */
+    private String createBy;
+
+    /** 发送时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+}

+ 44 - 0
fs-service/src/main/java/com/fs/course/mapper/FsCourseComplaintChannelMapper.java

@@ -0,0 +1,44 @@
+package com.fs.course.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.course.domain.FsCourseComplaintChannel;
+
+/**
+ * 看课投诉通道Mapper接口
+ *
+ * @author fs
+ * @date 2026-05-25
+ */
+public interface FsCourseComplaintChannelMapper extends BaseMapper<FsCourseComplaintChannel>{
+
+    /**
+     * 查询看课投诉通道
+     */
+    FsCourseComplaintChannel selectFsCourseComplaintChannelById(Long id);
+
+    /**
+     * 查询看课投诉通道列表
+     */
+    List<FsCourseComplaintChannel> selectFsCourseComplaintChannelList(FsCourseComplaintChannel channel);
+
+    /**
+     * 新增看课投诉通道
+     */
+    int insertFsCourseComplaintChannel(FsCourseComplaintChannel channel);
+
+    /**
+     * 修改看课投诉通道
+     */
+    int updateFsCourseComplaintChannel(FsCourseComplaintChannel channel);
+
+    /**
+     * 删除看课投诉通道(逻辑删除)
+     */
+    int deleteFsCourseComplaintChannelById(Long id);
+
+    /**
+     * 批量删除看课投诉通道(逻辑删除)
+     */
+    int deleteFsCourseComplaintChannelByIds(Long[] ids);
+}

+ 39 - 0
fs-service/src/main/java/com/fs/course/mapper/FsCourseComplaintMsgMapper.java

@@ -0,0 +1,39 @@
+package com.fs.course.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.course.domain.FsCourseComplaintMsg;
+
+/**
+ * 看课投诉消息记录Mapper接口
+ *
+ * @author fs
+ * @date 2026-05-25
+ */
+public interface FsCourseComplaintMsgMapper extends BaseMapper<FsCourseComplaintMsg>{
+
+    /**
+     * 查询消息记录
+     */
+    FsCourseComplaintMsg selectFsCourseComplaintMsgById(Long id);
+
+    /**
+     * 查询消息记录列表
+     */
+    List<FsCourseComplaintMsg> selectFsCourseComplaintMsgList(FsCourseComplaintMsg msg);
+
+    /**
+     * 新增消息记录
+     */
+    int insertFsCourseComplaintMsg(FsCourseComplaintMsg msg);
+
+    /**
+     * 修改消息记录
+     */
+    int updateFsCourseComplaintMsg(FsCourseComplaintMsg msg);
+
+    /**
+     * 删除消息记录
+     */
+    int deleteFsCourseComplaintMsgById(Long id);
+}

+ 24 - 0
fs-service/src/main/java/com/fs/course/param/FsCourseComplaintChannelParam.java

@@ -0,0 +1,24 @@
+package com.fs.course.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class FsCourseComplaintChannelParam {
+
+    @ApiModelProperty(value = "联系方式", required = true)
+    private String contact;
+
+    @ApiModelProperty(value = "联系方式类型: wechat-微信, email-邮箱, phone-电话, other-其他", required = true)
+    private String contactType;
+
+    @ApiModelProperty(value = "投诉标题", required = true)
+    private String title;
+
+    @ApiModelProperty(value = "投诉内容", required = true)
+    private String content;
+
+    @ApiModelProperty(value = "凭证图片URL, 逗号分隔")
+    private String proofImages;
+
+}

+ 18 - 0
fs-service/src/main/java/com/fs/course/param/FsCourseComplaintMsgParam.java

@@ -0,0 +1,18 @@
+package com.fs.course.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class FsCourseComplaintMsgParam {
+
+    @ApiModelProperty(value = "关联投诉id", required = true)
+    private Long complaintId;
+
+    @ApiModelProperty(value = "消息内容", required = true)
+    private String content;
+
+    @ApiModelProperty(value = "图片URL, 逗号分隔")
+    private String images;
+
+}

+ 28 - 0
fs-service/src/main/java/com/fs/course/service/IFsCourseComplaintChannelService.java

@@ -0,0 +1,28 @@
+package com.fs.course.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.course.domain.FsCourseComplaintChannel;
+
+/**
+ * 看课投诉通道Service接口
+ *
+ * @author fs
+ * @date 2026-05-25
+ */
+public interface IFsCourseComplaintChannelService extends IService<FsCourseComplaintChannel>{
+
+    FsCourseComplaintChannel selectFsCourseComplaintChannelById(Long id);
+
+    List<FsCourseComplaintChannel> selectFsCourseComplaintChannelList(FsCourseComplaintChannel channel);
+
+    int insertFsCourseComplaintChannel(FsCourseComplaintChannel channel);
+
+    int updateFsCourseComplaintChannel(FsCourseComplaintChannel channel);
+
+    int deleteFsCourseComplaintChannelById(Long id);
+
+    int deleteFsCourseComplaintChannelByIds(Long[] ids);
+
+    int completeChannel(FsCourseComplaintChannel channel);
+}

+ 24 - 0
fs-service/src/main/java/com/fs/course/service/IFsCourseComplaintMsgService.java

@@ -0,0 +1,24 @@
+package com.fs.course.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.course.domain.FsCourseComplaintMsg;
+
+/**
+ * 看课投诉消息记录Service接口
+ *
+ * @author fs
+ * @date 2026-05-25
+ */
+public interface IFsCourseComplaintMsgService extends IService<FsCourseComplaintMsg>{
+
+    FsCourseComplaintMsg selectFsCourseComplaintMsgById(Long id);
+
+    List<FsCourseComplaintMsg> selectFsCourseComplaintMsgList(FsCourseComplaintMsg msg);
+
+    int insertFsCourseComplaintMsg(FsCourseComplaintMsg msg);
+
+    int updateFsCourseComplaintMsg(FsCourseComplaintMsg msg);
+
+    int deleteFsCourseComplaintMsgById(Long id);
+}

+ 61 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsCourseComplaintChannelServiceImpl.java

@@ -0,0 +1,61 @@
+package com.fs.course.service.impl;
+
+import com.fs.common.utils.DateUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.fs.course.mapper.FsCourseComplaintChannelMapper;
+import com.fs.course.domain.FsCourseComplaintChannel;
+import com.fs.course.service.IFsCourseComplaintChannelService;
+
+import java.util.List;
+
+/**
+ * 看课投诉通道Service业务层处理
+ *
+ * @author fs
+ * @date 2026-05-25
+ */
+@Service
+public class FsCourseComplaintChannelServiceImpl extends ServiceImpl<FsCourseComplaintChannelMapper, FsCourseComplaintChannel> implements IFsCourseComplaintChannelService {
+
+    @Override
+    public FsCourseComplaintChannel selectFsCourseComplaintChannelById(Long id) {
+        return baseMapper.selectFsCourseComplaintChannelById(id);
+    }
+
+    @Override
+    public List<FsCourseComplaintChannel> selectFsCourseComplaintChannelList(FsCourseComplaintChannel channel) {
+        return baseMapper.selectFsCourseComplaintChannelList(channel);
+    }
+
+    @Override
+    public int insertFsCourseComplaintChannel(FsCourseComplaintChannel channel) {
+        channel.setCreateTime(DateUtils.getNowDate());
+        return baseMapper.insertFsCourseComplaintChannel(channel);
+    }
+
+    @Override
+    public int updateFsCourseComplaintChannel(FsCourseComplaintChannel channel) {
+        channel.setUpdateTime(DateUtils.getNowDate());
+        return baseMapper.updateFsCourseComplaintChannel(channel);
+    }
+
+    @Override
+    public int deleteFsCourseComplaintChannelById(Long id) {
+        return baseMapper.deleteFsCourseComplaintChannelById(id);
+    }
+
+    @Override
+    public int deleteFsCourseComplaintChannelByIds(Long[] ids) {
+        return baseMapper.deleteFsCourseComplaintChannelByIds(ids);
+    }
+
+    @Override
+    public int completeChannel(FsCourseComplaintChannel channel) {
+        FsCourseComplaintChannel update = new FsCourseComplaintChannel();
+        update.setId(channel.getId());
+        update.setIsCompleted(1);
+        update.setUpdateTime(DateUtils.getNowDate());
+        return baseMapper.updateFsCourseComplaintChannel(update);
+    }
+}

+ 66 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsCourseComplaintMsgServiceImpl.java

@@ -0,0 +1,66 @@
+package com.fs.course.service.impl;
+
+import com.fs.common.utils.DateUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.course.domain.FsCourseComplaintChannel;
+import com.fs.course.domain.FsCourseComplaintMsg;
+import com.fs.course.mapper.FsCourseComplaintChannelMapper;
+import com.fs.course.mapper.FsCourseComplaintMsgMapper;
+import com.fs.course.service.IFsCourseComplaintMsgService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 看课投诉消息记录Service业务层处理
+ *
+ * @author fs
+ * @date 2026-05-25
+ */
+@Service
+public class FsCourseComplaintMsgServiceImpl extends ServiceImpl<FsCourseComplaintMsgMapper, FsCourseComplaintMsg> implements IFsCourseComplaintMsgService {
+
+    @Autowired
+    private FsCourseComplaintChannelMapper channelMapper;
+
+    @Override
+    public FsCourseComplaintMsg selectFsCourseComplaintMsgById(Long id) {
+        return baseMapper.selectFsCourseComplaintMsgById(id);
+    }
+
+    @Override
+    public List<FsCourseComplaintMsg> selectFsCourseComplaintMsgList(FsCourseComplaintMsg msg) {
+        return baseMapper.selectFsCourseComplaintMsgList(msg);
+    }
+
+    @Override
+    @Transactional
+    public int insertFsCourseComplaintMsg(FsCourseComplaintMsg msg) {
+        msg.setCreateTime(DateUtils.getNowDate());
+        int rows = baseMapper.insertFsCourseComplaintMsg(msg);
+        if (rows > 0 && msg.getComplaintId() != null) {
+            FsCourseComplaintChannel update = new FsCourseComplaintChannel();
+            update.setId(msg.getComplaintId());
+            update.setUpdateTime(DateUtils.getNowDate());
+            if (msg.getSendType() != null && msg.getSendType() == 1) {
+                update.setUserReplyStatus(1);
+            } else if (msg.getSendType() != null && msg.getSendType() == 2) {
+                update.setPlatformReplyStatus(1);
+            }
+            channelMapper.updateFsCourseComplaintChannel(update);
+        }
+        return rows;
+    }
+
+    @Override
+    public int updateFsCourseComplaintMsg(FsCourseComplaintMsg msg) {
+        return baseMapper.updateFsCourseComplaintMsg(msg);
+    }
+
+    @Override
+    public int deleteFsCourseComplaintMsgById(Long id) {
+        return baseMapper.deleteFsCourseComplaintMsgById(id);
+    }
+}

+ 2 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreScrmMapper.java

@@ -53,6 +53,8 @@ public interface FsStoreScrmMapper
      */
     public int updateFsStore(FsStoreScrm FsStoreScrm);
 
+    int updatePassword(@Param("storeId") Long storeId, @Param("password") String password);
+
     /**
      * 删除店铺管理
      *

+ 3 - 3
fs-service/src/main/java/com/fs/hisStore/param/FsStoreScrmInfoParam.java

@@ -23,9 +23,9 @@ public class FsStoreScrmInfoParam extends BaseEntity
 
     /** 所属城市ids */
     private String cityIds;
-//
-//    /** 店铺名称 */
-//    private String storeName;
+
+    /** 店铺名称 */
+    private String storeName;
 //
 //    /** 店铺介绍 */
 //    private String descs;

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsStoreScrmService.java

@@ -83,6 +83,7 @@ public interface IFsStoreScrmService
 
     int updateEditData(FsStoreScrm fsStore);
 
+    int updatePassword(Long storeId, String password);
 
     List<FsStoreScrm> selectFsStoreListByDoctorId(Long doctorId);
 
@@ -98,6 +99,8 @@ public interface IFsStoreScrmService
 
     List<Map<String, String>> getStoreColumns();
 
+    R enableStore(Long storeId);
+
     List<FsStoreScrm> selectFsStoreListOption(FsStoreScrm fsStore);
 
     /**

+ 20 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -6510,6 +6510,26 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         if(checkStorePrescriptionDrug(cartParamList)){
             return R.error("多店铺处方药,无法开处方!");
         }
+
+        //拼接店铺id
+        String[] storeIds = cartParamList.stream()
+                .map(s->String.valueOf(s.getStoreId()))
+                .toArray(String[]::new);
+
+        //查询店铺
+        List<FsStoreScrm> storeScrmList = fsStoreMapper.selectFsStoreByStoreIds(storeIds);
+        if(storeScrmList.isEmpty()){
+            return R.error("店铺不存在!");
+        }
+
+        //验证店铺是否存在停用状态
+        List<FsStoreScrm> checkStores = storeScrmList.stream().filter(s->s.getStatus().equals(0)).collect(Collectors.toList());
+        if(!checkStores.isEmpty()){
+            //拼接停用店铺
+            String storeNames = checkStores.stream().map(FsStoreScrm::getStoreName).collect(Collectors.joining("、"));
+            return R.error("以下店铺已停用,请从购物车中移除对应商品后再试:" + storeNames);
+        }
+
         return R.ok();
     }
 

+ 42 - 6
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreScrmServiceImpl.java

@@ -378,6 +378,11 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService {
         return fsStoreMapper.updateFsStore(fsStore);
     }
 
+    @Override
+    public int updatePassword(Long storeId, String password) {
+        return fsStoreMapper.updatePassword(storeId, password);
+    }
+
     @Override
     public List<FsStoreScrm> selectFsStoreListByDoctorId(Long doctorId) {
         return fsStoreMapper.selectFsStoreListByDoctorId(doctorId);
@@ -593,11 +598,42 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService {
         }
     }
 
-//    private boolean isExcludedField(String fieldName) {
-//        Set<String> excludedFields = new HashSet<>(Arrays.asList(
-//                "balance", "createTime", "storeId","",""
-//        ));
-//        return excludedFields.contains(fieldName);
-//    }
+    @Override
+    @Transactional
+    public R enableStore(Long storeId) {
+        FsStoreScrm store = fsStoreMapper.selectFsStoreByStoreId(storeId);
+        if (store == null) {
+            return R.error("店铺不存在");
+        }
+        LocalDate today = LocalDate.now();
+        if (store.getIsBusinessLicensePermanent() == null || store.getIsBusinessLicensePermanent() != 1) {
+            if (store.getBusinessLicenseExpireEnd() == null || store.getBusinessLicenseExpireEnd().isBefore(today)) {
+                return R.error("启用失败:营业执照已过期,请更新后重试");
+            }
+        }
+        if (store.getIsMedicalDevice2ExpiryPermanent() == null || store.getIsMedicalDevice2ExpiryPermanent() != 1) {
+            if (store.getMedicalDevice2ExpiryEnd() == null || store.getMedicalDevice2ExpiryEnd().isBefore(today)) {
+                return R.error("启用失败:2类医疗器械备案证书已过期,请更新后重试");
+            }
+        }
+        if (store.getIsFoodLicenseExpiryPermanent() == null || store.getIsFoodLicenseExpiryPermanent() != 1) {
+            if (store.getFoodLicenseExpiryEnd() == null || store.getFoodLicenseExpiryEnd().isBefore(today)) {
+                return R.error("启用失败:食品经营许可证/备案凭证已过期,请更新后重试");
+            }
+        }
+        FsStoreScrm updateStore = new FsStoreScrm();
+        updateStore.setStoreId(storeId);
+        updateStore.setStatus(1);
+        fsStoreMapper.updateFsStore(updateStore);
+        storeAuditLogUtil.addOperLog(storeId);
+        return R.ok("启用成功");
+    }
+
+    private boolean isExcludedField(String fieldName) {
+        Set<String> excludedFields = new HashSet<>(Arrays.asList(
+                "balance", "createTime", "storeId","",""
+        ));
+        return excludedFields.contains(fieldName);
+    }
 }
 

+ 133 - 0
fs-service/src/main/resources/mapper/course/FsCourseComplaintChannelMapper.xml

@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.course.mapper.FsCourseComplaintChannelMapper">
+
+    <resultMap type="FsCourseComplaintChannel" id="FsCourseComplaintChannelResult">
+        <result property="id"                  column="id"                   />
+        <result property="contact"             column="contact"              />
+        <result property="contactType"         column="contact_type"         />
+        <result property="title"               column="title"                />
+        <result property="content"             column="content"              />
+        <result property="fsUserId"            column="fs_user_id"           />
+        <result property="proofImages"         column="proof_images"         />
+        <result property="platformReplyStatus" column="platform_reply_status"/>
+        <result property="userReplyStatus"     column="user_reply_status"    />
+        <result property="isCompleted"         column="is_completed"         />
+        <result property="remarks"             column="remarks"              />
+        <result property="delFlag"             column="del_flag"             />
+        <result property="createBy"            column="create_by"            />
+        <result property="createTime"          column="create_time"          />
+        <result property="updateBy"            column="update_by"            />
+        <result property="updateTime"          column="update_time"          />
+    </resultMap>
+
+    <sql id="selectFsCourseComplaintChannelVo">
+        select id, contact, contact_type, title, content, fs_user_id, proof_images,
+               platform_reply_status, user_reply_status, is_completed, remarks,
+               create_by, create_time, update_by, update_time
+        from course_complaint_channel
+    </sql>
+
+    <select id="selectFsCourseComplaintChannelList" parameterType="FsCourseComplaintChannel" resultMap="FsCourseComplaintChannelResult">
+        <include refid="selectFsCourseComplaintChannelVo"/>
+        <where>
+            and del_flag = 0
+            <if test="contact != null and contact != ''">
+                and contact like concat('%', #{contact}, '%')
+            </if>
+            <if test="contactType != null and contactType != ''">
+                and contact_type = #{contactType}
+            </if>
+            <if test="title != null and title != ''">
+                and title like concat('%', #{title}, '%')
+            </if>
+            <if test="fsUserId != null and fsUserId != ''">
+                and fs_user_id = #{fsUserId}
+            </if>
+            <if test="platformReplyStatus != null">
+                and platform_reply_status = #{platformReplyStatus}
+            </if>
+            <if test="userReplyStatus != null">
+                and user_reply_status = #{userReplyStatus}
+            </if>
+            <if test="isCompleted != null">
+                and is_completed = #{isCompleted}
+            </if>
+            <if test="startCreateTime != null and endCreateTime != null">
+                AND (DATE_FORMAT(create_time, "%Y-%m-%d") &gt;= DATE_FORMAT(#{startCreateTime}, "%Y-%m-%d")
+                and DATE_FORMAT(create_time, "%Y-%m-%d") &lt;= DATE_FORMAT(#{endCreateTime}, "%Y-%m-%d"))
+            </if>
+        </where>
+        order by create_time desc
+    </select>
+
+    <select id="selectFsCourseComplaintChannelById" parameterType="Long" resultMap="FsCourseComplaintChannelResult">
+        <include refid="selectFsCourseComplaintChannelVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertFsCourseComplaintChannel" parameterType="FsCourseComplaintChannel" useGeneratedKeys="true" keyProperty="id">
+        insert into course_complaint_channel
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="contact != null">contact,</if>
+            <if test="contactType != null">contact_type,</if>
+            <if test="title != null">title,</if>
+            <if test="content != null">content,</if>
+            <if test="fsUserId != null">fs_user_id,</if>
+            <if test="proofImages != null">proof_images,</if>
+            <if test="platformReplyStatus != null">platform_reply_status,</if>
+            <if test="userReplyStatus != null">user_reply_status,</if>
+            <if test="isCompleted != null">is_completed,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="contact != null">#{contact},</if>
+            <if test="contactType != null">#{contactType},</if>
+            <if test="title != null">#{title},</if>
+            <if test="content != null">#{content},</if>
+            <if test="fsUserId != null">#{fsUserId},</if>
+            <if test="proofImages != null">#{proofImages},</if>
+            <if test="platformReplyStatus != null">#{platformReplyStatus},</if>
+            <if test="userReplyStatus != null">#{userReplyStatus},</if>
+            <if test="isCompleted != null">#{isCompleted},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+        </trim>
+    </insert>
+
+    <update id="updateFsCourseComplaintChannel" parameterType="FsCourseComplaintChannel">
+        update course_complaint_channel
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="contact != null">contact = #{contact},</if>
+            <if test="contactType != null">contact_type = #{contactType},</if>
+            <if test="title != null">title = #{title},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="fsUserId != null">fs_user_id = #{fsUserId},</if>
+            <if test="proofImages != null">proof_images = #{proofImages},</if>
+            <if test="platformReplyStatus != null">platform_reply_status = #{platformReplyStatus},</if>
+            <if test="userReplyStatus != null">user_reply_status = #{userReplyStatus},</if>
+            <if test="isCompleted != null">is_completed = #{isCompleted},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteFsCourseComplaintChannelById" parameterType="Long">
+        update course_complaint_channel set del_flag = 2 where id = #{id}
+    </delete>
+
+    <delete id="deleteFsCourseComplaintChannelByIds" parameterType="Long">
+        update course_complaint_channel set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+</mapper>

+ 73 - 0
fs-service/src/main/resources/mapper/course/FsCourseComplaintMsgMapper.xml

@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.course.mapper.FsCourseComplaintMsgMapper">
+
+    <resultMap type="FsCourseComplaintMsg" id="FsCourseComplaintMsgResult">
+        <result property="id"          column="id"           />
+        <result property="complaintId" column="complaint_id" />
+        <result property="sendType"    column="send_type"    />
+        <result property="content"     column="content"      />
+        <result property="images"      column="images"       />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"  column="create_time"  />
+    </resultMap>
+
+    <sql id="selectFsCourseComplaintMsgVo">
+        select id, complaint_id, send_type, content, images, create_by, create_time
+        from course_complaint_msg
+    </sql>
+
+    <select id="selectFsCourseComplaintMsgList" parameterType="FsCourseComplaintMsg" resultMap="FsCourseComplaintMsgResult">
+        <include refid="selectFsCourseComplaintMsgVo"/>
+        <where>
+            <if test="complaintId != null">
+                and complaint_id = #{complaintId}
+            </if>
+            <if test="sendType != null">
+                and send_type = #{sendType}
+            </if>
+        </where>
+        order by create_time asc
+    </select>
+
+    <select id="selectFsCourseComplaintMsgById" parameterType="Long" resultMap="FsCourseComplaintMsgResult">
+        <include refid="selectFsCourseComplaintMsgVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertFsCourseComplaintMsg" parameterType="FsCourseComplaintMsg" useGeneratedKeys="true" keyProperty="id">
+        insert into course_complaint_msg
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="complaintId != null">complaint_id,</if>
+            <if test="sendType != null">send_type,</if>
+            <if test="content != null">content,</if>
+            <if test="images != null">images,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="complaintId != null">#{complaintId},</if>
+            <if test="sendType != null">#{sendType},</if>
+            <if test="content != null">#{content},</if>
+            <if test="images != null">#{images},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+        </trim>
+    </insert>
+
+    <update id="updateFsCourseComplaintMsg" parameterType="FsCourseComplaintMsg">
+        update course_complaint_msg
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="content != null">content = #{content},</if>
+            <if test="images != null">images = #{images},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteFsCourseComplaintMsgById" parameterType="Long">
+        delete from course_complaint_msg where id = #{id}
+    </delete>
+
+</mapper>

+ 1 - 1
fs-service/src/main/resources/mapper/course/FsUserCourseVideoMapper.xml

@@ -142,11 +142,11 @@
             <if test="viewStartTime != null">#{viewStartTime},</if>
             <if test="viewEndTime != null">#{viewEndTime},</if>
             <if test="lastJoinTime != null">#{lastJoinTime},</if>
+            <if test="projectId != null">#{projectId},</if>
             <if test="isProduct != null">#{isProduct},</if>
             <if test="productId != null">#{productId},</if>
             <if test="listingStartTime != null">#{listingStartTime},</if>
             <if test="listingEndTime != null">#{listingEndTime},</if>
-            <if test="projectId != null">#{projectId},</if>
             <if test="userId != null">#{userId},</if>
             <if test="isFirst != null">#{isFirst},</if>
             <if test="jobId != null">#{jobId},</if>

+ 5 - 1
fs-service/src/main/resources/mapper/hisStore/FsStoreScrmMapper.xml

@@ -457,7 +457,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="medicalDevice2ExpiryEnd !=null"> medical_device2_expiry_end = #{medicalDevice2ExpiryEnd} ,</if>
             <if test="medicalDevice3 !=null and medicalDevice3 != ''"> medical_device3 = #{medicalDevice3} ,</if>
             <if test="medicalDevice3ExpiryStart !=null">medical_device3_expiry_start = #{medicalDevice3ExpiryStart} ,</if>
-            <if test="medicalDevice3ExpiryEnd !=null">medical_device3_expiry_end = #{medicalDevice3ExpiryEnd} , ,</if>
+            <if test="medicalDevice3ExpiryEnd !=null">medical_device3_expiry_end = #{medicalDevice3ExpiryEnd} ,</if>
             <if test="medicalDevice3Code !=null and medicalDevice3Code != ''">medical_device3_code = #{medicalDevice3Code} ,</if>
             <if test="medicalDevice3BusinessScope !=null and medicalDevice3BusinessScope != ''">medical_device3_business_scope = #{medicalDevice3BusinessScope},</if>
             <if test="foodLicense !=null and foodLicense != ''">food_license = #{foodLicense} ,</if>
@@ -1086,4 +1086,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         AND f.qualification_update_time IS NOT NULL
         AND DATE_ADD( f.qualification_update_time, INTERVAL 6 MONTH ) &lt; CURDATE())a)
     </update>
+
+    <update id="updatePassword">
+        update fs_store_scrm set password = #{password} where store_id = #{storeId}
+    </update>
 </mapper>

+ 2 - 5
fs-store/src/main/java/com/fs/hisStore/controller/store/FsStoreInfoScrmController.java

@@ -109,14 +109,11 @@ public class FsStoreInfoScrmController
         }
 
         String encode = passwordEncoder.encode(newPassword);
-        FsStoreScrm fsStore = new FsStoreScrm();
-        fsStore.setStoreId(loginUser.getFsStore().getStoreId());
-        fsStore.setPassword(encode);
-        if (fsStoreService.updateFsStore(fsStore) > 0)
+        if (fsStoreService.updatePassword(loginUser.getFsStore().getStoreId(), encode) > 0)
         {
             // 更新缓存用户信息
             FsStoreScrm fsStore1 = loginUser.getFsStore();
-            fsStore1.setPassword(fsStore.getPassword());
+            fsStore1.setPassword(encode);
             loginUser.setFsStore(fsStore1);
             tokenService.setLoginUser(loginUser);
             return AjaxResult.success();

+ 83 - 0
fs-user-app/src/main/java/com/fs/app/controller/CourseComplaintChannelController.java

@@ -0,0 +1,83 @@
+package com.fs.app.controller;
+
+import com.fs.app.annotation.Login;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.domain.R;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.course.domain.FsCourseComplaintChannel;
+import com.fs.course.domain.FsCourseComplaintMsg;
+import com.fs.course.param.FsCourseComplaintChannelParam;
+import com.fs.course.param.FsCourseComplaintMsgParam;
+import com.fs.course.service.IFsCourseComplaintChannelService;
+import com.fs.course.service.IFsCourseComplaintMsgService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Api("看课投诉通道用户接口")
+@RestController
+@RequestMapping("/app/user/complaintChannel")
+public class CourseComplaintChannelController extends AppBaseController {
+
+    @Autowired
+    private IFsCourseComplaintChannelService channelService;
+
+    @Autowired
+    private IFsCourseComplaintMsgService msgService;
+
+    @Login
+    @ApiOperation("提交投诉")
+    @PostMapping
+    public AjaxResult add(@RequestBody FsCourseComplaintChannelParam param) {
+        FsCourseComplaintChannel channel = new FsCourseComplaintChannel();
+        BeanUtils.copyProperties(param, channel);
+        channel.setFsUserId(getUserId());
+        return toAjax(channelService.insertFsCourseComplaintChannel(channel));
+    }
+
+    @Login
+    @ApiOperation("我的投诉列表")
+    @GetMapping("/list")
+    public TableDataInfo list() {
+        startPage();
+        FsCourseComplaintChannel query = new FsCourseComplaintChannel();
+        query.setFsUserId(getUserId());
+        List<FsCourseComplaintChannel> list = channelService.selectFsCourseComplaintChannelList(query);
+        return getDataTable(list);
+    }
+
+    @Login
+    @ApiOperation("投诉详情")
+    @GetMapping("/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(channelService.selectFsCourseComplaintChannelById(id));
+    }
+
+    @Login
+    @ApiOperation("发送消息")
+    @PostMapping("/msg")
+    public AjaxResult sendMsg(@RequestBody FsCourseComplaintMsgParam param) {
+        FsCourseComplaintMsg msg = new FsCourseComplaintMsg();
+        msg.setComplaintId(param.getComplaintId());
+        msg.setContent(param.getContent());
+        msg.setImages(param.getImages());
+        msg.setSendType(1);
+        msg.setCreateBy(getUserId());
+        return toAjax(msgService.insertFsCourseComplaintMsg(msg));
+    }
+
+    @Login
+    @ApiOperation("投诉消息记录")
+    @GetMapping("/msg/list")
+    public TableDataInfo msgList(@RequestParam Long complaintId) {
+        startPage();
+        FsCourseComplaintMsg query = new FsCourseComplaintMsg();
+        query.setComplaintId(complaintId);
+        List<FsCourseComplaintMsg> list = msgService.selectFsCourseComplaintMsgList(query);
+        return getDataTable(list);
+    }
+}

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/facade/impl/Hospital580FacadeServiceImpl.java

@@ -299,7 +299,7 @@ public class Hospital580FacadeServiceImpl implements Hospital580FacadeService {
                             .prescriptionStatus(order.getPrescriptionStatus())
                             .doctorName(order.getDoctorName())
                             .serialNo(order.getSerialNo())
-                            .jumpUrl(order.getJumpUrl() != null?pageRequest.getType() != 1?order.getJumpUrl():order.getJumpUrl()+ "&thirdPlatform=" +3+"&thirdReturnUrl=" + encoding("/pages_user/shopping/storeOrderDetail?id="+order.getStoreOrderId()):null)
+                            .jumpUrl(order.getJumpUrl() != null?pageRequest.getType() != null && pageRequest.getType() != 1?order.getJumpUrl():order.getJumpUrl()+ "&thirdPlatform=" +3+"&thirdReturnUrl=" + encoding("/pages_user/shopping/storeOrderDetail?id="+order.getStoreOrderId()):null)
                             .prescriptionStatusByOrderStatus(Optional.ofNullable(orderService.selectFsStoreOrderById(order.getStoreOrderId()))
                                     .map(FsStoreOrderScrm::getStatus)
                                     .map(s -> {