Bladeren bron

菜单点击记录

helixiao 1 jaar geleden
bovenliggende
commit
87ce465044

+ 12 - 0
sql/Online.sql

@@ -0,0 +1,12 @@
+-- add by helixiao 20240925
+DROP TABLE IF EXISTS `sys_menu_record`;
+CREATE TABLE `sys_menu_record` (
+            `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+            `user_id` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户id',
+            `user_name` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户姓名',
+            `type` tinyint DEFAULT NULL COMMENT '客户端:1:APP;2:PC',
+            `source` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '机构来源(1-渠道、2-个代3:电销)',
+            `menu_type` tinyint DEFAULT NULL COMMENT '菜单类型(1:车险录单;2:订单查询;3:钱包, 4:会员分享 5:会员管理 6 海报管理)',
+            `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+            PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='菜单点击记录表';

+ 66 - 0
src/main/java/com/ydtech/modules/admin/controller/websocket/SysMenuRecordController.java

@@ -0,0 +1,66 @@
+package com.ydtech.modules.admin.controller.websocket;
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysMenuRecord;
+import com.ydtech.modules.admin.model.dto.SysMenuRecordDto;
+import com.ydtech.modules.admin.model.vo.SysMenuRecordVo;
+import com.ydtech.modules.admin.service.SysMenuRecordService;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.order.entity.BasePageResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * (SysMenuRecord)表控制层
+ *
+ * @author makejava
+ * @since 2024-09-25 10:51:03
+ */
+@RestController
+@RequestMapping("/sysMenuRecord")
+@Api(tags = "菜单操作记录")
+public class SysMenuRecordController extends BaseController {
+
+    @Resource
+    private SysMenuRecordService sysMenuRecordService;
+
+    /**
+     *
+     * @param type
+     * @param menuType
+     * @return
+     */
+    @GetMapping("/add")
+    @ApiOperation(value = "保存菜单操作")
+    public HttpResult add(@RequestParam("type") @ApiParam("客户端:1:APP;2:PC") Integer type, @RequestParam("menuType") @ApiParam("菜单类型(1:车险录单;2:订单查询;3:钱包, 4:会员分享 5:会员管理 6 海报管理)") Integer menuType) {
+        return HttpResult.ok("success",this.sysMenuRecordService.insert(type,menuType));
+    }
+
+    /**
+     * 菜单操作记录
+     * @param sysMenuRecordDto
+     * @return
+     */
+    @PostMapping("/queryByPage")
+    @ApiOperation(value = "菜单操作记录")
+    public HttpResult<BasePageResult<SysMenuRecord>> queryByPage(@RequestBody SysMenuRecordDto sysMenuRecordDto ) {
+        return HttpResult.ok("success",this.sysMenuRecordService.queryByPage(sysMenuRecordDto));
+    }
+
+    @PostMapping("/getClickMenu")
+    @ApiOperation(value = "菜单操作统计")
+    public HttpResult<SysMenuRecordVo> getClickMenu(@RequestBody SysMenuRecordDto sysMenuRecordDto ) {
+        return HttpResult.ok("success",this.sysMenuRecordService.getClickMenu(sysMenuRecordDto));
+    }
+
+
+
+
+
+
+}
+

+ 15 - 0
src/main/java/com/ydtech/modules/admin/dao/SysMenuRecordMapper.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.modules.admin.model.SysMenuRecord;
+import com.ydtech.modules.admin.model.dto.SysMenuRecordDto;
+import com.ydtech.modules.admin.model.vo.SysMenuRecordVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface SysMenuRecordMapper extends BaseMapper<SysMenuRecord> {
+    IPage<SysMenuRecordVo> queryByPage(Page page,@Param("dto") SysMenuRecordDto sysMenuRecordDto);
+}

+ 60 - 0
src/main/java/com/ydtech/modules/admin/model/SysMenuRecord.java

@@ -0,0 +1,60 @@
+package com.ydtech.modules.admin.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * (SysMenuRecord)实体类
+ *
+ * @author makejava
+ * @since 2024-09-25 10:51:03
+ */
+@Data
+public class SysMenuRecord implements Serializable {
+    private static final long serialVersionUID = 910606808706008614L;
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Long id;
+    /**
+     * 用户id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 用户姓名
+     */
+    @ApiModelProperty(value = "用户姓名")
+    private String userName;
+    /**
+     * 客户端:1:APP;2:PC
+     */
+    @ApiModelProperty(value = "客户端:1:APP;2:PC")
+    private Integer type;
+    /**
+     * 机构来源(1-渠道、2-个代3:电销)
+     */
+    @ApiModelProperty(value = "机构来源(1-渠道、2-个代3:电销)")
+    private String source;
+    /**
+     * 菜单类型(1:车险录单;2:订单查询;3:钱包)
+     */
+    @ApiModelProperty(value = "菜单类型(1:车险录单;2:订单查询;3:钱包)")
+    private Integer menuType;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+}
+

+ 33 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysMenuRecordDto.java

@@ -0,0 +1,33 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+@Data
+public class SysMenuRecordDto {
+
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+
+    @ApiModelProperty(value = "每页条数")
+    private int pageSize;
+
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    /**
+     * 客户端:1:APP;2:PC
+     */
+    @ApiModelProperty(value = "客户端:1:APP;2:PC")
+    private Integer type;
+
+
+}

+ 61 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysMenuRecordVo.java

@@ -0,0 +1,61 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SysMenuRecordVo {
+
+    /**
+     * 用户id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 用户姓名
+     */
+    @ApiModelProperty(value = "用户姓名")
+    private String userName;
+
+    /**
+     * 点击车险录单数量
+     */
+    @ApiModelProperty(value = "车险录单数量")
+    private Long CarNumber;
+
+    /**
+     * 点击车险录单数量
+     */
+    @ApiModelProperty(value = "订单查询数量")
+    private Long OrderNumber;
+
+    /**
+     * 点击车险录单数量
+     */
+    @ApiModelProperty(value = "钱包数量")
+    private Long walletNumber;
+
+    /**
+     * 点击会员分享数量
+     */
+    @ApiModelProperty(value = "会员分享数量")
+    private Long memberNumber;
+
+    /**
+     * 点击会员管理数量
+     */
+    @ApiModelProperty(value = "会员管理数量")
+    private Long managementNumber;
+
+    /**
+     * 点击海报管理数量
+     */
+    @ApiModelProperty(value = "海报管理数量")
+    private Long posterNumber;
+
+
+}

+ 16 - 0
src/main/java/com/ydtech/modules/admin/service/SysMenuRecordService.java

@@ -0,0 +1,16 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysMenuRecord;
+import com.ydtech.modules.admin.model.dto.SysMenuRecordDto;
+import com.ydtech.modules.admin.model.vo.SysMenuRecordVo;
+import com.ydtech.modules.order.entity.BasePageResult;
+
+public interface SysMenuRecordService extends IService<SysMenuRecord> {
+
+    boolean insert(Integer type, Integer menuType);
+
+    BasePageResult<SysMenuRecord> queryByPage(SysMenuRecordDto sysMenuRecordDto);
+
+    SysMenuRecordVo getClickMenu(SysMenuRecordDto sysMenuRecordDto);
+}

+ 131 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysMenuRecordServiceImpl.java

@@ -0,0 +1,131 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysDeptMapper;
+import com.ydtech.modules.admin.dao.SysMenuRecordMapper;
+import com.ydtech.modules.admin.dao.SysUserMapper;
+import com.ydtech.modules.admin.model.SysDept;
+import com.ydtech.modules.admin.model.SysMenuRecord;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.SysMenuRecordDto;
+import com.ydtech.modules.admin.model.vo.SysMenuRecordVo;
+import com.ydtech.modules.admin.service.SysMenuRecordService;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.utils.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class SysMenuRecordServiceImpl  extends ServiceImpl<SysMenuRecordMapper, SysMenuRecord> implements SysMenuRecordService{
+
+
+    @Resource
+    private SysDeptMapper sysDeptMapper;
+
+    @Resource
+    private SysUserMapper sysUserMapper;
+
+    @Override
+    public boolean insert(Integer type, Integer menuType) {
+        SysMenuRecord sysMenuRecord = new SysMenuRecord();
+        SysUser sysUser = sysUserMapper.selectById(BaseController.getUserId());
+        sysMenuRecord.setUserId(sysUser.getId());
+        sysMenuRecord.setUserName(sysUser.getName());
+        sysMenuRecord.setType(type);
+        sysMenuRecord.setMenuType(menuType);
+        sysMenuRecord.setCreateTime(new Date());
+        SysDept sysDept = sysDeptMapper.selectById(sysUser.getDeptId());
+        sysMenuRecord.setSource(sysDept.getManagementSource());
+
+        return save(sysMenuRecord);
+    }
+
+    @Override
+    public BasePageResult<SysMenuRecord> queryByPage(SysMenuRecordDto sysMenuRecordDto) {
+        Page<SysMenuRecord> page = new Page<>(sysMenuRecordDto.getPageNum(), sysMenuRecordDto.getPageSize());
+
+        LambdaQueryWrapper<SysMenuRecord> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(!StringUtils.isNotEmpty(sysMenuRecordDto.getUserId()),SysMenuRecord::getUserId,sysMenuRecordDto.getUserId());
+        wrapper.eq(sysMenuRecordDto.getType() !=null,SysMenuRecord::getType,sysMenuRecordDto.getType());
+        wrapper.between(StringUtils.isNotEmpty(sysMenuRecordDto.getBeginTime()) && StringUtils.isNotEmpty(sysMenuRecordDto.getEndTime()),
+                SysMenuRecord::getCreateTime,sysMenuRecordDto.getBeginTime(),sysMenuRecordDto.getEndTime());
+        wrapper.orderByDesc(SysMenuRecord::getId);
+
+        Page<SysMenuRecord> insOrdersPage = page(page, wrapper);
+        return new BasePageResult<>(sysMenuRecordDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                insOrdersPage.getRecords());
+    }
+
+    @Override
+    public SysMenuRecordVo getClickMenu(SysMenuRecordDto sysMenuRecordDto) {
+        SysMenuRecordVo sysMenuRecordVo = new SysMenuRecordVo(null,null,0l,0l,0l,0l,0l,0l);
+        List<SysMenuRecord> sysMenuRecords = baseMapper.selectList(new LambdaQueryWrapper<SysMenuRecord>().eq(!StringUtils.isNotEmpty(sysMenuRecordDto.getUserId()), SysMenuRecord::getUserId, sysMenuRecordDto.getUserId())
+                .eq(sysMenuRecordDto.getType() != null, SysMenuRecord::getType, sysMenuRecordDto.getType())
+                .eq( SysMenuRecord::getUserId, sysMenuRecordDto.getUserId())
+                .between(StringUtils.isNotEmpty(sysMenuRecordDto.getBeginTime()) && StringUtils.isNotEmpty(sysMenuRecordDto.getEndTime()),
+                        SysMenuRecord::getCreateTime, sysMenuRecordDto.getBeginTime(), sysMenuRecordDto.getEndTime()));
+
+        SysUser sysUser = sysUserMapper.selectById(sysMenuRecordDto.getUserId());
+        sysMenuRecordVo.setUserId(sysUser.getId());
+        sysMenuRecordVo.setUserName(sysUser.getName());
+        if (sysMenuRecords.size()==0) return sysMenuRecordVo;
+        //客户端:1:APP;2:PC
+        if (sysMenuRecordDto.getType()==1) {
+            //'菜单类型(1:车险录单;2:订单查询;3:钱包, 4:会员分享 5:会员管理 6 海报管理)',
+            List<SysMenuRecord> collect = sysMenuRecords.stream()
+                    .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 3)
+                    .collect(Collectors.toList());
+            long sum = collect.stream().mapToInt(SysMenuRecord::getMenuType).count();
+            sysMenuRecordVo.setCarNumber(sum);
+            List<SysMenuRecord> collect4 = sysMenuRecords.stream()
+                    .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 4)
+                    .collect(Collectors.toList());
+            long sum4 = collect4.stream().mapToInt(SysMenuRecord::getMenuType).count();
+            sysMenuRecordVo.setMemberNumber(sum4);
+            List<SysMenuRecord> collect5 = sysMenuRecords.stream()
+                    .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 5)
+                    .collect(Collectors.toList());
+            long sum5 = collect5.stream().mapToInt(SysMenuRecord::getMenuType).count();
+            sysMenuRecordVo.setManagementNumber(sum5);
+            List<SysMenuRecord> collect6 = sysMenuRecords.stream()
+                    .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 6)
+                    .collect(Collectors.toList());
+            long sum6 = collect6.stream().mapToInt(SysMenuRecord::getMenuType).count();
+            sysMenuRecordVo.setPosterNumber(sum6);
+
+        }else {
+            //'菜单类型(1:车险录单;2:订单查询;3:钱包)',
+            List<SysMenuRecord> collect = sysMenuRecords.stream()
+                    .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 1)
+                    .collect(Collectors.toList());
+            long sum = collect.stream().mapToInt(SysMenuRecord::getMenuType).count();
+            sysMenuRecordVo.setCarNumber(sum);
+
+            List<SysMenuRecord> collect2 = sysMenuRecords.stream()
+                    .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 2)
+                    .collect(Collectors.toList());
+            long sum2 = collect2.stream().mapToInt(SysMenuRecord::getMenuType).count();
+            sysMenuRecordVo.setOrderNumber(sum2);
+
+            List<SysMenuRecord> collect3 = sysMenuRecords.stream()
+                    .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 3)
+                    .collect(Collectors.toList());
+            long sum3 = collect3.stream().mapToInt(SysMenuRecord::getMenuType).count();
+            sysMenuRecordVo.setWalletNumber(sum3);
+        }
+
+        return sysMenuRecordVo;
+    }
+
+
+}

+ 38 - 0
src/main/resources/mapper/modules/admin/SysMenuRecordMapper.xml

@@ -0,0 +1,38 @@
+<?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.ydtech.modules.admin.dao.SysMenuRecordMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysMenuRecord" id="SysMenuRecordMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="userName" column="user_name" jdbcType="VARCHAR"/>
+        <result property="type" column="type" jdbcType="INTEGER"/>
+        <result property="source" column="source" jdbcType="VARCHAR"/>
+        <result property="menuType" column="menu_type" jdbcType="INTEGER"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id, user_id, user_name, type, source, menu_type,create_time
+    </sql>
+
+    <select id="queryByPage" resultType="com.ydtech.modules.admin.model.vo.SysMenuRecordVo">
+        select
+            *
+        from sys_menu_record
+        <where>
+            <if test="dto.type != null and dto.type != ''">
+                and type = #{dto.type}
+            </if>
+            <if test="dto.userId != null and dto.userId != ''">
+                and user_id = #{dto.userId}
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and create_time between #{dto.beginTime} and #{dto.endTime}
+            </if>
+        </where>
+    </select>
+
+
+</mapper>
+