Просмотр исходного кода

新增用户阅读文章明细管理接口

cgp 1 неделя назад
Родитель
Сommit
f438551252

+ 84 - 0
fs-admin/src/main/java/com/fs/his/controller/FsSignArticleReadDetailController.java

@@ -0,0 +1,84 @@
+package com.fs.his.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.fs.common.exception.CustomException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.his.domain.FsSignArticleReadDetail;
+import com.fs.his.service.IFsSignArticleReadDetailService;
+
+/**
+ * 用户阅读文章明细Controller
+ *
+ * @author fs
+ * @date 2024-01-01
+ */
+@RestController
+@RequestMapping("/his/readDetail")
+public class FsSignArticleReadDetailController extends BaseController {
+    @Autowired
+    private IFsSignArticleReadDetailService fsSignArticleReadDetailService;
+
+    /**
+     * 查询用户阅读文章明细列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(FsSignArticleReadDetail fsSignArticleReadDetail) {
+        startPage();
+        List<FsSignArticleReadDetail> list = fsSignArticleReadDetailService.selectFsSignArticleReadDetailList(fsSignArticleReadDetail);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出用户阅读文章明细列表
+     */
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, FsSignArticleReadDetail fsSignArticleReadDetail) {
+        try {
+            List<FsSignArticleReadDetail> list = fsSignArticleReadDetailService.selectFsSignArticleReadDetailList(fsSignArticleReadDetail);
+            ExcelUtil<FsSignArticleReadDetail> util = new ExcelUtil<FsSignArticleReadDetail>(FsSignArticleReadDetail.class);
+            util.exportExcel(response, list, "用户阅读文章明细数据");
+        } catch (Exception e) {
+            throw new CustomException("导出用户阅读文章明细列表异常");
+        }
+
+    }
+
+    /**
+     * 获取用户阅读文章明细详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(fsSignArticleReadDetailService.selectFsSignArticleReadDetailById(id));
+    }
+
+    /**
+     * 新增用户阅读文章明细
+     */
+    @PostMapping
+    public AjaxResult add(@RequestBody FsSignArticleReadDetail fsSignArticleReadDetail) {
+        return toAjax(fsSignArticleReadDetailService.insertFsSignArticleReadDetail(fsSignArticleReadDetail));
+    }
+
+    /**
+     * 修改用户阅读文章明细
+     */
+    @PutMapping
+    public AjaxResult edit(@RequestBody FsSignArticleReadDetail fsSignArticleReadDetail) {
+        return toAjax(fsSignArticleReadDetailService.updateFsSignArticleReadDetail(fsSignArticleReadDetail));
+    }
+
+    /**
+     * 删除用户阅读文章明细
+     */
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(fsSignArticleReadDetailService.deleteFsSignArticleReadDetailByIds(ids));
+    }
+}

+ 57 - 0
fs-service/src/main/java/com/fs/his/domain/FsSignArticleReadDetail.java

@@ -0,0 +1,57 @@
+package com.fs.his.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 用户阅读文章明细对象 fs_sign_article_read_detail
+ * 
+ * @author fs
+ * @date 2024-01-01
+ */
+@Data
+public class FsSignArticleReadDetail implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 阅读者用户ID */
+    @Excel(name = "阅读者用户ID")
+    private Long fsUserId;
+
+    /** 分享文章的销售ID */
+    @Excel(name = "分享文章的销售ID")
+    private Long shareCompanyUserId;
+
+    /** 文章ID */
+    @Excel(name = "文章ID")
+    private Long articleId;
+
+    /** 阅读开始时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "阅读开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date readStartTime;
+
+    /** 阅读结束时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "阅读结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date readEndTime;
+
+    /** 阅读时长(秒) */
+    @Excel(name = "阅读时长(秒)")
+    private Integer readDuration;
+
+    /** 渠道来源 */
+    @Excel(name = "渠道来源")
+    private String source;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+}

+ 61 - 0
fs-service/src/main/java/com/fs/his/mapper/FsSignArticleReadDetailMapper.java

@@ -0,0 +1,61 @@
+package com.fs.his.mapper;
+
+import com.fs.his.domain.FsSignArticleReadDetail;
+import java.util.List;
+
+/**
+ * 用户阅读文章明细Mapper接口
+ * 
+ * @author fs
+ * @date 2024-01-01
+ */
+public interface FsSignArticleReadDetailMapper
+{
+    /**
+     * 查询用户阅读文章明细
+     * 
+     * @param id 用户阅读文章明细主键
+     * @return 用户阅读文章明细
+     */
+    public FsSignArticleReadDetail selectFsSignArticleReadDetailById(Long id);
+
+    /**
+     * 查询用户阅读文章明细列表
+     * 
+     * @param fsSignArticleReadDetail 用户阅读文章明细
+     * @return 用户阅读文章明细集合
+     */
+    public List<FsSignArticleReadDetail> selectFsSignArticleReadDetailList(FsSignArticleReadDetail fsSignArticleReadDetail);
+
+    /**
+     * 新增用户阅读文章明细
+     * 
+     * @param fsSignArticleReadDetail 用户阅读文章明细
+     * @return 结果
+     */
+    public int insertFsSignArticleReadDetail(FsSignArticleReadDetail fsSignArticleReadDetail);
+
+    /**
+     * 修改用户阅读文章明细
+     * 
+     * @param fsSignArticleReadDetail 用户阅读文章明细
+     * @return 结果
+     */
+    public int updateFsSignArticleReadDetail(FsSignArticleReadDetail fsSignArticleReadDetail);
+
+    /**
+     * 删除用户阅读文章明细
+     * 
+     * @param id 用户阅读文章明细主键
+     * @return 结果
+     */
+    public int deleteFsSignArticleReadDetailById(Long id);
+
+    /**
+     * 批量删除用户阅读文章明细
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteFsSignArticleReadDetailByIds(Long[] ids);
+}

+ 61 - 0
fs-service/src/main/java/com/fs/his/service/IFsSignArticleReadDetailService.java

@@ -0,0 +1,61 @@
+package com.fs.his.service;
+
+import com.fs.his.domain.FsSignArticleReadDetail;
+import java.util.List;
+
+/**
+ * 用户阅读文章明细Service接口
+ * 
+ * @author fs
+ * @date 2024-01-01
+ */
+public interface IFsSignArticleReadDetailService
+{
+    /**
+     * 查询用户阅读文章明细
+     * 
+     * @param id 用户阅读文章明细主键
+     * @return 用户阅读文章明细
+     */
+    public FsSignArticleReadDetail selectFsSignArticleReadDetailById(Long id);
+
+    /**
+     * 查询用户阅读文章明细列表
+     * 
+     * @param fsSignArticleReadDetail 用户阅读文章明细
+     * @return 用户阅读文章明细集合
+     */
+    public List<FsSignArticleReadDetail> selectFsSignArticleReadDetailList(FsSignArticleReadDetail fsSignArticleReadDetail);
+
+    /**
+     * 新增用户阅读文章明细
+     * 
+     * @param fsSignArticleReadDetail 用户阅读文章明细
+     * @return 结果
+     */
+    public int insertFsSignArticleReadDetail(FsSignArticleReadDetail fsSignArticleReadDetail);
+
+    /**
+     * 修改用户阅读文章明细
+     * 
+     * @param fsSignArticleReadDetail 用户阅读文章明细
+     * @return 结果
+     */
+    public int updateFsSignArticleReadDetail(FsSignArticleReadDetail fsSignArticleReadDetail);
+
+    /**
+     * 批量删除用户阅读文章明细
+     * 
+     * @param ids 需要删除的用户阅读文章明细主键集合
+     * @return 结果
+     */
+    public int deleteFsSignArticleReadDetailByIds(Long[] ids);
+
+    /**
+     * 删除用户阅读文章明细信息
+     * 
+     * @param id 用户阅读文章明细主键
+     * @return 结果
+     */
+    public int deleteFsSignArticleReadDetailById(Long id);
+}

+ 94 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsSignArticleReadDetailServiceImpl.java

@@ -0,0 +1,94 @@
+package com.fs.his.service.impl;
+
+import com.fs.his.domain.FsSignArticleReadDetail;
+import com.fs.his.mapper.FsSignArticleReadDetailMapper;
+import com.fs.his.service.IFsSignArticleReadDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+/**
+ * 用户阅读文章明细Service业务层处理
+ * 
+ * @author fs
+ * @date 2024-01-01
+ */
+@Service
+public class FsSignArticleReadDetailServiceImpl implements IFsSignArticleReadDetailService
+{
+    @Autowired
+    private FsSignArticleReadDetailMapper fsSignArticleReadDetailMapper;
+
+    /**
+     * 查询用户阅读文章明细
+     * 
+     * @param id 用户阅读文章明细主键
+     * @return 用户阅读文章明细
+     */
+    @Override
+    public FsSignArticleReadDetail selectFsSignArticleReadDetailById(Long id)
+    {
+        return fsSignArticleReadDetailMapper.selectFsSignArticleReadDetailById(id);
+    }
+
+    /**
+     * 查询用户阅读文章明细列表
+     * 
+     * @param fsSignArticleReadDetail 用户阅读文章明细
+     * @return 用户阅读文章明细
+     */
+    @Override
+    public List<FsSignArticleReadDetail> selectFsSignArticleReadDetailList(FsSignArticleReadDetail fsSignArticleReadDetail)
+    {
+        return fsSignArticleReadDetailMapper.selectFsSignArticleReadDetailList(fsSignArticleReadDetail);
+    }
+
+    /**
+     * 新增用户阅读文章明细
+     * 
+     * @param fsSignArticleReadDetail 用户阅读文章明细
+     * @return 结果
+     */
+    @Override
+    public int insertFsSignArticleReadDetail(FsSignArticleReadDetail fsSignArticleReadDetail)
+    {
+        fsSignArticleReadDetail.setCreateTime(new java.util.Date());
+        return fsSignArticleReadDetailMapper.insertFsSignArticleReadDetail(fsSignArticleReadDetail);
+    }
+
+    /**
+     * 修改用户阅读文章明细
+     * 
+     * @param fsSignArticleReadDetail 用户阅读文章明细
+     * @return 结果
+     */
+    @Override
+    public int updateFsSignArticleReadDetail(FsSignArticleReadDetail fsSignArticleReadDetail)
+    {
+        return fsSignArticleReadDetailMapper.updateFsSignArticleReadDetail(fsSignArticleReadDetail);
+    }
+
+    /**
+     * 批量删除用户阅读文章明细
+     * 
+     * @param ids 需要删除的用户阅读文章明细主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFsSignArticleReadDetailByIds(Long[] ids)
+    {
+        return fsSignArticleReadDetailMapper.deleteFsSignArticleReadDetailByIds(ids);
+    }
+
+    /**
+     * 删除用户阅读文章明细信息
+     * 
+     * @param id 用户阅读文章明细主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFsSignArticleReadDetailById(Long id)
+    {
+        return fsSignArticleReadDetailMapper.deleteFsSignArticleReadDetailById(id);
+    }
+}

+ 5 - 1
fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserInformationCollectionServiceImpl.java

@@ -1495,7 +1495,11 @@ public class FsUserInformationCollectionServiceImpl extends ServiceImpl<FsUserIn
                 .collect(Collectors.toMap(
                         AnswerVO::getTitle,
                         ans -> ans.getOptions().stream()
-                                .collect(Collectors.toMap(AnswerVO.Options::getValue, AnswerVO.Options::isOpen))
+                                .collect(Collectors.toMap(
+                                        AnswerVO.Options::getValue,
+                                        AnswerVO.Options::isOpen,
+                                        (existing, replacement) -> existing // 冲突时保留已存在的值
+                                ))
                 ));
 
         // 遍历提交的答案进行校验

+ 93 - 0
fs-service/src/main/resources/mapper/his/FsSignArticleReadDetailMapper.xml

@@ -0,0 +1,93 @@
+<?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.his.mapper.FsSignArticleReadDetailMapper">
+
+    <resultMap type="FsSignArticleReadDetail" id="FsSignArticleReadDetailResult">
+        <result property="id"                  column="id"                   />
+        <result property="fsUserId"            column="fs_user_id"           />
+        <result property="shareCompanyUserId"  column="share_company_user_id"/>
+        <result property="articleId"           column="article_id"           />
+        <result property="readStartTime"       column="read_start_time"      />
+        <result property="readEndTime"         column="read_end_time"        />
+        <result property="readDuration"        column="read_duration"        />
+        <result property="source"              column="source"               />
+        <result property="createTime"          column="create_time"          />
+    </resultMap>
+
+    <sql id="selectFsSignArticleReadDetailVo">
+        select id, fs_user_id, share_company_user_id, article_id,
+               read_start_time, read_end_time, read_duration, source, create_time
+        from fs_sign_article_read_detail
+    </sql>
+
+    <select id="selectFsSignArticleReadDetailList" parameterType="FsSignArticleReadDetail" resultMap="FsSignArticleReadDetailResult">
+        <include refid="selectFsSignArticleReadDetailVo"/>
+        <where>
+            <if test="fsUserId != null"> and fs_user_id = #{fsUserId}</if>
+            <if test="shareCompanyUserId != null"> and share_company_user_id = #{shareCompanyUserId}</if>
+            <if test="articleId != null"> and article_id = #{articleId}</if>
+            <if test="readStartTime != null"> and read_start_time >= #{readStartTime}</if>
+            <if test="readEndTime != null"> and read_end_time &lt;= #{readEndTime}</if>
+            <if test="source != null and source != ''"> and source = #{source}</if>
+        </where>
+        order by create_time desc
+    </select>
+
+    <select id="selectFsSignArticleReadDetailById" parameterType="Long" resultMap="FsSignArticleReadDetailResult">
+        <include refid="selectFsSignArticleReadDetailVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertFsSignArticleReadDetail" parameterType="FsSignArticleReadDetail" useGeneratedKeys="true" keyProperty="id">
+        insert into fs_sign_article_read_detail
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="fsUserId != null">fs_user_id,</if>
+            <if test="shareCompanyUserId != null">share_company_user_id,</if>
+            <if test="articleId != null">article_id,</if>
+            <if test="readStartTime != null">read_start_time,</if>
+            <if test="readEndTime != null">read_end_time,</if>
+            <if test="readDuration != null">read_duration,</if>
+            <if test="source != null">source,</if>
+            <if test="createTime != null">create_time,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="fsUserId != null">#{fsUserId},</if>
+            <if test="shareCompanyUserId != null">#{shareCompanyUserId},</if>
+            <if test="articleId != null">#{articleId},</if>
+            <if test="readStartTime != null">#{readStartTime},</if>
+            <if test="readEndTime != null">#{readEndTime},</if>
+            <if test="readDuration != null">#{readDuration},</if>
+            <if test="source != null">#{source},</if>
+            <if test="createTime != null">#{createTime},</if>
+        </trim>
+    </insert>
+
+    <update id="updateFsSignArticleReadDetail" parameterType="FsSignArticleReadDetail">
+        update fs_sign_article_read_detail
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="fsUserId != null">fs_user_id = #{fsUserId},</if>
+            <if test="shareCompanyUserId != null">share_company_user_id = #{shareCompanyUserId},</if>
+            <if test="articleId != null">article_id = #{articleId},</if>
+            <if test="readStartTime != null">read_start_time = #{readStartTime},</if>
+            <if test="readEndTime != null">read_end_time = #{readEndTime},</if>
+            <if test="readDuration != null">read_duration = #{readDuration},</if>
+            <if test="source != null">source = #{source},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteFsSignArticleReadDetailById" parameterType="Long">
+        delete from fs_sign_article_read_detail where id = #{id}
+    </delete>
+
+    <delete id="deleteFsSignArticleReadDetailByIds" parameterType="String">
+        delete from fs_sign_article_read_detail where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+</mapper>