diff --git a/ruoyi-admin/src/main/resources/application-local.yml b/ruoyi-admin/src/main/resources/application-local.yml index dcc71f5..6fa3ae7 100644 --- a/ruoyi-admin/src/main/resources/application-local.yml +++ b/ruoyi-admin/src/main/resources/application-local.yml @@ -87,8 +87,10 @@ spring: multi-statement-allow: true redis: # 本地 - host: 127.0.0.1 - port: 6379 + #host: 127.0.0.1 + #port: 6379 + host: 124.243.245.42 + port: 5379 # 数据库索引 database: 0 # 密码(本地通常无密码) diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppPolicyConsultRecordController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppPolicyConsultRecordController.java new file mode 100644 index 0000000..cc480ba --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppPolicyConsultRecordController.java @@ -0,0 +1,68 @@ +package com.ruoyi.cms.controller.app; + +import com.ruoyi.cms.domain.policy.PolicyConsultRecord; +import com.ruoyi.cms.domain.policy.PolicyConsultReplyDTO; +import com.ruoyi.cms.domain.policy.PolicyConsultSatisfactionDTO; +import com.ruoyi.cms.domain.policy.PolicyConsultSubmitDTO; +import com.ruoyi.cms.service.policy.IPolicyConsultRecordService; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.utils.SiteSecurityUtils; +import com.ruoyi.common.utils.StringUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Slf4j +@RestController +@RequestMapping("/app/policyConsultRecord") +@Api(tags = "移动端接口:政策咨询记录") +public class AppPolicyConsultRecordController extends BaseController { + + @Autowired + private IPolicyConsultRecordService policyConsultRecordService; + + /** + * 保存用户提交留言咨询 + */ + @ApiOperation("用户提交留言咨询") + @PostMapping("/submit") + public AjaxResult save(@RequestBody PolicyConsultSubmitDTO policyConsultSubmitDTO){ + if(!SiteSecurityUtils.isLogin()){ + return AjaxResult.error("用户未登录!"); + } + return toAjax(policyConsultRecordService.insert(policyConsultSubmitDTO)); + } + + /** + * 用户查看【自己】的留言咨询记录(留言板只能看自己) + */ + @ApiOperation("用户查看【自己】的留言咨询记录(留言板只能看自己)") + @GetMapping("/my/list/{policyId}") + public TableDataInfo getMyConsult(@ApiParam("政策ID") @PathVariable Long policyId){ + startPage(); + List list = policyConsultRecordService.getUserOwnConsultList(policyId); + return getDataTable(list); + } + + /** + * 用户对咨询进行满意度评价 + */ + @ApiOperation("用户对咨询进行满意度评价") + @PostMapping("/satisfaction") + public AjaxResult satisfaction(@RequestBody PolicyConsultSatisfactionDTO dto){ + if(!SiteSecurityUtils.isLogin()){ + return AjaxResult.error("用户未登录!"); + } + return toAjax(policyConsultRecordService.submitSatisfaction(dto)); + } + + + +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsPolicyConsultRecordController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsPolicyConsultRecordController.java new file mode 100644 index 0000000..febb7a0 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsPolicyConsultRecordController.java @@ -0,0 +1,47 @@ +package com.ruoyi.cms.controller.cms; + +import com.ruoyi.cms.domain.policy.PolicyConsultQueryDTO; +import com.ruoyi.cms.domain.policy.PolicyConsultRecord; +import com.ruoyi.cms.domain.policy.PolicyConsultReplyDTO; +import com.ruoyi.cms.domain.policy.PolicyInfoQuery; +import com.ruoyi.cms.service.policy.IPolicyConsultRecordService; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/cms/policyConsultRecord") +@Api(tags = "CMS:政策咨询记录管理") +public class CmsPolicyConsultRecordController extends BaseController { + + @Autowired + private IPolicyConsultRecordService policyConsultRecordService; + + + // ========== 管理员接口 ========== + /** + * 管理员回复留言咨询 + */ + @ApiOperation("管理员回复留言咨询") + @PostMapping("/reply") + public AjaxResult reply(@RequestBody PolicyConsultReplyDTO dto){ + return toAjax(policyConsultRecordService.replyConsult(dto)); + } + + /** + * 管理员查看全部咨询存档记录 + */ + @ApiOperation("管理员查看全部咨询存档记录") + @PostMapping("/list") + public TableDataInfo allRecord(@RequestBody PolicyConsultQueryDTO query){ + startPage(); + List list = policyConsultRecordService.getAllConsultRecord(query); + return getDataTable(list); + } +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/IndustryController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/IndustryController.java index 2cc8e45..270365a 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/IndustryController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/IndustryController.java @@ -243,4 +243,15 @@ public class IndustryController extends BaseController updateIndustry.setParentId(parentId); industryService.updateIndustry(updateIndustry); } + + /** + * 查询第一级行业大类 + */ + @ApiOperation("查询第一级行业大类") + @GetMapping("/first-level") + public AjaxResult getFirstLevelIndustries() + { + List list = industryService.selectFirstLevelIndustryList(); + return success(list); + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultQueryDTO.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultQueryDTO.java new file mode 100644 index 0000000..7d3fc30 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultQueryDTO.java @@ -0,0 +1,34 @@ +package com.ruoyi.cms.domain.policy; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +@ApiModel("政策咨询查询") +public class PolicyConsultQueryDTO { + + @ApiModelProperty("页码") + private Integer pageNum = 1; + + @ApiModelProperty("每页条数") + private Integer pageSize = 10; + + @ApiModelProperty("政策名称搜索关键词") + private String searchValue; + + @ApiModelProperty("咨询状态 PENDING待回复、REPLIED已回复") + private String consultStatus; + + @ApiModelProperty("满意度(0-5分)") + private Integer satisfaction; + + // 咨询起始时间 + @ApiModelProperty("咨询起始时间") + private Date beginConsultTime; + // 咨询结束时间 + @ApiModelProperty("咨询结束时间") + private Date endConsultTime; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultRecord.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultRecord.java new file mode 100644 index 0000000..f1cb323 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultRecord.java @@ -0,0 +1,80 @@ +package com.ruoyi.cms.domain.policy; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("政策咨询记录") +public class PolicyConsultRecord extends BaseEntity { + + private static final long serialVersionUID = 1L; + /** 咨询渠道 - 留言板 */ + public static final String CHANNEL_MESSAGE_BOARD = "MESSAGE_BOARD"; + /** 咨询渠道 - 在线客服 */ + public static final String CHANNEL_ONLINE_CHAT = "ONLINE_CHAT"; + /** 状态 - 待回复 */ + public static final String STATUS_PENDING = "PENDING"; + /** 状态 - 已回复 */ + public static final String STATUS_REPLIED = "REPLIED"; + /** 状态 - 已办结 */ + public static final String STATUS_CLOSED = "CLOSED"; + /** 主键 */ + @ApiModelProperty("主键") + @TableId(value = "id",type = IdType.AUTO) + private Long id; + + /** 咨询用户ID */ + @ApiModelProperty("咨询用户ID") + private Long userId; + + /** 管理员ID */ + @ApiModelProperty("管理员ID") + private Long adminId; + + /** 浏览咨询对应的政策ID */ + @ApiModelProperty("浏览咨询对应的政策ID") + private Long policyId; + + /** 政策名称 */ + @ApiModelProperty("政策名称") + private String policyName; + + /** 咨询渠道:MESSAGE_BOARD 留言板、ONLINE_CHAT在线客服等 */ + @ApiModelProperty("咨询渠道:MESSAGE_BOARD 留言板") + private String consultChannel; + + /** 用户咨询问题 */ + @ApiModelProperty("用户咨询问题") + private String questionContent; + + /** 管理员回复内容 */ + @ApiModelProperty("管理员回复内容") + private String replyContent; + + /** 状态 PENDING待回复、REPLIED已回复、CLOSED已办结 */ + @ApiModelProperty("状态 PENDING待回复、REPLIED已回复、CLOSED已办结") + private String consultStatus; + + /** 咨询提交时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("咨询提交时间") + private Date consultTime; + + /** 回复时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("回复时间") + private Date replyTime; + + /** 用户满意度 五颗星 每颗星代表1分 */ + @ApiModelProperty("用户满意度 五颗星 每颗星代表1分") + private Integer satisfaction; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultReplyDTO.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultReplyDTO.java new file mode 100644 index 0000000..a68461d --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultReplyDTO.java @@ -0,0 +1,20 @@ +package com.ruoyi.cms.domain.policy; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel("管理员回复") +public class PolicyConsultReplyDTO { + + @NotNull(message = "记录ID不能为空") + @ApiModelProperty(value = "记录ID", required = true, example = "1") + private Long recordId; + + @ApiModelProperty(value = "回复内容", required = true, example = "回复内容") + @NotNull(message = "回复内容不能为空") + private String replyContent; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultSatisfactionDTO.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultSatisfactionDTO.java new file mode 100644 index 0000000..97bb7aa --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultSatisfactionDTO.java @@ -0,0 +1,20 @@ +package com.ruoyi.cms.domain.policy; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel("政策咨询满意度评价") +public class PolicyConsultSatisfactionDTO { + + @NotNull(message = "记录ID不能为空") + @ApiModelProperty(value = "记录ID", required = true, example = "1") + private Long recordId; + + @ApiModelProperty(value = "满意度", required = true, example = "1") + @NotNull(message = "满意度不能为空") + private Integer satisfaction; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultSubmitDTO.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultSubmitDTO.java new file mode 100644 index 0000000..8228ff4 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyConsultSubmitDTO.java @@ -0,0 +1,23 @@ +package com.ruoyi.cms.domain.policy; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import javax.validation.constraints.NotNull; + +@Data +@ApiModel("用户提交留言") +public class PolicyConsultSubmitDTO { + + @NotNull(message = "政策ID不能为空") + @ApiModelProperty(value = "政策ID", required = true, example = "1") + private Long policyId; + + @NotNull(message = "咨询问题不能为空") + @ApiModelProperty(value = "咨询问题", required = true, example = "咨询问题") + private String questionContent; + + @NotNull(message = "咨询渠道不能为空( 渠道固定传 MESSAGE_BOARD(留言板渠道))") + @ApiModelProperty(value = "咨询渠道", required = true, example = "MESSAGE_BOARD") + private String consultChannel; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyInfo.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyInfo.java index f59534e..f7ba4ca 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyInfo.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/policy/PolicyInfo.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @@ -73,4 +74,33 @@ public class PolicyInfo extends BaseEntity { @ApiModelProperty("状态(0启用 1禁用)") private String status; + + @ApiModelProperty("行业大类") + private String industryBigType; + + @ApiModelProperty("政策文号") + private String docNo; + + @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty("生效日期") + private Date effectiveTime; + + @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty("失效日期") + private Date expireTime; + + @ApiModelProperty("政策背景") + private String policyBackground; + + @ApiModelProperty("目标宗旨") + private String policyPurpose; + + @ApiModelProperty("具体条款") + private String policyClause; + + @ApiModelProperty("实施细则") + private String implementRule; + + @ApiModelProperty("电子邮件") + private String email; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/policy/PolicyConsultRecordMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/policy/PolicyConsultRecordMapper.java new file mode 100644 index 0000000..12ba7e2 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/policy/PolicyConsultRecordMapper.java @@ -0,0 +1,9 @@ +package com.ruoyi.cms.mapper.policy; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cms.domain.policy.PolicyConsultRecord; + +public interface PolicyConsultRecordMapper extends BaseMapper { + + int insert(PolicyConsultRecord policyConsultRecord); +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IIndustryService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IIndustryService.java index 1101b5a..41612c4 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IIndustryService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IIndustryService.java @@ -61,4 +61,10 @@ public interface IIndustryService void importData(); + /** + * 查询第一级行业大类 + * + * @return 行业集合 + */ + public List selectFirstLevelIndustryList(); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/IndustryServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/IndustryServiceImpl.java index de60b98..c8182c5 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/IndustryServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/IndustryServiceImpl.java @@ -34,6 +34,9 @@ public class IndustryServiceImpl extends ServiceImpl im @Autowired private IndustryMapper industryMapper; + /** 行业根节点父ID */ + public static final Long INDUSTRY_ROOT_PARENT_ID = 0L; + /** * 查询行业 * @@ -234,4 +237,12 @@ public class IndustryServiceImpl extends ServiceImpl im } + @Override + public List selectFirstLevelIndustryList() { + Industry industry = new Industry(); + industry.setParentId(INDUSTRY_ROOT_PARENT_ID); + industry.setStatus("0"); + return industryMapper.selectIndustryList(industry); + } + } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/policy/IPolicyConsultRecordService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/policy/IPolicyConsultRecordService.java new file mode 100644 index 0000000..8c049a6 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/policy/IPolicyConsultRecordService.java @@ -0,0 +1,18 @@ +package com.ruoyi.cms.service.policy; + +import com.ruoyi.cms.domain.policy.*; + +import java.util.List; + +public interface IPolicyConsultRecordService { + + int insert(PolicyConsultSubmitDTO policyConsultSubmitDTO); + + int replyConsult(PolicyConsultReplyDTO policyConsultReplyDTO); + + int submitSatisfaction(PolicyConsultSatisfactionDTO dto); + + List getUserOwnConsultList(Long policyId); + + List getAllConsultRecord(PolicyConsultQueryDTO queryDTO); +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/policy/impl/PolicyConsultRecordServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/policy/impl/PolicyConsultRecordServiceImpl.java new file mode 100644 index 0000000..0ade018 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/policy/impl/PolicyConsultRecordServiceImpl.java @@ -0,0 +1,121 @@ +package com.ruoyi.cms.service.policy.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.cms.domain.policy.*; +import com.ruoyi.cms.mapper.policy.PolicyConsultRecordMapper; +import com.ruoyi.cms.mapper.policy.PolicyInfoMapper; +import com.ruoyi.cms.service.policy.IPolicyConsultRecordService; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.SiteSecurityUtils; +import com.ruoyi.common.utils.StringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +import static com.ruoyi.common.utils.DateUtils.YYYY_MM_DD_HH_MM_SS; + +@Slf4j +@Service +public class PolicyConsultRecordServiceImpl extends ServiceImpl implements IPolicyConsultRecordService { + + @Autowired + private PolicyConsultRecordMapper policyConsultRecordMapper; + + @Autowired + private PolicyInfoMapper policyInfoMapper; + + @Override + public int insert(PolicyConsultSubmitDTO policyConsultSubmitDTO) { + + PolicyInfo policyInfo = policyInfoMapper.selectPolicyInfoById(policyConsultSubmitDTO.getPolicyId()); + PolicyConsultRecord record = new PolicyConsultRecord(); + record.setUserId(SiteSecurityUtils.getUserId()); + record.setPolicyId(policyConsultSubmitDTO.getPolicyId()); + record.setPolicyName(policyInfo.getZcmc()); + record.setConsultChannel(policyConsultSubmitDTO.getConsultChannel()); + record.setQuestionContent(policyConsultSubmitDTO.getQuestionContent()); + record.setConsultStatus(PolicyConsultRecord.STATUS_PENDING); + record.setConsultTime(new Date()); + return policyConsultRecordMapper.insert(record); + } + + /** + * 2.管理员回复咨询 + */ + @Override + public int replyConsult(PolicyConsultReplyDTO dto) { + PolicyConsultRecord record = policyConsultRecordMapper.selectById(dto.getRecordId()); + record.setReplyContent(dto.getReplyContent()); + record.setConsultStatus(PolicyConsultRecord.STATUS_REPLIED); + record.setReplyTime(new Date()); + record.setAdminId(SiteSecurityUtils.getUserId());//管理员id + record.setUpdateBy(SiteSecurityUtils.getUsername());//管理员名称 + record.setUpdateTime(DateUtils.dateTimeNow(YYYY_MM_DD_HH_MM_SS)); + return policyConsultRecordMapper.updateById(record); + } + + /** + * 3.用户评价满意度(存档满意度信息) + */ + @Override + public int submitSatisfaction(PolicyConsultSatisfactionDTO dto) { + PolicyConsultRecord record = policyConsultRecordMapper.selectById(dto.getRecordId()); + // 权限校验:只能评价自己的咨询记录 + if (!record.getUserId().equals(SiteSecurityUtils.getUserId())){ + throw new RuntimeException("无权操作"); + } + record.setSatisfaction(dto.getSatisfaction()); + record.setUpdateTime(DateUtils.dateTimeNow(YYYY_MM_DD_HH_MM_SS)); + return policyConsultRecordMapper.updateById(record); + } + + /** + * 4.【重要】用户查询自己的留言咨询记录 + * 需求备注:留言板自己看自己,只能查询userId匹配的数据 + */ + @Override + public List getUserOwnConsultList(Long policyId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PolicyConsultRecord::getUserId, SiteSecurityUtils.getUserId()); + // 可选:按政策筛选 + if(policyId != null){ + wrapper.eq(PolicyConsultRecord::getPolicyId, policyId); + } + wrapper.orderByDesc(PolicyConsultRecord::getConsultTime); + return policyConsultRecordMapper.selectList(wrapper); + } + + /** + * 管理员后台:查询全部咨询存档记录(用于台账查看) + */ + @Override + public List getAllConsultRecord(PolicyConsultQueryDTO query) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + // 状态 + if(StringUtils.isNotEmpty(query.getConsultStatus())){ + wrapper.eq(PolicyConsultRecord::getConsultStatus, query.getConsultStatus()); + } + // 满意度 + if(query.getSatisfaction() != null){ + wrapper.eq(PolicyConsultRecord::getSatisfaction, query.getSatisfaction()); + } + // 政策 + if(StringUtils.isNotEmpty(query.getSearchValue())){ + wrapper.like(PolicyConsultRecord::getPolicyName, query.getSearchValue()); + } + // 时间区间 + if(query.getBeginConsultTime() != null){ + wrapper.ge(PolicyConsultRecord::getConsultTime, query.getBeginConsultTime()); + } + if(query.getEndConsultTime() != null){ + wrapper.le(PolicyConsultRecord::getConsultTime, query.getEndConsultTime()); + } + // 排序:最新咨询靠前 + wrapper.orderByDesc(PolicyConsultRecord::getConsultTime); + return policyConsultRecordMapper.selectList(wrapper); + } +} diff --git a/ruoyi-bussiness/src/main/resources/mapper/policy/PolicyConsultRecordMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/policy/PolicyConsultRecordMapper.xml new file mode 100644 index 0000000..2527093 --- /dev/null +++ b/ruoyi-bussiness/src/main/resources/mapper/policy/PolicyConsultRecordMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select id, user_id, admin_id, policy_id, consult_channel, question_content, reply_content, + consult_status, consult_time, reply_time, satisfaction, create_by, update_time + from policy_consult_record + + + + insert into policy_consult_record ( + user_id, admin_id, policy_id, consult_channel, question_content, + reply_content, consult_status, consult_time, reply_time, + satisfaction, create_by, create_time, update_time, del_flag, remark + ) values ( + #{userId}, #{adminId}, #{policyId}, #{consultChannel}, #{questionContent}, + #{replyContent}, #{consultStatus}, #{consultTime}, #{replyTime}, + #{satisfaction}, #{createBy}, now(), now(), '0', #{remark} + ) + + \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/policy/PolicyInfoMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/policy/PolicyInfoMapper.xml index 980c371..884de50 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/policy/PolicyInfoMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/policy/PolicyInfoMapper.xml @@ -26,17 +26,28 @@ + + + + + + + + + - select id, zcmc, zclx, zc_level, source_unit, accept_unit, publish_time, view_num, create_time, policy_tag, status,policy_category + select id, zcmc, zclx, zc_level, source_unit, accept_unit, publish_time, view_num, create_time, policy_tag, status,policy_category,industry_big_type, + doc_no,effective_time,expire_time,policy_background,policy_purpose,policy_clause,implement_rule,email from policy_info select id, zcmc, zclx, zc_level, source_unit, accept_unit, publish_time, zc_content, subsidy_standard, handle_channel, apply_condition, - file_url, file_name, view_num, create_by, create_time, update_by, update_time, remark, policy_tag, status,policy_category + file_url, file_name, view_num, create_by, create_time, update_by, update_time, remark, policy_tag, status,policy_category,industry_big_type, + doc_no,effective_time,expire_time,policy_background,policy_purpose,policy_clause,implement_rule,email from policy_info @@ -78,11 +89,13 @@ insert into policy_info ( zcmc, zclx, zc_level, source_unit, accept_unit, publish_time, zc_content, subsidy_standard, handle_channel, apply_condition, - file_url, file_name, view_num, create_by, create_time, del_flag, remark, policy_tag, status,policy_category + file_url, file_name, view_num, create_by, create_time, del_flag, remark, policy_tag, status,policy_category,industry_big_type, + doc_no,effective_time,expire_time,policy_background,policy_purpose,policy_clause,implement_rule,email ) values ( #{zcmc}, #{zclx}, #{zcLevel}, #{sourceUnit}, #{acceptUnit}, #{publishTime}, #{zcContent}, #{subsidyStandard}, #{handleChannel}, #{applyCondition}, - #{fileUrl}, #{fileName}, #{viewNum}, #{createBy}, now(), '0', #{remark}, #{policyTag}, #{status},#{policyCategory} + #{fileUrl}, #{fileName}, #{viewNum}, #{createBy}, now(), '0', #{remark}, #{policyTag}, #{status},#{policyCategory},#{industryBigType}, + #{docNo}, #{effectiveTime}, #{expireTime}, #{policyBackground}, #{policyPurpose}, #{policyClause}, #{implementRule}, #{email} ) @@ -105,6 +118,15 @@ policy_tag = #{policyTag}, status = #{status}, policy_category = #{policyCategory}, + industry_big_type = #{industryBigType}, + doc_no = #{docNo}, + effective_time = #{effectiveTime}, + expire_time = #{expireTime}, + policy_background = #{policyBackground}, + policy_purpose = #{policyPurpose}, + policy_clause = #{policyClause}, + implement_rule = #{implementRule}, + email = #{email}, update_by = #{updateBy}, update_time = now()