wwl 4 жил өмнө
parent
commit
9aea1b4071

+ 2 - 1
zzjs-admin/src/main/java/com/miaxis/app/controller/collection/AppletCollectionInfoController.java

@@ -2,6 +2,7 @@ package com.miaxis.app.controller.collection;
 
 import com.miaxis.collection.service.ICollectionInfoService;
 import com.miaxis.collection.vo.CollectionCustomerVo;
+import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.entity.UserInfo;
@@ -22,7 +23,7 @@ import java.util.List;
  */
 @RestController
 @RequiredArgsConstructor
-@RequestMapping("/applet/collection")
+@RequestMapping(Constants.STUDENT_PREFIX+"/applet/collection")
 @Api(tags = {"【小程序-收藏管理】"})
 public class AppletCollectionInfoController extends BaseController {
 

+ 81 - 0
zzjs-admin/src/main/java/com/miaxis/app/controller/record/AppletBrowseRecordInfoController.java

@@ -0,0 +1,81 @@
+package com.miaxis.app.controller.record;
+
+import com.miaxis.common.annotation.Log;
+import com.miaxis.common.constant.Constants;
+import com.miaxis.common.core.controller.BaseController;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.core.domain.entity.UserInfo;
+import com.miaxis.common.core.page.ResponsePageInfo;
+import com.miaxis.common.enums.BusinessTypeEnum;
+import com.miaxis.common.utils.SecurityUtils;
+import com.miaxis.customer.vo.BrowseRecordCustomerInfoVo;
+import com.miaxis.record.service.IBrowseRecordInfoService;
+import com.miaxis.record.vo.BrowseRecordCustomerVo;
+import io.swagger.annotations.*;
+import lombok.RequiredArgsConstructor;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 【浏览记录】Controller
+ *
+ * @author miaxis
+ * @date 2021-03-23
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping(Constants.STUDENT_PREFIX+"/applet/record/info")
+@Api(tags={"【小程序-浏览记录】"})
+public class AppletBrowseRecordInfoController extends BaseController{
+
+    private final IBrowseRecordInfoService browseRecordInfoService;
+
+    private final RedisTemplate redisTemplate;
+
+    /**
+     * 查询浏览记录列表
+     */
+    @GetMapping("/getBrowseRecordInfoList")
+    @ApiOperation("查询浏览记录列表")
+    public ResponsePageInfo<BrowseRecordCustomerInfoVo> getBrowseRecordInfoList(){
+        //当前用户
+        UserInfo userInfo = SecurityUtils.getLoginUser().getStudent();
+        List<BrowseRecordCustomerInfoVo> list = browseRecordInfoService.getBrowseRecordInfoList(userInfo);
+        return toResponsePageInfo(list);
+    }
+
+
+    /**
+     * 新增浏览记录
+     */
+    @PutMapping(value = "/insertBrowseRecord/{id}")
+    @ApiOperation("新增浏览记录")
+    public Response insertBrowseRecord(
+            @ApiParam(name = "id",value = "商家id",required = true)
+            @PathVariable("id") Long id
+    ){
+        //当前用户
+        UserInfo userInfo = SecurityUtils.getLoginUser().getStudent();
+        return browseRecordInfoService.insertBrowseRecord(userInfo,id);
+    }
+
+
+    /**
+     * 删除浏览记录
+     */
+    @Log(title = "浏览记录", businessType = BusinessTypeEnum.DELETE)
+	@DeleteMapping("/{ids}")
+    @ApiOperation("删除浏览记录")
+    public  Response remove(
+            @ApiParam(name = "ids", value = "商家ids参数", required = true)
+            @PathVariable Long[] ids
+    ){
+        //当前用户
+        UserInfo userInfo = SecurityUtils.getLoginUser().getStudent();
+        return browseRecordInfoService.removeBrowseRecord(userInfo,ids);
+    }
+
+}

+ 5 - 0
zzjs-common/src/main/java/com/miaxis/common/constant/Constants.java

@@ -132,6 +132,11 @@ public class Constants
      */
     public static final String SYS_DICT_KEY = "sys_dict:";
 
+    /**
+     * 浏览记录 cache key
+     */
+    public static final String BROWSE_RECORD_KEY = "browse_record:";
+
     /**
      * 资源映射路径 前缀
      */

+ 8 - 0
zzjs-service/src/main/java/com/miaxis/customer/mapper/CustomerInfoMapper.java

@@ -4,6 +4,7 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.miaxis.collection.vo.CollectionCustomerVo;
 import com.miaxis.customer.domain.CustomerInfo;
+import com.miaxis.customer.vo.BrowseRecordCustomerInfoVo;
 import com.miaxis.customer.vo.CustomerInfoVo;
 import com.miaxis.customer.vo.ExhibitionCustomerInfoVo;
 import org.apache.ibatis.annotations.Param;
@@ -50,4 +51,11 @@ public interface CustomerInfoMapper extends BaseMapper<CustomerInfo> {
      * @return
      */
     List<CollectionCustomerVo> getCollectionList(@Param("id")Long id);
+
+    /**
+     * 查询商家详情
+     * @param id 商家id
+     * @return
+     */
+    BrowseRecordCustomerInfoVo getCustomerDetailsById(@Param("id")Long id);
 }

+ 57 - 0
zzjs-service/src/main/java/com/miaxis/customer/vo/BrowseRecordCustomerInfoVo.java

@@ -0,0 +1,57 @@
+package com.miaxis.customer.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 浏览记录客户信息对象返回参
+ *
+ * @author miaxis
+ * @date 2021-03-15
+ */
+@Data
+@ApiModel(value = "BrowseRecordCustomerInfoVo", description = "浏览记录客户信息对象返回参")
+public class BrowseRecordCustomerInfoVo implements Serializable {
+
+    @TableId(value = "id")
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @TableField("corporate_name")
+    @ApiModelProperty(value = "公司名称")
+    private String corporateName;
+
+    @ApiModelProperty(value = "公司LOGO图片访问地址")
+    private String corporateLogoFileUrl;
+
+    @TableField("applet_address")
+    @ApiModelProperty(value = "小程序地址")
+    private String appletAddress;
+
+    @ApiModelProperty(value = "小程序图标访问地址")
+    private String appletLogoFileUrl;
+
+    @ApiModelProperty(value = "小程序二维码访问地址")
+    private String appletQrCodeFileUrl;
+
+    @TableField("applet_introduce")
+    @ApiModelProperty(value = "小程序介绍")
+    private String appletIntroduce;
+
+    @TableField("status")
+    @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
+    private Integer status;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" )
+    @ApiModelProperty(value = "浏览时间" ,hidden = true)
+    private Date browseTime;
+
+}

+ 41 - 0
zzjs-service/src/main/java/com/miaxis/record/domain/BrowseRecordInfo.java

@@ -0,0 +1,41 @@
+package com.miaxis.record.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.miaxis.common.annotation.Excel;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+/**
+ * 浏览记录对象 browse_record_info
+ *
+ * @author miaxis
+ * @date 2021-03-23
+ */
+@Data
+@TableName("browse_record_info")
+@ApiModel(value = "BrowseRecordInfo", description = "浏览记录对象 browse_record_info")
+public class BrowseRecordInfo extends BaseBusinessEntity{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    /** 用户id----(对应user_info表id) */
+    @Excel(name = "用户id----(对应user_info表id)")
+    @TableField("user_id")
+    @ApiModelProperty(value = "用户id----(对应user_info表id)")
+    private Long userId;
+
+    /** 商家id---(对应customer_info表id) */
+    @Excel(name = "商家id---(对应customer_info表id)", readConverterExp = "对=应customer_info表id")
+    @TableField("customer_id")
+    @ApiModelProperty(value = "商家id---(对应customer_info表id)")
+    private Long customerId;
+
+
+}

+ 23 - 0
zzjs-service/src/main/java/com/miaxis/record/mapper/BrowseRecordInfoMapper.java

@@ -0,0 +1,23 @@
+package com.miaxis.record.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.common.core.domain.entity.UserInfo;
+import com.miaxis.record.domain.BrowseRecordInfo;
+import com.miaxis.record.vo.BrowseRecordCustomerVo;
+
+/**
+ * 浏览记录Mapper接口
+ *
+ * @author miaxis
+ * @date 2021-03-23
+ */
+public interface BrowseRecordInfoMapper extends BaseMapper<BrowseRecordInfo> {
+
+    /**
+     * 查询浏览记录列表
+     * @param userInfo
+     * @return
+     */
+    List<BrowseRecordCustomerVo> getBrowseRecordInfoList(UserInfo userInfo);
+}

+ 44 - 0
zzjs-service/src/main/java/com/miaxis/record/service/IBrowseRecordInfoService.java

@@ -0,0 +1,44 @@
+package com.miaxis.record.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.core.domain.entity.UserInfo;
+import com.miaxis.customer.vo.BrowseRecordCustomerInfoVo;
+import com.miaxis.record.domain.BrowseRecordInfo;
+import com.miaxis.record.vo.BrowseRecordCustomerVo;
+
+import java.util.List;
+
+/**
+ * 浏览记录Service接口
+ *
+ * @author miaxis
+ * @date 2021-03-23
+ */
+public interface IBrowseRecordInfoService extends IService<BrowseRecordInfo>{
+
+    /**
+     * 查询浏览记录列表
+     * @param userInfo
+     * @return
+     */
+    List<BrowseRecordCustomerInfoVo> getBrowseRecordInfoList(UserInfo userInfo);
+
+    /**
+     * 新增浏览记录
+     * @param userInfo 当前用户
+     * @param id 商家id
+     * @return
+     */
+    Response insertBrowseRecord(UserInfo userInfo, Long id);
+
+
+    /**
+     * 删除浏览记录
+     * @param userInfo 当前用户
+     * @param ids 商家id
+     * @return
+     */
+    Response removeBrowseRecord(UserInfo userInfo, Long[] ids);
+
+}

+ 106 - 0
zzjs-service/src/main/java/com/miaxis/record/service/impl/BrowseRecordInfoServiceImpl.java

@@ -0,0 +1,106 @@
+package com.miaxis.record.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.common.constant.Constants;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.core.domain.entity.UserInfo;
+import com.miaxis.common.core.redis.RedisCache;
+import com.miaxis.common.exception.CustomException;
+import com.miaxis.customer.mapper.CustomerInfoMapper;
+import com.miaxis.customer.vo.BrowseRecordCustomerInfoVo;
+import com.miaxis.record.domain.BrowseRecordInfo;
+import com.miaxis.record.mapper.BrowseRecordInfoMapper;
+import com.miaxis.record.service.IBrowseRecordInfoService;
+import com.miaxis.record.vo.BrowseRecordCustomerVo;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 浏览记录Service业务层处理
+ *
+ * @author miaxis
+ * @date 2021-03-23
+ */
+@Service
+@RequiredArgsConstructor
+public class BrowseRecordInfoServiceImpl extends ServiceImpl<BrowseRecordInfoMapper, BrowseRecordInfo> implements IBrowseRecordInfoService {
+
+    private final BrowseRecordInfoMapper browseRecordInfoMapper;
+
+    private final CustomerInfoMapper customerInfoMapper;
+
+    private final RedisTemplate redisTemplate;
+
+
+
+    /**
+     * 查询浏览记录列表
+     * @param userInfo
+     * @return
+     */
+    @Override
+    public List<BrowseRecordCustomerInfoVo> getBrowseRecordInfoList(UserInfo userInfo) {
+        //从缓存获取
+        List<String> values = redisTemplate.opsForHash().values(Constants.BROWSE_RECORD_KEY + userInfo.getId());
+        ArrayList<BrowseRecordCustomerInfoVo> infoVos = new ArrayList<>();
+        for (String value : values) {
+            BrowseRecordCustomerInfoVo customerInfoVo = JSONObject.parseObject(value).toJavaObject(BrowseRecordCustomerInfoVo.class);
+            infoVos.add(customerInfoVo);
+        }
+        return infoVos;
+    }
+
+    /**
+     * 新增浏览记录
+     * @param userInfo 当前用户
+     * @param id 商家id
+     * @return
+     */
+    @Override
+    @SneakyThrows
+    public Response insertBrowseRecord(UserInfo userInfo, Long id) {
+
+        //判断用户是否有浏览此商家记录
+        if (redisTemplate.opsForHash().hasKey(Constants.BROWSE_RECORD_KEY +userInfo.getId(),id)){
+            String jsonStr = (String) redisTemplate.opsForHash().get(Constants.BROWSE_RECORD_KEY + userInfo.getId(), id);
+            JSONObject jsonObject = JSONObject.parseObject(jsonStr);
+            BrowseRecordCustomerInfoVo customerInfoVo = jsonObject.toJavaObject(BrowseRecordCustomerInfoVo.class);
+            customerInfoVo.setBrowseTime(new Date());
+            redisTemplate.opsForHash().put(Constants.BROWSE_RECORD_KEY+userInfo.getId(),id,JSON.toJSONString(customerInfoVo));
+        }else {
+            //商家详情
+            BrowseRecordCustomerInfoVo customerDetail = customerInfoMapper.getCustomerDetailsById(id);
+            customerDetail.setBrowseTime(new Date());
+            //添加缓存
+            redisTemplate.opsForHash().put(Constants.BROWSE_RECORD_KEY+userInfo.getId(),id,JSON.toJSONString(customerDetail));
+        }
+        return Response.success();
+    }
+
+    /**
+     * 删除浏览记录
+     * @param userInfo 当前用户
+     * @param ids 商家id
+     * @return
+     */
+    @Override
+    public Response removeBrowseRecord(UserInfo userInfo, Long[] ids) {
+        try {
+            //删除浏览记录缓存
+            redisTemplate.opsForHash().delete(Constants.BROWSE_RECORD_KEY + userInfo.getId(), ids);
+            return Response.success();
+        }catch (Exception e){
+            throw new CustomException("系统异常");
+        }
+    }
+
+
+}

+ 58 - 0
zzjs-service/src/main/java/com/miaxis/record/vo/BrowseRecordCustomerVo.java

@@ -0,0 +1,58 @@
+package com.miaxis.record.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 浏览记录对象返回参
+ *
+ * @author miaxis
+ * @date 2021-03-15
+ */
+@Data
+@ApiModel(value = "BrowseRecordCustomerVo", description = "浏览记录对象返回参")
+public class BrowseRecordCustomerVo {
+
+    @TableId(value = "id")
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "商家id")
+    private Long customerId;
+
+    @TableField("corporate_name")
+    @ApiModelProperty(value = "公司名称")
+    private String corporateName;
+
+    @ApiModelProperty(value = "公司LOGO图片访问地址")
+    private String corporateLogoFileUrl;
+
+    @TableField("applet_address")
+    @ApiModelProperty(value = "小程序地址")
+    private String appletAddress;
+
+    @ApiModelProperty(value = "小程序图标访问地址")
+    private String appletLogoFileUrl;
+
+    @ApiModelProperty(value = "小程序二维码访问地址")
+    private String appletQrCodeFileUrl;
+
+    @TableField("applet_introduce")
+    @ApiModelProperty(value = "小程序介绍")
+    private String appletIntroduce;
+
+    @TableField("status")
+    @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
+    private Integer status;
+
+    @ApiModelProperty(value = "浏览时间"  ,hidden = true)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+}

+ 19 - 0
zzjs-service/src/main/resources/mapper/customer/CustomerInfoMapper.xml

@@ -168,4 +168,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
 
+    <!--getCustomerDetailsById-->
+    <select id="getCustomerDetailsById" resultType="com.miaxis.customer.vo.BrowseRecordCustomerInfoVo">
+        SELECT
+        ci.id,
+        ci.corporate_name,
+        ci.applet_address,
+        f1.file_url as corporateLogoFileUrl,
+        f2.file_url as appletLogoFileUrl,
+        f3.file_url as appletQrCodeFileUrl,
+        ci.applet_introduce,
+        ci.status
+        FROM `customer_info` ci
+        LEFT JOIN file_info f1 on f1.file_id = ci.corporate_logo
+        LEFT JOIN file_info f2 on f2.file_id = ci.applet_logo
+        LEFT JOIN file_info f3 on f3.file_id = ci.applet_qr_code
+        WHERE ci.id = #{id}
+
+    </select>
+
 </mapper>

+ 41 - 0
zzjs-service/src/main/resources/mapper/record/BrowseRecordInfoMapper.xml

@@ -0,0 +1,41 @@
+<?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.miaxis.record.mapper.BrowseRecordInfoMapper">
+
+    <resultMap type="BrowseRecordInfo" id="BrowseRecordInfoResult">
+        <result property="id"    column="id"    />
+        <result property="userId"    column="user_id"    />
+        <result property="customerId"    column="customer_id"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectBrowseRecordInfoVo">
+        select * from browse_record_info
+    </sql>
+
+
+    <select id="getBrowseRecordInfoList" resultType="com.miaxis.record.vo.BrowseRecordCustomerVo">
+        SELECT
+        bri.id,
+        ci.id as customerId,
+        ci.corporate_name,
+        ci.applet_address,
+        f1.file_url as corporateLogoFileUrl,
+        f2.file_url as appletLogoFileUrl,
+        f3.file_url as appletQrCodeFileUrl,
+        ci.applet_introduce,
+        bri.update_time,
+        ci.status
+        FROM `customer_info` ci
+        LEFT JOIN file_info f1 on f1.file_id = ci.corporate_logo
+        LEFT JOIN file_info f2 on f2.file_id = ci.applet_logo
+        LEFT JOIN file_info f3 on f3.file_id = ci.applet_qr_code
+        LEFT JOIN browse_record_info bri ON bri.customer_id = ci.id
+        WHERE ci.id IN ( select bri.customer_id from browse_record_info bri where bri.user_id = #{id})
+
+    </select>
+
+</mapper>