This commit is contained in:
sen 2025-03-31 01:43:43 +08:00
parent d68fb148cc
commit 45a12d498f
19 changed files with 678 additions and 4 deletions

View File

@ -1,4 +1,7 @@
package com.ruoyi.bst.article.domain;
import lombok.Data;
@Data
public class ArticleVO extends Article {
}

View File

@ -4,6 +4,7 @@ import java.util.List;
import com.ruoyi.bst.article.domain.Article;
import com.ruoyi.bst.article.domain.ArticleVO;
import com.ruoyi.bst.article.domain.ArticleQuery;
import com.ruoyi.bst.articleCategory.domain.ArticleCategoryQuery;
import org.apache.ibatis.annotations.Param;
/**
@ -73,4 +74,6 @@ public interface ArticleMapper
public int deleteArticleByIds(Long[] ids);
public ArticleVO selectChildrenByiId(Long id);
ArticleVO selectArticleByCode(ArticleCategoryQuery articleCategoryQuery);
}

View File

@ -51,6 +51,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectArticleVo"/>
where id = #{categoryId}
</select>
<select id="selectArticleByCode" resultType="com.ruoyi.bst.article.domain.ArticleVO">
<include refid="selectArticleVo"/>
where code = #{code}
</select>
<insert id="insertArticle" parameterType="Article" useGeneratedKeys="true" keyProperty="id">
insert into bst_article

View File

@ -4,6 +4,7 @@ import java.util.List;
import com.ruoyi.bst.article.domain.Article;
import com.ruoyi.bst.article.domain.ArticleVO;
import com.ruoyi.bst.article.domain.ArticleQuery;
import com.ruoyi.bst.articleCategory.domain.ArticleCategoryQuery;
/**
* 文章Service接口
@ -62,4 +63,6 @@ public interface ArticleService
public int deleteArticleById(Long id);
ArticleVO selectChildrenByCategoryId(Long id);
ArticleVO selectArticleByCode(ArticleCategoryQuery articleCategoryQuery);
}

View File

@ -4,6 +4,7 @@ import java.util.List;
import com.ruoyi.bst.area.service.AreaService;
import com.ruoyi.bst.article.service.ArticleService;
import com.ruoyi.bst.articleCategory.domain.ArticleCategoryQuery;
import com.ruoyi.bst.articleCategory.service.ArticleCategoryService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
@ -131,4 +132,9 @@ public class ArticleServiceImpl implements ArticleService
public ArticleVO selectChildrenByCategoryId(Long id) {
return articleMapper.selectChildrenByiId(id);
}
@Override
public ArticleVO selectArticleByCode(ArticleCategoryQuery articleCategoryQuery) {
return articleMapper.selectArticleByCode(articleCategoryQuery);
}
}

View File

@ -1,6 +1,11 @@
package com.ruoyi.bst.articleCategory.domain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ArticleCategoryQuery extends ArticleCategory {
@ApiModelProperty("指南编号")
private String code;
}

View File

@ -1,6 +1,8 @@
package com.ruoyi.bst.articleCategory.service;
import java.util.List;
import com.ruoyi.bst.article.domain.ArticleVO;
import com.ruoyi.bst.articleCategory.domain.ArticleCategory;
import com.ruoyi.bst.articleCategory.domain.ArticleCategoryVO;
import com.ruoyi.bst.articleCategory.domain.ArticleCategoryQuery;
@ -60,4 +62,5 @@ public interface ArticleCategoryService
* @return 结果
*/
public int deleteArticleCategoryById(Long id);
}

View File

@ -0,0 +1,43 @@
package com.ruoyi.bst.complaint.domain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 投诉对象 bst_complaint
*
* @author ruoyi
* @date 2025-03-31
*/
@Data
public class Complaint extends BaseEntity
{
private static final long serialVersionUID = 1L;
private Long id;
@Excel(name = "用户ID")
@ApiModelProperty("用户ID")
private Long userId;
@Excel(name = "内容")
@ApiModelProperty("内容")
private String content;
@Excel(name = "意见反馈类型1功能异常2意见与建议3其他")
@ApiModelProperty("意见反馈类型1功能异常2意见与建议3其他")
private String type;
@Excel(name = "图片路径,以逗号分开")
@ApiModelProperty("图片路径,以逗号分开")
private String picture;
@Excel(name = "联系方式", readConverterExp = "手=机、微信、邮箱")
@ApiModelProperty("联系方式")
private String contact;
}

View File

@ -0,0 +1,12 @@
package com.ruoyi.bst.complaint.domain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ComplaintQuery extends Complaint{
@ApiModelProperty("用户名称")
private String userName;
}

View File

@ -0,0 +1,12 @@
package com.ruoyi.bst.complaint.domain;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
@Data
public class ComplaintVO extends Complaint{
@Excel(name = "用户名称")
private String userName;
}

View File

@ -0,0 +1,74 @@
package com.ruoyi.bst.complaint.mapper;
import java.util.List;
import com.ruoyi.bst.complaint.domain.Complaint;
import com.ruoyi.bst.complaint.domain.ComplaintVO;
import com.ruoyi.bst.complaint.domain.ComplaintQuery;
import org.apache.ibatis.annotations.Param;
/**
* 投诉Mapper接口
*
* @author ruoyi
* @date 2025-03-31
*/
public interface ComplaintMapper
{
/**
* 查询投诉
*
* @param id 投诉主键
* @return 投诉
*/
ComplaintVO selectComplaintById(Long id);
/**
* 查询投诉列表
*
* @param query 投诉
* @return 投诉集合
*/
List<ComplaintVO> selectComplaintList(@Param("query")ComplaintQuery query);
/**
* 新增投诉
*
* @param complaint 投诉
* @return 结果
*/
int insertComplaint(Complaint complaint);
/**
* 批量新增投诉
*/
int batchInsert(@Param("list") List<? extends Complaint> list);
/**
* 批量修改投诉
*/
int batchUpdate(@Param("list") List<? extends Complaint> list);
/**
* 修改投诉
*
* @param complaint 投诉
* @return 结果
*/
public int updateComplaint(@Param("data") Complaint complaint);
/**
* 删除投诉
*
* @param id 投诉主键
* @return 结果
*/
int deleteComplaintById(Long id);
/**
* 批量删除投诉
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteComplaintByIds(Long[] ids);
}

View File

@ -0,0 +1,197 @@
<?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.ruoyi.bst.complaint.mapper.ComplaintMapper">
<resultMap type="ComplaintVO" id="ComplaintResult" autoMapping="true">
<result property="id" column="id" />
<result property="userId" column="user_id" />
<result property="createTime" column="create_time" />
<result property="content" column="content" />
<result property="type" column="type" />
<result property="picture" column="picture" />
<result property="contact" column="contact" />
</resultMap>
<sql id="selectComplaintVo">
select
id,
user_id,
create_time,
content,
type,
picture,
contact
from bst_complaint
</sql>
<sql id="searchCondition">
<if test="query.id != null "> and id = #{query.id}</if>
<if test="query.userId != null "> and user_id = #{query.userId}</if>
<if test="query.content != null and query.content != ''"> and content = #{query.content}</if>
<if test="query.type != null and query.type != ''"> and type = #{query.type}</if>
<if test="query.picture != null and query.picture != ''"> and picture = #{query.picture}</if>
<if test="query.contact != null and query.contact != ''"> and contact = #{query.contact}</if>
${query.params.dataScope}
</sql>
<select id="selectComplaintList" parameterType="ComplaintQuery" resultMap="ComplaintResult">
<include refid="selectComplaintVo"/>
<where>
<include refid="searchCondition"/>
</where>
</select>
<select id="selectComplaintById" parameterType="Long" resultMap="ComplaintResult">
<include refid="selectComplaintVo"/>
where id = #{id}
</select>
<insert id="insertComplaint" parameterType="Complaint" useGeneratedKeys="true" keyProperty="id">
insert into bst_complaint
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId != null">user_id,</if>
<if test="createTime != null">create_time,</if>
<if test="content != null">content,</if>
<if test="type != null">type,</if>
<if test="picture != null">picture,</if>
<if test="contact != null">contact,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userId != null">#{userId},</if>
<if test="createTime != null">#{createTime},</if>
<if test="content != null">#{content},</if>
<if test="type != null">#{type},</if>
<if test="picture != null">#{picture},</if>
<if test="contact != null">#{contact},</if>
</trim>
</insert>
<insert id="batchInsert" parameterType="Complaint" useGeneratedKeys="true" keyProperty="id">
insert into bst_complaint
<trim prefix="(" suffix=")" suffixOverrides=",">
user_id,
create_time,
content,
type,
picture,
contact,
</trim>
values
<foreach collection="list" item="i" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="i.userId != null ">#{i.userId},</if>
<if test="i.userId == null ">default,</if>
<if test="i.createTime != null ">#{i.createTime},</if>
<if test="i.createTime == null ">default,</if>
<if test="i.content != null ">#{i.content},</if>
<if test="i.content == null ">default,</if>
<if test="i.type != null ">#{i.type},</if>
<if test="i.type == null ">default,</if>
<if test="i.picture != null ">#{i.picture},</if>
<if test="i.picture == null ">default,</if>
<if test="i.contact != null ">#{i.contact},</if>
<if test="i.contact == null ">default,</if>
</trim>
</foreach>
</insert>
<update id="batchUpdate">
update bst_complaint
<trim prefix="SET" suffixOverrides=",">
<foreach open="user_id = CASE id" collection="list" item="item" close="END,">
<choose>
<when test="item.userId != null ">
WHEN #{item.id} THEN #{item.userId}
</when>
<otherwise>
WHEN #{item.id} THEN `user_id`
</otherwise>
</choose>
</foreach>
<foreach open="create_time = CASE id" collection="list" item="item" close="END,">
<choose>
<when test="item.createTime != null ">
WHEN #{item.id} THEN #{item.createTime}
</when>
<otherwise>
WHEN #{item.id} THEN `create_time`
</otherwise>
</choose>
</foreach>
<foreach open="content = CASE id" collection="list" item="item" close="END,">
<choose>
<when test="item.content != null ">
WHEN #{item.id} THEN #{item.content}
</when>
<otherwise>
WHEN #{item.id} THEN `content`
</otherwise>
</choose>
</foreach>
<foreach open="type = CASE id" collection="list" item="item" close="END,">
<choose>
<when test="item.type != null ">
WHEN #{item.id} THEN #{item.type}
</when>
<otherwise>
WHEN #{item.id} THEN `type`
</otherwise>
</choose>
</foreach>
<foreach open="picture = CASE id" collection="list" item="item" close="END,">
<choose>
<when test="item.picture != null ">
WHEN #{item.id} THEN #{item.picture}
</when>
<otherwise>
WHEN #{item.id} THEN `picture`
</otherwise>
</choose>
</foreach>
<foreach open="contact = CASE id" collection="list" item="item" close="END,">
<choose>
<when test="item.contact != null ">
WHEN #{item.id} THEN #{item.contact}
</when>
<otherwise>
WHEN #{item.id} THEN `contact`
</otherwise>
</choose>
</foreach>
</trim>
where id in
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item.id}
</foreach>
</update>
<update id="updateComplaint" parameterType="Complaint">
update bst_complaint
<trim prefix="SET" suffixOverrides=",">
<include refid="updateColumns"/>
</trim>
where id = #{data.id}
</update>
<sql id="updateColumns">
<if test="data.userId != null">user_id = #{data.userId},</if>
<if test="data.createTime != null">create_time = #{data.createTime},</if>
<if test="data.content != null">content = #{data.content},</if>
<if test="data.type != null">type = #{data.type},</if>
<if test="data.picture != null">picture = #{data.picture},</if>
<if test="data.contact != null">contact = #{data.contact},</if>
</sql>
<delete id="deleteComplaintById" parameterType="Long">
delete from bst_complaint where id = #{id}
</delete>
<delete id="deleteComplaintByIds" parameterType="String">
delete from bst_complaint where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@ -0,0 +1,63 @@
package com.ruoyi.bst.complaint.service;
import java.util.List;
import com.ruoyi.bst.complaint.domain.Complaint;
import com.ruoyi.bst.complaint.domain.ComplaintVO;
import com.ruoyi.bst.complaint.domain.ComplaintQuery;
/**
* 投诉Service接口
*
* @author ruoyi
* @date 2025-03-31
*/
public interface ComplaintService
{
/**
* 查询投诉
*
* @param id 投诉主键
* @return 投诉
*/
public ComplaintVO selectComplaintById(Long id);
/**
* 查询投诉列表
*
* @param complaint 投诉
* @return 投诉集合
*/
public List<ComplaintVO> selectComplaintList(ComplaintQuery complaint);
/**
* 新增投诉
*
* @param complaint 投诉
* @return 结果
*/
public int insertComplaint(Complaint complaint);
/**
* 修改投诉
*
* @param complaint 投诉
* @return 结果
*/
public int updateComplaint(Complaint complaint);
/**
* 批量删除投诉
*
* @param ids 需要删除的投诉主键集合
* @return 结果
*/
public int deleteComplaintByIds(Long[] ids);
/**
* 删除投诉信息
*
* @param id 投诉主键
* @return 结果
*/
public int deleteComplaintById(Long id);
}

View File

@ -0,0 +1,97 @@
package com.ruoyi.bst.complaint.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.bst.complaint.mapper.ComplaintMapper;
import com.ruoyi.bst.complaint.domain.Complaint;
import com.ruoyi.bst.complaint.domain.ComplaintVO;
import com.ruoyi.bst.complaint.domain.ComplaintQuery;
import com.ruoyi.bst.complaint.service.ComplaintService;
/**
* 投诉Service业务层处理
*
* @author ruoyi
* @date 2025-03-31
*/
@Service
public class ComplaintServiceImpl implements ComplaintService
{
@Autowired
private ComplaintMapper complaintMapper;
/**
* 查询投诉
*
* @param id 投诉主键
* @return 投诉
*/
@Override
public ComplaintVO selectComplaintById(Long id)
{
return complaintMapper.selectComplaintById(id);
}
/**
* 查询投诉列表
*
* @param complaint 投诉
* @return 投诉
*/
@Override
public List<ComplaintVO> selectComplaintList(ComplaintQuery complaint)
{
return complaintMapper.selectComplaintList(complaint);
}
/**
* 新增投诉
*
* @param complaint 投诉
* @return 结果
*/
@Override
public int insertComplaint(Complaint complaint)
{
complaint.setCreateTime(DateUtils.getNowDate());
return complaintMapper.insertComplaint(complaint);
}
/**
* 修改投诉
*
* @param complaint 投诉
* @return 结果
*/
@Override
public int updateComplaint(Complaint complaint)
{
return complaintMapper.updateComplaint(complaint);
}
/**
* 批量删除投诉
*
* @param ids 需要删除的投诉主键
* @return 结果
*/
@Override
public int deleteComplaintByIds(Long[] ids)
{
return complaintMapper.deleteComplaintByIds(ids);
}
/**
* 删除投诉信息
*
* @param id 投诉主键
* @return 结果
*/
@Override
public int deleteComplaintById(Long id)
{
return complaintMapper.deleteComplaintById(id);
}
}

View File

@ -34,7 +34,7 @@ public class Fault extends BaseEntity
@Excel(name = "订单编号")
@ApiModelProperty("订单编号")
private String orderId;
private Long orderId;
@Excel(name = "故障部位")
@ApiModelProperty("故障部位")

View File

@ -31,6 +31,14 @@ public class AppAtricleCategoryController extends BaseController {
@Autowired
private ArticleService articleService;
@ApiOperation("租/用车指南")
@GetMapping("/{code}")
@Anonymous
public AjaxResult getGuide(ArticleCategoryQuery articleCategoryQuery) {
startPage();
return AjaxResult.success(articleService.selectArticleByCode(articleCategoryQuery));
}
@ApiOperation("查询所有文章分类信息")
@GetMapping("/list")
@Anonymous

View File

@ -0,0 +1,40 @@
package com.ruoyi.web.app;
import com.ruoyi.bst.complaint.domain.Complaint;
import com.ruoyi.bst.complaint.service.ComplaintService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 投诉建议
* @author
* 2024/3/7
*/
@Api(tags = "投诉建议")
@RestController
@RequestMapping("/app/complaint")
public class AppComplaintController extends BaseController {
@Autowired
private ComplaintService complaintService;
/**
* 创建投诉建议
* @param complaint
* @return
*/
@ApiOperation("创建投诉建议")
@PostMapping
public AjaxResult add(@RequestBody Complaint complaint) {
complaint.setUserId(getUserId());
return AjaxResult.success(complaintService.insertComplaint(complaint));
}
}

View File

@ -47,7 +47,7 @@ public class AppFaultController extends BaseController {
*/
@ApiOperation("故障申报")
@PostMapping
public AjaxResult add(@RequestBody Fault fault) {
public AjaxResult add(@RequestBody FaultVO fault) {
DeviceVO device = deviceService.selectDeviceBySn(fault.getVehicleCode());
if (device ==null) {
@ -57,7 +57,7 @@ public class AppFaultController extends BaseController {
if (device.getOrderId() != null) {
OrderVO order = orderService.selectOrderById(device.getOrderId());
if (order.getEndTime() != null) {
fault.setOrderEndTime(DateUtils.toDate(order.getEndTime()));
fault.setOrderEndTime(order.getEndTime());
}
fault.setOrderId(device.getOrderId());
}

View File

@ -0,0 +1,101 @@
package com.ruoyi.web.bst;
import com.ruoyi.bst.complaint.domain.Complaint;
import com.ruoyi.bst.complaint.domain.ComplaintQuery;
import com.ruoyi.bst.complaint.domain.ComplaintVO;
import com.ruoyi.bst.complaint.service.ComplaintService;
import com.ruoyi.common.annotation.Log;
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.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 投诉Controller
*
* @author ruoyi
* @date 2025-03-31
*/
@RestController
@RequestMapping("/bst/complaint")
public class ComplaintController extends BaseController
{
@Autowired
private ComplaintService complaintService;
/**
* 查询投诉列表
*/
@PreAuthorize("@ss.hasPermi('bst:complaint:list')")
@GetMapping("/list")
public TableDataInfo list(ComplaintQuery query)
{
startPage();
startOrderBy();
List<ComplaintVO> list = complaintService.selectComplaintList(query);
return getDataTable(list);
}
/**
* 导出投诉列表
*/
@PreAuthorize("@ss.hasPermi('bst:complaint:export')")
@Log(title = "投诉", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ComplaintQuery query)
{
List<ComplaintVO> list = complaintService.selectComplaintList(query);
ExcelUtil<ComplaintVO> util = new ExcelUtil<ComplaintVO>(ComplaintVO.class);
util.exportExcel(response, list, "投诉数据");
}
/**
* 获取投诉详细信息
*/
@PreAuthorize("@ss.hasPermi('bst:complaint:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(complaintService.selectComplaintById(id));
}
/**
* 新增投诉
*/
@PreAuthorize("@ss.hasPermi('bst:complaint:add')")
@Log(title = "投诉", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody Complaint complaint)
{
return toAjax(complaintService.insertComplaint(complaint));
}
/**
* 修改投诉
*/
@PreAuthorize("@ss.hasPermi('bst:complaint:edit')")
@Log(title = "投诉", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody Complaint complaint)
{
return toAjax(complaintService.updateComplaint(complaint));
}
/**
* 删除投诉
*/
@PreAuthorize("@ss.hasPermi('bst:complaint:remove')")
@Log(title = "投诉", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(complaintService.deleteComplaintByIds(ids));
}
}